blob: 493d0951df57b99327358033eda5c5eb80503a6c [file] [log] [blame]
Kirill Bobyrevd6ab7d42016-08-03 23:00:32 +00001template <typename T>
Kirill Bobyrev77f522c2016-08-10 13:28:30 +00002class Foo { /* Test 1 */ // CHECK: class Bar { /* Test 1 */
Kirill Bobyrevd6ab7d42016-08-03 23:00:32 +00003public:
4 T foo(T arg, T& ref, T* ptr) {
5 T value;
6 int number = 42;
7 value = (T)number;
8 value = static_cast<T>(number);
9 return value;
10 }
11 static void foo(T value) {}
12 T member;
13};
14
15template <typename T>
16void func() {
Kirill Bobyrev77f522c2016-08-10 13:28:30 +000017 Foo<T> obj; /* Test 2 */ // CHECK: Bar<T> obj;
Kirill Bobyrevd6ab7d42016-08-03 23:00:32 +000018 obj.member = T();
Kirill Bobyrev77f522c2016-08-10 13:28:30 +000019 Foo<T>::foo(); // CHECK: Bar<T>::foo();
Kirill Bobyrevd6ab7d42016-08-03 23:00:32 +000020}
21
22int main() {
Kirill Bobyrev77f522c2016-08-10 13:28:30 +000023 Foo<int> i; /* Test 3 */ // CHECK: Bar<int> i;
Kirill Bobyrevd6ab7d42016-08-03 23:00:32 +000024 i.member = 0;
Kirill Bobyrev77f522c2016-08-10 13:28:30 +000025 Foo<int>::foo(0); // CHECK: Bar<int>::foo(0);
Kirill Bobyrevd6ab7d42016-08-03 23:00:32 +000026
Kirill Bobyrev77f522c2016-08-10 13:28:30 +000027 Foo<bool> b; // CHECK: Bar<bool> b;
Kirill Bobyrevd6ab7d42016-08-03 23:00:32 +000028 b.member = false;
Kirill Bobyrev77f522c2016-08-10 13:28:30 +000029 Foo<bool>::foo(false); // CHECK: Bar<bool>::foo(false);
Kirill Bobyrevd6ab7d42016-08-03 23:00:32 +000030
31 return 0;
32}
33
Kirill Bobyrev77f522c2016-08-10 13:28:30 +000034// Test 1.
35// RUN: clang-rename -offset=29 -new-name=Bar %s -- -fno-delayed-template-parsing | sed 's,//.*,,' | FileCheck %s
36// Test 2.
37// RUN: clang-rename -offset=324 -new-name=Bar %s -- -fno-delayed-template-parsing | sed 's,//.*,,' | FileCheck %s
38// Test 3.
39// RUN: clang-rename -offset=463 -new-name=Bar %s -- -fno-delayed-template-parsing | sed 's,//.*,,' | FileCheck %s
Kirill Bobyrevd6ab7d42016-08-03 23:00:32 +000040
Kirill Bobyrev77f522c2016-08-10 13:28:30 +000041// To find offsets after modifying the file, use:
42// grep -Ubo 'Foo.*' <file>