On Nov 18, 2008, at 2:01 PM, Chris Lattner wrote:
> On Nov 18, 2008, at 8:13 AM, Douglas Gregor wrote:
>>
>> Is there an easy way to determine whether this diagnostic has been
>> suppressed, such as a method
>>
>>      bool isSuppressed() const;
>
> Sure, we have stuff like this:
>
>  if (Diags.getDiagnosticLevel(DiagID) != Diagnostic::Ignored)
>    ...

Cool.

>> so, then the operator<<'s for DiagnosticInfo could first check
>> isSuppressed(), and abort early if the diagnostic is suppressed. That
>> way, we never pay for formatting strings (e.g., for a type name or
>> expression) or copying them (see my comment below).
>
> This commit was just one step along the way.  Currently diags still  
> traffic in std::strings.  I'd like to change DiagnosticInfo to use  
> an array of unions of "stuff", some of which may be strings, some  
> may be types, some may be integers etc.  If the diagnostic is never  
> printed, the formatting would just never happen.

I think that we can get much further if diags just have an array of  
std::strings (not pointers to strings), and the behavior of operator<<  
for types, expressions, declarations, etc. is just to create a string  
on-the-fly. It's not the final version---which would use the array of  
unions of "stuff"---but it'll get us further than what we have now. At  
the very least, it'll let us provide overloaded operator<<'s for  
QualType so we can start converting Diags away from explicitly calling  
QualType::getAsString().

>> and an IDE client would
>> want to treat it as one error (perhaps with some interactive
>> exploration of the candidate functions). There's a lot of info we
>> could put into that DiagnosticInfo object, but it's tougher if we
>> can't name it :)
>
> One way to handle this is to introduce a new diag kind,  
> "CONTINUATION" or something like that.  The IDE would just treat a  
> CONTINUATION diag as part of the previous one if it wanted to.

Yup, that's certainly possible.

        - Doug
_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

Reply via email to