Browse Source

Adds EntryType and EntryOffset data to TInterfaceEntry blocks. used for _IMPLEMENTS.

git-svn-id: trunk@4359 -
chrivers 19 years ago
parent
commit
0fe365f069
1 changed files with 8 additions and 4 deletions
  1. 8 4
      compiler/nobj.pas

+ 8 - 4
compiler/nobj.pas

@@ -932,6 +932,10 @@ implementation
         else
         else
           rawdata.concat(Tai_string.Create(curintf.iidstr^));
           rawdata.concat(Tai_string.Create(curintf.iidstr^));
         current_asmdata.asmlists[al_globals].concat(Tai_const.Create_sym(tmplabel));
         current_asmdata.asmlists[al_globals].concat(Tai_const.Create_sym(tmplabel));
+        { EntryType }
+        current_asmdata.asmlists[al_globals].concat(Tai_const.Create_aint(integer(curintf.iitype)));
+        { EntryOffset }
+        current_asmdata.asmlists[al_globals].concat(Tai_const.Create_aint(integer(curintf.iioffset)));
       end;
       end;
 
 
 
 
@@ -1139,7 +1143,8 @@ implementation
                 if assigned(implprocdef) then
                 if assigned(implprocdef) then
                   _class.implementedinterfaces.addimplproc(intfindex,implprocdef)
                   _class.implementedinterfaces.addimplproc(intfindex,implprocdef)
                 else
                 else
-                  Message1(sym_e_no_matching_implementation_found,tprocdef(def).fullprocname(false));
+                  if _class.implementedinterfaces.interfaces(intfindex).iitype = etStandard then 
+                    Message1(sym_e_no_matching_implementation_found,tprocdef(def).fullprocname(false));
               end;
               end;
             def:=tdef(def.indexnext);
             def:=tdef(def.indexnext);
           end;
           end;
@@ -1209,11 +1214,10 @@ implementation
          vmtentry : pvmtentry;
          vmtentry : pvmtentry;
          procdefcoll : pprocdefcoll;
          procdefcoll : pprocdefcoll;
          i : longint;
          i : longint;
-         procname
+         procname : string;
 {$ifdef vtentry}
 {$ifdef vtentry}
-         , hs
+         hs : string;
 {$endif vtentry}
 {$endif vtentry}
-                     : string;
       begin
       begin
          { walk trough all numbers for virtual methods and search }
          { walk trough all numbers for virtual methods and search }
          { the method                                             }
          { the method                                             }