Selaa lähdekoodia

* tprocdef.fullprocname added for better casesensitve writing of
procedures

peter 25 vuotta sitten
vanhempi
commit
5115083270
7 muutettua tiedostoa jossa 73 lisäystä ja 72 poistoa
  1. 13 8
      compiler/hcgdata.pas
  2. 11 7
      compiler/pdecsub.pas
  3. 7 1
      compiler/pmodules.pas
  4. 8 4
      compiler/psub.pas
  5. 20 34
      compiler/symdef.pas
  6. 8 16
      compiler/symsym.pas
  7. 6 2
      compiler/symtable.pas

+ 13 - 8
compiler/hcgdata.pas

@@ -555,16 +555,17 @@ implementation
                                                  { warn only if it is the first time,
                                                    we hide the method }
                                                  if _c=hp^._class then
-                                                   Message1(parser_w_should_use_override,_c^.objname^+'.'+_name);
+                                                   Message1(parser_w_should_use_override,hp^.fullprocname);
                                               end
                                             else
                                               if _c=hp^._class then
                                                 begin
                                                    if (po_virtualmethod in procdefcoll^.data^.procoptions) then
-                                                     Message1(parser_w_overloaded_are_not_both_virtual,_c^.objname^+'.'+_name)
+                                                     Message1(parser_w_overloaded_are_not_both_virtual,
+                                                              hp^.fullprocname)
                                                    else
                                                      Message1(parser_w_overloaded_are_not_both_non_virtual,
-                                                       _c^.objname^+'.'+_name);
+                                                              hp^.fullprocname);
                                                 end;
                                             { was newentry; exit; (FK) }
                                             newdefentry;
@@ -579,7 +580,7 @@ implementation
                                           ((procdefcoll^.data^.procoptions-
                                               [po_abstractmethod,po_overridingmethod,po_assembler])<>
                                            (hp^.procoptions-[po_abstractmethod,po_overridingmethod,po_assembler])) then
-                                         Message1(parser_e_header_dont_match_forward,_c^.objname^+'.'+_name);
+                                         Message1(parser_e_header_dont_match_forward,hp^.fullprocname);
 
                                        { check, if the overridden directive is set }
                                        { (povirtualmethod is set! }
@@ -591,7 +592,7 @@ implementation
                                             { warn only if it is the first time,
                                               we hide the method }
                                             if _c=hp^._class then
-                                              Message1(parser_w_should_use_override,_c^.objname^+'.'+_name);
+                                              Message1(parser_w_should_use_override,hp^.fullprocname);
                                             { was newentry; (FK) }
                                             newdefentry;
                                             exit;
@@ -605,7 +606,7 @@ implementation
                                            (pobjectdef(hp^.rettype.def)^.is_class) and
                                            (pobjectdef(hp^.rettype.def)^.is_related(
                                                pobjectdef(procdefcoll^.data^.rettype.def)))) then
-                                         Message1(parser_e_overloaded_methodes_not_same_ret,_c^.objname^+'.'+_name);
+                                         Message1(parser_e_overloaded_methodes_not_same_ret,hp^.fullprocname);
 
 
                                        { now set the number }
@@ -635,7 +636,7 @@ implementation
                                   { check, if a method should be overridden }
                                   if (po_overridingmethod in hp^.procoptions) then
                                    MessagePos1(hp^.fileinfo,parser_e_nothing_to_be_overridden,
-                                     _c^.objname^+'.'+_name+hp^.demangled_paras);
+                                     hp^.fullprocname);
                                end;
                           handlenextdef:
                              hp:=hp^.nextoverloaded;
