Browse Source

* Patch from Mattias Gaertner:
- function type

git-svn-id: trunk@35682 -

michael 8 years ago
parent
commit
6ab7bc9def

+ 2 - 2
packages/fcl-passrc/src/pasuseanalyzer.pas

@@ -1045,7 +1045,7 @@ begin
       if not MarkElementAsUsed(El) then exit;
       UseType(TPasSetType(El).EnumType,Mode);
       end
-    else if C=TPasProcedureType then
+    else if C.InheritsFrom(TPasProcedureType) then
       UseProcedureType(TPasProcedureType(El),true)
     else
       RaiseNotSupported(20170306170315,El);
@@ -1061,7 +1061,7 @@ begin
   MarkElementAsUsed(El);
   if (Mode=paumAllPublic) and not ElementVisited(El,Mode) then
     for i:=0 to El.Members.Count-1 do
-      UseVariable(TObject(El.Members) as TPasVariable,rraNone,true);
+      UseVariable(TObject(El.Members[i]) as TPasVariable,rraNone,true);
 end;
 
 procedure TPasAnalyzer.UseClassType(El: TPasClassType; Mode: TPAUseMode);

+ 4 - 1
packages/fcl-passrc/tests/tcuseanalyzer.pas

@@ -176,7 +176,7 @@ begin
   aMarker:=FirstSrcMarker;
   while aMarker<>nil do
     begin
-    writeln('TCustomTestUseAnalyzer.CheckUsedMarkers ',aMarker^.Identifier,' ',aMarker^.StartCol,' ',aMarker^.EndCol);
+    writeln('TCustomTestUseAnalyzer.CheckUsedMarkers ',aMarker^.Identifier,' Line=',aMarker^.Row,' StartCol=',aMarker^.StartCol,' EndCol=',aMarker^.EndCol);
     p:=RPos('_',aMarker^.Identifier);
     if p>1 then
       begin
@@ -603,10 +603,13 @@ begin
   Add('procedure {#DoIt_used}DoIt;');
   Add('type');
   Add('  {#TProc_used}TProc = procedure;');
+  Add('  {#TFunc_used}TFunc = function(): longint;');
   Add('var');
   Add('  {#p_used}p: TProc;');
+  Add('  {#f_used}f: TFunc;');
   Add('begin');
   Add('  p:=nil;');
+  Add('  f:=nil;');
   Add('end;');
   Add('begin');
   Add('  DoIt;');