peter 26 years ago
parent
commit
f2818d7908
2 changed files with 35 additions and 7 deletions
  1. 10 3
      compiler/hcgdata.pas
  2. 25 4
      compiler/psub.pas

+ 10 - 3
compiler/hcgdata.pas

@@ -129,9 +129,9 @@ implementation
          else
          else
            begin
            begin
               if p^.p^.messageinf.i<at^.p^.messageinf.i then
               if p^.p^.messageinf.i<at^.p^.messageinf.i then
-                insertstr(p,at^.l)
+                insertint(p,at^.l)
               else if p^.p^.messageinf.i>at^.p^.messageinf.i then
               else if p^.p^.messageinf.i>at^.p^.messageinf.i then
-                insertstr(p,at^.r)
+                insertint(p,at^.r)
               else
               else
                 Message1(parser_e_duplicate_message_label,tostr(p^.p^.messageinf.i));
                 Message1(parser_e_duplicate_message_label,tostr(p^.p^.messageinf.i));
            end;
            end;
@@ -558,12 +558,19 @@ implementation
 end.
 end.
 {
 {
   $Log$
   $Log$
-  Revision 1.12  1999-07-08 10:40:37  peter
+  Revision 1.13  1999-07-11 20:10:23  peter
+    * merged
+
+  Revision 1.12  1999/07/08 10:40:37  peter
     * merged
     * merged
 
 
   Revision 1.11  1999/06/15 13:27:06  pierre
   Revision 1.11  1999/06/15 13:27:06  pierre
    * bug0260 fixed
    * bug0260 fixed
 
 
+  Revision 1.10.2.2  1999/07/11 20:07:38  peter
+    * message crash fixed
+    * no error if self is used with non-string message
+
   Revision 1.10.2.1  1999/07/08 10:38:32  peter
   Revision 1.10.2.1  1999/07/08 10:38:32  peter
     * fixed insertint
     * fixed insertint
 
 

+ 25 - 4
compiler/psub.pas

@@ -832,7 +832,17 @@ begin
          current_module^.uses_imports:=true;
          current_module^.uses_imports:=true;
          importlib^.preparelib(current_module^.modulename^);
          importlib^.preparelib(current_module^.modulename^);
        end;
        end;
-      importlib^.importprocedure(aktprocsym^.mangledname,import_dll,import_nr,import_name)
+      if not(m_repeat_forward in aktmodeswitches) then
+        begin
+          { we can only have one overloaded here ! }
+          if assigned(aktprocsym^.definition^.nextoverloaded) then
+            importlib^.importprocedure(aktprocsym^.definition^.nextoverloaded^.mangledname,
+              import_dll,import_nr,import_name)
+          else
+            importlib^.importprocedure(aktprocsym^.mangledname,import_dll,import_nr,import_name);
+        end
+      else
+        importlib^.importprocedure(aktprocsym^.mangledname,import_dll,import_nr,import_name);
     end
     end
   else
   else
     begin
     begin
@@ -1226,7 +1236,7 @@ begin
                          { this is also wrong (PM)
                          { this is also wrong (PM)
                          aktprocsym^.definition^.setmangledname(hd^.mangledname);}
                          aktprocsym^.definition^.setmangledname(hd^.mangledname);}
                        end
                        end
-                     else
+                      else
                        begin
                        begin
                        { If mangled names are equal, therefore    }
                        { If mangled names are equal, therefore    }
                        { they have the same number of parameters  }
                        { they have the same number of parameters  }
@@ -1644,7 +1654,8 @@ begin
   dec(lexlevel);
   dec(lexlevel);
   dispose(anames,done);
   dispose(anames,done);
   if ((aktprocsym^.definition^.options and pocontainsself)<>0) and
   if ((aktprocsym^.definition^.options and pocontainsself)<>0) and
-    ((aktprocsym^.definition^.options and pomsgstr)=0) then
+    ((aktprocsym^.definition^.options and pomsgstr)=0) and
+    ((aktprocsym^.definition^.options and pomsgint)=0) then
     message(parser_e_self_in_non_message_handler);
     message(parser_e_self_in_non_message_handler);
 end;
 end;
 
 
@@ -1825,12 +1836,22 @@ end.
 
 
 {
 {
   $Log$
   $Log$
-  Revision 1.3  1999-07-02 13:02:24  peter
+  Revision 1.4  1999-07-11 20:10:24  peter
+    * merged
+
+  Revision 1.3  1999/07/02 13:02:24  peter
     * merged
     * merged
 
 
   Revision 1.2  1999/06/17 13:19:56  pierre
   Revision 1.2  1999/06/17 13:19:56  pierre
    * merged from 0_99_12 branch
    * merged from 0_99_12 branch
 
 
+  Revision 1.1.2.4  1999/07/11 20:07:39  peter
+    * message crash fixed
+    * no error if self is used with non-string message
+
+  Revision 1.1.2.3  1999/07/11 20:04:05  pierre
+   * fix for problem with external without parameters in Delphi mode
+
   Revision 1.1.2.2  1999/07/02 12:59:52  peter
   Revision 1.1.2.2  1999/07/02 12:59:52  peter
     * fixed parsing of message directive
     * fixed parsing of message directive