@@ -1039,7 +1040,11 @@ implementation
 end.
 {
   $Log$
-  Revision 1.8  2000-10-31 22:02:47  peter
+  Revision 1.9  2000-11-01 23:04:37  peter
+    * tprocdef.fullprocname added for better casesensitve writing of
+      procedures
+
+  Revision 1.8  2000/10/31 22:02:47  peter
     * symtable splitted, no real code changes
 
   Revision 1.7  2000/10/14 10:14:47  peter

+ 11 - 7
compiler/pdecsub.pas

@@ -452,7 +452,7 @@ begin
      if aktprocsym^.typ<>procsym then
       begin
         if (m_fpc in aktmodeswitches) then
-         Message1(parser_e_overloaded_no_procedure,aktprocsym^.name)
+         Message1(parser_e_overloaded_no_procedure,aktprocsym^.realname)
         else
          DuplicateSym(aktprocsym);
         { try to recover by creating a new aktprocsym }
@@ -1019,7 +1019,7 @@ begin
        begin
          { external shouldn't override the cdecl/system name }
          if not (pocall_clearstack in aktprocsym^.definition^.proccalloptions) then
-           aktprocsym^.definition^.setmangledname(aktprocsym^.name);
+           aktprocsym^.definition^.setmangledname(aktprocsym^.realname);
        end;
     end;
 end;
@@ -1580,7 +1580,7 @@ begin
                    (aktprocsym^.definition^.maxparacount>0)) then
                  begin
                     MessagePos1(aktprocsym^.definition^.fileinfo,parser_e_header_dont_match_forward,
-                                aktprocsym^.declarationstr(aktprocsym^.definition));
+                                aktprocsym^.definition^.fullprocname);
                     exit;
                  end;
                if hd^.forwarddef then
@@ -1593,7 +1593,7 @@ begin
                       (m_repeat_forward in aktmodeswitches)) then
                      begin
                        MessagePos1(aktprocsym^.definition^.fileinfo,parser_e_header_dont_match_forward,
-                                   aktprocsym^.declarationstr(aktprocsym^.definition));
+                                   aktprocsym^.definition^.fullprocname);
                        exit;
                      end;
                    { Check calling convention, no check for internconst,internproc which
@@ -1649,7 +1649,7 @@ begin
                            begin
                              MessagePos1(aktprocsym^.definition^.fileinfo,
                                          parser_e_function_already_declared_public_forward,
-                                         aktprocsym^.declarationstr(aktprocsym^.definition));
+                                         aktprocsym^.definition^.fullprocname);
                              check_identical_proc:=true;
                            { Remove other forward from the list to reduce errors }
                              pd^.nextoverloaded:=pd^.nextoverloaded^.nextoverloaded;
@@ -1736,7 +1736,7 @@ begin
                     not((po_overload in aktprocsym^.definition^.procoptions) and
                         ((po_overload in hd^.procoptions))) then
                   begin
-                    MessagePos1(aktprocsym^.definition^.fileinfo,parser_e_no_overload_for_all_procs,aktprocsym^.name);
+                    MessagePos1(aktprocsym^.definition^.fileinfo,parser_e_no_overload_for_all_procs,aktprocsym^.realname);
                     break;
                   end;
                end
