Преглед изворни кода

* inherited forced calling convention
* show hints when forward doesn't match

peter пре 22 година
родитељ
комит
d582ff8fca
1 измењених фајлова са 20 додато и 4 уклоњено
  1. 20 4
      compiler/nobj.pas

+ 20 - 4
compiler/nobj.pas

@@ -148,12 +148,12 @@ implementation
        strings,
 {$endif}
        globals,verbose,
-       symtable,symconst,symtype,symsym,defutil,defcmp,paramgr,
+       symtable,symconst,symtype,symsym,defcmp,paramgr,
 {$ifdef GDB}
        gdb,
 {$endif GDB}
        aasmcpu,
-       cpubase,procinfo,cgbase,
+       cpubase,cgbase,
        cgobj,rgobj
        ;
 
@@ -674,6 +674,15 @@ implementation
                                            if (po_overload in procdefcoll^.data.procoptions) then
                                             include(pd.procoptions,po_overload);
 
+                                           { inherite calling convention when it was force and the
+                                             current definition has none force }
+                                           if (po_hascallingconvention in procdefcoll^.data.procoptions) and
+                                              not(po_hascallingconvention in pd.procoptions) then
+                                             begin
+                                               pd.proccalloption:=procdefcoll^.data.proccalloption;
+                                               include(pd.procoptions,po_hascallingconvention);
+                                             end;
+
                                            { the flags have to match except abstract and override }
                                            { only if both are virtual !!  }
                                            if (procdefcoll^.data.proccalloption<>pd.proccalloption) or
@@ -681,7 +690,10 @@ implementation
                                                ((procdefcoll^.data.procoptions-
                                                    [po_abstractmethod,po_overridingmethod,po_assembler,po_overload,po_public])<>
                                                 (pd.procoptions-[po_abstractmethod,po_overridingmethod,po_assembler,po_overload,po_public])) then
-                                              MessagePos1(pd.fileinfo,parser_e_header_dont_match_forward,pd.fullprocname(false));
+                                              begin
+                                                MessagePos1(pd.fileinfo,parser_e_header_dont_match_forward,pd.fullprocname(false));
+                                                tprocsym(procdefcoll^.data.procsym).write_parameter_lists(pd);
+                                              end;
 
                                            { error, if the return types aren't equal }
                                            if not(equal_defs(procdefcoll^.data.rettype.def,pd.rettype.def)) and
@@ -1344,7 +1356,11 @@ initialization
 end.
 {
   $Log$
-  Revision 1.49  2003-10-01 20:34:49  peter
+  Revision 1.50  2003-10-07 20:44:22  peter
+    * inherited forced calling convention
+    * show hints when forward doesn't match
+
+  Revision 1.49  2003/10/01 20:34:49  peter
     * procinfo unit contains tprocinfo
     * cginfo renamed to cgbase
     * moved cgmessage to verbose