| // RUN: clang-refactor local-rename -selection=test:%s -new-name=bar %s -- | grep -v CHECK | FileCheck %s | |
| struct Struct { | |
| int /*range f=*/field; | |
| }; | |
| struct Struct2 { | |
| Struct /*range array=*/array[4][2]; | |
| }; | |
| void foo() { | |
| (void)__builtin_offsetof(Struct, /*range f=*/field); | |
| (void)__builtin_offsetof(Struct2, /*range array=*/array[1][0]./*range f=*/field); | |
| } | |
| #define OFFSET_OF_(X, Y) __builtin_offsetof(X, Y) | |
| class SubclassOffsetof : public Struct { | |
| void foo() { | |
| (void)OFFSET_OF_(SubclassOffsetof, field); | |
| } | |
| }; | |
| // CHECK: 2 'array' results: | |
| // CHECK: Struct /*range array=*/bar[4][2]; | |
| // CHECK: __builtin_offsetof(Struct2, /*range array=*/bar[1][0]./*range f=*/field); | |
| // CHECK: 3 'f' results: | |
| // CHECK: int /*range f=*/bar; | |
| // CHECK: __builtin_offsetof(Struct, /*range f=*/bar); | |
| // CHECK-NEXT: __builtin_offsetof(Struct2, /*range array=*/array[1][0]./*range f=*/bar); | |
| // CHECK: OFFSET_OF_(SubclassOffsetof, bar); |