Skip to content

Commit f2b1e09

Browse files
committed
Swift: Add some conversion test cases.
1 parent 8dad622 commit f2b1e09

File tree

3 files changed

+193
-0
lines changed

3 files changed

+193
-0
lines changed

swift/ql/test/library-tests/dataflow/taint/core/LocalTaint.expected

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -225,6 +225,51 @@
225225
| conversions.swift:188:13:188:13 | arr2c | conversions.swift:190:13:190:13 | arr2c |
226226
| conversions.swift:189:13:189:13 | arr1c | conversions.swift:189:13:189:20 | ...[...] |
227227
| conversions.swift:190:13:190:13 | arr2c | conversions.swift:190:13:190:20 | ...[...] |
228+
| conversions.swift:196:7:196:7 | SSA def(self) | conversions.swift:196:7:196:7 | self[return] |
229+
| conversions.swift:196:7:196:7 | self | conversions.swift:196:7:196:7 | SSA def(self) |
230+
| conversions.swift:197:6:197:6 | self | conversions.swift:197:6:197:6 | SSA def(self) |
231+
| conversions.swift:197:6:197:6 | self | conversions.swift:197:6:197:6 | SSA def(self) |
232+
| conversions.swift:197:6:197:6 | self | conversions.swift:197:6:197:6 | SSA def(self) |
233+
| conversions.swift:197:6:197:6 | value | conversions.swift:197:6:197:6 | SSA def(value) |
234+
| conversions.swift:199:2:199:2 | SSA def(self) | conversions.swift:200:3:200:3 | self |
235+
| conversions.swift:199:2:199:2 | self | conversions.swift:199:2:199:2 | SSA def(self) |
236+
| conversions.swift:199:7:199:12 | SSA def(v) | conversions.swift:200:12:200:12 | v |
237+
| conversions.swift:199:7:199:12 | v | conversions.swift:199:7:199:12 | SSA def(v) |
238+
| conversions.swift:200:3:200:3 | [post] self | conversions.swift:199:2:201:2 | self[return] |
239+
| conversions.swift:200:3:200:3 | self | conversions.swift:199:2:201:2 | self[return] |
240+
| conversions.swift:205:7:205:17 | SSA def(withUInt) | conversions.swift:206:13:206:13 | withUInt |
241+
| conversions.swift:205:7:205:17 | withUInt | conversions.swift:205:7:205:17 | SSA def(withUInt) |
242+
| conversions.swift:206:13:206:13 | [post] withUInt | conversions.swift:207:14:207:14 | withUInt |
243+
| conversions.swift:206:13:206:13 | withUInt | conversions.swift:207:14:207:14 | withUInt |
244+
| conversions.swift:207:3:207:22 | SSA def(self) | conversions.swift:208:12:208:12 | self |
245+
| conversions.swift:207:10:207:22 | call to Self.init(_:) | conversions.swift:207:3:207:22 | SSA def(self) |
246+
| conversions.swift:207:14:207:14 | withUInt | conversions.swift:207:10:207:22 | call to Self.init(_:) |
247+
| conversions.swift:208:12:208:12 | [post] self | conversions.swift:205:2:209:2 | self[return] |
248+
| conversions.swift:208:12:208:12 | self | conversions.swift:205:2:209:2 | self[return] |
249+
| conversions.swift:211:7:211:20 | SSA def(withMyValue) | conversions.swift:212:13:212:13 | withMyValue |
250+
| conversions.swift:211:7:211:20 | withMyValue | conversions.swift:211:7:211:20 | SSA def(withMyValue) |
251+
| conversions.swift:212:13:212:13 | [post] withMyValue | conversions.swift:213:10:213:10 | withMyValue |
252+
| conversions.swift:212:13:212:13 | withMyValue | conversions.swift:213:10:213:10 | withMyValue |
253+
| conversions.swift:213:3:213:22 | SSA def(self) | conversions.swift:214:12:214:12 | self |
254+
| conversions.swift:214:12:214:12 | [post] self | conversions.swift:211:2:215:2 | self[return] |
255+
| conversions.swift:214:12:214:12 | self | conversions.swift:211:2:215:2 | self[return] |
256+
| conversions.swift:217:7:217:21 | SSA def(withMyValue2) | conversions.swift:218:13:218:13 | withMyValue2 |
257+
| conversions.swift:217:7:217:21 | withMyValue2 | conversions.swift:217:7:217:21 | SSA def(withMyValue2) |
258+
| conversions.swift:218:13:218:13 | [post] withMyValue2 | conversions.swift:219:11:219:11 | withMyValue2 |
259+
| conversions.swift:218:13:218:13 | withMyValue2 | conversions.swift:219:11:219:11 | withMyValue2 |
260+
| conversions.swift:219:7:219:7 | SSA def(x) | conversions.swift:220:10:220:10 | x |
261+
| conversions.swift:219:7:219:7 | x | conversions.swift:219:7:219:7 | SSA def(x) |
262+
| conversions.swift:219:11:219:24 | .v | conversions.swift:219:7:219:7 | x |
263+
| conversions.swift:220:3:220:10 | SSA def(self) | conversions.swift:221:12:221:12 | self |
264+
| conversions.swift:220:10:220:10 | x | conversions.swift:220:3:220:10 | SSA def(self) |
265+
| conversions.swift:221:12:221:12 | [post] self | conversions.swift:217:2:222:2 | self[return] |
266+
| conversions.swift:221:12:221:12 | self | conversions.swift:217:2:222:2 | self[return] |
267+
| conversions.swift:224:14:224:14 | SSA def(self) | conversions.swift:224:2:227:2 | self[return] |
268+
| conversions.swift:224:14:224:14 | self | conversions.swift:224:14:224:14 | SSA def(self) |
269+
| conversions.swift:224:20:224:33 | SSA def(withMyValue) | conversions.swift:225:13:225:13 | withMyValue |
270+
| conversions.swift:224:20:224:33 | withMyValue | conversions.swift:224:20:224:33 | SSA def(withMyValue) |
271+
| conversions.swift:225:13:225:13 | [post] withMyValue | conversions.swift:226:10:226:10 | withMyValue |
272+
| conversions.swift:225:13:225:13 | withMyValue | conversions.swift:226:10:226:10 | withMyValue |
228273
| simple.swift:12:13:12:13 | 1 | simple.swift:12:13:12:24 | ... .+(_:_:) ... |
229274
| simple.swift:12:17:12:24 | call to source() | simple.swift:12:13:12:24 | ... .+(_:_:) ... |
230275
| simple.swift:13:13:13:20 | call to source() | simple.swift:13:13:13:24 | ... .+(_:_:) ... |

swift/ql/test/library-tests/dataflow/taint/core/Taint.expected

Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -135,8 +135,48 @@ edges
135135
| conversions.swift:186:31:186:31 | arr2 [Collection element] | conversions.swift:186:15:186:35 | call to ContiguousArray<Element>.init(_:) [Collection element] | provenance | |
136136
| conversions.swift:189:13:189:13 | arr1c [Collection element] | conversions.swift:189:13:189:20 | ...[...] | provenance | |
137137
| conversions.swift:190:13:190:13 | arr2c [Collection element] | conversions.swift:190:13:190:20 | ...[...] | provenance | |
138+
| conversions.swift:197:6:197:6 | self [v] | file://:0:0:0:0 | self [v] | provenance | |
139+
| conversions.swift:199:7:199:12 | v | conversions.swift:200:12:200:12 | v | provenance | |
140+
| conversions.swift:200:3:200:3 | [post] self [v] | conversions.swift:199:2:201:2 | self[return] [v] | provenance | |
141+
| conversions.swift:200:12:200:12 | v | conversions.swift:200:3:200:3 | [post] self [v] | provenance | |
142+
| conversions.swift:205:7:205:17 | withUInt | conversions.swift:206:13:206:13 | withUInt | provenance | |
143+
| conversions.swift:205:7:205:17 | withUInt | conversions.swift:207:14:207:14 | withUInt | provenance | |
144+
| conversions.swift:207:10:207:22 | call to Self.init(_:) | conversions.swift:205:2:209:2 | self[return] | provenance | |
145+
| conversions.swift:207:10:207:22 | call to Self.init(_:) | conversions.swift:208:12:208:12 | self | provenance | |
146+
| conversions.swift:207:14:207:14 | withUInt | conversions.swift:207:10:207:22 | call to Self.init(_:) | provenance | |
147+
| conversions.swift:211:7:211:20 | withMyValue [v] | conversions.swift:212:13:212:13 | withMyValue [v] | provenance | |
148+
| conversions.swift:212:13:212:13 | withMyValue [v] | conversions.swift:197:6:197:6 | self [v] | provenance | |
149+
| conversions.swift:212:13:212:13 | withMyValue [v] | conversions.swift:212:13:212:25 | .v | provenance | |
150+
| conversions.swift:217:7:217:21 | withMyValue2 [v] | conversions.swift:218:13:218:13 | withMyValue2 [v] | provenance | |
151+
| conversions.swift:217:7:217:21 | withMyValue2 [v] | conversions.swift:219:11:219:11 | withMyValue2 [v] | provenance | |
152+
| conversions.swift:218:13:218:13 | withMyValue2 [v] | conversions.swift:197:6:197:6 | self [v] | provenance | |
153+
| conversions.swift:218:13:218:13 | withMyValue2 [v] | conversions.swift:218:13:218:26 | .v | provenance | |
154+
| conversions.swift:219:11:219:11 | withMyValue2 [v] | conversions.swift:197:6:197:6 | self [v] | provenance | |
155+
| conversions.swift:219:11:219:11 | withMyValue2 [v] | conversions.swift:219:11:219:24 | .v | provenance | |
156+
| conversions.swift:219:11:219:24 | .v | conversions.swift:217:2:222:2 | self[return] | provenance | |
157+
| conversions.swift:219:11:219:24 | .v | conversions.swift:221:12:221:12 | self | provenance | |
158+
| conversions.swift:224:20:224:33 | withMyValue [v] | conversions.swift:225:13:225:13 | withMyValue [v] | provenance | |
159+
| conversions.swift:224:20:224:33 | withMyValue [v] | conversions.swift:226:10:226:10 | withMyValue [v] | provenance | |
160+
| conversions.swift:225:13:225:13 | withMyValue [v] | conversions.swift:197:6:197:6 | self [v] | provenance | |
161+
| conversions.swift:225:13:225:13 | withMyValue [v] | conversions.swift:225:13:225:25 | .v | provenance | |
162+
| conversions.swift:226:10:226:10 | withMyValue [v] | conversions.swift:197:6:197:6 | self [v] | provenance | |
163+
| conversions.swift:226:10:226:10 | withMyValue [v] | conversions.swift:226:10:226:22 | .v | provenance | |
164+
| conversions.swift:232:26:232:37 | call to sourceUInt() | conversions.swift:205:7:205:17 | withUInt | provenance | |
165+
| conversions.swift:232:26:232:37 | call to sourceUInt() | conversions.swift:232:12:232:38 | call to Int.init(withUInt:) | provenance | |
166+
| conversions.swift:235:29:235:48 | call to MyValue.init(_:) [v] | conversions.swift:211:7:211:20 | withMyValue [v] | provenance | |
167+
| conversions.swift:235:37:235:47 | call to sourceInt() | conversions.swift:199:7:199:12 | v | provenance | |
168+
| conversions.swift:235:37:235:47 | call to sourceInt() | conversions.swift:235:29:235:48 | call to MyValue.init(_:) [v] | provenance | |
169+
| conversions.swift:238:30:238:49 | call to MyValue.init(_:) [v] | conversions.swift:217:7:217:21 | withMyValue2 [v] | provenance | |
170+
| conversions.swift:238:30:238:49 | call to MyValue.init(_:) [v] | conversions.swift:238:12:238:50 | call to Int.init(withMyValue2:) | provenance | |
171+
| conversions.swift:238:38:238:48 | call to sourceInt() | conversions.swift:199:7:199:12 | v | provenance | |
172+
| conversions.swift:238:38:238:48 | call to sourceInt() | conversions.swift:238:30:238:49 | call to MyValue.init(_:) [v] | provenance | |
173+
| conversions.swift:241:35:241:54 | call to MyValue.init(_:) [v] | conversions.swift:224:20:224:33 | withMyValue [v] | provenance | |
174+
| conversions.swift:241:35:241:54 | call to MyValue.init(_:) [v] | conversions.swift:241:12:241:55 | call to mkInt(withMyValue:) | provenance | |
175+
| conversions.swift:241:43:241:53 | call to sourceInt() | conversions.swift:199:7:199:12 | v | provenance | |
176+
| conversions.swift:241:43:241:53 | call to sourceInt() | conversions.swift:241:35:241:54 | call to MyValue.init(_:) [v] | provenance | |
138177
| file://:0:0:0:0 | self [first] | file://:0:0:0:0 | .first | provenance | |
139178
| file://:0:0:0:0 | self [second] | file://:0:0:0:0 | .second | provenance | |
179+
| file://:0:0:0:0 | self [v] | file://:0:0:0:0 | .v | provenance | |
140180
| file://:0:0:0:0 | value | file://:0:0:0:0 | [post] self [first] | provenance | |
141181
| file://:0:0:0:0 | value | file://:0:0:0:0 | [post] self [second] | provenance | |
142182
| simple.swift:12:17:12:24 | call to source() | simple.swift:12:13:12:24 | ... .+(_:_:) ... | provenance | |
@@ -387,12 +427,50 @@ nodes
387427
| conversions.swift:189:13:189:20 | ...[...] | semmle.label | ...[...] |
388428
| conversions.swift:190:13:190:13 | arr2c [Collection element] | semmle.label | arr2c [Collection element] |
389429
| conversions.swift:190:13:190:20 | ...[...] | semmle.label | ...[...] |
430+
| conversions.swift:197:6:197:6 | self [v] | semmle.label | self [v] |
431+
| conversions.swift:199:2:201:2 | self[return] [v] | semmle.label | self[return] [v] |
432+
| conversions.swift:199:7:199:12 | v | semmle.label | v |
433+
| conversions.swift:200:3:200:3 | [post] self [v] | semmle.label | [post] self [v] |
434+
| conversions.swift:200:12:200:12 | v | semmle.label | v |
435+
| conversions.swift:205:2:209:2 | self[return] | semmle.label | self[return] |
436+
| conversions.swift:205:7:205:17 | withUInt | semmle.label | withUInt |
437+
| conversions.swift:206:13:206:13 | withUInt | semmle.label | withUInt |
438+
| conversions.swift:207:10:207:22 | call to Self.init(_:) | semmle.label | call to Self.init(_:) |
439+
| conversions.swift:207:14:207:14 | withUInt | semmle.label | withUInt |
440+
| conversions.swift:208:12:208:12 | self | semmle.label | self |
441+
| conversions.swift:211:7:211:20 | withMyValue [v] | semmle.label | withMyValue [v] |
442+
| conversions.swift:212:13:212:13 | withMyValue [v] | semmle.label | withMyValue [v] |
443+
| conversions.swift:212:13:212:25 | .v | semmle.label | .v |
444+
| conversions.swift:217:2:222:2 | self[return] | semmle.label | self[return] |
445+
| conversions.swift:217:7:217:21 | withMyValue2 [v] | semmle.label | withMyValue2 [v] |
446+
| conversions.swift:218:13:218:13 | withMyValue2 [v] | semmle.label | withMyValue2 [v] |
447+
| conversions.swift:218:13:218:26 | .v | semmle.label | .v |
448+
| conversions.swift:219:11:219:11 | withMyValue2 [v] | semmle.label | withMyValue2 [v] |
449+
| conversions.swift:219:11:219:24 | .v | semmle.label | .v |
450+
| conversions.swift:221:12:221:12 | self | semmle.label | self |
451+
| conversions.swift:224:20:224:33 | withMyValue [v] | semmle.label | withMyValue [v] |
452+
| conversions.swift:225:13:225:13 | withMyValue [v] | semmle.label | withMyValue [v] |
453+
| conversions.swift:225:13:225:25 | .v | semmle.label | .v |
454+
| conversions.swift:226:10:226:10 | withMyValue [v] | semmle.label | withMyValue [v] |
455+
| conversions.swift:226:10:226:22 | .v | semmle.label | .v |
456+
| conversions.swift:232:12:232:38 | call to Int.init(withUInt:) | semmle.label | call to Int.init(withUInt:) |
457+
| conversions.swift:232:26:232:37 | call to sourceUInt() | semmle.label | call to sourceUInt() |
458+
| conversions.swift:235:29:235:48 | call to MyValue.init(_:) [v] | semmle.label | call to MyValue.init(_:) [v] |
459+
| conversions.swift:235:37:235:47 | call to sourceInt() | semmle.label | call to sourceInt() |
460+
| conversions.swift:238:12:238:50 | call to Int.init(withMyValue2:) | semmle.label | call to Int.init(withMyValue2:) |
461+
| conversions.swift:238:30:238:49 | call to MyValue.init(_:) [v] | semmle.label | call to MyValue.init(_:) [v] |
462+
| conversions.swift:238:38:238:48 | call to sourceInt() | semmle.label | call to sourceInt() |
463+
| conversions.swift:241:12:241:55 | call to mkInt(withMyValue:) | semmle.label | call to mkInt(withMyValue:) |
464+
| conversions.swift:241:35:241:54 | call to MyValue.init(_:) [v] | semmle.label | call to MyValue.init(_:) [v] |
465+
| conversions.swift:241:43:241:53 | call to sourceInt() | semmle.label | call to sourceInt() |
390466
| file://:0:0:0:0 | .first | semmle.label | .first |
391467
| file://:0:0:0:0 | .second | semmle.label | .second |
468+
| file://:0:0:0:0 | .v | semmle.label | .v |
392469
| file://:0:0:0:0 | [post] self [first] | semmle.label | [post] self [first] |
393470
| file://:0:0:0:0 | [post] self [second] | semmle.label | [post] self [second] |
394471
| file://:0:0:0:0 | self [first] | semmle.label | self [first] |
395472
| file://:0:0:0:0 | self [second] | semmle.label | self [second] |
473+
| file://:0:0:0:0 | self [v] | semmle.label | self [v] |
396474
| file://:0:0:0:0 | value | semmle.label | value |
397475
| file://:0:0:0:0 | value | semmle.label | value |
398476
| simple.swift:12:13:12:24 | ... .+(_:_:) ... | semmle.label | ... .+(_:_:) ... |
@@ -506,6 +584,17 @@ nodes
506584
| try.swift:18:18:18:25 | call to source() | semmle.label | call to source() |
507585
| try.swift:18:18:18:25 | call to source() [some:0] | semmle.label | call to source() [some:0] |
508586
subpaths
587+
| conversions.swift:212:13:212:13 | withMyValue [v] | conversions.swift:197:6:197:6 | self [v] | file://:0:0:0:0 | .v | conversions.swift:212:13:212:25 | .v |
588+
| conversions.swift:218:13:218:13 | withMyValue2 [v] | conversions.swift:197:6:197:6 | self [v] | file://:0:0:0:0 | .v | conversions.swift:218:13:218:26 | .v |
589+
| conversions.swift:219:11:219:11 | withMyValue2 [v] | conversions.swift:197:6:197:6 | self [v] | file://:0:0:0:0 | .v | conversions.swift:219:11:219:24 | .v |
590+
| conversions.swift:225:13:225:13 | withMyValue [v] | conversions.swift:197:6:197:6 | self [v] | file://:0:0:0:0 | .v | conversions.swift:225:13:225:25 | .v |
591+
| conversions.swift:226:10:226:10 | withMyValue [v] | conversions.swift:197:6:197:6 | self [v] | file://:0:0:0:0 | .v | conversions.swift:226:10:226:22 | .v |
592+
| conversions.swift:232:26:232:37 | call to sourceUInt() | conversions.swift:205:7:205:17 | withUInt | conversions.swift:205:2:209:2 | self[return] | conversions.swift:232:12:232:38 | call to Int.init(withUInt:) |
593+
| conversions.swift:235:37:235:47 | call to sourceInt() | conversions.swift:199:7:199:12 | v | conversions.swift:199:2:201:2 | self[return] [v] | conversions.swift:235:29:235:48 | call to MyValue.init(_:) [v] |
594+
| conversions.swift:238:30:238:49 | call to MyValue.init(_:) [v] | conversions.swift:217:7:217:21 | withMyValue2 [v] | conversions.swift:217:2:222:2 | self[return] | conversions.swift:238:12:238:50 | call to Int.init(withMyValue2:) |
595+
| conversions.swift:238:38:238:48 | call to sourceInt() | conversions.swift:199:7:199:12 | v | conversions.swift:199:2:201:2 | self[return] [v] | conversions.swift:238:30:238:49 | call to MyValue.init(_:) [v] |
596+
| conversions.swift:241:35:241:54 | call to MyValue.init(_:) [v] | conversions.swift:224:20:224:33 | withMyValue [v] | conversions.swift:226:10:226:22 | .v | conversions.swift:241:12:241:55 | call to mkInt(withMyValue:) |
597+
| conversions.swift:241:43:241:53 | call to sourceInt() | conversions.swift:199:7:199:12 | v | conversions.swift:199:2:201:2 | self[return] [v] | conversions.swift:241:35:241:54 | call to MyValue.init(_:) [v] |
509598
| stringinterpolation.swift:13:36:13:36 | pair [first] | stringinterpolation.swift:6:6:6:6 | self [first] | file://:0:0:0:0 | .first | stringinterpolation.swift:13:36:13:41 | .first |
510599
| stringinterpolation.swift:19:13:19:20 | call to source() | stringinterpolation.swift:6:6:6:6 | value | file://:0:0:0:0 | [post] self [first] | stringinterpolation.swift:19:2:19:2 | [post] p1 [first] |
511600
| stringinterpolation.swift:22:21:22:21 | p1 [first] | stringinterpolation.swift:6:6:6:6 | self [first] | file://:0:0:0:0 | .first | stringinterpolation.swift:22:21:22:24 | .first |
@@ -585,6 +674,15 @@ subpaths
585674
| conversions.swift:188:13:188:13 | arr2c | conversions.swift:172:15:172:25 | call to sourceInt() | conversions.swift:188:13:188:13 | arr2c | result |
586675
| conversions.swift:189:13:189:20 | ...[...] | conversions.swift:171:14:171:33 | call to sourceArray(_:) | conversions.swift:189:13:189:20 | ...[...] | result |
587676
| conversions.swift:190:13:190:20 | ...[...] | conversions.swift:172:15:172:25 | call to sourceInt() | conversions.swift:190:13:190:20 | ...[...] | result |
677+
| conversions.swift:206:13:206:13 | withUInt | conversions.swift:232:26:232:37 | call to sourceUInt() | conversions.swift:206:13:206:13 | withUInt | result |
678+
| conversions.swift:208:12:208:12 | self | conversions.swift:232:26:232:37 | call to sourceUInt() | conversions.swift:208:12:208:12 | self | result |
679+
| conversions.swift:212:13:212:25 | .v | conversions.swift:235:37:235:47 | call to sourceInt() | conversions.swift:212:13:212:25 | .v | result |
680+
| conversions.swift:218:13:218:26 | .v | conversions.swift:238:38:238:48 | call to sourceInt() | conversions.swift:218:13:218:26 | .v | result |
681+
| conversions.swift:221:12:221:12 | self | conversions.swift:238:38:238:48 | call to sourceInt() | conversions.swift:221:12:221:12 | self | result |
682+
| conversions.swift:225:13:225:25 | .v | conversions.swift:241:43:241:53 | call to sourceInt() | conversions.swift:225:13:225:25 | .v | result |
683+
| conversions.swift:232:12:232:38 | call to Int.init(withUInt:) | conversions.swift:232:26:232:37 | call to sourceUInt() | conversions.swift:232:12:232:38 | call to Int.init(withUInt:) | result |
684+
| conversions.swift:238:12:238:50 | call to Int.init(withMyValue2:) | conversions.swift:238:38:238:48 | call to sourceInt() | conversions.swift:238:12:238:50 | call to Int.init(withMyValue2:) | result |
685+
| conversions.swift:241:12:241:55 | call to mkInt(withMyValue:) | conversions.swift:241:43:241:53 | call to sourceInt() | conversions.swift:241:12:241:55 | call to mkInt(withMyValue:) | result |
588686
| simple.swift:12:13:12:24 | ... .+(_:_:) ... | simple.swift:12:17:12:24 | call to source() | simple.swift:12:13:12:24 | ... .+(_:_:) ... | result |
589687
| simple.swift:13:13:13:24 | ... .+(_:_:) ... | simple.swift:13:13:13:20 | call to source() | simple.swift:13:13:13:24 | ... .+(_:_:) ... | result |
590688
| simple.swift:14:13:14:24 | ... .-(_:_:) ... | simple.swift:14:17:14:24 | call to source() | simple.swift:14:13:14:24 | ... .-(_:_:) ... | result |

0 commit comments

Comments
 (0)