aboutsummaryrefslogtreecommitdiff
path: root/flang/lib/Frontend/FrontendAction.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'flang/lib/Frontend/FrontendAction.cpp')
-rw-r--r--flang/lib/Frontend/FrontendAction.cpp13
1 files changed, 13 insertions, 0 deletions
diff --git a/flang/lib/Frontend/FrontendAction.cpp b/flang/lib/Frontend/FrontendAction.cpp
index 041182b..9a555bc 100644
--- a/flang/lib/Frontend/FrontendAction.cpp
+++ b/flang/lib/Frontend/FrontendAction.cpp
@@ -232,6 +232,19 @@ bool FrontendAction::reportFatalErrors(const char (&message)[N]) {
instance->getAllCookedSources());
return true;
}
+ if (instance->getParsing().parseTree().has_value() &&
+ !instance->getParsing().consumedWholeFile()) {
+ // Parsing failed without error.
+ const unsigned diagID = instance->getDiagnostics().getCustomDiagID(
+ clang::DiagnosticsEngine::Error, message);
+ instance->getDiagnostics().Report(diagID) << getCurrentFileOrBufferName();
+ instance->getParsing().messages().Emit(llvm::errs(),
+ instance->getAllCookedSources());
+ instance->getParsing().EmitMessage(
+ llvm::errs(), instance->getParsing().finalRestingPlace(),
+ "parser FAIL (final position)", "error: ", llvm::raw_ostream::RED);
+ return true;
+ }
return false;
}