mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-05-28 08:42:55 +02:00
Codetools: Match generic params with the correct specialize. In case of specialize inside of a generic params were mismatched.
This commit is contained in:
parent
63039e34f5
commit
ddc435d313
@ -554,8 +554,14 @@ type
|
||||
{ TGenericParams }
|
||||
|
||||
TGenericParams = record
|
||||
// values given in "specialize" statement
|
||||
ParamValuesTool: TFindDeclarationTool;
|
||||
SpecializeParamsNode: TCodeTreeNode;
|
||||
// "generic" definition to which those values can be applied
|
||||
GenericTool: TFindDeclarationTool;
|
||||
GenericNode: TCodeTreeNode;
|
||||
// *chain* of earlier params, in case of nested generic
|
||||
// there will always be 0 or 1 entry. This acts like a pointer, only with automatic FreeMem
|
||||
OuterGenParam: array of TGenericParams;
|
||||
end;
|
||||
|
||||
@ -607,7 +613,8 @@ type
|
||||
ParamCompatibilityList: TTypeCompatibilityList);
|
||||
private
|
||||
procedure SetGenericParamValues(SpecializeParamsTool: TFindDeclarationTool;
|
||||
SpecializeNode: TCodeTreeNode);
|
||||
SpecializeNode: TCodeTreeNode;
|
||||
GenericTool: TFindDeclarationTool; GenericNode: TCodeTreeNode);
|
||||
function FindGenericParamType: Boolean;
|
||||
procedure AddOperandPart(aPart: string);
|
||||
property ExtractedOperand: string read FExtractedOperand;
|
||||
@ -5620,7 +5627,6 @@ begin
|
||||
NameNode:=SpecializeNode.FirstChild;
|
||||
Result.Node:=NameNode;
|
||||
if Result.Node=nil then break;
|
||||
Params.SetGenericParamValues(Self, SpecializeNode);
|
||||
SearchIdentifier(SpecializeNode,NameNode.StartPos,IsPredefined,Result);
|
||||
if (Result.Node=nil) or (Result.Node.Desc<>ctnGenericType) then begin
|
||||
// not a generic
|
||||
@ -5629,6 +5635,7 @@ begin
|
||||
RaiseExceptionFmt(20170421200156,ctsStrExpectedButAtomFound,
|
||||
[ctsGenericIdentifier,GetAtom]);
|
||||
end;
|
||||
Params.SetGenericParamValues(Self, SpecializeNode, Result.Tool, Result.Node);
|
||||
end else
|
||||
break;
|
||||
end;
|
||||
@ -7667,8 +7674,10 @@ begin
|
||||
Params:=TFindDeclarationParams.Create;
|
||||
Params.GenParams := ResultParams.GenParams;
|
||||
if IdentifierNode.Desc=ctnSpecialize then begin
|
||||
SpecializeNode:=IdentifierNode;
|
||||
Params.SetGenericParamValues(Self, SpecializeNode);
|
||||
if AncestorContext.Node.Desc <> ctnGenericType then
|
||||
RaiseExpected('generic type');
|
||||
SpecializeNode:=IdentifierNode;
|
||||
Params.SetGenericParamValues(Self, SpecializeNode, AncestorContext.Tool, AncestorContext.Node);
|
||||
end;
|
||||
try
|
||||
Params.Flags:=fdfDefaultForExpressions+[fdfFindChildren];
|
||||
@ -14038,8 +14047,8 @@ begin
|
||||
end;
|
||||
|
||||
procedure TFindDeclarationParams.SetGenericParamValues(
|
||||
SpecializeParamsTool: TFindDeclarationTool;
|
||||
SpecializeNode: TCodeTreeNode);
|
||||
SpecializeParamsTool: TFindDeclarationTool; SpecializeNode: TCodeTreeNode;
|
||||
GenericTool: TFindDeclarationTool; GenericNode: TCodeTreeNode);
|
||||
var
|
||||
GenP: TGenericParams;
|
||||
begin
|
||||
@ -14054,6 +14063,8 @@ begin
|
||||
|
||||
GenParams.ParamValuesTool := SpecializeParamsTool;
|
||||
GenParams.SpecializeParamsNode := SpecializeNode.FirstChild.NextBrother;
|
||||
GenParams.GenericTool := GenericTool;
|
||||
GenParams.GenericNode := GenericNode;
|
||||
end;
|
||||
|
||||
function TFindDeclarationParams.FindGenericParamType: Boolean;
|
||||
@ -14080,12 +14091,37 @@ begin
|
||||
Result := SearchInGenericRestrictions;
|
||||
exit;
|
||||
end;
|
||||
|
||||
// n := Find the index of the param in the generic list
|
||||
n:=0;
|
||||
GenParamType:=NewNode;
|
||||
while GenParamType<>nil do begin
|
||||
GenParamType:=GenParamType.PriorBrother;
|
||||
inc(n);
|
||||
end;
|
||||
|
||||
OldGenParam := GenParams;
|
||||
while (GenParams.ParamValuesTool <> nil) and
|
||||
( (NewNode.StartPos < GenParams.GenericNode.StartPos) or
|
||||
(NewNode.EndPos > GenParams.GenericNode.EndPos) or
|
||||
(NewCodeTool <> GenParams.GenericTool)
|
||||
)
|
||||
do begin
|
||||
if Length(GenParams.OuterGenParam) > 0 then
|
||||
GenParams := GenParams.OuterGenParam[0]
|
||||
else begin
|
||||
GenParams.ParamValuesTool:=nil;
|
||||
GenParams.SpecializeParamsNode:=nil;
|
||||
end;
|
||||
end;
|
||||
|
||||
if (GenParams.ParamValuesTool = nil) then begin
|
||||
GenParams := OldGenParam;
|
||||
Result := SearchInGenericRestrictions;
|
||||
exit;
|
||||
end;
|
||||
|
||||
|
||||
with GenParams.ParamValuesTool do begin
|
||||
MoveCursorToNodeStart(GenParams.SpecializeParamsNode);
|
||||
ReadNextAtom;
|
||||
@ -14108,7 +14144,6 @@ begin
|
||||
Identifier:=@Src[CurPos.StartPos];
|
||||
IdentifierTool:=GenParams.ParamValuesTool;
|
||||
ContextNode:=GenParams.SpecializeParamsNode;
|
||||
OldGenParam := GenParams;
|
||||
if Length(GenParams.OuterGenParam) > 0 then
|
||||
GenParams := GenParams.OuterGenParam[0]
|
||||
else begin
|
||||
|
@ -47,12 +47,12 @@ type
|
||||
procedure Foo;
|
||||
end;
|
||||
TFld1 = class(specialize GEN_Field<TRec1>)
|
||||
fx: _REC { TODO,WRONG: declaration:GEN_1._REC};
|
||||
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 { TODO,WRONG: declaration:GEN_1._REC};
|
||||
fx: _REC {declaration:GEN_1._REC};
|
||||
fy: T_F1 {declaration:GEN_Field.T_F1};
|
||||
procedure Foo;
|
||||
end;
|
||||
@ -70,18 +70,18 @@ type
|
||||
generic GENB_1<_B1: TObject; _REC> = class(_B1)
|
||||
public type
|
||||
TFldB0 = class(specialize GEN_Field<_REC>)
|
||||
fx: _REC { TODO: declaration:GENB_1._REC};
|
||||
fy: T_F1 { TODO: declaration:GEN_Field.T_F1};
|
||||
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 { TODO: declaration:GENB_1._REC};
|
||||
fy: T_F1 { TODO: declaration:GEN_Field.T_F1};
|
||||
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 { TODO: declaration:GENB_1._REC};
|
||||
fy: T_F1 { TODO: declaration:GEN_Field.T_F1};
|
||||
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
|
||||
@ -99,23 +99,23 @@ type
|
||||
generic GENB_2<_B2: TClass1; _REC> = class(_B2)
|
||||
public type
|
||||
TFldB0 = class(specialize GEN_Field<_REC>)
|
||||
fx: _REC { TODO: declaration:GENB_2._REC};
|
||||
fy: T_F1 { TODO: declaration:GEN_Field.T_F1};
|
||||
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 { TODO: declaration:GENB_2._REC};
|
||||
fy: T_F1 { TODO: declaration:GEN_Field.T_F1};
|
||||
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 { TODO: declaration:GENB_2._REC};
|
||||
fy: T_F1 { TODO: declaration:GEN_Field.T_F1};
|
||||
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 { TODO: declaration:GENB_2._REC};
|
||||
fy: T_F1 { TODO: declaration:GEN_Field.T_F1};
|
||||
fx: _REC {declaration:GENB_2._REC};
|
||||
fy: T_F1 {declaration:GEN_Field.T_F1};
|
||||
procedure Foo;
|
||||
end;
|
||||
public class var
|
||||
@ -132,18 +132,18 @@ type
|
||||
generic GENI_1<_IB1: TObject; _REC> = class(specialize GENB_1<_IB1, _REC>)
|
||||
public type
|
||||
TFldI0 = class(specialize GEN_Field<_REC>)
|
||||
fx: _REC { TODO: declaration:GENI_1._REC};
|
||||
fy: T_F1 { TODO: declaration:GEN_Field.T_F1};
|
||||
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 { TODO: declaration:GENI_1._REC};
|
||||
fy: T_F1 { TODO: declaration:GEN_Field.T_F1};
|
||||
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 { TODO: declaration:GENI_1._REC};
|
||||
fy: T_F1 { TODO: declaration:GEN_Field.T_F1};
|
||||
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
|
||||
@ -161,23 +161,23 @@ type
|
||||
generic GENI_2B1<_IB2: TClass1; _REC> = class(specialize GENB_1<_IB2, _REC>)
|
||||
public type
|
||||
TFldI0 = class(specialize GEN_Field<_REC>)
|
||||
fx: _REC { TODO: declaration:GENI_2B1._REC};
|
||||
fy: T_F1 { TODO: declaration:GEN_Field.T_F1};
|
||||
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 { TODO: declaration:GENI_2B1._REC};
|
||||
fy: T_F1 { TODO: declaration:GEN_Field.T_F1};
|
||||
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 { TODO: declaration:GENI_2B1._REC};
|
||||
fy: T_F1 { TODO: declaration:GEN_Field.T_F1};
|
||||
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 { TODO: declaration:GENI_2B1._REC};
|
||||
fy: T_F1 { TODO: declaration:GEN_Field.T_F1};
|
||||
fx: _REC {declaration:GENI_2B1._REC};
|
||||
fy: T_F1 {declaration:GEN_Field.T_F1};
|
||||
procedure Foo;
|
||||
end;
|
||||
public class var
|
||||
@ -192,23 +192,23 @@ type
|
||||
generic GENI_2<_IB2: TClass1; _REC> = class(specialize GENB_2<_IB2, _REC>)
|
||||
public type
|
||||
TFldI0 = class(specialize GEN_Field<_REC>)
|
||||
fx: _REC { TODO: declaration:GENI_2._REC};
|
||||
fy: T_F1 { TODO: declaration:GEN_Field.T_F1};
|
||||
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 { TODO: declaration:GENI_2._REC};
|
||||
fy: T_F1 { TODO: declaration:GEN_Field.T_F1};
|
||||
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 { TODO: declaration:GENI_2._REC};
|
||||
fy: T_F1 { TODO: declaration:GEN_Field.T_F1};
|
||||
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 { TODO: declaration:GENI_2._REC};
|
||||
fy: T_F1 { TODO: declaration:GEN_Field.T_F1};
|
||||
fx: _REC {declaration:GENI_2._REC};
|
||||
fy: T_F1 {declaration:GEN_Field.T_F1};
|
||||
procedure Foo;
|
||||
end;
|
||||
public class var
|
||||
@ -406,14 +406,14 @@ end;
|
||||
procedure GENB_1.TFldB0.Foo;
|
||||
var
|
||||
a: _REC { TODO declaration:GENB_1._REC};
|
||||
a0: TFldB0 { TODO declaration:GENB_1.TFldB0};
|
||||
a1: TFldB1 { TODO declaration:GENB_1.TFldB1};
|
||||
a2: TFldB2 { TODO declaration:GENB_1.TFldB2};
|
||||
a0: TFldB0 {declaration:GENB_1.TFldB0};
|
||||
a1: TFldB1 {declaration:GENB_1.TFldB1};
|
||||
a2: TFldB2 {declaration:GENB_1.TFldB2};
|
||||
begin
|
||||
fv{ TODO declaration:GENB_1.fv} := default(_REC { TODO: declaration:GENB_1._REC} );
|
||||
fv{declaration:GENB_1.fv} := default(_REC { TODO: declaration:GENB_1._REC} );
|
||||
|
||||
fy{ TODO declaration:GENB_1.TFldB0.fy} := default(_REC { TODO: declaration:GENB_1._REC} );
|
||||
FField1{ TODO declaration:GEN_Field.FField1} := default(_REC { TODO: declaration:GENB_1._REC} );
|
||||
fy{declaration:GENB_1.TFldB0.fy} := default(_REC { TODO: declaration:GENB_1._REC} );
|
||||
FField1{declaration:GEN_Field.FField1} := default(_REC { TODO: declaration:GENB_1._REC} );
|
||||
|
||||
a0.FField1{declaration:GEN_Field.FField1} := default(_REC { TODO: declaration:GENB_1._REC} );
|
||||
a1.FField1{declaration:GEN_Field.FField1}.r1a{declaration:TRec1.r1a} := 1;
|
||||
@ -425,9 +425,9 @@ end;
|
||||
procedure GENB_1.TFldB1.Foo;
|
||||
var
|
||||
a: _REC { TODO,WRONG: declaration:GENB_1._REC}; // TODO: the test finds it and yet we can not jump there
|
||||
a0: TFldB0 { TODO declaration:GENB_1.TFldB0};
|
||||
a1: TFldB1 { TODO declaration:GENB_1.TFldB1};
|
||||
a2: TFldB2 { TODO declaration:GENB_1.TFldB2};
|
||||
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 { TODO: declaration:GENB_1._REC} );
|
||||
|
||||
@ -444,9 +444,9 @@ end;
|
||||
procedure GENB_1.TFldB2.Foo;
|
||||
var
|
||||
a: _REC { TODO,WRONG declaration:GENB_1._REC}; // TODO: the test finds something and yet we can not jump there
|
||||
a0: TFldB0 { TODO declaration:GENB_1.TFldB0};
|
||||
a1: TFldB1 { TODO declaration:GENB_1.TFldB1};
|
||||
a2: TFldB2 { TODO declaration:GENB_1.TFldB2};
|
||||
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 { TODO: declaration:GENB_1._REC} );
|
||||
|
||||
@ -480,14 +480,14 @@ end;
|
||||
procedure GENB_2.TFldB0.Foo;
|
||||
var
|
||||
a: _REC { TODO declaration:GENB_2._REC};
|
||||
a0: TFldB0 { TODO declaration:GENB_2.TFldB0};
|
||||
a1: TFldB1 { TODO declaration:GENB_2.TFldB1};
|
||||
a2: TFldB2 { TODO declaration:GENB_2.TFldB2};
|
||||
a0: TFldB0 {declaration:GENB_2.TFldB0};
|
||||
a1: TFldB1 {declaration:GENB_2.TFldB1};
|
||||
a2: TFldB2 {declaration:GENB_2.TFldB2};
|
||||
begin
|
||||
fv{ TODO declaration:GENB_2.fv} := default(_REC { TODO: declaration:GENB_2._REC} );
|
||||
fv{declaration:GENB_2.fv} := default(_REC { TODO: declaration:GENB_2._REC} );
|
||||
|
||||
fy{ TODO declaration:GENB_2.TFldB0.fy} := default(_REC { TODO: declaration:GENB_1._REC} );
|
||||
FField1{ TODO declaration:GEN_Field.FField1} := default(_REC { TODO: declaration:GENB_2._REC} );
|
||||
fy{declaration:GENB_2.TFldB0.fy} := default(_REC { TODO: declaration:GENB_1._REC} );
|
||||
FField1{declaration:GEN_Field.FField1} := default(_REC { TODO: declaration:GENB_2._REC} );
|
||||
|
||||
a0.FField1{declaration:GEN_Field.FField1} := default(_REC { TODO: declaration:GENB_2._REC} );
|
||||
a1.FField1{declaration:GEN_Field.FField1}.r1a{declaration:TRec1.r1a} := 1;
|
||||
@ -573,18 +573,18 @@ end;
|
||||
procedure GENI_1.TFldI0.Foo;
|
||||
var
|
||||
a: _REC { TODO declaration:GENI_1._REC};
|
||||
b0: TFldI0 { TODO declaration:GENI_1.TFldI0};
|
||||
b1: TFldI1 { TODO declaration:GENI_1.TFldI1};
|
||||
b2: TFldI2 { TODO declaration:GENI_1.TFldI2};
|
||||
a0: TFldB0 { TODO declaration:GENB_1.TFldB0};
|
||||
a1: TFldB1 { TODO declaration:GENB_1.TFldB1};
|
||||
a2: TFldB2 { TODO declaration:GENB_1.TFldB2};
|
||||
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{ TODO declaration:GENB_1.fv} := default(_REC { TODO: declaration:GENI_1._REC} );
|
||||
fIv{ TODO declaration:GENB_1.fv} := default(_REC { TODO: declaration:GENI_1._REC} );
|
||||
fv{declaration:GENB_1.fv} := default(_REC { TODO: declaration:GENI_1._REC} );
|
||||
fIv{declaration:GENI_1.fIv} := default(_REC { TODO: declaration:GENI_1._REC} );
|
||||
|
||||
fy{ TODO declaration:GENB_1.TFldB0.fy} := default(_REC { TODO: declaration:GENI_1._REC} );
|
||||
FField1{ TODO declaration:GEN_Field.FField1} := default(_REC { TODO: declaration:GENI_1._REC} );
|
||||
fy{declaration:GENI_1.TFldI0.fy} := default(_REC { TODO: declaration:GENI_1._REC} );
|
||||
FField1{declaration:GEN_Field.FField1} := default(_REC { TODO: declaration:GENI_1._REC} );
|
||||
|
||||
b0.FField1{declaration:GEN_Field.FField1} := default(_REC { TODO: declaration:GENI_1._REC} );
|
||||
b1.FField1{declaration:GEN_Field.FField1}.r1a{declaration:TRec1.r1a} := 1;
|
||||
@ -607,9 +607,9 @@ var
|
||||
a2: TFldB2 {declaration:GENB_1.TFldB2};
|
||||
begin
|
||||
fv{declaration:GENB_1.fv} := default(_REC { TODO: declaration:GENI_1._REC} );
|
||||
fIv{ TODO: declaration:GENB_1.fv} := default(_REC { TODO: declaration:GENI_1._REC} );
|
||||
fIv{declaration:GENI_1.fIv} := default(_REC { TODO: declaration:GENI_1._REC} );
|
||||
|
||||
fy{ TODO: declaration:GENB_1.TFldB1.fy}.r1a{ TODO: declaration:TRec1.r1a} := 1;
|
||||
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 { TODO: declaration:GENI_1._REC} );
|
||||
@ -633,9 +633,9 @@ var
|
||||
a2: TFldB2 {declaration:GENB_1.TFldB2};
|
||||
begin
|
||||
fv{declaration:GENB_1.fv} := default(_REC { TODO: declaration:GENI_1._REC} );
|
||||
fIv{ TODO: declaration:GENB_1.fv} := default(_REC { TODO: declaration:GENI_1._REC} );
|
||||
fIv{declaration:GENI_1.fIv} := default(_REC { TODO: declaration:GENI_1._REC} );
|
||||
|
||||
fy{ TODO declaration:GENB_1.TFldB2.fy}.r2a{ TODO: declaration:TRec2.r2a} := 1;
|
||||
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 { TODO: declaration:GENI_1._REC} );
|
||||
@ -659,9 +659,9 @@ var
|
||||
a2: TFldB2 {declaration:GENB_1.TFldB2};
|
||||
begin
|
||||
fv{declaration:GENB_1.fv} := default(_REC { TODO: declaration:GENI_1._REC} );
|
||||
fIv{ TODO declaration:GENB_1.fv} := default(_REC { TODO: declaration:GENI_1._REC} );
|
||||
fIv{declaration:GENI_1.fIv} := default(_REC { TODO: declaration:GENI_1._REC} );
|
||||
fx{declaration:GENB_1.fx} := default(_REC { TODO: declaration:GENI_1._REC} );
|
||||
fIx{ TODO declaration:GENB_1.fx} := default(_REC { TODO: declaration:GENI_1._REC} );
|
||||
fIx{declaration:GENI_1.fIx} := default(_REC { TODO: declaration:GENI_1._REC} );
|
||||
|
||||
b0.FField1{declaration:GEN_Field.FField1} := default(_REC { TODO: declaration:GENI_1._REC} );
|
||||
b1.FField1{declaration:GEN_Field.FField1}.r1a{declaration:TRec1.r1a} := 1;
|
||||
@ -676,17 +676,17 @@ end;
|
||||
procedure GENI_2B1.TFldI0.Foo;
|
||||
var
|
||||
a: _REC { TODO declaration:GENI_2B1._REC};
|
||||
b0: TFldI0 { TODO declaration:GENI_2B1.TFldI0};
|
||||
b1: TFldI1 { TODO declaration:GENI_2B1.TFldI1};
|
||||
b2: TFldI2 { TODO declaration:GENI_2B1.TFldI2};
|
||||
a0: TFldB0 { TODO declaration:GENB_2.TFldB0};
|
||||
a1: TFldB1 { TODO declaration:GENB_2.TFldB1};
|
||||
a2: TFldB2 { TODO declaration:GENB_2.TFldB2};
|
||||
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{ TODO declaration:GENB_2.fv} := default(_REC { TODO: declaration:GENI_2B1._REC} );
|
||||
fv{declaration:GENB_1.fv} := default(_REC { TODO: declaration:GENI_2B1._REC} );
|
||||
|
||||
fy{ TODO declaration:GENB_2.TFldB0.fy} := default(_REC { TODO: declaration:GENI_2B1._REC} );
|
||||
FField1{ TODO declaration:GEN_Field.FField1} := default(_REC { TODO: declaration:GENI_2B1._REC} );
|
||||
fy{declaration:GENI_2B1.TFldI0.fy} := default(_REC { TODO: declaration:GENI_2B1._REC} );
|
||||
FField1{declaration:GEN_Field.FField1} := default(_REC { TODO: declaration:GENI_2B1._REC} );
|
||||
|
||||
b0.FField1{declaration:GEN_Field.FField1} := default(_REC { TODO: declaration:GENI_2B1._REC} );
|
||||
b1.FField1{declaration:GEN_Field.FField1}.r1a{declaration:TRec1.r1a} := 1;
|
||||
@ -709,9 +709,9 @@ var
|
||||
a2: TFldB2 {declaration:GENB_1.TFldB2};
|
||||
begin
|
||||
fv{declaration:GENB_1.fv} := default(_REC { TODO: declaration:GENI_2B1._REC} );
|
||||
fIv{ TODO declaration:GENB_1.fv} := default(_REC { TODO: declaration:GENI_2B1._REC} );
|
||||
fIv{declaration:GENI_2B1.fIv} := default(_REC { TODO: declaration:GENI_2B1._REC} );
|
||||
|
||||
fy{ TODO declaration:GENB_1.TFldB1.fy}.r1a{ TODO: declaration:TRec1.r1a} := 1;
|
||||
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 { TODO: declaration:GENI_2B1._REC} );
|
||||
@ -736,7 +736,7 @@ var
|
||||
begin
|
||||
fv{declaration:GENB_1.fv} := default(_REC { TODO: declaration:GENI_2B1._REC} );
|
||||
|
||||
fy{ TODO declaration:GENB_1.TFldB2.fy}.r2a{ TODO: declaration:TClass1.TRec2.r2a} := 1;
|
||||
fy{declaration:GENI_2B1.TFldI2.fy}.r2a{ TODO: declaration:TClass1.TRec2.r2a} := 1;
|
||||
FField1{declaration:GEN_Field.FField1}.r2a{ TODO declaration:TClass1.TRec2.r2a} := 1;
|
||||
|
||||
b0.FField1{declaration:GEN_Field.FField1} := default(_REC { TODO: declaration:GENI_2B1._REC} );
|
||||
@ -761,7 +761,7 @@ var
|
||||
begin
|
||||
fv{declaration:GENB_1.fv} := default(_REC { TODO: declaration:GENI_2B1._REC} );
|
||||
|
||||
fy{ TODO declaration:GENB_1.TFldB3.fy}.r3a{ TODO: declaration:TClass1.TRec3.r3a} := 1;
|
||||
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 { TODO: declaration:GENI_2B1._REC} );
|
||||
@ -785,9 +785,9 @@ var
|
||||
a2: TFldB2 {declaration:GENB_1.TFldB2};
|
||||
begin
|
||||
fv{declaration:GENB_1.fv} := default(_REC { TODO: declaration:GENI_2B1._REC} );
|
||||
fIv{ TODO: declaration:GENB_1.fv} := default(_REC { TODO: declaration:GENI_2B1._REC} );
|
||||
fIv{declaration:GENI_2B1.fIv} := default(_REC { TODO: declaration:GENI_2B1._REC} );
|
||||
fx{declaration:GENB_1.fx} := default(_REC { TODO: declaration:GENI_2B1._REC} );
|
||||
fIx{ TODO: declaration:GENB_1.fx} := default(_REC { TODO: declaration:GENI_2B1._REC} );
|
||||
fIx{declaration:GENI_2B1.fIx} := default(_REC { TODO: declaration:GENI_2B1._REC} );
|
||||
|
||||
b0.FField1{declaration:GEN_Field.FField1} := default(_REC { TODO: declaration:GENI_2B1._REC} );
|
||||
b1.FField1{declaration:GEN_Field.FField1}.r1a{declaration:TRec1.r1a} := 1;
|
||||
@ -802,25 +802,25 @@ end;
|
||||
procedure GENI_2.TFldI0.Foo;
|
||||
var
|
||||
a: _REC { TODO declaration:GENI_2._REC};
|
||||
b0: TFldI0 { TODO declaration:GENI_2.TFldI0};
|
||||
b1: TFldI1 { TODO declaration:GENI_2.TFldI1};
|
||||
b2: TFldI2 { TODO declaration:GENI_2.TFldI2};
|
||||
a0: TFldB0 { TODO declaration:GENB_2.TFldB0};
|
||||
a1: TFldB1 { TODO declaration:GENB_2.TFldB1};
|
||||
a2: TFldB2 { TODO declaration:GENB_2.TFldB2};
|
||||
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{ TODO declaration:GENB_2.fv} := default(_REC { TODO: declaration:GENI_2._REC} );
|
||||
fIv{ TODO declaration:GENB_2.fv} := default(_REC { TODO: declaration:GENI_2._REC} );
|
||||
fv{declaration:GENB_2.fv} := default(_REC { TODO: declaration:GENI_2._REC} );
|
||||
fIv{declaration:GENI_2.fIv} := default(_REC { TODO: declaration:GENI_2._REC} );
|
||||
|
||||
fy{ TODO declaration:GENB_2.TFldB0.fy} := default(_REC { TODO: declaration:GENI_2._REC} );
|
||||
fy{declaration:GENI_2.TFldI0.fy} := default(_REC { TODO: declaration:GENI_2._REC} );
|
||||
FField1{ TODO declaration:GEN_Field.FField1} := default(_REC { TODO: declaration:GENI_2._REC} );
|
||||
|
||||
b0.FField1{declaration:GEN_Field.FField1} := default(_REC { TODO: declaration:GENI_2._REC} );
|
||||
b1.FField1{declaration:GEN_Field.FField1}.r1a{declaration:TRec1.r1a} := 1;
|
||||
b2.FField1{declaration:GEN_Field.FField1}.r2a{ TODO declaration:TClass1.TRec2.r2a} := 1;
|
||||
b2.FField1{declaration:GEN_Field.FField1}.r2a{declaration:TClass1.TRec2.r2a} := 1;
|
||||
a0.FField1{declaration:GEN_Field.FField1} := default(_REC { TODO: declaration:GENI_2._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;
|
||||
a2.FField1{declaration:GEN_Field.FField1}.r2a{declaration:TClass1.TRec2.r2a} := 1;
|
||||
end;
|
||||
|
||||
{ GENI_2.TFldI1 }
|
||||
@ -836,17 +836,17 @@ var
|
||||
a2: TFldB2 {declaration:GENB_2.TFldB2};
|
||||
begin
|
||||
fv{declaration:GENB_2.fv} := default(_REC { TODO: declaration:GENI_2._REC} );
|
||||
fIv{ TODO declaration:GENB_2.fv} := default(_REC { TODO: declaration:GENI_2._REC} );
|
||||
fIv{declaration:GENI_2.fIv} := default(_REC { TODO: declaration:GENI_2._REC} );
|
||||
|
||||
fy{ TODO declaration:GENB_2.TFldB1.fy}.r1a{ TODO: declaration:TRec1.r1a} := 1;
|
||||
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 { TODO: declaration:GENI_2._REC} );
|
||||
b1.FField1{declaration:GEN_Field.FField1}.r1a{declaration:TRec1.r1a} := 1;
|
||||
b2.FField1{declaration:GEN_Field.FField1}.r2a{ TODO declaration:TClass1.TRec2.r2a} := 1;
|
||||
b2.FField1{declaration:GEN_Field.FField1}.r2a{declaration:TClass1.TRec2.r2a} := 1;
|
||||
a0.FField1{declaration:GEN_Field.FField1} := default(_REC { TODO: declaration:GENI_2._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;
|
||||
a2.FField1{declaration:GEN_Field.FField1}.r2a{declaration:TClass1.TRec2.r2a} := 1;
|
||||
end;
|
||||
|
||||
{ GENI_2.TFldI2 }
|
||||
@ -862,17 +862,17 @@ var
|
||||
a2: TFldB2 {declaration:GENB_2.TFldB2};
|
||||
begin
|
||||
fv{declaration:GENB_2.fv} := default(_REC { TODO: declaration:GENI_2._REC} );
|
||||
fIv{ TODO declaration:GENB_2.fv} := default(_REC { TODO: declaration:GENI_2._REC} );
|
||||
fIv{declaration:GENI_2.fIv} := default(_REC { TODO: declaration:GENI_2._REC} );
|
||||
|
||||
fy{ TODO declaration:GENB_2.TFldB2.fy}.r2a{ TODO: declaration:TClass1.TRec2.r2a} := 1;
|
||||
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 { TODO: declaration:GENI_2._REC} );
|
||||
b1.FField1{declaration:GEN_Field.FField1}.r1a{declaration:TRec1.r1a} := 1;
|
||||
b2.FField1{declaration:GEN_Field.FField1}.r2a{ TODO declaration:TClass1.TRec2.r2a} := 1;
|
||||
b2.FField1{declaration:GEN_Field.FField1}.r2a{declaration:TClass1.TRec2.r2a} := 1;
|
||||
a0.FField1{declaration:GEN_Field.FField1} := default(_REC { TODO: declaration:GENI_2._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;
|
||||
a2.FField1{declaration:GEN_Field.FField1}.r2a{declaration:TClass1.TRec2.r2a} := 1;
|
||||
end;
|
||||
|
||||
{ GENI_2.TFldI3 }
|
||||
@ -889,15 +889,15 @@ var
|
||||
begin
|
||||
fv{declaration:GENB_2.fv} := default(_REC { TODO: declaration:GENI_2._REC} );
|
||||
|
||||
fy{ TODO declaration:GENB_2.TFldB3.fy}.r3a{ TODO: declaration:TClass1.TRec3.r3a} := 1;
|
||||
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 { TODO: declaration:GENI_2._REC} );
|
||||
b1.FField1{declaration:GEN_Field.FField1}.r1a{declaration:TRec1.r1a} := 1;
|
||||
b2.FField1{declaration:GEN_Field.FField1}.r2a{ TODO declaration:TClass1.TRec2.r2a} := 1;
|
||||
b2.FField1{declaration:GEN_Field.FField1}.r2a{declaration:TClass1.TRec2.r2a} := 1;
|
||||
a0.FField1{declaration:GEN_Field.FField1} := default(_REC { TODO: declaration:GENI_2._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;
|
||||
a2.FField1{declaration:GEN_Field.FField1}.r2a{declaration:TClass1.TRec2.r2a} := 1;
|
||||
end;
|
||||
|
||||
{ GENI_2 }
|
||||
@ -913,16 +913,16 @@ var
|
||||
a2: TFldB2 {declaration:GENB_2.TFldB2};
|
||||
begin
|
||||
fv{declaration:GENB_2.fv} := default(_REC { TODO: declaration:GENI_2._REC} );
|
||||
fIv{ TODO declaration:GENB_2.fv} := default(_REC { TODO: declaration:GENI_2._REC} );
|
||||
fIv{declaration:GENI_2.fIv} := default(_REC { TODO: declaration:GENI_2._REC} );
|
||||
fx{declaration:GENB_2.fx} := default(_REC { TODO: declaration:GENI_2._REC} );
|
||||
fIx{ TODO declaration:GENB_2.fx} := default(_REC { TODO: declaration:GENI_2._REC} );
|
||||
fIx{declaration:GENI_2.fIx} := default(_REC { TODO: declaration:GENI_2._REC} );
|
||||
|
||||
b0.FField1{declaration:GEN_Field.FField1} := default(_REC { TODO: declaration:GENI_2._REC} );
|
||||
b1.FField1{declaration:GEN_Field.FField1}.r1a{declaration:TRec1.r1a} := 1;
|
||||
b2.FField1{declaration:GEN_Field.FField1}.r2a{ TODO declaration:TClass1.TRec2.r2a} := 1;
|
||||
b2.FField1{declaration:GEN_Field.FField1}.r2a{declaration:TClass1.TRec2.r2a} := 1;
|
||||
a0.FField1{declaration:GEN_Field.FField1} := default(_REC { TODO: declaration:GENI_2._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;
|
||||
a2.FField1{declaration:GEN_Field.FField1}.r2a{declaration:TClass1.TRec2.r2a} := 1;
|
||||
end;
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user