@@ -1815,7 +1815,11 @@ end;
 end.
 {
   $Log$
-  Revision 1.4  2000-10-31 22:02:49  peter
+  Revision 1.5  2000-11-01 23:04:37  peter
+    * tprocdef.fullprocname added for better casesensitve writing of
+      procedures
+
+  Revision 1.4  2000/10/31 22:02:49  peter
     * symtable splitted, no real code changes
 
   Revision 1.3  2000/10/21 18:16:11  florian

+ 7 - 1
compiler/pmodules.pas

@@ -617,6 +617,8 @@ implementation
 {$endif SHORT_ON_FILE_HANDLES}
          current_ppu:=old_current_ppu;
          current_module:=old_current_module;
+         { we are back }
+         SetCompileModule(current_module);
          loadunit:=hp;
       end;
 
@@ -1695,7 +1697,11 @@ implementation
 end.
 {
   $Log$
-  Revision 1.17  2000-10-31 22:02:50  peter
+  Revision 1.18  2000-11-01 23:04:37  peter
+    * tprocdef.fullprocname added for better casesensitve writing of
+      procedures
+
+  Revision 1.17  2000/10/31 22:02:50  peter
     * symtable splitted, no real code changes
 
   Revision 1.16  2000/10/21 14:36:26  peter

+ 8 - 4
compiler/psub.pas

@@ -628,7 +628,7 @@ implementation
              if assigned(procinfo^._class) and (not assigned(oldprocinfo^._class)) then
               begin
                 Message1(parser_e_header_dont_match_any_member,
-                  aktprocsym^.declarationstr(aktprocsym^.definition));
+                         aktprocsym^.definition^.fullprocname);
                 aktprocsym^.write_parameter_lists(aktprocsym^.definition);
               end
              else
@@ -642,7 +642,7 @@ implementation
                    not(assigned(aktprocsym^.definition^.nextoverloaded^.nextoverloaded)) then
                  begin
                    Message1(parser_e_header_dont_match_forward,
-                     aktprocsym^.declarationstr(aktprocsym^.definition));
+                            aktprocsym^.definition^.fullprocname);
                    aktprocsym^.write_parameter_lists(aktprocsym^.definition);
                  end
                 else
@@ -690,7 +690,7 @@ implementation
          if (pdflags and pd_body)<>0 then
            begin
              Message1(parser_p_procedure_start,
-               aktprocsym^.declarationstr(aktprocsym^.definition));
+                      aktprocsym^.definition^.fullprocname);
              names^.insert(aktprocsym^.definition^.mangledname);
             { set _FAIL as keyword if constructor }
             if (aktprocsym^.definition^.proctypeoption=potype_constructor) then
