diff --git a/unified/ql/test/library-tests/dataflow/implicit-self.swift b/unified/ql/test/library-tests/dataflow/implicit-self.swift index 32f8e88266f4..87d9dc172524 100644 --- a/unified/ql/test/library-tests/dataflow/implicit-self.swift +++ b/unified/ql/test/library-tests/dataflow/implicit-self.swift @@ -1,3 +1,8 @@ +func source(_ s: String) -> String { return s } + +@discardableResult +func sink(_ s: String) -> String { return "" } + class Box { var x: String = "" } @@ -7,78 +12,78 @@ class C { var box = Box() func t1() { - sink(self.x); // no flow - self.x = source("t1.1"); - sink(self.x); // $ hasValueFlow=t1.1 + sink(self.x) // no flow + self.x = source("t1.1") + sink(self.x) // $ hasValueFlow=t1.1 } func t2() { - sink(x); // no flow - x = source("t2.1"); - sink(x); // $ hasValueFlow=t2.1 + sink(x) // no flow + x = source("t2.1") + sink(x) // $ hasValueFlow=t2.1 } func t3() { - sink(self.x); // no flow - x = source("t3.1"); - sink(self.x); // $ hasValueFlow=t3.1 + sink(self.x) // no flow + x = source("t3.1") + sink(self.x) // $ hasValueFlow=t3.1 } func t4() { - sink(x); // no flow - self.x = source("t4.1"); - sink(x); // $ hasValueFlow=t4.1 + sink(x) // no flow + self.x = source("t4.1") + sink(x) // $ hasValueFlow=t4.1 } func t5() { - sink(self.box.x); // no flow - self.box.x = source("t5.1"); - sink(self.box.x); // $ hasValueFlow=t5.1 + sink(self.box.x) // no flow + self.box.x = source("t5.1") + sink(self.box.x) // $ hasValueFlow=t5.1 } func t6() { - sink(box.x); // no flow - box.x = source("t6.1"); - sink(box.x); // $ hasValueFlow=t6.1 + sink(box.x) // no flow + box.x = source("t6.1") + sink(box.x) // $ hasValueFlow=t6.1 } func t7() { - sink(self.box.x); // no flow - box.x = source("t7.1"); - sink(self.box.x); // $ hasValueFlow=t7.1 + sink(self.box.x) // no flow + box.x = source("t7.1") + sink(self.box.x) // $ hasValueFlow=t7.1 } func t8() { - sink(box.x); // no flow - self.box.x = source("t8.1"); - sink(box.x); // $ hasValueFlow=t8.1 + sink(box.x) // no flow + self.box.x = source("t8.1") + sink(box.x) // $ hasValueFlow=t8.1 } func t9() { - x = "safe"; - x += sink(x) + source("t9.1"); - sink(x); // $ hasTaintFlow=t9.1 - sink(self.x); // $ hasTaintFlow=t9.1 + x = "safe" + x += sink(x) + source("t9.1") + sink(x) // $ hasTaintFlow=t9.1 + sink(self.x) // $ hasTaintFlow=t9.1 } func t10() { - x = "safe"; - self.x += sink(x) + source("t10.1"); - sink(x); // $ hasTaintFlow=t10.1 - sink(self.x); // $ hasTaintFlow=t10.1 + x = "safe" + self.x += sink(x) + source("t10.1") + sink(x) // $ hasTaintFlow=t10.1 + sink(self.x) // $ hasTaintFlow=t10.1 } func t11() { - self.x = "safe"; - x += sink(x) + source("t11.1"); - sink(x); // $ hasTaintFlow=t11.1 - sink(self.x); // $ hasTaintFlow=t11.1 + self.x = "safe" + x += sink(x) + source("t11.1") + sink(x) // $ hasTaintFlow=t11.1 + sink(self.x) // $ hasTaintFlow=t11.1 } func t12() { - self.x = "safe"; - self.x += sink(x) + source("t12.1"); - sink(x); // $ hasTaintFlow=t12.1 - sink(self.x); // $ hasTaintFlow=t12.1 + self.x = "safe" + self.x += sink(x) + source("t12.1") + sink(x) // $ hasTaintFlow=t12.1 + sink(self.x) // $ hasTaintFlow=t12.1 } } diff --git a/unified/ql/test/library-tests/dataflow/test.expected b/unified/ql/test/library-tests/dataflow/test.expected index 41ced3845de2..1f08d05eb053 100644 --- a/unified/ql/test/library-tests/dataflow/test.expected +++ b/unified/ql/test/library-tests/dataflow/test.expected @@ -1,372 +1,372 @@ models edges -| implicit-self.swift:11:9:11:12 | [post] self [x] | implicit-self.swift:12:14:12:17 | self [x] | provenance | | -| implicit-self.swift:11:9:11:14 | MemberAccessExpr | implicit-self.swift:11:9:11:12 | [post] self [x] | provenance | | -| implicit-self.swift:11:18:11:31 | CallExpr | implicit-self.swift:11:9:11:14 | MemberAccessExpr | provenance | | -| implicit-self.swift:12:14:12:17 | self [x] | implicit-self.swift:12:14:12:19 | MemberAccessExpr | provenance | | -| implicit-self.swift:17:9:17:9 | x | implicit-self.swift:18:14:18:14 | x | provenance | | -| implicit-self.swift:17:13:17:26 | CallExpr | implicit-self.swift:17:9:17:9 | x | provenance | | -| implicit-self.swift:23:9:23:9 | x | implicit-self.swift:24:14:24:17 | self [x] | provenance | | -| implicit-self.swift:23:13:23:26 | CallExpr | implicit-self.swift:23:9:23:9 | x | provenance | | -| implicit-self.swift:24:14:24:17 | self [x] | implicit-self.swift:24:14:24:19 | MemberAccessExpr | provenance | | -| implicit-self.swift:29:9:29:12 | [post] self [x] | implicit-self.swift:30:14:30:14 | x | provenance | | -| implicit-self.swift:29:9:29:14 | MemberAccessExpr | implicit-self.swift:29:9:29:12 | [post] self [x] | provenance | | -| implicit-self.swift:29:18:29:31 | CallExpr | implicit-self.swift:29:9:29:14 | MemberAccessExpr | provenance | | -| implicit-self.swift:35:9:35:12 | [post] self [box, x] | implicit-self.swift:36:14:36:17 | self [box, x] | provenance | | -| implicit-self.swift:35:9:35:16 | [post] MemberAccessExpr [x] | implicit-self.swift:35:9:35:12 | [post] self [box, x] | provenance | | -| implicit-self.swift:35:9:35:18 | MemberAccessExpr | implicit-self.swift:35:9:35:16 | [post] MemberAccessExpr [x] | provenance | | -| implicit-self.swift:35:22:35:35 | CallExpr | implicit-self.swift:35:9:35:18 | MemberAccessExpr | provenance | | -| implicit-self.swift:36:14:36:17 | self [box, x] | implicit-self.swift:36:14:36:21 | MemberAccessExpr [x] | provenance | | -| implicit-self.swift:36:14:36:21 | MemberAccessExpr [x] | implicit-self.swift:36:14:36:23 | MemberAccessExpr | provenance | | -| implicit-self.swift:41:9:41:11 | [post] box [x] | implicit-self.swift:42:14:42:16 | box [x] | provenance | | -| implicit-self.swift:41:9:41:13 | MemberAccessExpr | implicit-self.swift:41:9:41:11 | [post] box [x] | provenance | | -| implicit-self.swift:41:17:41:30 | CallExpr | implicit-self.swift:41:9:41:13 | MemberAccessExpr | provenance | | -| implicit-self.swift:42:14:42:16 | box [x] | implicit-self.swift:42:14:42:18 | MemberAccessExpr | provenance | | -| implicit-self.swift:47:9:47:11 | [post] box [x] | implicit-self.swift:48:14:48:17 | self [box, x] | provenance | | -| implicit-self.swift:47:9:47:13 | MemberAccessExpr | implicit-self.swift:47:9:47:11 | [post] box [x] | provenance | | -| implicit-self.swift:47:17:47:30 | CallExpr | implicit-self.swift:47:9:47:13 | MemberAccessExpr | provenance | | -| implicit-self.swift:48:14:48:17 | self [box, x] | implicit-self.swift:48:14:48:21 | MemberAccessExpr [x] | provenance | | -| implicit-self.swift:48:14:48:21 | MemberAccessExpr [x] | implicit-self.swift:48:14:48:23 | MemberAccessExpr | provenance | | -| implicit-self.swift:53:9:53:12 | [post] self [box, x] | implicit-self.swift:54:14:54:16 | box [x] | provenance | | -| implicit-self.swift:53:9:53:16 | [post] MemberAccessExpr [x] | implicit-self.swift:53:9:53:12 | [post] self [box, x] | provenance | | -| implicit-self.swift:53:9:53:18 | MemberAccessExpr | implicit-self.swift:53:9:53:16 | [post] MemberAccessExpr [x] | provenance | | -| implicit-self.swift:53:22:53:35 | CallExpr | implicit-self.swift:53:9:53:18 | MemberAccessExpr | provenance | | -| implicit-self.swift:54:14:54:16 | box [x] | implicit-self.swift:54:14:54:18 | MemberAccessExpr | provenance | | -| implicit-self.swift:59:9:59:9 | [incoming] x | implicit-self.swift:60:14:60:14 | x | provenance | | -| implicit-self.swift:59:9:59:9 | [incoming] x | implicit-self.swift:61:14:61:17 | self [x] | provenance | | -| implicit-self.swift:59:24:59:37 | CallExpr | implicit-self.swift:59:9:59:9 | [incoming] x | provenance | | -| implicit-self.swift:61:14:61:17 | self [x] | implicit-self.swift:61:14:61:19 | MemberAccessExpr | provenance | | -| implicit-self.swift:66:9:66:12 | [post] self [x] | implicit-self.swift:67:14:67:14 | x | provenance | | -| implicit-self.swift:66:9:66:12 | [post] self [x] | implicit-self.swift:68:14:68:17 | self [x] | provenance | | -| implicit-self.swift:66:9:66:14 | [incoming] MemberAccessExpr | implicit-self.swift:66:9:66:12 | [post] self [x] | provenance | | -| implicit-self.swift:66:29:66:43 | CallExpr | implicit-self.swift:66:9:66:14 | [incoming] MemberAccessExpr | provenance | | -| implicit-self.swift:68:14:68:17 | self [x] | implicit-self.swift:68:14:68:19 | MemberAccessExpr | provenance | | -| implicit-self.swift:73:9:73:9 | [incoming] x | implicit-self.swift:74:14:74:14 | x | provenance | | -| implicit-self.swift:73:9:73:9 | [incoming] x | implicit-self.swift:75:14:75:17 | self [x] | provenance | | -| implicit-self.swift:73:24:73:38 | CallExpr | implicit-self.swift:73:9:73:9 | [incoming] x | provenance | | -| implicit-self.swift:75:14:75:17 | self [x] | implicit-self.swift:75:14:75:19 | MemberAccessExpr | provenance | | -| implicit-self.swift:80:9:80:12 | [post] self [x] | implicit-self.swift:81:14:81:14 | x | provenance | | -| implicit-self.swift:80:9:80:12 | [post] self [x] | implicit-self.swift:82:14:82:17 | self [x] | provenance | | -| implicit-self.swift:80:9:80:14 | [incoming] MemberAccessExpr | implicit-self.swift:80:9:80:12 | [post] self [x] | provenance | | -| implicit-self.swift:80:29:80:43 | CallExpr | implicit-self.swift:80:9:80:14 | [incoming] MemberAccessExpr | provenance | | -| implicit-self.swift:82:14:82:17 | self [x] | implicit-self.swift:82:14:82:19 | MemberAccessExpr | provenance | | -| test.swift:6:10:6:23 | CallExpr | test.swift:6:10:6:32 | BinaryExpr | provenance | | -| test.swift:7:19:7:32 | CallExpr | test.swift:7:10:7:32 | BinaryExpr | provenance | | -| test.swift:9:13:9:26 | CallExpr | test.swift:9:10:9:33 | StringInterpolationExpr | provenance | | -| test.swift:10:18:10:31 | CallExpr | test.swift:10:10:10:33 | StringInterpolationExpr | provenance | | -| test.swift:11:18:11:31 | CallExpr | test.swift:11:10:11:38 | StringInterpolationExpr | provenance | | -| test.swift:16:10:16:33 | TupleExpr [0] | test.swift:16:10:16:35 | MemberAccessExpr | provenance | | -| test.swift:16:11:16:25 | CallExpr | test.swift:16:10:16:33 | TupleExpr [0] | provenance | | -| test.swift:19:10:19:33 | TupleExpr [1] | test.swift:19:10:19:35 | MemberAccessExpr | provenance | | -| test.swift:19:19:19:32 | CallExpr | test.swift:19:10:19:33 | TupleExpr [1] | provenance | | -| test.swift:23:9:23:9 | a | test.swift:24:10:24:10 | a | provenance | | -| test.swift:23:13:23:26 | CallExpr | test.swift:23:9:23:9 | a | provenance | | -| test.swift:28:9:28:14 | TupleExpr [0] | test.swift:28:10:28:10 | a | provenance | | -| test.swift:28:10:28:10 | a | test.swift:29:10:29:10 | a | provenance | | -| test.swift:28:18:28:41 | TupleExpr [0] | test.swift:28:9:28:14 | TupleExpr [0] | provenance | | -| test.swift:28:19:28:33 | CallExpr | test.swift:28:18:28:41 | TupleExpr [0] | provenance | | -| test.swift:32:9:32:14 | TupleExpr [1] | test.swift:32:13:32:13 | d | provenance | | -| test.swift:32:13:32:13 | d | test.swift:34:10:34:10 | d | provenance | | -| test.swift:32:18:32:41 | TupleExpr [1] | test.swift:32:9:32:14 | TupleExpr [1] | provenance | | -| test.swift:32:27:32:40 | CallExpr | test.swift:32:18:32:41 | TupleExpr [1] | provenance | | -| test.swift:38:9:38:9 | a | test.swift:39:10:39:10 | a | provenance | | -| test.swift:38:13:38:26 | CallExpr | test.swift:38:9:38:9 | a | provenance | | -| test.swift:46:5:46:9 | [post] tuple [0] | test.swift:47:10:47:14 | tuple [0] | provenance | | -| test.swift:46:5:46:11 | MemberAccessExpr | test.swift:46:5:46:9 | [post] tuple [0] | provenance | | -| test.swift:46:15:46:28 | CallExpr | test.swift:46:5:46:11 | MemberAccessExpr | provenance | | -| test.swift:47:10:47:14 | tuple [0] | test.swift:47:10:47:16 | MemberAccessExpr | provenance | | -| test.swift:53:5:53:14 | [post] deep_tuple [1, 0] | test.swift:58:10:58:19 | deep_tuple [1, 0] | provenance | | -| test.swift:53:5:53:16 | [post] MemberAccessExpr [0] | test.swift:53:5:53:14 | [post] deep_tuple [1, 0] | provenance | | -| test.swift:53:5:53:18 | MemberAccessExpr | test.swift:53:5:53:16 | [post] MemberAccessExpr [0] | provenance | | -| test.swift:53:22:53:35 | CallExpr | test.swift:53:5:53:18 | MemberAccessExpr | provenance | | -| test.swift:58:10:58:19 | deep_tuple [1, 0] | test.swift:58:10:58:21 | MemberAccessExpr [0] | provenance | | -| test.swift:58:10:58:21 | MemberAccessExpr [0] | test.swift:58:10:58:23 | MemberAccessExpr | provenance | | -| test.swift:64:5:64:16 | TupleExpr [0] | test.swift:64:6:64:12 | MemberAccessExpr | provenance | | -| test.swift:64:6:64:10 | [post] tuple [1] | test.swift:66:10:66:14 | tuple [1] | provenance | | -| test.swift:64:6:64:12 | MemberAccessExpr | test.swift:64:6:64:10 | [post] tuple [1] | provenance | | -| test.swift:64:20:64:51 | TupleExpr [0] | test.swift:64:5:64:16 | TupleExpr [0] | provenance | | -| test.swift:64:21:64:35 | CallExpr | test.swift:64:20:64:51 | TupleExpr [0] | provenance | | -| test.swift:66:10:66:14 | tuple [1] | test.swift:66:10:66:16 | MemberAccessExpr | provenance | | -| test.swift:74:5:74:9 | [post] tuple [0] | test.swift:75:10:75:14 | tuple [0] | provenance | | -| test.swift:74:5:74:11 | MemberAccessExpr | test.swift:74:5:74:9 | [post] tuple [0] | provenance | | -| test.swift:74:15:74:29 | CallExpr | test.swift:74:5:74:11 | MemberAccessExpr | provenance | | -| test.swift:75:10:75:14 | tuple [0] | test.swift:75:10:75:16 | MemberAccessExpr | provenance | | -| test.swift:86:9:86:9 | x | test.swift:90:10:90:10 | x | provenance | | -| test.swift:86:9:86:9 | x | test.swift:99:14:99:14 | x | provenance | | -| test.swift:86:13:86:27 | CallExpr | test.swift:86:9:86:9 | x | provenance | | -| test.swift:94:9:94:9 | y | test.swift:96:10:96:10 | y | provenance | | -| test.swift:94:9:94:9 | y | test.swift:100:14:100:14 | y | provenance | | -| test.swift:94:13:94:27 | CallExpr | test.swift:94:9:94:9 | y | provenance | | -| test.swift:107:9:107:13 | [post] tuple [0] | test.swift:112:10:112:14 | tuple [0] | provenance | | -| test.swift:107:9:107:15 | MemberAccessExpr | test.swift:107:9:107:13 | [post] tuple [0] | provenance | | -| test.swift:107:19:107:33 | CallExpr | test.swift:107:9:107:15 | MemberAccessExpr | provenance | | -| test.swift:112:10:112:14 | tuple [0] | test.swift:112:10:112:16 | MemberAccessExpr | provenance | | -| test.swift:117:9:117:13 | tuple [0] | test.swift:120:17:120:21 | tuple [0] | provenance | | -| test.swift:117:9:117:13 | tuple [1] | test.swift:120:17:120:21 | tuple [1] | provenance | | -| test.swift:117:17:117:50 | TupleExpr [0] | test.swift:117:9:117:13 | tuple [0] | provenance | | -| test.swift:117:17:117:50 | TupleExpr [1] | test.swift:117:9:117:13 | tuple [1] | provenance | | -| test.swift:117:18:117:33 | CallExpr | test.swift:117:17:117:50 | TupleExpr [0] | provenance | | -| test.swift:117:35:117:49 | CallExpr | test.swift:117:17:117:50 | TupleExpr [1] | provenance | | -| test.swift:120:9:120:13 | TupleExpr [0] | test.swift:120:10:120:10 | a | provenance | | -| test.swift:120:9:120:13 | TupleExpr [1] | test.swift:120:12:120:12 | b | provenance | | -| test.swift:120:10:120:10 | a | test.swift:125:10:125:10 | a | provenance | | -| test.swift:120:12:120:12 | b | test.swift:126:10:126:10 | b | provenance | | -| test.swift:120:17:120:21 | tuple [0] | test.swift:120:9:120:13 | TupleExpr [0] | provenance | | -| test.swift:120:17:120:21 | tuple [1] | test.swift:120:9:120:13 | TupleExpr [1] | provenance | | -| test.swift:131:5:131:5 | a | test.swift:132:10:132:10 | a | provenance | | -| test.swift:131:19:131:33 | CallExpr | test.swift:131:5:131:5 | a | provenance | | -| test.swift:137:5:137:5 | [incoming] a | test.swift:138:10:138:10 | a | provenance | | -| test.swift:137:10:137:24 | CallExpr | test.swift:137:5:137:5 | [incoming] a | provenance | | -| test.swift:143:5:143:5 | [incoming] a | test.swift:144:10:144:10 | a | provenance | | -| test.swift:143:20:143:34 | CallExpr | test.swift:143:5:143:5 | [incoming] a | provenance | | -| test.swift:149:5:149:5 | [post] a [0] | test.swift:150:10:150:10 | a [0] | provenance | | -| test.swift:149:5:149:7 | MemberAccessExpr | test.swift:149:5:149:5 | [post] a [0] | provenance | | -| test.swift:149:23:149:37 | CallExpr | test.swift:149:5:149:7 | MemberAccessExpr | provenance | | -| test.swift:150:10:150:10 | a [0] | test.swift:150:10:150:12 | MemberAccessExpr | provenance | | -| test.swift:156:5:156:12 | TupleExpr [0] | test.swift:156:6:156:8 | MemberAccessExpr | provenance | | -| test.swift:156:6:156:6 | [post] a [0] | test.swift:157:10:157:10 | a [0] | provenance | | -| test.swift:156:6:156:8 | MemberAccessExpr | test.swift:156:6:156:6 | [post] a [0] | provenance | | -| test.swift:156:16:156:61 | TupleExpr [0] | test.swift:156:5:156:12 | TupleExpr [0] | provenance | | -| test.swift:156:17:156:43 | BinaryExpr | test.swift:156:16:156:61 | TupleExpr [0] | provenance | | -| test.swift:156:29:156:43 | CallExpr | test.swift:156:17:156:43 | BinaryExpr | provenance | | -| test.swift:157:10:157:10 | a [0] | test.swift:157:10:157:12 | MemberAccessExpr | provenance | | -| test.swift:164:5:164:10 | TupleExpr [0] | test.swift:164:6:164:6 | a | provenance | | -| test.swift:164:5:164:10 | TupleExpr [1] | test.swift:164:9:164:9 | b | provenance | | -| test.swift:164:6:164:6 | a | test.swift:165:10:165:10 | a | provenance | | -| test.swift:164:9:164:9 | b | test.swift:166:10:166:10 | b | provenance | | -| test.swift:164:14:164:67 | TupleExpr [0] | test.swift:164:5:164:10 | TupleExpr [0] | provenance | | -| test.swift:164:14:164:67 | TupleExpr [1] | test.swift:164:5:164:10 | TupleExpr [1] | provenance | | -| test.swift:164:15:164:39 | BinaryExpr | test.swift:164:14:164:67 | TupleExpr [0] | provenance | | -| test.swift:164:25:164:39 | CallExpr | test.swift:164:15:164:39 | BinaryExpr | provenance | | -| test.swift:164:42:164:66 | BinaryExpr | test.swift:164:14:164:67 | TupleExpr [1] | provenance | | -| test.swift:164:52:164:66 | CallExpr | test.swift:164:42:164:66 | BinaryExpr | provenance | | +| implicit-self.swift:16:9:16:12 | [post] self [x] | implicit-self.swift:17:14:17:17 | self [x] | provenance | | +| implicit-self.swift:16:9:16:14 | MemberAccessExpr | implicit-self.swift:16:9:16:12 | [post] self [x] | provenance | | +| implicit-self.swift:16:18:16:31 | CallExpr | implicit-self.swift:16:9:16:14 | MemberAccessExpr | provenance | | +| implicit-self.swift:17:14:17:17 | self [x] | implicit-self.swift:17:14:17:19 | MemberAccessExpr | provenance | | +| implicit-self.swift:22:9:22:9 | x | implicit-self.swift:23:14:23:14 | x | provenance | | +| implicit-self.swift:22:13:22:26 | CallExpr | implicit-self.swift:22:9:22:9 | x | provenance | | +| implicit-self.swift:28:9:28:9 | x | implicit-self.swift:29:14:29:17 | self [x] | provenance | | +| implicit-self.swift:28:13:28:26 | CallExpr | implicit-self.swift:28:9:28:9 | x | provenance | | +| implicit-self.swift:29:14:29:17 | self [x] | implicit-self.swift:29:14:29:19 | MemberAccessExpr | provenance | | +| implicit-self.swift:34:9:34:12 | [post] self [x] | implicit-self.swift:35:14:35:14 | x | provenance | | +| implicit-self.swift:34:9:34:14 | MemberAccessExpr | implicit-self.swift:34:9:34:12 | [post] self [x] | provenance | | +| implicit-self.swift:34:18:34:31 | CallExpr | implicit-self.swift:34:9:34:14 | MemberAccessExpr | provenance | | +| implicit-self.swift:40:9:40:12 | [post] self [box, x] | implicit-self.swift:41:14:41:17 | self [box, x] | provenance | | +| implicit-self.swift:40:9:40:16 | [post] MemberAccessExpr [x] | implicit-self.swift:40:9:40:12 | [post] self [box, x] | provenance | | +| implicit-self.swift:40:9:40:18 | MemberAccessExpr | implicit-self.swift:40:9:40:16 | [post] MemberAccessExpr [x] | provenance | | +| implicit-self.swift:40:22:40:35 | CallExpr | implicit-self.swift:40:9:40:18 | MemberAccessExpr | provenance | | +| implicit-self.swift:41:14:41:17 | self [box, x] | implicit-self.swift:41:14:41:21 | MemberAccessExpr [x] | provenance | | +| implicit-self.swift:41:14:41:21 | MemberAccessExpr [x] | implicit-self.swift:41:14:41:23 | MemberAccessExpr | provenance | | +| implicit-self.swift:46:9:46:11 | [post] box [x] | implicit-self.swift:47:14:47:16 | box [x] | provenance | | +| implicit-self.swift:46:9:46:13 | MemberAccessExpr | implicit-self.swift:46:9:46:11 | [post] box [x] | provenance | | +| implicit-self.swift:46:17:46:30 | CallExpr | implicit-self.swift:46:9:46:13 | MemberAccessExpr | provenance | | +| implicit-self.swift:47:14:47:16 | box [x] | implicit-self.swift:47:14:47:18 | MemberAccessExpr | provenance | | +| implicit-self.swift:52:9:52:11 | [post] box [x] | implicit-self.swift:53:14:53:17 | self [box, x] | provenance | | +| implicit-self.swift:52:9:52:13 | MemberAccessExpr | implicit-self.swift:52:9:52:11 | [post] box [x] | provenance | | +| implicit-self.swift:52:17:52:30 | CallExpr | implicit-self.swift:52:9:52:13 | MemberAccessExpr | provenance | | +| implicit-self.swift:53:14:53:17 | self [box, x] | implicit-self.swift:53:14:53:21 | MemberAccessExpr [x] | provenance | | +| implicit-self.swift:53:14:53:21 | MemberAccessExpr [x] | implicit-self.swift:53:14:53:23 | MemberAccessExpr | provenance | | +| implicit-self.swift:58:9:58:12 | [post] self [box, x] | implicit-self.swift:59:14:59:16 | box [x] | provenance | | +| implicit-self.swift:58:9:58:16 | [post] MemberAccessExpr [x] | implicit-self.swift:58:9:58:12 | [post] self [box, x] | provenance | | +| implicit-self.swift:58:9:58:18 | MemberAccessExpr | implicit-self.swift:58:9:58:16 | [post] MemberAccessExpr [x] | provenance | | +| implicit-self.swift:58:22:58:35 | CallExpr | implicit-self.swift:58:9:58:18 | MemberAccessExpr | provenance | | +| implicit-self.swift:59:14:59:16 | box [x] | implicit-self.swift:59:14:59:18 | MemberAccessExpr | provenance | | +| implicit-self.swift:64:9:64:9 | [incoming] x | implicit-self.swift:65:14:65:14 | x | provenance | | +| implicit-self.swift:64:9:64:9 | [incoming] x | implicit-self.swift:66:14:66:17 | self [x] | provenance | | +| implicit-self.swift:64:24:64:37 | CallExpr | implicit-self.swift:64:9:64:9 | [incoming] x | provenance | | +| implicit-self.swift:66:14:66:17 | self [x] | implicit-self.swift:66:14:66:19 | MemberAccessExpr | provenance | | +| implicit-self.swift:71:9:71:12 | [post] self [x] | implicit-self.swift:72:14:72:14 | x | provenance | | +| implicit-self.swift:71:9:71:12 | [post] self [x] | implicit-self.swift:73:14:73:17 | self [x] | provenance | | +| implicit-self.swift:71:9:71:14 | [incoming] MemberAccessExpr | implicit-self.swift:71:9:71:12 | [post] self [x] | provenance | | +| implicit-self.swift:71:29:71:43 | CallExpr | implicit-self.swift:71:9:71:14 | [incoming] MemberAccessExpr | provenance | | +| implicit-self.swift:73:14:73:17 | self [x] | implicit-self.swift:73:14:73:19 | MemberAccessExpr | provenance | | +| implicit-self.swift:78:9:78:9 | [incoming] x | implicit-self.swift:79:14:79:14 | x | provenance | | +| implicit-self.swift:78:9:78:9 | [incoming] x | implicit-self.swift:80:14:80:17 | self [x] | provenance | | +| implicit-self.swift:78:24:78:38 | CallExpr | implicit-self.swift:78:9:78:9 | [incoming] x | provenance | | +| implicit-self.swift:80:14:80:17 | self [x] | implicit-self.swift:80:14:80:19 | MemberAccessExpr | provenance | | +| implicit-self.swift:85:9:85:12 | [post] self [x] | implicit-self.swift:86:14:86:14 | x | provenance | | +| implicit-self.swift:85:9:85:12 | [post] self [x] | implicit-self.swift:87:14:87:17 | self [x] | provenance | | +| implicit-self.swift:85:9:85:14 | [incoming] MemberAccessExpr | implicit-self.swift:85:9:85:12 | [post] self [x] | provenance | | +| implicit-self.swift:85:29:85:43 | CallExpr | implicit-self.swift:85:9:85:14 | [incoming] MemberAccessExpr | provenance | | +| implicit-self.swift:87:14:87:17 | self [x] | implicit-self.swift:87:14:87:19 | MemberAccessExpr | provenance | | +| test.swift:17:10:17:23 | CallExpr | test.swift:17:10:17:32 | BinaryExpr | provenance | | +| test.swift:18:19:18:32 | CallExpr | test.swift:18:10:18:32 | BinaryExpr | provenance | | +| test.swift:20:13:20:26 | CallExpr | test.swift:20:10:20:33 | StringInterpolationExpr | provenance | | +| test.swift:21:18:21:31 | CallExpr | test.swift:21:10:21:33 | StringInterpolationExpr | provenance | | +| test.swift:22:18:22:31 | CallExpr | test.swift:22:10:22:38 | StringInterpolationExpr | provenance | | +| test.swift:27:10:27:33 | TupleExpr [0] | test.swift:27:10:27:35 | MemberAccessExpr | provenance | | +| test.swift:27:11:27:25 | CallExpr | test.swift:27:10:27:33 | TupleExpr [0] | provenance | | +| test.swift:30:10:30:33 | TupleExpr [1] | test.swift:30:10:30:35 | MemberAccessExpr | provenance | | +| test.swift:30:19:30:32 | CallExpr | test.swift:30:10:30:33 | TupleExpr [1] | provenance | | +| test.swift:34:9:34:9 | a | test.swift:35:10:35:10 | a | provenance | | +| test.swift:34:13:34:26 | CallExpr | test.swift:34:9:34:9 | a | provenance | | +| test.swift:39:9:39:14 | TupleExpr [0] | test.swift:39:10:39:10 | a | provenance | | +| test.swift:39:10:39:10 | a | test.swift:40:10:40:10 | a | provenance | | +| test.swift:39:18:39:41 | TupleExpr [0] | test.swift:39:9:39:14 | TupleExpr [0] | provenance | | +| test.swift:39:19:39:33 | CallExpr | test.swift:39:18:39:41 | TupleExpr [0] | provenance | | +| test.swift:43:9:43:14 | TupleExpr [1] | test.swift:43:13:43:13 | d | provenance | | +| test.swift:43:13:43:13 | d | test.swift:45:10:45:10 | d | provenance | | +| test.swift:43:18:43:41 | TupleExpr [1] | test.swift:43:9:43:14 | TupleExpr [1] | provenance | | +| test.swift:43:27:43:40 | CallExpr | test.swift:43:18:43:41 | TupleExpr [1] | provenance | | +| test.swift:49:9:49:9 | a | test.swift:50:10:50:10 | a | provenance | | +| test.swift:49:13:49:26 | CallExpr | test.swift:49:9:49:9 | a | provenance | | +| test.swift:57:5:57:9 | [post] tuple [0] | test.swift:58:10:58:14 | tuple [0] | provenance | | +| test.swift:57:5:57:11 | MemberAccessExpr | test.swift:57:5:57:9 | [post] tuple [0] | provenance | | +| test.swift:57:15:57:28 | CallExpr | test.swift:57:5:57:11 | MemberAccessExpr | provenance | | +| test.swift:58:10:58:14 | tuple [0] | test.swift:58:10:58:16 | MemberAccessExpr | provenance | | +| test.swift:64:5:64:14 | [post] deep_tuple [1, 0] | test.swift:69:10:69:19 | deep_tuple [1, 0] | provenance | | +| test.swift:64:5:64:16 | [post] MemberAccessExpr [0] | test.swift:64:5:64:14 | [post] deep_tuple [1, 0] | provenance | | +| test.swift:64:5:64:18 | MemberAccessExpr | test.swift:64:5:64:16 | [post] MemberAccessExpr [0] | provenance | | +| test.swift:64:22:64:35 | CallExpr | test.swift:64:5:64:18 | MemberAccessExpr | provenance | | +| test.swift:69:10:69:19 | deep_tuple [1, 0] | test.swift:69:10:69:21 | MemberAccessExpr [0] | provenance | | +| test.swift:69:10:69:21 | MemberAccessExpr [0] | test.swift:69:10:69:23 | MemberAccessExpr | provenance | | +| test.swift:75:5:75:16 | TupleExpr [0] | test.swift:75:6:75:12 | MemberAccessExpr | provenance | | +| test.swift:75:6:75:10 | [post] tuple [1] | test.swift:77:10:77:14 | tuple [1] | provenance | | +| test.swift:75:6:75:12 | MemberAccessExpr | test.swift:75:6:75:10 | [post] tuple [1] | provenance | | +| test.swift:75:20:75:51 | TupleExpr [0] | test.swift:75:5:75:16 | TupleExpr [0] | provenance | | +| test.swift:75:21:75:35 | CallExpr | test.swift:75:20:75:51 | TupleExpr [0] | provenance | | +| test.swift:77:10:77:14 | tuple [1] | test.swift:77:10:77:16 | MemberAccessExpr | provenance | | +| test.swift:85:5:85:9 | [post] tuple [0] | test.swift:86:10:86:14 | tuple [0] | provenance | | +| test.swift:85:5:85:11 | MemberAccessExpr | test.swift:85:5:85:9 | [post] tuple [0] | provenance | | +| test.swift:85:15:85:29 | CallExpr | test.swift:85:5:85:11 | MemberAccessExpr | provenance | | +| test.swift:86:10:86:14 | tuple [0] | test.swift:86:10:86:16 | MemberAccessExpr | provenance | | +| test.swift:97:9:97:9 | x | test.swift:101:10:101:10 | x | provenance | | +| test.swift:97:9:97:9 | x | test.swift:110:14:110:14 | x | provenance | | +| test.swift:97:13:97:27 | CallExpr | test.swift:97:9:97:9 | x | provenance | | +| test.swift:105:9:105:9 | y | test.swift:107:10:107:10 | y | provenance | | +| test.swift:105:9:105:9 | y | test.swift:111:14:111:14 | y | provenance | | +| test.swift:105:13:105:27 | CallExpr | test.swift:105:9:105:9 | y | provenance | | +| test.swift:118:9:118:13 | [post] tuple [0] | test.swift:123:10:123:14 | tuple [0] | provenance | | +| test.swift:118:9:118:15 | MemberAccessExpr | test.swift:118:9:118:13 | [post] tuple [0] | provenance | | +| test.swift:118:19:118:33 | CallExpr | test.swift:118:9:118:15 | MemberAccessExpr | provenance | | +| test.swift:123:10:123:14 | tuple [0] | test.swift:123:10:123:16 | MemberAccessExpr | provenance | | +| test.swift:128:9:128:13 | tuple [0] | test.swift:131:18:131:22 | tuple [0] | provenance | | +| test.swift:128:9:128:13 | tuple [1] | test.swift:131:18:131:22 | tuple [1] | provenance | | +| test.swift:128:17:128:50 | TupleExpr [0] | test.swift:128:9:128:13 | tuple [0] | provenance | | +| test.swift:128:17:128:50 | TupleExpr [1] | test.swift:128:9:128:13 | tuple [1] | provenance | | +| test.swift:128:18:128:33 | CallExpr | test.swift:128:17:128:50 | TupleExpr [0] | provenance | | +| test.swift:128:35:128:49 | CallExpr | test.swift:128:17:128:50 | TupleExpr [1] | provenance | | +| test.swift:131:9:131:14 | TupleExpr [0] | test.swift:131:10:131:10 | a | provenance | | +| test.swift:131:9:131:14 | TupleExpr [1] | test.swift:131:13:131:13 | b | provenance | | +| test.swift:131:10:131:10 | a | test.swift:136:10:136:10 | a | provenance | | +| test.swift:131:13:131:13 | b | test.swift:137:10:137:10 | b | provenance | | +| test.swift:131:18:131:22 | tuple [0] | test.swift:131:9:131:14 | TupleExpr [0] | provenance | | +| test.swift:131:18:131:22 | tuple [1] | test.swift:131:9:131:14 | TupleExpr [1] | provenance | | +| test.swift:142:5:142:5 | a | test.swift:143:10:143:10 | a | provenance | | +| test.swift:142:19:142:33 | CallExpr | test.swift:142:5:142:5 | a | provenance | | +| test.swift:148:5:148:5 | [incoming] a | test.swift:149:10:149:10 | a | provenance | | +| test.swift:148:10:148:24 | CallExpr | test.swift:148:5:148:5 | [incoming] a | provenance | | +| test.swift:154:5:154:5 | [incoming] a | test.swift:155:10:155:10 | a | provenance | | +| test.swift:154:20:154:34 | CallExpr | test.swift:154:5:154:5 | [incoming] a | provenance | | +| test.swift:160:5:160:5 | [post] a [0] | test.swift:161:10:161:10 | a [0] | provenance | | +| test.swift:160:5:160:7 | MemberAccessExpr | test.swift:160:5:160:5 | [post] a [0] | provenance | | +| test.swift:160:23:160:37 | CallExpr | test.swift:160:5:160:7 | MemberAccessExpr | provenance | | +| test.swift:161:10:161:10 | a [0] | test.swift:161:10:161:12 | MemberAccessExpr | provenance | | +| test.swift:167:5:167:12 | TupleExpr [0] | test.swift:167:6:167:8 | MemberAccessExpr | provenance | | +| test.swift:167:6:167:6 | [post] a [0] | test.swift:168:10:168:10 | a [0] | provenance | | +| test.swift:167:6:167:8 | MemberAccessExpr | test.swift:167:6:167:6 | [post] a [0] | provenance | | +| test.swift:167:16:167:61 | TupleExpr [0] | test.swift:167:5:167:12 | TupleExpr [0] | provenance | | +| test.swift:167:17:167:43 | BinaryExpr | test.swift:167:16:167:61 | TupleExpr [0] | provenance | | +| test.swift:167:29:167:43 | CallExpr | test.swift:167:17:167:43 | BinaryExpr | provenance | | +| test.swift:168:10:168:10 | a [0] | test.swift:168:10:168:12 | MemberAccessExpr | provenance | | +| test.swift:175:5:175:10 | TupleExpr [0] | test.swift:175:6:175:6 | a | provenance | | +| test.swift:175:5:175:10 | TupleExpr [1] | test.swift:175:9:175:9 | b | provenance | | +| test.swift:175:6:175:6 | a | test.swift:176:10:176:10 | a | provenance | | +| test.swift:175:9:175:9 | b | test.swift:177:10:177:10 | b | provenance | | +| test.swift:175:14:175:67 | TupleExpr [0] | test.swift:175:5:175:10 | TupleExpr [0] | provenance | | +| test.swift:175:14:175:67 | TupleExpr [1] | test.swift:175:5:175:10 | TupleExpr [1] | provenance | | +| test.swift:175:15:175:39 | BinaryExpr | test.swift:175:14:175:67 | TupleExpr [0] | provenance | | +| test.swift:175:25:175:39 | CallExpr | test.swift:175:15:175:39 | BinaryExpr | provenance | | +| test.swift:175:42:175:66 | BinaryExpr | test.swift:175:14:175:67 | TupleExpr [1] | provenance | | +| test.swift:175:52:175:66 | CallExpr | test.swift:175:42:175:66 | BinaryExpr | provenance | | nodes -| implicit-self.swift:11:9:11:12 | [post] self [x] | semmle.label | [post] self [x] | -| implicit-self.swift:11:9:11:14 | MemberAccessExpr | semmle.label | MemberAccessExpr | -| implicit-self.swift:11:18:11:31 | CallExpr | semmle.label | CallExpr | -| implicit-self.swift:12:14:12:17 | self [x] | semmle.label | self [x] | -| implicit-self.swift:12:14:12:19 | MemberAccessExpr | semmle.label | MemberAccessExpr | -| implicit-self.swift:17:9:17:9 | x | semmle.label | x | -| implicit-self.swift:17:13:17:26 | CallExpr | semmle.label | CallExpr | -| implicit-self.swift:18:14:18:14 | x | semmle.label | x | -| implicit-self.swift:23:9:23:9 | x | semmle.label | x | -| implicit-self.swift:23:13:23:26 | CallExpr | semmle.label | CallExpr | -| implicit-self.swift:24:14:24:17 | self [x] | semmle.label | self [x] | -| implicit-self.swift:24:14:24:19 | MemberAccessExpr | semmle.label | MemberAccessExpr | -| implicit-self.swift:29:9:29:12 | [post] self [x] | semmle.label | [post] self [x] | -| implicit-self.swift:29:9:29:14 | MemberAccessExpr | semmle.label | MemberAccessExpr | -| implicit-self.swift:29:18:29:31 | CallExpr | semmle.label | CallExpr | -| implicit-self.swift:30:14:30:14 | x | semmle.label | x | -| implicit-self.swift:35:9:35:12 | [post] self [box, x] | semmle.label | [post] self [box, x] | -| implicit-self.swift:35:9:35:16 | [post] MemberAccessExpr [x] | semmle.label | [post] MemberAccessExpr [x] | -| implicit-self.swift:35:9:35:18 | MemberAccessExpr | semmle.label | MemberAccessExpr | -| implicit-self.swift:35:22:35:35 | CallExpr | semmle.label | CallExpr | -| implicit-self.swift:36:14:36:17 | self [box, x] | semmle.label | self [box, x] | -| implicit-self.swift:36:14:36:21 | MemberAccessExpr [x] | semmle.label | MemberAccessExpr [x] | -| implicit-self.swift:36:14:36:23 | MemberAccessExpr | semmle.label | MemberAccessExpr | -| implicit-self.swift:41:9:41:11 | [post] box [x] | semmle.label | [post] box [x] | -| implicit-self.swift:41:9:41:13 | MemberAccessExpr | semmle.label | MemberAccessExpr | -| implicit-self.swift:41:17:41:30 | CallExpr | semmle.label | CallExpr | -| implicit-self.swift:42:14:42:16 | box [x] | semmle.label | box [x] | -| implicit-self.swift:42:14:42:18 | MemberAccessExpr | semmle.label | MemberAccessExpr | -| implicit-self.swift:47:9:47:11 | [post] box [x] | semmle.label | [post] box [x] | -| implicit-self.swift:47:9:47:13 | MemberAccessExpr | semmle.label | MemberAccessExpr | -| implicit-self.swift:47:17:47:30 | CallExpr | semmle.label | CallExpr | -| implicit-self.swift:48:14:48:17 | self [box, x] | semmle.label | self [box, x] | -| implicit-self.swift:48:14:48:21 | MemberAccessExpr [x] | semmle.label | MemberAccessExpr [x] | -| implicit-self.swift:48:14:48:23 | MemberAccessExpr | semmle.label | MemberAccessExpr | -| implicit-self.swift:53:9:53:12 | [post] self [box, x] | semmle.label | [post] self [box, x] | -| implicit-self.swift:53:9:53:16 | [post] MemberAccessExpr [x] | semmle.label | [post] MemberAccessExpr [x] | -| implicit-self.swift:53:9:53:18 | MemberAccessExpr | semmle.label | MemberAccessExpr | -| implicit-self.swift:53:22:53:35 | CallExpr | semmle.label | CallExpr | -| implicit-self.swift:54:14:54:16 | box [x] | semmle.label | box [x] | -| implicit-self.swift:54:14:54:18 | MemberAccessExpr | semmle.label | MemberAccessExpr | -| implicit-self.swift:59:9:59:9 | [incoming] x | semmle.label | [incoming] x | -| implicit-self.swift:59:24:59:37 | CallExpr | semmle.label | CallExpr | -| implicit-self.swift:60:14:60:14 | x | semmle.label | x | -| implicit-self.swift:61:14:61:17 | self [x] | semmle.label | self [x] | -| implicit-self.swift:61:14:61:19 | MemberAccessExpr | semmle.label | MemberAccessExpr | -| implicit-self.swift:66:9:66:12 | [post] self [x] | semmle.label | [post] self [x] | -| implicit-self.swift:66:9:66:14 | [incoming] MemberAccessExpr | semmle.label | [incoming] MemberAccessExpr | -| implicit-self.swift:66:29:66:43 | CallExpr | semmle.label | CallExpr | -| implicit-self.swift:67:14:67:14 | x | semmle.label | x | -| implicit-self.swift:68:14:68:17 | self [x] | semmle.label | self [x] | -| implicit-self.swift:68:14:68:19 | MemberAccessExpr | semmle.label | MemberAccessExpr | -| implicit-self.swift:73:9:73:9 | [incoming] x | semmle.label | [incoming] x | -| implicit-self.swift:73:24:73:38 | CallExpr | semmle.label | CallExpr | -| implicit-self.swift:74:14:74:14 | x | semmle.label | x | -| implicit-self.swift:75:14:75:17 | self [x] | semmle.label | self [x] | -| implicit-self.swift:75:14:75:19 | MemberAccessExpr | semmle.label | MemberAccessExpr | -| implicit-self.swift:80:9:80:12 | [post] self [x] | semmle.label | [post] self [x] | -| implicit-self.swift:80:9:80:14 | [incoming] MemberAccessExpr | semmle.label | [incoming] MemberAccessExpr | -| implicit-self.swift:80:29:80:43 | CallExpr | semmle.label | CallExpr | -| implicit-self.swift:81:14:81:14 | x | semmle.label | x | -| implicit-self.swift:82:14:82:17 | self [x] | semmle.label | self [x] | -| implicit-self.swift:82:14:82:19 | MemberAccessExpr | semmle.label | MemberAccessExpr | -| test.swift:2:10:2:21 | CallExpr | semmle.label | CallExpr | -| test.swift:6:10:6:23 | CallExpr | semmle.label | CallExpr | -| test.swift:6:10:6:32 | BinaryExpr | semmle.label | BinaryExpr | -| test.swift:7:10:7:32 | BinaryExpr | semmle.label | BinaryExpr | -| test.swift:7:19:7:32 | CallExpr | semmle.label | CallExpr | -| test.swift:9:10:9:33 | StringInterpolationExpr | semmle.label | StringInterpolationExpr | -| test.swift:9:13:9:26 | CallExpr | semmle.label | CallExpr | -| test.swift:10:10:10:33 | StringInterpolationExpr | semmle.label | StringInterpolationExpr | -| test.swift:10:18:10:31 | CallExpr | semmle.label | CallExpr | -| test.swift:11:10:11:38 | StringInterpolationExpr | semmle.label | StringInterpolationExpr | -| test.swift:11:18:11:31 | CallExpr | semmle.label | CallExpr | -| test.swift:16:10:16:33 | TupleExpr [0] | semmle.label | TupleExpr [0] | -| test.swift:16:10:16:35 | MemberAccessExpr | semmle.label | MemberAccessExpr | -| test.swift:16:11:16:25 | CallExpr | semmle.label | CallExpr | -| test.swift:19:10:19:33 | TupleExpr [1] | semmle.label | TupleExpr [1] | -| test.swift:19:10:19:35 | MemberAccessExpr | semmle.label | MemberAccessExpr | -| test.swift:19:19:19:32 | CallExpr | semmle.label | CallExpr | -| test.swift:23:9:23:9 | a | semmle.label | a | -| test.swift:23:13:23:26 | CallExpr | semmle.label | CallExpr | -| test.swift:24:10:24:10 | a | semmle.label | a | -| test.swift:28:9:28:14 | TupleExpr [0] | semmle.label | TupleExpr [0] | -| test.swift:28:10:28:10 | a | semmle.label | a | -| test.swift:28:18:28:41 | TupleExpr [0] | semmle.label | TupleExpr [0] | -| test.swift:28:19:28:33 | CallExpr | semmle.label | CallExpr | -| test.swift:29:10:29:10 | a | semmle.label | a | -| test.swift:32:9:32:14 | TupleExpr [1] | semmle.label | TupleExpr [1] | -| test.swift:32:13:32:13 | d | semmle.label | d | -| test.swift:32:18:32:41 | TupleExpr [1] | semmle.label | TupleExpr [1] | -| test.swift:32:27:32:40 | CallExpr | semmle.label | CallExpr | -| test.swift:34:10:34:10 | d | semmle.label | d | -| test.swift:38:9:38:9 | a | semmle.label | a | -| test.swift:38:13:38:26 | CallExpr | semmle.label | CallExpr | +| implicit-self.swift:16:9:16:12 | [post] self [x] | semmle.label | [post] self [x] | +| implicit-self.swift:16:9:16:14 | MemberAccessExpr | semmle.label | MemberAccessExpr | +| implicit-self.swift:16:18:16:31 | CallExpr | semmle.label | CallExpr | +| implicit-self.swift:17:14:17:17 | self [x] | semmle.label | self [x] | +| implicit-self.swift:17:14:17:19 | MemberAccessExpr | semmle.label | MemberAccessExpr | +| implicit-self.swift:22:9:22:9 | x | semmle.label | x | +| implicit-self.swift:22:13:22:26 | CallExpr | semmle.label | CallExpr | +| implicit-self.swift:23:14:23:14 | x | semmle.label | x | +| implicit-self.swift:28:9:28:9 | x | semmle.label | x | +| implicit-self.swift:28:13:28:26 | CallExpr | semmle.label | CallExpr | +| implicit-self.swift:29:14:29:17 | self [x] | semmle.label | self [x] | +| implicit-self.swift:29:14:29:19 | MemberAccessExpr | semmle.label | MemberAccessExpr | +| implicit-self.swift:34:9:34:12 | [post] self [x] | semmle.label | [post] self [x] | +| implicit-self.swift:34:9:34:14 | MemberAccessExpr | semmle.label | MemberAccessExpr | +| implicit-self.swift:34:18:34:31 | CallExpr | semmle.label | CallExpr | +| implicit-self.swift:35:14:35:14 | x | semmle.label | x | +| implicit-self.swift:40:9:40:12 | [post] self [box, x] | semmle.label | [post] self [box, x] | +| implicit-self.swift:40:9:40:16 | [post] MemberAccessExpr [x] | semmle.label | [post] MemberAccessExpr [x] | +| implicit-self.swift:40:9:40:18 | MemberAccessExpr | semmle.label | MemberAccessExpr | +| implicit-self.swift:40:22:40:35 | CallExpr | semmle.label | CallExpr | +| implicit-self.swift:41:14:41:17 | self [box, x] | semmle.label | self [box, x] | +| implicit-self.swift:41:14:41:21 | MemberAccessExpr [x] | semmle.label | MemberAccessExpr [x] | +| implicit-self.swift:41:14:41:23 | MemberAccessExpr | semmle.label | MemberAccessExpr | +| implicit-self.swift:46:9:46:11 | [post] box [x] | semmle.label | [post] box [x] | +| implicit-self.swift:46:9:46:13 | MemberAccessExpr | semmle.label | MemberAccessExpr | +| implicit-self.swift:46:17:46:30 | CallExpr | semmle.label | CallExpr | +| implicit-self.swift:47:14:47:16 | box [x] | semmle.label | box [x] | +| implicit-self.swift:47:14:47:18 | MemberAccessExpr | semmle.label | MemberAccessExpr | +| implicit-self.swift:52:9:52:11 | [post] box [x] | semmle.label | [post] box [x] | +| implicit-self.swift:52:9:52:13 | MemberAccessExpr | semmle.label | MemberAccessExpr | +| implicit-self.swift:52:17:52:30 | CallExpr | semmle.label | CallExpr | +| implicit-self.swift:53:14:53:17 | self [box, x] | semmle.label | self [box, x] | +| implicit-self.swift:53:14:53:21 | MemberAccessExpr [x] | semmle.label | MemberAccessExpr [x] | +| implicit-self.swift:53:14:53:23 | MemberAccessExpr | semmle.label | MemberAccessExpr | +| implicit-self.swift:58:9:58:12 | [post] self [box, x] | semmle.label | [post] self [box, x] | +| implicit-self.swift:58:9:58:16 | [post] MemberAccessExpr [x] | semmle.label | [post] MemberAccessExpr [x] | +| implicit-self.swift:58:9:58:18 | MemberAccessExpr | semmle.label | MemberAccessExpr | +| implicit-self.swift:58:22:58:35 | CallExpr | semmle.label | CallExpr | +| implicit-self.swift:59:14:59:16 | box [x] | semmle.label | box [x] | +| implicit-self.swift:59:14:59:18 | MemberAccessExpr | semmle.label | MemberAccessExpr | +| implicit-self.swift:64:9:64:9 | [incoming] x | semmle.label | [incoming] x | +| implicit-self.swift:64:24:64:37 | CallExpr | semmle.label | CallExpr | +| implicit-self.swift:65:14:65:14 | x | semmle.label | x | +| implicit-self.swift:66:14:66:17 | self [x] | semmle.label | self [x] | +| implicit-self.swift:66:14:66:19 | MemberAccessExpr | semmle.label | MemberAccessExpr | +| implicit-self.swift:71:9:71:12 | [post] self [x] | semmle.label | [post] self [x] | +| implicit-self.swift:71:9:71:14 | [incoming] MemberAccessExpr | semmle.label | [incoming] MemberAccessExpr | +| implicit-self.swift:71:29:71:43 | CallExpr | semmle.label | CallExpr | +| implicit-self.swift:72:14:72:14 | x | semmle.label | x | +| implicit-self.swift:73:14:73:17 | self [x] | semmle.label | self [x] | +| implicit-self.swift:73:14:73:19 | MemberAccessExpr | semmle.label | MemberAccessExpr | +| implicit-self.swift:78:9:78:9 | [incoming] x | semmle.label | [incoming] x | +| implicit-self.swift:78:24:78:38 | CallExpr | semmle.label | CallExpr | +| implicit-self.swift:79:14:79:14 | x | semmle.label | x | +| implicit-self.swift:80:14:80:17 | self [x] | semmle.label | self [x] | +| implicit-self.swift:80:14:80:19 | MemberAccessExpr | semmle.label | MemberAccessExpr | +| implicit-self.swift:85:9:85:12 | [post] self [x] | semmle.label | [post] self [x] | +| implicit-self.swift:85:9:85:14 | [incoming] MemberAccessExpr | semmle.label | [incoming] MemberAccessExpr | +| implicit-self.swift:85:29:85:43 | CallExpr | semmle.label | CallExpr | +| implicit-self.swift:86:14:86:14 | x | semmle.label | x | +| implicit-self.swift:87:14:87:17 | self [x] | semmle.label | self [x] | +| implicit-self.swift:87:14:87:19 | MemberAccessExpr | semmle.label | MemberAccessExpr | +| test.swift:9:10:9:21 | CallExpr | semmle.label | CallExpr | +| test.swift:17:10:17:23 | CallExpr | semmle.label | CallExpr | +| test.swift:17:10:17:32 | BinaryExpr | semmle.label | BinaryExpr | +| test.swift:18:10:18:32 | BinaryExpr | semmle.label | BinaryExpr | +| test.swift:18:19:18:32 | CallExpr | semmle.label | CallExpr | +| test.swift:20:10:20:33 | StringInterpolationExpr | semmle.label | StringInterpolationExpr | +| test.swift:20:13:20:26 | CallExpr | semmle.label | CallExpr | +| test.swift:21:10:21:33 | StringInterpolationExpr | semmle.label | StringInterpolationExpr | +| test.swift:21:18:21:31 | CallExpr | semmle.label | CallExpr | +| test.swift:22:10:22:38 | StringInterpolationExpr | semmle.label | StringInterpolationExpr | +| test.swift:22:18:22:31 | CallExpr | semmle.label | CallExpr | +| test.swift:27:10:27:33 | TupleExpr [0] | semmle.label | TupleExpr [0] | +| test.swift:27:10:27:35 | MemberAccessExpr | semmle.label | MemberAccessExpr | +| test.swift:27:11:27:25 | CallExpr | semmle.label | CallExpr | +| test.swift:30:10:30:33 | TupleExpr [1] | semmle.label | TupleExpr [1] | +| test.swift:30:10:30:35 | MemberAccessExpr | semmle.label | MemberAccessExpr | +| test.swift:30:19:30:32 | CallExpr | semmle.label | CallExpr | +| test.swift:34:9:34:9 | a | semmle.label | a | +| test.swift:34:13:34:26 | CallExpr | semmle.label | CallExpr | +| test.swift:35:10:35:10 | a | semmle.label | a | +| test.swift:39:9:39:14 | TupleExpr [0] | semmle.label | TupleExpr [0] | | test.swift:39:10:39:10 | a | semmle.label | a | -| test.swift:46:5:46:9 | [post] tuple [0] | semmle.label | [post] tuple [0] | -| test.swift:46:5:46:11 | MemberAccessExpr | semmle.label | MemberAccessExpr | -| test.swift:46:15:46:28 | CallExpr | semmle.label | CallExpr | -| test.swift:47:10:47:14 | tuple [0] | semmle.label | tuple [0] | -| test.swift:47:10:47:16 | MemberAccessExpr | semmle.label | MemberAccessExpr | -| test.swift:53:5:53:14 | [post] deep_tuple [1, 0] | semmle.label | [post] deep_tuple [1, 0] | -| test.swift:53:5:53:16 | [post] MemberAccessExpr [0] | semmle.label | [post] MemberAccessExpr [0] | -| test.swift:53:5:53:18 | MemberAccessExpr | semmle.label | MemberAccessExpr | -| test.swift:53:22:53:35 | CallExpr | semmle.label | CallExpr | -| test.swift:58:10:58:19 | deep_tuple [1, 0] | semmle.label | deep_tuple [1, 0] | -| test.swift:58:10:58:21 | MemberAccessExpr [0] | semmle.label | MemberAccessExpr [0] | -| test.swift:58:10:58:23 | MemberAccessExpr | semmle.label | MemberAccessExpr | -| test.swift:64:5:64:16 | TupleExpr [0] | semmle.label | TupleExpr [0] | -| test.swift:64:6:64:10 | [post] tuple [1] | semmle.label | [post] tuple [1] | -| test.swift:64:6:64:12 | MemberAccessExpr | semmle.label | MemberAccessExpr | -| test.swift:64:20:64:51 | TupleExpr [0] | semmle.label | TupleExpr [0] | -| test.swift:64:21:64:35 | CallExpr | semmle.label | CallExpr | -| test.swift:66:10:66:14 | tuple [1] | semmle.label | tuple [1] | -| test.swift:66:10:66:16 | MemberAccessExpr | semmle.label | MemberAccessExpr | -| test.swift:74:5:74:9 | [post] tuple [0] | semmle.label | [post] tuple [0] | -| test.swift:74:5:74:11 | MemberAccessExpr | semmle.label | MemberAccessExpr | -| test.swift:74:15:74:29 | CallExpr | semmle.label | CallExpr | -| test.swift:75:10:75:14 | tuple [0] | semmle.label | tuple [0] | -| test.swift:75:10:75:16 | MemberAccessExpr | semmle.label | MemberAccessExpr | -| test.swift:86:9:86:9 | x | semmle.label | x | -| test.swift:86:13:86:27 | CallExpr | semmle.label | CallExpr | -| test.swift:90:10:90:10 | x | semmle.label | x | -| test.swift:94:9:94:9 | y | semmle.label | y | -| test.swift:94:13:94:27 | CallExpr | semmle.label | CallExpr | -| test.swift:96:10:96:10 | y | semmle.label | y | -| test.swift:99:14:99:14 | x | semmle.label | x | -| test.swift:100:14:100:14 | y | semmle.label | y | -| test.swift:107:9:107:13 | [post] tuple [0] | semmle.label | [post] tuple [0] | -| test.swift:107:9:107:15 | MemberAccessExpr | semmle.label | MemberAccessExpr | -| test.swift:107:19:107:33 | CallExpr | semmle.label | CallExpr | -| test.swift:112:10:112:14 | tuple [0] | semmle.label | tuple [0] | -| test.swift:112:10:112:16 | MemberAccessExpr | semmle.label | MemberAccessExpr | -| test.swift:117:9:117:13 | tuple [0] | semmle.label | tuple [0] | -| test.swift:117:9:117:13 | tuple [1] | semmle.label | tuple [1] | -| test.swift:117:17:117:50 | TupleExpr [0] | semmle.label | TupleExpr [0] | -| test.swift:117:17:117:50 | TupleExpr [1] | semmle.label | TupleExpr [1] | -| test.swift:117:18:117:33 | CallExpr | semmle.label | CallExpr | -| test.swift:117:35:117:49 | CallExpr | semmle.label | CallExpr | -| test.swift:120:9:120:13 | TupleExpr [0] | semmle.label | TupleExpr [0] | -| test.swift:120:9:120:13 | TupleExpr [1] | semmle.label | TupleExpr [1] | -| test.swift:120:10:120:10 | a | semmle.label | a | -| test.swift:120:12:120:12 | b | semmle.label | b | -| test.swift:120:17:120:21 | tuple [0] | semmle.label | tuple [0] | -| test.swift:120:17:120:21 | tuple [1] | semmle.label | tuple [1] | -| test.swift:125:10:125:10 | a | semmle.label | a | -| test.swift:126:10:126:10 | b | semmle.label | b | -| test.swift:131:5:131:5 | a | semmle.label | a | -| test.swift:131:19:131:33 | CallExpr | semmle.label | CallExpr | -| test.swift:132:10:132:10 | a | semmle.label | a | -| test.swift:137:5:137:5 | [incoming] a | semmle.label | [incoming] a | -| test.swift:137:10:137:24 | CallExpr | semmle.label | CallExpr | -| test.swift:138:10:138:10 | a | semmle.label | a | -| test.swift:143:5:143:5 | [incoming] a | semmle.label | [incoming] a | -| test.swift:143:20:143:34 | CallExpr | semmle.label | CallExpr | -| test.swift:144:10:144:10 | a | semmle.label | a | -| test.swift:149:5:149:5 | [post] a [0] | semmle.label | [post] a [0] | -| test.swift:149:5:149:7 | MemberAccessExpr | semmle.label | MemberAccessExpr | -| test.swift:149:23:149:37 | CallExpr | semmle.label | CallExpr | -| test.swift:150:10:150:10 | a [0] | semmle.label | a [0] | -| test.swift:150:10:150:12 | MemberAccessExpr | semmle.label | MemberAccessExpr | -| test.swift:156:5:156:12 | TupleExpr [0] | semmle.label | TupleExpr [0] | -| test.swift:156:6:156:6 | [post] a [0] | semmle.label | [post] a [0] | -| test.swift:156:6:156:8 | MemberAccessExpr | semmle.label | MemberAccessExpr | -| test.swift:156:16:156:61 | TupleExpr [0] | semmle.label | TupleExpr [0] | -| test.swift:156:17:156:43 | BinaryExpr | semmle.label | BinaryExpr | -| test.swift:156:29:156:43 | CallExpr | semmle.label | CallExpr | -| test.swift:157:10:157:10 | a [0] | semmle.label | a [0] | -| test.swift:157:10:157:12 | MemberAccessExpr | semmle.label | MemberAccessExpr | -| test.swift:164:5:164:10 | TupleExpr [0] | semmle.label | TupleExpr [0] | -| test.swift:164:5:164:10 | TupleExpr [1] | semmle.label | TupleExpr [1] | -| test.swift:164:6:164:6 | a | semmle.label | a | -| test.swift:164:9:164:9 | b | semmle.label | b | -| test.swift:164:14:164:67 | TupleExpr [0] | semmle.label | TupleExpr [0] | -| test.swift:164:14:164:67 | TupleExpr [1] | semmle.label | TupleExpr [1] | -| test.swift:164:15:164:39 | BinaryExpr | semmle.label | BinaryExpr | -| test.swift:164:25:164:39 | CallExpr | semmle.label | CallExpr | -| test.swift:164:42:164:66 | BinaryExpr | semmle.label | BinaryExpr | -| test.swift:164:52:164:66 | CallExpr | semmle.label | CallExpr | -| test.swift:165:10:165:10 | a | semmle.label | a | -| test.swift:166:10:166:10 | b | semmle.label | b | +| test.swift:39:18:39:41 | TupleExpr [0] | semmle.label | TupleExpr [0] | +| test.swift:39:19:39:33 | CallExpr | semmle.label | CallExpr | +| test.swift:40:10:40:10 | a | semmle.label | a | +| test.swift:43:9:43:14 | TupleExpr [1] | semmle.label | TupleExpr [1] | +| test.swift:43:13:43:13 | d | semmle.label | d | +| test.swift:43:18:43:41 | TupleExpr [1] | semmle.label | TupleExpr [1] | +| test.swift:43:27:43:40 | CallExpr | semmle.label | CallExpr | +| test.swift:45:10:45:10 | d | semmle.label | d | +| test.swift:49:9:49:9 | a | semmle.label | a | +| test.swift:49:13:49:26 | CallExpr | semmle.label | CallExpr | +| test.swift:50:10:50:10 | a | semmle.label | a | +| test.swift:57:5:57:9 | [post] tuple [0] | semmle.label | [post] tuple [0] | +| test.swift:57:5:57:11 | MemberAccessExpr | semmle.label | MemberAccessExpr | +| test.swift:57:15:57:28 | CallExpr | semmle.label | CallExpr | +| test.swift:58:10:58:14 | tuple [0] | semmle.label | tuple [0] | +| test.swift:58:10:58:16 | MemberAccessExpr | semmle.label | MemberAccessExpr | +| test.swift:64:5:64:14 | [post] deep_tuple [1, 0] | semmle.label | [post] deep_tuple [1, 0] | +| test.swift:64:5:64:16 | [post] MemberAccessExpr [0] | semmle.label | [post] MemberAccessExpr [0] | +| test.swift:64:5:64:18 | MemberAccessExpr | semmle.label | MemberAccessExpr | +| test.swift:64:22:64:35 | CallExpr | semmle.label | CallExpr | +| test.swift:69:10:69:19 | deep_tuple [1, 0] | semmle.label | deep_tuple [1, 0] | +| test.swift:69:10:69:21 | MemberAccessExpr [0] | semmle.label | MemberAccessExpr [0] | +| test.swift:69:10:69:23 | MemberAccessExpr | semmle.label | MemberAccessExpr | +| test.swift:75:5:75:16 | TupleExpr [0] | semmle.label | TupleExpr [0] | +| test.swift:75:6:75:10 | [post] tuple [1] | semmle.label | [post] tuple [1] | +| test.swift:75:6:75:12 | MemberAccessExpr | semmle.label | MemberAccessExpr | +| test.swift:75:20:75:51 | TupleExpr [0] | semmle.label | TupleExpr [0] | +| test.swift:75:21:75:35 | CallExpr | semmle.label | CallExpr | +| test.swift:77:10:77:14 | tuple [1] | semmle.label | tuple [1] | +| test.swift:77:10:77:16 | MemberAccessExpr | semmle.label | MemberAccessExpr | +| test.swift:85:5:85:9 | [post] tuple [0] | semmle.label | [post] tuple [0] | +| test.swift:85:5:85:11 | MemberAccessExpr | semmle.label | MemberAccessExpr | +| test.swift:85:15:85:29 | CallExpr | semmle.label | CallExpr | +| test.swift:86:10:86:14 | tuple [0] | semmle.label | tuple [0] | +| test.swift:86:10:86:16 | MemberAccessExpr | semmle.label | MemberAccessExpr | +| test.swift:97:9:97:9 | x | semmle.label | x | +| test.swift:97:13:97:27 | CallExpr | semmle.label | CallExpr | +| test.swift:101:10:101:10 | x | semmle.label | x | +| test.swift:105:9:105:9 | y | semmle.label | y | +| test.swift:105:13:105:27 | CallExpr | semmle.label | CallExpr | +| test.swift:107:10:107:10 | y | semmle.label | y | +| test.swift:110:14:110:14 | x | semmle.label | x | +| test.swift:111:14:111:14 | y | semmle.label | y | +| test.swift:118:9:118:13 | [post] tuple [0] | semmle.label | [post] tuple [0] | +| test.swift:118:9:118:15 | MemberAccessExpr | semmle.label | MemberAccessExpr | +| test.swift:118:19:118:33 | CallExpr | semmle.label | CallExpr | +| test.swift:123:10:123:14 | tuple [0] | semmle.label | tuple [0] | +| test.swift:123:10:123:16 | MemberAccessExpr | semmle.label | MemberAccessExpr | +| test.swift:128:9:128:13 | tuple [0] | semmle.label | tuple [0] | +| test.swift:128:9:128:13 | tuple [1] | semmle.label | tuple [1] | +| test.swift:128:17:128:50 | TupleExpr [0] | semmle.label | TupleExpr [0] | +| test.swift:128:17:128:50 | TupleExpr [1] | semmle.label | TupleExpr [1] | +| test.swift:128:18:128:33 | CallExpr | semmle.label | CallExpr | +| test.swift:128:35:128:49 | CallExpr | semmle.label | CallExpr | +| test.swift:131:9:131:14 | TupleExpr [0] | semmle.label | TupleExpr [0] | +| test.swift:131:9:131:14 | TupleExpr [1] | semmle.label | TupleExpr [1] | +| test.swift:131:10:131:10 | a | semmle.label | a | +| test.swift:131:13:131:13 | b | semmle.label | b | +| test.swift:131:18:131:22 | tuple [0] | semmle.label | tuple [0] | +| test.swift:131:18:131:22 | tuple [1] | semmle.label | tuple [1] | +| test.swift:136:10:136:10 | a | semmle.label | a | +| test.swift:137:10:137:10 | b | semmle.label | b | +| test.swift:142:5:142:5 | a | semmle.label | a | +| test.swift:142:19:142:33 | CallExpr | semmle.label | CallExpr | +| test.swift:143:10:143:10 | a | semmle.label | a | +| test.swift:148:5:148:5 | [incoming] a | semmle.label | [incoming] a | +| test.swift:148:10:148:24 | CallExpr | semmle.label | CallExpr | +| test.swift:149:10:149:10 | a | semmle.label | a | +| test.swift:154:5:154:5 | [incoming] a | semmle.label | [incoming] a | +| test.swift:154:20:154:34 | CallExpr | semmle.label | CallExpr | +| test.swift:155:10:155:10 | a | semmle.label | a | +| test.swift:160:5:160:5 | [post] a [0] | semmle.label | [post] a [0] | +| test.swift:160:5:160:7 | MemberAccessExpr | semmle.label | MemberAccessExpr | +| test.swift:160:23:160:37 | CallExpr | semmle.label | CallExpr | +| test.swift:161:10:161:10 | a [0] | semmle.label | a [0] | +| test.swift:161:10:161:12 | MemberAccessExpr | semmle.label | MemberAccessExpr | +| test.swift:167:5:167:12 | TupleExpr [0] | semmle.label | TupleExpr [0] | +| test.swift:167:6:167:6 | [post] a [0] | semmle.label | [post] a [0] | +| test.swift:167:6:167:8 | MemberAccessExpr | semmle.label | MemberAccessExpr | +| test.swift:167:16:167:61 | TupleExpr [0] | semmle.label | TupleExpr [0] | +| test.swift:167:17:167:43 | BinaryExpr | semmle.label | BinaryExpr | +| test.swift:167:29:167:43 | CallExpr | semmle.label | CallExpr | +| test.swift:168:10:168:10 | a [0] | semmle.label | a [0] | +| test.swift:168:10:168:12 | MemberAccessExpr | semmle.label | MemberAccessExpr | +| test.swift:175:5:175:10 | TupleExpr [0] | semmle.label | TupleExpr [0] | +| test.swift:175:5:175:10 | TupleExpr [1] | semmle.label | TupleExpr [1] | +| test.swift:175:6:175:6 | a | semmle.label | a | +| test.swift:175:9:175:9 | b | semmle.label | b | +| test.swift:175:14:175:67 | TupleExpr [0] | semmle.label | TupleExpr [0] | +| test.swift:175:14:175:67 | TupleExpr [1] | semmle.label | TupleExpr [1] | +| test.swift:175:15:175:39 | BinaryExpr | semmle.label | BinaryExpr | +| test.swift:175:25:175:39 | CallExpr | semmle.label | CallExpr | +| test.swift:175:42:175:66 | BinaryExpr | semmle.label | BinaryExpr | +| test.swift:175:52:175:66 | CallExpr | semmle.label | CallExpr | +| test.swift:176:10:176:10 | a | semmle.label | a | +| test.swift:177:10:177:10 | b | semmle.label | b | subpaths testFailures #select -| implicit-self.swift:12:14:12:19 | MemberAccessExpr | implicit-self.swift:11:18:11:31 | CallExpr | implicit-self.swift:12:14:12:19 | MemberAccessExpr | $@ | implicit-self.swift:11:18:11:31 | CallExpr | CallExpr | -| implicit-self.swift:18:14:18:14 | x | implicit-self.swift:17:13:17:26 | CallExpr | implicit-self.swift:18:14:18:14 | x | $@ | implicit-self.swift:17:13:17:26 | CallExpr | CallExpr | -| implicit-self.swift:24:14:24:19 | MemberAccessExpr | implicit-self.swift:23:13:23:26 | CallExpr | implicit-self.swift:24:14:24:19 | MemberAccessExpr | $@ | implicit-self.swift:23:13:23:26 | CallExpr | CallExpr | -| implicit-self.swift:30:14:30:14 | x | implicit-self.swift:29:18:29:31 | CallExpr | implicit-self.swift:30:14:30:14 | x | $@ | implicit-self.swift:29:18:29:31 | CallExpr | CallExpr | -| implicit-self.swift:36:14:36:23 | MemberAccessExpr | implicit-self.swift:35:22:35:35 | CallExpr | implicit-self.swift:36:14:36:23 | MemberAccessExpr | $@ | implicit-self.swift:35:22:35:35 | CallExpr | CallExpr | -| implicit-self.swift:42:14:42:18 | MemberAccessExpr | implicit-self.swift:41:17:41:30 | CallExpr | implicit-self.swift:42:14:42:18 | MemberAccessExpr | $@ | implicit-self.swift:41:17:41:30 | CallExpr | CallExpr | -| implicit-self.swift:48:14:48:23 | MemberAccessExpr | implicit-self.swift:47:17:47:30 | CallExpr | implicit-self.swift:48:14:48:23 | MemberAccessExpr | $@ | implicit-self.swift:47:17:47:30 | CallExpr | CallExpr | -| implicit-self.swift:54:14:54:18 | MemberAccessExpr | implicit-self.swift:53:22:53:35 | CallExpr | implicit-self.swift:54:14:54:18 | MemberAccessExpr | $@ | implicit-self.swift:53:22:53:35 | CallExpr | CallExpr | -| implicit-self.swift:60:14:60:14 | x | implicit-self.swift:59:24:59:37 | CallExpr | implicit-self.swift:60:14:60:14 | x | $@ | implicit-self.swift:59:24:59:37 | CallExpr | CallExpr | -| implicit-self.swift:61:14:61:19 | MemberAccessExpr | implicit-self.swift:59:24:59:37 | CallExpr | implicit-self.swift:61:14:61:19 | MemberAccessExpr | $@ | implicit-self.swift:59:24:59:37 | CallExpr | CallExpr | -| implicit-self.swift:67:14:67:14 | x | implicit-self.swift:66:29:66:43 | CallExpr | implicit-self.swift:67:14:67:14 | x | $@ | implicit-self.swift:66:29:66:43 | CallExpr | CallExpr | -| implicit-self.swift:68:14:68:19 | MemberAccessExpr | implicit-self.swift:66:29:66:43 | CallExpr | implicit-self.swift:68:14:68:19 | MemberAccessExpr | $@ | implicit-self.swift:66:29:66:43 | CallExpr | CallExpr | -| implicit-self.swift:74:14:74:14 | x | implicit-self.swift:73:24:73:38 | CallExpr | implicit-self.swift:74:14:74:14 | x | $@ | implicit-self.swift:73:24:73:38 | CallExpr | CallExpr | -| implicit-self.swift:75:14:75:19 | MemberAccessExpr | implicit-self.swift:73:24:73:38 | CallExpr | implicit-self.swift:75:14:75:19 | MemberAccessExpr | $@ | implicit-self.swift:73:24:73:38 | CallExpr | CallExpr | -| implicit-self.swift:81:14:81:14 | x | implicit-self.swift:80:29:80:43 | CallExpr | implicit-self.swift:81:14:81:14 | x | $@ | implicit-self.swift:80:29:80:43 | CallExpr | CallExpr | -| implicit-self.swift:82:14:82:19 | MemberAccessExpr | implicit-self.swift:80:29:80:43 | CallExpr | implicit-self.swift:82:14:82:19 | MemberAccessExpr | $@ | implicit-self.swift:80:29:80:43 | CallExpr | CallExpr | -| test.swift:2:10:2:21 | CallExpr | test.swift:2:10:2:21 | CallExpr | test.swift:2:10:2:21 | CallExpr | $@ | test.swift:2:10:2:21 | CallExpr | CallExpr | -| test.swift:6:10:6:32 | BinaryExpr | test.swift:6:10:6:23 | CallExpr | test.swift:6:10:6:32 | BinaryExpr | $@ | test.swift:6:10:6:23 | CallExpr | CallExpr | -| test.swift:7:10:7:32 | BinaryExpr | test.swift:7:19:7:32 | CallExpr | test.swift:7:10:7:32 | BinaryExpr | $@ | test.swift:7:19:7:32 | CallExpr | CallExpr | -| test.swift:9:10:9:33 | StringInterpolationExpr | test.swift:9:13:9:26 | CallExpr | test.swift:9:10:9:33 | StringInterpolationExpr | $@ | test.swift:9:13:9:26 | CallExpr | CallExpr | -| test.swift:10:10:10:33 | StringInterpolationExpr | test.swift:10:18:10:31 | CallExpr | test.swift:10:10:10:33 | StringInterpolationExpr | $@ | test.swift:10:18:10:31 | CallExpr | CallExpr | -| test.swift:11:10:11:38 | StringInterpolationExpr | test.swift:11:18:11:31 | CallExpr | test.swift:11:10:11:38 | StringInterpolationExpr | $@ | test.swift:11:18:11:31 | CallExpr | CallExpr | -| test.swift:16:10:16:35 | MemberAccessExpr | test.swift:16:11:16:25 | CallExpr | test.swift:16:10:16:35 | MemberAccessExpr | $@ | test.swift:16:11:16:25 | CallExpr | CallExpr | -| test.swift:19:10:19:35 | MemberAccessExpr | test.swift:19:19:19:32 | CallExpr | test.swift:19:10:19:35 | MemberAccessExpr | $@ | test.swift:19:19:19:32 | CallExpr | CallExpr | -| test.swift:24:10:24:10 | a | test.swift:23:13:23:26 | CallExpr | test.swift:24:10:24:10 | a | $@ | test.swift:23:13:23:26 | CallExpr | CallExpr | -| test.swift:29:10:29:10 | a | test.swift:28:19:28:33 | CallExpr | test.swift:29:10:29:10 | a | $@ | test.swift:28:19:28:33 | CallExpr | CallExpr | -| test.swift:34:10:34:10 | d | test.swift:32:27:32:40 | CallExpr | test.swift:34:10:34:10 | d | $@ | test.swift:32:27:32:40 | CallExpr | CallExpr | -| test.swift:39:10:39:10 | a | test.swift:38:13:38:26 | CallExpr | test.swift:39:10:39:10 | a | $@ | test.swift:38:13:38:26 | CallExpr | CallExpr | -| test.swift:47:10:47:16 | MemberAccessExpr | test.swift:46:15:46:28 | CallExpr | test.swift:47:10:47:16 | MemberAccessExpr | $@ | test.swift:46:15:46:28 | CallExpr | CallExpr | -| test.swift:58:10:58:23 | MemberAccessExpr | test.swift:53:22:53:35 | CallExpr | test.swift:58:10:58:23 | MemberAccessExpr | $@ | test.swift:53:22:53:35 | CallExpr | CallExpr | -| test.swift:66:10:66:16 | MemberAccessExpr | test.swift:64:21:64:35 | CallExpr | test.swift:66:10:66:16 | MemberAccessExpr | $@ | test.swift:64:21:64:35 | CallExpr | CallExpr | -| test.swift:75:10:75:16 | MemberAccessExpr | test.swift:74:15:74:29 | CallExpr | test.swift:75:10:75:16 | MemberAccessExpr | $@ | test.swift:74:15:74:29 | CallExpr | CallExpr | -| test.swift:90:10:90:10 | x | test.swift:86:13:86:27 | CallExpr | test.swift:90:10:90:10 | x | $@ | test.swift:86:13:86:27 | CallExpr | CallExpr | -| test.swift:96:10:96:10 | y | test.swift:94:13:94:27 | CallExpr | test.swift:96:10:96:10 | y | $@ | test.swift:94:13:94:27 | CallExpr | CallExpr | -| test.swift:99:14:99:14 | x | test.swift:86:13:86:27 | CallExpr | test.swift:99:14:99:14 | x | $@ | test.swift:86:13:86:27 | CallExpr | CallExpr | -| test.swift:100:14:100:14 | y | test.swift:94:13:94:27 | CallExpr | test.swift:100:14:100:14 | y | $@ | test.swift:94:13:94:27 | CallExpr | CallExpr | -| test.swift:112:10:112:16 | MemberAccessExpr | test.swift:107:19:107:33 | CallExpr | test.swift:112:10:112:16 | MemberAccessExpr | $@ | test.swift:107:19:107:33 | CallExpr | CallExpr | -| test.swift:125:10:125:10 | a | test.swift:117:18:117:33 | CallExpr | test.swift:125:10:125:10 | a | $@ | test.swift:117:18:117:33 | CallExpr | CallExpr | -| test.swift:126:10:126:10 | b | test.swift:117:35:117:49 | CallExpr | test.swift:126:10:126:10 | b | $@ | test.swift:117:35:117:49 | CallExpr | CallExpr | -| test.swift:132:10:132:10 | a | test.swift:131:19:131:33 | CallExpr | test.swift:132:10:132:10 | a | $@ | test.swift:131:19:131:33 | CallExpr | CallExpr | -| test.swift:138:10:138:10 | a | test.swift:137:10:137:24 | CallExpr | test.swift:138:10:138:10 | a | $@ | test.swift:137:10:137:24 | CallExpr | CallExpr | -| test.swift:144:10:144:10 | a | test.swift:143:20:143:34 | CallExpr | test.swift:144:10:144:10 | a | $@ | test.swift:143:20:143:34 | CallExpr | CallExpr | -| test.swift:150:10:150:12 | MemberAccessExpr | test.swift:149:23:149:37 | CallExpr | test.swift:150:10:150:12 | MemberAccessExpr | $@ | test.swift:149:23:149:37 | CallExpr | CallExpr | -| test.swift:157:10:157:12 | MemberAccessExpr | test.swift:156:29:156:43 | CallExpr | test.swift:157:10:157:12 | MemberAccessExpr | $@ | test.swift:156:29:156:43 | CallExpr | CallExpr | -| test.swift:165:10:165:10 | a | test.swift:164:25:164:39 | CallExpr | test.swift:165:10:165:10 | a | $@ | test.swift:164:25:164:39 | CallExpr | CallExpr | -| test.swift:166:10:166:10 | b | test.swift:164:52:164:66 | CallExpr | test.swift:166:10:166:10 | b | $@ | test.swift:164:52:164:66 | CallExpr | CallExpr | +| implicit-self.swift:17:14:17:19 | MemberAccessExpr | implicit-self.swift:16:18:16:31 | CallExpr | implicit-self.swift:17:14:17:19 | MemberAccessExpr | $@ | implicit-self.swift:16:18:16:31 | CallExpr | CallExpr | +| implicit-self.swift:23:14:23:14 | x | implicit-self.swift:22:13:22:26 | CallExpr | implicit-self.swift:23:14:23:14 | x | $@ | implicit-self.swift:22:13:22:26 | CallExpr | CallExpr | +| implicit-self.swift:29:14:29:19 | MemberAccessExpr | implicit-self.swift:28:13:28:26 | CallExpr | implicit-self.swift:29:14:29:19 | MemberAccessExpr | $@ | implicit-self.swift:28:13:28:26 | CallExpr | CallExpr | +| implicit-self.swift:35:14:35:14 | x | implicit-self.swift:34:18:34:31 | CallExpr | implicit-self.swift:35:14:35:14 | x | $@ | implicit-self.swift:34:18:34:31 | CallExpr | CallExpr | +| implicit-self.swift:41:14:41:23 | MemberAccessExpr | implicit-self.swift:40:22:40:35 | CallExpr | implicit-self.swift:41:14:41:23 | MemberAccessExpr | $@ | implicit-self.swift:40:22:40:35 | CallExpr | CallExpr | +| implicit-self.swift:47:14:47:18 | MemberAccessExpr | implicit-self.swift:46:17:46:30 | CallExpr | implicit-self.swift:47:14:47:18 | MemberAccessExpr | $@ | implicit-self.swift:46:17:46:30 | CallExpr | CallExpr | +| implicit-self.swift:53:14:53:23 | MemberAccessExpr | implicit-self.swift:52:17:52:30 | CallExpr | implicit-self.swift:53:14:53:23 | MemberAccessExpr | $@ | implicit-self.swift:52:17:52:30 | CallExpr | CallExpr | +| implicit-self.swift:59:14:59:18 | MemberAccessExpr | implicit-self.swift:58:22:58:35 | CallExpr | implicit-self.swift:59:14:59:18 | MemberAccessExpr | $@ | implicit-self.swift:58:22:58:35 | CallExpr | CallExpr | +| implicit-self.swift:65:14:65:14 | x | implicit-self.swift:64:24:64:37 | CallExpr | implicit-self.swift:65:14:65:14 | x | $@ | implicit-self.swift:64:24:64:37 | CallExpr | CallExpr | +| implicit-self.swift:66:14:66:19 | MemberAccessExpr | implicit-self.swift:64:24:64:37 | CallExpr | implicit-self.swift:66:14:66:19 | MemberAccessExpr | $@ | implicit-self.swift:64:24:64:37 | CallExpr | CallExpr | +| implicit-self.swift:72:14:72:14 | x | implicit-self.swift:71:29:71:43 | CallExpr | implicit-self.swift:72:14:72:14 | x | $@ | implicit-self.swift:71:29:71:43 | CallExpr | CallExpr | +| implicit-self.swift:73:14:73:19 | MemberAccessExpr | implicit-self.swift:71:29:71:43 | CallExpr | implicit-self.swift:73:14:73:19 | MemberAccessExpr | $@ | implicit-self.swift:71:29:71:43 | CallExpr | CallExpr | +| implicit-self.swift:79:14:79:14 | x | implicit-self.swift:78:24:78:38 | CallExpr | implicit-self.swift:79:14:79:14 | x | $@ | implicit-self.swift:78:24:78:38 | CallExpr | CallExpr | +| implicit-self.swift:80:14:80:19 | MemberAccessExpr | implicit-self.swift:78:24:78:38 | CallExpr | implicit-self.swift:80:14:80:19 | MemberAccessExpr | $@ | implicit-self.swift:78:24:78:38 | CallExpr | CallExpr | +| implicit-self.swift:86:14:86:14 | x | implicit-self.swift:85:29:85:43 | CallExpr | implicit-self.swift:86:14:86:14 | x | $@ | implicit-self.swift:85:29:85:43 | CallExpr | CallExpr | +| implicit-self.swift:87:14:87:19 | MemberAccessExpr | implicit-self.swift:85:29:85:43 | CallExpr | implicit-self.swift:87:14:87:19 | MemberAccessExpr | $@ | implicit-self.swift:85:29:85:43 | CallExpr | CallExpr | +| test.swift:9:10:9:21 | CallExpr | test.swift:9:10:9:21 | CallExpr | test.swift:9:10:9:21 | CallExpr | $@ | test.swift:9:10:9:21 | CallExpr | CallExpr | +| test.swift:17:10:17:32 | BinaryExpr | test.swift:17:10:17:23 | CallExpr | test.swift:17:10:17:32 | BinaryExpr | $@ | test.swift:17:10:17:23 | CallExpr | CallExpr | +| test.swift:18:10:18:32 | BinaryExpr | test.swift:18:19:18:32 | CallExpr | test.swift:18:10:18:32 | BinaryExpr | $@ | test.swift:18:19:18:32 | CallExpr | CallExpr | +| test.swift:20:10:20:33 | StringInterpolationExpr | test.swift:20:13:20:26 | CallExpr | test.swift:20:10:20:33 | StringInterpolationExpr | $@ | test.swift:20:13:20:26 | CallExpr | CallExpr | +| test.swift:21:10:21:33 | StringInterpolationExpr | test.swift:21:18:21:31 | CallExpr | test.swift:21:10:21:33 | StringInterpolationExpr | $@ | test.swift:21:18:21:31 | CallExpr | CallExpr | +| test.swift:22:10:22:38 | StringInterpolationExpr | test.swift:22:18:22:31 | CallExpr | test.swift:22:10:22:38 | StringInterpolationExpr | $@ | test.swift:22:18:22:31 | CallExpr | CallExpr | +| test.swift:27:10:27:35 | MemberAccessExpr | test.swift:27:11:27:25 | CallExpr | test.swift:27:10:27:35 | MemberAccessExpr | $@ | test.swift:27:11:27:25 | CallExpr | CallExpr | +| test.swift:30:10:30:35 | MemberAccessExpr | test.swift:30:19:30:32 | CallExpr | test.swift:30:10:30:35 | MemberAccessExpr | $@ | test.swift:30:19:30:32 | CallExpr | CallExpr | +| test.swift:35:10:35:10 | a | test.swift:34:13:34:26 | CallExpr | test.swift:35:10:35:10 | a | $@ | test.swift:34:13:34:26 | CallExpr | CallExpr | +| test.swift:40:10:40:10 | a | test.swift:39:19:39:33 | CallExpr | test.swift:40:10:40:10 | a | $@ | test.swift:39:19:39:33 | CallExpr | CallExpr | +| test.swift:45:10:45:10 | d | test.swift:43:27:43:40 | CallExpr | test.swift:45:10:45:10 | d | $@ | test.swift:43:27:43:40 | CallExpr | CallExpr | +| test.swift:50:10:50:10 | a | test.swift:49:13:49:26 | CallExpr | test.swift:50:10:50:10 | a | $@ | test.swift:49:13:49:26 | CallExpr | CallExpr | +| test.swift:58:10:58:16 | MemberAccessExpr | test.swift:57:15:57:28 | CallExpr | test.swift:58:10:58:16 | MemberAccessExpr | $@ | test.swift:57:15:57:28 | CallExpr | CallExpr | +| test.swift:69:10:69:23 | MemberAccessExpr | test.swift:64:22:64:35 | CallExpr | test.swift:69:10:69:23 | MemberAccessExpr | $@ | test.swift:64:22:64:35 | CallExpr | CallExpr | +| test.swift:77:10:77:16 | MemberAccessExpr | test.swift:75:21:75:35 | CallExpr | test.swift:77:10:77:16 | MemberAccessExpr | $@ | test.swift:75:21:75:35 | CallExpr | CallExpr | +| test.swift:86:10:86:16 | MemberAccessExpr | test.swift:85:15:85:29 | CallExpr | test.swift:86:10:86:16 | MemberAccessExpr | $@ | test.swift:85:15:85:29 | CallExpr | CallExpr | +| test.swift:101:10:101:10 | x | test.swift:97:13:97:27 | CallExpr | test.swift:101:10:101:10 | x | $@ | test.swift:97:13:97:27 | CallExpr | CallExpr | +| test.swift:107:10:107:10 | y | test.swift:105:13:105:27 | CallExpr | test.swift:107:10:107:10 | y | $@ | test.swift:105:13:105:27 | CallExpr | CallExpr | +| test.swift:110:14:110:14 | x | test.swift:97:13:97:27 | CallExpr | test.swift:110:14:110:14 | x | $@ | test.swift:97:13:97:27 | CallExpr | CallExpr | +| test.swift:111:14:111:14 | y | test.swift:105:13:105:27 | CallExpr | test.swift:111:14:111:14 | y | $@ | test.swift:105:13:105:27 | CallExpr | CallExpr | +| test.swift:123:10:123:16 | MemberAccessExpr | test.swift:118:19:118:33 | CallExpr | test.swift:123:10:123:16 | MemberAccessExpr | $@ | test.swift:118:19:118:33 | CallExpr | CallExpr | +| test.swift:136:10:136:10 | a | test.swift:128:18:128:33 | CallExpr | test.swift:136:10:136:10 | a | $@ | test.swift:128:18:128:33 | CallExpr | CallExpr | +| test.swift:137:10:137:10 | b | test.swift:128:35:128:49 | CallExpr | test.swift:137:10:137:10 | b | $@ | test.swift:128:35:128:49 | CallExpr | CallExpr | +| test.swift:143:10:143:10 | a | test.swift:142:19:142:33 | CallExpr | test.swift:143:10:143:10 | a | $@ | test.swift:142:19:142:33 | CallExpr | CallExpr | +| test.swift:149:10:149:10 | a | test.swift:148:10:148:24 | CallExpr | test.swift:149:10:149:10 | a | $@ | test.swift:148:10:148:24 | CallExpr | CallExpr | +| test.swift:155:10:155:10 | a | test.swift:154:20:154:34 | CallExpr | test.swift:155:10:155:10 | a | $@ | test.swift:154:20:154:34 | CallExpr | CallExpr | +| test.swift:161:10:161:12 | MemberAccessExpr | test.swift:160:23:160:37 | CallExpr | test.swift:161:10:161:12 | MemberAccessExpr | $@ | test.swift:160:23:160:37 | CallExpr | CallExpr | +| test.swift:168:10:168:12 | MemberAccessExpr | test.swift:167:29:167:43 | CallExpr | test.swift:168:10:168:12 | MemberAccessExpr | $@ | test.swift:167:29:167:43 | CallExpr | CallExpr | +| test.swift:176:10:176:10 | a | test.swift:175:25:175:39 | CallExpr | test.swift:176:10:176:10 | a | $@ | test.swift:175:25:175:39 | CallExpr | CallExpr | +| test.swift:177:10:177:10 | b | test.swift:175:52:175:66 | CallExpr | test.swift:177:10:177:10 | b | $@ | test.swift:175:52:175:66 | CallExpr | CallExpr | diff --git a/unified/ql/test/library-tests/dataflow/test.swift b/unified/ql/test/library-tests/dataflow/test.swift index 988bcfe03f52..a7fa42ee6100 100644 --- a/unified/ql/test/library-tests/dataflow/test.swift +++ b/unified/ql/test/library-tests/dataflow/test.swift @@ -1,167 +1,178 @@ +func source(_ s: String) -> String { return s } + +@discardableResult +func sink(_ s: Any) -> String { return "" } + +func foo() -> Bool { return 5 > 5 } + func t1() { - sink(source("t1")); // $ hasValueFlow=t1 + sink(source("t1")) // $ hasValueFlow=t1 +} + +extension DefaultStringInterpolation { + mutating func appendInterpolation(escape value: String) {} } func t2() { - sink(source("t2.1") + "blah"); // $ hasTaintFlow=t2.1 - sink("blah" + source("t2.2")); // $ hasTaintFlow=t2.2 + sink(source("t2.1") + "blah") // $ hasTaintFlow=t2.1 + sink("blah" + source("t2.2")) // $ hasTaintFlow=t2.2 - sink("\(source("t2.3")) blah"); // $ hasTaintFlow=t2.3 - sink("blah \(source("t2.4"))"); // $ hasTaintFlow=t2.4 - sink("blah \(source("t2.5")) blah"); // $ hasTaintFlow=t2.5 - sink("blah \(escape: source("t2.6")) blah"); // no flow + sink("\(source("t2.3")) blah") // $ hasTaintFlow=t2.3 + sink("blah \(source("t2.4"))") // $ hasTaintFlow=t2.4 + sink("blah \(source("t2.5")) blah") // $ hasTaintFlow=t2.5 + sink("blah \(escape: source("t2.6")) blah") // no flow } func t3() { - sink((source("t3.1"), "safe").0); // $ hasValueFlow=t3.1 - sink((source("t3.2"), "safe").1); // no flow - sink(("safe", source("t3.3")).0); // no flow - sink(("safe", source("t3.4")).1); // $ hasValueFlow=t3.4 + sink((source("t3.1"), "safe").0) // $ hasValueFlow=t3.1 + sink((source("t3.2"), "safe").1) // no flow + sink(("safe", source("t3.3")).0) // no flow + sink(("safe", source("t3.4")).1) // $ hasValueFlow=t3.4 } func t4() { - let a = source("t4.1"); - sink(a); // $ hasValueFlow=t4.1 + let a = source("t4.1") + sink(a) // $ hasValueFlow=t4.1 } func t5() { - let (a, b) = (source("t5.1"), "safe"); - sink(a); // $ hasValueFlow=t5.1 - sink(b); // no flow + let (a, b) = (source("t5.1"), "safe") + sink(a) // $ hasValueFlow=t5.1 + sink(b) // no flow - let (c, d) = ("safe", source("t5.2")); - sink(c); // no flow - sink(d); // $ hasValueFlow=t5.2 + let (c, d) = ("safe", source("t5.2")) + sink(c) // no flow + sink(d) // $ hasValueFlow=t5.2 } func t6() { - var a = source("t6.1"); - sink(a); // $ hasValueFlow=t6.1 - a = "safe"; - sink(a); + var a = source("t6.1") + sink(a) // $ hasValueFlow=t6.1 + a = "safe" + sink(a) } func t7() { var tuple = ("safe", "safe") - tuple.0 = source("t7.1"); - sink(tuple.0); // $ hasValueFlow=t7.1 - sink(tuple.1); // no flow + tuple.0 = source("t7.1") + sink(tuple.0) // $ hasValueFlow=t7.1 + sink(tuple.1) // no flow } func t8() { var deep_tuple = (("safe", "safe"), ("safe", "safe")) - deep_tuple.1.0 = source("t8.1"); - sink(deep_tuple); // no flow - sink(deep_tuple.0); // no flow - sink(deep_tuple.1); // no flow - sink(deep_tuple.0.1); // no flow - sink(deep_tuple.1.0); // $ hasValueFlow=t8.1 - sink(deep_tuple.1.1); // no flow + deep_tuple.1.0 = source("t8.1") + sink(deep_tuple) // no flow + sink(deep_tuple.0) // no flow + sink(deep_tuple.1) // no flow + sink(deep_tuple.0.1) // no flow + sink(deep_tuple.1.0) // $ hasValueFlow=t8.1 + sink(deep_tuple.1.1) // no flow } func t9() { var tuple = ("safe", "safe") - (tuple.1, _) = (source("t9.1"), source("t9.2")); - sink(tuple.0); // no flow - sink(tuple.1); // $ hasValueFlow=t9.1 + (tuple.1, _) = (source("t9.1"), source("t9.2")) + sink(tuple.0) // no flow + sink(tuple.1) // $ hasValueFlow=t9.1 } func t10() { var tuple = ("safe", "safe") - sink(tuple.0); // no flow - sink(tuple.1); // no flow + sink(tuple.0) // no flow + sink(tuple.1) // no flow - tuple.0 = source("t10.1"); - sink(tuple.0); // $ hasValueFlow=t10.1 - sink(tuple.1); // no flow + tuple.0 = source("t10.1") + sink(tuple.0) // $ hasValueFlow=t10.1 + sink(tuple.1) // no flow - tuple = ("safe", "safe"); - sink(tuple.0); // no flow - sink(tuple.1); // no flow + tuple = ("safe", "safe") + sink(tuple.0) // no flow + sink(tuple.1) // no flow } func t11() { - var x = "safe"; - if (foo()) { - x = source("t11.1"); + var x = "safe" + if foo() { + x = source("t11.1") } else { - sink(x); // no flow + sink(x) // no flow } - sink(x); // $ hasValueFlow=t11.1 + sink(x) // $ hasValueFlow=t11.1 - var y = "safe"; - if (foo()) { - y = source("t11.2"); + var y = "safe" + if foo() { + y = source("t11.2") } - sink(y); // $ hasValueFlow=t11.2 + sink(y) // $ hasValueFlow=t11.2 - if (foo()) { - sink(x); // $ hasValueFlow=t11.1 - sink(y); // $ hasValueFlow=t11.2 + if foo() { + sink(x) // $ hasValueFlow=t11.1 + sink(y) // $ hasValueFlow=t11.2 } } func t12() { - var tuple = ("safe", "safe"); - if (foo()) { - tuple.0 = source("t12.1"); + var tuple = ("safe", "safe") + if foo() { + tuple.0 = source("t12.1") } else { - sink(tuple.0); // no flow - sink(tuple.1); // no flow + sink(tuple.0) // no flow + sink(tuple.1) // no flow } - sink(tuple.0); // $ hasValueFlow=t12.1 - sink(tuple.1); // no flow + sink(tuple.0) // $ hasValueFlow=t12.1 + sink(tuple.1) // no flow } func t13() { - var tuple = (source("t13.1"), source("t13.2")); - var (a,b) = ("safe", "safe") - if (foo()) { - (a,b) = tuple + let tuple = (source("t13.1"), source("t13.2")) + var (a, b) = ("safe", "safe") + if foo() { + (a, b) = tuple } else { - sink(a); // no flow - sink(b); // no flow + sink(a) // no flow + sink(b) // no flow } - sink(a); // $ hasValueFlow=t13.1 - sink(b); // $ hasValueFlow=t13.2 + sink(a) // $ hasValueFlow=t13.1 + sink(b) // $ hasValueFlow=t13.2 } func t14() { - var a = "safe"; - a = sink(a) + source("t14.1"); - sink(a); // $ hasTaintFlow=t14.1 + var a = "safe" + a = sink(a) + source("t14.1") + sink(a) // $ hasTaintFlow=t14.1 } func t15() { - var a = "safe"; - a += source("t15.1"); - sink(a); // $ hasTaintFlow=t15.1 + var a = "safe" + a += source("t15.1") + sink(a) // $ hasTaintFlow=t15.1 } func t16() { - var a = "safe"; - a += sink(a) + source("t16.1"); - sink(a); // $ hasTaintFlow=t16.1 + var a = "safe" + a += sink(a) + source("t16.1") + sink(a) // $ hasTaintFlow=t16.1 } func t17() { - var a = ("safe", "safe"); - a.0 = sink(a.0) + source("t17.1"); - sink(a.0); // $ hasTaintFlow=t17.1 - sink(a.1); // no flow + var a = ("safe", "safe") + a.0 = sink(a.0) + source("t17.1") + sink(a.0) // $ hasTaintFlow=t17.1 + sink(a.1) // no flow } func t18() { - var a = ("safe", "safe"); - (a.0, _) = (sink(a.0) + source("t18.1"), source("t18.2")); - sink(a.0); // $ hasTaintFlow=t18.1 - sink(a.1); // no flow + var a = ("safe", "safe") + (a.0, _) = (sink(a.0) + source("t18.1"), source("t18.2")) + sink(a.0) // $ hasTaintFlow=t18.1 + sink(a.1) // no flow } func t19() { - var a = "safe"; - var b = "safe"; - (a, b) = (sink(a) + source("t19.1"), sink(b) + source("t19.2")); - sink(a); // $ hasTaintFlow=t19.1 - sink(b); // $ hasTaintFlow=t19.2 + var a = "safe" + var b = "safe" + (a, b) = (sink(a) + source("t19.1"), sink(b) + source("t19.2")) + sink(a) // $ hasTaintFlow=t19.1 + sink(b) // $ hasTaintFlow=t19.2 }