This patch provide fixes about addUsing tweak doesn't traverse same-level anon namespaces.
Diff Detail
Diff Detail
- Repository
- rG LLVM Github Monorepo
Event Timeline
Comment Actions
This would be a great fix to have! However I don't think the specific changes to the RecursiveASTVisitor are correct.
I can see a couple of approaches:
- prevent the RecursiveASTVisitor from traversing into uninteresting contexts, and drop the Encloses check in VisitUsingDecl
- explicitly gather the list of interesting contexts
option 1 is most similar to this patch, I believe TraverseNamespaceDecl needs to call base::TraverseNamespaceDecl only if the NS either encloses the selection DC or is anonymous.
option 2 would mean walking up the declcontext chain and grabbing each entry and also getAnonymousNamespace() from TranslationUnitDecl and NamespaceDecl, and changing our Encloses() tests to check membership in that set.
clang-tools-extra/clangd/refactor/tweaks/AddUsing.cpp | ||
---|---|---|
97 | This doesn't look like it can be right:
this also suggests we need more testcases here: some negative ones verifying that we don't look at UsingDecls that are inside named namespaces. |
This doesn't look like it can be right:
this also suggests we need more testcases here: some negative ones verifying that we don't look at UsingDecls that are inside named namespaces.