|
@@ -2335,7 +2335,11 @@ var
|
|
Ref: TPasScopeReference absolute Item;
|
|
Ref: TPasScopeReference absolute Item;
|
|
List: TFPList absolute aList;
|
|
List: TFPList absolute aList;
|
|
begin
|
|
begin
|
|
- List.Add(Ref);
|
|
|
|
|
|
+ while Ref<>nil do
|
|
|
|
+ begin
|
|
|
|
+ List.Add(Ref);
|
|
|
|
+ Ref:=Ref.NextSameName;
|
|
|
|
+ end;
|
|
end;
|
|
end;
|
|
|
|
|
|
constructor TPasScopeReferences.Create(aScope: TPasScope);
|
|
constructor TPasScopeReferences.Create(aScope: TPasScope);
|
|
@@ -2362,12 +2366,12 @@ function TPasScopeReferences.Add(El: TPasElement; Access: TPSRefAccess
|
|
): TPasScopeReference;
|
|
): TPasScopeReference;
|
|
var
|
|
var
|
|
LoName: String;
|
|
LoName: String;
|
|
- OldItem, Item: TPasScopeReference;
|
|
|
|
- Index: Integer;
|
|
|
|
|
|
+ OldItem, Item, LastItem: TPasScopeReference;
|
|
begin
|
|
begin
|
|
LoName:=lowercase(El.Name);
|
|
LoName:=lowercase(El.Name);
|
|
OldItem:=TPasScopeReference(References.Find(LoName));
|
|
OldItem:=TPasScopeReference(References.Find(LoName));
|
|
Item:=OldItem;
|
|
Item:=OldItem;
|
|
|
|
+ LastItem:=nil;
|
|
while Item<>nil do
|
|
while Item<>nil do
|
|
begin
|
|
begin
|
|
if Item.Element=El then
|
|
if Item.Element=El then
|
|
@@ -2417,14 +2421,14 @@ begin
|
|
end;
|
|
end;
|
|
exit(Item);
|
|
exit(Item);
|
|
end;
|
|
end;
|
|
|
|
+ LastItem:=Item;
|
|
Item:=Item.NextSameName;
|
|
Item:=Item.NextSameName;
|
|
end;
|
|
end;
|
|
// new reference
|
|
// new reference
|
|
Item:=TPasScopeReference.Create;
|
|
Item:=TPasScopeReference.Create;
|
|
Item.Element:=El;
|
|
Item.Element:=El;
|
|
Item.Access:=Access;
|
|
Item.Access:=Access;
|
|
- Index:=References.FindIndexOf(LoName);
|
|
|
|
- if Index<0 then
|
|
|
|
|
|
+ if LastItem=nil then
|
|
begin
|
|
begin
|
|
References.Add(LoName,Item);
|
|
References.Add(LoName,Item);
|
|
{$IFDEF VerbosePCUFiler}
|
|
{$IFDEF VerbosePCUFiler}
|
|
@@ -2433,15 +2437,7 @@ begin
|
|
{$ENDIF}
|
|
{$ENDIF}
|
|
end
|
|
end
|
|
else
|
|
else
|
|
- begin
|
|
|
|
- OldItem:=TPasScopeReference(References.List^[Index].Data);
|
|
|
|
- {$IFDEF VerbosePCUFiler}
|
|
|
|
- if lowercase(OldItem.Element.Name)<>LoName then
|
|
|
|
- raise EPasResolve.Create('20180219230055');
|
|
|
|
- {$ENDIF}
|
|
|
|
- Item.NextSameName:=OldItem;
|
|
|
|
- References.List^[Index].Data:=Item;
|
|
|
|
- end;
|
|
|
|
|
|
+ LastItem.NextSameName:=Item;
|
|
Result:=Item;
|
|
Result:=Item;
|
|
end;
|
|
end;
|
|
|
|
|