Browse Source

* fixed keeping track of the number of abstract methods in external classes

git-svn-id: branches/jvmbackend@18676 -
Jonas Maebe 14 years ago
parent
commit
586d4f4108
1 changed files with 5 additions and 1 deletions
  1. 5 1
      compiler/nobj.pas

+ 5 - 1
compiler/nobj.pas

@@ -319,7 +319,7 @@ implementation
                           else
                           else
                             MessagePos1(pd.fileinfo,parser_e_must_use_reintroduce_objc,FullTypeName(tdef(vmtpd.owner.defowner),nil))
                             MessagePos1(pd.fileinfo,parser_e_must_use_reintroduce_objc,FullTypeName(tdef(vmtpd.owner.defowner),nil))
                         { there may be a lot of these in auto-translated
                         { there may be a lot of these in auto-translated
-                          heaeders, so only calculate the fulltypename if
+                          headers, so only calculate the fulltypename if
                           the hint will be shown  }
                           the hint will be shown  }
                         else if CheckVerbosity(V_Hint) then
                         else if CheckVerbosity(V_Hint) then
                           if not is_objccategory(_class) then
                           if not is_objccategory(_class) then
@@ -335,6 +335,10 @@ implementation
                         if is_java_class_or_interface(_class) and
                         if is_java_class_or_interface(_class) and
                            (pd.procsym.realname<>vmtpd.procsym.realname) then
                            (pd.procsym.realname<>vmtpd.procsym.realname) then
                           pd.procsym.realname:=vmtpd.procsym.realname;
                           pd.procsym.realname:=vmtpd.procsym.realname;
+                        { in case we are overriding an abstract method,
+                          decrease the number of abstract methods in this class }
+                        if (po_abstractmethod in vmtpd.procoptions) then
+                          dec(tobjectdef(pd.owner.defowner).abstractcnt);
                         result:=true;
                         result:=true;
                         exit;
                         exit;
                       end;
                       end;