浏览代码

* Fix GetModule, cause of wrong class tree

git-svn-id: trunk@31235 -
michael 10 年之前
父节点
当前提交
98e70ae3e6
共有 1 个文件被更改,包括 9 次插入13 次删除
  1. 9 13
      packages/fcl-passrc/src/pastree.pp

+ 9 - 13
packages/fcl-passrc/src/pastree.pp

@@ -1743,23 +1743,19 @@ begin
 end;
 
 function TPasElement.GetModule: TPasModule;
+
+Var
+  p : TPaselement;
 begin
   if self is  TPasPackage then
     Result := nil
   else
-  begin
-    if self is TPasModule then
-      begin
-        Result := TPasModule(Self);
-        while Assigned(Result) and not (Result is TPasModule) do
-        Result := TPasModule(Result.Parent);
-      end
-    else
-     begin
-       // typical case that this happens: symbol was loaded from .XCT
-       result:=nil;
-     end;
-  end;
+    begin
+    P:=Self;
+    While (P<>Nil) and Not (P is TPasModule) do
+      P:=P.Parent;
+    Result:=TPasModule(P);
+    end;
 end;
 
 function TPasElement.GetDeclaration(full: Boolean): string;