imctrading created this revision. imctrading added reviewers: klimek, dcastagna, arphaman. Herald added a subscriber: jeroen.dobbelaere. Herald added a project: All. imctrading requested review of this revision. Herald added a project: clang. Herald added a subscriber: cfe-commits.
`RecursiveSymbolVisitor` - used by clang-rename does not visit namespace aliases and using directives. This patch fixes that. This allows the tool to be used to rename namespaces. Fixes https://github.com/llvm/llvm-project/issues/57194 Repository: rG LLVM Github Monorepo https://reviews.llvm.org/D133298 Files: clang/include/clang/Tooling/Refactoring/RecursiveSymbolVisitor.h clang/test/clang-rename/Namespace.cpp Index: clang/test/clang-rename/Namespace.cpp =================================================================== --- clang/test/clang-rename/Namespace.cpp +++ clang/test/clang-rename/Namespace.cpp @@ -6,6 +6,9 @@ gcc::x = 42; // CHECK: clang::x = 42; } +namespace gcc_alias = gcc; // CHECK: namespace gcc_alias = clang; +using namespace gcc; // CHECK: using namespace clang; + // Test 1. // RUN: clang-rename -offset=10 -new-name=clang %s -- | sed 's,//.*,,' | FileCheck %s Index: clang/include/clang/Tooling/Refactoring/RecursiveSymbolVisitor.h =================================================================== --- clang/include/clang/Tooling/Refactoring/RecursiveSymbolVisitor.h +++ clang/include/clang/Tooling/Refactoring/RecursiveSymbolVisitor.h @@ -133,6 +133,14 @@ return true; } + bool VisitNamespaceAliasDecl(NamespaceAliasDecl *Declaration) { + return visit(Declaration->getAliasedNamespace(), Declaration->getTargetNameLoc(), Declaration->getEndLoc()); + } + + bool VisitUsingDirectiveDecl(UsingDirectiveDecl *Declaration) { + return visit(Declaration->getNominatedNamespace(), Declaration->getIdentLocation(), Declaration->getEndLoc()); + } + private: const SourceManager &SM; const LangOptions &LangOpts;
Index: clang/test/clang-rename/Namespace.cpp =================================================================== --- clang/test/clang-rename/Namespace.cpp +++ clang/test/clang-rename/Namespace.cpp @@ -6,6 +6,9 @@ gcc::x = 42; // CHECK: clang::x = 42; } +namespace gcc_alias = gcc; // CHECK: namespace gcc_alias = clang; +using namespace gcc; // CHECK: using namespace clang; + // Test 1. // RUN: clang-rename -offset=10 -new-name=clang %s -- | sed 's,//.*,,' | FileCheck %s Index: clang/include/clang/Tooling/Refactoring/RecursiveSymbolVisitor.h =================================================================== --- clang/include/clang/Tooling/Refactoring/RecursiveSymbolVisitor.h +++ clang/include/clang/Tooling/Refactoring/RecursiveSymbolVisitor.h @@ -133,6 +133,14 @@ return true; } + bool VisitNamespaceAliasDecl(NamespaceAliasDecl *Declaration) { + return visit(Declaration->getAliasedNamespace(), Declaration->getTargetNameLoc(), Declaration->getEndLoc()); + } + + bool VisitUsingDirectiveDecl(UsingDirectiveDecl *Declaration) { + return visit(Declaration->getNominatedNamespace(), Declaration->getIdentLocation(), Declaration->getEndLoc()); + } + private: const SourceManager &SM; const LangOptions &LangOpts;
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits