Browse Source

fcl-passrc: resolver: added GetTopLvlProc

git-svn-id: trunk@38389 -
Mattias Gaertner 7 years ago
parent
commit
a7c3c1bece
1 changed files with 12 additions and 0 deletions
  1. 12 0
      packages/fcl-passrc/src/pasresolver.pp

+ 12 - 0
packages/fcl-passrc/src/pasresolver.pp

@@ -1578,6 +1578,7 @@ type
     function IsTypeCast(Params: TParamsExpr): boolean;
     function ProcNeedsParams(El: TPasProcedureType): boolean;
     function IsProcOverride(AncestorProc, DescendantProc: TPasProcedure): boolean;
+    function GetTopLvlProc(El: TPasElement): TPasProcedure;
     function GetRangeLength(RangeExpr: TPasExpr): MaxPrecInt;
     function EvalRangeLimit(RangeExpr: TPasExpr; Flags: TResEvalFlags;
       EvalLow: boolean; ErrorEl: TPasElement): TResEvalValue; virtual; // compute low() or high()
@@ -16161,6 +16162,17 @@ begin
   until Proc=nil;
 end;
 
+function TPasResolver.GetTopLvlProc(El: TPasElement): TPasProcedure;
+begin
+  Result:=nil;
+  while El<>nil do
+    begin
+    if El is TPasProcedure then
+      Result:=TPasProcedure(El);
+    El:=El.Parent;
+    end;
+end;
+
 function TPasResolver.GetRangeLength(RangeExpr: TPasExpr): MaxPrecInt;
 var
   Range: TResEvalValue;