@@ -832,7 +832,11 @@ implementation
 end.
 {
   $Log$
-  Revision 1.20  2000-10-31 22:02:50  peter
+  Revision 1.21  2000-11-01 23:04:38  peter
+    * tprocdef.fullprocname added for better casesensitve writing of
+      procedures
+
+  Revision 1.20  2000/10/31 22:02:50  peter
     * symtable splitted, no real code changes
 
   Revision 1.19  2000/10/24 22:21:25  peter

+ 20 - 34
compiler/symdef.pas

@@ -473,9 +473,7 @@ interface
           procedure setmangledname(const s : string);
           procedure load_references;
           function  write_references : boolean;
-{$ifdef dummy}
-          function  procname: string;
-{$endif dummy}
+          function  fullprocname:string;
           function  cplusplusmangledname : string;
           { debug }
 {$ifdef GDB}
@@ -3170,7 +3168,7 @@ implementation
         while assigned(hp) do
          begin
            if assigned(hp^.paratype.def^.typesym) then
-             s:=s+hp^.paratype.def^.typesym^.name
+             s:=s+hp^.paratype.def^.typesym^.realname
            else if hp^.paratyp=vs_var then
              s:=s+'var'
            else if hp^.paratyp=vs_const then
@@ -3377,6 +3375,19 @@ implementation
          is_used:=false;
       end;
 
+
+    function tprocdef.fullprocname:string;
+      var
+        s : string;
+      begin
+        s:='';
+        if assigned(_class) then
+         s:=_class^.objname^+'.';
+        s:=s+procsym^.realname+demangled_paras;
+        fullprocname:=s;
+      end;
+
+
     function tprocdef.getsymtable(t:tgetsymtable):psymtable;
       begin
         case t of
@@ -3721,35 +3732,6 @@ Const local_symtable_index : longint = $8001;
       end;
 
 
-{$ifdef dummy}
-    function tprocdef.procname: string;
-      var
-        s : string;
-        l : longint;
-      begin
-         s:=mangledname;
-         { delete leading $$'s }
-         l:=pos('$$',s);
-         while l<>0 do
-           begin
-              delete(s,1,l+1);
-              l:=pos('$$',s);
-           end;
-         { delete leading _$'s }
-         l:=pos('_$',s);
-         while l<>0 do
-           begin
-              delete(s,1,l+1);
-              l:=pos('_$',s);
-           end;
-         l:=pos('$',s);
-         if l=0 then
-          procname:=s
-         else
-          procname:=Copy(s,1,l-1);
-      end;
-{$endif}
-
     function tprocdef.cplusplusmangledname : string;
 
       function getcppparaname(p : pdef) : string;
@@ -5099,7 +5081,11 @@ Const local_symtable_index : longint = $8001;
 end.
 {
   $Log$
-  Revision 1.1  2000-10-31 22:02:52  peter
+  Revision 1.2  2000-11-01 23:04:38  peter
+    * tprocdef.fullprocname added for better casesensitve writing of
+      procedures
+
+  Revision 1.1  2000/10/31 22:02:52  peter
     * symtable splitted, no real code changes
 
 }

+ 8 - 16
compiler/symsym.pas

@@ -109,8 +109,7 @@ interface
           constructor load;
           destructor done;virtual;
           function mangledname : string;virtual;
-          function declarationstr(p : pprocdef):string;
-          { writes all declarations }
+          { writes all declarations except the specified one }
           procedure write_parameter_lists(skipdef:pprocdef);
           { tests, if all procedures definitions are defined and not }
           { only forward                                             }
@@ -703,12 +702,6 @@ implementation
       end;
 
 
-    function tprocsym.declarationstr(p : pprocdef):string;
-      begin
-        declarationstr:=realname+p^.demangled_paras;
-      end;
-
-
     procedure tprocsym.write_parameter_lists(skipdef:pprocdef);
       var
          p : pprocdef;
@@ -717,7 +710,7 @@ implementation
          while assigned(p) do
            begin
               if p<>skipdef then
-                MessagePos1(p^.fileinfo,sym_b_param_list,name+p^.demangled_paras);
+                MessagePos1(p^.fileinfo,sym_b_param_list,p^.fullprocname);
               p:=p^.nextoverloaded;
            end;
       end;
@@ -732,10 +725,7 @@ implementation
            begin
               if pd^.forwarddef then
                 begin
-                   if assigned(pd^._class) then
-                     MessagePos1(fileinfo,sym_e_forward_not_resolved,pd^._class^.objname^+'.'+declarationstr(pd))
-                   else
-                     MessagePos1(fileinfo,sym_e_forward_not_resolved,declarationstr(pd));
+                   MessagePos1(fileinfo,sym_e_forward_not_resolved,pd^.fullprocname);
                    { Turn futher error messages off }
                    pd^.forwarddef:=false;
                 end;
@@ -1718,11 +1708,9 @@ implementation
           (sp_static in symoptions) then
          begin
             if (cs_gdb_gsym in aktglobalswitches) then st := 'G'+st else st := 'S'+st;
-{$ifndef Delphi}
             stabstring := strpnew('"'+owner^.name^+'__'+name+':'+st+
                      '",'+
                      tostr(N_LCSYM)+',0,'+tostr(fileinfo.line)+','+mangledname);
-{$endif}
          end
        else if (owner^.symtabletype = globalsymtable) or
           (owner^.symtabletype = unitsymtable) then
@@ -2476,7 +2464,11 @@ implementation
 end.
 {
   $Log$
-  Revision 1.1  2000-10-31 22:02:52  peter
+  Revision 1.2  2000-11-01 23:04:38  peter
+    * tprocdef.fullprocname added for better casesensitve writing of
+      procedures
+
+  Revision 1.1  2000/10/31 22:02:52  peter
     * symtable splitted, no real code changes
 
 }

+ 6 - 2
compiler/symtable.pas

@@ -2353,7 +2353,11 @@ implementation
 end.
 {
   $Log$
-  Revision 1.12  2000-10-31 22:02:52  peter
+  Revision 1.13  2000-11-01 23:04:38  peter
+    * tprocdef.fullprocname added for better casesensitve writing of
+      procedures
+
+  Revision 1.12  2000/10/31 22:02:52  peter
     * symtable splitted, no real code changes
 
-}
+}