[PATCH] D133298: [clang-rename] RecursiveSymbolVisitor - visit namespace aliases and using directives

imctrading via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Mon Sep 5 05:48:16 PDT 2022


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;


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D133298.457942.patch
Type: text/x-patch
Size: 1271 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20220905/531072b7/attachment.bin>


More information about the cfe-commits mailing list