summaryrefslogtreecommitdiffstats
path: root/clang-tools-extra/test
diff options
context:
space:
mode:
Diffstat (limited to 'clang-tools-extra/test')
-rw-r--r--clang-tools-extra/test/clang-rename/ClassAsTemplateArgumentFindByClass.cpp20
-rw-r--r--clang-tools-extra/test/clang-rename/ClassAsTemplateArgumentFindByTemplateArgument.cpp20
-rw-r--r--clang-tools-extra/test/clang-rename/ClassNameInFunctionDefenition.cpp15
-rw-r--r--clang-tools-extra/test/clang-rename/ComplicatedClassType.cpp23
-rw-r--r--clang-tools-extra/test/clang-rename/TemplateClassInstantiationFindByDeclaration.cpp44
-rw-r--r--clang-tools-extra/test/clang-rename/TemplateClassInstantiationFindByTypeUse.cpp44
-rw-r--r--clang-tools-extra/test/clang-rename/TemplateFunctionFindByDeclaration.cpp20
-rw-r--r--clang-tools-extra/test/clang-rename/TemplateFunctionFindByUse.cpp17
-rw-r--r--clang-tools-extra/test/clang-rename/TemplateTypenameFindByTemplateParam.cpp22
-rw-r--r--clang-tools-extra/test/clang-rename/TemplateTypenameFindByTypeInside.cpp22
-rw-r--r--clang-tools-extra/test/clang-rename/UserDefinedConversionFindByTypeDeclaration.cpp8
11 files changed, 230 insertions, 25 deletions
diff --git a/clang-tools-extra/test/clang-rename/ClassAsTemplateArgumentFindByClass.cpp b/clang-tools-extra/test/clang-rename/ClassAsTemplateArgumentFindByClass.cpp
new file mode 100644
index 00000000000..19015a28013
--- /dev/null
+++ b/clang-tools-extra/test/clang-rename/ClassAsTemplateArgumentFindByClass.cpp
@@ -0,0 +1,20 @@
+// RUN: cat %s > %t.cpp
+// RUN: clang-rename -offset=136 -new-name=Bar %t.cpp -i --
+// RUN: sed 's,//.*,,' %t.cpp | FileCheck %s
+
+class Foo {}; // CHECK: class Bar {};
+
+template <typename T>
+void func() {}
+
+template <typename T>
+class Baz {};
+
+int main() {
+ func<Foo>(); // CHECK: func<Bar>();
+ Baz<Foo> obj; // CHECK: Baz<Bar> obj;
+ return 0;
+}
+
+// Use grep -FUbo 'Foo' <file> to get the correct offset of Foo when changing
+// this file.
diff --git a/clang-tools-extra/test/clang-rename/ClassAsTemplateArgumentFindByTemplateArgument.cpp b/clang-tools-extra/test/clang-rename/ClassAsTemplateArgumentFindByTemplateArgument.cpp
new file mode 100644
index 00000000000..7fdf911fa41
--- /dev/null
+++ b/clang-tools-extra/test/clang-rename/ClassAsTemplateArgumentFindByTemplateArgument.cpp
@@ -0,0 +1,20 @@
+// RUN: cat %s > %t.cpp
+// RUN: clang-rename -offset=304 -new-name=Bar %t.cpp -i --
+// RUN: sed 's,//.*,,' %t.cpp | FileCheck %s
+
+class Foo {}; // CHECK: class Bar {};
+
+template <typename T>
+void func() {}
+
+template <typename T>
+class Baz {};
+
+int main() {
+ func<Foo>(); // CHECK: func<Bar>();
+ Baz<Foo> obj; // CHECK: Baz<Bar> obj;
+ return 0;
+}
+
+// Use grep -FUbo 'Foo' <file> to get the correct offset of Cla when changing
+// this file.
diff --git a/clang-tools-extra/test/clang-rename/ClassNameInFunctionDefenition.cpp b/clang-tools-extra/test/clang-rename/ClassNameInFunctionDefenition.cpp
index c0e5f073170..1b2d59e1862 100644
--- a/clang-tools-extra/test/clang-rename/ClassNameInFunctionDefenition.cpp
+++ b/clang-tools-extra/test/clang-rename/ClassNameInFunctionDefenition.cpp
@@ -1,17 +1,10 @@
-// Currently unsupported test.
// RUN: cat %s > %t.cpp
-// FIXME: clang-rename doesn't recognize symbol in class function definition.
+// RUN: clang-rename -offset=136 -new-name=Bar %t.cpp -i --
+// RUN: sed 's,//.*,,' %t.cpp | FileCheck %s
-class Foo {
+class Foo { // CHECK: class Bar {
public:
void foo(int x);
};
-void Foo::foo(int x) {}
-// ^ this one
-
-int main() {
- Foo obj;
- obj.foo(0);
- return 0;
-}
+void Foo::foo(int x) {} // CHECK: void Bar::foo(int x) {}
diff --git a/clang-tools-extra/test/clang-rename/ComplicatedClassType.cpp b/clang-tools-extra/test/clang-rename/ComplicatedClassType.cpp
index 80daeabff69..6e888bdb059 100644
--- a/clang-tools-extra/test/clang-rename/ComplicatedClassType.cpp
+++ b/clang-tools-extra/test/clang-rename/ComplicatedClassType.cpp
@@ -1,30 +1,31 @@
-// Unsupported test.
// RUN: cat %s > %t.cpp
-// FIXME: This test contains very simple constructions likely to be seen in any
-// project and therefore passing this test is a slight sign of success.
-// Currently, the test fails badly.
+// RUN: clang-rename -offset=220 -new-name=Bar %t.cpp -i --
+// RUN: sed 's,//.*,,' %t.cpp | FileCheck %s
+
+// Forward declaration.
+class Foo; // CHECK: class Bar;
class Foo { // CHECK: class Bar {
- public:
- Foo(int value = 0) : x(value) {} // Bar(int value=0) : x(value) {}
+public:
+ Foo(int value = 0) : x(value) {} // CHECK: Bar(int value = 0) : x(value) {}
- Foo& operator++(int) { // Bar& operator++(int) {
+ Foo &operator++(int) { // CHECK: Bar &operator++(int) {
x++;
return *this;
}
- bool operator<(Foo const& rhs) { // bool operator<(Bar const &rhs) {
+ bool operator<(Foo const &rhs) { // CHECK: bool operator<(Bar const &rhs) {
return this->x < rhs.x;
}
- private:
+private:
int x;
};
int main() {
- Foo* Pointer = 0; // CHECK: Bar *Pointer = 0;
+ Foo *Pointer = 0; // CHECK: Bar *Pointer = 0;
Foo Variable = Foo(10); // CHECK: Bar Variable = Bar(10);
- for (Foo it; it < Variable; it++) { // for (Bar it; it < Variable; it++) {}
+ for (Foo it; it < Variable; it++) { // CHECK: for (Bar it; it < Variable; it++) {
}
return 0;
}
diff --git a/clang-tools-extra/test/clang-rename/TemplateClassInstantiationFindByDeclaration.cpp b/clang-tools-extra/test/clang-rename/TemplateClassInstantiationFindByDeclaration.cpp
new file mode 100644
index 00000000000..0775e03fa48
--- /dev/null
+++ b/clang-tools-extra/test/clang-rename/TemplateClassInstantiationFindByDeclaration.cpp
@@ -0,0 +1,44 @@
+// RUN: cat %s > %t.cpp
+// RUN: clang-rename -offset=287 -new-name=Bar %t.cpp -i --
+// RUN: sed 's,//.*,,' %t.cpp | FileCheck %s
+
+// Currently unsupported test.
+// FIXME: clang-rename should be able to rename classes with templates
+// correctly.
+// XFAIL: *
+
+template <typename T>
+class Foo { // CHECK: class Bar;
+public:
+ T foo(T arg, T& ref, T* ptr) {
+ T value;
+ int number = 42;
+ value = (T)number;
+ value = static_cast<T>(number);
+ return value;
+ }
+ static void foo(T value) {}
+ T member;
+};
+
+template <typename T>
+void func() {
+ Foo<T> obj; // CHECK: Bar<T> obj;
+ obj.member = T();
+ Foo<T>::foo(); // CHECK: Bar<T>::foo();
+}
+
+int main() {
+ Foo<int> i; // CHECK: Bar<int> i;
+ i.member = 0;
+ Foo<int>::foo(0); // CHECK: Bar<int>::foo(0);
+
+ Foo<bool> b; // CHECK: Bar<bool> b;
+ b.member = false;
+ Foo<bool>::foo(false); // CHECK: Bar<bool>::foo(false);
+
+ return 0;
+}
+
+// Use grep -FUbo 'C' <file> to get the correct offset of foo when changing
+// this file.
diff --git a/clang-tools-extra/test/clang-rename/TemplateClassInstantiationFindByTypeUse.cpp b/clang-tools-extra/test/clang-rename/TemplateClassInstantiationFindByTypeUse.cpp
new file mode 100644
index 00000000000..08f738af750
--- /dev/null
+++ b/clang-tools-extra/test/clang-rename/TemplateClassInstantiationFindByTypeUse.cpp
@@ -0,0 +1,44 @@
+// RUN: cat %s > %t.cpp
+// RUN: clang-rename -offset=703 -new-name=Bar %t.cpp -i --
+// RUN: sed 's,//.*,,' %t.cpp | FileCheck %s
+
+// Currently unsupported test.
+// FIXME: clang-rename should be able to rename classes with templates
+// correctly.
+// XFAIL: *
+
+template <typename T>
+class Foo { // CHECK: class Bar;
+public:
+ T foo(T arg, T& ref, T* ptr) {
+ T value;
+ int number = 42;
+ value = (T)number;
+ value = static_cast<T>(number);
+ return value;
+ }
+ static void foo(T value) {}
+ T member;
+};
+
+template <typename T>
+void func() {
+ Foo<T> obj; // CHECK: Bar<T> obj;
+ obj.member = T();
+ Foo<T>::foo(); // CHECK: Bar<T>::foo();
+}
+
+int main() {
+ Foo<int> i; // CHECK: Bar<int> i;
+ i.member = 0;
+ Foo<int>::foo(0); // CHECK: Bar<int>::foo(0);
+
+ Foo<bool> b; // CHECK: Bar<bool> b;
+ b.member = false;
+ Foo<bool>::foo(false); // CHECK: Bar<bool>::foo(false);
+
+ return 0;
+}
+
+// Use grep -FUbo 'Foo' <file> to get the correct offset of foo when changing
+// this file.
diff --git a/clang-tools-extra/test/clang-rename/TemplateFunctionFindByDeclaration.cpp b/clang-tools-extra/test/clang-rename/TemplateFunctionFindByDeclaration.cpp
new file mode 100644
index 00000000000..b79dba4cffc
--- /dev/null
+++ b/clang-tools-extra/test/clang-rename/TemplateFunctionFindByDeclaration.cpp
@@ -0,0 +1,20 @@
+// RUN: cat %s > %t.cpp
+// RUN: clang-rename -offset=241 -new-name=bar %t.cpp -i --
+// RUN: sed 's,//.*,,' %t.cpp | FileCheck %s
+
+// FIXME: clang-rename should be able to rename functions with templates.
+// XFAIL: *
+
+template <typename T>
+T foo(T value) { // CHECK: T boo(T value) {
+ return value;
+}
+
+int main() {
+ foo<bool>(false); // CHECK: bar<bool>(false);
+ foo<int>(0); // CHECK: bar<int>(0);
+ return 0;
+}
+
+// Use grep -FUbo 'foo' <file> to get the correct offset of foo when changing
+// this file.
diff --git a/clang-tools-extra/test/clang-rename/TemplateFunctionFindByUse.cpp b/clang-tools-extra/test/clang-rename/TemplateFunctionFindByUse.cpp
new file mode 100644
index 00000000000..b307732f3f7
--- /dev/null
+++ b/clang-tools-extra/test/clang-rename/TemplateFunctionFindByUse.cpp
@@ -0,0 +1,17 @@
+// RUN: cat %s > %t.cpp
+// RUN: clang-rename -offset=290 -new-name=Bar %t.cpp -i --
+// RUN: sed 's,//.*,,' %t.cpp | FileCheck %s
+
+// FIXME: clang-rename should be able to rename functions with templates.
+// XFAIL: *
+
+template <typename T>
+T foo(T value) {
+ return value;
+}
+
+int main() {
+ foo<bool>(false);
+ foo<int>(0);
+ return 0;
+}
diff --git a/clang-tools-extra/test/clang-rename/TemplateTypenameFindByTemplateParam.cpp b/clang-tools-extra/test/clang-rename/TemplateTypenameFindByTemplateParam.cpp
new file mode 100644
index 00000000000..77b6b3e9f0f
--- /dev/null
+++ b/clang-tools-extra/test/clang-rename/TemplateTypenameFindByTemplateParam.cpp
@@ -0,0 +1,22 @@
+// RUN: cat %s > %t.cpp
+// RUN: clang-rename -offset=270 -new-name=U %t.cpp -i --
+// RUN: sed 's,//.*,,' %t.cpp | FileCheck %s
+
+// Currently unsupported test.
+// FIXME: clang-rename should be able to rename template parameters correctly.
+// XFAIL: *
+
+template <typename T> // CHECK: template <typename U>
+class Foo {
+T foo(T arg, T& ref, T* ptr) { // CHECK: U foo(U arg, U& ref, U* ptr) {
+ T value; // CHECK: U value;
+ int number = 42;
+ value = (T)number; // CHECK: value = (U)number;
+ value = static_cast<T>(number); // CHECK: value = static_cast<U>(number);
+ return value;
+}
+
+static void foo(T value) {} // CHECK: static void foo(U value) {}
+
+T member; // CHECK: U member;
+};
diff --git a/clang-tools-extra/test/clang-rename/TemplateTypenameFindByTypeInside.cpp b/clang-tools-extra/test/clang-rename/TemplateTypenameFindByTypeInside.cpp
new file mode 100644
index 00000000000..a7d822b99a5
--- /dev/null
+++ b/clang-tools-extra/test/clang-rename/TemplateTypenameFindByTypeInside.cpp
@@ -0,0 +1,22 @@
+// RUN: cat %s > %t.cpp
+// RUN: clang-rename -offset=350 -new-name=U %t.cpp -i --
+// RUN: sed 's,//.*,,' %t.cpp | FileCheck %s
+
+// Currently unsupported test.
+// FIXME: clang-rename should be able to rename template parameters correctly.
+// XFAIL: *
+
+template <typename T> // CHECK: template <typename U>
+class Foo {
+T foo(T arg, T& ref, T* ptr) { // CHECK: U foo(U arg, U& ref, U* ptr) {
+ T value; // CHECK: U value;
+ int number = 42;
+ value = (T)number; // CHECK: value = (U)number;
+ value = static_cast<T>(number); // CHECK: value = static_cast<U>(number);
+ return value;
+}
+
+static void foo(T value) {} // CHECK: static void foo(U value) {}
+
+T member; // CHECK: U member;
+};
diff --git a/clang-tools-extra/test/clang-rename/UserDefinedConversionFindByTypeDeclaration.cpp b/clang-tools-extra/test/clang-rename/UserDefinedConversionFindByTypeDeclaration.cpp
index af85a2ca585..271a5663ae9 100644
--- a/clang-tools-extra/test/clang-rename/UserDefinedConversionFindByTypeDeclaration.cpp
+++ b/clang-tools-extra/test/clang-rename/UserDefinedConversionFindByTypeDeclaration.cpp
@@ -1,7 +1,6 @@
-// Currently unsupported test.
// RUN: cat %s > %t.cpp
-// FIXME: while renaming class/struct clang-rename should be able to change
-// this type name corresponding user-defined conversions, too.
+// RUN: clang-rename -offset=136 -new-name=Bar %t.cpp -i --
+// RUN: sed 's,//.*,,' %t.cpp | FileCheck %s
class Foo { // CHECK: class Bar {
// ^ offset must be here
@@ -22,3 +21,6 @@ int main() {
Foo foo = static_cast<Foo>(boo); // CHECK: Bar foo = static_cast<Bar>(boo);
return 0;
}
+
+// Use grep -FUbo 'Foo' <file> to get the correct offset of Cla when changing
+// this file.
OpenPOWER on IntegriCloud