Ver Fonte

* pas2jni: Again fixed exclusion of descendant classes.

git-svn-id: trunk@29161 -
yury há 10 anos atrás
pai
commit
0809bde8f2
1 ficheiros alterados com 11 adições e 3 exclusões
  1. 11 3
      utils/pas2jni/writer.pas

+ 11 - 3
utils/pas2jni/writer.pas

@@ -1256,14 +1256,22 @@ procedure TWriter.WriteUnit(u: TUnitDef);
     i: integer;
     i: integer;
     d: TDef;
     d: TDef;
     s: string;
     s: string;
+    excl: boolean;
   begin
   begin
     for i:=0 to u.Count - 1 do begin
     for i:=0 to u.Count - 1 do begin
       d:=u[i];
       d:=u[i];
       if d.DefType = dtClass then begin
       if d.DefType = dtClass then begin
         s:=u.Name + '.' + d.Name;
         s:=u.Name + '.' + d.Name;
-        if (TClassDef(d).AncestorClass = AAncestorClass) or
-           ( (AAncestorClass = nil) and (DoCheckItem(u.Name + '.' + d.Name) = crExclude) )
-        then begin
+        if AAncestorClass = nil then begin
+          excl:=DoCheckItem(s) = crExclude;
+          if not excl then
+            with TClassDef(d).AncestorClass do
+              excl:=DoCheckItem(Parent.Name + '.' + Name) = crExclude;
+        end
+        else
+          excl:=TClassDef(d).AncestorClass = AAncestorClass;
+
+        if excl then begin
           d.SetNotUsed;
           d.SetNotUsed;
           ExcludeList.Add(s);
           ExcludeList.Add(s);
           _ExcludeClasses(TClassDef(d));
           _ExcludeClasses(TClassDef(d));