Browse Source

* don't check po_varargs for delphi

peter 22 years ago
parent
commit
5207aaf391
1 changed files with 12 additions and 6 deletions
  1. 12 6
      compiler/pdecsub.pas

+ 12 - 6
compiler/pdecsub.pas

@@ -122,7 +122,8 @@ implementation
                begin
                begin
                  if is_open_string(currpara.paratype.def) then
                  if is_open_string(currpara.paratype.def) then
                     Message(parser_w_cdecl_no_openstring);
                     Message(parser_w_cdecl_no_openstring);
-                 Message(parser_w_cdecl_has_no_high);
+                 if not (po_external in pd.procoptions) then
+                   Message(parser_w_cdecl_has_no_high);
                end;
                end;
             end;
             end;
            currpara:=tparaitem(currpara.previous);
            currpara:=tparaitem(currpara.previous);
@@ -1152,7 +1153,7 @@ const
       pooption : [];
       pooption : [];
       mutexclpocall : [];
       mutexclpocall : [];
       mutexclpotype : [potype_constructor,potype_destructor];
       mutexclpotype : [potype_constructor,potype_destructor];
-      mutexclpo     : [po_assembler,po_external,po_virtualmethod]
+      mutexclpo     : [po_assembler,po_external]
     ),(
     ),(
       idtok:_DYNAMIC;
       idtok:_DYNAMIC;
       pd_flags : pd_interface+pd_object+pd_notobjintf;
       pd_flags : pd_interface+pd_object+pd_notobjintf;
@@ -1959,9 +1960,11 @@ const
 
 
                    { Check procedure options, Delphi requires that class is
                    { Check procedure options, Delphi requires that class is
                      repeated in the implementation for class methods }
                      repeated in the implementation for class methods }
-                   po_comp:=po_compatibility_options-[po_iocheck,po_staticmethod,po_exports];
-                   if (m_delphi in aktmodeswitches) then
-                     include(po_comp,po_classmethod);
+                   po_comp:=[];
+                   if (m_fpc in aktmodeswitches) then
+                     po_comp:=[po_varargs,po_methodpointer,po_containsself,po_interrupt]
+                   else if (m_delphi in aktmodeswitches) then
+                     po_comp:=[po_classmethod,po_methodpointer,po_containsself];
                    if ((po_comp * hd.procoptions)<>(po_comp * aprocdef.procoptions)) then
                    if ((po_comp * hd.procoptions)<>(po_comp * aprocdef.procoptions)) then
                      begin
                      begin
                        MessagePos1(aprocdef.fileinfo,parser_e_header_dont_match_forward,
                        MessagePos1(aprocdef.fileinfo,parser_e_header_dont_match_forward,
@@ -2126,7 +2129,10 @@ const
 end.
 end.
 {
 {
   $Log$
   $Log$
-  Revision 1.112  2003-04-22 13:47:08  peter
+  Revision 1.113  2003-04-23 10:12:51  peter
+    * don't check po_varargs for delphi
+
+  Revision 1.112  2003/04/22 13:47:08  peter
     * fixed C style array of const
     * fixed C style array of const
     * fixed C array passing
     * fixed C array passing
     * fixed left to right with high parameters
     * fixed left to right with high parameters