1322328b8a65ad2e45829eb06d245addb64037f6fDouglas Gregor/* Note: the RUN lines are near the end of the file, since line/column 2322328b8a65ad2e45829eb06d245addb64037f6fDouglas Gregor matter for this test. */ 3d98abd8c68bd96e111a0bebdb90f38cf2a5632a2Douglas Gregor@class MyClass; 4322328b8a65ad2e45829eb06d245addb64037f6fDouglas Gregor@interface I1 5322328b8a65ad2e45829eb06d245addb64037f6fDouglas Gregor{ 6322328b8a65ad2e45829eb06d245addb64037f6fDouglas Gregor id StoredProp3; 7322328b8a65ad2e45829eb06d245addb64037f6fDouglas Gregor int RandomIVar; 8322328b8a65ad2e45829eb06d245addb64037f6fDouglas Gregor} 9424b2a546dbd09cf70d43087771c7fff851ca158Douglas Gregor@property int Prop0; 10322328b8a65ad2e45829eb06d245addb64037f6fDouglas Gregor@property int Prop1; 11322328b8a65ad2e45829eb06d245addb64037f6fDouglas Gregor@property float Prop2; 12322328b8a65ad2e45829eb06d245addb64037f6fDouglas Gregor@end 13322328b8a65ad2e45829eb06d245addb64037f6fDouglas Gregor 14322328b8a65ad2e45829eb06d245addb64037f6fDouglas Gregor@interface I2 : I1 15322328b8a65ad2e45829eb06d245addb64037f6fDouglas Gregor@property id Prop3; 16424b2a546dbd09cf70d43087771c7fff851ca158Douglas Gregor@property id Prop4; 17322328b8a65ad2e45829eb06d245addb64037f6fDouglas Gregor@end 18322328b8a65ad2e45829eb06d245addb64037f6fDouglas Gregor 19322328b8a65ad2e45829eb06d245addb64037f6fDouglas Gregor@implementation I2 20322328b8a65ad2e45829eb06d245addb64037f6fDouglas Gregor@synthesize Prop2, Prop1, Prop3 = StoredProp3; 21424b2a546dbd09cf70d43087771c7fff851ca158Douglas Gregor@dynamic Prop4; 22322328b8a65ad2e45829eb06d245addb64037f6fDouglas Gregor@end 23322328b8a65ad2e45829eb06d245addb64037f6fDouglas Gregor 247344921b22bebec4f86eb8eb865150b2978b5d2eDouglas Gregor@interface I3 : I2 257344921b22bebec4f86eb8eb865150b2978b5d2eDouglas Gregor@property id Prop3; 267344921b22bebec4f86eb8eb865150b2978b5d2eDouglas Gregor@end 277344921b22bebec4f86eb8eb865150b2978b5d2eDouglas Gregor 287344921b22bebec4f86eb8eb865150b2978b5d2eDouglas Gregorid test(I3 *i3) { 297344921b22bebec4f86eb8eb865150b2978b5d2eDouglas Gregor return i3.Prop3; 307344921b22bebec4f86eb8eb865150b2978b5d2eDouglas Gregor} 317344921b22bebec4f86eb8eb865150b2978b5d2eDouglas Gregor 32e84260513dc9fc17904c30c9400c5862a2d7fcb8Douglas Gregor@interface I4 33e84260513dc9fc17904c30c9400c5862a2d7fcb8Douglas Gregor@property id Prop2; 34e84260513dc9fc17904c30c9400c5862a2d7fcb8Douglas Gregor@end 35e84260513dc9fc17904c30c9400c5862a2d7fcb8Douglas Gregor 36e84260513dc9fc17904c30c9400c5862a2d7fcb8Douglas Gregor@interface I4 () { 37e84260513dc9fc17904c30c9400c5862a2d7fcb8Douglas Gregor I4 *Prop1; 38e84260513dc9fc17904c30c9400c5862a2d7fcb8Douglas Gregor} 39e84260513dc9fc17904c30c9400c5862a2d7fcb8Douglas Gregor@end 40e84260513dc9fc17904c30c9400c5862a2d7fcb8Douglas Gregor 41e84260513dc9fc17904c30c9400c5862a2d7fcb8Douglas Gregor@implementation I4 { 42e84260513dc9fc17904c30c9400c5862a2d7fcb8Douglas Gregor id Prop2_; 43e84260513dc9fc17904c30c9400c5862a2d7fcb8Douglas Gregor} 44e84260513dc9fc17904c30c9400c5862a2d7fcb8Douglas Gregor 45e84260513dc9fc17904c30c9400c5862a2d7fcb8Douglas Gregor@synthesize Prop2 = Prop2_; 46e84260513dc9fc17904c30c9400c5862a2d7fcb8Douglas Gregor@end 47e84260513dc9fc17904c30c9400c5862a2d7fcb8Douglas Gregor 48b92a4089db33ae9d44e015cf2dfd1e82fea88747Douglas Gregor@protocol P1 49b92a4089db33ae9d44e015cf2dfd1e82fea88747Douglas Gregor@property int Prop5; 50b92a4089db33ae9d44e015cf2dfd1e82fea88747Douglas Gregor@end 51b92a4089db33ae9d44e015cf2dfd1e82fea88747Douglas Gregor 52b92a4089db33ae9d44e015cf2dfd1e82fea88747Douglas Gregor@class P1; 53b92a4089db33ae9d44e015cf2dfd1e82fea88747Douglas Gregor 54b92a4089db33ae9d44e015cf2dfd1e82fea88747Douglas Gregor@interface I5<P1> 55b92a4089db33ae9d44e015cf2dfd1e82fea88747Douglas Gregor@end 56b92a4089db33ae9d44e015cf2dfd1e82fea88747Douglas Gregor@implementation I5 57b92a4089db33ae9d44e015cf2dfd1e82fea88747Douglas Gregor@synthesize Prop5; 58b92a4089db33ae9d44e015cf2dfd1e82fea88747Douglas Gregor@end 59424b2a546dbd09cf70d43087771c7fff851ca158Douglas Gregor// RUN: c-index-test -code-completion-at=%s:20:13 %s | FileCheck -check-prefix=CHECK-CC1 %s 60ff5ce6eefc7c253ef6edf4d4bfc996fdd82d09aaDouglas Gregor// CHECK-CC1: ObjCPropertyDecl:{ResultType int}{TypedText Prop0} 61ff5ce6eefc7c253ef6edf4d4bfc996fdd82d09aaDouglas Gregor// CHECK-CC1: ObjCPropertyDecl:{ResultType int}{TypedText Prop1} 62ff5ce6eefc7c253ef6edf4d4bfc996fdd82d09aaDouglas Gregor// CHECK-CC1: ObjCPropertyDecl:{ResultType float}{TypedText Prop2} 63ff5ce6eefc7c253ef6edf4d4bfc996fdd82d09aaDouglas Gregor// CHECK-CC1: ObjCPropertyDecl:{ResultType id}{TypedText Prop3} 64ff5ce6eefc7c253ef6edf4d4bfc996fdd82d09aaDouglas Gregor// CHECK-CC1: ObjCPropertyDecl:{ResultType id}{TypedText Prop4} 65424b2a546dbd09cf70d43087771c7fff851ca158Douglas Gregor// RUN: c-index-test -code-completion-at=%s:20:20 %s | FileCheck -check-prefix=CHECK-CC2 %s 66ff5ce6eefc7c253ef6edf4d4bfc996fdd82d09aaDouglas Gregor// CHECK-CC2: ObjCPropertyDecl:{ResultType int}{TypedText Prop0} 67ff5ce6eefc7c253ef6edf4d4bfc996fdd82d09aaDouglas Gregor// CHECK-CC2: ObjCPropertyDecl:{ResultType int}{TypedText Prop1} 68ff5ce6eefc7c253ef6edf4d4bfc996fdd82d09aaDouglas Gregor// CHECK-CC2-NEXT: ObjCPropertyDecl:{ResultType id}{TypedText Prop3} 69ff5ce6eefc7c253ef6edf4d4bfc996fdd82d09aaDouglas Gregor// CHECK-CC2: ObjCPropertyDecl:{ResultType id}{TypedText Prop4} 70424b2a546dbd09cf70d43087771c7fff851ca158Douglas Gregor// RUN: c-index-test -code-completion-at=%s:20:35 %s | FileCheck -check-prefix=CHECK-CC3 %s 71e84260513dc9fc17904c30c9400c5862a2d7fcb8Douglas Gregor// CHECK-CC3: ObjCIvarDecl:{ResultType id}{TypedText _Prop3} (36) 72aa490cb6a70e7ff0335bdc4c88619e00ff0dab25Douglas Gregor// CHECK-CC3: ObjCIvarDecl:{ResultType int}{TypedText RandomIVar} (35) 73e84260513dc9fc17904c30c9400c5862a2d7fcb8Douglas Gregor// CHECK-CC3: ObjCIvarDecl:{ResultType id}{TypedText StoredProp3} (8) 74aa490cb6a70e7ff0335bdc4c88619e00ff0dab25Douglas Gregor 75424b2a546dbd09cf70d43087771c7fff851ca158Douglas Gregor// RUN: c-index-test -code-completion-at=%s:21:10 %s | FileCheck -check-prefix=CHECK-CC4 %s 76ff5ce6eefc7c253ef6edf4d4bfc996fdd82d09aaDouglas Gregor// CHECK-CC4: ObjCPropertyDecl:{ResultType int}{TypedText Prop0} 77ff5ce6eefc7c253ef6edf4d4bfc996fdd82d09aaDouglas Gregor// CHECK-CC4-NEXT: ObjCPropertyDecl:{ResultType id}{TypedText Prop4} 787344921b22bebec4f86eb8eb865150b2978b5d2eDouglas Gregor 797344921b22bebec4f86eb8eb865150b2978b5d2eDouglas Gregor// RUN: c-index-test -code-completion-at=%s:29:13 %s | FileCheck -check-prefix=CHECK-CC5 %s 807344921b22bebec4f86eb8eb865150b2978b5d2eDouglas Gregor// CHECK-CC5: ObjCPropertyDecl:{ResultType int}{TypedText Prop0} (35) 817344921b22bebec4f86eb8eb865150b2978b5d2eDouglas Gregor// CHECK-CC5-NEXT: ObjCPropertyDecl:{ResultType int}{TypedText Prop1} (35) 827344921b22bebec4f86eb8eb865150b2978b5d2eDouglas Gregor// CHECK-CC5-NEXT: ObjCPropertyDecl:{ResultType float}{TypedText Prop2} (35) 837344921b22bebec4f86eb8eb865150b2978b5d2eDouglas Gregor// CHECK-CC5-NEXT: ObjCPropertyDecl:{ResultType id}{TypedText Prop3} (35) 847344921b22bebec4f86eb8eb865150b2978b5d2eDouglas Gregor// CHECK-CC5-NEXT: ObjCPropertyDecl:{ResultType id}{TypedText Prop4} (35) 857344921b22bebec4f86eb8eb865150b2978b5d2eDouglas Gregor 86d98abd8c68bd96e111a0bebdb90f38cf2a5632a2Douglas Gregor// RUN: c-index-test -code-completion-at=%s:9:11 %s | FileCheck -check-prefix=CHECK-CC6 %s 87d98abd8c68bd96e111a0bebdb90f38cf2a5632a2Douglas Gregor// CHECK-CC6: ObjCInterfaceDecl:{TypedText MyClass} (50) 88d98abd8c68bd96e111a0bebdb90f38cf2a5632a2Douglas Gregor 89e84260513dc9fc17904c30c9400c5862a2d7fcb8Douglas Gregor 90e84260513dc9fc17904c30c9400c5862a2d7fcb8Douglas Gregor// RUN: c-index-test -code-completion-at=%s:45:21 -fobjc-nonfragile-abi %s | FileCheck -check-prefix=CHECK-CC7 %s 91e84260513dc9fc17904c30c9400c5862a2d7fcb8Douglas Gregor// CHECK-CC7-NOT: ObjCIvarDecl:{ResultType id}{TypedText _Prop2} 92e84260513dc9fc17904c30c9400c5862a2d7fcb8Douglas Gregor// CHECK-CC7: ObjCIvarDecl:{ResultType I4 *}{TypedText Prop1} (17) 93e84260513dc9fc17904c30c9400c5862a2d7fcb8Douglas Gregor// CHECK-CC7: ObjCIvarDecl:{ResultType id}{TypedText Prop2_} (7) 94b92a4089db33ae9d44e015cf2dfd1e82fea88747Douglas Gregor 95b92a4089db33ae9d44e015cf2dfd1e82fea88747Douglas Gregor// RUN: c-index-test -code-completion-at=%s:57:13 -fobjc-nonfragile-abi %s | FileCheck -check-prefix=CHECK-CC8 %s 96b92a4089db33ae9d44e015cf2dfd1e82fea88747Douglas Gregor// CHECK-CC8: ObjCPropertyDecl:{ResultType int}{TypedText Prop5} (35) 97