[clang-tools-extra] a115248 - [clangd] Add missing tests to rename feature
Kirill Bobyrev via cfe-commits
cfe-commits at lists.llvm.org
Fri Nov 13 03:29:00 PST 2020
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) {
More information about the cfe-commits
mailing list