Skip to content

Commit 835fa35

Browse files
committed
Unified: Add more type inference tests for constructors
1 parent 3995074 commit 835fa35

3 files changed

Lines changed: 196 additions & 41 deletions

File tree

‎unified/ql/lib/codeql/unified/internal/typeinference/TypeInference.qll‎

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -693,6 +693,11 @@ Callable resolveCallTarget(CallExpr ce) {
693693

694694
private predicate typeTestAstNodeRepr(AstNode n, string repr) {
695695
repr = [n.toString(), n.(Identifier).getValue(), "." + n.(MemberAccessExpr).getMemberName()]
696+
or
697+
exists(string s |
698+
typeTestAstNodeRepr(n.(CallExpr).getCallee(), s) and
699+
repr = s + "(...)"
700+
)
696701
}
697702

698703
module TypeTest implements TestSig {

‎unified/ql/test/library-tests/type-inference/constructors.swift‎

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,61 @@ class C1 {
99
var c11 = C1() // $ type=c11:C1 target=C1.init_conv $ SPURIOUS: target=C1.init
1010
var c12 = C1.init() // $ type=c12:C1 target=C1.init_conv $ SPURIOUS: target=C1.init
1111

12+
class C2: C1 {} // inherits `init`
13+
14+
var c21 = C2() // $ type=c21:C2 $ MISSING: target=C1.init_conv $ SPURIOUS: target=C2.init
15+
var c22 = C2.init() // $ target=C1.init_conv $ MISSING: type=c22:C2 $ SPURIOUS: target=C1.init
16+
17+
class C3 {
18+
init() {}
19+
}
20+
21+
var c3 = C3() // $ type=c3:C3 target=C3.init
22+
23+
class C4: C3 {
24+
init(_ x: Int) {
25+
super.init() // $ target=C3.init
26+
}
27+
28+
override convenience init() { // name=C4.init_conv
29+
self.init(0) // $ target=C4.init $ SPURIOUS: target=C4.init_conv
30+
}
31+
}
32+
33+
class C5: C4 {} // inherits `init` and `convenience init`
34+
35+
var c51 = C5() // $ type=c51:C5 $ MISSING: target=C4.init $ SPURIOUS: target=C5.init
36+
var c52 = C5(0) // $ type=c52:C5 $ MISSING: target=C4.init $ SPURIOUS: target=C5.init
37+
38+
class C6<T1, T2> {
39+
init(x: T1, y: T2) {}
40+
41+
private init(s: String) {} // name=C6.init_private
42+
43+
convenience init(x: T1) { // name=C6.init_conv
44+
fatalError("Convenience initializer not implemented")
45+
}
46+
}
47+
48+
class C7<T3, T4>: C6<T4, T3> {} // inherits `init(x: T4, y: T3)` and `convenience init(x: T4)`
49+
50+
var c71 = C7(x: "string", y: true) // $ MISSING: type=c71@C7<T3>:Bool type=c71@C7<T4>:String target=C6.init $ SPURIOUS: target=C7.init
51+
var c72 = C7<Bool, _>(x: 0) // $ type=c72@C7<T3>:Bool $ MISSING: type=c72@C7<T4>:Int target=C6.init $ SPURIOUS: target=C7.init
52+
53+
class C8: C7<Int, String> { // inherits `init(x: String, y: Int)`
54+
convenience init(x: String) { // name=C8.init_conv
55+
self.init(x: x, y: 0) // $ target=C6.init $ SPURIOUS: target=C8.init_conv
56+
}
57+
}
58+
59+
class C9<T9>: C8 {}
60+
61+
let c9: C9<Int> = C9(x: "") // $ MISSING: type=C9(...)@C9<T9>:Int target=C8.init_conv $ SPURIOUS: target=C9.init
62+
63+
class C10<T10a, T10b>: C6<T10a, [T10b]> {}
64+
65+
let c10: C10<_, Int> = C10(x: "") // $ MISSING: type=C10(...)@C10<T10a>:Int target=C6.init_conv $ SPURIOUS: target=C10.init
66+
1267
struct S1<T> { // implicit `init(f1: T, f2: String = "default", f3: (T) -> T = { $0 })`
1368
var f1: T
1469
var f2: String = "default"
@@ -18,3 +73,16 @@ struct S1<T> { // implicit `init(f1: T, f2: String = "default", f3: (T) -> T =
1873
var s11 = S1(f1: 0) // $ target=S1.init type=s11@S1<T>:Int
1974
var s12 = S1(f1: true, f2: "") // $ target=S1.init type=s12@S1<T>:Bool
2075
S1(f1: 0, f2: "", f3: { x in x }) // $ target=S1.init type=x:Int
76+
S1(f1: 0, f3: { x in x }) // $ target=S1.init $ MISSING: type=x:Int (optional parameters are not handled)
77+
78+
enum E1 {
79+
case a(Int)
80+
81+
static func foo() {
82+
let e1 = a(0) // $ target=E1.a type=e1:E1
83+
}
84+
}
85+
86+
enum E2<A, B> { case a(A) }
87+
88+
let e2: E2<_, String> = E2.a(1) // $ target=E2.a $ MISSING: type=.a(...)@E2<B>:String

‎unified/ql/test/library-tests/type-inference/type-inference.expected‎

Lines changed: 123 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -129,15 +129,32 @@ inferCertainType
129129
| closures.swift:66:9:68:9 | FunctionExpr | Args | {EXTERNAL LOCATION} | Tuple1 |
130130
| constructors.swift:2:12:2:12 | x | | {EXTERNAL LOCATION} | Int |
131131
| constructors.swift:5:9:5:12 | self | | constructors.swift:1:1:7:1 | C1 |
132-
| constructors.swift:13:9:13:10 | f1 | | constructors.swift:12:11:12:11 | T |
133-
| constructors.swift:14:9:14:10 | f2 | | {EXTERNAL LOCATION} | String |
134-
| constructors.swift:15:9:15:10 | f3 | | {EXTERNAL LOCATION} | Function |
135-
| constructors.swift:15:9:15:10 | f3 | Args | {EXTERNAL LOCATION} | Tuple1 |
136-
| constructors.swift:15:9:15:10 | f3 | Args.T0 | constructors.swift:12:11:12:11 | T |
137-
| constructors.swift:15:9:15:10 | f3 | Return | constructors.swift:12:11:12:11 | T |
138-
| constructors.swift:15:24:15:29 | FunctionExpr | | {EXTERNAL LOCATION} | Function |
139-
| constructors.swift:20:23:20:32 | FunctionExpr | | {EXTERNAL LOCATION} | Function |
140-
| constructors.swift:20:23:20:32 | FunctionExpr | Args | {EXTERNAL LOCATION} | Tuple1 |
132+
| constructors.swift:24:12:24:12 | x | | {EXTERNAL LOCATION} | Int |
133+
| constructors.swift:29:9:29:12 | self | | constructors.swift:23:1:31:1 | C4 |
134+
| constructors.swift:39:10:39:10 | x | | constructors.swift:38:10:38:11 | T1 |
135+
| constructors.swift:39:17:39:17 | y | | constructors.swift:38:14:38:15 | T2 |
136+
| constructors.swift:41:18:41:18 | s | | {EXTERNAL LOCATION} | String |
137+
| constructors.swift:43:22:43:22 | x | | constructors.swift:38:10:38:11 | T1 |
138+
| constructors.swift:54:22:54:22 | x | | {EXTERNAL LOCATION} | String |
139+
| constructors.swift:55:9:55:12 | self | | constructors.swift:53:1:57:1 | C8 |
140+
| constructors.swift:55:22:55:22 | x | | {EXTERNAL LOCATION} | String |
141+
| constructors.swift:61:5:61:6 | c9 | | constructors.swift:59:1:59:19 | C9 |
142+
| constructors.swift:61:5:61:6 | c9 | T9 | {EXTERNAL LOCATION} | Int |
143+
| constructors.swift:65:5:65:7 | c10 | | constructors.swift:63:1:63:42 | C10 |
144+
| constructors.swift:65:5:65:7 | c10 | T10b | {EXTERNAL LOCATION} | Int |
145+
| constructors.swift:68:9:68:10 | f1 | | constructors.swift:67:11:67:11 | T |
146+
| constructors.swift:69:9:69:10 | f2 | | {EXTERNAL LOCATION} | String |
147+
| constructors.swift:70:9:70:10 | f3 | | {EXTERNAL LOCATION} | Function |
148+
| constructors.swift:70:9:70:10 | f3 | Args | {EXTERNAL LOCATION} | Tuple1 |
149+
| constructors.swift:70:9:70:10 | f3 | Args.T0 | constructors.swift:67:11:67:11 | T |
150+
| constructors.swift:70:9:70:10 | f3 | Return | constructors.swift:67:11:67:11 | T |
151+
| constructors.swift:70:24:70:29 | FunctionExpr | | {EXTERNAL LOCATION} | Function |
152+
| constructors.swift:75:23:75:32 | FunctionExpr | | {EXTERNAL LOCATION} | Function |
153+
| constructors.swift:75:23:75:32 | FunctionExpr | Args | {EXTERNAL LOCATION} | Tuple1 |
154+
| constructors.swift:76:15:76:24 | FunctionExpr | | {EXTERNAL LOCATION} | Function |
155+
| constructors.swift:76:15:76:24 | FunctionExpr | Args | {EXTERNAL LOCATION} | Tuple1 |
156+
| constructors.swift:88:5:88:6 | e2 | | constructors.swift:86:1:86:27 | E2 |
157+
| constructors.swift:88:5:88:6 | e2 | B | {EXTERNAL LOCATION} | String |
141158
| fields.swift:2:7:2:20 | inheritedField | | {EXTERNAL LOCATION} | Int |
142159
| fields.swift:6:7:6:17 | storedField | | {EXTERNAL LOCATION} | String |
143160
| fields.swift:7:7:7:18 | genericField | | fields.swift:5:22:5:22 | T |
@@ -1093,8 +1110,6 @@ inferType
10931110
| closures.swift:69:5:69:5 | _ | | {EXTERNAL LOCATION} | String |
10941111
| closures.swift:69:5:69:14 | ... = ... | | {EXTERNAL LOCATION} | String |
10951112
| closures.swift:69:9:69:14 | result | | {EXTERNAL LOCATION} | String |
1096-
| constructors.swift:1:1:20:33 | Block | | constructors.swift:12:1:16:1 | S1 |
1097-
| constructors.swift:1:1:20:33 | Block | T | {EXTERNAL LOCATION} | Int |
10981113
| constructors.swift:2:12:2:12 | x | | {EXTERNAL LOCATION} | Int |
10991114
| constructors.swift:4:24:6:5 | Block | | constructors.swift:1:1:7:1 | C1 |
11001115
| constructors.swift:5:9:5:12 | self | | constructors.swift:1:1:7:1 | C1 |
@@ -1104,36 +1119,103 @@ inferType
11041119
| constructors.swift:9:11:9:14 | C1(...) | | constructors.swift:1:1:7:1 | C1 |
11051120
| constructors.swift:10:5:10:7 | c12 | | constructors.swift:1:1:7:1 | C1 |
11061121
| constructors.swift:10:11:10:19 | ... .init(...) | | constructors.swift:1:1:7:1 | C1 |
1107-
| constructors.swift:13:9:13:10 | f1 | | constructors.swift:12:11:12:11 | T |
1108-
| constructors.swift:14:9:14:10 | f2 | | {EXTERNAL LOCATION} | String |
1109-
| constructors.swift:14:22:14:30 | "default" | | {EXTERNAL LOCATION} | String |
1110-
| constructors.swift:15:9:15:10 | f3 | | {EXTERNAL LOCATION} | Function |
1111-
| constructors.swift:15:9:15:10 | f3 | Args | {EXTERNAL LOCATION} | Tuple1 |
1112-
| constructors.swift:15:9:15:10 | f3 | Args.T0 | constructors.swift:12:11:12:11 | T |
1113-
| constructors.swift:15:9:15:10 | f3 | Return | constructors.swift:12:11:12:11 | T |
1114-
| constructors.swift:15:24:15:29 | FunctionExpr | | {EXTERNAL LOCATION} | Function |
1115-
| constructors.swift:18:5:18:7 | s11 | | constructors.swift:12:1:16:1 | S1 |
1116-
| constructors.swift:18:5:18:7 | s11 | T | {EXTERNAL LOCATION} | Int |
1117-
| constructors.swift:18:11:18:19 | S1(...) | | constructors.swift:12:1:16:1 | S1 |
1118-
| constructors.swift:18:11:18:19 | S1(...) | T | {EXTERNAL LOCATION} | Int |
1119-
| constructors.swift:18:18:18:18 | 0 | | {EXTERNAL LOCATION} | Int |
1120-
| constructors.swift:19:5:19:7 | s12 | | constructors.swift:12:1:16:1 | S1 |
1121-
| constructors.swift:19:5:19:7 | s12 | T | {EXTERNAL LOCATION} | Bool |
1122-
| constructors.swift:19:11:19:30 | S1(...) | | constructors.swift:12:1:16:1 | S1 |
1123-
| constructors.swift:19:11:19:30 | S1(...) | T | {EXTERNAL LOCATION} | Bool |
1124-
| constructors.swift:19:18:19:21 | true | | {EXTERNAL LOCATION} | Bool |
1125-
| constructors.swift:19:28:19:29 | "" | | {EXTERNAL LOCATION} | String |
1126-
| constructors.swift:20:1:20:33 | S1(...) | | constructors.swift:12:1:16:1 | S1 |
1127-
| constructors.swift:20:1:20:33 | S1(...) | T | {EXTERNAL LOCATION} | Int |
1128-
| constructors.swift:20:8:20:8 | 0 | | {EXTERNAL LOCATION} | Int |
1129-
| constructors.swift:20:15:20:16 | "" | | {EXTERNAL LOCATION} | String |
1130-
| constructors.swift:20:23:20:32 | FunctionExpr | | {EXTERNAL LOCATION} | Function |
1131-
| constructors.swift:20:23:20:32 | FunctionExpr | Args | {EXTERNAL LOCATION} | Tuple1 |
1132-
| constructors.swift:20:23:20:32 | FunctionExpr | Args.T0 | {EXTERNAL LOCATION} | Int |
1133-
| constructors.swift:20:23:20:32 | FunctionExpr | Return | {EXTERNAL LOCATION} | Int |
1134-
| constructors.swift:20:25:20:25 | x | | {EXTERNAL LOCATION} | Int |
1135-
| constructors.swift:20:30:20:30 | Block | | {EXTERNAL LOCATION} | Int |
1136-
| constructors.swift:20:30:20:30 | x | | {EXTERNAL LOCATION} | Int |
1122+
| constructors.swift:14:5:14:7 | c21 | | constructors.swift:12:1:12:15 | C2 |
1123+
| constructors.swift:14:11:14:14 | C2(...) | | constructors.swift:12:1:12:15 | C2 |
1124+
| constructors.swift:15:5:15:7 | c22 | | constructors.swift:1:1:7:1 | C1 |
1125+
| constructors.swift:15:11:15:19 | ... .init(...) | | constructors.swift:1:1:7:1 | C1 |
1126+
| constructors.swift:21:5:21:6 | c3 | | constructors.swift:17:1:19:1 | C3 |
1127+
| constructors.swift:21:10:21:13 | C3(...) | | constructors.swift:17:1:19:1 | C3 |
1128+
| constructors.swift:24:12:24:12 | x | | {EXTERNAL LOCATION} | Int |
1129+
| constructors.swift:24:20:26:5 | Block | | constructors.swift:17:1:19:1 | C3 |
1130+
| constructors.swift:25:9:25:13 | super | | constructors.swift:17:1:19:1 | C3 |
1131+
| constructors.swift:25:9:25:20 | ... .init(...) | | constructors.swift:17:1:19:1 | C3 |
1132+
| constructors.swift:28:33:30:5 | Block | | constructors.swift:23:1:31:1 | C4 |
1133+
| constructors.swift:29:9:29:12 | self | | constructors.swift:23:1:31:1 | C4 |
1134+
| constructors.swift:29:9:29:20 | ... .init(...) | | constructors.swift:23:1:31:1 | C4 |
1135+
| constructors.swift:29:19:29:19 | 0 | | {EXTERNAL LOCATION} | Int |
1136+
| constructors.swift:35:5:35:7 | c51 | | constructors.swift:33:1:33:15 | C5 |
1137+
| constructors.swift:35:11:35:14 | C5(...) | | constructors.swift:33:1:33:15 | C5 |
1138+
| constructors.swift:36:5:36:7 | c52 | | constructors.swift:33:1:33:15 | C5 |
1139+
| constructors.swift:36:11:36:15 | C5(...) | | constructors.swift:33:1:33:15 | C5 |
1140+
| constructors.swift:36:14:36:14 | 0 | | {EXTERNAL LOCATION} | Int |
1141+
| constructors.swift:39:10:39:10 | x | | constructors.swift:38:10:38:11 | T1 |
1142+
| constructors.swift:39:17:39:17 | y | | constructors.swift:38:14:38:15 | T2 |
1143+
| constructors.swift:41:18:41:18 | s | | {EXTERNAL LOCATION} | String |
1144+
| constructors.swift:43:22:43:22 | x | | constructors.swift:38:10:38:11 | T1 |
1145+
| constructors.swift:44:20:44:60 | "Convenience initializer not implemented" | | {EXTERNAL LOCATION} | String |
1146+
| constructors.swift:50:5:50:7 | c71 | | constructors.swift:48:1:48:31 | C7 |
1147+
| constructors.swift:50:11:50:34 | C7(...) | | constructors.swift:48:1:48:31 | C7 |
1148+
| constructors.swift:50:17:50:24 | "string" | | {EXTERNAL LOCATION} | String |
1149+
| constructors.swift:50:30:50:33 | true | | {EXTERNAL LOCATION} | Bool |
1150+
| constructors.swift:51:5:51:7 | c72 | | constructors.swift:48:1:48:31 | C7 |
1151+
| constructors.swift:51:5:51:7 | c72 | T3 | {EXTERNAL LOCATION} | Bool |
1152+
| constructors.swift:51:11:51:27 | ...(...) | | constructors.swift:48:1:48:31 | C7 |
1153+
| constructors.swift:51:11:51:27 | ...(...) | T3 | {EXTERNAL LOCATION} | Bool |
1154+
| constructors.swift:51:26:51:26 | 0 | | {EXTERNAL LOCATION} | Int |
1155+
| constructors.swift:54:22:54:22 | x | | {EXTERNAL LOCATION} | String |
1156+
| constructors.swift:54:33:56:5 | Block | | constructors.swift:38:1:46:1 | C6 |
1157+
| constructors.swift:54:33:56:5 | Block | | constructors.swift:53:1:57:1 | C8 |
1158+
| constructors.swift:54:33:56:5 | Block | T1 | {EXTERNAL LOCATION} | String |
1159+
| constructors.swift:54:33:56:5 | Block | T2 | {EXTERNAL LOCATION} | Int |
1160+
| constructors.swift:55:9:55:12 | self | | constructors.swift:53:1:57:1 | C8 |
1161+
| constructors.swift:55:9:55:29 | ... .init(...) | | constructors.swift:38:1:46:1 | C6 |
1162+
| constructors.swift:55:9:55:29 | ... .init(...) | | constructors.swift:53:1:57:1 | C8 |
1163+
| constructors.swift:55:9:55:29 | ... .init(...) | T1 | {EXTERNAL LOCATION} | String |
1164+
| constructors.swift:55:9:55:29 | ... .init(...) | T2 | {EXTERNAL LOCATION} | Int |
1165+
| constructors.swift:55:22:55:22 | x | | {EXTERNAL LOCATION} | String |
1166+
| constructors.swift:55:28:55:28 | 0 | | {EXTERNAL LOCATION} | Int |
1167+
| constructors.swift:61:5:61:6 | c9 | | constructors.swift:59:1:59:19 | C9 |
1168+
| constructors.swift:61:5:61:6 | c9 | T9 | {EXTERNAL LOCATION} | Int |
1169+
| constructors.swift:61:19:61:27 | C9(...) | | constructors.swift:59:1:59:19 | C9 |
1170+
| constructors.swift:61:25:61:26 | "" | | {EXTERNAL LOCATION} | String |
1171+
| constructors.swift:65:5:65:7 | c10 | | constructors.swift:63:1:63:42 | C10 |
1172+
| constructors.swift:65:5:65:7 | c10 | T10b | {EXTERNAL LOCATION} | Int |
1173+
| constructors.swift:65:24:65:33 | C10(...) | | constructors.swift:63:1:63:42 | C10 |
1174+
| constructors.swift:65:31:65:32 | "" | | {EXTERNAL LOCATION} | String |
1175+
| constructors.swift:68:9:68:10 | f1 | | constructors.swift:67:11:67:11 | T |
1176+
| constructors.swift:69:9:69:10 | f2 | | {EXTERNAL LOCATION} | String |
1177+
| constructors.swift:69:22:69:30 | "default" | | {EXTERNAL LOCATION} | String |
1178+
| constructors.swift:70:9:70:10 | f3 | | {EXTERNAL LOCATION} | Function |
1179+
| constructors.swift:70:9:70:10 | f3 | Args | {EXTERNAL LOCATION} | Tuple1 |
1180+
| constructors.swift:70:9:70:10 | f3 | Args.T0 | constructors.swift:67:11:67:11 | T |
1181+
| constructors.swift:70:9:70:10 | f3 | Return | constructors.swift:67:11:67:11 | T |
1182+
| constructors.swift:70:24:70:29 | FunctionExpr | | {EXTERNAL LOCATION} | Function |
1183+
| constructors.swift:73:5:73:7 | s11 | | constructors.swift:67:1:71:1 | S1 |
1184+
| constructors.swift:73:5:73:7 | s11 | T | {EXTERNAL LOCATION} | Int |
1185+
| constructors.swift:73:11:73:19 | S1(...) | | constructors.swift:67:1:71:1 | S1 |
1186+
| constructors.swift:73:11:73:19 | S1(...) | T | {EXTERNAL LOCATION} | Int |
1187+
| constructors.swift:73:18:73:18 | 0 | | {EXTERNAL LOCATION} | Int |
1188+
| constructors.swift:74:5:74:7 | s12 | | constructors.swift:67:1:71:1 | S1 |
1189+
| constructors.swift:74:5:74:7 | s12 | T | {EXTERNAL LOCATION} | Bool |
1190+
| constructors.swift:74:11:74:30 | S1(...) | | constructors.swift:67:1:71:1 | S1 |
1191+
| constructors.swift:74:11:74:30 | S1(...) | T | {EXTERNAL LOCATION} | Bool |
1192+
| constructors.swift:74:18:74:21 | true | | {EXTERNAL LOCATION} | Bool |
1193+
| constructors.swift:74:28:74:29 | "" | | {EXTERNAL LOCATION} | String |
1194+
| constructors.swift:75:1:75:33 | S1(...) | | constructors.swift:67:1:71:1 | S1 |
1195+
| constructors.swift:75:1:75:33 | S1(...) | T | {EXTERNAL LOCATION} | Int |
1196+
| constructors.swift:75:8:75:8 | 0 | | {EXTERNAL LOCATION} | Int |
1197+
| constructors.swift:75:15:75:16 | "" | | {EXTERNAL LOCATION} | String |
1198+
| constructors.swift:75:23:75:32 | FunctionExpr | | {EXTERNAL LOCATION} | Function |
1199+
| constructors.swift:75:23:75:32 | FunctionExpr | Args | {EXTERNAL LOCATION} | Tuple1 |
1200+
| constructors.swift:75:23:75:32 | FunctionExpr | Args.T0 | {EXTERNAL LOCATION} | Int |
1201+
| constructors.swift:75:23:75:32 | FunctionExpr | Return | {EXTERNAL LOCATION} | Int |
1202+
| constructors.swift:75:25:75:25 | x | | {EXTERNAL LOCATION} | Int |
1203+
| constructors.swift:75:30:75:30 | Block | | {EXTERNAL LOCATION} | Int |
1204+
| constructors.swift:75:30:75:30 | x | | {EXTERNAL LOCATION} | Int |
1205+
| constructors.swift:76:1:76:25 | S1(...) | | constructors.swift:67:1:71:1 | S1 |
1206+
| constructors.swift:76:1:76:25 | S1(...) | T | {EXTERNAL LOCATION} | Int |
1207+
| constructors.swift:76:8:76:8 | 0 | | {EXTERNAL LOCATION} | Int |
1208+
| constructors.swift:76:15:76:24 | FunctionExpr | | {EXTERNAL LOCATION} | Function |
1209+
| constructors.swift:76:15:76:24 | FunctionExpr | Args | {EXTERNAL LOCATION} | Tuple1 |
1210+
| constructors.swift:82:13:82:14 | e1 | | constructors.swift:78:1:84:1 | E1 |
1211+
| constructors.swift:82:18:82:21 | a(...) | | constructors.swift:78:1:84:1 | E1 |
1212+
| constructors.swift:82:20:82:20 | 0 | | {EXTERNAL LOCATION} | Int |
1213+
| constructors.swift:88:5:88:6 | e2 | | constructors.swift:86:1:86:27 | E2 |
1214+
| constructors.swift:88:5:88:6 | e2 | A | {EXTERNAL LOCATION} | Int |
1215+
| constructors.swift:88:5:88:6 | e2 | B | {EXTERNAL LOCATION} | String |
1216+
| constructors.swift:88:25:88:31 | ... .a(...) | | constructors.swift:86:1:86:27 | E2 |
1217+
| constructors.swift:88:25:88:31 | ... .a(...) | A | {EXTERNAL LOCATION} | Int |
1218+
| constructors.swift:88:30:88:30 | 1 | | {EXTERNAL LOCATION} | Int |
11371219
| fields.swift:2:7:2:20 | inheritedField | | {EXTERNAL LOCATION} | Int |
11381220
| fields.swift:2:29:2:29 | 0 | | {EXTERNAL LOCATION} | Int |
11391221
| fields.swift:6:7:6:17 | storedField | | {EXTERNAL LOCATION} | String |

0 commit comments

Comments
 (0)