Browse Source

* 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 years ago
parent
commit
9a9bf4be91
2 changed files with 15 additions and 2 deletions
  1. 7 1
      compiler/fppu.pas
  2. 8 1
      compiler/symtable.pas

+ 7 - 1
compiler/fppu.pas

@@ -836,7 +836,13 @@ var
                 end;
                 end;
              end
              end
            else
            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
            if is_main then
              begin
              begin
                mainsource:=hs;
                mainsource:=hs;

+ 8 - 1
compiler/symtable.pas

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