Browse Source

fcl-passrc: fixed (intf as tobject).ClassType, issue #38805

git-svn-id: trunk@49272 -
(cherry picked from commit 06709809813724d4e01de733cfcf7d12d8a1ac3b)
Mattias Gaertner 4 years ago
parent
commit
da996e0a0b
1 changed files with 9 additions and 4 deletions
  1. 9 4
      packages/fcl-passrc/src/pasresolver.pp

+ 9 - 4
packages/fcl-passrc/src/pasresolver.pp

@@ -25546,6 +25546,7 @@ function TPasResolver.ResolvedElIsClassOrRecordInstance(
   const ResolvedEl: TPasResolverResult): boolean;
   const ResolvedEl: TPasResolverResult): boolean;
 var
 var
   TypeEl: TPasType;
   TypeEl: TPasType;
+  C: TClass;
 begin
 begin
   Result:=false;
   Result:=false;
   if ResolvedEl.BaseType<>btContext then exit;
   if ResolvedEl.BaseType<>btContext then exit;
@@ -25558,10 +25559,14 @@ begin
   else if TypeEl.ClassType=TPasRecordType then
   else if TypeEl.ClassType=TPasRecordType then
   else
   else
     exit;
     exit;
-  if (ResolvedEl.IdentEl is TPasVariable)
-      or (ResolvedEl.IdentEl.ClassType=TPasArgument)
-      or (ResolvedEl.IdentEl.ClassType=TPasResultElement) then
-    exit(true);
+  if ResolvedEl.IdentEl<>nil then
+    begin
+    C:=ResolvedEl.IdentEl.ClassType;
+    if C.InheritsFrom(TPasVariable)
+        or (C=TPasArgument)
+        or (C=TPasResultElement) then
+      exit(true);
+    end;
 end;
 end;
 
 
 function TPasResolver.GetResolver(El: TPasElement): TPasResolver;
 function TPasResolver.GetResolver(El: TPasElement): TPasResolver;