155385fe3e723cd675001e45f42d61adde6b7f075Douglas Gregor/* Note: the RUN lines are near the end of the file, since line/column 255385fe3e723cd675001e45f42d61adde6b7f075Douglas Gregor matter for this test. */ 395ac6556a5dfc504491103c37f9aa05b303d2729Douglas Gregor 495ac6556a5dfc504491103c37f9aa05b303d2729Douglas Gregor@protocol MyProtocol 595ac6556a5dfc504491103c37f9aa05b303d2729Douglas Gregor@property float ProtoProp; 695ac6556a5dfc504491103c37f9aa05b303d2729Douglas Gregor@end 795ac6556a5dfc504491103c37f9aa05b303d2729Douglas Gregor 895ac6556a5dfc504491103c37f9aa05b303d2729Douglas Gregor@interface Super { 995ac6556a5dfc504491103c37f9aa05b303d2729Douglas Gregor int SuperIVar; 1095ac6556a5dfc504491103c37f9aa05b303d2729Douglas Gregor} 1195ac6556a5dfc504491103c37f9aa05b303d2729Douglas Gregor@end 1295ac6556a5dfc504491103c37f9aa05b303d2729Douglas Gregor@interface Int : Super<MyProtocol> 1395ac6556a5dfc504491103c37f9aa05b303d2729Douglas Gregor{ 1495ac6556a5dfc504491103c37f9aa05b303d2729Douglas Gregor int IVar; 1595ac6556a5dfc504491103c37f9aa05b303d2729Douglas Gregor} 1695ac6556a5dfc504491103c37f9aa05b303d2729Douglas Gregor 1795ac6556a5dfc504491103c37f9aa05b303d2729Douglas Gregor@property int prop1; 1895ac6556a5dfc504491103c37f9aa05b303d2729Douglas Gregor@end 1995ac6556a5dfc504491103c37f9aa05b303d2729Douglas Gregor 2095ac6556a5dfc504491103c37f9aa05b303d2729Douglas Gregorvoid test_props(Int* ptr) { 2195ac6556a5dfc504491103c37f9aa05b303d2729Douglas Gregor ptr.prop1 = 0; 2295ac6556a5dfc504491103c37f9aa05b303d2729Douglas Gregor ptr->IVar = 0; 2395ac6556a5dfc504491103c37f9aa05b303d2729Douglas Gregor} 2495ac6556a5dfc504491103c37f9aa05b303d2729Douglas Gregor 254b81cde48b8b56c219e8d665884f5f33139b5ecaDouglas Gregor@interface Sub : Int 264b81cde48b8b56c219e8d665884f5f33139b5ecaDouglas Gregor@property int myProp; 274b81cde48b8b56c219e8d665884f5f33139b5ecaDouglas Gregor 284b81cde48b8b56c219e8d665884f5f33139b5ecaDouglas Gregor- (int)myProp; 294b81cde48b8b56c219e8d665884f5f33139b5ecaDouglas Gregor- (int)myOtherPropLikeThing; 304b81cde48b8b56c219e8d665884f5f33139b5ecaDouglas Gregor- (int)myOtherNonPropThing:(int)value; 314b81cde48b8b56c219e8d665884f5f33139b5ecaDouglas Gregor@end 324b81cde48b8b56c219e8d665884f5f33139b5ecaDouglas Gregor 334b81cde48b8b56c219e8d665884f5f33139b5ecaDouglas Gregorint test_more_props(Sub *s) { 344b81cde48b8b56c219e8d665884f5f33139b5ecaDouglas Gregor return s.myOtherPropLikeThing; 354b81cde48b8b56c219e8d665884f5f33139b5ecaDouglas Gregor} 364b81cde48b8b56c219e8d665884f5f33139b5ecaDouglas Gregor 37f5cd27d7eef3fd4021545dd76a1faf7152fda344Douglas Gregor@interface Other 38f5cd27d7eef3fd4021545dd76a1faf7152fda344Douglas Gregor@property Sub *sub; 39f5cd27d7eef3fd4021545dd76a1faf7152fda344Douglas Gregor@end 40f5cd27d7eef3fd4021545dd76a1faf7152fda344Douglas Gregor 41f5cd27d7eef3fd4021545dd76a1faf7152fda344Douglas Gregorint test_two_levels(Other *other) { 42f5cd27d7eef3fd4021545dd76a1faf7152fda344Douglas Gregor return other.sub.myProp; 43f5cd27d7eef3fd4021545dd76a1faf7152fda344Douglas Gregor} 44f5cd27d7eef3fd4021545dd76a1faf7152fda344Douglas Gregor 4595ac6556a5dfc504491103c37f9aa05b303d2729Douglas Gregor// RUN: c-index-test -code-completion-at=%s:21:7 %s | FileCheck -check-prefix=CHECK-CC1 %s 46ff5ce6eefc7c253ef6edf4d4bfc996fdd82d09aaDouglas Gregor// CHECK-CC1: ObjCPropertyDecl:{ResultType int}{TypedText prop1} 47ff5ce6eefc7c253ef6edf4d4bfc996fdd82d09aaDouglas Gregor// CHECK-CC1: ObjCPropertyDecl:{ResultType float}{TypedText ProtoProp} 48e081a61bb0dc546fd623bf259435d17c9a4ea0d5Douglas Gregor// CHECK-CC1: Completion contexts: 49e081a61bb0dc546fd623bf259435d17c9a4ea0d5Douglas Gregor// CHECK-CC1-NEXT: Objective-C property access 50e081a61bb0dc546fd623bf259435d17c9a4ea0d5Douglas Gregor// CHECK-CC1-NEXT: Container Kind: ObjCInterfaceDecl 51e081a61bb0dc546fd623bf259435d17c9a4ea0d5Douglas Gregor// CHECK-CC1-NEXT: Container is complete 52e081a61bb0dc546fd623bf259435d17c9a4ea0d5Douglas Gregor// CHECK-CC1-NEXT: Container USR: c:objc(cs)Int 5395ac6556a5dfc504491103c37f9aa05b303d2729Douglas Gregor// RUN: c-index-test -code-completion-at=%s:22:8 %s | FileCheck -check-prefix=CHECK-CC2 %s 548ec904c151abf7ed0dc911258574a904ed97ff15Douglas Gregor// CHECK-CC2: ObjCIvarDecl:{ResultType int}{TypedText IVar} (35) 558ec904c151abf7ed0dc911258574a904ed97ff15Douglas Gregor// CHECK-CC2: ObjCIvarDecl:{ResultType int}{TypedText SuperIVar} (37) 56e081a61bb0dc546fd623bf259435d17c9a4ea0d5Douglas Gregor// CHECK-CC2: Completion contexts: 57e081a61bb0dc546fd623bf259435d17c9a4ea0d5Douglas Gregor// CHECK-CC2-NEXT: Arrow member access 58e081a61bb0dc546fd623bf259435d17c9a4ea0d5Douglas Gregor// CHECK-CC2-NEXT: Container Kind: ObjCInterfaceDecl 59e081a61bb0dc546fd623bf259435d17c9a4ea0d5Douglas Gregor// CHECK-CC2-NEXT: Container is complete 60e081a61bb0dc546fd623bf259435d17c9a4ea0d5Douglas Gregor// CHECK-CC2-NEXT: Container USR: c:objc(cs)Int 614b81cde48b8b56c219e8d665884f5f33139b5ecaDouglas Gregor// RUN: c-index-test -code-completion-at=%s:34:12 %s | FileCheck -check-prefix=CHECK-CC3 %s 624b81cde48b8b56c219e8d665884f5f33139b5ecaDouglas Gregor// CHECK-CC3: ObjCInstanceMethodDecl:{ResultType int}{TypedText myOtherPropLikeThing} (37) 634b81cde48b8b56c219e8d665884f5f33139b5ecaDouglas Gregor// CHECK-CC3: ObjCPropertyDecl:{ResultType int}{TypedText myProp} (35) 644b81cde48b8b56c219e8d665884f5f33139b5ecaDouglas Gregor// CHECK-CC3: ObjCPropertyDecl:{ResultType int}{TypedText prop1} (35) 654b81cde48b8b56c219e8d665884f5f33139b5ecaDouglas Gregor// CHECK-CC3: ObjCPropertyDecl:{ResultType float}{TypedText ProtoProp} (35) 66e081a61bb0dc546fd623bf259435d17c9a4ea0d5Douglas Gregor// CHECK-CC3: Completion contexts: 67e081a61bb0dc546fd623bf259435d17c9a4ea0d5Douglas Gregor// CHECK-CC3-NEXT: Objective-C property access 68e081a61bb0dc546fd623bf259435d17c9a4ea0d5Douglas Gregor// CHECK-CC3-NEXT: Container Kind: ObjCInterfaceDecl 69e081a61bb0dc546fd623bf259435d17c9a4ea0d5Douglas Gregor// CHECK-CC3-NEXT: Container is complete 70f5cd27d7eef3fd4021545dd76a1faf7152fda344Douglas Gregor// CHECK-CC3-NEXT: Container USR: c:objc(cs)Sub 71f5cd27d7eef3fd4021545dd76a1faf7152fda344Douglas Gregor 72f5cd27d7eef3fd4021545dd76a1faf7152fda344Douglas Gregor// RUN: c-index-test -code-completion-at=%s:42:20 %s | FileCheck -check-prefix=CHECK-CC4 %s 73f5cd27d7eef3fd4021545dd76a1faf7152fda344Douglas Gregor// CHECK-CC4: ObjCInstanceMethodDecl:{ResultType int}{TypedText myOtherPropLikeThing} (37) 74f5cd27d7eef3fd4021545dd76a1faf7152fda344Douglas Gregor// CHECK-CC4-NEXT: ObjCPropertyDecl:{ResultType int}{TypedText myProp} (35) 75f5cd27d7eef3fd4021545dd76a1faf7152fda344Douglas Gregor// CHECK-CC4-NEXT: ObjCPropertyDecl:{ResultType int}{TypedText prop1} (35) 76f5cd27d7eef3fd4021545dd76a1faf7152fda344Douglas Gregor// CHECK-CC4-NEXT: ObjCPropertyDecl:{ResultType float}{TypedText ProtoProp} (35) 77f5cd27d7eef3fd4021545dd76a1faf7152fda344Douglas Gregor 78