sammccall added inline comments.

================
Comment at: clang-tools-extra/include-cleaner/lib/WalkAST.cpp:55
+  bool VisitMemberExpr(MemberExpr *E) {
+    auto *MD = E->getMemberDecl();
+    report(E->getMemberLoc(), MD);
----------------
nit: inline?


================
Comment at: clang-tools-extra/include-cleaner/lib/WalkAST.cpp:55
+  bool VisitMemberExpr(MemberExpr *E) {
+    auto *MD = E->getMemberDecl();
+    report(E->getMemberLoc(), MD);
----------------
sammccall wrote:
> nit: inline?
should this be the founddecl instead of the memberdecl?


================
Comment at: clang-tools-extra/include-cleaner/lib/WalkAST.cpp:66
+  bool VisitOverloadExpr(OverloadExpr *E) {
+    // Mark all candidates as used when overload is not resolved.
+    llvm::for_each(E->decls(),
----------------
I think we need a policy knob for this, to decide whether to over or 
underestimate.
This would be the wrong behavior for missing-includes analysis.


================
Comment at: clang-tools-extra/include-cleaner/lib/WalkAST.cpp:66
+  bool VisitOverloadExpr(OverloadExpr *E) {
+    // Mark all candidates as used when overload is not resolved.
+    llvm::for_each(E->decls(),
----------------
sammccall wrote:
> I think we need a policy knob for this, to decide whether to over or 
> underestimate.
> This would be the wrong behavior for missing-includes analysis.
comment echoes the code, say why instead


================
Comment at: clang-tools-extra/include-cleaner/lib/WalkAST.cpp:72
+
+  bool VisitUsingDecl(UsingDecl *UD) {
+    for (const auto *Shadow : UD->shadows())
----------------
I wonder if this is correct enough.

This brings a set of overloads into scope, the intention may be to bring a 
particular overload with others as harmless side effects: consider `using 
std::swap`.
In this case, inserting includes for all the overloads that happened to be 
visible would be too much.

Possible behaviors:
 - what we do here
 - only do this if overestimate=true
 - if overestimate=false, only include those USDs marked as `referenced` (not 
sure if they actually get marked appropriately, the bit exists)


================
Comment at: clang-tools-extra/include-cleaner/lib/WalkAST.cpp:79
+  bool VisitFunctionDecl(FunctionDecl *FD) {
+    // Only mark the declaration from a definition.
+    if (FD->isThisDeclarationADefinition())
----------------
comment echoes the code, say why instead


================
Comment at: clang-tools-extra/include-cleaner/lib/WalkAST.cpp:110
+  bool VisitTemplateSpecializationTypeLoc(TemplateSpecializationTypeLoc TL) {
+    // FIXME: Handle specializations.
+    return handleTemplateName(TL.getTemplateNameLoc(),
----------------
nit: *explicit* specializations?


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D132110

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

Reply via email to