mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-06-05 05:38:13 +02:00
1039 lines
34 KiB
ObjectPascal
1039 lines
34 KiB
ObjectPascal
program tgeneric_nested;
|
|
|
|
{$mode objfpc}{$H+}{$notes off}
|
|
|
|
uses
|
|
Classes;
|
|
|
|
type
|
|
|
|
TRec0 = record r0a: integer; r0glob: integer; end;
|
|
TRec1 = record r1a: integer; r1glob: integer; end;
|
|
TRec2 = record r2a: integer; r2glob: integer; end;
|
|
|
|
{ TClass1 }
|
|
|
|
TClass1 = class
|
|
public type
|
|
TRec2 = record r2a: integer; r2c1: integer; end;
|
|
TRec3 = record r3a: integer; r3c1: integer; end; // Only in TBase
|
|
end;
|
|
|
|
{ TClass2 }
|
|
|
|
TClass2 = class(TClass1)
|
|
public type
|
|
TRec1 = record r1a: integer; r1c2: integer; end;
|
|
end;
|
|
|
|
{ GEN_Field }
|
|
|
|
generic GEN_Field<_F1> = class
|
|
public type
|
|
T_F1 = _F1;
|
|
public
|
|
FField1: _F1;
|
|
end;
|
|
|
|
(* Generics *)
|
|
|
|
{ GEN_1 }
|
|
|
|
generic GEN_1<_REC> = class
|
|
public type
|
|
TFld0 = class(specialize GEN_Field<_REC>)
|
|
fx: _REC {declaration:GEN_1._REC};
|
|
fy: T_F1 {declaration:GEN_Field.T_F1};
|
|
procedure Foo;
|
|
end;
|
|
TFld1 = class(specialize GEN_Field<TRec1>)
|
|
fx: _REC {declaration:GEN_1._REC};
|
|
fy: T_F1 {declaration:GEN_Field.T_F1};
|
|
procedure Foo;
|
|
end;
|
|
TFld2 = class(specialize GEN_Field<TRec2>) // Global TRec2
|
|
fx: _REC {declaration:GEN_1._REC};
|
|
fy: T_F1 {declaration:GEN_Field.T_F1};
|
|
procedure Foo;
|
|
end;
|
|
public class var
|
|
fv: _REC {declaration:GEN_1._REC};
|
|
public
|
|
fx: _REC {declaration:GEN_1._REC};
|
|
procedure Bar;
|
|
end;
|
|
|
|
(* Generics with Base *)
|
|
|
|
{ GENB_1 }
|
|
|
|
generic GENB_1<_B1: TObject; _REC> = class(_B1)
|
|
public type
|
|
TFldB0 = class(specialize GEN_Field<_REC>)
|
|
fx: _REC {declaration:GENB_1._REC};
|
|
fy: T_F1 {declaration:GEN_Field.T_F1};
|
|
procedure Foo;
|
|
end;
|
|
TFldB1 = class(specialize GEN_Field<TRec1>) // Global (can be specialized to TClass2.TRec1)
|
|
fx: _REC {declaration:GENB_1._REC};
|
|
fy: T_F1 {declaration:GEN_Field.T_F1};
|
|
procedure Foo;
|
|
end;
|
|
TFldB2 = class(specialize GEN_Field<TRec2>) // Global TRec2 (can be specialized to TClass1.TRec2)
|
|
fx: _REC {declaration:GENB_1._REC};
|
|
fy: T_F1 {declaration:GEN_Field.T_F1};
|
|
procedure Foo;
|
|
end;
|
|
//TFldB3 = class(specialize GEN_Field<TRec3>) // not yet known
|
|
// procedure Foo;
|
|
//end;
|
|
public class var
|
|
fv: _REC {declaration:GENB_1._REC};
|
|
public
|
|
fx: _REC {declaration:GENB_1._REC};
|
|
procedure Bar;
|
|
end;
|
|
|
|
{ GENB_2 }
|
|
|
|
generic GENB_2<_B2: TClass1; _REC> = class(_B2)
|
|
public type
|
|
TFldB0 = class(specialize GEN_Field<_REC>)
|
|
fx: _REC {declaration:GENB_2._REC};
|
|
fy: T_F1 {declaration:GEN_Field.T_F1};
|
|
procedure Foo;
|
|
end;
|
|
TFldB1 = class(specialize GEN_Field<TRec1>) // Global (can be specialized to TClass2.TRec1)
|
|
fx: _REC {declaration:GENB_2._REC};
|
|
fy: T_F1 {declaration:GEN_Field.T_F1};
|
|
procedure Foo;
|
|
end;
|
|
TFldB2 = class(specialize GEN_Field<TRec2>) // TClass1.TRec2
|
|
fx: _REC {declaration:GENB_2._REC};
|
|
fy: T_F1 {declaration:GEN_Field.T_F1};
|
|
procedure Foo;
|
|
end;
|
|
TFldB3 = class(specialize GEN_Field<TRec3>) // TClass1.TRec3
|
|
fx: _REC {declaration:GENB_2._REC};
|
|
fy: T_F1 {declaration:GEN_Field.T_F1};
|
|
procedure Foo;
|
|
end;
|
|
public class var
|
|
fv: _REC {declaration:GENB_2._REC};
|
|
public
|
|
fx: _REC {declaration:GENB_2._REC};
|
|
procedure Bar;
|
|
end;
|
|
|
|
(* Inherhited Generics *)
|
|
|
|
{ GENI_1 }
|
|
|
|
generic GENI_1<_IB1: TObject; _REC> = class(specialize GENB_1<_IB1, _REC>)
|
|
public type
|
|
TFldI0 = class(specialize GEN_Field<_REC>)
|
|
fx: _REC {declaration:GENI_1._REC};
|
|
fy: T_F1 {declaration:GEN_Field.T_F1};
|
|
procedure Foo;
|
|
end;
|
|
TFldI1 = class(specialize GEN_Field<TRec1>) // Global (can be specialized to TClass2.TRec1)
|
|
fx: _REC {declaration:GENI_1._REC};
|
|
fy: T_F1 {declaration:GEN_Field.T_F1};
|
|
procedure Foo;
|
|
end;
|
|
TFldI2 = class(specialize GEN_Field<TRec2>) // Global TRec2
|
|
fx: _REC {declaration:GENI_1._REC};
|
|
fy: T_F1 {declaration:GEN_Field.T_F1};
|
|
procedure Foo;
|
|
end;
|
|
//TFldX3 = class(specialize GEN_Field<TRec3>) // not yet known
|
|
// procedure Foo;
|
|
//end;
|
|
public class var
|
|
fIv: _REC {declaration:GENI_1._REC};
|
|
public
|
|
fIx: _REC {declaration:GENI_1._REC};
|
|
procedure Bar;
|
|
end;
|
|
|
|
{ GENI_2B1 }
|
|
|
|
generic GENI_2B1<_IB2: TClass1; _REC> = class(specialize GENB_1<_IB2, _REC>)
|
|
public type
|
|
TFldI0 = class(specialize GEN_Field<_REC>)
|
|
fx: _REC {declaration:GENI_2B1._REC};
|
|
fy: T_F1 {declaration:GEN_Field.T_F1};
|
|
procedure Foo;
|
|
end;
|
|
TFldI1 = class(specialize GEN_Field<TRec1>) // Global (can be specialized to TClass2.TRec1)
|
|
fx: _REC {declaration:GENI_2B1._REC};
|
|
fy: T_F1 {declaration:GEN_Field.T_F1};
|
|
procedure Foo;
|
|
end;
|
|
TFldI2 = class(specialize GEN_Field<TRec2>) // TClass1.TRec2
|
|
fx: _REC {declaration:GENI_2B1._REC};
|
|
fy: T_F1 {declaration:GEN_Field.T_F1};
|
|
procedure Foo;
|
|
end;
|
|
TFldI3 = class(specialize GEN_Field<TRec3>) // TClass1.TRec3
|
|
fx: _REC {declaration:GENI_2B1._REC};
|
|
fy: T_F1 {declaration:GEN_Field.T_F1};
|
|
procedure Foo;
|
|
end;
|
|
public class var
|
|
fIv: _REC {declaration:GENI_2B1._REC};
|
|
public
|
|
fIx: _REC {declaration:GENI_2B1._REC};
|
|
procedure Bar;
|
|
end;
|
|
|
|
{ GENI_2 }
|
|
|
|
generic GENI_2<_IB2: TClass1; _REC> = class(specialize GENB_2<_IB2, _REC>)
|
|
public type
|
|
TFldI0 = class(specialize GEN_Field<_REC>)
|
|
fx: _REC {declaration:GENI_2._REC};
|
|
fy: T_F1 {declaration:GEN_Field.T_F1};
|
|
procedure Foo;
|
|
end;
|
|
TFldI1 = class(specialize GEN_Field<TRec1>) // Global (can be specialized to TClass2.TRec1)
|
|
fx: _REC {declaration:GENI_2._REC};
|
|
fy: T_F1 {declaration:GEN_Field.T_F1};
|
|
procedure Foo;
|
|
end;
|
|
TFldI2 = class(specialize GEN_Field<TRec2>) // TClass1.TRec2
|
|
fx: _REC {declaration:GENI_2._REC};
|
|
fy: T_F1 {declaration:GEN_Field.T_F1};
|
|
procedure Foo;
|
|
end;
|
|
TFldI3 = class(specialize GEN_Field<TRec3>) // TClass1.TRec3
|
|
fx: _REC {declaration:GENI_2._REC};
|
|
fy: T_F1 {declaration:GEN_Field.T_F1};
|
|
procedure Foo;
|
|
end;
|
|
public class var
|
|
fIv: _REC {declaration:GENI_2._REC};
|
|
public
|
|
fIx: _REC {declaration:GENI_2._REC};
|
|
procedure Bar;
|
|
end;
|
|
|
|
(* specialized classes *)
|
|
|
|
(* Gen_1 *)
|
|
|
|
TClassG1R0 = class(specialize Gen_1<TRec0>)
|
|
procedure Abc;
|
|
end;
|
|
|
|
TClassG1R1 = class(specialize Gen_1<TRec1>)
|
|
procedure Abc;
|
|
end;
|
|
|
|
TClassG1Rb1 = class(specialize Gen_1<TClass2.TRec1>)
|
|
procedure Abc;
|
|
end;
|
|
|
|
(* GenB_1 *)
|
|
|
|
TClassB1 = class(specialize GenB_1<TObject, TRec0>)
|
|
procedure Abc;
|
|
end;
|
|
|
|
TClassB1C1 = class(specialize GenB_1<TClass1, TRec0>)
|
|
procedure Abc;
|
|
end;
|
|
|
|
TClassB1C2 = class(specialize GenB_1<TClass2, TRec0>)
|
|
procedure Abc;
|
|
end;
|
|
|
|
(* GenB_2 *)
|
|
|
|
TClassB2C1 = class(specialize GenB_2<TClass1, TRec0>)
|
|
procedure Abc;
|
|
end;
|
|
|
|
TClassB2C2 = class(specialize GenB_2<TClass2, TRec0>)
|
|
procedure Abc;
|
|
end;
|
|
|
|
(* GenI_1 *)
|
|
|
|
TClassI1 = class(specialize GenI_1<TObject, TRec0>)
|
|
procedure Abc;
|
|
end;
|
|
|
|
TClassI1C1 = class(specialize GenI_1<TClass1, TRec0>)
|
|
procedure Abc;
|
|
end;
|
|
|
|
TClassI1C2 = class(specialize GenI_1<TClass2, TRec0>)
|
|
procedure Abc;
|
|
end;
|
|
|
|
(* GenI_2B1 *)
|
|
|
|
TClassI2bC1 = class(specialize GenI_2B1<TClass1, TRec0>)
|
|
procedure Abc;
|
|
end;
|
|
|
|
TClassI2bC2 = class(specialize GenI_2B1<TClass2, TRec0>)
|
|
procedure Abc;
|
|
end;
|
|
|
|
(* GenI_2 *)
|
|
|
|
TClassI2C1 = class(specialize GenI_2<TClass1, TRec0>)
|
|
procedure Abc;
|
|
end;
|
|
|
|
TClassI2C2 = class(specialize GenI_2<TClass2, TRec0>)
|
|
procedure Abc;
|
|
end;
|
|
|
|
(* directly specialized classes *)
|
|
|
|
(* Gen_1 *)
|
|
TXClassG1R0 = specialize Gen_1<TRec0>;
|
|
TXClassG1R1 = specialize Gen_1<TRec1>;
|
|
TXClassG1Rb1 = specialize Gen_1<TClass2.TRec1>;
|
|
|
|
(* GenB_1 *)
|
|
TXClassB1 = specialize GenB_1<TObject, TRec0>;
|
|
TXClassB1C1 = specialize GenB_1<TClass1, TRec0>;
|
|
TXClassB1C2 = specialize GenB_1<TClass2, TRec0>;
|
|
|
|
(* GenB_2 *)
|
|
TXClassB2C1 = specialize GenB_2<TClass1, TRec0>;
|
|
TXClassB2C2 = specialize GenB_2<TClass2, TRec0>;
|
|
|
|
(* GenI_1 *)
|
|
TXClassI1 = specialize GenI_1<TObject, TRec0>;
|
|
TXClassI1C1 = specialize GenI_1<TClass1, TRec0>;
|
|
TXClassI1C2 = specialize GenI_1<TClass2, TRec0>;
|
|
|
|
(* GenI_2B1 *)
|
|
TXClassI2bC1 = specialize GenI_2B1<TClass1, TRec0>;
|
|
TXClassI2bC2 = specialize GenI_2B1<TClass2, TRec0>;
|
|
|
|
(* GenI_2 *)
|
|
TXClassI2C1 = specialize GenI_2<TClass1, TRec0>;
|
|
TXClassI2C2 = specialize GenI_2<TClass2, TRec0>;
|
|
|
|
|
|
////////////////////////////////////////////////////////////////
|
|
////////////////////////////////////////////////////////////////
|
|
////////////////////////////////////////////////////////////////
|
|
|
|
{ GEN_1.TFld0 }
|
|
|
|
procedure GEN_1.TFld0.Foo;
|
|
var
|
|
a: _REC {declaration:GEN_1._REC};
|
|
a0: TFld0 {declaration:GEN_1.TFld0};
|
|
a1: TFld1 {declaration:GEN_1.TFld1};
|
|
a2: TFld2 {declaration:GEN_1.TFld2};
|
|
begin
|
|
fv{declaration:GEN_1.fv} := default(_REC {declaration:GEN_1._REC} );
|
|
|
|
fy{declaration:GEN_1.TFld0.fy} := default(_REC {declaration:GEN_1._REC} );
|
|
FField1{declaration:GEN_Field.FField1} := default(_REC {declaration:GEN_1._REC} );
|
|
|
|
a0.FField1{declaration:GEN_Field.FField1} := default(_REC {declaration:GEN_1._REC} );
|
|
a1.FField1{declaration:GEN_Field.FField1} := default(TRec1 {declaration:TRec1} );
|
|
a1.FField1{declaration:GEN_Field.FField1}.r1a{declaration:TRec1.r1a} := 1;
|
|
a2.FField1{declaration:GEN_Field.FField1}.r2a{declaration:TRec2.r2a} := 1;
|
|
end;
|
|
|
|
{ GEN_1.TFld1 }
|
|
|
|
procedure GEN_1.TFld1.Foo;
|
|
var
|
|
a: _REC {declaration:GEN_1._REC}; //the test finds it and yet we can not jump there
|
|
a0: TFld0 {declaration:GEN_1.TFld0};
|
|
a1: TFld1 {declaration:GEN_1.TFld1};
|
|
a2: TFld2 {declaration:GEN_1.TFld2};
|
|
begin
|
|
fv{declaration:GEN_1.fv} := default(_REC {declaration:GEN_1._REC} );
|
|
|
|
fy{declaration:GEN_1.TFld1.fy}.r1a{ TODO: declaration:TRec1.r1a} := 1;
|
|
FField1{declaration:GEN_Field.FField1}.r1a{declaration:TRec1.r1a} := 1;
|
|
|
|
a0.FField1{declaration:GEN_Field.FField1} := default(_REC {declaration:GEN_1._REC} );
|
|
a1.FField1{declaration:GEN_Field.FField1}.r1a{declaration:TRec1.r1a} := 1;
|
|
a2.FField1{declaration:GEN_Field.FField1}.r2a{declaration:TRec2.r2a} := 1;
|
|
end;
|
|
|
|
{ GEN_1.TFld2 }
|
|
|
|
procedure GEN_1.TFld2.Foo;
|
|
var
|
|
a: _REC {declaration:GEN_1._REC};
|
|
a0: TFld0 {declaration:GEN_1.TFld0};
|
|
a1: TFld1 {declaration:GEN_1.TFld1};
|
|
a2: TFld2 {declaration:GEN_1.TFld2};
|
|
begin
|
|
fv{declaration:GEN_1.fv} := default(_REC {declaration:GEN_1._REC} );
|
|
|
|
fy{declaration:GEN_1.TFld2.fy}.r2a{ TODO: declaration:TRec2.r2a} := 1;
|
|
FField1{declaration:GEN_Field.FField1}.r2a{declaration:TRec2.r2a} := 1;
|
|
|
|
a0.FField1{declaration:GEN_Field.FField1} := default(_REC {declaration:GEN_1._REC} );
|
|
a1.FField1{declaration:GEN_Field.FField1}.r1a{declaration:TRec1.r1a} := 1;
|
|
a2.FField1{declaration:GEN_Field.FField1}.r2a{declaration:TRec2.r2a} := 1;
|
|
end;
|
|
|
|
{ GEN_1 }
|
|
|
|
procedure GEN_1.Bar;
|
|
var
|
|
a: _REC {declaration:GEN_1._REC};
|
|
a0: TFld0 {declaration:GEN_1.TFld0};
|
|
a1: TFld1 {declaration:GEN_1.TFld1};
|
|
a2: TFld2 {declaration:GEN_1.TFld2};
|
|
begin
|
|
fv{declaration:GEN_1.fv} := default(_REC {declaration:GEN_1._REC} );
|
|
fx{declaration:GEN_1.fx} := default(_REC {declaration:GEN_1._REC} );
|
|
|
|
a0.FField1{declaration:GEN_Field.FField1} := default(_REC {declaration:GEN_1._REC} );
|
|
a1.FField1{declaration:GEN_Field.FField1}.r1a{declaration:TRec1.r1a} := 1;
|
|
a2.FField1{declaration:GEN_Field.FField1}.r2a{declaration:TRec2.r2a} := 1;
|
|
end;
|
|
|
|
{ GENB_1.TFldB0 }
|
|
|
|
procedure GENB_1.TFldB0.Foo;
|
|
var
|
|
a: _REC {declaration:GENB_1._REC};
|
|
a0: TFldB0 {declaration:GENB_1.TFldB0};
|
|
a1: TFldB1 {declaration:GENB_1.TFldB1};
|
|
a2: TFldB2 {declaration:GENB_1.TFldB2};
|
|
begin
|
|
fv{declaration:GENB_1.fv} := default(_REC {declaration:GENB_1._REC} );
|
|
|
|
fy{declaration:GENB_1.TFldB0.fy} := default(_REC {declaration:GENB_1._REC} );
|
|
FField1{declaration:GEN_Field.FField1} := default(_REC {declaration:GENB_1._REC} );
|
|
|
|
a0.FField1{declaration:GEN_Field.FField1} := default(_REC {declaration:GENB_1._REC} );
|
|
a1.FField1{declaration:GEN_Field.FField1}.r1a{declaration:TRec1.r1a} := 1;
|
|
a2.FField1{declaration:GEN_Field.FField1}.r2a{declaration:TRec2.r2a} := 1;
|
|
end;
|
|
|
|
{ GENB_1.TFldB1 }
|
|
|
|
procedure GENB_1.TFldB1.Foo;
|
|
var
|
|
a: _REC {declaration:GENB_1._REC};
|
|
a0: TFldB0 {declaration:GENB_1.TFldB0};
|
|
a1: TFldB1 {declaration:GENB_1.TFldB1};
|
|
a2: TFldB2 {declaration:GENB_1.TFldB2};
|
|
begin
|
|
fv{declaration:GENB_1.fv} := default(_REC {declaration:GENB_1._REC} );
|
|
|
|
fy{declaration:GENB_1.TFldB1.fy}.r1a{ TODO: declaration:TRec1.r1a} := 1;
|
|
FField1{declaration:GEN_Field.FField1}.r1a{declaration:TRec1.r1a} := 1;
|
|
|
|
a0.FField1{declaration:GEN_Field.FField1} := default(_REC {declaration:GENB_1._REC} );
|
|
a1.FField1{declaration:GEN_Field.FField1}.r1a{declaration:TRec1.r1a} := 1;
|
|
a2.FField1{declaration:GEN_Field.FField1}.r2a{declaration:TRec2.r2a} := 1;
|
|
end;
|
|
|
|
{ GENB_1.TFldB2 }
|
|
|
|
procedure GENB_1.TFldB2.Foo;
|
|
var
|
|
a: _REC {declaration:GENB_1._REC};
|
|
a0: TFldB0 {declaration:GENB_1.TFldB0};
|
|
a1: TFldB1 {declaration:GENB_1.TFldB1};
|
|
a2: TFldB2 {declaration:GENB_1.TFldB2};
|
|
begin
|
|
fv{declaration:GENB_1.fv} := default(_REC {declaration:GENB_1._REC} );
|
|
|
|
fy{declaration:GENB_1.TFldB2.fy}.r2a{ TODO: declaration:TRec2.r2a} := 1;
|
|
FField1{declaration:GEN_Field.FField1}.r2a{declaration:TRec2.r2a} := 1;
|
|
|
|
a0.FField1{declaration:GEN_Field.FField1} := default(_REC {declaration:GENB_1._REC} );
|
|
a1.FField1{declaration:GEN_Field.FField1}.r1a{declaration:TRec1.r1a} := 1;
|
|
a2.FField1{declaration:GEN_Field.FField1}.r2a{declaration:TRec2.r2a} := 1;
|
|
end;
|
|
|
|
{ GENB_1 }
|
|
|
|
procedure GENB_1.Bar;
|
|
var
|
|
a: _REC {declaration:GENB_1._REC};
|
|
a0: TFldB0 {declaration:GENB_1.TFldB0};
|
|
a1: TFldB1 {declaration:GENB_1.TFldB1};
|
|
a2: TFldB2 {declaration:GENB_1.TFldB2};
|
|
begin
|
|
fv{declaration:GENB_1.fv} := default(_REC {declaration:GENB_1._REC} );
|
|
fx{declaration:GENB_1.fx} := default(_REC {declaration:GENB_1._REC} );
|
|
|
|
a0.FField1{declaration:GEN_Field.FField1} := default(_REC {declaration:GENB_1._REC} );
|
|
a1.FField1{declaration:GEN_Field.FField1}.r1a{declaration:TRec1.r1a} := 1;
|
|
a2.FField1{declaration:GEN_Field.FField1}.r2a{declaration:TRec2.r2a} := 1;
|
|
end;
|
|
|
|
{ GENB_2.TFldB0 }
|
|
|
|
procedure GENB_2.TFldB0.Foo;
|
|
var
|
|
a: _REC {declaration:GENB_2._REC};
|
|
a0: TFldB0 {declaration:GENB_2.TFldB0};
|
|
a1: TFldB1 {declaration:GENB_2.TFldB1};
|
|
a2: TFldB2 {declaration:GENB_2.TFldB2};
|
|
begin
|
|
fv{declaration:GENB_2.fv} := default(_REC {declaration:GENB_2._REC} );
|
|
|
|
fy{declaration:GENB_2.TFldB0.fy} := default(_REC {declaration:GENB_2._REC} );
|
|
FField1{declaration:GEN_Field.FField1} := default(_REC {declaration:GENB_2._REC} );
|
|
|
|
a0.FField1{declaration:GEN_Field.FField1} := default(_REC {declaration:GENB_2._REC} );
|
|
a1.FField1{declaration:GEN_Field.FField1}.r1a{declaration:TRec1.r1a} := 1;
|
|
a2.FField1{declaration:GEN_Field.FField1}.r2a{declaration:TClass1.TRec2.r2a} := 1;
|
|
end;
|
|
|
|
{ GENB_2.TFldB1 }
|
|
|
|
procedure GENB_2.TFldB1.Foo;
|
|
var
|
|
a: _REC {declaration:GENB_2._REC};
|
|
a0: TFldB0 {declaration:GENB_2.TFldB0};
|
|
a1: TFldB1 {declaration:GENB_2.TFldB1};
|
|
a2: TFldB2 {declaration:GENB_2.TFldB2};
|
|
begin
|
|
fv{declaration:GENB_2.fv} := default(_REC {declaration:GENB_2._REC} );
|
|
|
|
fy{declaration:GENB_2.TFldB1.fy}.r1a{ TODO: declaration:TRec1.r1a} := 1;
|
|
FField1{declaration:GEN_Field.FField1}.r1a{declaration:TRec1.r1a} := 1;
|
|
|
|
a0.FField1{declaration:GEN_Field.FField1} := default(_REC {declaration:GENB_2._REC} );
|
|
a1.FField1{declaration:GEN_Field.FField1}.r1a{declaration:TRec1.r1a} := 1;
|
|
a2.FField1{declaration:GEN_Field.FField1}.r2a{declaration:TClass1.TRec2.r2a} := 1;
|
|
end;
|
|
|
|
{ GENB_2.TFldB2 }
|
|
|
|
procedure GENB_2.TFldB2.Foo;
|
|
var
|
|
a: _REC {declaration:GENB_2._REC};
|
|
a0: TFldB0 {declaration:GENB_2.TFldB0};
|
|
a1: TFldB1 {declaration:GENB_2.TFldB1};
|
|
a2: TFldB2 {declaration:GENB_2.TFldB2};
|
|
begin
|
|
fv{declaration:GENB_2.fv} := default(_REC {declaration:GENB_2._REC} );
|
|
|
|
fy{declaration:GENB_2.TFldB2.fy}.r2a{ TODO: declaration:TClass1.TRec2.r2a} := 1;
|
|
FField1{declaration:GEN_Field.FField1}.r2a{declaration:TClass1.TRec2.r2a} := 1;
|
|
|
|
a0.FField1{declaration:GEN_Field.FField1} := default(_REC {declaration:GENB_2._REC} );
|
|
a1.FField1{declaration:GEN_Field.FField1}.r1a{declaration:TRec1.r1a} := 1;
|
|
a2.FField1{declaration:GEN_Field.FField1}.r2a{declaration:TClass1.TRec2.r2a} := 1;
|
|
end;
|
|
|
|
{ GENB_2.TFldB3 }
|
|
|
|
procedure GENB_2.TFldB3.Foo;
|
|
var
|
|
a: _REC {declaration:GENB_2._REC};
|
|
a0: TFldB0 {declaration:GENB_2.TFldB0};
|
|
a1: TFldB1 {declaration:GENB_2.TFldB1};
|
|
a2: TFldB2 {declaration:GENB_2.TFldB2};
|
|
begin
|
|
fv{declaration:GENB_2.fv} := default(_REC {declaration:GENB_2._REC} );
|
|
|
|
fy{declaration:GENB_2.TFldB3.fy}.r3a{ TODO: declaration:TClass1.TRec3.r3a} := 1;
|
|
FField1{declaration:GEN_Field.FField1}.r3a{declaration:TClass1.TRec3.r3a} := 1;
|
|
|
|
a0.FField1{declaration:GEN_Field.FField1} := default(_REC {declaration:GENB_2._REC} );
|
|
a1.FField1{declaration:GEN_Field.FField1}.r1a{declaration:TRec1.r1a} := 1;
|
|
a2.FField1{declaration:GEN_Field.FField1}.r2a{declaration:TClass1.TRec2.r2a} := 1;
|
|
end;
|
|
|
|
{ GENB_2 }
|
|
|
|
procedure GENB_2.Bar;
|
|
var
|
|
a: _REC {declaration:GENB_2._REC};
|
|
a0: TFldB0 {declaration:GENB_2.TFldB0};
|
|
a1: TFldB1 {declaration:GENB_2.TFldB1};
|
|
a2: TFldB2 {declaration:GENB_2.TFldB2};
|
|
begin
|
|
fv{declaration:GENB_2.fv} := default(_REC {declaration:GENB_2._REC} );
|
|
fx{declaration:GENB_2.fx} := default(_REC {declaration:GENB_2._REC} );
|
|
|
|
a0.FField1{declaration:GEN_Field.FField1} := default(_REC {declaration:GENB_2._REC} );
|
|
a1.FField1{declaration:GEN_Field.FField1}.r1a{declaration:TRec1.r1a} := 1;
|
|
a2.FField1{declaration:GEN_Field.FField1}.r2a{declaration:TClass1.TRec2.r2a} := 1;
|
|
end;
|
|
|
|
{ GENI_1.TFldI0 }
|
|
|
|
procedure GENI_1.TFldI0.Foo;
|
|
var
|
|
a: _REC {declaration:GENI_1._REC};
|
|
b0: TFldI0 {declaration:GENI_1.TFldI0};
|
|
b1: TFldI1 {declaration:GENI_1.TFldI1};
|
|
b2: TFldI2 {declaration:GENI_1.TFldI2};
|
|
a0: TFldB0 {declaration:GENB_1.TFldB0};
|
|
a1: TFldB1 {declaration:GENB_1.TFldB1};
|
|
a2: TFldB2 {declaration:GENB_1.TFldB2};
|
|
begin
|
|
fv{declaration:GENB_1.fv} := default(_REC {declaration:GENI_1._REC} );
|
|
fIv{declaration:GENI_1.fIv} := default(_REC {declaration:GENI_1._REC} );
|
|
|
|
fy{declaration:GENI_1.TFldI0.fy} := default(_REC {declaration:GENI_1._REC} );
|
|
FField1{declaration:GEN_Field.FField1} := default(_REC {declaration:GENI_1._REC} );
|
|
|
|
b0.FField1{declaration:GEN_Field.FField1} := default(_REC {declaration:GENI_1._REC} );
|
|
b1.FField1{declaration:GEN_Field.FField1}.r1a{declaration:TRec1.r1a} := 1;
|
|
b2.FField1{declaration:GEN_Field.FField1}.r2a{declaration:TRec2.r2a} := 1;
|
|
a0.FField1{declaration:GEN_Field.FField1} := default(_REC {declaration:GENI_1._REC} );
|
|
a1.FField1{declaration:GEN_Field.FField1}.r1a{declaration:TRec1.r1a} := 1;
|
|
a2.FField1{declaration:GEN_Field.FField1}.r2a{declaration:TRec2.r2a} := 1;
|
|
end;
|
|
|
|
{ GENI_1.TFldI1 }
|
|
|
|
procedure GENI_1.TFldI1.Foo;
|
|
var
|
|
a: _REC {declaration:GENI_1._REC};
|
|
b0: TFldI0 {declaration:GENI_1.TFldI0};
|
|
b1: TFldI1 {declaration:GENI_1.TFldI1};
|
|
b2: TFldI2 {declaration:GENI_1.TFldI2};
|
|
a0: TFldB0 {declaration:GENB_1.TFldB0};
|
|
a1: TFldB1 {declaration:GENB_1.TFldB1};
|
|
a2: TFldB2 {declaration:GENB_1.TFldB2};
|
|
begin
|
|
fv{declaration:GENB_1.fv} := default(_REC {declaration:GENI_1._REC} );
|
|
fIv{declaration:GENI_1.fIv} := default(_REC {declaration:GENI_1._REC} );
|
|
|
|
fy{declaration:GENI_1.TFldI1.fy}.r1a{ TODO: declaration:TRec1.r1a} := 1;
|
|
FField1{declaration:GEN_Field.FField1}.r1a{declaration:TRec1.r1a} := 1;
|
|
|
|
b0.FField1{declaration:GEN_Field.FField1} := default(_REC {declaration:GENI_1._REC} );
|
|
b1.FField1{declaration:GEN_Field.FField1}.r1a{declaration:TRec1.r1a} := 1;
|
|
b2.FField1{declaration:GEN_Field.FField1}.r2a{declaration:TRec2.r2a} := 1;
|
|
a0.FField1{declaration:GEN_Field.FField1} := default(_REC {declaration:GENI_1._REC} );
|
|
a1.FField1{declaration:GEN_Field.FField1}.r1a{declaration:TRec1.r1a} := 1;
|
|
a2.FField1{declaration:GEN_Field.FField1}.r2a{declaration:TRec2.r2a} := 1;
|
|
end;
|
|
|
|
{ GENI_1.TFldI2 }
|
|
|
|
procedure GENI_1.TFldI2.Foo;
|
|
var
|
|
a: _REC {declaration:GENI_1._REC};
|
|
b0: TFldI0 {declaration:GENI_1.TFldI0};
|
|
b1: TFldI1 {declaration:GENI_1.TFldI1};
|
|
b2: TFldI2 {declaration:GENI_1.TFldI2};
|
|
a0: TFldB0 {declaration:GENB_1.TFldB0};
|
|
a1: TFldB1 {declaration:GENB_1.TFldB1};
|
|
a2: TFldB2 {declaration:GENB_1.TFldB2};
|
|
begin
|
|
fv{declaration:GENB_1.fv} := default(_REC {declaration:GENI_1._REC} );
|
|
fIv{declaration:GENI_1.fIv} := default(_REC {declaration:GENI_1._REC} );
|
|
|
|
fy{declaration:GENI_1.TFldI2.fy}.r2a{ TODO: declaration:TRec2.r2a} := 1;
|
|
FField1{declaration:GEN_Field.FField1}.r2a{declaration:TRec2.r2a} := 1;
|
|
|
|
b0.FField1{declaration:GEN_Field.FField1} := default(_REC {declaration:GENI_1._REC} );
|
|
b1.FField1{declaration:GEN_Field.FField1}.r1a{declaration:TRec1.r1a} := 1;
|
|
b2.FField1{declaration:GEN_Field.FField1}.r2a{declaration:TRec2.r2a} := 1;
|
|
a0.FField1{declaration:GEN_Field.FField1} := default(_REC {declaration:GENI_1._REC} );
|
|
a1.FField1{declaration:GEN_Field.FField1}.r1a{declaration:TRec1.r1a} := 1;
|
|
a2.FField1{declaration:GEN_Field.FField1}.r2a{declaration:TRec2.r2a} := 1;
|
|
end;
|
|
|
|
{ GENI_1 }
|
|
|
|
procedure GENI_1.Bar;
|
|
var
|
|
a: _REC {declaration:GENI_1._REC};
|
|
b0: TFldI0 {declaration:GENI_1.TFldI0};
|
|
b1: TFldI1 {declaration:GENI_1.TFldI1};
|
|
b2: TFldI2 {declaration:GENI_1.TFldI2};
|
|
a0: TFldB0 {declaration:GENB_1.TFldB0};
|
|
a1: TFldB1 {declaration:GENB_1.TFldB1};
|
|
a2: TFldB2 {declaration:GENB_1.TFldB2};
|
|
begin
|
|
fv{declaration:GENB_1.fv} := default(_REC {declaration:GENI_1._REC} );
|
|
fIv{declaration:GENI_1.fIv} := default(_REC {declaration:GENI_1._REC} );
|
|
fx{declaration:GENB_1.fx} := default(_REC {declaration:GENI_1._REC} );
|
|
fIx{declaration:GENI_1.fIx} := default(_REC {declaration:GENI_1._REC} );
|
|
|
|
b0.FField1{declaration:GEN_Field.FField1} := default(_REC {declaration:GENI_1._REC} );
|
|
b1.FField1{declaration:GEN_Field.FField1}.r1a{declaration:TRec1.r1a} := 1;
|
|
b2.FField1{declaration:GEN_Field.FField1}.r2a{declaration:TRec2.r2a} := 1;
|
|
a0.FField1{declaration:GEN_Field.FField1} := default(_REC {declaration:GENI_1._REC} );
|
|
a1.FField1{declaration:GEN_Field.FField1}.r1a{declaration:TRec1.r1a} := 1;
|
|
a2.FField1{declaration:GEN_Field.FField1}.r2a{declaration:TRec2.r2a} := 1;
|
|
end;
|
|
|
|
{ GENI_2B1.TFldI0 }
|
|
|
|
procedure GENI_2B1.TFldI0.Foo;
|
|
var
|
|
a: _REC {declaration:GENI_2B1._REC};
|
|
b0: TFldI0 {declaration:GENI_2B1.TFldI0};
|
|
b1: TFldI1 {declaration:GENI_2B1.TFldI1};
|
|
b2: TFldI2 {declaration:GENI_2B1.TFldI2};
|
|
a0: TFldB0 {declaration:GENB_1.TFldB0};
|
|
a1: TFldB1 {declaration:GENB_1.TFldB1};
|
|
a2: TFldB2 {declaration:GENB_1.TFldB2};
|
|
begin
|
|
fv{declaration:GENB_1.fv} := default(_REC {declaration:GENI_2B1._REC} );
|
|
|
|
fy{declaration:GENI_2B1.TFldI0.fy} := default(_REC {declaration:GENI_2B1._REC} );
|
|
FField1{declaration:GEN_Field.FField1} := default(_REC {declaration:GENI_2B1._REC} );
|
|
|
|
b0.FField1{declaration:GEN_Field.FField1} := default(_REC {declaration:GENI_2B1._REC} );
|
|
b1.FField1{declaration:GEN_Field.FField1}.r1a{declaration:TRec1.r1a} := 1;
|
|
b2.FField1{declaration:GEN_Field.FField1}.r2a{declaration:TClass1.TRec2.r2a} := 1;
|
|
a0.FField1{declaration:GEN_Field.FField1} := default(_REC {declaration:GENI_2B1._REC} );
|
|
a1.FField1{declaration:GEN_Field.FField1}.r1a{declaration:TRec1.r1a} := 1;
|
|
a2.FField1{declaration:GEN_Field.FField1}.r2a{ TODO: declaration:TClass1.TRec2.r2a} := 1;
|
|
end;
|
|
|
|
{ GENI_2B1.TFldI1 }
|
|
|
|
procedure GENI_2B1.TFldI1.Foo;
|
|
var
|
|
a: _REC {declaration:GENI_2B1._REC};
|
|
b0: TFldI0 {declaration:GENI_2B1.TFldI0};
|
|
b1: TFldI1 {declaration:GENI_2B1.TFldI1};
|
|
b2: TFldI2 {declaration:GENI_2B1.TFldI2};
|
|
a0: TFldB0 {declaration:GENB_1.TFldB0};
|
|
a1: TFldB1 {declaration:GENB_1.TFldB1};
|
|
a2: TFldB2 {declaration:GENB_1.TFldB2};
|
|
begin
|
|
fv{declaration:GENB_1.fv} := default(_REC {declaration:GENI_2B1._REC} );
|
|
fIv{declaration:GENI_2B1.fIv} := default(_REC {declaration:GENI_2B1._REC} );
|
|
|
|
fy{declaration:GENI_2B1.TFldI1.fy}.r1a{ TODO: declaration:TRec1.r1a} := 1;
|
|
FField1{declaration:GEN_Field.FField1}.r1a{declaration:TRec1.r1a} := 1;
|
|
|
|
b0.FField1{declaration:GEN_Field.FField1} := default(_REC {declaration:GENI_2B1._REC} );
|
|
b1.FField1{declaration:GEN_Field.FField1}.r1a{declaration:TRec1.r1a} := 1;
|
|
b2.FField1{declaration:GEN_Field.FField1}.r2a{declaration:TClass1.TRec2.r2a} := 1;
|
|
a0.FField1{declaration:GEN_Field.FField1} := default(_REC {declaration:GENI_2B1._REC} );
|
|
a1.FField1{declaration:GEN_Field.FField1}.r1a{declaration:TRec1.r1a} := 1;
|
|
a2.FField1{declaration:GEN_Field.FField1}.r2a{ TODO: declaration:TClass1.TRec2.r2a} := 1;
|
|
end;
|
|
|
|
{ GENI_2B1.TFldI2 }
|
|
|
|
procedure GENI_2B1.TFldI2.Foo;
|
|
var
|
|
a: _REC {declaration:GENI_2B1._REC};
|
|
b0: TFldI0 {declaration:GENI_2B1.TFldI0};
|
|
b1: TFldI1 {declaration:GENI_2B1.TFldI1};
|
|
b2: TFldI2 {declaration:GENI_2B1.TFldI2};
|
|
a0: TFldB0 {declaration:GENB_1.TFldB0};
|
|
a1: TFldB1 {declaration:GENB_1.TFldB1};
|
|
a2: TFldB2 {declaration:GENB_1.TFldB2};
|
|
begin
|
|
fv{declaration:GENB_1.fv} := default(_REC {declaration:GENI_2B1._REC} );
|
|
|
|
fy{declaration:GENI_2B1.TFldI2.fy}.r2a{ TODO: declaration:TClass1.TRec2.r2a} := 1;
|
|
FField1{declaration:GEN_Field.FField1}.r2a{declaration:TClass1.TRec2.r2a} := 1;
|
|
|
|
b0.FField1{declaration:GEN_Field.FField1} := default(_REC {declaration:GENI_2B1._REC} );
|
|
b1.FField1{declaration:GEN_Field.FField1}.r1a{declaration:TRec1.r1a} := 1;
|
|
b2.FField1{declaration:GEN_Field.FField1}.r2a{declaration:TClass1.TRec2.r2a} := 1;
|
|
a0.FField1{declaration:GEN_Field.FField1} := default(_REC {declaration:GENI_2B1._REC} );
|
|
a1.FField1{declaration:GEN_Field.FField1}.r1a{declaration:TRec1.r1a} := 1;
|
|
a2.FField1{declaration:GEN_Field.FField1}.r2a{ TODO declaration:TClass1.TRec2.r2a} := 1;
|
|
end;
|
|
|
|
{ GENI_2B1.TFldI3 }
|
|
|
|
procedure GENI_2B1.TFldI3.Foo;
|
|
var
|
|
a: _REC {declaration:GENI_2B1._REC};
|
|
b0: TFldI0 {declaration:GENI_2B1.TFldI0};
|
|
b1: TFldI1 {declaration:GENI_2B1.TFldI1};
|
|
b2: TFldI2 {declaration:GENI_2B1.TFldI2};
|
|
a0: TFldB0 {declaration:GENB_1.TFldB0};
|
|
a1: TFldB1 {declaration:GENB_1.TFldB1};
|
|
a2: TFldB2 {declaration:GENB_1.TFldB2};
|
|
begin
|
|
fv{declaration:GENB_1.fv} := default(_REC {declaration:GENI_2B1._REC} );
|
|
|
|
fy{declaration:GENI_2B1.TFldI3.fy}.r3a{ TODO: declaration:TClass1.TRec3.r3a} := 1;
|
|
FField1{declaration:GEN_Field.FField1}.r3a{declaration:TClass1.TRec3.r3a} := 1;
|
|
|
|
b0.FField1{declaration:GEN_Field.FField1} := default(_REC {declaration:GENI_2B1._REC} );
|
|
b1.FField1{declaration:GEN_Field.FField1}.r1a{declaration:TRec1.r1a} := 1;
|
|
b2.FField1{declaration:GEN_Field.FField1}.r2a{declaration:TClass1.TRec2.r2a} := 1;
|
|
a0.FField1{declaration:GEN_Field.FField1} := default(_REC {declaration:GENI_2B1._REC} );
|
|
a1.FField1{declaration:GEN_Field.FField1}.r1a{declaration:TRec1.r1a} := 1;
|
|
a2.FField1{declaration:GEN_Field.FField1}.r2a{ TODO declaration:TClass1.TRec2.r2a} := 1;
|
|
end;
|
|
|
|
{ GENI_2B1 }
|
|
|
|
procedure GENI_2B1.Bar;
|
|
var
|
|
a: _REC {declaration:GENI_2B1._REC};
|
|
b0: TFldI0 {declaration:GENI_2B1.TFldI0};
|
|
b1: TFldI1 {declaration:GENI_2B1.TFldI1};
|
|
b2: TFldI2 {declaration:GENI_2B1.TFldI2};
|
|
a0: TFldB0 {declaration:GENB_1.TFldB0};
|
|
a1: TFldB1 {declaration:GENB_1.TFldB1};
|
|
a2: TFldB2 {declaration:GENB_1.TFldB2};
|
|
begin
|
|
fv{declaration:GENB_1.fv} := default(_REC {declaration:GENI_2B1._REC} );
|
|
fIv{declaration:GENI_2B1.fIv} := default(_REC {declaration:GENI_2B1._REC} );
|
|
fx{declaration:GENB_1.fx} := default(_REC {declaration:GENI_2B1._REC} );
|
|
fIx{declaration:GENI_2B1.fIx} := default(_REC {declaration:GENI_2B1._REC} );
|
|
|
|
b0.FField1{declaration:GEN_Field.FField1} := default(_REC {declaration:GENI_2B1._REC} );
|
|
b1.FField1{declaration:GEN_Field.FField1}.r1a{declaration:TRec1.r1a} := 1;
|
|
b2.FField1{declaration:GEN_Field.FField1}.r2a{declaration:TClass1.TRec2.r2a} := 1;
|
|
a0.FField1{declaration:GEN_Field.FField1} := default(_REC {declaration:GENI_2B1._REC} );
|
|
a1.FField1{declaration:GEN_Field.FField1}.r1a{declaration:TRec1.r1a} := 1;
|
|
a2.FField1{declaration:GEN_Field.FField1}.r2a{ TODO declaration:TClass1.TRec2.r2a} := 1;
|
|
end;
|
|
|
|
{ GENI_2.TFldI0 }
|
|
|
|
procedure GENI_2.TFldI0.Foo;
|
|
var
|
|
a: _REC {declaration:GENI_2._REC};
|
|
b0: TFldI0 {declaration:GENI_2.TFldI0};
|
|
b1: TFldI1 {declaration:GENI_2.TFldI1};
|
|
b2: TFldI2 {declaration:GENI_2.TFldI2};
|
|
a0: TFldB0 {declaration:GENB_2.TFldB0};
|
|
a1: TFldB1 {declaration:GENB_2.TFldB1};
|
|
a2: TFldB2 {declaration:GENB_2.TFldB2};
|
|
begin
|
|
fv{declaration:GENB_2.fv} := default(_REC {declaration:GENI_2._REC} );
|
|
fIv{declaration:GENI_2.fIv} := default(_REC {declaration:GENI_2._REC} );
|
|
|
|
fy{declaration:GENI_2.TFldI0.fy} := default(_REC {declaration:GENI_2._REC} );
|
|
FField1{declaration:GEN_Field.FField1} := default(_REC {declaration:GENI_2._REC} );
|
|
|
|
b0.FField1{declaration:GEN_Field.FField1} := default(_REC {declaration:GENI_2._REC} );
|
|
b1.FField1{declaration:GEN_Field.FField1}.r1a{declaration:TRec1.r1a} := 1;
|
|
b2.FField1{declaration:GEN_Field.FField1}.r2a{declaration:TClass1.TRec2.r2a} := 1;
|
|
a0.FField1{declaration:GEN_Field.FField1} := default(_REC {declaration:GENI_2._REC} );
|
|
a1.FField1{declaration:GEN_Field.FField1}.r1a{declaration:TRec1.r1a} := 1;
|
|
a2.FField1{declaration:GEN_Field.FField1}.r2a{declaration:TClass1.TRec2.r2a} := 1;
|
|
end;
|
|
|
|
{ GENI_2.TFldI1 }
|
|
|
|
procedure GENI_2.TFldI1.Foo;
|
|
var
|
|
a: _REC {declaration:GENI_2._REC};
|
|
b0: TFldI0 {declaration:GENI_2.TFldI0};
|
|
b1: TFldI1 {declaration:GENI_2.TFldI1};
|
|
b2: TFldI2 {declaration:GENI_2.TFldI2};
|
|
a0: TFldB0 {declaration:GENB_2.TFldB0};
|
|
a1: TFldB1 {declaration:GENB_2.TFldB1};
|
|
a2: TFldB2 {declaration:GENB_2.TFldB2};
|
|
begin
|
|
fv{declaration:GENB_2.fv} := default(_REC {declaration:GENI_2._REC} );
|
|
fIv{declaration:GENI_2.fIv} := default(_REC {declaration:GENI_2._REC} );
|
|
|
|
fy{declaration:GENI_2.TFldI1.fy}.r1a{ TODO: declaration:TRec1.r1a} := 1;
|
|
FField1{declaration:GEN_Field.FField1}.r1a{declaration:TRec1.r1a} := 1;
|
|
|
|
b0.FField1{declaration:GEN_Field.FField1} := default(_REC {declaration:GENI_2._REC} );
|
|
b1.FField1{declaration:GEN_Field.FField1}.r1a{declaration:TRec1.r1a} := 1;
|
|
b2.FField1{declaration:GEN_Field.FField1}.r2a{declaration:TClass1.TRec2.r2a} := 1;
|
|
a0.FField1{declaration:GEN_Field.FField1} := default(_REC {declaration:GENI_2._REC} );
|
|
a1.FField1{declaration:GEN_Field.FField1}.r1a{declaration:TRec1.r1a} := 1;
|
|
a2.FField1{declaration:GEN_Field.FField1}.r2a{declaration:TClass1.TRec2.r2a} := 1;
|
|
end;
|
|
|
|
{ GENI_2.TFldI2 }
|
|
|
|
procedure GENI_2.TFldI2.Foo;
|
|
var
|
|
a: _REC {declaration:GENI_2._REC};
|
|
b0: TFldI0 {declaration:GENI_2.TFldI0};
|
|
b1: TFldI1 {declaration:GENI_2.TFldI1};
|
|
b2: TFldI2 {declaration:GENI_2.TFldI2};
|
|
a0: TFldB0 {declaration:GENB_2.TFldB0};
|
|
a1: TFldB1 {declaration:GENB_2.TFldB1};
|
|
a2: TFldB2 {declaration:GENB_2.TFldB2};
|
|
begin
|
|
fv{declaration:GENB_2.fv} := default(_REC {declaration:GENI_2._REC} );
|
|
fIv{declaration:GENI_2.fIv} := default(_REC {declaration:GENI_2._REC} );
|
|
|
|
fy{declaration:GENI_2.TFldI2.fy}.r2a{ TODO: declaration:TClass1.TRec2.r2a} := 1;
|
|
FField1{declaration:GEN_Field.FField1}.r2a{declaration:TClass1.TRec2.r2a} := 1;
|
|
|
|
b0.FField1{declaration:GEN_Field.FField1} := default(_REC {declaration:GENI_2._REC} );
|
|
b1.FField1{declaration:GEN_Field.FField1}.r1a{declaration:TRec1.r1a} := 1;
|
|
b2.FField1{declaration:GEN_Field.FField1}.r2a{declaration:TClass1.TRec2.r2a} := 1;
|
|
a0.FField1{declaration:GEN_Field.FField1} := default(_REC {declaration:GENI_2._REC} );
|
|
a1.FField1{declaration:GEN_Field.FField1}.r1a{declaration:TRec1.r1a} := 1;
|
|
a2.FField1{declaration:GEN_Field.FField1}.r2a{declaration:TClass1.TRec2.r2a} := 1;
|
|
end;
|
|
|
|
{ GENI_2.TFldI3 }
|
|
|
|
procedure GENI_2.TFldI3.Foo;
|
|
var
|
|
a: _REC {declaration:GENI_2._REC};
|
|
b0: TFldI0 {declaration:GENI_2.TFldI0};
|
|
b1: TFldI1 {declaration:GENI_2.TFldI1};
|
|
b2: TFldI2 {declaration:GENI_2.TFldI2};
|
|
a0: TFldB0 {declaration:GENB_2.TFldB0};
|
|
a1: TFldB1 {declaration:GENB_2.TFldB1};
|
|
a2: TFldB2 {declaration:GENB_2.TFldB2};
|
|
begin
|
|
fv{declaration:GENB_2.fv} := default(_REC {declaration:GENI_2._REC} );
|
|
|
|
fy{declaration:GENI_2.TFldI3.fy}.r3a{ TODO: declaration:TClass1.TRec3.r3a} := 1;
|
|
FField1{declaration:GEN_Field.FField1}.r3a{declaration:TClass1.TRec3.r3a} := 1;
|
|
|
|
b0.FField1{declaration:GEN_Field.FField1} := default(_REC {declaration:GENI_2._REC} );
|
|
b1.FField1{declaration:GEN_Field.FField1}.r1a{declaration:TRec1.r1a} := 1;
|
|
b2.FField1{declaration:GEN_Field.FField1}.r2a{declaration:TClass1.TRec2.r2a} := 1;
|
|
a0.FField1{declaration:GEN_Field.FField1} := default(_REC {declaration:GENI_2._REC} );
|
|
a1.FField1{declaration:GEN_Field.FField1}.r1a{declaration:TRec1.r1a} := 1;
|
|
a2.FField1{declaration:GEN_Field.FField1}.r2a{declaration:TClass1.TRec2.r2a} := 1;
|
|
end;
|
|
|
|
{ GENI_2 }
|
|
|
|
procedure GENI_2.Bar;
|
|
var
|
|
a: _REC {declaration:GENI_2._REC};
|
|
b0: TFldI0 {declaration:GENI_2.TFldI0};
|
|
b1: TFldI1 {declaration:GENI_2.TFldI1};
|
|
b2: TFldI2 {declaration:GENI_2.TFldI2};
|
|
a0: TFldB0 {declaration:GENB_2.TFldB0};
|
|
a1: TFldB1 {declaration:GENB_2.TFldB1};
|
|
a2: TFldB2 {declaration:GENB_2.TFldB2};
|
|
begin
|
|
fv{declaration:GENB_2.fv} := default(_REC {declaration:GENI_2._REC} );
|
|
fIv{declaration:GENI_2.fIv} := default(_REC {declaration:GENI_2._REC} );
|
|
fx{declaration:GENB_2.fx} := default(_REC {declaration:GENI_2._REC} );
|
|
fIx{declaration:GENI_2.fIx} := default(_REC {declaration:GENI_2._REC} );
|
|
|
|
b0.FField1{declaration:GEN_Field.FField1} := default(_REC {declaration:GENI_2._REC} );
|
|
b1.FField1{declaration:GEN_Field.FField1}.r1a{declaration:TRec1.r1a} := 1;
|
|
b2.FField1{declaration:GEN_Field.FField1}.r2a{declaration:TClass1.TRec2.r2a} := 1;
|
|
a0.FField1{declaration:GEN_Field.FField1} := default(_REC {declaration:GENI_2._REC} );
|
|
a1.FField1{declaration:GEN_Field.FField1}.r1a{declaration:TRec1.r1a} := 1;
|
|
a2.FField1{declaration:GEN_Field.FField1}.r2a{declaration:TClass1.TRec2.r2a} := 1;
|
|
end;
|
|
|
|
|
|
{ TClassG1R0 }
|
|
|
|
procedure TClassG1R0.Abc;
|
|
begin
|
|
|
|
end;
|
|
|
|
{ TClassG1R1 }
|
|
|
|
procedure TClassG1R1.Abc;
|
|
begin
|
|
|
|
end;
|
|
|
|
{ TClassG1Rb1 }
|
|
|
|
procedure TClassG1Rb1.Abc;
|
|
begin
|
|
|
|
end;
|
|
|
|
{ TClassB1 }
|
|
|
|
procedure TClassB1.Abc;
|
|
begin
|
|
|
|
end;
|
|
|
|
{ TClassB1C1 }
|
|
|
|
procedure TClassB1C1.Abc;
|
|
begin
|
|
|
|
end;
|
|
|
|
{ TClassB1C2 }
|
|
|
|
procedure TClassB1C2.Abc;
|
|
begin
|
|
|
|
end;
|
|
|
|
{ TClassB2C1 }
|
|
|
|
procedure TClassB2C1.Abc;
|
|
begin
|
|
|
|
end;
|
|
|
|
{ TClassB2C2 }
|
|
|
|
procedure TClassB2C2.Abc;
|
|
begin
|
|
|
|
end;
|
|
|
|
{ TClassI1 }
|
|
|
|
procedure TClassI1.Abc;
|
|
begin
|
|
|
|
end;
|
|
|
|
{ TClassI1C1 }
|
|
|
|
procedure TClassI1C1.Abc;
|
|
begin
|
|
|
|
end;
|
|
|
|
{ TClassI1C2 }
|
|
|
|
procedure TClassI1C2.Abc;
|
|
begin
|
|
|
|
end;
|
|
|
|
{ TClassI2bC1 }
|
|
|
|
procedure TClassI2bC1.Abc;
|
|
begin
|
|
|
|
end;
|
|
|
|
{ TClassI2bC2 }
|
|
|
|
procedure TClassI2bC2.Abc;
|
|
begin
|
|
|
|
end;
|
|
|
|
{ TClassI2C1 }
|
|
|
|
procedure TClassI2C1.Abc;
|
|
begin
|
|
|
|
end;
|
|
|
|
{ TClassI2C2 }
|
|
|
|
procedure TClassI2C2.Abc;
|
|
begin
|
|
|
|
end;
|
|
|
|
|
|
begin
|
|
|
|
end.
|
|
|