[cfe-dev] Downgrading/mapping fatal errors to errors (#include not found)

Jason Haslam jason.haslam at gmail.com
Sat Jan 3 23:15:17 PST 2015


This is important to us for the same reasons. In our case we only care about reporting additional file-not-found errors. The others usually become too noisy. I haven’t found any existing option to control this. We have a local patch to continue reporting file-not-found errors after a fatal error (may be slightly out of date):

--- a/lib/Basic/DiagnosticIDs.cpp
+++ b/lib/Basic/DiagnosticIDs.cpp
@@ -618,7 +618,7 @@ bool DiagnosticIDs::ProcessDiag(DiagnosticsEngine &Diag) const {
 
   // If a fatal error has already been emitted, silence all subsequent
   // diagnostics.
-  if (Diag.FatalErrorOccurred) {
+  if (Diag.FatalErrorOccurred && DiagID != diag::err_pp_file_not_found) {
     if (DiagLevel >= DiagnosticIDs::Error &&
         Diag.Client->IncludeInDiagnosticCounts()) {
       ++Diag.NumErrors;

I would love to see an option to control this behavior added to the mainline. Are there already other flags meant specifically for IDE integration? Maybe this could piggyback on one of them or do something similar?

Jason


> On Dec 31, 2014, at 4:13 AM, Olivier J. G. <olivier.jg at gmail.com> wrote:
> 
> Hello,
> 
> We've run into a problem using libclang for cpp support in KDevelop: once an #included file is not found, a fatal error is generated which disables all further diagnostics.
> 
> In the context of KDevelop, it is quite important that this be downgraded to a non-fatal error so that further missing includes and issues can be marked in the IDE. It's further desirable that the IDE support is still helpful in the absence of a missing but unimportant #include.
> 
> I've found no way to do this with compiler flags; err_pp_file_not_found has no category so -Wno-fatal-errors=foo can't help (not clear if that's the correct method even if there was a category).
> 
> Is there a way to do this that I missed seeing? Can this diagnostic be re-mapped from fatal to error?
> 
> If there's no existing way to do this, could some interface or compiler flag be added so that err_pp_file_not_found_not_fatal is used instead? What would be the correct place/way to configure this?
> 
> Thanks,
> 
> -Olivier JG
> _______________________________________________
> cfe-dev mailing list
> cfe-dev at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev





More information about the cfe-dev mailing list