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