Răsfoiți Sursa

* write better hint message about the first occurence of an identifuer in case of a duplicate identifier error

git-svn-id: trunk@29400 -
florian 10 ani în urmă
părinte
comite
9a9bf4be91
2 a modificat fișierele cu 15 adăugiri și 2 ștergeri
  1. 7 1
      compiler/fppu.pas
  2. 8 1
      compiler/symtable.pas

+ 7 - 1
compiler/fppu.pas

@@ -836,7 +836,13 @@ var
                 end;
              end
            else
-             temp:=' not available';
+             begin
+               { still register the source module for proper error messages
+                 since source_avail for the module is still false, this should not hurt }
+               sourcefiles.register_file(tdosinputfile.create(hs));
+
+               temp:=' not available';
+             end;
            if is_main then
              begin
                mainsource:=hs;

+ 8 - 1
compiler/symtable.pas

@@ -2043,6 +2043,7 @@ implementation
     procedure duplicatesym(var hashedid:THashedIDString;dupsym,origsym:TSymEntry);
       var
         st : TSymtable;
+        filename : TIDString;
       begin
         Message1(sym_e_duplicate_id,tsym(origsym).realname);
         { Write hint where the original symbol was found }
@@ -2054,7 +2055,13 @@ implementation
                st.iscurrentunit then
               Message2(sym_h_duplicate_id_where,current_module.sourcefiles.get_file_name(fileindex),tostr(line))
             else if assigned(st.name) then
-              Message2(sym_h_duplicate_id_where,'unit '+st.name^,tostr(line));
+              begin
+                filename:=find_module_from_symtable(st).sourcefiles.get_file_name(fileindex);
+                if filename<>'' then
+                  Message2(sym_h_duplicate_id_where,'unit '+st.name^+': '+filename,tostr(line))
+                else
+                  Message2(sym_h_duplicate_id_where,'unit '+st.name^,tostr(line))
+              end;
           end;
         { Rename duplicate sym to an unreachable name, but it can be
           inserted in the symtable without errors }