1*67e74705SXin Li@interface Other { 2*67e74705SXin Li@private 3*67e74705SXin Li int other_private; 4*67e74705SXin Li@protected 5*67e74705SXin Li int other_protected; 6*67e74705SXin Li@public 7*67e74705SXin Li int other_public; 8*67e74705SXin Li} 9*67e74705SXin Li@end 10*67e74705SXin Li 11*67e74705SXin Li@interface Super { 12*67e74705SXin Li@private 13*67e74705SXin Li int super_private; 14*67e74705SXin Li@protected 15*67e74705SXin Li int super_protected; 16*67e74705SXin Li@public 17*67e74705SXin Li int super_public; 18*67e74705SXin Li} 19*67e74705SXin Li@end 20*67e74705SXin Li 21*67e74705SXin Li@interface Super () { 22*67e74705SXin Li@private 23*67e74705SXin Li int super_ext_private; 24*67e74705SXin Li@protected 25*67e74705SXin Li int super_ext_protected; 26*67e74705SXin Li@public 27*67e74705SXin Li int super_ext_public; 28*67e74705SXin Li} 29*67e74705SXin Li@end 30*67e74705SXin Li 31*67e74705SXin Li@interface Sub : Super { 32*67e74705SXin Li@private 33*67e74705SXin Li int sub_private; 34*67e74705SXin Li@protected 35*67e74705SXin Li int sub_protected; 36*67e74705SXin Li@public 37*67e74705SXin Li int sub_public; 38*67e74705SXin Li} 39*67e74705SXin Li@end 40*67e74705SXin Li 41*67e74705SXin Li@implementation Sub 42*67e74705SXin Li- (void)method:(Sub *)sub with:(Other *)other { 43*67e74705SXin Li sub->super_protected = 1; 44*67e74705SXin Li other->other_public = 1; 45*67e74705SXin Li} 46*67e74705SXin Li 47*67e74705SXin Livoid f(Sub *sub, Other *other) { 48*67e74705SXin Li sub->super_protected = 1; 49*67e74705SXin Li other->other_public = 1; 50*67e74705SXin Li} 51*67e74705SXin Li@end 52*67e74705SXin Li 53*67e74705SXin Li// RUN: c-index-test -code-completion-at=%s:43:8 -fobjc-nonfragile-abi %s | FileCheck -check-prefix=CHECK-SUB %s 54*67e74705SXin Li// RUN: c-index-test -code-completion-at=%s:48:8 -fobjc-nonfragile-abi %s | FileCheck -check-prefix=CHECK-SUB %s 55*67e74705SXin Li// CHECK-SUB: ObjCIvarDecl:{ResultType int}{TypedText sub_private} (35) 56*67e74705SXin Li// CHECK-SUB: ObjCIvarDecl:{ResultType int}{TypedText sub_protected} (35) 57*67e74705SXin Li// CHECK-SUB: ObjCIvarDecl:{ResultType int}{TypedText sub_public} (35) 58*67e74705SXin Li// CHECK-SUB: ObjCIvarDecl:{ResultType int}{TypedText super_ext_private} (35) (inaccessible) 59*67e74705SXin Li// CHECK-SUB: ObjCIvarDecl:{ResultType int}{TypedText super_ext_protected} (35) 60*67e74705SXin Li// CHECK-SUB: ObjCIvarDecl:{ResultType int}{TypedText super_ext_public} (35) 61*67e74705SXin Li// CHECK-SUB: ObjCIvarDecl:{ResultType int}{TypedText super_private} (37) (inaccessible) 62*67e74705SXin Li// CHECK-SUB: ObjCIvarDecl:{ResultType int}{TypedText super_protected} (37) 63*67e74705SXin Li// CHECK-SUB: ObjCIvarDecl:{ResultType int}{TypedText super_public} (37) 64*67e74705SXin Li 65*67e74705SXin Li// RUN: c-index-test -code-completion-at=%s:44:10 -fobjc-nonfragile-abi %s | FileCheck -check-prefix=CHECK-OTHER %s 66*67e74705SXin Li// RUN: c-index-test -code-completion-at=%s:49:10 -fobjc-nonfragile-abi %s | FileCheck -check-prefix=CHECK-OTHER %s 67*67e74705SXin Li// CHECK-OTHER: ObjCIvarDecl:{ResultType int}{TypedText other_private} (35) (inaccessible) 68*67e74705SXin Li// CHECK-OTHER: ObjCIvarDecl:{ResultType int}{TypedText other_protected} (35) (inaccessible) 69*67e74705SXin Li// CHECK-OTHER: ObjCIvarDecl:{ResultType int}{TypedText other_public} (35) 70