1 struct A {
fooA2 virtual void foo() {} /* Test 1 */ // CHECK: virtual void bar() {}
3 };
4
5 struct B : A {
fooB6 void foo() override {} /* Test 2 */ // CHECK: void bar() override {}
7 };
8
9 struct C : B {
fooC10 void foo() override {} /* Test 3 */ // CHECK: void bar() override {}
11 };
12
13 struct D : B {
fooD14 void foo() override {} /* Test 4 */ // CHECK: void bar() override {}
15 };
16
17 struct E : D {
fooE18 void foo() override {} /* Test 5 */ // CHECK: void bar() override {}
19 };
20
main()21 int main() {
22 A a;
23 a.foo(); // CHECK: a.bar();
24 B b;
25 b.foo(); // CHECK: b.bar();
26 C c;
27 c.foo(); // CHECK: c.bar();
28 D d;
29 d.foo(); // CHECK: d.bar();
30 E e;
31 e.foo(); // CHECK: e.bar();
32 return 0;
33 }
34
35 // Test 1.
36 // RUN: clang-rename -offset=26 -new-name=bar %s -- | sed 's,//.*,,' | FileCheck %s
37 // Test 2.
38 // RUN: clang-rename -offset=109 -new-name=bar %s -- | sed 's,//.*,,' | FileCheck %s
39 // Test 3.
40 // RUN: clang-rename -offset=201 -new-name=bar %s -- | sed 's,//.*,,' | FileCheck %s
41 // Test 4.
42 // RUN: clang-rename -offset=293 -new-name=bar %s -- | sed 's,//.*,,' | FileCheck %s
43 // Test 5.
44 // RUN: clang-rename -offset=385 -new-name=bar %s -- | sed 's,//.*,,' | FileCheck %s
45
46 // To find offsets after modifying the file, use:
47 // grep -Ubo 'foo.*' <file>
48