@@ -173,6 +173,7 @@ bool FrontendAction::runParse(bool emitMessages) {
173173 // combining them with messages from semantics.
174174 const common::LanguageFeatureControl &features{
175175 ci.getInvocation ().getFortranOpts ().features };
176+ // Default maxErrors here because none are fatal.
176177 ci.getParsing ().messages ().Emit (llvm::errs (), ci.getAllCookedSources (),
177178 /* echoSourceLine=*/ true , &features);
178179 }
@@ -228,15 +229,16 @@ template <unsigned N>
228229bool FrontendAction::reportFatalErrors (const char (&message)[N]) {
229230 const common::LanguageFeatureControl &features{
230231 instance->getInvocation ().getFortranOpts ().features };
232+ const size_t maxErrors{instance->getInvocation ().getMaxErrors ()};
231233 if (!instance->getParsing ().messages ().empty () &&
232234 (instance->getInvocation ().getWarnAsErr () ||
233235 instance->getParsing ().messages ().AnyFatalError ())) {
234236 const unsigned diagID = instance->getDiagnostics ().getCustomDiagID (
235237 clang::DiagnosticsEngine::Error, message);
236238 instance->getDiagnostics ().Report (diagID) << getCurrentFileOrBufferName ();
237- instance->getParsing ().messages ().Emit (llvm::errs (),
238- instance->getAllCookedSources (),
239- /* echoSourceLines=*/ true , &features);
239+ instance->getParsing ().messages ().Emit (
240+ llvm::errs (), instance->getAllCookedSources (),
241+ /* echoSourceLines=*/ true , &features, maxErrors );
240242 return true ;
241243 }
242244 if (instance->getParsing ().parseTree ().has_value () &&
@@ -245,9 +247,9 @@ bool FrontendAction::reportFatalErrors(const char (&message)[N]) {
245247 const unsigned diagID = instance->getDiagnostics ().getCustomDiagID (
246248 clang::DiagnosticsEngine::Error, message);
247249 instance->getDiagnostics ().Report (diagID) << getCurrentFileOrBufferName ();
248- instance->getParsing ().messages ().Emit (llvm::errs (),
249- instance->getAllCookedSources (),
250- /* echoSourceLine=*/ true , &features);
250+ instance->getParsing ().messages ().Emit (
251+ llvm::errs (), instance->getAllCookedSources (),
252+ /* echoSourceLine=*/ true , &features, maxErrors );
251253 instance->getParsing ().EmitMessage (
252254 llvm::errs (), instance->getParsing ().finalRestingPlace (),
253255 " parser FAIL (final position)" , " error: " , llvm::raw_ostream::RED);
0 commit comments