Skip to content

Commit e495eab

Browse files
committed
[clang] Include the error message in file reading error diagnostic
in order to provide as much information as possible to the user. The diagnostic will now look like for example: error: error reading '/tmp/foo.c': Permission denied (This addresses a FIXME from 2019, 9ef6c49) Differential revision: https://reviews.llvm.org/D146280
1 parent 2d91b0d commit e495eab

File tree

4 files changed

+5
-6
lines changed

4 files changed

+5
-6
lines changed

clang/include/clang/Basic/DiagnosticFrontendKinds.td

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ class BackendInfo : CatBackend, ShowInSystemHeader;
1111
let Component = "Frontend" in {
1212

1313
def err_fe_error_opening : Error<"error opening '%0': %1">;
14-
def err_fe_error_reading : Error<"error reading '%0'">;
14+
def err_fe_error_reading : Error<"error reading '%0': %1">;
1515
def err_fe_error_reading_stdin : Error<"error reading stdin: %0">;
1616
def err_fe_error_backend : Error<"error in backend: %0">, DefaultFatal;
1717

clang/lib/Frontend/CompilerInstance.cpp

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -981,10 +981,9 @@ bool CompilerInstance::InitializeSourceManager(const FrontendInputFile &Input,
981981
? FileMgr.getSTDIN()
982982
: FileMgr.getFileRef(InputFile, /*OpenFile=*/true);
983983
if (!FileOrErr) {
984-
// FIXME: include the error in the diagnostic even when it's not stdin.
985984
auto EC = llvm::errorToErrorCode(FileOrErr.takeError());
986985
if (InputFile != "-")
987-
Diags.Report(diag::err_fe_error_reading) << InputFile;
986+
Diags.Report(diag::err_fe_error_reading) << InputFile << EC.message();
988987
else
989988
Diags.Report(diag::err_fe_error_reading_stdin) << EC.message();
990989
return false;

clang/tools/driver/cc1as_main.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -384,8 +384,8 @@ static bool ExecuteAssemblerImpl(AssemblerInvocation &Opts,
384384
MemoryBuffer::getFileOrSTDIN(Opts.InputFile, /*IsText=*/true);
385385

386386
if (std::error_code EC = Buffer.getError()) {
387-
Error = EC.message();
388-
return Diags.Report(diag::err_fe_error_reading) << Opts.InputFile;
387+
return Diags.Report(diag::err_fe_error_reading)
388+
<< Opts.InputFile << EC.message();
389389
}
390390

391391
SourceMgr SrcMgr;

flang/lib/Frontend/FrontendAction.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ bool FrontendAction::beginSourceFile(CompilerInstance &ci,
4848
unsigned diagID;
4949
if (llvm::vfs::getRealFileSystem()->exists(input.getFile())) {
5050
ci.getDiagnostics().Report(clang::diag::err_fe_error_reading)
51-
<< input.getFile();
51+
<< input.getFile() << "not a regular file";
5252
diagID = ci.getDiagnostics().getCustomDiagID(
5353
clang::DiagnosticsEngine::Error, "%0 is not a regular file");
5454
} else {

0 commit comments

Comments
 (0)