aaron.ballman added a comment.

In https://reviews.llvm.org/D47157#1115445, @bruno wrote:

> > Consistency would be nice, but at the same time, I don't see a good metric 
> > for when we'd know it's time to switch it to being on by default. I'm 
> > worried that it'll remain off by default forever simply because no one 
> > thinks to go turn it on (because it's silent by default). Perhaps 
> > on-by-default here and off-by-default downstream would be the better 
> > approach, or do you think this would be too disruptive to enable by default 
> > anywhere?
>
> I believe this could be too disruptive to enable now, since it's still very 
> common to find quoted includes in framework headers. This is very important 
> for Modules to properly work with frameworks (quoted headers are usually 
> considered non-modular when modules builds kick in) and is actually very 
> compelling for us to turn it on by default on Darwin as soon as we can, but 
> we need to educate users first.


That sounds like good justification for it being off by default then, thank you.



================
Comment at: include/clang/Basic/DiagnosticLexKinds.td:713
+def warn_quoted_include_in_framework_header : Warning<
+  "double-quoted include \"%0\" in framework header, expected system style 
<angled> include"
+  >, InGroup<FrameworkHdrQuotedInclude>, DefaultIgnore;
----------------
bruno wrote:
> aaron.ballman wrote:
> > 80-col limit?
> > 
> > Also, I'd probably drop "system style" and reword slightly to:
> > 
> > `"double-quoted include \"%0\" in framework header, expected 
> > angle-bracketed include <%0> instead"`
> Unfortunately this won't work because for framework style includes we use the 
> angled-bracketed with the framework name. For example, if one wants to 
> include `Foo.h` from `Foo.framework`, one should use `#include <Foo/Foo.h>`, 
> although on disk you actually have `Foo.framework/Headers/Foo.h`. Framework 
> header lookup does this magic and other similar ones.
> 
> Since we don't know which framework the quoted header could be part of, it 
> was not included in the warning (doing so would require extra header searches 
> - which could be expensive for this specific warning). However it seems that 
> I can do better to indicate that the framework name is desired here, perhaps:
> 
> `"double-quoted include \"%0\" in framework header, expected angle-bracketed 
> include <FrameworkName/%0> instead"`
> 
> How does that sound to you? Other suggestions?
Thank you for the explanation!

I think your suggested text sounds good, though I do wonder how expensive is 
"expensive" in finding the intended header? Not only would it provide a better 
diagnostic, it would also let you use a fixit that doesn't use editor 
placeholders.


Repository:
  rC Clang

https://reviews.llvm.org/D47157



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

Reply via email to