33 lines
		
	
	
		
			931 B
		
	
	
	
		
			C++
		
	
	
	
			
		
		
	
	
			33 lines
		
	
	
		
			931 B
		
	
	
	
		
			C++
		
	
	
	
// 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);
 |