mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-10 10:36:20 +02:00
Codetools: Return generic params for found identifier / Update calling Parameters
This commit is contained in:
parent
19d12f194d
commit
6fda552055
@ -615,6 +615,7 @@ type
|
||||
procedure SetGenericParamValues(SpecializeParamsTool: TFindDeclarationTool;
|
||||
SpecializeNode: TCodeTreeNode;
|
||||
GenericTool: TFindDeclarationTool; GenericNode: TCodeTreeNode);
|
||||
procedure AppendGenericParamValues(AGenParams: TGenericParams);
|
||||
function FindGenericParamType: Boolean;
|
||||
procedure AddOperandPart(aPart: string);
|
||||
property ExtractedOperand: string read FExtractedOperand;
|
||||
@ -5338,6 +5339,12 @@ var
|
||||
[ctsTypeIdentifier,GetAtom]);
|
||||
end;
|
||||
Context:=TestContext;
|
||||
if (fodDoNotCache in SubParams.NewFlags) then begin
|
||||
Include(Params.Flags, fdfDoNotCache);
|
||||
Include(Params.NewFlags, fodDoNotCache);
|
||||
end;
|
||||
SubParams.AppendGenericParamValues(Params.GenParams);
|
||||
Params.GenParams:=SubParams.GenParams;
|
||||
{$IFDEF ShowTriedBaseContexts}
|
||||
debugln(['TFindDeclarationTool.FindBaseTypeOfNode.SearchIdentifier found ',GetIdentifier(@Src[IdentStart]),' Node=',Context.Node.DescAsString,' ',Context.Tool.CleanPosToStr(Context.Node.StartPos,true)]);
|
||||
{$ENDIF}
|
||||
@ -14084,6 +14091,23 @@ begin
|
||||
GenParams.GenericNode := GenericNode;
|
||||
end;
|
||||
|
||||
procedure TFindDeclarationParams.AppendGenericParamValues(
|
||||
AGenParams: TGenericParams);
|
||||
var
|
||||
p: TGenericParams;
|
||||
begin
|
||||
if GenParams.ParamValuesTool = nil then begin
|
||||
GenParams := AGenParams;
|
||||
exit;
|
||||
end;
|
||||
|
||||
p:=GenParams;
|
||||
while Length(p.OuterGenParam)>0 do
|
||||
p:=p.OuterGenParam[0];
|
||||
SetLength(p.OuterGenParam, 1);
|
||||
p.OuterGenParam[0]:=AGenParams;
|
||||
end;
|
||||
|
||||
function TFindDeclarationParams.FindGenericParamType: Boolean;
|
||||
function SearchInGenericRestrictions: boolean;
|
||||
begin
|
||||
|
@ -357,7 +357,7 @@ var
|
||||
begin
|
||||
fv{declaration:GEN_1.fv} := default(_REC {declaration:GEN_1._REC} );
|
||||
|
||||
fy{declaration:GEN_1.TFld1.fy}.r1a{ TODO: declaration:TRec1.r1a} := 1;
|
||||
fy{declaration:GEN_1.TFld1.fy}.r1a{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} );
|
||||
@ -376,7 +376,7 @@ var
|
||||
begin
|
||||
fv{declaration:GEN_1.fv} := default(_REC {declaration:GEN_1._REC} );
|
||||
|
||||
fy{declaration:GEN_1.TFld2.fy}.r2a{ TODO: declaration:TRec2.r2a} := 1;
|
||||
fy{declaration:GEN_1.TFld2.fy}.r2a{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} );
|
||||
@ -431,7 +431,7 @@ var
|
||||
begin
|
||||
fv{declaration:GENB_1.fv} := default(_REC {declaration:GENB_1._REC} );
|
||||
|
||||
fy{declaration:GENB_1.TFldB1.fy}.r1a{ TODO: declaration:TRec1.r1a} := 1;
|
||||
fy{declaration:GENB_1.TFldB1.fy}.r1a{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} );
|
||||
@ -450,7 +450,7 @@ var
|
||||
begin
|
||||
fv{declaration:GENB_1.fv} := default(_REC {declaration:GENB_1._REC} );
|
||||
|
||||
fy{declaration:GENB_1.TFldB2.fy}.r2a{ TODO: declaration:TRec2.r2a} := 1;
|
||||
fy{declaration:GENB_1.TFldB2.fy}.r2a{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} );
|
||||
@ -505,7 +505,7 @@ var
|
||||
begin
|
||||
fv{declaration:GENB_2.fv} := default(_REC {declaration:GENB_2._REC} );
|
||||
|
||||
fy{declaration:GENB_2.TFldB1.fy}.r1a{ TODO: declaration:TRec1.r1a} := 1;
|
||||
fy{declaration:GENB_2.TFldB1.fy}.r1a{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} );
|
||||
@ -524,7 +524,7 @@ var
|
||||
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;
|
||||
fy{declaration:GENB_2.TFldB2.fy}.r2a{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} );
|
||||
@ -543,7 +543,7 @@ var
|
||||
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;
|
||||
fy{declaration:GENB_2.TFldB3.fy}.r3a{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} );
|
||||
@ -609,7 +609,7 @@ 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;
|
||||
fy{declaration:GENI_1.TFldI1.fy}.r1a{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} );
|
||||
@ -635,7 +635,7 @@ 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;
|
||||
fy{declaration:GENI_1.TFldI2.fy}.r2a{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} );
|
||||
@ -693,7 +693,7 @@ begin
|
||||
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;
|
||||
a2.FField1{declaration:GEN_Field.FField1}.r2a{declaration:TClass1.TRec2.r2a} := 1;
|
||||
end;
|
||||
|
||||
{ GENI_2B1.TFldI1 }
|
||||
@ -711,7 +711,7 @@ 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;
|
||||
fy{declaration:GENI_2B1.TFldI1.fy}.r1a{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} );
|
||||
@ -719,7 +719,7 @@ begin
|
||||
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;
|
||||
a2.FField1{declaration:GEN_Field.FField1}.r2a{declaration:TClass1.TRec2.r2a} := 1;
|
||||
end;
|
||||
|
||||
{ GENI_2B1.TFldI2 }
|
||||
@ -736,7 +736,7 @@ var
|
||||
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;
|
||||
fy{declaration:GENI_2B1.TFldI2.fy}.r2a{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} );
|
||||
@ -744,7 +744,7 @@ begin
|
||||
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;
|
||||
a2.FField1{declaration:GEN_Field.FField1}.r2a{declaration:TClass1.TRec2.r2a} := 1;
|
||||
end;
|
||||
|
||||
{ GENI_2B1.TFldI3 }
|
||||
@ -761,7 +761,7 @@ var
|
||||
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;
|
||||
fy{declaration:GENI_2B1.TFldI3.fy}.r3a{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} );
|
||||
@ -769,7 +769,7 @@ begin
|
||||
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;
|
||||
a2.FField1{declaration:GEN_Field.FField1}.r2a{declaration:TClass1.TRec2.r2a} := 1;
|
||||
end;
|
||||
|
||||
{ GENI_2B1 }
|
||||
@ -794,7 +794,7 @@ begin
|
||||
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;
|
||||
a2.FField1{declaration:GEN_Field.FField1}.r2a{declaration:TClass1.TRec2.r2a} := 1;
|
||||
end;
|
||||
|
||||
{ GENI_2.TFldI0 }
|
||||
@ -838,7 +838,7 @@ 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;
|
||||
fy{declaration:GENI_2.TFldI1.fy}.r1a{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} );
|
||||
@ -864,7 +864,7 @@ 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;
|
||||
fy{declaration:GENI_2.TFldI2.fy}.r2a{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} );
|
||||
@ -889,7 +889,7 @@ var
|
||||
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;
|
||||
fy{declaration:GENI_2.TFldI3.fy}.r3a{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} );
|
||||
|
Loading…
Reference in New Issue
Block a user