Swift: Hide InOutExpr

This commit is contained in:
Robert Marsh
2023-07-26 18:42:27 +00:00
parent e54341a170
commit bf5ba37348
7 changed files with 58 additions and 121 deletions

View File

@@ -1235,14 +1235,6 @@ module Exprs {
}
}
private class InOutTree extends AstStandardPostOrderTree {
override InOutExpr ast;
final override ControlFlowElement getChildElement(int i) {
i = 0 and result.asAstNode() = ast.getSubExpr().getFullyConverted()
}
}
private class SubscriptTree extends AstControlFlowTree {
override SubscriptExpr ast;
@@ -1749,7 +1741,7 @@ module Exprs {
module Conversions {
class ConversionOrIdentity =
Synth::TIdentityExpr or Synth::TExplicitCastExpr or Synth::TImplicitConversionExpr;
Synth::TIdentityExpr or Synth::TExplicitCastExpr or Synth::TImplicitConversionExpr or Synth::TInOutExpr;
abstract class ConversionOrIdentityTree extends AstStandardPostOrderTree {
ConversionOrIdentityTree() { ast instanceof ConversionOrIdentity }
@@ -1780,6 +1772,11 @@ module Exprs {
override predicate convertsFrom(Expr e) { ast.convertsFrom(e) }
}
private class InOutTree extends ConversionOrIdentityTree {
override InOutExpr ast;
override predicate convertsFrom(Expr e) { ast.convertsFrom(e) }
}
}
}

View File

@@ -112,7 +112,7 @@ private module Cached {
[
any(Argument arg | modifiable(arg)).getExpr(), any(MemberRefExpr ref).getBase(),
any(ApplyExpr apply).getQualifier(), any(TupleElementExpr te).getSubExpr(),
any(SubscriptExpr se).getBase(), any(InOutExpr ioe).getSubExpr()
any(SubscriptExpr se).getBase()
])
}
@@ -709,7 +709,7 @@ predicate storeStep(Node node1, ContentSet c, Node node2) {
node1.asExpr() = assign.getSource() and
node2.(PostUpdateNode).getPreUpdateNode().asExpr() = subscript.getBase() and
subscript = assign.getDest() and
subscript.getBase().getType().(InOutType).getObjectType() instanceof ArrayType and
subscript.getBase().getType() instanceof ArrayType and
c.isSingleton(any(Content::ArrayContent ac))
)
or
@@ -785,7 +785,7 @@ predicate readStep(Node node1, ContentSet c, Node node2) {
exists(SubscriptExpr subscript |
subscript.getBase() = node1.asExpr() and
subscript = node2.asExpr() and
subscript.getBase().getType().(InOutType).getObjectType() instanceof ArrayType and
subscript.getBase().getType() instanceof ArrayType and
c.isSingleton(any(Content::ArrayContent ac))
)
}

View File

@@ -2,4 +2,6 @@ private import codeql.swift.generated.expr.InOutExpr
class InOutExpr extends Generated::InOutExpr {
override string toString() { result = "&..." }
override predicate convertsFrom(Expr e) { e = this.getImmediateSubExpr() }
}

View File

@@ -8,8 +8,8 @@ private import codeql.swift.dataflow.ExternalFlow
/**
* An instance of the `Array` type.
*/
class ArrayType extends BoundGenericType {
ArrayType() { this.getName().matches("Array<%") }
class ArrayType extends Type {
ArrayType() { this.getName().matches("Array<%") or this.getName().matches("[%]") }
}
/**

View File

@@ -14,28 +14,22 @@ edges
| test.swift:29:26:29:29 | y | test.swift:31:15:31:15 | y |
| test.swift:35:12:35:19 | call to source() | test.swift:39:15:39:29 | call to callee_source() |
| test.swift:43:19:43:26 | call to source() | test.swift:50:15:50:15 | t |
| test.swift:53:1:56:1 | arg[return] | test.swift:61:22:61:23 | [post] &... |
| test.swift:53:1:56:1 | arg[return] | test.swift:61:23:61:23 | [post] x |
| test.swift:54:11:54:18 | call to source() | test.swift:53:1:56:1 | arg[return] |
| test.swift:61:22:61:23 | [post] &... | test.swift:62:15:62:15 | x |
| test.swift:61:23:61:23 | [post] x | test.swift:62:15:62:15 | x |
| test.swift:65:16:65:28 | arg1 | test.swift:65:1:70:1 | arg2[return] |
| test.swift:65:33:65:45 | arg2 | test.swift:65:1:70:1 | arg1[return] |
| test.swift:73:18:73:25 | call to source() | test.swift:75:21:75:22 | &... |
| test.swift:73:18:73:25 | call to source() | test.swift:75:22:75:22 | x |
| test.swift:73:18:73:25 | call to source() | test.swift:76:15:76:15 | x |
| test.swift:75:21:75:22 | &... | test.swift:65:16:65:28 | arg1 |
| test.swift:75:21:75:22 | &... | test.swift:75:31:75:32 | [post] &... |
| test.swift:75:21:75:22 | [post] &... | test.swift:75:21:75:22 | &... |
| test.swift:75:21:75:22 | [post] &... | test.swift:76:15:76:15 | x |
| test.swift:75:31:75:32 | &... | test.swift:65:33:65:45 | arg2 |
| test.swift:75:31:75:32 | &... | test.swift:75:21:75:22 | [post] &... |
| test.swift:75:31:75:32 | [post] &... | test.swift:75:31:75:32 | &... |
| test.swift:75:31:75:32 | [post] &... | test.swift:77:15:77:15 | y |
| test.swift:80:1:82:1 | arg[return] | test.swift:97:39:97:40 | [post] &... |
| test.swift:75:22:75:22 | x | test.swift:65:16:65:28 | arg1 |
| test.swift:75:22:75:22 | x | test.swift:75:32:75:32 | [post] y |
| test.swift:75:32:75:32 | [post] y | test.swift:77:15:77:15 | y |
| test.swift:80:1:82:1 | arg[return] | test.swift:97:40:97:40 | [post] x |
| test.swift:81:11:81:18 | call to source() | test.swift:80:1:82:1 | arg[return] |
| test.swift:84:1:91:1 | arg[return] | test.swift:104:40:104:41 | [post] &... |
| test.swift:84:1:91:1 | arg[return] | test.swift:104:41:104:41 | [post] x |
| test.swift:86:15:86:22 | call to source() | test.swift:84:1:91:1 | arg[return] |
| test.swift:89:15:89:22 | call to source() | test.swift:84:1:91:1 | arg[return] |
| test.swift:97:39:97:40 | [post] &... | test.swift:98:19:98:19 | x |
| test.swift:104:40:104:41 | [post] &... | test.swift:105:19:105:19 | x |
| test.swift:97:40:97:40 | [post] x | test.swift:98:19:98:19 | x |
| test.swift:104:41:104:41 | [post] x | test.swift:105:19:105:19 | x |
| test.swift:109:9:109:14 | arg | test.swift:110:12:110:12 | arg |
| test.swift:113:14:113:19 | arg | test.swift:114:19:114:19 | arg |
| test.swift:113:14:113:19 | arg | test.swift:114:19:114:19 | arg |
@@ -282,36 +276,29 @@ edges
| test.swift:599:15:599:15 | array [Array element] | test.swift:598:13:598:22 | enter #keyPath(...) [Array element] |
| test.swift:599:15:599:15 | array [Array element] | test.swift:599:15:599:31 | \\...[...] |
| test.swift:618:13:618:20 | call to source() | test.swift:626:15:626:15 | y |
| test.swift:628:9:628:16 | call to source() | test.swift:630:10:630:11 | &... |
| test.swift:628:9:628:16 | call to source() | test.swift:630:11:630:11 | x |
| test.swift:628:9:628:16 | call to source() | test.swift:631:15:631:15 | x |
| test.swift:630:10:630:11 | &... | test.swift:630:14:630:15 | [post] &... |
| test.swift:630:10:630:11 | [post] &... | test.swift:630:10:630:11 | &... |
| test.swift:630:10:630:11 | [post] &... | test.swift:631:15:631:15 | x |
| test.swift:630:14:630:15 | &... | test.swift:630:10:630:11 | [post] &... |
| test.swift:630:14:630:15 | [post] &... | test.swift:630:14:630:15 | &... |
| test.swift:630:14:630:15 | [post] &... | test.swift:632:15:632:15 | y |
| test.swift:638:5:638:5 | [post] &... [Array element] | test.swift:639:15:639:15 | &... [Array element] |
| test.swift:638:15:638:22 | call to source() | test.swift:638:5:638:5 | [post] &... [Array element] |
| test.swift:639:15:639:15 | &... [Array element] | test.swift:639:15:639:21 | ...[...] |
| test.swift:642:16:642:25 | [...] [Array element] | test.swift:643:15:643:15 | &... [Array element] |
| test.swift:630:11:630:11 | x | test.swift:630:15:630:15 | [post] y |
| test.swift:630:15:630:15 | [post] y | test.swift:632:15:632:15 | y |
| test.swift:638:5:638:5 | [post] arr1 [Array element] | test.swift:639:15:639:15 | arr1 [Array element] |
| test.swift:638:15:638:22 | call to source() | test.swift:638:5:638:5 | [post] arr1 [Array element] |
| test.swift:639:15:639:15 | arr1 [Array element] | test.swift:639:15:639:21 | ...[...] |
| test.swift:642:16:642:25 | [...] [Array element] | test.swift:643:15:643:15 | arr2 [Array element] |
| test.swift:642:17:642:24 | call to source() | test.swift:642:16:642:25 | [...] [Array element] |
| test.swift:643:15:643:15 | &... [Array element] | test.swift:643:15:643:21 | ...[...] |
| test.swift:645:18:645:29 | [...] [Array element, Array element] | test.swift:647:15:647:15 | &... [Array element, Array element] |
| test.swift:643:15:643:15 | arr2 [Array element] | test.swift:643:15:643:21 | ...[...] |
| test.swift:645:18:645:29 | [...] [Array element, Array element] | test.swift:647:15:647:15 | matrix [Array element, Array element] |
| test.swift:645:19:645:28 | [...] [Array element] | test.swift:645:18:645:29 | [...] [Array element, Array element] |
| test.swift:645:20:645:27 | call to source() | test.swift:645:19:645:28 | [...] [Array element] |
| test.swift:647:15:647:15 | &... [Array element, Array element] | test.swift:647:15:647:23 | ...[...] [Array element] |
| test.swift:647:15:647:23 | &... [Array element] | test.swift:647:15:647:26 | ...[...] |
| test.swift:647:15:647:23 | ...[...] [Array element] | test.swift:647:15:647:23 | &... [Array element] |
| test.swift:650:5:650:5 | [post] &... [Array element, Array element] | test.swift:651:15:651:15 | &... [Array element, Array element] |
| test.swift:650:5:650:14 | [post] &... [Array element] | test.swift:650:5:650:14 | [post] getter for ...[...] [Array element] |
| test.swift:650:5:650:14 | [post] getter for ...[...] [Array element] | test.swift:650:5:650:5 | [post] &... [Array element, Array element] |
| test.swift:650:21:650:28 | call to source() | test.swift:650:5:650:14 | [post] &... [Array element] |
| test.swift:651:15:651:15 | &... [Array element, Array element] | test.swift:651:15:651:24 | ...[...] [Array element] |
| test.swift:651:15:651:24 | &... [Array element] | test.swift:651:15:651:27 | ...[...] |
| test.swift:651:15:651:24 | ...[...] [Array element] | test.swift:651:15:651:24 | &... [Array element] |
| test.swift:662:5:662:5 | [post] &... [Array element] | test.swift:663:15:663:15 | &... [Array element] |
| test.swift:662:17:662:24 | call to source() | test.swift:662:5:662:5 | [post] &... [Array element] |
| test.swift:663:15:663:15 | &... [Array element] | test.swift:663:15:663:21 | ...[...] |
| test.swift:647:15:647:15 | matrix [Array element, Array element] | test.swift:647:15:647:23 | ...[...] [Array element] |
| test.swift:647:15:647:23 | ...[...] [Array element] | test.swift:647:15:647:26 | ...[...] |
| test.swift:650:5:650:5 | [post] matrix2 [Array element, Array element] | test.swift:651:15:651:15 | matrix2 [Array element, Array element] |
| test.swift:650:5:650:14 | [post] getter for ...[...] [Array element] | test.swift:650:5:650:5 | [post] matrix2 [Array element, Array element] |
| test.swift:650:21:650:28 | call to source() | test.swift:650:5:650:14 | [post] getter for ...[...] [Array element] |
| test.swift:651:15:651:15 | matrix2 [Array element, Array element] | test.swift:651:15:651:24 | ...[...] [Array element] |
| test.swift:651:15:651:24 | ...[...] [Array element] | test.swift:651:15:651:27 | ...[...] |
| test.swift:662:5:662:5 | [post] arr6 [Array element] | test.swift:663:15:663:15 | arr6 [Array element] |
| test.swift:662:17:662:24 | call to source() | test.swift:662:5:662:5 | [post] arr6 [Array element] |
| test.swift:663:15:663:15 | arr6 [Array element] | test.swift:663:15:663:21 | ...[...] |
nodes
| file://:0:0:0:0 | .a [x] | semmle.label | .a [x] |
| file://:0:0:0:0 | .str | semmle.label | .str |
@@ -341,17 +328,13 @@ nodes
| test.swift:50:15:50:15 | t | semmle.label | t |
| test.swift:53:1:56:1 | arg[return] | semmle.label | arg[return] |
| test.swift:54:11:54:18 | call to source() | semmle.label | call to source() |
| test.swift:61:22:61:23 | [post] &... | semmle.label | [post] &... |
| test.swift:61:23:61:23 | [post] x | semmle.label | [post] x |
| test.swift:62:15:62:15 | x | semmle.label | x |
| test.swift:65:1:70:1 | arg1[return] | semmle.label | arg1[return] |
| test.swift:65:1:70:1 | arg2[return] | semmle.label | arg2[return] |
| test.swift:65:16:65:28 | arg1 | semmle.label | arg1 |
| test.swift:65:33:65:45 | arg2 | semmle.label | arg2 |
| test.swift:73:18:73:25 | call to source() | semmle.label | call to source() |
| test.swift:75:21:75:22 | &... | semmle.label | &... |
| test.swift:75:21:75:22 | [post] &... | semmle.label | [post] &... |
| test.swift:75:31:75:32 | &... | semmle.label | &... |
| test.swift:75:31:75:32 | [post] &... | semmle.label | [post] &... |
| test.swift:75:22:75:22 | x | semmle.label | x |
| test.swift:75:32:75:32 | [post] y | semmle.label | [post] y |
| test.swift:76:15:76:15 | x | semmle.label | x |
| test.swift:77:15:77:15 | y | semmle.label | y |
| test.swift:80:1:82:1 | arg[return] | semmle.label | arg[return] |
@@ -359,9 +342,9 @@ nodes
| test.swift:84:1:91:1 | arg[return] | semmle.label | arg[return] |
| test.swift:86:15:86:22 | call to source() | semmle.label | call to source() |
| test.swift:89:15:89:22 | call to source() | semmle.label | call to source() |
| test.swift:97:39:97:40 | [post] &... | semmle.label | [post] &... |
| test.swift:97:40:97:40 | [post] x | semmle.label | [post] x |
| test.swift:98:19:98:19 | x | semmle.label | x |
| test.swift:104:40:104:41 | [post] &... | semmle.label | [post] &... |
| test.swift:104:41:104:41 | [post] x | semmle.label | [post] x |
| test.swift:105:19:105:19 | x | semmle.label | x |
| test.swift:109:9:109:14 | arg | semmle.label | arg |
| test.swift:110:12:110:12 | arg | semmle.label | arg |
@@ -619,42 +602,36 @@ nodes
| test.swift:618:13:618:20 | call to source() | semmle.label | call to source() |
| test.swift:626:15:626:15 | y | semmle.label | y |
| test.swift:628:9:628:16 | call to source() | semmle.label | call to source() |
| test.swift:630:10:630:11 | &... | semmle.label | &... |
| test.swift:630:10:630:11 | [post] &... | semmle.label | [post] &... |
| test.swift:630:14:630:15 | &... | semmle.label | &... |
| test.swift:630:14:630:15 | [post] &... | semmle.label | [post] &... |
| test.swift:630:11:630:11 | x | semmle.label | x |
| test.swift:630:15:630:15 | [post] y | semmle.label | [post] y |
| test.swift:631:15:631:15 | x | semmle.label | x |
| test.swift:632:15:632:15 | y | semmle.label | y |
| test.swift:638:5:638:5 | [post] &... [Array element] | semmle.label | [post] &... [Array element] |
| test.swift:638:5:638:5 | [post] arr1 [Array element] | semmle.label | [post] arr1 [Array element] |
| test.swift:638:15:638:22 | call to source() | semmle.label | call to source() |
| test.swift:639:15:639:15 | &... [Array element] | semmle.label | &... [Array element] |
| test.swift:639:15:639:15 | arr1 [Array element] | semmle.label | arr1 [Array element] |
| test.swift:639:15:639:21 | ...[...] | semmle.label | ...[...] |
| test.swift:642:16:642:25 | [...] [Array element] | semmle.label | [...] [Array element] |
| test.swift:642:17:642:24 | call to source() | semmle.label | call to source() |
| test.swift:643:15:643:15 | &... [Array element] | semmle.label | &... [Array element] |
| test.swift:643:15:643:15 | arr2 [Array element] | semmle.label | arr2 [Array element] |
| test.swift:643:15:643:21 | ...[...] | semmle.label | ...[...] |
| test.swift:645:18:645:29 | [...] [Array element, Array element] | semmle.label | [...] [Array element, Array element] |
| test.swift:645:19:645:28 | [...] [Array element] | semmle.label | [...] [Array element] |
| test.swift:645:20:645:27 | call to source() | semmle.label | call to source() |
| test.swift:647:15:647:15 | &... [Array element, Array element] | semmle.label | &... [Array element, Array element] |
| test.swift:647:15:647:23 | &... [Array element] | semmle.label | &... [Array element] |
| test.swift:647:15:647:15 | matrix [Array element, Array element] | semmle.label | matrix [Array element, Array element] |
| test.swift:647:15:647:23 | ...[...] [Array element] | semmle.label | ...[...] [Array element] |
| test.swift:647:15:647:26 | ...[...] | semmle.label | ...[...] |
| test.swift:650:5:650:5 | [post] &... [Array element, Array element] | semmle.label | [post] &... [Array element, Array element] |
| test.swift:650:5:650:14 | [post] &... [Array element] | semmle.label | [post] &... [Array element] |
| test.swift:650:5:650:5 | [post] matrix2 [Array element, Array element] | semmle.label | [post] matrix2 [Array element, Array element] |
| test.swift:650:5:650:14 | [post] getter for ...[...] [Array element] | semmle.label | [post] getter for ...[...] [Array element] |
| test.swift:650:21:650:28 | call to source() | semmle.label | call to source() |
| test.swift:651:15:651:15 | &... [Array element, Array element] | semmle.label | &... [Array element, Array element] |
| test.swift:651:15:651:24 | &... [Array element] | semmle.label | &... [Array element] |
| test.swift:651:15:651:15 | matrix2 [Array element, Array element] | semmle.label | matrix2 [Array element, Array element] |
| test.swift:651:15:651:24 | ...[...] [Array element] | semmle.label | ...[...] [Array element] |
| test.swift:651:15:651:27 | ...[...] | semmle.label | ...[...] |
| test.swift:662:5:662:5 | [post] &... [Array element] | semmle.label | [post] &... [Array element] |
| test.swift:662:5:662:5 | [post] arr6 [Array element] | semmle.label | [post] arr6 [Array element] |
| test.swift:662:17:662:24 | call to source() | semmle.label | call to source() |
| test.swift:663:15:663:15 | &... [Array element] | semmle.label | &... [Array element] |
| test.swift:663:15:663:15 | arr6 [Array element] | semmle.label | arr6 [Array element] |
| test.swift:663:15:663:21 | ...[...] | semmle.label | ...[...] |
subpaths
| 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] &... |
| 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] &... |
| test.swift:75:22:75:22 | x | test.swift:65:16:65:28 | arg1 | test.swift:65:1:70:1 | arg2[return] | test.swift:75:32:75:32 | [post] y |
| 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 ... |
| 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 ... |
| 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:) |

View File

@@ -1,3 +1,2 @@
failures
testFailures
| test.swift:651:15:651:27 | ...[...] | Fixed missing result:flow=650 |

View File

@@ -41,8 +41,6 @@
| test.swift:60:15:60:15 | [post] x | test.swift:61:23:61:23 | x |
| test.swift:60:15:60:15 | x | test.swift:61:23:61:23 | x |
| test.swift:61:22:61:23 | &... | test.swift:62:15:62:15 | x |
| test.swift:61:22:61:23 | [post] &... | test.swift:61:23:61:23 | [post] x |
| test.swift:61:22:61:23 | [post] &... | test.swift:62:15:62:15 | x |
| test.swift:61:23:61:23 | [post] x | test.swift:61:22:61:23 | &... |
| test.swift:61:23:61:23 | x | test.swift:61:22:61:23 | &... |
| test.swift:65:16:65:28 | SSA def(arg1) | test.swift:66:21:66:21 | arg1 |
@@ -66,13 +64,9 @@
| test.swift:74:9:74:12 | ... as ... | test.swift:74:9:74:9 | y |
| test.swift:74:18:74:18 | 0 | test.swift:74:9:74:12 | ... as ... |
| test.swift:75:21:75:22 | &... | test.swift:76:15:76:15 | x |
| test.swift:75:21:75:22 | [post] &... | test.swift:75:22:75:22 | [post] x |
| test.swift:75:21:75:22 | [post] &... | test.swift:76:15:76:15 | x |
| test.swift:75:22:75:22 | [post] x | test.swift:75:21:75:22 | &... |
| test.swift:75:22:75:22 | x | test.swift:75:21:75:22 | &... |
| test.swift:75:31:75:32 | &... | test.swift:77:15:77:15 | y |
| test.swift:75:31:75:32 | [post] &... | test.swift:75:32:75:32 | [post] y |
| test.swift:75:31:75:32 | [post] &... | test.swift:77:15:77:15 | y |
| test.swift:75:32:75:32 | [post] y | test.swift:75:31:75:32 | &... |
| test.swift:75:32:75:32 | y | test.swift:75:31:75:32 | &... |
| test.swift:81:5:81:18 | SSA def(arg) | test.swift:80:1:82:1 | arg[return] |
@@ -93,8 +87,6 @@
| test.swift:96:19:96:19 | [post] x | test.swift:97:40:97:40 | x |
| test.swift:96:19:96:19 | x | test.swift:97:40:97:40 | x |
| test.swift:97:39:97:40 | &... | test.swift:98:19:98:19 | x |
| test.swift:97:39:97:40 | [post] &... | test.swift:97:40:97:40 | [post] x |
| test.swift:97:39:97:40 | [post] &... | test.swift:98:19:98:19 | x |
| test.swift:97:40:97:40 | [post] x | test.swift:97:39:97:40 | &... |
| test.swift:97:40:97:40 | x | test.swift:97:39:97:40 | &... |
| test.swift:102:13:102:13 | SSA def(x) | test.swift:103:19:103:19 | x |
@@ -104,8 +96,6 @@
| test.swift:103:19:103:19 | [post] x | test.swift:104:41:104:41 | x |
| test.swift:103:19:103:19 | x | test.swift:104:41:104:41 | x |
| test.swift:104:40:104:41 | &... | test.swift:105:19:105:19 | x |
| test.swift:104:40:104:41 | [post] &... | test.swift:104:41:104:41 | [post] x |
| test.swift:104:40:104:41 | [post] &... | test.swift:105:19:105:19 | x |
| test.swift:104:41:104:41 | [post] x | test.swift:104:40:104:41 | &... |
| test.swift:104:41:104:41 | x | test.swift:104:40:104:41 | &... |
| test.swift:109:9:109:14 | SSA def(arg) | test.swift:110:12:110:12 | arg |
@@ -610,7 +600,6 @@
| test.swift:560:7:560:7 | SSA def(n) | test.swift:561:36:561:36 | n |
| test.swift:560:7:560:7 | n | test.swift:560:7:560:7 | SSA def(n) |
| test.swift:560:11:560:11 | 0 | test.swift:560:7:560:7 | n |
| test.swift:561:35:561:36 | [post] &... | test.swift:561:36:561:36 | [post] n |
| test.swift:561:36:561:36 | [post] n | test.swift:561:35:561:36 | &... |
| test.swift:561:36:561:36 | n | test.swift:561:35:561:36 | &... |
| test.swift:565:7:565:7 | self | test.swift:565:7:565:7 | SSA def(self) |
@@ -692,69 +681,48 @@
| test.swift:629:5:629:9 | SSA def(y) | test.swift:630:15:630:15 | y |
| test.swift:629:9:629:9 | 0 | test.swift:629:5:629:9 | SSA def(y) |
| test.swift:630:10:630:11 | &... | test.swift:631:15:631:15 | x |
| test.swift:630:10:630:11 | [post] &... | test.swift:630:11:630:11 | [post] x |
| test.swift:630:10:630:11 | [post] &... | test.swift:631:15:631:15 | x |
| test.swift:630:11:630:11 | [post] x | test.swift:630:10:630:11 | &... |
| test.swift:630:11:630:11 | x | test.swift:630:10:630:11 | &... |
| test.swift:630:14:630:15 | &... | test.swift:632:15:632:15 | y |
| test.swift:630:14:630:15 | [post] &... | test.swift:630:15:630:15 | [post] y |
| test.swift:630:14:630:15 | [post] &... | test.swift:632:15:632:15 | y |
| test.swift:630:15:630:15 | [post] y | test.swift:630:14:630:15 | &... |
| test.swift:630:15:630:15 | y | test.swift:630:14:630:15 | &... |
| test.swift:636:9:636:9 | SSA def(arr1) | test.swift:637:15:637:15 | arr1 |
| test.swift:636:9:636:9 | arr1 | test.swift:636:9:636:9 | SSA def(arr1) |
| test.swift:636:16:636:22 | [...] | test.swift:636:9:636:9 | arr1 |
| test.swift:637:15:637:15 | &... | test.swift:638:5:638:5 | arr1 |
| test.swift:637:15:637:15 | [post] &... | test.swift:637:15:637:15 | [post] arr1 |
| test.swift:637:15:637:15 | [post] &... | test.swift:638:5:638:5 | arr1 |
| test.swift:637:15:637:15 | [post] arr1 | test.swift:637:15:637:15 | &... |
| test.swift:637:15:637:15 | arr1 | test.swift:637:15:637:15 | &... |
| test.swift:638:5:638:5 | &... | test.swift:639:15:639:15 | arr1 |
| test.swift:638:5:638:5 | [post] &... | test.swift:638:5:638:5 | [post] arr1 |
| test.swift:638:5:638:5 | [post] &... | test.swift:639:15:639:15 | arr1 |
| test.swift:638:5:638:5 | [post] arr1 | test.swift:638:5:638:5 | &... |
| test.swift:638:5:638:5 | arr1 | test.swift:638:5:638:5 | &... |
| test.swift:639:15:639:15 | &... | test.swift:640:15:640:15 | arr1 |
| test.swift:639:15:639:15 | [post] &... | test.swift:639:15:639:15 | [post] arr1 |
| test.swift:639:15:639:15 | [post] &... | test.swift:640:15:640:15 | arr1 |
| test.swift:639:15:639:15 | [post] arr1 | test.swift:639:15:639:15 | &... |
| test.swift:639:15:639:15 | arr1 | test.swift:639:15:639:15 | &... |
| test.swift:642:9:642:9 | SSA def(arr2) | test.swift:643:15:643:15 | arr2 |
| test.swift:642:9:642:9 | arr2 | test.swift:642:9:642:9 | SSA def(arr2) |
| test.swift:642:16:642:25 | [...] | test.swift:642:9:642:9 | arr2 |
| test.swift:643:15:643:15 | &... | test.swift:654:16:654:16 | arr2 |
| test.swift:643:15:643:15 | [post] &... | test.swift:643:15:643:15 | [post] arr2 |
| test.swift:643:15:643:15 | [post] &... | test.swift:654:16:654:16 | arr2 |
| test.swift:643:15:643:15 | [post] arr2 | test.swift:643:15:643:15 | &... |
| test.swift:643:15:643:15 | arr2 | test.swift:643:15:643:15 | &... |
| test.swift:645:9:645:9 | SSA def(matrix) | test.swift:646:15:646:15 | matrix |
| test.swift:645:9:645:9 | matrix | test.swift:645:9:645:9 | SSA def(matrix) |
| test.swift:645:18:645:29 | [...] | test.swift:645:9:645:9 | matrix |
| test.swift:646:15:646:15 | &... | test.swift:647:15:647:15 | matrix |
| test.swift:646:15:646:15 | [post] &... | test.swift:646:15:646:15 | [post] matrix |
| test.swift:646:15:646:15 | [post] &... | test.swift:647:15:647:15 | matrix |
| test.swift:646:15:646:15 | [post] matrix | test.swift:646:15:646:15 | &... |
| test.swift:646:15:646:15 | matrix | test.swift:646:15:646:15 | &... |
| test.swift:647:15:647:15 | [post] &... | test.swift:647:15:647:15 | [post] matrix |
| test.swift:647:15:647:15 | [post] matrix | test.swift:647:15:647:15 | &... |
| test.swift:647:15:647:15 | matrix | test.swift:647:15:647:15 | &... |
| test.swift:647:15:647:23 | ...[...] | test.swift:647:15:647:23 | &... |
| test.swift:647:15:647:23 | [post] &... | test.swift:647:15:647:23 | [post] getter for ...[...] |
| test.swift:649:9:649:9 | SSA def(matrix2) | test.swift:650:5:650:5 | matrix2 |
| test.swift:649:9:649:9 | matrix2 | test.swift:649:9:649:9 | SSA def(matrix2) |
| test.swift:649:19:649:23 | [...] | test.swift:649:9:649:9 | matrix2 |
| test.swift:650:5:650:5 | &... | test.swift:651:15:651:15 | matrix2 |
| test.swift:650:5:650:5 | [post] &... | test.swift:650:5:650:5 | [post] matrix2 |
| test.swift:650:5:650:5 | [post] &... | test.swift:651:15:651:15 | matrix2 |
| test.swift:650:5:650:5 | [post] matrix2 | test.swift:650:5:650:5 | &... |
| test.swift:650:5:650:5 | matrix2 | test.swift:650:5:650:5 | &... |
| test.swift:650:5:650:14 | ...[...] | test.swift:650:5:650:14 | &... |
| test.swift:650:5:650:14 | [post] &... | test.swift:650:5:650:14 | [post] getter for ...[...] |
| test.swift:651:15:651:15 | [post] &... | test.swift:651:15:651:15 | [post] matrix2 |
| test.swift:651:15:651:15 | [post] matrix2 | test.swift:651:15:651:15 | &... |
| test.swift:651:15:651:15 | matrix2 | test.swift:651:15:651:15 | &... |
| test.swift:651:15:651:24 | ...[...] | test.swift:651:15:651:24 | &... |
| test.swift:651:15:651:24 | [post] &... | test.swift:651:15:651:24 | [post] getter for ...[...] |
| test.swift:653:9:653:9 | SSA def(arr3) | test.swift:654:23:654:23 | arr3 |
| test.swift:653:9:653:9 | arr3 | test.swift:653:9:653:9 | SSA def(arr3) |
| test.swift:653:16:653:18 | [...] | test.swift:653:9:653:9 | arr3 |
@@ -762,26 +730,20 @@
| test.swift:654:9:654:9 | arr4 | test.swift:654:9:654:9 | SSA def(arr4) |
| test.swift:654:16:654:23 | ... .+(_:_:) ... | test.swift:654:9:654:9 | arr4 |
| test.swift:654:23:654:23 | arr3 | test.swift:655:15:655:15 | arr3 |
| test.swift:655:15:655:15 | [post] &... | test.swift:655:15:655:15 | [post] arr3 |
| test.swift:655:15:655:15 | [post] arr3 | test.swift:655:15:655:15 | &... |
| test.swift:655:15:655:15 | arr3 | test.swift:655:15:655:15 | &... |
| test.swift:656:15:656:15 | [post] &... | test.swift:656:15:656:15 | [post] arr4 |
| test.swift:656:15:656:15 | [post] arr4 | test.swift:656:15:656:15 | &... |
| test.swift:656:15:656:15 | arr4 | test.swift:656:15:656:15 | &... |
| test.swift:658:9:658:9 | SSA def(arr5) | test.swift:659:15:659:15 | arr5 |
| test.swift:658:9:658:9 | arr5 | test.swift:658:9:658:9 | SSA def(arr5) |
| test.swift:658:16:658:51 | call to Array<Element>.init(repeating:count:) | test.swift:658:9:658:9 | arr5 |
| test.swift:659:15:659:15 | [post] &... | test.swift:659:15:659:15 | [post] arr5 |
| test.swift:659:15:659:15 | [post] arr5 | test.swift:659:15:659:15 | &... |
| test.swift:659:15:659:15 | arr5 | test.swift:659:15:659:15 | &... |
| test.swift:661:9:661:9 | SSA def(arr6) | test.swift:662:5:662:5 | arr6 |
| test.swift:661:9:661:9 | arr6 | test.swift:661:9:661:9 | SSA def(arr6) |
| test.swift:661:16:661:22 | [...] | test.swift:661:9:661:9 | arr6 |
| test.swift:662:5:662:5 | &... | test.swift:663:15:663:15 | arr6 |
| test.swift:662:5:662:5 | [post] &... | test.swift:662:5:662:5 | [post] arr6 |
| test.swift:662:5:662:5 | [post] &... | test.swift:663:15:663:15 | arr6 |
| test.swift:662:5:662:5 | [post] arr6 | test.swift:662:5:662:5 | &... |
| test.swift:662:5:662:5 | arr6 | test.swift:662:5:662:5 | &... |
| test.swift:663:15:663:15 | [post] &... | test.swift:663:15:663:15 | [post] arr6 |
| test.swift:663:15:663:15 | [post] arr6 | test.swift:663:15:663:15 | &... |
| test.swift:663:15:663:15 | arr6 | test.swift:663:15:663:15 | &... |