adamcz updated this revision to Diff 382335. adamcz added a comment. review comments
Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D112530/new/ https://reviews.llvm.org/D112530 Files: clang-tools-extra/clangd/refactor/tweaks/AddUsing.cpp clang-tools-extra/clangd/unittests/tweaks/AddUsingTests.cpp Index: clang-tools-extra/clangd/unittests/tweaks/AddUsingTests.cpp =================================================================== --- clang-tools-extra/clangd/unittests/tweaks/AddUsingTests.cpp +++ clang-tools-extra/clangd/unittests/tweaks/AddUsingTests.cpp @@ -444,6 +444,17 @@ #include "test.hpp" using one::two::cc;using one::two::ee::ee_one; cc c; +)cpp"}, + // Template (like std::vector). + {R"cpp( +#include "test.hpp" +one::v^ec<int> foo; +)cpp", + R"cpp( +#include "test.hpp" +using one::vec; + +vec<int> foo; )cpp"}}; llvm::StringMap<std::string> EditedFiles; for (const auto &Case : Cases) { @@ -461,6 +472,7 @@ }; } using uu = two::cc; +template<typename T> struct vec {}; })cpp"; EXPECT_EQ(apply(SubCase, &EditedFiles), Case.ExpectedSource); } Index: clang-tools-extra/clangd/refactor/tweaks/AddUsing.cpp =================================================================== --- clang-tools-extra/clangd/refactor/tweaks/AddUsing.cpp +++ clang-tools-extra/clangd/refactor/tweaks/AddUsing.cpp @@ -278,8 +278,13 @@ if (!QualifierToRemove) return false; - auto SpelledTokens = - TB.spelledForExpanded(TB.expandedTokens(E.getSourceRange())); + auto NameRange = E.getSourceRange(); + if (auto T = E.getNamedTypeLoc().getAs<TemplateSpecializationTypeLoc>()) { + // Remove the template arguments from the name. + NameRange.setEnd(T.getLAngleLoc().getLocWithOffset(-1)); + } + + auto SpelledTokens = TB.spelledForExpanded(TB.expandedTokens(NameRange)); if (!SpelledTokens) return false; auto SpelledRange = syntax::Token::range(SM, SpelledTokens->front(),
Index: clang-tools-extra/clangd/unittests/tweaks/AddUsingTests.cpp =================================================================== --- clang-tools-extra/clangd/unittests/tweaks/AddUsingTests.cpp +++ clang-tools-extra/clangd/unittests/tweaks/AddUsingTests.cpp @@ -444,6 +444,17 @@ #include "test.hpp" using one::two::cc;using one::two::ee::ee_one; cc c; +)cpp"}, + // Template (like std::vector). + {R"cpp( +#include "test.hpp" +one::v^ec<int> foo; +)cpp", + R"cpp( +#include "test.hpp" +using one::vec; + +vec<int> foo; )cpp"}}; llvm::StringMap<std::string> EditedFiles; for (const auto &Case : Cases) { @@ -461,6 +472,7 @@ }; } using uu = two::cc; +template<typename T> struct vec {}; })cpp"; EXPECT_EQ(apply(SubCase, &EditedFiles), Case.ExpectedSource); } Index: clang-tools-extra/clangd/refactor/tweaks/AddUsing.cpp =================================================================== --- clang-tools-extra/clangd/refactor/tweaks/AddUsing.cpp +++ clang-tools-extra/clangd/refactor/tweaks/AddUsing.cpp @@ -278,8 +278,13 @@ if (!QualifierToRemove) return false; - auto SpelledTokens = - TB.spelledForExpanded(TB.expandedTokens(E.getSourceRange())); + auto NameRange = E.getSourceRange(); + if (auto T = E.getNamedTypeLoc().getAs<TemplateSpecializationTypeLoc>()) { + // Remove the template arguments from the name. + NameRange.setEnd(T.getLAngleLoc().getLocWithOffset(-1)); + } + + auto SpelledTokens = TB.spelledForExpanded(TB.expandedTokens(NameRange)); if (!SpelledTokens) return false; auto SpelledRange = syntax::Token::range(SM, SpelledTokens->front(),
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits