[PATCH] D123212: [clangd] Handle the new UsingTemplateName.

Sam McCall via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Thu Apr 14 06:42:43 PDT 2022


sammccall accepted this revision.
sammccall added inline comments.
This revision is now accepted and ready to land.


================
Comment at: clang-tools-extra/clangd/IncludeCleaner.cpp:76
   bool VisitTemplateSpecializationType(TemplateSpecializationType *TST) {
+    if (const auto *UTN = TST->getTemplateName().getAsUsingTemplateName()) {
+      add(UTN->getFoundDecl());
----------------
hokein wrote:
> sammccall wrote:
> > TraverseTemplateSpecializationType calls TraverseTemplateName, isn't this redundant with below?
> yeah, the `add(..FoundDecl)` is redundant, but the key point here we do an early return, which means we will not traverse the underlying template decl if this template decl is found via the using decl.
> 
> I think this is a policy problem of whether we count the underlying decl as a reference for include-cleaner -- currently I just keep it consistent with the UsingType.
> 
Makes sense.

But if we're creating a pseudo-`VisitTemplateName` by overriding its traverse function, can we move the `add(getTemplateName() .getAsTemplateDecl())` logic there too?


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D123212



More information about the cfe-commits mailing list