Skip to content

Commit 4de57f4

Browse files
committed
Swift
1 parent 5c89b84 commit 4de57f4

File tree

2 files changed

+57
-10
lines changed

2 files changed

+57
-10
lines changed

swift/ql/lib/codeql/swift/dataflow/internal/FlowSummaryImpl.qll

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ private import codeql.dataflow.internal.AccessPathSyntax as AccessPath
88
private import DataFlowImplSpecific as DataFlowImplSpecific
99
private import DataFlowImplSpecific::Private
1010
private import DataFlowImplSpecific::Public
11-
private import DataFlowImplCommon
1211
private import codeql.swift.dataflow.ExternalFlow
1312

1413
module Input implements InputSig<Location, DataFlowImplSpecific::SwiftDataFlow> {

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

Lines changed: 57 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,24 @@
11
edges
2+
| file://:0:0:0:0 | .a [Reverse] [x] | file://:0:0:0:0 | self [Reverse] [a, x] | provenance | |
23
| file://:0:0:0:0 | .wrappedValue | test.swift:949:15:949:15 | x | provenance | |
34
| file://:0:0:0:0 | .wrappedValue | test.swift:951:15:951:15 | x | provenance | |
45
| file://:0:0:0:0 | KeyPathComponent [some:0] | test.swift:663:13:663:29 | exit #keyPath(...) [some:0] | provenance | |
5-
| file://:0:0:0:0 | [post] self [v2, some:0] | test.swift:731:9:731:9 | self [Return] [v2, some:0] | provenance | |
6-
| file://:0:0:0:0 | [post] self [v2] | test.swift:731:9:731:9 | self [Return] [v2] | provenance | |
7-
| file://:0:0:0:0 | [post] self [v3] | test.swift:732:9:732:9 | self [Return] [v3] | provenance | |
8-
| file://:0:0:0:0 | [post] self [v] | test.swift:815:7:815:7 | self [Return] [v] | provenance | |
6+
| file://:0:0:0:0 | [post] self [v2, some:0] | file://:0:0:0:0 | self [Reverse] [v2, some:0] | provenance | |
7+
| file://:0:0:0:0 | [post] self [v2] | file://:0:0:0:0 | self [Reverse] [v2] | provenance | |
8+
| file://:0:0:0:0 | [post] self [v3] | file://:0:0:0:0 | self [Reverse] [v3] | provenance | |
9+
| file://:0:0:0:0 | [post] self [v] | file://:0:0:0:0 | self [Reverse] [v] | provenance | |
910
| file://:0:0:0:0 | [post] self [wrappedValue] | file://:0:0:0:0 | self [wrappedValue] | provenance | |
10-
| file://:0:0:0:0 | [post] self [x, some:0] | test.swift:559:9:559:9 | self [Return] [x, some:0] | provenance | |
11-
| file://:0:0:0:0 | [post] self [x] | test.swift:163:7:163:7 | self [Return] [x] | provenance | |
12-
| file://:0:0:0:0 | [post] self [x] | test.swift:559:9:559:9 | self [Return] [x] | provenance | |
11+
| file://:0:0:0:0 | [post] self [x, some:0] | file://:0:0:0:0 | self [Reverse] [x, some:0] | provenance | |
12+
| file://:0:0:0:0 | [post] self [x] | file://:0:0:0:0 | self [Reverse] [x] | provenance | |
13+
| file://:0:0:0:0 | [post] self [x] | file://:0:0:0:0 | self [Reverse] [x] | provenance | |
14+
| file://:0:0:0:0 | self [Reverse] [a, x] | test.swift:185:7:185:7 | self [Return] [a, x] | provenance | |
15+
| file://:0:0:0:0 | self [Reverse] [v2, some:0] | test.swift:731:9:731:9 | self [Return] [v2, some:0] | provenance | |
16+
| file://:0:0:0:0 | self [Reverse] [v2] | test.swift:731:9:731:9 | self [Return] [v2] | provenance | |
17+
| file://:0:0:0:0 | self [Reverse] [v3] | test.swift:732:9:732:9 | self [Return] [v3] | provenance | |
18+
| file://:0:0:0:0 | self [Reverse] [v] | test.swift:815:7:815:7 | self [Return] [v] | provenance | |
19+
| file://:0:0:0:0 | self [Reverse] [x, some:0] | test.swift:559:9:559:9 | self [Return] [x, some:0] | provenance | |
20+
| file://:0:0:0:0 | self [Reverse] [x] | test.swift:163:7:163:7 | self [Return] [x] | provenance | |
21+
| file://:0:0:0:0 | self [Reverse] [x] | test.swift:559:9:559:9 | self [Return] [x] | provenance | |
1322
| file://:0:0:0:0 | self [a, x] | file://:0:0:0:0 | .a [x] | provenance | |
1423
| file://:0:0:0:0 | self [s, x] | file://:0:0:0:0 | .s [x] | provenance | |
1524
| file://:0:0:0:0 | self [str] | file://:0:0:0:0 | .str | provenance | |
@@ -185,11 +194,15 @@ edges
185194
| test.swift:159:16:159:29 | call to ... | test.swift:154:10:154:13 | i | provenance | |
186195
| test.swift:163:7:163:7 | self [x] | file://:0:0:0:0 | self [x] | provenance | |
187196
| test.swift:163:7:163:7 | value | file://:0:0:0:0 | value | provenance | |
197+
| test.swift:169:3:171:3 | self[return] [Reverse] [x] | test.swift:170:5:170:5 | self [Reverse] [x] | provenance | |
188198
| test.swift:169:12:169:22 | value | test.swift:170:9:170:9 | value | provenance | |
189199
| test.swift:170:5:170:5 | [post] self [x] | test.swift:169:3:171:3 | self[return] [x] | provenance | |
190-
| test.swift:170:5:170:5 | [post] self [x] | test.swift:169:8:169:8 | self [Return] [x] | provenance | |
200+
| test.swift:170:5:170:5 | [post] self [x] | test.swift:170:5:170:5 | self [Reverse] [x] | provenance | |
201+
| test.swift:170:5:170:5 | self [Reverse] [x] | test.swift:169:8:169:8 | self [Return] [x] | provenance | |
202+
| test.swift:170:5:170:5 | self [Reverse] [x] | test.swift:169:8:169:8 | self [Return] [x] | provenance | |
191203
| test.swift:170:9:170:9 | value | test.swift:163:7:163:7 | value | provenance | |
192204
| test.swift:170:9:170:9 | value | test.swift:170:5:170:5 | [post] self [x] | provenance | |
205+
| test.swift:173:8:173:8 | self [x] | test.swift:173:3:175:3 | self[return] [x] | provenance | |
193206
| test.swift:173:8:173:8 | self [x] | test.swift:174:12:174:12 | self [x] | provenance | |
194207
| test.swift:174:12:174:12 | self [x] | test.swift:163:7:163:7 | self [x] | provenance | |
195208
| test.swift:174:12:174:12 | self [x] | test.swift:174:12:174:12 | .x | provenance | |
@@ -200,7 +213,10 @@ edges
200213
| test.swift:181:13:181:13 | a [x] | test.swift:181:13:181:15 | .x | provenance | |
201214
| test.swift:185:7:185:7 | self [a, x] | file://:0:0:0:0 | self [a, x] | provenance | |
202215
| test.swift:194:3:194:3 | [post] b [a, x] | test.swift:195:13:195:13 | b [a, x] | provenance | |
216+
| test.swift:194:3:194:5 | .a [Reverse] [x] | file://:0:0:0:0 | .a [Reverse] [x] | provenance | |
217+
| test.swift:194:3:194:5 | .a [Reverse] [x] | test.swift:194:3:194:3 | [post] b [a, x] | provenance | |
203218
| test.swift:194:3:194:5 | [post] getter for .a [x] | test.swift:194:3:194:3 | [post] b [a, x] | provenance | |
219+
| test.swift:194:3:194:5 | [post] getter for .a [x] | test.swift:194:3:194:5 | .a [Reverse] [x] | provenance | |
204220
| test.swift:194:11:194:18 | call to source() | test.swift:163:7:163:7 | value | provenance | |
205221
| test.swift:194:11:194:18 | call to source() | test.swift:194:3:194:5 | [post] getter for .a [x] | provenance | |
206222
| test.swift:195:13:195:13 | b [a, x] | test.swift:185:7:185:7 | self [a, x] | provenance | |
@@ -217,13 +233,20 @@ edges
217233
| test.swift:206:9:206:16 | call to source() | test.swift:206:3:206:3 | [post] a [x] | provenance | |
218234
| test.swift:207:13:207:13 | a [x] | test.swift:173:8:173:8 | self [x] | provenance | |
219235
| test.swift:207:13:207:13 | a [x] | test.swift:207:13:207:19 | call to get() | provenance | |
236+
| test.swift:212:3:212:3 | [post] a [Reverse] [x] | test.swift:169:3:171:3 | self[return] [Reverse] [x] | provenance | |
237+
| test.swift:212:3:212:3 | [post] a [Reverse] [x] | test.swift:212:3:212:3 | [post] a [x] | provenance | |
220238
| test.swift:212:3:212:3 | [post] a [x] | test.swift:213:13:213:13 | a [x] | provenance | |
221239
| test.swift:212:9:212:16 | call to source() | test.swift:169:12:169:22 | value | provenance | |
222240
| test.swift:212:9:212:16 | call to source() | test.swift:212:3:212:3 | [post] a [x] | provenance | |
241+
| test.swift:213:13:213:13 | [post] a [x] | test.swift:212:3:212:3 | [post] a [Reverse] [x] | provenance | |
223242
| test.swift:213:13:213:13 | a [x] | test.swift:173:8:173:8 | self [x] | provenance | |
243+
| test.swift:213:13:213:13 | a [x] | test.swift:213:13:213:13 | [post] a [x] | provenance | |
224244
| test.swift:213:13:213:13 | a [x] | test.swift:213:13:213:19 | call to get() | provenance | |
225245
| test.swift:218:3:218:3 | [post] b [a, x] | test.swift:219:13:219:13 | b [a, x] | provenance | |
246+
| test.swift:218:3:218:5 | .a [Reverse] [x] | file://:0:0:0:0 | .a [Reverse] [x] | provenance | |
247+
| test.swift:218:3:218:5 | .a [Reverse] [x] | test.swift:218:3:218:3 | [post] b [a, x] | provenance | |
226248
| test.swift:218:3:218:5 | [post] getter for .a [x] | test.swift:218:3:218:3 | [post] b [a, x] | provenance | |
249+
| test.swift:218:3:218:5 | [post] getter for .a [x] | test.swift:218:3:218:5 | .a [Reverse] [x] | provenance | |
227250
| test.swift:218:11:218:18 | call to source() | test.swift:169:12:169:22 | value | provenance | |
228251
| test.swift:218:11:218:18 | call to source() | test.swift:218:3:218:5 | [post] getter for .a [x] | provenance | |
229252
| test.swift:219:13:219:13 | b [a, x] | test.swift:185:7:185:7 | self [a, x] | provenance | |
@@ -426,8 +449,9 @@ edges
426449
| test.swift:576:14:576:21 | call to source() | test.swift:576:13:576:21 | call to +(_:) | provenance | |
427450
| test.swift:585:9:585:9 | self [str] | file://:0:0:0:0 | self [str] | provenance | |
428451
| test.swift:586:10:586:13 | s | test.swift:587:13:587:13 | s | provenance | |
429-
| test.swift:587:7:587:7 | [post] self [str] | test.swift:586:5:586:5 | self [Return] [str] | provenance | |
430452
| test.swift:587:7:587:7 | [post] self [str] | test.swift:586:5:588:5 | self[return] [str] | provenance | |
453+
| test.swift:587:7:587:7 | [post] self [str] | test.swift:587:7:587:7 | self [Reverse] [str] | provenance | |
454+
| test.swift:587:7:587:7 | self [Reverse] [str] | test.swift:586:5:586:5 | self [Return] [str] | provenance | |
431455
| test.swift:587:13:587:13 | s | test.swift:587:7:587:7 | [post] self [str] | provenance | |
432456
| test.swift:592:17:595:5 | self[return] [str] | test.swift:600:13:600:41 | call to MyClass.init(contentsOfFile:) [str] | provenance | |
433457
| test.swift:593:7:593:7 | [post] self [str] | test.swift:592:17:595:5 | self[return] [str] | provenance | |
@@ -745,6 +769,7 @@ edges
745769
| test.swift:988:34:988:34 | value | file://:0:0:0:0 | value | provenance | |
746770
| test.swift:991:10:991:17 | call to source() | test.swift:988:34:988:34 | value | provenance | |
747771
nodes
772+
| file://:0:0:0:0 | .a [Reverse] [x] | semmle.label | .a [Reverse] [x] |
748773
| file://:0:0:0:0 | .a [x] | semmle.label | .a [x] |
749774
| file://:0:0:0:0 | .s [x] | semmle.label | .s [x] |
750775
| file://:0:0:0:0 | .str | semmle.label | .str |
@@ -766,6 +791,14 @@ nodes
766791
| file://:0:0:0:0 | [post] self [x, some:0] | semmle.label | [post] self [x, some:0] |
767792
| file://:0:0:0:0 | [post] self [x] | semmle.label | [post] self [x] |
768793
| file://:0:0:0:0 | [post] self [x] | semmle.label | [post] self [x] |
794+
| file://:0:0:0:0 | self [Reverse] [a, x] | semmle.label | self [Reverse] [a, x] |
795+
| file://:0:0:0:0 | self [Reverse] [v2, some:0] | semmle.label | self [Reverse] [v2, some:0] |
796+
| file://:0:0:0:0 | self [Reverse] [v2] | semmle.label | self [Reverse] [v2] |
797+
| file://:0:0:0:0 | self [Reverse] [v3] | semmle.label | self [Reverse] [v3] |
798+
| file://:0:0:0:0 | self [Reverse] [v] | semmle.label | self [Reverse] [v] |
799+
| file://:0:0:0:0 | self [Reverse] [x, some:0] | semmle.label | self [Reverse] [x, some:0] |
800+
| file://:0:0:0:0 | self [Reverse] [x] | semmle.label | self [Reverse] [x] |
801+
| file://:0:0:0:0 | self [Reverse] [x] | semmle.label | self [Reverse] [x] |
769802
| file://:0:0:0:0 | self [a, x] | semmle.label | self [a, x] |
770803
| file://:0:0:0:0 | self [s, x] | semmle.label | self [s, x] |
771804
| file://:0:0:0:0 | self [str] | semmle.label | self [str] |
@@ -955,20 +988,27 @@ nodes
955988
| test.swift:163:7:163:7 | self [Return] [x] | semmle.label | self [Return] [x] |
956989
| test.swift:163:7:163:7 | self [x] | semmle.label | self [x] |
957990
| test.swift:163:7:163:7 | value | semmle.label | value |
991+
| test.swift:169:3:171:3 | self[return] [Reverse] [x] | semmle.label | self[return] [Reverse] [x] |
958992
| test.swift:169:3:171:3 | self[return] [x] | semmle.label | self[return] [x] |
959993
| test.swift:169:8:169:8 | self [Return] [x] | semmle.label | self [Return] [x] |
994+
| test.swift:169:8:169:8 | self [Return] [x] | semmle.label | self [Return] [x] |
960995
| test.swift:169:12:169:22 | value | semmle.label | value |
961996
| test.swift:170:5:170:5 | [post] self [x] | semmle.label | [post] self [x] |
997+
| test.swift:170:5:170:5 | self [Reverse] [x] | semmle.label | self [Reverse] [x] |
998+
| test.swift:170:5:170:5 | self [Reverse] [x] | semmle.label | self [Reverse] [x] |
962999
| test.swift:170:9:170:9 | value | semmle.label | value |
1000+
| test.swift:173:3:175:3 | self[return] [x] | semmle.label | self[return] [x] |
9631001
| test.swift:173:8:173:8 | self [x] | semmle.label | self [x] |
9641002
| test.swift:174:12:174:12 | .x | semmle.label | .x |
9651003
| test.swift:174:12:174:12 | self [x] | semmle.label | self [x] |
9661004
| test.swift:180:3:180:3 | [post] a [x] | semmle.label | [post] a [x] |
9671005
| test.swift:180:9:180:16 | call to source() | semmle.label | call to source() |
9681006
| test.swift:181:13:181:13 | a [x] | semmle.label | a [x] |
9691007
| test.swift:181:13:181:15 | .x | semmle.label | .x |
1008+
| test.swift:185:7:185:7 | self [Return] [a, x] | semmle.label | self [Return] [a, x] |
9701009
| test.swift:185:7:185:7 | self [a, x] | semmle.label | self [a, x] |
9711010
| test.swift:194:3:194:3 | [post] b [a, x] | semmle.label | [post] b [a, x] |
1011+
| test.swift:194:3:194:5 | .a [Reverse] [x] | semmle.label | .a [Reverse] [x] |
9721012
| test.swift:194:3:194:5 | [post] getter for .a [x] | semmle.label | [post] getter for .a [x] |
9731013
| test.swift:194:11:194:18 | call to source() | semmle.label | call to source() |
9741014
| test.swift:195:13:195:13 | b [a, x] | semmle.label | b [a, x] |
@@ -982,11 +1022,14 @@ nodes
9821022
| test.swift:206:9:206:16 | call to source() | semmle.label | call to source() |
9831023
| test.swift:207:13:207:13 | a [x] | semmle.label | a [x] |
9841024
| test.swift:207:13:207:19 | call to get() | semmle.label | call to get() |
1025+
| test.swift:212:3:212:3 | [post] a [Reverse] [x] | semmle.label | [post] a [Reverse] [x] |
9851026
| test.swift:212:3:212:3 | [post] a [x] | semmle.label | [post] a [x] |
9861027
| test.swift:212:9:212:16 | call to source() | semmle.label | call to source() |
1028+
| test.swift:213:13:213:13 | [post] a [x] | semmle.label | [post] a [x] |
9871029
| test.swift:213:13:213:13 | a [x] | semmle.label | a [x] |
9881030
| test.swift:213:13:213:19 | call to get() | semmle.label | call to get() |
9891031
| test.swift:218:3:218:3 | [post] b [a, x] | semmle.label | [post] b [a, x] |
1032+
| test.swift:218:3:218:5 | .a [Reverse] [x] | semmle.label | .a [Reverse] [x] |
9901033
| test.swift:218:3:218:5 | [post] getter for .a [x] | semmle.label | [post] getter for .a [x] |
9911034
| test.swift:218:11:218:18 | call to source() | semmle.label | call to source() |
9921035
| test.swift:219:13:219:13 | b [a, x] | semmle.label | b [a, x] |
@@ -1200,6 +1243,7 @@ nodes
12001243
| test.swift:586:5:588:5 | self[return] [str] | semmle.label | self[return] [str] |
12011244
| test.swift:586:10:586:13 | s | semmle.label | s |
12021245
| test.swift:587:7:587:7 | [post] self [str] | semmle.label | [post] self [str] |
1246+
| test.swift:587:7:587:7 | self [Reverse] [str] | semmle.label | self [Reverse] [str] |
12031247
| test.swift:587:13:587:13 | s | semmle.label | s |
12041248
| test.swift:592:17:595:5 | self[return] [str] | semmle.label | self[return] [str] |
12051249
| test.swift:593:7:593:7 | [post] self [str] | semmle.label | [post] self [str] |
@@ -1553,6 +1597,7 @@ subpaths
15531597
| test.swift:174:12:174:12 | self [x] | test.swift:163:7:163:7 | self [x] | file://:0:0:0:0 | .x | test.swift:174:12:174:12 | .x |
15541598
| test.swift:180:9:180:16 | call to source() | test.swift:163:7:163:7 | value | test.swift:163:7:163:7 | self [Return] [x] | test.swift:180:3:180:3 | [post] a [x] |
15551599
| test.swift:181:13:181:13 | a [x] | test.swift:163:7:163:7 | self [x] | file://:0:0:0:0 | .x | test.swift:181:13:181:15 | .x |
1600+
| test.swift:194:3:194:5 | .a [Reverse] [x] | file://:0:0:0:0 | .a [Reverse] [x] | test.swift:185:7:185:7 | self [Return] [a, x] | test.swift:194:3:194:3 | [post] b [a, x] |
15561601
| test.swift:194:11:194:18 | call to source() | test.swift:163:7:163:7 | value | test.swift:163:7:163:7 | self [Return] [x] | test.swift:194:3:194:5 | [post] getter for .a [x] |
15571602
| test.swift:195:13:195:13 | b [a, x] | test.swift:185:7:185:7 | self [a, x] | file://:0:0:0:0 | .a [x] | test.swift:195:13:195:15 | .a [x] |
15581603
| test.swift:195:13:195:15 | .a [x] | test.swift:163:7:163:7 | self [x] | file://:0:0:0:0 | .x | test.swift:195:13:195:17 | .x |
@@ -1561,9 +1606,12 @@ subpaths
15611606
| test.swift:201:13:201:13 | a [x] | test.swift:163:7:163:7 | self [x] | file://:0:0:0:0 | .x | test.swift:201:13:201:15 | .x |
15621607
| test.swift:206:9:206:16 | call to source() | test.swift:163:7:163:7 | value | test.swift:163:7:163:7 | self [Return] [x] | test.swift:206:3:206:3 | [post] a [x] |
15631608
| test.swift:207:13:207:13 | a [x] | test.swift:173:8:173:8 | self [x] | test.swift:174:12:174:12 | .x | test.swift:207:13:207:19 | call to get() |
1609+
| test.swift:212:3:212:3 | [post] a [Reverse] [x] | test.swift:169:3:171:3 | self[return] [Reverse] [x] | test.swift:169:8:169:8 | self [Return] [x] | test.swift:212:3:212:3 | [post] a [x] |
15641610
| test.swift:212:9:212:16 | call to source() | test.swift:169:12:169:22 | value | test.swift:169:3:171:3 | self[return] [x] | test.swift:212:3:212:3 | [post] a [x] |
15651611
| test.swift:212:9:212:16 | call to source() | test.swift:169:12:169:22 | value | test.swift:169:8:169:8 | self [Return] [x] | test.swift:212:3:212:3 | [post] a [x] |
1612+
| test.swift:213:13:213:13 | a [x] | test.swift:173:8:173:8 | self [x] | test.swift:173:3:175:3 | self[return] [x] | test.swift:213:13:213:13 | [post] a [x] |
15661613
| test.swift:213:13:213:13 | a [x] | test.swift:173:8:173:8 | self [x] | test.swift:174:12:174:12 | .x | test.swift:213:13:213:19 | call to get() |
1614+
| test.swift:218:3:218:5 | .a [Reverse] [x] | file://:0:0:0:0 | .a [Reverse] [x] | test.swift:185:7:185:7 | self [Return] [a, x] | test.swift:218:3:218:3 | [post] b [a, x] |
15671615
| test.swift:218:11:218:18 | call to source() | test.swift:169:12:169:22 | value | test.swift:169:3:171:3 | self[return] [x] | test.swift:218:3:218:5 | [post] getter for .a [x] |
15681616
| test.swift:218:11:218:18 | call to source() | test.swift:169:12:169:22 | value | test.swift:169:8:169:8 | self [Return] [x] | test.swift:218:3:218:5 | [post] getter for .a [x] |
15691617
| test.swift:219:13:219:13 | b [a, x] | test.swift:185:7:185:7 | self [a, x] | file://:0:0:0:0 | .a [x] | test.swift:219:13:219:15 | .a [x] |

0 commit comments

Comments
 (0)