kbobyrev updated this revision to Diff 305047. kbobyrev marked 4 inline comments as done. kbobyrev added a comment.
Address the comments. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D91337/new/ https://reviews.llvm.org/D91337 Files: 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 @@ -141,6 +141,12 @@ ~[[F^oo]](); void f([[F^oo]] x); }; + + template<typename T> + [[F^oo]]<T>::[[Fo^o]]() {} + + template<typename T> + [[F^oo]]<T>::~[[Fo^o]]() {} )cpp", // Template class constructor. @@ -152,6 +158,9 @@ template<typename T> [[F^oo]](T t); }; + + template<typename T> + [[F^oo]]::[[Fo^o]]() {} )cpp", // Class in template argument. @@ -199,6 +208,30 @@ } )cpp", + // Templated method instantiation. + R"cpp( + template<typename T> + class Foo { + public: + static T [[f^oo]]() {} + }; + + void bar() { + Foo<int>::[[f^oo]](); + } + )cpp", + R"cpp( + template<typename T> + class Foo { + public: + T [[f^oo]]() {} + }; + + void bar() { + Foo<int>().[[f^oo]](); + } + )cpp", + // Template class (partial) specializations. R"cpp( template <typename T> @@ -307,6 +340,19 @@ } )cpp", + // Static class member. + R"cpp( + struct Foo { + static Foo *[[Static^Member]]; + }; + + Foo* Foo::[[Static^Member]] = nullptr; + + void foo() { + Foo* Pointer = Foo::[[Static^Member]]; + } + )cpp", + // Reference in lambda parameters. R"cpp( template <class T> @@ -588,6 +634,100 @@ ns::[[Old^Alias]] Bar; } )cpp", + + // Templated class specialization. + R"cpp( + template<typename T, typename U=bool> + class [[Foo^]]; + + template<typename T, typename U> + class [[Foo^]] {}; + + template<typename T=int, typename U> + class [[Foo^]]; + )cpp", + R"cpp( + template<typename T=float, typename U=int> + class [[Foo^]]; + + template<typename T, typename U> + class [[Foo^]] {}; + )cpp", + + // Function template specialization. + R"cpp( + template<typename T=int, typename U=bool> + U [[foo^]](); + + template<typename T, typename U> + U [[foo^]]() {}; + )cpp", + R"cpp( + template<typename T, typename U> + U [[foo^]]() {}; + + template<typename T=int, typename U=bool> + U [[foo^]](); + )cpp", + R"cpp( + template<typename T=int, typename U=bool> + U [[foo^]](); + + template<typename T, typename U> + U [[foo^]](); + )cpp", + R"cpp( + template <typename T> + void [[f^oo]](T t); + + template <> + void [[f^oo]](int a); + + void test() { + [[f^oo]]<double>(1); + } + )cpp", + + // Variable template. + R"cpp( + template <typename T, int U> + bool [[F^oo]] = true; + + // Explicit template specialization + template <> + bool [[F^oo]]<int, 0> = false; + + // Partial template specialization + template <typename T> + bool [[F^oo]]<T, 1> = false; + + void foo() { + // Ref to the explicit template specialization + [[F^oo]]<int, 0>; + // Ref to the primary template. + [[F^oo]]<double, 2>; + } + )cpp", + + // User defined conversion. + R"cpp( + class [[F^oo]] { + public: + [[F^oo]]() {} + }; + + class Baz { + public: + operator [[F^oo]]() { + return [[F^oo]](); + } + }; + + int main() { + Baz boo; + [[F^oo]] foo = static_cast<[[F^oo]]>(boo); + } + )cpp", }; llvm::StringRef NewName = "NewName"; for (llvm::StringRef T : Tests) {
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits