================
@@ -571,8 +571,7 @@ DiagnosticIDs::getDiagnosticSeverity(unsigned DiagID, 
SourceLocation Loc,
   }
 
   // If explicitly requested, map fatal errors to errors.
-  if (Result == diag::Severity::Fatal &&
-      Diag.CurDiagID != diag::fatal_too_many_errors && Diag.FatalsAsError)
----------------
AaronBallman wrote:

> Well, for now I would do it in a simple/hopeful way - just use the DiagID 
> argument. But, if it doesn't seem safe to reviewers - I could add smth like 
> size_t count_in_flight__fatal_too_many_errors to the DiagnosticsEngine to 
> mimic the original behavior.

I think it should be reasonably safe to use `DiagID`. We could add some test 
coverage near 
https://github.com/llvm/llvm-project/blob/2670565afc4ec855fa406b8f582dde44ce1739fb/clang/unittests/Basic/DiagnosticTest.cpp#L61
 as it seems we can only downgrade fatal diagnostics to errors as part of 
internal APIs rather than user-facing flags. The test could look something like 
(I've not tried this out myself):
```
TEST(DiagnosticTest, fatalsAsError) {
  DiagnosticsEngine Diags(new DiagnosticIDs(),
                          new DiagnosticOptions,
                          new IgnoringDiagConsumer());
  Diags.setFatalsAsError(true);

  // Report a fatal_too_many_errors diagnostic to ensure that still
  // acts as a fatal error despite downgrading fatal errors to errors.
  Diags.Report(diag::fatal_too_many_errors);
  EXPECT_TRUE(Diags.hasFatalErrorOccurred());

  // Ensure that the severity of that diagnostic really is "fatal".
  
EXPECT_EQ(Diags.getDiagnosticIDs()->getDiagnosticSeverity(diag::fatal_too_many_errors,
 {}, Diags), diags::Severity::Fatal);
}
```


https://github.com/llvm/llvm-project/pull/108187
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to