Skip to content

Commit 3587374

Browse files
committed
Swift: reverse flow steps through InOutExpr
1 parent 41ad1ed commit 3587374

File tree

5 files changed

+86
-3
lines changed

5 files changed

+86
-3
lines changed

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

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,8 @@ private module Cached {
111111
hasExprNode(n,
112112
[
113113
any(Argument arg | modifiable(arg)).getExpr(), any(MemberRefExpr ref).getBase(),
114-
any(ApplyExpr apply).getQualifier(), any(TupleElementExpr te).getSubExpr()
114+
any(ApplyExpr apply).getQualifier(), any(TupleElementExpr te).getSubExpr(),
115+
any(SubscriptExpr se).getBase(), any(InOutExpr ioe).getSubExpr()
115116
])
116117
}
117118

@@ -167,6 +168,9 @@ private module Cached {
167168
// flow through `&` (inout argument)
168169
nodeFrom.asExpr() = nodeTo.asExpr().(InOutExpr).getSubExpr()
169170
or
171+
// reverse flow through `&` (inout argument)
172+
nodeFrom.(PostUpdateNode).getPreUpdateNode().asExpr().(InOutExpr).getSubExpr() = nodeTo.(PostUpdateNode).getPreUpdateNode().asExpr()
173+
or
170174
// flow through `try!` and similar constructs
171175
nodeFrom.asExpr() = nodeTo.asExpr().(AnyTryExpr).getSubExpr()
172176
or
@@ -705,7 +709,7 @@ predicate storeStep(Node node1, ContentSet c, Node node2) {
705709
node1.asExpr() = assign.getSource() and
706710
node2.(PostUpdateNode).getPreUpdateNode().asExpr() = subscript.getBase() and
707711
subscript = assign.getDest() and
708-
subscript.getBase().getType().(InOutType).getObjectType() instanceof ArrayType and
712+
// subscript.getBase().getType().(InOutType).getObjectType() instanceof ArrayType and
709713
c.isSingleton(any(Content::ArrayContent ac))
710714
)
711715
or

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

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,16 @@ edges
1818
| test.swift:54:11:54:18 | call to source() | test.swift:53:1:56:1 | arg[return] |
1919
| test.swift:61:22:61:23 | [post] &... | test.swift:62:15:62:15 | x |
2020
| test.swift:65:16:65:28 | arg1 | test.swift:65:1:70:1 | arg2[return] |
21+
| test.swift:65:33:65:45 | arg2 | test.swift:65:1:70:1 | arg1[return] |
2122
| test.swift:73:18:73:25 | call to source() | test.swift:75:21:75:22 | &... |
2223
| test.swift:73:18:73:25 | call to source() | test.swift:76:15:76:15 | x |
2324
| test.swift:75:21:75:22 | &... | test.swift:65:16:65:28 | arg1 |
2425
| test.swift:75:21:75:22 | &... | test.swift:75:31:75:32 | [post] &... |
26+
| test.swift:75:21:75:22 | [post] &... | test.swift:75:21:75:22 | &... |
27+
| test.swift:75:21:75:22 | [post] &... | test.swift:76:15:76:15 | x |
28+
| test.swift:75:31:75:32 | &... | test.swift:65:33:65:45 | arg2 |
29+
| test.swift:75:31:75:32 | &... | test.swift:75:21:75:22 | [post] &... |
30+
| test.swift:75:31:75:32 | [post] &... | test.swift:75:31:75:32 | &... |
2531
| test.swift:75:31:75:32 | [post] &... | test.swift:77:15:77:15 | y |
2632
| test.swift:80:1:82:1 | arg[return] | test.swift:97:39:97:40 | [post] &... |
2733
| test.swift:81:11:81:18 | call to source() | test.swift:80:1:82:1 | arg[return] |
@@ -279,6 +285,10 @@ edges
279285
| test.swift:628:9:628:16 | call to source() | test.swift:630:10:630:11 | &... |
280286
| test.swift:628:9:628:16 | call to source() | test.swift:631:15:631:15 | x |
281287
| test.swift:630:10:630:11 | &... | test.swift:630:14:630:15 | [post] &... |
288+
| test.swift:630:10:630:11 | [post] &... | test.swift:630:10:630:11 | &... |
289+
| test.swift:630:10:630:11 | [post] &... | test.swift:631:15:631:15 | x |
290+
| test.swift:630:14:630:15 | &... | test.swift:630:10:630:11 | [post] &... |
291+
| test.swift:630:14:630:15 | [post] &... | test.swift:630:14:630:15 | &... |
282292
| test.swift:630:14:630:15 | [post] &... | test.swift:632:15:632:15 | y |
283293
| test.swift:638:5:638:5 | [post] &... [Array element] | test.swift:639:15:639:15 | &... [Array element] |
284294
| test.swift:638:15:638:22 | call to source() | test.swift:638:5:638:5 | [post] &... [Array element] |
@@ -292,6 +302,13 @@ edges
292302
| test.swift:647:15:647:15 | &... [Array element, Array element] | test.swift:647:15:647:23 | ...[...] [Array element] |
293303
| test.swift:647:15:647:23 | &... [Array element] | test.swift:647:15:647:26 | ...[...] |
294304
| test.swift:647:15:647:23 | ...[...] [Array element] | test.swift:647:15:647:23 | &... [Array element] |
305+
| test.swift:650:5:650:5 | [post] &... [Array element, Array element] | test.swift:651:15:651:15 | &... [Array element, Array element] |
306+
| test.swift:650:5:650:14 | [post] &... [Array element] | test.swift:650:5:650:14 | [post] getter for ...[...] [Array element] |
307+
| test.swift:650:5:650:14 | [post] getter for ...[...] [Array element] | test.swift:650:5:650:5 | [post] &... [Array element, Array element] |
308+
| test.swift:650:21:650:28 | call to source() | test.swift:650:5:650:14 | [post] &... [Array element] |
309+
| test.swift:651:15:651:15 | &... [Array element, Array element] | test.swift:651:15:651:24 | ...[...] [Array element] |
310+
| test.swift:651:15:651:24 | &... [Array element] | test.swift:651:15:651:27 | ...[...] |
311+
| test.swift:651:15:651:24 | ...[...] [Array element] | test.swift:651:15:651:24 | &... [Array element] |
295312
| test.swift:662:5:662:5 | [post] &... [Array element] | test.swift:663:15:663:15 | &... [Array element] |
296313
| test.swift:662:17:662:24 | call to source() | test.swift:662:5:662:5 | [post] &... [Array element] |
297314
| test.swift:663:15:663:15 | &... [Array element] | test.swift:663:15:663:21 | ...[...] |
@@ -326,10 +343,14 @@ nodes
326343
| test.swift:54:11:54:18 | call to source() | semmle.label | call to source() |
327344
| test.swift:61:22:61:23 | [post] &... | semmle.label | [post] &... |
328345
| test.swift:62:15:62:15 | x | semmle.label | x |
346+
| test.swift:65:1:70:1 | arg1[return] | semmle.label | arg1[return] |
329347
| test.swift:65:1:70:1 | arg2[return] | semmle.label | arg2[return] |
330348
| test.swift:65:16:65:28 | arg1 | semmle.label | arg1 |
349+
| test.swift:65:33:65:45 | arg2 | semmle.label | arg2 |
331350
| test.swift:73:18:73:25 | call to source() | semmle.label | call to source() |
332351
| test.swift:75:21:75:22 | &... | semmle.label | &... |
352+
| test.swift:75:21:75:22 | [post] &... | semmle.label | [post] &... |
353+
| test.swift:75:31:75:32 | &... | semmle.label | &... |
333354
| test.swift:75:31:75:32 | [post] &... | semmle.label | [post] &... |
334355
| test.swift:76:15:76:15 | x | semmle.label | x |
335356
| test.swift:77:15:77:15 | y | semmle.label | y |
@@ -599,6 +620,8 @@ nodes
599620
| test.swift:626:15:626:15 | y | semmle.label | y |
600621
| test.swift:628:9:628:16 | call to source() | semmle.label | call to source() |
601622
| test.swift:630:10:630:11 | &... | semmle.label | &... |
623+
| test.swift:630:10:630:11 | [post] &... | semmle.label | [post] &... |
624+
| test.swift:630:14:630:15 | &... | semmle.label | &... |
602625
| test.swift:630:14:630:15 | [post] &... | semmle.label | [post] &... |
603626
| test.swift:631:15:631:15 | x | semmle.label | x |
604627
| test.swift:632:15:632:15 | y | semmle.label | y |
@@ -617,12 +640,21 @@ nodes
617640
| test.swift:647:15:647:23 | &... [Array element] | semmle.label | &... [Array element] |
618641
| test.swift:647:15:647:23 | ...[...] [Array element] | semmle.label | ...[...] [Array element] |
619642
| test.swift:647:15:647:26 | ...[...] | semmle.label | ...[...] |
643+
| test.swift:650:5:650:5 | [post] &... [Array element, Array element] | semmle.label | [post] &... [Array element, Array element] |
644+
| test.swift:650:5:650:14 | [post] &... [Array element] | semmle.label | [post] &... [Array element] |
645+
| test.swift:650:5:650:14 | [post] getter for ...[...] [Array element] | semmle.label | [post] getter for ...[...] [Array element] |
646+
| test.swift:650:21:650:28 | call to source() | semmle.label | call to source() |
647+
| test.swift:651:15:651:15 | &... [Array element, Array element] | semmle.label | &... [Array element, Array element] |
648+
| test.swift:651:15:651:24 | &... [Array element] | semmle.label | &... [Array element] |
649+
| test.swift:651:15:651:24 | ...[...] [Array element] | semmle.label | ...[...] [Array element] |
650+
| test.swift:651:15:651:27 | ...[...] | semmle.label | ...[...] |
620651
| test.swift:662:5:662:5 | [post] &... [Array element] | semmle.label | [post] &... [Array element] |
621652
| test.swift:662:17:662:24 | call to source() | semmle.label | call to source() |
622653
| test.swift:663:15:663:15 | &... [Array element] | semmle.label | &... [Array element] |
623654
| test.swift:663:15:663:21 | ...[...] | semmle.label | ...[...] |
624655
subpaths
625656
| test.swift:75:21:75:22 | &... | test.swift:65:16:65:28 | arg1 | test.swift:65:1:70:1 | arg2[return] | test.swift:75:31:75:32 | [post] &... |
657+
| test.swift:75:31:75:32 | &... | test.swift:65:33:65:45 | arg2 | test.swift:65:1:70:1 | arg1[return] | test.swift:75:21:75:22 | [post] &... |
626658
| test.swift:114:19:114:19 | arg | test.swift:109:9:109:14 | arg | test.swift:110:12:110:12 | arg | test.swift:114:12:114:22 | call to ... |
627659
| test.swift:114:19:114:19 | arg | test.swift:123:10:123:13 | i | test.swift:124:16:124:16 | i | test.swift:114:12:114:22 | call to ... |
628660
| test.swift:119:31:119:31 | x | test.swift:113:14:113:19 | arg | test.swift:114:12:114:22 | call to ... | test.swift:119:18:119:44 | call to forward(arg:lambda:) |
@@ -740,4 +772,5 @@ subpaths
740772
| test.swift:639:15:639:21 | ...[...] | test.swift:638:15:638:22 | call to source() | test.swift:639:15:639:21 | ...[...] | result |
741773
| test.swift:643:15:643:21 | ...[...] | test.swift:642:17:642:24 | call to source() | test.swift:643:15:643:21 | ...[...] | result |
742774
| test.swift:647:15:647:26 | ...[...] | test.swift:645:20:645:27 | call to source() | test.swift:647:15:647:26 | ...[...] | result |
775+
| test.swift:651:15:651:27 | ...[...] | test.swift:650:21:650:28 | call to source() | test.swift:651:15:651:27 | ...[...] | result |
743776
| test.swift:663:15:663:21 | ...[...] | test.swift:662:17:662:24 | call to source() | test.swift:663:15:663:21 | ...[...] | result |
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
11
failures
22
testFailures
3+
| test.swift:651:15:651:27 | ...[...] | Fixed missing result:flow=650 |

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

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,9 @@
4141
| test.swift:60:15:60:15 | [post] x | test.swift:61:23:61:23 | x |
4242
| test.swift:60:15:60:15 | x | test.swift:61:23:61:23 | x |
4343
| test.swift:61:22:61:23 | &... | test.swift:62:15:62:15 | x |
44+
| test.swift:61:22:61:23 | [post] &... | test.swift:61:23:61:23 | [post] x |
4445
| test.swift:61:22:61:23 | [post] &... | test.swift:62:15:62:15 | x |
46+
| test.swift:61:23:61:23 | [post] x | test.swift:61:22:61:23 | &... |
4547
| test.swift:61:23:61:23 | x | test.swift:61:22:61:23 | &... |
4648
| test.swift:65:16:65:28 | SSA def(arg1) | test.swift:66:21:66:21 | arg1 |
4749
| test.swift:65:16:65:28 | arg1 | test.swift:65:16:65:28 | SSA def(arg1) |
@@ -64,10 +66,14 @@
6466
| test.swift:74:9:74:12 | ... as ... | test.swift:74:9:74:9 | y |
6567
| test.swift:74:18:74:18 | 0 | test.swift:74:9:74:12 | ... as ... |
6668
| test.swift:75:21:75:22 | &... | test.swift:76:15:76:15 | x |
69+
| test.swift:75:21:75:22 | [post] &... | test.swift:75:22:75:22 | [post] x |
6770
| test.swift:75:21:75:22 | [post] &... | test.swift:76:15:76:15 | x |
71+
| test.swift:75:22:75:22 | [post] x | test.swift:75:21:75:22 | &... |
6872
| test.swift:75:22:75:22 | x | test.swift:75:21:75:22 | &... |
6973
| test.swift:75:31:75:32 | &... | test.swift:77:15:77:15 | y |
74+
| test.swift:75:31:75:32 | [post] &... | test.swift:75:32:75:32 | [post] y |
7075
| test.swift:75:31:75:32 | [post] &... | test.swift:77:15:77:15 | y |
76+
| test.swift:75:32:75:32 | [post] y | test.swift:75:31:75:32 | &... |
7177
| test.swift:75:32:75:32 | y | test.swift:75:31:75:32 | &... |
7278
| test.swift:81:5:81:18 | SSA def(arg) | test.swift:80:1:82:1 | arg[return] |
7379
| test.swift:81:11:81:18 | call to source() | test.swift:81:5:81:18 | SSA def(arg) |
@@ -87,7 +93,9 @@
8793
| test.swift:96:19:96:19 | [post] x | test.swift:97:40:97:40 | x |
8894
| test.swift:96:19:96:19 | x | test.swift:97:40:97:40 | x |
8995
| test.swift:97:39:97:40 | &... | test.swift:98:19:98:19 | x |
96+
| test.swift:97:39:97:40 | [post] &... | test.swift:97:40:97:40 | [post] x |
9097
| test.swift:97:39:97:40 | [post] &... | test.swift:98:19:98:19 | x |
98+
| test.swift:97:40:97:40 | [post] x | test.swift:97:39:97:40 | &... |
9199
| test.swift:97:40:97:40 | x | test.swift:97:39:97:40 | &... |
92100
| test.swift:102:13:102:13 | SSA def(x) | test.swift:103:19:103:19 | x |
93101
| test.swift:102:13:102:13 | x | test.swift:102:13:102:13 | SSA def(x) |
@@ -96,7 +104,9 @@
96104
| test.swift:103:19:103:19 | [post] x | test.swift:104:41:104:41 | x |
97105
| test.swift:103:19:103:19 | x | test.swift:104:41:104:41 | x |
98106
| test.swift:104:40:104:41 | &... | test.swift:105:19:105:19 | x |
107+
| test.swift:104:40:104:41 | [post] &... | test.swift:104:41:104:41 | [post] x |
99108
| test.swift:104:40:104:41 | [post] &... | test.swift:105:19:105:19 | x |
109+
| test.swift:104:41:104:41 | [post] x | test.swift:104:40:104:41 | &... |
100110
| test.swift:104:41:104:41 | x | test.swift:104:40:104:41 | &... |
101111
| test.swift:109:9:109:14 | SSA def(arg) | test.swift:110:12:110:12 | arg |
102112
| test.swift:109:9:109:14 | arg | test.swift:109:9:109:14 | SSA def(arg) |
@@ -600,6 +610,8 @@
600610
| test.swift:560:7:560:7 | SSA def(n) | test.swift:561:36:561:36 | n |
601611
| test.swift:560:7:560:7 | n | test.swift:560:7:560:7 | SSA def(n) |
602612
| test.swift:560:11:560:11 | 0 | test.swift:560:7:560:7 | n |
613+
| test.swift:561:35:561:36 | [post] &... | test.swift:561:36:561:36 | [post] n |
614+
| test.swift:561:36:561:36 | [post] n | test.swift:561:35:561:36 | &... |
603615
| test.swift:561:36:561:36 | n | test.swift:561:35:561:36 | &... |
604616
| test.swift:565:7:565:7 | self | test.swift:565:7:565:7 | SSA def(self) |
605617
| test.swift:567:3:567:3 | SSA def(self) | test.swift:568:5:568:5 | self |
@@ -680,63 +692,96 @@
680692
| test.swift:629:5:629:9 | SSA def(y) | test.swift:630:15:630:15 | y |
681693
| test.swift:629:9:629:9 | 0 | test.swift:629:5:629:9 | SSA def(y) |
682694
| test.swift:630:10:630:11 | &... | test.swift:631:15:631:15 | x |
695+
| test.swift:630:10:630:11 | [post] &... | test.swift:630:11:630:11 | [post] x |
683696
| test.swift:630:10:630:11 | [post] &... | test.swift:631:15:631:15 | x |
697+
| test.swift:630:11:630:11 | [post] x | test.swift:630:10:630:11 | &... |
684698
| test.swift:630:11:630:11 | x | test.swift:630:10:630:11 | &... |
685699
| test.swift:630:14:630:15 | &... | test.swift:632:15:632:15 | y |
700+
| test.swift:630:14:630:15 | [post] &... | test.swift:630:15:630:15 | [post] y |
686701
| test.swift:630:14:630:15 | [post] &... | test.swift:632:15:632:15 | y |
702+
| test.swift:630:15:630:15 | [post] y | test.swift:630:14:630:15 | &... |
687703
| test.swift:630:15:630:15 | y | test.swift:630:14:630:15 | &... |
688704
| test.swift:636:9:636:9 | SSA def(arr1) | test.swift:637:15:637:15 | arr1 |
689705
| test.swift:636:9:636:9 | arr1 | test.swift:636:9:636:9 | SSA def(arr1) |
690706
| test.swift:636:16:636:22 | [...] | test.swift:636:9:636:9 | arr1 |
691707
| test.swift:637:15:637:15 | &... | test.swift:638:5:638:5 | arr1 |
708+
| test.swift:637:15:637:15 | [post] &... | test.swift:637:15:637:15 | [post] arr1 |
692709
| test.swift:637:15:637:15 | [post] &... | test.swift:638:5:638:5 | arr1 |
710+
| test.swift:637:15:637:15 | [post] arr1 | test.swift:637:15:637:15 | &... |
693711
| test.swift:637:15:637:15 | arr1 | test.swift:637:15:637:15 | &... |
694712
| test.swift:638:5:638:5 | &... | test.swift:639:15:639:15 | arr1 |
713+
| test.swift:638:5:638:5 | [post] &... | test.swift:638:5:638:5 | [post] arr1 |
695714
| test.swift:638:5:638:5 | [post] &... | test.swift:639:15:639:15 | arr1 |
715+
| test.swift:638:5:638:5 | [post] arr1 | test.swift:638:5:638:5 | &... |
696716
| test.swift:638:5:638:5 | arr1 | test.swift:638:5:638:5 | &... |
697717
| test.swift:639:15:639:15 | &... | test.swift:640:15:640:15 | arr1 |
718+
| test.swift:639:15:639:15 | [post] &... | test.swift:639:15:639:15 | [post] arr1 |
698719
| test.swift:639:15:639:15 | [post] &... | test.swift:640:15:640:15 | arr1 |
720+
| test.swift:639:15:639:15 | [post] arr1 | test.swift:639:15:639:15 | &... |
699721
| test.swift:639:15:639:15 | arr1 | test.swift:639:15:639:15 | &... |
700722
| test.swift:642:9:642:9 | SSA def(arr2) | test.swift:643:15:643:15 | arr2 |
701723
| test.swift:642:9:642:9 | arr2 | test.swift:642:9:642:9 | SSA def(arr2) |
702724
| test.swift:642:16:642:25 | [...] | test.swift:642:9:642:9 | arr2 |
703725
| test.swift:643:15:643:15 | &... | test.swift:654:16:654:16 | arr2 |
726+
| test.swift:643:15:643:15 | [post] &... | test.swift:643:15:643:15 | [post] arr2 |
704727
| test.swift:643:15:643:15 | [post] &... | test.swift:654:16:654:16 | arr2 |
728+
| test.swift:643:15:643:15 | [post] arr2 | test.swift:643:15:643:15 | &... |
705729
| test.swift:643:15:643:15 | arr2 | test.swift:643:15:643:15 | &... |
706730
| test.swift:645:9:645:9 | SSA def(matrix) | test.swift:646:15:646:15 | matrix |
707731
| test.swift:645:9:645:9 | matrix | test.swift:645:9:645:9 | SSA def(matrix) |
708732
| test.swift:645:18:645:29 | [...] | test.swift:645:9:645:9 | matrix |
709733
| test.swift:646:15:646:15 | &... | test.swift:647:15:647:15 | matrix |
734+
| test.swift:646:15:646:15 | [post] &... | test.swift:646:15:646:15 | [post] matrix |
710735
| test.swift:646:15:646:15 | [post] &... | test.swift:647:15:647:15 | matrix |
736+
| test.swift:646:15:646:15 | [post] matrix | test.swift:646:15:646:15 | &... |
711737
| test.swift:646:15:646:15 | matrix | test.swift:646:15:646:15 | &... |
738+
| test.swift:647:15:647:15 | [post] &... | test.swift:647:15:647:15 | [post] matrix |
739+
| test.swift:647:15:647:15 | [post] matrix | test.swift:647:15:647:15 | &... |
712740
| test.swift:647:15:647:15 | matrix | test.swift:647:15:647:15 | &... |
713741
| test.swift:647:15:647:23 | ...[...] | test.swift:647:15:647:23 | &... |
742+
| test.swift:647:15:647:23 | [post] &... | test.swift:647:15:647:23 | [post] getter for ...[...] |
714743
| test.swift:649:9:649:9 | SSA def(matrix2) | test.swift:650:5:650:5 | matrix2 |
715744
| test.swift:649:9:649:9 | matrix2 | test.swift:649:9:649:9 | SSA def(matrix2) |
716745
| test.swift:649:19:649:23 | [...] | test.swift:649:9:649:9 | matrix2 |
717746
| test.swift:650:5:650:5 | &... | test.swift:651:15:651:15 | matrix2 |
747+
| test.swift:650:5:650:5 | [post] &... | test.swift:650:5:650:5 | [post] matrix2 |
718748
| test.swift:650:5:650:5 | [post] &... | test.swift:651:15:651:15 | matrix2 |
749+
| test.swift:650:5:650:5 | [post] matrix2 | test.swift:650:5:650:5 | &... |
719750
| test.swift:650:5:650:5 | matrix2 | test.swift:650:5:650:5 | &... |
720751
| test.swift:650:5:650:14 | ...[...] | test.swift:650:5:650:14 | &... |
752+
| test.swift:650:5:650:14 | [post] &... | test.swift:650:5:650:14 | [post] getter for ...[...] |
753+
| test.swift:651:15:651:15 | [post] &... | test.swift:651:15:651:15 | [post] matrix2 |
754+
| test.swift:651:15:651:15 | [post] matrix2 | test.swift:651:15:651:15 | &... |
721755
| test.swift:651:15:651:15 | matrix2 | test.swift:651:15:651:15 | &... |
722756
| test.swift:651:15:651:24 | ...[...] | test.swift:651:15:651:24 | &... |
757+
| test.swift:651:15:651:24 | [post] &... | test.swift:651:15:651:24 | [post] getter for ...[...] |
723758
| test.swift:653:9:653:9 | SSA def(arr3) | test.swift:654:23:654:23 | arr3 |
724759
| test.swift:653:9:653:9 | arr3 | test.swift:653:9:653:9 | SSA def(arr3) |
725760
| test.swift:653:16:653:18 | [...] | test.swift:653:9:653:9 | arr3 |
726761
| test.swift:654:9:654:9 | SSA def(arr4) | test.swift:656:15:656:15 | arr4 |
727762
| test.swift:654:9:654:9 | arr4 | test.swift:654:9:654:9 | SSA def(arr4) |
728763
| test.swift:654:16:654:23 | ... .+(_:_:) ... | test.swift:654:9:654:9 | arr4 |
729764
| test.swift:654:23:654:23 | arr3 | test.swift:655:15:655:15 | arr3 |
765+
| test.swift:655:15:655:15 | [post] &... | test.swift:655:15:655:15 | [post] arr3 |
766+
| test.swift:655:15:655:15 | [post] arr3 | test.swift:655:15:655:15 | &... |
730767
| test.swift:655:15:655:15 | arr3 | test.swift:655:15:655:15 | &... |
768+
| test.swift:656:15:656:15 | [post] &... | test.swift:656:15:656:15 | [post] arr4 |
769+
| test.swift:656:15:656:15 | [post] arr4 | test.swift:656:15:656:15 | &... |
731770
| test.swift:656:15:656:15 | arr4 | test.swift:656:15:656:15 | &... |
732771
| test.swift:658:9:658:9 | SSA def(arr5) | test.swift:659:15:659:15 | arr5 |
733772
| test.swift:658:9:658:9 | arr5 | test.swift:658:9:658:9 | SSA def(arr5) |
734773
| test.swift:658:16:658:51 | call to Array<Element>.init(repeating:count:) | test.swift:658:9:658:9 | arr5 |
774+
| test.swift:659:15:659:15 | [post] &... | test.swift:659:15:659:15 | [post] arr5 |
775+
| test.swift:659:15:659:15 | [post] arr5 | test.swift:659:15:659:15 | &... |
735776
| test.swift:659:15:659:15 | arr5 | test.swift:659:15:659:15 | &... |
736777
| test.swift:661:9:661:9 | SSA def(arr6) | test.swift:662:5:662:5 | arr6 |
737778
| test.swift:661:9:661:9 | arr6 | test.swift:661:9:661:9 | SSA def(arr6) |
738779
| test.swift:661:16:661:22 | [...] | test.swift:661:9:661:9 | arr6 |
739780
| test.swift:662:5:662:5 | &... | test.swift:663:15:663:15 | arr6 |
781+
| test.swift:662:5:662:5 | [post] &... | test.swift:662:5:662:5 | [post] arr6 |
740782
| test.swift:662:5:662:5 | [post] &... | test.swift:663:15:663:15 | arr6 |
783+
| test.swift:662:5:662:5 | [post] arr6 | test.swift:662:5:662:5 | &... |
741784
| test.swift:662:5:662:5 | arr6 | test.swift:662:5:662:5 | &... |
785+
| test.swift:663:15:663:15 | [post] &... | test.swift:663:15:663:15 | [post] arr6 |
786+
| test.swift:663:15:663:15 | [post] arr6 | test.swift:663:15:663:15 | &... |
742787
| test.swift:663:15:663:15 | arr6 | test.swift:663:15:663:15 | &... |

0 commit comments

Comments
 (0)