This revision was landed with ongoing or failed builds. This revision was automatically updated to reflect the committed changes. Closed by commit rG445289aa63e1: [clangd] Fix an assertion violation in rename. (authored by hokein).
Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D92642/new/ https://reviews.llvm.org/D92642 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 @@ -946,6 +946,13 @@ )cpp", "not a supported kind", !HeaderFile, Index}, + {R"cpp(// disallow rename on non-normal identifiers. + @interface Foo {} + -(int) fo^o:(int)x; // Token is an identifier, but declaration name isn't a simple identifier. + @end + )cpp", + "not a supported kind", HeaderFile, Index}, + {R"cpp( void foo(int); void foo(char); Index: clang-tools-extra/clangd/refactor/Rename.cpp =================================================================== --- clang-tools-extra/clangd/refactor/Rename.cpp +++ clang-tools-extra/clangd/refactor/Rename.cpp @@ -637,7 +637,10 @@ if (DeclsUnderCursor.size() > 1) return makeError(ReasonToReject::AmbiguousSymbol); const auto &RenameDecl = **DeclsUnderCursor.begin(); - if (RenameDecl.getName() == RInputs.NewName) + const auto *ID = RenameDecl.getIdentifier(); + if (!ID) + return makeError(ReasonToReject::UnsupportedSymbol); + if (ID->getName() == RInputs.NewName) return makeError(ReasonToReject::SameName); auto Invalid = checkName(RenameDecl, RInputs.NewName); if (Invalid)
Index: clang-tools-extra/clangd/unittests/RenameTests.cpp =================================================================== --- clang-tools-extra/clangd/unittests/RenameTests.cpp +++ clang-tools-extra/clangd/unittests/RenameTests.cpp @@ -946,6 +946,13 @@ )cpp", "not a supported kind", !HeaderFile, Index}, + {R"cpp(// disallow rename on non-normal identifiers. + @interface Foo {} + -(int) fo^o:(int)x; // Token is an identifier, but declaration name isn't a simple identifier. + @end + )cpp", + "not a supported kind", HeaderFile, Index}, + {R"cpp( void foo(int); void foo(char); Index: clang-tools-extra/clangd/refactor/Rename.cpp =================================================================== --- clang-tools-extra/clangd/refactor/Rename.cpp +++ clang-tools-extra/clangd/refactor/Rename.cpp @@ -637,7 +637,10 @@ if (DeclsUnderCursor.size() > 1) return makeError(ReasonToReject::AmbiguousSymbol); const auto &RenameDecl = **DeclsUnderCursor.begin(); - if (RenameDecl.getName() == RInputs.NewName) + const auto *ID = RenameDecl.getIdentifier(); + if (!ID) + return makeError(ReasonToReject::UnsupportedSymbol); + if (ID->getName() == RInputs.NewName) return makeError(ReasonToReject::SameName); auto Invalid = checkName(RenameDecl, RInputs.NewName); if (Invalid)
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits