bruno added inline comments.

================
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;
----------------
dexonsmith wrote:
> aaron.ballman wrote:
> > 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.
> I'm also interested in just how expensive it would be, because I think users 
> will be frustrated that the compiler knows it's a framework include "so it 
> obviously knows which framework".
> 
> I'd be fine if the fix-it came in a follow-up commit though (not sure how 
> Aaron feels).
I haven't measured, but for each quoted include we would have to:

- Start a fresh header search.
- Look for `Foo.h` in all possible frameworks in the path (just on the Darwin 
macOS SDK path that would be around 140 frameworks).
- If it's only found in once place, we are mostly safe to say we found a 
matching framework, otherwise we can't emit a reliable fixit.
- Header maps and VFS might add extra level of searches (this is very common in 
Xcode based clang invocations).


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