1// Test is line- and column-sensitive. Run lines are below 2 3/// Foo docs 4struct Foo { 5 /// Bar docs 6 int bar; 7}; 8 9/// Base docs 10@interface Base 11/// Base property docs 12@property struct Foo baseProperty; 13 14/// Base method docs 15- (void)baseMethodWithArg:(int)arg; 16@end 17 18/// Protocol docs 19@protocol Protocol 20/// Protocol property docs 21@property struct Foo protocolProperty; 22@end 23 24/// Derived docs 25@interface Derived: Base 26/// Derived method docs 27- (void)derivedMethodWithValue:(id<Protocol>)value; 28@end 29 30@implementation Derived 31- (void)derivedMethodWithValue:(id<Protocol>)value { 32 int a = 5; 33} 34/// Impl only docs 35- (void)implOnlyMethod { } 36@end 37 38// RUN: c-index-test -single-symbol-sgf-at=%s:4:9 local %s | FileCheck -check-prefix=CHECK-FOO %s 39// CHECK-FOO: "parentContexts":[{"kind":"objective-c.struct","name":"Foo","usr":"c:@S@Foo"}] 40// CHECK-FOO: "relatedSymbols":[] 41// CHECK-FOO: "relationships":[] 42// CHECK-FOO: "text":"Foo docs" 43// CHECK-FOO: "kind":{"displayName":"Structure","identifier":"objective-c.struct"} 44// CHECK-FOO: "title":"Foo" 45 46// RUN: c-index-test -single-symbol-sgf-at=%s:6:9 local %s | FileCheck -check-prefix=CHECK-BAR %s 47// CHECK-BAR: "parentContexts":[{"kind":"objective-c.struct","name":"Foo","usr":"c:@S@Foo"},{"kind":"objective-c.property","name":"bar","usr":"c:@S@Foo@FI@bar"}] 48// CHECK-BAR: "relatedSymbols":[] 49// CHECK-BAR: "relationships":[{"kind":"memberOf","source":"c:@S@Foo@FI@bar","target":"c:@S@Foo" 50// CHECK-BAR: "text":"Bar docs" 51// CHECK-BAR: "kind":{"displayName":"Instance Property","identifier":"objective-c.property"} 52// CHECK-BAR: "title":"bar" 53 54// RUN: c-index-test -single-symbol-sgf-at=%s:10:11 local %s | FileCheck -check-prefix=CHECK-BASE %s 55// CHECK-BASE: "parentContexts":[{"kind":"objective-c.class","name":"Base","usr":"c:objc(cs)Base"}] 56// CHECK-BASE: "relatedSymbols":[] 57// CHECK-BASE: "relationships":[] 58// CHECK-BASE: "text":"Base docs" 59// CHECK-BASE: "kind":{"displayName":"Class","identifier":"objective-c.class"} 60// CHECK-BASE: "title":"Base" 61 62// RUN: c-index-test -single-symbol-sgf-at=%s:12:25 local %s | FileCheck -check-prefix=CHECK-BASE-PROP %s 63// CHECK-BASE-PROP: "parentContexts":[{"kind":"objective-c.class","name":"Base","usr":"c:objc(cs)Base"},{"kind":"objective-c.property","name":"baseProperty","usr":"c:objc(cs)Base(py)baseProperty"}] 64// CHECK-BASE-PROP: "relatedSymbols":[{"accessLevel":"public","declarationLanguage":"objective-c" 65// CHECK-BASE-PROP: "isSystem":false 66// CHECK-BASE-PROP: "usr":"c:@S@Foo"}] 67// CHECK-BASE-PROP: "relationships":[{"kind":"memberOf","source":"c:objc(cs)Base(py)baseProperty","target":"c:objc(cs)Base" 68// CHECK-BASE-PROP: "text":"Base property docs" 69// CHECK-BASE-PROP: "kind":{"displayName":"Instance Property","identifier":"objective-c.property"} 70// CHECK-BASE-PROP: "title":"baseProperty" 71 72// RUN: c-index-test -single-symbol-sgf-at=%s:15:9 local %s | FileCheck -check-prefix=CHECK-BASE-METHOD %s 73// CHECK-BASE-METHOD: "parentContexts":[{"kind":"objective-c.class","name":"Base","usr":"c:objc(cs)Base"},{"kind":"objective-c.method","name":"baseMethodWithArg:","usr":"c:objc(cs)Base(im)baseMethodWithArg:"}] 74// CHECK-BASE-METHOD: "relatedSymbols":[] 75// CHECK-BASE-METHOD: "relationships":[{"kind":"memberOf","source":"c:objc(cs)Base(im)baseMethodWithArg:","target":"c:objc(cs)Base" 76// CHECK-BASE-METHOD: "text":"Base method docs" 77// CHECK-BASE-METHOD: "kind":{"displayName":"Instance Method","identifier":"objective-c.method"} 78// CHECK-BASE-METHOD: "title":"baseMethodWithArg:" 79 80// RUN: c-index-test -single-symbol-sgf-at=%s:19:11 local %s | FileCheck -check-prefix=CHECK-PROTOCOL %s 81// CHECK-PROTOCOL: "parentContexts":[{"kind":"objective-c.protocol","name":"Protocol","usr":"c:objc(pl)Protocol"}] 82// CHECK-PROTOCOL: "relatedSymbols":[] 83// CHECK-PROTOCOL: "relationships":[] 84// CHECK-PROTOCOL: "text":"Protocol docs" 85// CHECK-PROTOCOL: "kind":{"displayName":"Protocol","identifier":"objective-c.protocol"} 86// CHECK-PROTOCOL: "title":"Protocol" 87 88// RUN: c-index-test -single-symbol-sgf-at=%s:21:27 local %s | FileCheck -check-prefix=CHECK-PROTOCOL-PROP %s 89// CHECK-PROTOCOL-PROP: "parentContexts":[{"kind":"objective-c.protocol","name":"Protocol","usr":"c:objc(pl)Protocol"},{"kind":"objective-c.property","name":"protocolProperty","usr":"c:objc(pl)Protocol(py)protocolProperty"}] 90// CHECK-PROTOCOL-PROP: "relatedSymbols":[{"accessLevel":"public","declarationLanguage":"objective-c" 91// CHECK-PROTOCOL-PROP: "isSystem":false 92// CHECK-PROTOCOL-PROP: "usr":"c:@S@Foo"}] 93// CHECK-PROTOCOL-PROP: "relationships":[{"kind":"memberOf","source":"c:objc(pl)Protocol(py)protocolProperty","target":"c:objc(pl)Protocol" 94// CHECK-PROTOCOL-PROP: "text":"Protocol property docs" 95// CHECK-PROTOCOL-PROP: "kind":{"displayName":"Instance Property","identifier":"objective-c.property"} 96// CHECK-PROTOCOL-PROP: "title":"protocolProperty" 97 98// RUN: c-index-test -single-symbol-sgf-at=%s:25:15 local %s | FileCheck -check-prefix=CHECK-DERIVED %s 99// CHECK-DERIVED: "parentContexts":[{"kind":"objective-c.class","name":"Derived","usr":"c:objc(cs)Derived"}] 100// CHECK-DERIVED: "relatedSymbols":[{"accessLevel":"public","declarationLanguage":"objective-c" 101// CHECK-DERIVED: "isSystem":false 102// CHECK-DERIVED: "usr":"c:objc(cs)Base"}] 103// CHECK-DERIVED: "relationships":[{"kind":"inheritsFrom","source":"c:objc(cs)Derived","target":"c:objc(cs)Base" 104// CHECK-DERIVED: "text":"Derived docs" 105// CHECK-DERIVED: "kind":{"displayName":"Class","identifier":"objective-c.class"} 106// CHECK-DERIVED: "title":"Derived" 107 108// RUN: c-index-test -single-symbol-sgf-at=%s:27:11 local %s | FileCheck -check-prefix=CHECK-DERIVED-METHOD %s 109// CHECK-DERIVED-METHOD: "parentContexts":[{"kind":"objective-c.class","name":"Derived","usr":"c:objc(cs)Derived"},{"kind":"objective-c.method","name":"derivedMethodWithValue:","usr":"c:objc(cs)Derived(im)derivedMethodWithValue:"}] 110// CHECK-DERIVED-METHOD: "relatedSymbols":[] 111// CHECK-DERIVED-METHOD: "relationships":[{"kind":"memberOf","source":"c:objc(cs)Derived(im)derivedMethodWithValue:","target":"c:objc(cs)Derived" 112// CHECK-DERIVED-METHOD: "text":"Derived method docs" 113// CHECK-DERIVED-METHOD: "kind":{"displayName":"Instance Method","identifier":"objective-c.method"} 114// CHECK-DERIVED-METHOD: "title":"derivedMethodWithValue:" 115 116// RUN: c-index-test -single-symbol-sgf-at=%s:31:11 local %s | FileCheck -check-prefix=CHECK-DERIVED-METHOD-IMPL %s 117// CHECK-DERIVED-METHOD-IMPL: "parentContexts":[{"kind":"objective-c.class","name":"Derived","usr":"c:objc(cs)Derived"},{"kind":"objective-c.method","name":"derivedMethodWithValue:","usr":"c:objc(cs)Derived(im)derivedMethodWithValue:"}] 118// CHECK-DERIVED-METHOD-IMPL: "relatedSymbols":[] 119// CHECK-DERIVED-METHOD-IMPL: "relationships":[{"kind":"memberOf","source":"c:objc(cs)Derived(im)derivedMethodWithValue:","target":"c:objc(cs)Derived" 120// CHECK-DERIVED-METHOD-IMPL: "text":"Derived method docs" 121// CHECK-DERIVED-METHOD-IMPL: "kind":{"displayName":"Instance Method","identifier":"objective-c.method"} 122// CHECK-DERIVED-METHOD-IMPL: "title":"derivedMethodWithValue:" 123 124// RUN: c-index-test -single-symbol-sgf-at=%s:35:11 local %s | FileCheck -check-prefix=CHECK-IMPL-ONLY %s 125// CHECK-IMPL-ONLY: "relatedSymbols":[] 126// CHECK-IMPL-ONLY: "relationships":[{"kind":"memberOf","source":"c:objc(cs)Derived(im)implOnlyMethod","target":"c:objc(cs)Derived" 127// CHECK-IMPL-ONLY: "text":"Impl only docs" 128// CHECK-IMPL-ONLY: "kind":{"displayName":"Instance Method","identifier":"objective-c.method"} 129// CHECK-IMPL-ONLY: "title":"implOnlyMethod" 130