Browse Source

+ mode macpas: support for implicit external

olle 21 years ago
parent
commit
4a092ae765
2 changed files with 28 additions and 8 deletions
  1. 13 1
      compiler/pdecsub.pas
  2. 15 7
      compiler/symsym.pas

+ 13 - 1
compiler/pdecsub.pas

@@ -50,6 +50,8 @@ interface
 
     function  proc_add_definition(var pd:tprocdef):boolean;
 
+    procedure import_implict_external(pd:tabstractprocdef);
+
     procedure handle_calling_convention(pd:tabstractprocdef);
 
     procedure parse_parameter_dec(pd:tabstractprocdef);
@@ -1258,6 +1260,13 @@ begin
     end;
 end;
 
+procedure import_implict_external(pd:tabstractprocdef);
+
+begin
+  tprocdef(pd).forwarddef:=false;
+  tprocdef(pd).setmangledname(tprocdef(pd).procsym.realname);
+end;
+
 type
    pd_handler=procedure(pd:tabstractprocdef);
    proc_dir_rec=record
@@ -2238,7 +2247,10 @@ const
 end.
 {
   $Log$
-  Revision 1.175  2004-05-11 06:59:35  michael
+  Revision 1.176  2004-05-11 18:29:41  olle
+    + mode macpas: support for implicit external
+
+  Revision 1.175  2004/05/11 06:59:35  michael
   + Patch from peter to hide system unit as symbol
 
   Revision 1.174  2004/05/09 12:49:14  peter

+ 15 - 7
compiler/symsym.pas

@@ -325,7 +325,8 @@ implementation
        fmodule,
        { codegen }
        paramgr,cresstr,
-       procinfo
+       procinfo,
+       pdecsub
        ;
 
 {****************************************************************************
@@ -629,12 +630,16 @@ implementation
          p:=pdlistfirst;
          while assigned(p) do
            begin
-              if p^.own and
-                 (p^.def.forwarddef) then
+              if p^.own and (p^.def.forwarddef) then
                 begin
-                   MessagePos1(p^.def.fileinfo,sym_e_forward_not_resolved,p^.def.fullprocname(false));
-                   { Turn futher error messages off }
-                   p^.def.forwarddef:=false;
+                   if (m_mac in aktmodeswitches) and (p^.def.interfacedef) then
+                     import_implict_external(p^.def)
+                   else
+                     begin
+                       MessagePos1(p^.def.fileinfo,sym_e_forward_not_resolved,p^.def.fullprocname(false));
+                       { Turn further error messages off }
+                       p^.def.forwarddef:=false;
+                     end
                 end;
               p:=p^.next;
            end;
@@ -2203,7 +2208,10 @@ implementation
 end.
 {
   $Log$
-  Revision 1.169  2004-03-29 19:19:35  florian
+  Revision 1.170  2004-05-11 18:29:41  olle
+    + mode macpas: support for implicit external
+
+  Revision 1.169  2004/03/29 19:19:35  florian
     + arm floating point register saving implemented
     * hopefully stabs generation for MacOSX fixed
     + some defines for arm added