hokein created this revision. hokein added a reviewer: kadircet. Herald added a subscriber: arphaman. Herald added a project: All. hokein requested review of this revision. Herald added subscribers: MaskRay, ilya-biryukov. Herald added a project: clang-tools-extra.
getName method required to be called on a simple-identifier NamedDecl, otherwise it will trigger an assertion. Repository: rG LLVM Github Monorepo https://reviews.llvm.org/D153617 Files: clang-tools-extra/clangd/refactor/Rename.cpp clang-tools-extra/clangd/unittests/RenameTests.cpp Index: clang-tools-extra/clangd/unittests/RenameTests.cpp =================================================================== --- clang-tools-extra/clangd/unittests/RenameTests.cpp +++ clang-tools-extra/clangd/unittests/RenameTests.cpp @@ -1106,6 +1106,15 @@ 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) { Index: clang-tools-extra/clangd/refactor/Rename.cpp =================================================================== --- clang-tools-extra/clangd/refactor/Rename.cpp +++ clang-tools-extra/clangd/refactor/Rename.cpp @@ -318,7 +318,8 @@ return nullptr; for (const auto &Child : DS->getDeclGroup()) if (const auto *ND = dyn_cast<NamedDecl>(Child)) - if (ND != &RenamedDecl && ND->getName() == Name) + if (ND != &RenamedDecl && ND->getDeclName().isIdentifier() && + ND->getName() == Name) return ND; return nullptr; };
Index: clang-tools-extra/clangd/unittests/RenameTests.cpp =================================================================== --- clang-tools-extra/clangd/unittests/RenameTests.cpp +++ clang-tools-extra/clangd/unittests/RenameTests.cpp @@ -1106,6 +1106,15 @@ 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) { Index: clang-tools-extra/clangd/refactor/Rename.cpp =================================================================== --- clang-tools-extra/clangd/refactor/Rename.cpp +++ clang-tools-extra/clangd/refactor/Rename.cpp @@ -318,7 +318,8 @@ return nullptr; for (const auto &Child : DS->getDeclGroup()) if (const auto *ND = dyn_cast<NamedDecl>(Child)) - if (ND != &RenamedDecl && ND->getName() == Name) + if (ND != &RenamedDecl && ND->getDeclName().isIdentifier() && + ND->getName() == Name) return ND; return nullptr; };
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits