Skip to content

Commit fdc74b4

Browse files
author
Nathan Hawes
committed
[indexer] Add further tests for roles and relations
1 parent 4bc7435 commit fdc74b4

File tree

1 file changed

+130
-32
lines changed

1 file changed

+130
-32
lines changed

test/Index/roles.swift

Lines changed: 130 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -60,50 +60,148 @@ func aCaller() {
6060
// CHECK-NEXT: RelCall | aCaller() | s:F14swift_ide_test7aCallerFT_T_
6161
}
6262

63-
struct aStruct {
63+
// RelationChildOf, Implicit
64+
struct AStruct {
6465
var x: Int
66+
// CHECK: [[@LINE-1]]:7 | instance-property/Swift | x | s:vV14swift_ide_test7AStruct1xSi | Def,RelChild | rel: 1
67+
// CHECK-NEXT: RelChild | AStruct | s:V14swift_ide_test7AStruct
68+
6569
mutating func aMethod() {
70+
// CHECK: [[@LINE-1]]:17 | instance-method/Swift | aMethod() | s:FV14swift_ide_test7AStruct7aMethodFT_T_ | Def,RelChild | rel: 1
71+
// CHECK-NEXT: RelChild | AStruct | s:V14swift_ide_test7AStruct
72+
6673
x += 1
67-
// CHECK: [[@LINE-1]]:5 | instance-property/Swift | x | s:vV14swift_ide_test7aStruct1xSi | Ref,Read,Writ | rel: 0
68-
// CHECK: [[@LINE-2]]:5 | accessor(get)/Swift | getter:x | s:FV14swift_ide_test7aStructg1xSi | Ref,Call,Impl,RelRec,RelCall | rel: 2
69-
// CHECK-NEXT: RelCall | x | s:vV14swift_ide_test7aStruct1xSi
70-
// CHECK-NEXT: RelRec | aStruct | s:V14swift_ide_test7aStruct
71-
// CHECK: [[@LINE-5]]:5 | accessor(set)/Swift | setter:x | s:FV14swift_ide_test7aStructs1xSi | Ref,Call,Impl,RelRec,RelCall | rel: 2
72-
// CHECK-NEXT: RelCall | x | s:vV14swift_ide_test7aStruct1xSi
73-
// CHECK-NEXT: RelRec | aStruct | s:V14swift_ide_test7aStruct
74+
// CHECK: [[@LINE-1]]:5 | instance-property/Swift | x | s:vV14swift_ide_test7AStruct1xSi | Ref,Read,Writ | rel: 0
75+
// CHECK: [[@LINE-2]]:5 | accessor(get)/Swift | getter:x | s:FV14swift_ide_test7AStructg1xSi | Ref,Call,Impl,RelRec,RelCall | rel: 2
76+
// CHECK-NEXT: RelCall | x | s:vV14swift_ide_test7AStruct1xSi
77+
// CHECK-NEXT: RelRec | AStruct | s:V14swift_ide_test7AStruct
78+
// CHECK: [[@LINE-5]]:5 | accessor(set)/Swift | setter:x | s:FV14swift_ide_test7AStructs1xSi | Ref,Call,Impl,RelRec,RelCall | rel: 2
79+
// CHECK-NEXT: RelCall | x | s:vV14swift_ide_test7AStruct1xSi
80+
// CHECK-NEXT: RelRec | AStruct | s:V14swift_ide_test7AStruct
7481
// CHECK: [[@LINE-8]]:7 | infix-operator/Swift | +=(_:_:) | s:Fsoi2peFTRSiSi_T_ | Ref,Call,RelCall | rel: 1
75-
// CHECK-NEXT: RelCall | aMethod() | s:FV14swift_ide_test7aStruct7aMethodFT_T_
82+
// CHECK-NEXT: RelCall | aMethod() | s:FV14swift_ide_test7AStruct7aMethodFT_T_
83+
}
84+
85+
// RelationChildOf, RelationAccessorOf
86+
subscript(index: Int) -> Int {
87+
// CHECK: [[@LINE-1]]:3 | subscript/Swift | subscript(_:) | s:iV14swift_ide_test7AStruct9subscriptFSiSi | Def,RelChild | rel: 1
88+
// CHECK-NEXT: RelChild | AStruct | s:V14swift_ide_test7AStruct
89+
90+
get {
91+
// CHECK: [[@LINE-1]]:5 | accessor(get)/Swift | getter:subscript(_:) | s:FV14swift_ide_test7AStructg9subscriptFSiSi | Def,RelChild,RelAcc | rel: 1
92+
// CHECK-NEXT: RelChild,RelAcc | subscript(_:) | s:iV14swift_ide_test7AStruct9subscriptFSiSi
93+
94+
return x
95+
}
96+
set {
97+
// CHECK: [[@LINE-1]]:5 | accessor(set)/Swift | setter:subscript(_:) | s:FV14swift_ide_test7AStructs9subscriptFSiSi | Def,RelChild,RelAcc | rel: 1
98+
// CHECK-NEXT: RelChild,RelAcc | subscript(_:) | s:iV14swift_ide_test7AStruct9subscriptFSiSi
99+
100+
x = newValue
101+
}
76102
}
77103
}
78104

79-
class aClass {
80-
var y: aStruct;
105+
class AClass {
106+
var y: AStruct;
107+
var z: [Int]
81108

82109
init(x: Int) {
83-
y = aStruct(x: x)
110+
y = AStruct(x: x)
111+
self.z = [1, 2, 3]
112+
}
113+
114+
subscript(index: Int) -> Int {
115+
get {
116+
return z[0]
117+
}
118+
set {
119+
z[0] = newValue
120+
}
121+
}
122+
123+
func foo() -> Int {
124+
return z[0]
84125
}
85126
}
86127

87-
var anInstance = aClass(x: 1)
88-
// CHECK: [[@LINE-1]]:18 | class/Swift | aClass | s:C14swift_ide_test6aClass | Ref | rel: 0
89-
// CHECK: [[@LINE-2]]:18 | constructor/Swift | init(x:) | s:FC14swift_ide_test6aClasscFT1xSi_S0_ | Ref,Call | rel: 0
128+
protocol AProtocol {
129+
func foo() -> Int
130+
// CHECK: [[@LINE-1]]:8 | instance-method/Swift | foo() | s:FP14swift_ide_test9AProtocol3fooFT_Si | Def,RelChild | rel: 1
131+
// CHECK-NEXT: RelChild | AProtocol | s:P14swift_ide_test9AProtocol
132+
}
133+
134+
// RelationBaseOf, RelationOverrideOf
135+
class ASubClass : AClass, AProtocol {
136+
// CHECK: [[@LINE-1]]:7 | class/Swift | ASubClass | s:C14swift_ide_test9ASubClass | Def | rel: 0
137+
// CHECK: [[@LINE-2]]:19 | class/Swift | AClass | s:C14swift_ide_test6AClass | Ref,RelBase | rel: 1
138+
// CHECK-NEXT: RelBase | ASubClass | s:C14swift_ide_test9ASubClass
139+
// CHECK: [[@LINE-4]]:27 | protocol/Swift | AProtocol | s:P14swift_ide_test9AProtocol | Ref,RelBase | rel: 1
140+
// CHECK-NEXT: RelBase | ASubClass | s:C14swift_ide_test9ASubClass
141+
142+
override func foo() -> Int {
143+
// CHECK: [[@LINE-1]]:17 | instance-method/Swift | foo() | s:FC14swift_ide_test9ASubClass3fooFT_Si | Def,RelChild,RelOver | rel: 3
144+
// CHECK-NEXT: RelOver | foo() | s:FC14swift_ide_test6AClass3fooFT_Si
145+
// CHECK-NEXT: RelOver | foo() | s:FP14swift_ide_test9AProtocol3fooFT_Si
146+
// CHECK-NEXT: RelChild | ASubClass | s:C14swift_ide_test9ASubClass
147+
return 1
148+
}
149+
}
90150

91-
anInstance.y.aMethod()
92-
// CHECK: [[@LINE-1]]:1 | variable/Swift | anInstance | s:v14swift_ide_test10anInstanceCS_6aClass | Ref,Read | rel: 0
93-
// CHECK: [[@LINE-2]]:12 | instance-property/Swift | y | s:vC14swift_ide_test6aClass1yVS_7aStruct | Ref,Read,Writ | rel: 0
94-
// CHECK: [[@LINE-3]]:14 | instance-method/Swift | aMethod() | s:FV14swift_ide_test7aStruct7aMethodFT_T_ | Ref,Call | rel: 0
95-
96-
// Dynamic + Call
97-
// Implicit
98-
99-
// ---- RELATIONS --------------------------------------------------------------
100-
101-
// RelationChildOf
102-
// RelationBaseOf
103-
// RelationOverrideOf
104-
// RelationReceivedBy
105-
// RelationCalledBy
106151
// RelationExtendedBy
107-
// RelationAccessorOf
152+
// FIXME give extensions their own USR like ObjC?
153+
extension AClass {
154+
// CHECK: [[@LINE-1]]:11 | extension(extClass)/Swift | AClass | s:C14swift_ide_test6AClass | Def | rel: 0
155+
// CHECK: [[@LINE-2]]:11 | class/Swift | AClass | s:C14swift_ide_test6AClass | Ref,RelExt | rel: 1
156+
// CHECK-NEXT: RelExt | AClass | s:C14swift_ide_test6AClass
157+
158+
func bar() -> Int { return 2 }
159+
// CHECK: [[@LINE-1]]:8 | instance-method/Swift | bar() | s:FC14swift_ide_test6AClass3barFT_Si | Def,RelChild | rel: 1
160+
// CHECK-NEXT: RelChild | AClass | s:C14swift_ide_test6AClass
161+
}
162+
163+
var anInstance = AClass(x: 1)
164+
// CHECK: [[@LINE-1]]:18 | class/Swift | AClass | s:C14swift_ide_test6AClass | Ref | rel: 0
165+
// CHECK: [[@LINE-2]]:18 | constructor/Swift | init(x:) | s:FC14swift_ide_test6AClasscFT1xSi_S0_ | Ref,Call | rel: 0
166+
167+
anInstance.y.x = anInstance.y.x
168+
// CHECK: [[@LINE-1]]:1 | variable/Swift | anInstance | s:v14swift_ide_test10anInstanceCS_6AClass | Ref,Read | rel: 0
169+
// CHECK: [[@LINE-2]]:12 | instance-property/Swift | y | s:vC14swift_ide_test6AClass1yVS_7AStruct | Ref,Read,Writ | rel: 0
170+
// CHECK: [[@LINE-3]]:14 | instance-property/Swift | x | s:vV14swift_ide_test7AStruct1xSi | Ref,Writ | rel: 0
171+
// CHECK: [[@LINE-4]]:18 | variable/Swift | anInstance | s:v14swift_ide_test10anInstanceCS_6AClass | Ref,Read | rel: 0
172+
// CHECK: [[@LINE-5]]:29 | instance-property/Swift | y | s:vC14swift_ide_test6AClass1yVS_7AStruct | Ref,Read | rel: 0
173+
// CHECK: [[@LINE-6]]:31 | instance-property/Swift | x | s:vV14swift_ide_test7AStruct1xSi | Ref,Read | rel: 0
174+
175+
anInstance.y.aMethod()
176+
// CHECK: [[@LINE-1]]:1 | variable/Swift | anInstance | s:v14swift_ide_test10anInstanceCS_6AClass | Ref,Read | rel: 0
177+
// CHECK: [[@LINE-2]]:12 | instance-property/Swift | y | s:vC14swift_ide_test6AClass1yVS_7AStruct | Ref,Read,Writ | rel: 0
178+
// CHECK: [[@LINE-3]]:14 | instance-method/Swift | aMethod() | s:FV14swift_ide_test7AStruct7aMethodFT_T_ | Ref,Call | rel: 0
179+
180+
// FIXME Write role of z occurrence on the RHS?
181+
anInstance.z[1] = anInstance.z[0]
182+
// CHECK: [[@LINE-1]]:1 | variable/Swift | anInstance | s:v14swift_ide_test10anInstanceCS_6AClass | Ref,Read | rel: 0
183+
// CHECK: [[@LINE-2]]:12 | instance-property/Swift | z | s:vC14swift_ide_test6AClass1zGSaSi_ | Ref,Read,Writ | rel: 0
184+
// CHECK: [[@LINE-3]]:19 | variable/Swift | anInstance | s:v14swift_ide_test10anInstanceCS_6AClass | Ref,Read | rel: 0
185+
// CHECK: [[@LINE-4]]:30 | instance-property/Swift | z | s:vC14swift_ide_test6AClass1zGSaSi_ | Ref,Read,Writ | rel: 0
186+
187+
let otherInstance = AStruct(x: 1)
188+
// CHECK: [[@LINE-1]]:21 | struct/Swift | AStruct | s:V14swift_ide_test7AStruct | Ref | rel: 0
189+
190+
let _ = otherInstance[0]
191+
// CHECK: [[@LINE-1]]:9 | variable/Swift | otherInstance | s:v14swift_ide_test13otherInstanceVS_7AStruct | Ref,Read | rel: 0
192+
// CHECK: [[@LINE-2]]:22 | subscript/Swift | subscript(_:) | s:iV14swift_ide_test7AStruct9subscriptFSiSi | Ref,Read | rel: 0
193+
194+
let _ = anInstance[0]
195+
// CHECK: [[@LINE-1]]:9 | variable/Swift | anInstance | s:v14swift_ide_test10anInstanceCS_6AClass | Ref,Read | rel: 0
196+
// CHECK: [[@LINE-2]]:19 | subscript/Swift | subscript(_:) | s:iC14swift_ide_test6AClass9subscriptFSiSi | Ref,Read | rel: 0
197+
198+
let aSubInstance: AClass = ASubClass(x: 1)
199+
// CHECK: [[@LINE-1]]:5 | variable/Swift | aSubInstance | s:v14swift_ide_test12aSubInstanceCS_6AClass | Def | rel: 0
200+
// CHECK: [[@LINE-2]]:28 | class/Swift | ASubClass | s:C14swift_ide_test9ASubClass | Ref | rel: 0
201+
202+
// Dynamic, RelationReceivedBy
203+
let _ = aSubInstance.foo()
204+
// CHECK: [[@LINE-1]]:9 | variable/Swift | aSubInstance | s:v14swift_ide_test12aSubInstanceCS_6AClass | Ref,Read | rel: 0
205+
// CHECK: [[@LINE-2]]:22 | instance-method/Swift | foo() | s:FC14swift_ide_test6AClass3fooFT_Si | Ref,Call,Dyn,RelRec | rel: 1
206+
// CHECK-NEXT: RelRec | AClass | s:C14swift_ide_test6AClass
108207

109-
// ---- ERRONEOUS --------------------------------------------------------------

0 commit comments

Comments
 (0)