kbobyrev added inline comments.

================
Comment at: clang-tools-extra/clangd/IncludeCleaner.cpp:38
   bool VisitTagType(TagType *TT) {
+    // For enumerations we will require only the definition if it's present and
+    // the underlying type is not specified.
----------------
sammccall wrote:
> kbobyrev wrote:
> > sammccall wrote:
> > > I don't understand this special case.
> > > It seems you're trying to avoid requiring too many redecls of a 
> > > referenced type. Why is this important, and different from e.g. Class?
> > Yes, this is for cases like
> > 
> > ```
> >       {
> >           "enum class Color;",
> >           "enum class Color {}; Color c;",
> >       },
> > ```
> > 
> > I think the problem here is that if we see the definition of the enum, it 
> > should be the "ground truth" for the usage, forward declarations are not 
> > really useful in this case. It's not much different from the class but I 
> > just wanted to handle it separately, not sure if it's OK to merge these two 
> > changes into one patch.
> The heuristic seems plausible, though there are counterexamples like:
> 
> ```
> "enum Color;"
> "void foo(Color); enum Color {};"
> ```
> 
> My main argument would be that we have a general policy here: conservatively 
> consider all redecls as used, rather than trying to work out which is best. 
> It's not clear why enums are special enough that we should hack around them 
> without rethinking the policy.
> 
> (I think `VisitEnumDecl` is different - our general policy is that decls 
> *aren't* references to forward-decls, and in enums' case this is violates our 
> meta-policy of "be conservative, consider everything that might be a use").
This and our offline discussion makes total sense, I will delete it from the 
patch.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D112209/new/

https://reviews.llvm.org/D112209

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

Reply via email to