Skip to content

Commit 9fd04e6

Browse files
committed
Unified: Add accessor FP/FN flow test
1 parent 824bba2 commit 9fd04e6

2 files changed

Lines changed: 28 additions & 9 deletions

File tree

‎unified/ql/test/library-tests/dataflow/accessors_instance.swift‎

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -131,11 +131,16 @@ func t11() {
131131
class C {
132132
var p: (String, String) {
133133
get { ("safe", "safe") }
134-
set { sink(newValue.0) } // $ hasValueFlow=t11.1
134+
set { sink(newValue.0) } // $ hasValueFlow=t11.1 $ MISSING: hasValueFlow=t11.2
135+
}
136+
var q: C {
137+
get { C() }
138+
set { sink(newValue.p.0) } // $ SPURIOUS: hasValueFlow=t11.2
135139
}
136140
}
137141
let c = C()
138142
c.p.0 = source("t11.1")
143+
c.q.p = (source("t11.2"), source("t11.3"))
139144
}
140145

141146
func t12() {
@@ -150,5 +155,5 @@ func t12() {
150155
}
151156
}
152157
let c = C()
153-
c.s.update() // MISSING: the call to 'update' is not resolved
158+
c.s.update() // MISSING: the call to 'update' is not resolved
154159
}

‎unified/ql/test/library-tests/dataflow/test.expected‎

Lines changed: 21 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,15 @@ edges
3232
| accessors_instance.swift:119:13:119:17 | field | accessors_instance.swift:125:18:125:22 | field | provenance | |
3333
| accessors_instance.swift:119:21:119:35 | source(...) | accessors_instance.swift:119:13:119:17 | field | provenance | |
3434
| accessors_instance.swift:134:24:134:31 | newValue [0] | accessors_instance.swift:134:24:134:33 | ... .0 | provenance | |
35-
| accessors_instance.swift:138:5:138:7 | [post] ... .p [0] | accessors_instance.swift:134:24:134:31 | newValue [0] | provenance | |
36-
| accessors_instance.swift:138:5:138:9 | ... .0 | accessors_instance.swift:138:5:138:7 | [post] ... .p [0] | provenance | |
37-
| accessors_instance.swift:138:13:138:27 | source(...) | accessors_instance.swift:138:5:138:9 | ... .0 | provenance | |
35+
| accessors_instance.swift:138:24:138:31 | newValue [p, 0] | accessors_instance.swift:138:24:138:33 | ... .p [0] | provenance | |
36+
| accessors_instance.swift:138:24:138:33 | ... .p [0] | accessors_instance.swift:138:24:138:35 | ... .0 | provenance | |
37+
| accessors_instance.swift:142:5:142:7 | [post] ... .p [0] | accessors_instance.swift:134:24:134:31 | newValue [0] | provenance | |
38+
| accessors_instance.swift:142:5:142:9 | ... .0 | accessors_instance.swift:142:5:142:7 | [post] ... .p [0] | provenance | |
39+
| accessors_instance.swift:142:13:142:27 | source(...) | accessors_instance.swift:142:5:142:9 | ... .0 | provenance | |
40+
| accessors_instance.swift:143:5:143:7 | [post] ... .q [p, 0] | accessors_instance.swift:138:24:138:31 | newValue [p, 0] | provenance | |
41+
| accessors_instance.swift:143:5:143:9 | ... .p [0] | accessors_instance.swift:143:5:143:7 | [post] ... .q [p, 0] | provenance | |
42+
| accessors_instance.swift:143:13:143:46 | TupleExpr [0] | accessors_instance.swift:143:5:143:9 | ... .p [0] | provenance | |
43+
| accessors_instance.swift:143:14:143:28 | source(...) | accessors_instance.swift:143:13:143:46 | TupleExpr [0] | provenance | |
3844
| accessors_local.swift:7:21:7:34 | source(...) | accessors_local.swift:8:10:8:10 | x | provenance | |
3945
| accessors_local.swift:15:15:15:28 | source(...) | accessors_local.swift:17:10:17:10 | x | provenance | |
4046
| accessors_local.swift:22:15:22:28 | source(...) | accessors_local.swift:25:10:25:10 | x | provenance | |
@@ -558,9 +564,16 @@ nodes
558564
| accessors_instance.swift:125:18:125:22 | field | semmle.label | field |
559565
| accessors_instance.swift:134:24:134:31 | newValue [0] | semmle.label | newValue [0] |
560566
| accessors_instance.swift:134:24:134:33 | ... .0 | semmle.label | ... .0 |
561-
| accessors_instance.swift:138:5:138:7 | [post] ... .p [0] | semmle.label | [post] ... .p [0] |
562-
| accessors_instance.swift:138:5:138:9 | ... .0 | semmle.label | ... .0 |
563-
| accessors_instance.swift:138:13:138:27 | source(...) | semmle.label | source(...) |
567+
| accessors_instance.swift:138:24:138:31 | newValue [p, 0] | semmle.label | newValue [p, 0] |
568+
| accessors_instance.swift:138:24:138:33 | ... .p [0] | semmle.label | ... .p [0] |
569+
| accessors_instance.swift:138:24:138:35 | ... .0 | semmle.label | ... .0 |
570+
| accessors_instance.swift:142:5:142:7 | [post] ... .p [0] | semmle.label | [post] ... .p [0] |
571+
| accessors_instance.swift:142:5:142:9 | ... .0 | semmle.label | ... .0 |
572+
| accessors_instance.swift:142:13:142:27 | source(...) | semmle.label | source(...) |
573+
| accessors_instance.swift:143:5:143:7 | [post] ... .q [p, 0] | semmle.label | [post] ... .q [p, 0] |
574+
| accessors_instance.swift:143:5:143:9 | ... .p [0] | semmle.label | ... .p [0] |
575+
| accessors_instance.swift:143:13:143:46 | TupleExpr [0] | semmle.label | TupleExpr [0] |
576+
| accessors_instance.swift:143:14:143:28 | source(...) | semmle.label | source(...) |
564577
| accessors_local.swift:7:21:7:34 | source(...) | semmle.label | source(...) |
565578
| accessors_local.swift:8:10:8:10 | x | semmle.label | x |
566579
| accessors_local.swift:15:15:15:28 | source(...) | semmle.label | source(...) |
@@ -1191,7 +1204,8 @@ testFailures
11911204
| accessors_instance.swift:99:10:99:21 | ... .otherField | accessors_instance.swift:97:15:97:28 | source(...) | accessors_instance.swift:99:10:99:21 | ... .otherField | $@ | accessors_instance.swift:97:15:97:28 | source(...) | source(...) |
11921205
| accessors_instance.swift:112:10:112:16 | ... .field | accessors_instance.swift:106:21:106:34 | source(...) | accessors_instance.swift:112:10:112:16 | ... .field | $@ | accessors_instance.swift:106:21:106:34 | source(...) | source(...) |
11931206
| accessors_instance.swift:125:18:125:22 | field | accessors_instance.swift:119:21:119:35 | source(...) | accessors_instance.swift:125:18:125:22 | field | $@ | accessors_instance.swift:119:21:119:35 | source(...) | source(...) |
1194-
| accessors_instance.swift:134:24:134:33 | ... .0 | accessors_instance.swift:138:13:138:27 | source(...) | accessors_instance.swift:134:24:134:33 | ... .0 | $@ | accessors_instance.swift:138:13:138:27 | source(...) | source(...) |
1207+
| accessors_instance.swift:134:24:134:33 | ... .0 | accessors_instance.swift:142:13:142:27 | source(...) | accessors_instance.swift:134:24:134:33 | ... .0 | $@ | accessors_instance.swift:142:13:142:27 | source(...) | source(...) |
1208+
| accessors_instance.swift:138:24:138:35 | ... .0 | accessors_instance.swift:143:14:143:28 | source(...) | accessors_instance.swift:138:24:138:35 | ... .0 | $@ | accessors_instance.swift:143:14:143:28 | source(...) | source(...) |
11951209
| accessors_local.swift:8:10:8:10 | x | accessors_local.swift:7:21:7:34 | source(...) | accessors_local.swift:8:10:8:10 | x | $@ | accessors_local.swift:7:21:7:34 | source(...) | source(...) |
11961210
| accessors_local.swift:17:10:17:10 | x | accessors_local.swift:15:15:15:28 | source(...) | accessors_local.swift:17:10:17:10 | x | $@ | accessors_local.swift:15:15:15:28 | source(...) | source(...) |
11971211
| accessors_local.swift:25:10:25:10 | x | accessors_local.swift:22:15:22:28 | source(...) | accessors_local.swift:25:10:25:10 | x | $@ | accessors_local.swift:22:15:22:28 | source(...) | source(...) |

0 commit comments

Comments
 (0)