Ver código fonte

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

git-svn-id: trunk@49272 -
(cherry picked from commit 06709809813724d4e01de733cfcf7d12d8a1ac3b)
Mattias Gaertner 4 anos atrás
pai
commit
da996e0a0b
1 arquivos alterados com 9 adições e 4 exclusões
  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;
 var
   TypeEl: TPasType;
+  C: TClass;
 begin
   Result:=false;
   if ResolvedEl.BaseType<>btContext then exit;
@@ -25558,10 +25559,14 @@ begin
   else if TypeEl.ClassType=TPasRecordType then
   else
     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;
 
 function TPasResolver.GetResolver(El: TPasElement): TPasResolver;