Codetools: Fix the scope of finding nested procedures. Issue #23994, patch by WooBean007.

This commit is contained in:
Juha 2024-12-25 20:21:40 +02:00
parent 27ca5f8137
commit 6dd342cef1

View File

@ -6868,14 +6868,27 @@ var
if AliasDeclarationNode<>nil then begin if AliasDeclarationNode<>nil then begin
UseProcHead(AliasDeclarationNode); UseProcHead(AliasDeclarationNode);
if DeclarationTool=Self then begin Node:=DeclarationNode.Parent;
//debugln(['FindDeclarationNode adding alias node ...']); while (Node<>nil) do begin
AddNodeReference(AliasDeclarationNode); if Node.Desc = ctnProcedure then begin //here context is clearly limited
if Node.EndPos<AliasDeclarationNode.StartPos then begin
AliasDeclarationNode:=nil; //alias candidate out of context
break;
end;
end;
Node:=Node.Parent;
end; end;
if AliasDeclarationNode.StartPos>DeclarationNode.StartPos then begin
Node:=AliasDeclarationNode; if AliasDeclarationNode<>nil then begin
AliasDeclarationNode:=DeclarationNode; if DeclarationTool=Self then begin
DeclarationNode:=Node; //debugln(['FindDeclarationNode adding alias node ...']);
AddNodeReference(AliasDeclarationNode);
end;
if AliasDeclarationNode.StartPos>DeclarationNode.StartPos then begin
Node:=AliasDeclarationNode;
AliasDeclarationNode:=DeclarationNode;
DeclarationNode:=Node;
end;
end; end;
end; end;