Skip to content

Commit a7ecdef

Browse files
committed
Swift: Add dataflow tests for tuples.
1 parent caf9ac5 commit a7ecdef

File tree

2 files changed

+72
-1
lines changed

2 files changed

+72
-1
lines changed

swift/ql/test/library-tests/dataflow/dataflow/LocalFlow.expected

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -192,3 +192,33 @@
192192
| test.swift:266:15:266:15 | x | test.swift:267:15:267:15 | x |
193193
| test.swift:266:15:266:25 | call to signum() | test.swift:266:15:266:25 | OptionalEvaluationExpr |
194194
| test.swift:267:15:267:15 | x | test.swift:268:16:268:16 | x |
195+
| test.swift:277:9:277:9 | WriteDef | test.swift:279:15:279:15 | t1 |
196+
| test.swift:277:14:277:26 | (...) | test.swift:277:9:277:9 | WriteDef |
197+
| test.swift:279:15:279:15 | t1 | test.swift:280:15:280:15 | t1 |
198+
| test.swift:280:15:280:15 | t1 | test.swift:281:15:281:15 | t1 |
199+
| test.swift:281:15:281:15 | t1 | test.swift:283:5:283:5 | t1 |
200+
| test.swift:283:5:283:5 | t1 | test.swift:285:15:285:15 | t1 |
201+
| test.swift:285:15:285:15 | t1 | test.swift:286:15:286:15 | t1 |
202+
| test.swift:286:15:286:15 | t1 | test.swift:287:15:287:15 | t1 |
203+
| test.swift:287:15:287:15 | t1 | test.swift:289:5:289:5 | t1 |
204+
| test.swift:289:5:289:5 | t1 | test.swift:291:15:291:15 | t1 |
205+
| test.swift:291:15:291:15 | t1 | test.swift:292:15:292:15 | t1 |
206+
| test.swift:292:15:292:15 | t1 | test.swift:293:15:293:15 | t1 |
207+
| test.swift:297:9:297:9 | WriteDef | test.swift:298:14:298:14 | t1 |
208+
| test.swift:297:14:297:45 | (...) | test.swift:297:9:297:9 | WriteDef |
209+
| test.swift:298:9:298:9 | WriteDef | test.swift:305:15:305:15 | t2 |
210+
| test.swift:298:14:298:14 | t1 | test.swift:298:9:298:9 | WriteDef |
211+
| test.swift:298:14:298:14 | t1 | test.swift:299:21:299:21 | t1 |
212+
| test.swift:299:9:299:17 | WriteDef | test.swift:309:15:309:15 | a |
213+
| test.swift:299:9:299:17 | WriteDef | test.swift:310:15:310:15 | b |
214+
| test.swift:299:9:299:17 | WriteDef | test.swift:311:15:311:15 | c |
215+
| test.swift:299:21:299:21 | t1 | test.swift:299:9:299:17 | WriteDef |
216+
| test.swift:299:21:299:21 | t1 | test.swift:299:9:299:17 | WriteDef |
217+
| test.swift:299:21:299:21 | t1 | test.swift:299:9:299:17 | WriteDef |
218+
| test.swift:299:21:299:21 | t1 | test.swift:301:15:301:15 | t1 |
219+
| test.swift:301:15:301:15 | t1 | test.swift:302:15:302:15 | t1 |
220+
| test.swift:302:15:302:15 | t1 | test.swift:303:15:303:15 | t1 |
221+
| test.swift:303:15:303:15 | t1 | test.swift:304:15:304:15 | t1 |
222+
| test.swift:305:15:305:15 | t2 | test.swift:306:15:306:15 | t2 |
223+
| test.swift:306:15:306:15 | t2 | test.swift:307:15:307:15 | t2 |
224+
| test.swift:307:15:307:15 | t2 | test.swift:308:15:308:15 | t2 |

swift/ql/test/library-tests/dataflow/dataflow/test.swift

Lines changed: 42 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,7 @@ func forwarder() {
124124
return i
125125
})
126126
sink(arg: z) // $ flow=122
127-
127+
128128
var clean: Int = forward(arg: source(), lambda: {
129129
(i: Int) -> Int in
130130
return 0
@@ -269,3 +269,44 @@ func test_optionals() {
269269
sink(arg: y) // $ MISSING: flow=259
270270
}
271271
}
272+
273+
func sink(arg: (Int, Int)) {}
274+
func sink(arg: (Int, Int, Int)) {}
275+
276+
func testTuples() {
277+
var t1 = (1, source())
278+
279+
sink(arg: t1)
280+
sink(arg: t1.0)
281+
sink(arg: t1.1) // $ MISSING: flow=277
282+
283+
t1.1 = 2
284+
285+
sink(arg: t1)
286+
sink(arg: t1.0)
287+
sink(arg: t1.1)
288+
289+
t1.0 = source()
290+
291+
sink(arg: t1)
292+
sink(arg: t1.0) // $ MISSING: flow=289
293+
sink(arg: t1.1)
294+
}
295+
296+
func testTuples2() {
297+
let t1 = (x: source(), y: source(), z: 0)
298+
let t2 = t1
299+
let (a, b, c) = t1
300+
301+
sink(arg: t1)
302+
sink(arg: t1.x) // $ MISSING: flow=297
303+
sink(arg: t1.y) // $ MISSING: flow=297
304+
sink(arg: t1.z)
305+
sink(arg: t2)
306+
sink(arg: t2.x) // $ MISSING: flow=297
307+
sink(arg: t2.y) // $ MISSING: flow=297
308+
sink(arg: t2.z)
309+
sink(arg: a) // $ MISSING: flow=297
310+
sink(arg: b) // $ MISSING: flow=297
311+
sink(arg: c)
312+
}

0 commit comments

Comments
 (0)