From 02323a3d5f9ea676865f78d603e68fa4b4b62608 Mon Sep 17 00:00:00 2001 From: Haojian Wu Date: Wed, 26 Feb 2020 15:22:56 +0100 Subject: [PATCH] [clangd] use printQualifiedName to skip the inlinenamespace qualifiers. Summary: symbols in libcpp are inside the inline namespace, printQualifierAsString will print the inline namespace, which is unexpected. Reviewers: kadircet Subscribers: ilya-biryukov, MaskRay, jkorous, arphaman, usaxena95, cfe-commits Tags: #clang Differential Revision: https://reviews.llvm.org/D75174 --- clang-tools-extra/clangd/refactor/Rename.cpp | 2 +- clang-tools-extra/clangd/unittests/RenameTests.cpp | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/clang-tools-extra/clangd/refactor/Rename.cpp b/clang-tools-extra/clangd/refactor/Rename.cpp index ec33f16..fd2146e 100644 --- a/clang-tools-extra/clangd/refactor/Rename.cpp +++ b/clang-tools-extra/clangd/refactor/Rename.cpp @@ -110,7 +110,7 @@ bool isBlacklisted(const NamedDecl &RenameDecl) { #include "StdSymbolMap.inc" #undef SYMBOL }); - return StdSymbols->count(RenameDecl.getQualifiedNameAsString()); + return StdSymbols->count(printQualifiedName(RenameDecl)); } enum ReasonToReject { diff --git a/clang-tools-extra/clangd/unittests/RenameTests.cpp b/clang-tools-extra/clangd/unittests/RenameTests.cpp index 3b2b96e..9906d6b 100644 --- a/clang-tools-extra/clangd/unittests/RenameTests.cpp +++ b/clang-tools-extra/clangd/unittests/RenameTests.cpp @@ -593,6 +593,14 @@ TEST(RenameTest, Renameable) { } )cpp", "not a supported kind", !HeaderFile, Index}, + {R"cpp(// disallow rename on blacklisted symbols (e.g. std symbols) + namespace std { + inline namespace __u { + class str^ing {}; + } + } + )cpp", + "not a supported kind", !HeaderFile, Index}, {R"cpp( void foo(int); -- 2.7.4