diff --git a/clang-tools-extra/clangd/refactor/Rename.cpp b/clang-tools-extra/clangd/refactor/Rename.cpp index 97ea5e1836579..11f9e4627af76 100644 --- a/clang-tools-extra/clangd/refactor/Rename.cpp +++ b/clang-tools-extra/clangd/refactor/Rename.cpp @@ -332,7 +332,8 @@ const NamedDecl *lookupSiblingWithinEnclosingScope(ASTContext &Ctx, return nullptr; for (const auto &Child : DS->getDeclGroup()) if (const auto *ND = dyn_cast(Child)) - if (ND != &RenamedDecl && ND->getName() == Name) + if (ND != &RenamedDecl && ND->getDeclName().isIdentifier() && + ND->getName() == Name) return ND; return nullptr; }; diff --git a/clang-tools-extra/clangd/unittests/RenameTests.cpp b/clang-tools-extra/clangd/unittests/RenameTests.cpp index 2414ff6b64c3f..9cbf59684fbc1 100644 --- a/clang-tools-extra/clangd/unittests/RenameTests.cpp +++ b/clang-tools-extra/clangd/unittests/RenameTests.cpp @@ -1129,6 +1129,15 @@ TEST(RenameTest, Renameable) { using ns::^foo; )cpp", "there are multiple symbols at the given location", !HeaderFile}, + + {R"cpp( + void test() { + // no crash + using namespace std; + int [[V^ar]]; + } + )cpp", + nullptr, !HeaderFile}, }; for (const auto& Case : Cases) {