Author: Kirill Bobyrev Date: 2020-11-13T12:27:40+01:00 New Revision: a1152482826c9a80977871aa46e131ac803c5f44
URL: https://github.com/llvm/llvm-project/commit/a1152482826c9a80977871aa46e131ac803c5f44 DIFF: https://github.com/llvm/llvm-project/commit/a1152482826c9a80977871aa46e131ac803c5f44.diff LOG: [clangd] Add missing tests to rename feature This adds a couple of missed tests from existing clang-rename ones and introduces several new ones (e.g. static class member). This patch is required to ensure feature parity for migration off Clang-Rename API D71880. Reviewed By: hokein Differential Revision: https://reviews.llvm.org/D91337 Added: Modified: clang-tools-extra/clangd/unittests/RenameTests.cpp Removed: ################################################################################ diff --git a/clang-tools-extra/clangd/unittests/RenameTests.cpp b/clang-tools-extra/clangd/unittests/RenameTests.cpp index daf63d25ed7f4..876262a463a53 100644 --- a/clang-tools-extra/clangd/unittests/RenameTests.cpp +++ b/clang-tools-extra/clangd/unittests/RenameTests.cpp @@ -141,6 +141,12 @@ TEST(RenameTest, WithinFileRename) { ~[[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 @@ TEST(RenameTest, WithinFileRename) { template<typename T> [[F^oo]](T t); }; + + template<typename T> + [[F^oo]]::[[Fo^o]]() {} )cpp", // Class in template argument. @@ -199,6 +208,30 @@ TEST(RenameTest, WithinFileRename) { } )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> @@ -272,6 +305,80 @@ TEST(RenameTest, WithinFileRename) { } )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", + // Complicated class type. R"cpp( // Forward declaration. @@ -307,6 +414,19 @@ TEST(RenameTest, WithinFileRename) { } )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 +708,26 @@ TEST(RenameTest, WithinFileRename) { ns::[[Old^Alias]] Bar; } )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