r342177 introduced a hint in cases where an #included file is not found. It tries...
authorEric Christopher <echristo@gmail.com>
Thu, 20 Sep 2018 17:21:56 +0000 (17:21 +0000)
committerEric Christopher <echristo@gmail.com>
Thu, 20 Sep 2018 17:21:56 +0000 (17:21 +0000)
include-likely-typo.c:3:10: error: '<empty_file_to_include.h>' file not found, did you mean 'empty_file_to_include.h'?
         ^~~~~~~~~~~~~~~~~~~~~~~~~~~
         "empty_file_to_include.h"
1 error generated.
However, if a hint is not found, the error message will show only the trimmed name we use to look for a hint, so:

will result in:

include-leading-nonalpha-no-suggest.c:3:10: fatal error: 'non_existing_file_to_include.h' file not found
         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1 error generated.
where the name reported after "fatal error:" doesn't match what the user wrote.

Patch by Jorge Gorbe!

Differential Revision: https://reviews.llvm.org/D52280

This change reports the original file name instead of the trimmed one when a suggestion is not found.

llvm-svn: 342667

clang/lib/Lex/PPDirectives.cpp

index ca2b3d5..00397e1 100644 (file)
@@ -1887,8 +1887,8 @@ void Preprocessor::HandleIncludeDirective(SourceLocation HashLoc,
 
       // Check for likely typos due to leading or trailing non-isAlphanumeric
       // characters
+      StringRef OriginalFilename = Filename;
       if (!File) {
-        StringRef OriginalFilename = Filename;
         while (!isAlphanumeric(Filename.front())) {
           Filename = Filename.drop_front();
         }
@@ -1915,7 +1915,7 @@ void Preprocessor::HandleIncludeDirective(SourceLocation HashLoc,
 
       // If the file is still not found, just go with the vanilla diagnostic
       if (!File)
-        Diag(FilenameTok, diag::err_pp_file_not_found) << Filename
+        Diag(FilenameTok, diag::err_pp_file_not_found) << OriginalFilename
                                                        << FilenameRange;
     }
   }