arphaman added a comment.

In https://reviews.llvm.org/D32081#727511, @arphaman wrote:

> In https://reviews.llvm.org/D32081#727450, @benlangmuir wrote:
>
> > Rather than stick ranges into the diagnostic engine, I think it would be 
> > cleaner to have the identifier have a method like `isEditorPlaceholder()` 
> > that can be used to avoid situations like this in a principled way, or to 
> > customize behaviour for placeholders in the parser, etc.  That's how we are 
> > handling it in Swift.  Using an API on the placeholder is also better for 
> > handling errors that could be caused by the placeholder but not have it as 
> > the primary location.
> >
> > What do you think?
>
>
> I thought about this as well. I'm not sure which way is better though. The 
> current way is simple in the sense that we automatically suppress all 
> diagnostics in the placeholder, so we don't have to modify the parser at all. 
> Clang generates placeholders in a bunch of different places so I reckon 
> there'll have to be a lot of modifications to suppress all problematic cases. 
> Although I suppose that if we teach the parser about the most common places 
> where placeholders could occur (e.g. expressions), that would probably 
> suppress the majority of diagnostics that we care about. I'll try out the 
> parser changes right now.


It seems that suppressing placeholders in expressions and type names would 
cover the a lot of the common problematic cases. What do you think about a 
hybrid approach: Don't suppress diagnostics in the placeholder range when we 
handle the placeholders in parser/sema, but do suppress the range when the 
placeholder isn't explicitly handled?


Repository:
  rL LLVM

https://reviews.llvm.org/D32081



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to