Swift: fix a bunch of MISSING dataflow test cases

Optional content flow through constructors remains.
This commit is contained in:
Nora Dimitrijević
2023-03-21 18:12:08 +01:00
parent 6a127264af
commit 03122d76ce
7 changed files with 548 additions and 218 deletions

View File

@@ -38,9 +38,9 @@ module Ssa {
// if let x5 = optional { ... }
// guard let x6 = optional else { ... }
// ```
exists(Pattern pattern |
exists(NamedPattern pattern |
bb.getNode(i).getNode().asAstNode() = pattern and
v.getParentPattern() = pattern and
v = pattern.getVarDecl() and
certain = true
)
or
@@ -153,14 +153,10 @@ module Ssa {
value.getNode().asAstNode() = a.getSource()
)
or
exists(
VarDecl var, SsaInput::BasicBlock bb, int blockIndex, PatternBindingDecl pbd, Expr init
|
this.definesAt(var, bb, blockIndex) and
pbd.getAPattern() = bb.getNode(blockIndex).getNode().asAstNode() and
init = var.getParentInitializer()
|
value.getAst() = init
exists(SsaInput::BasicBlock bb, int blockIndex, NamedPattern np |
this.definesAt(_, bb, blockIndex) and
np = bb.getNode(blockIndex).getNode().asAstNode() and
value.getNode().asAstNode() = np
)
or
exists(SsaInput::BasicBlock bb, int blockIndex, ConditionElement ce, Expr init |

View File

@@ -184,6 +184,16 @@ private module Cached {
nodeFrom.asExpr() = ie.getBranch(_)
)
or
// flow from Expr to Pattern
exists(Expr e, Pattern p |
nodeFrom.asExpr() = e and
nodeTo.asPattern() = p and
p.getImmediateMatchingExpr() = e
)
or
// flow from Pattern to an identity-preserving sub-Pattern:
nodeFrom.asPattern() = nodeTo.asPattern().getIdentityPreservingEnclosingPattern()
or
// flow through a flow summary (extension of `SummaryModelCsv`)
FlowSummaryImpl::Private::Steps::summaryLocalStep(nodeFrom, nodeTo, true)
}
@@ -580,6 +590,13 @@ predicate storeStep(Node node1, ContentSet c, Node node2) {
c.isSingleton(any(Content::EnumContent ec | ec.getParam() = enum.getElement().getParam(pos)))
)
or
// creation of an optional via implicit conversion
exists(InjectIntoOptionalExpr e, OptionalSomeDecl someDecl |
e.convertsFrom(node1.asExpr()) and
node2 = node1 and // HACK: we should ideally have a separate Node case for the (hidden) InjectIntoOptionalExpr
c.isSingleton(any(Content::EnumContent ec | ec.getParam() = someDecl.getParam(0)))
)
or
FlowSummaryImpl::Private::Steps::summaryStoreStep(node1, c, node2)
}
@@ -602,18 +619,32 @@ predicate readStep(Node node1, ContentSet c, Node node2) {
)
or
// read of an enum member via `case let .variant(v1, v2)` pattern matching
exists(Expr enumExpr, ParamDecl enumParam, VarDecl boundVar |
node1.asExpr() = enumExpr and
node2.asDefinition().getSourceVariable() = boundVar and
exists(EnumElementPattern enumPat, ParamDecl enumParam, Pattern subPat |
node1.asPattern() = enumPat and
node2.asPattern() = subPat and
c.isSingleton(any(Content::EnumContent ec | ec.getParam() = enumParam))
|
exists(EnumElementPattern enumPat, NamedPattern namePat, int idx |
enumPat.getMatchingExpr() = enumExpr and
exists(int idx |
enumPat.getElement().getParam(idx) = enumParam and
namePat.getImmediateIdentityPreservingEnclosingPattern*() = enumPat.getSubPattern(idx) and
namePat.getVarDecl() = boundVar
enumPat.getSubPattern(idx) = subPat
)
)
or
// read of a tuple member via `case let (v1, v2)` pattern matching
exists(TuplePattern tupPat, int idx, Pattern subPat |
node1.asPattern() = tupPat and
node2.asPattern() = subPat and
c.isSingleton(any(Content::TupleContent tc | tc.getIndex() = idx))
|
tupPat.getElement(idx) = subPat
)
or
// read of an optional .some member via `let x: T = y: T?` pattern matching
exists(OptionalSomePattern pat, OptionalSomeDecl someDecl |
node1.asPattern() = pat and
node2.asPattern() = pat.getSubPattern() and
c.isSingleton(any(Content::EnumContent ec | ec.getParam() = someDecl.getParam(0)))
)
}
/**
@@ -631,6 +662,20 @@ predicate clearsContent(Node n, ContentSet c) {
*/
predicate expectsContent(Node n, ContentSet c) { none() }
/**
* The global singleton `Optional.some` enum element.
*/
private class OptionalSomeDecl extends EnumElementDecl {
OptionalSomeDecl() {
exists(EnumDecl enum |
this.getName() = "some" and
this.getDeclaringDecl() = enum and
enum.getName() = "Optional" and
enum.getModule().getName() = "Swift"
)
}
}
private newtype TDataFlowType = TODO_DataFlowType()
class DataFlowType extends TDataFlowType {

View File

@@ -20,12 +20,12 @@ private import codeql.swift.generated.ParentChild
class Pattern extends Generated::Pattern {
/**
* Gets the expression that this pattern is matched against, if any.
* Gets the expression that this top-level pattern is matched against, if any.
*
* For example, in `switch e { case p: ... }`, the pattern `p`
* is matched against the expression `e`.
* is immediately matched against the expression `e`.
*/
Expr getMatchingExpr() {
Expr getImmediateMatchingExpr() {
exists(ConditionElement c |
c.getPattern() = this and
result = c.getInitializer()
@@ -40,6 +40,18 @@ class Pattern extends Generated::Pattern {
v.getPattern(i) = this and
result = v.getInit(i)
)
}
/**
* Gets the expression that this pattern is matched against, if any.
* The expression and the pattern need not be top-level children of
* a pattern-matching construct, but they must match each other syntactically.
*
* For example, in `switch .some(e) { case let .some(p): ... }`, the pattern `p`
* is matched against the expression `e`.
*/
Expr getMatchingExpr() {
result = this.getImmediateMatchingExpr()
or
exists(Pattern p | p.getMatchingExpr() = result |
this = p.(IsPattern).getSubPattern()

View File

@@ -1,11 +1,12 @@
edges
| file://:0:0:0:0 | [summary param] this in signum() : | file://:0:0:0:0 | [summary] to write: return (return) in signum() : |
| file://:0:0:0:0 | [summary param] this in signum() [some:0] : | file://:0:0:0:0 | [summary] to write: return (return) in signum() [some:0] : |
| file://:0:0:0:0 | self [a, x] : | file://:0:0:0:0 | .a [x] : |
| file://:0:0:0:0 | self [str] : | file://:0:0:0:0 | .str : |
| file://:0:0:0:0 | self [x] : | file://:0:0:0:0 | .x : |
| file://:0:0:0:0 | self [x, some:0] : | file://:0:0:0:0 | .x [some:0] : |
| file://:0:0:0:0 | self [x] : | file://:0:0:0:0 | .x : |
| file://:0:0:0:0 | value : | file://:0:0:0:0 | [post] self [x] : |
| file://:0:0:0:0 | value : | file://:0:0:0:0 | [post] self [x] : |
| file://:0:0:0:0 | value [some:0] : | file://:0:0:0:0 | [post] self [x, some:0] : |
| test.swift:6:19:6:26 | call to source() : | test.swift:7:15:7:15 | t1 |
| test.swift:6:19:6:26 | call to source() : | test.swift:9:15:9:15 | t1 |
| test.swift:6:19:6:26 | call to source() : | test.swift:10:15:10:15 | t2 |
@@ -102,9 +103,11 @@ edges
| test.swift:219:13:219:15 | .a [x] : | test.swift:219:13:219:17 | .x |
| test.swift:225:14:225:21 | call to source() : | test.swift:235:13:235:15 | .source_value |
| test.swift:225:14:225:21 | call to source() : | test.swift:238:13:238:15 | .source_value |
| test.swift:259:12:259:19 | call to source() : | test.swift:259:12:259:19 | call to source() [some:0] : |
| test.swift:259:12:259:19 | call to source() : | test.swift:263:13:263:28 | call to optionalSource() : |
| test.swift:259:12:259:19 | call to source() : | test.swift:486:13:486:28 | call to optionalSource() : |
| test.swift:259:12:259:19 | call to source() : | test.swift:513:13:513:28 | call to optionalSource() : |
| test.swift:259:12:259:19 | call to source() [some:0] : | test.swift:263:13:263:28 | call to optionalSource() [some:0] : |
| test.swift:259:12:259:19 | call to source() [some:0] : | test.swift:486:13:486:28 | call to optionalSource() [some:0] : |
| test.swift:259:12:259:19 | call to source() [some:0] : | test.swift:513:13:513:28 | call to optionalSource() [some:0] : |
| test.swift:263:13:263:28 | call to optionalSource() : | test.swift:265:15:265:15 | x |
| test.swift:263:13:263:28 | call to optionalSource() : | test.swift:267:15:267:16 | ...! |
| test.swift:263:13:263:28 | call to optionalSource() : | test.swift:271:15:271:16 | ...? : |
@@ -112,11 +115,13 @@ edges
| test.swift:263:13:263:28 | call to optionalSource() : | test.swift:275:15:275:27 | ... ??(_:_:) ... |
| test.swift:263:13:263:28 | call to optionalSource() : | test.swift:279:15:279:31 | ... ? ... : ... |
| test.swift:263:13:263:28 | call to optionalSource() : | test.swift:280:15:280:38 | ... ? ... : ... |
| test.swift:263:13:263:28 | call to optionalSource() : | test.swift:285:19:285:19 | z |
| test.swift:263:13:263:28 | call to optionalSource() : | test.swift:291:16:291:17 | ...? : |
| test.swift:263:13:263:28 | call to optionalSource() : | test.swift:300:15:300:15 | z1 |
| test.swift:263:13:263:28 | call to optionalSource() : | test.swift:303:15:303:16 | ...! : |
| test.swift:263:13:263:28 | call to optionalSource() : | test.swift:307:19:307:19 | z |
| test.swift:263:13:263:28 | call to optionalSource() [some:0] : | test.swift:284:8:284:12 | let ...? [some:0] : |
| test.swift:263:13:263:28 | call to optionalSource() [some:0] : | test.swift:291:16:291:17 | ...? [some:0] : |
| test.swift:263:13:263:28 | call to optionalSource() [some:0] : | test.swift:298:11:298:15 | let ...? [some:0] : |
| test.swift:263:13:263:28 | call to optionalSource() [some:0] : | test.swift:306:13:306:24 | .some(...) [some:0] : |
| test.swift:263:13:263:28 | call to optionalSource() [some:0] : | test.swift:314:10:314:21 | .some(...) [some:0] : |
| test.swift:270:15:270:22 | call to source() : | file://:0:0:0:0 | [summary param] this in signum() : |
| test.swift:270:15:270:22 | call to source() : | test.swift:270:15:270:31 | call to signum() |
| test.swift:271:15:271:16 | ...? : | file://:0:0:0:0 | [summary param] this in signum() : |
@@ -124,57 +129,107 @@ edges
| test.swift:271:15:271:25 | call to signum() : | test.swift:271:15:271:25 | OptionalEvaluationExpr |
| test.swift:280:31:280:38 | call to source() : | test.swift:280:15:280:38 | ... ? ... : ... |
| test.swift:282:31:282:38 | call to source() : | test.swift:282:15:282:38 | ... ? ... : ... |
| test.swift:284:8:284:12 | let ...? [some:0] : | test.swift:284:12:284:12 | z : |
| test.swift:284:12:284:12 | z : | test.swift:285:19:285:19 | z |
| test.swift:291:8:291:12 | let ...? [some:0] : | test.swift:291:12:291:12 | z : |
| test.swift:291:12:291:12 | z : | test.swift:292:19:292:19 | z |
| test.swift:291:16:291:17 | ...? : | file://:0:0:0:0 | [summary param] this in signum() : |
| test.swift:291:16:291:17 | ...? : | test.swift:291:16:291:26 | call to signum() : |
| test.swift:291:16:291:26 | call to signum() : | test.swift:292:19:292:19 | z |
| test.swift:291:16:291:17 | ...? [some:0] : | file://:0:0:0:0 | [summary param] this in signum() [some:0] : |
| test.swift:291:16:291:17 | ...? [some:0] : | test.swift:291:16:291:26 | call to signum() [some:0] : |
| test.swift:291:16:291:26 | call to signum() : | test.swift:291:16:291:26 | call to signum() [some:0] : |
| test.swift:291:16:291:26 | call to signum() [some:0] : | test.swift:291:8:291:12 | let ...? [some:0] : |
| test.swift:298:11:298:15 | let ...? [some:0] : | test.swift:298:15:298:15 | z1 : |
| test.swift:298:15:298:15 | z1 : | test.swift:300:15:300:15 | z1 |
| test.swift:303:15:303:16 | ...! : | file://:0:0:0:0 | [summary param] this in signum() : |
| test.swift:303:15:303:16 | ...! : | test.swift:303:15:303:25 | call to signum() |
| test.swift:306:13:306:24 | .some(...) [some:0] : | test.swift:306:23:306:23 | z : |
| test.swift:306:23:306:23 | z : | test.swift:307:19:307:19 | z |
| test.swift:314:10:314:21 | .some(...) [some:0] : | test.swift:314:20:314:20 | z : |
| test.swift:314:20:314:20 | z : | test.swift:315:19:315:19 | z |
| test.swift:331:14:331:26 | (...) [Tuple element at index 1] : | test.swift:335:15:335:15 | t1 [Tuple element at index 1] : |
| test.swift:331:18:331:25 | call to source() : | test.swift:331:14:331:26 | (...) [Tuple element at index 1] : |
| test.swift:335:15:335:15 | t1 [Tuple element at index 1] : | test.swift:335:15:335:18 | .1 |
| test.swift:343:5:343:5 | [post] t1 [Tuple element at index 0] : | test.swift:346:15:346:15 | t1 [Tuple element at index 0] : |
| test.swift:343:12:343:19 | call to source() : | test.swift:343:5:343:5 | [post] t1 [Tuple element at index 0] : |
| test.swift:346:15:346:15 | t1 [Tuple element at index 0] : | test.swift:346:15:346:18 | .0 |
| test.swift:351:14:351:45 | (...) [Tuple element at index 0] : | test.swift:353:9:353:17 | (...) [Tuple element at index 0] : |
| test.swift:351:14:351:45 | (...) [Tuple element at index 0] : | test.swift:356:15:356:15 | t1 [Tuple element at index 0] : |
| test.swift:351:14:351:45 | (...) [Tuple element at index 0] : | test.swift:360:15:360:15 | t2 [Tuple element at index 0] : |
| test.swift:351:14:351:45 | (...) [Tuple element at index 1] : | test.swift:353:9:353:17 | (...) [Tuple element at index 1] : |
| test.swift:351:14:351:45 | (...) [Tuple element at index 1] : | test.swift:357:15:357:15 | t1 [Tuple element at index 1] : |
| test.swift:351:14:351:45 | (...) [Tuple element at index 1] : | test.swift:361:15:361:15 | t2 [Tuple element at index 1] : |
| test.swift:351:18:351:25 | call to source() : | test.swift:351:14:351:45 | (...) [Tuple element at index 0] : |
| test.swift:351:31:351:38 | call to source() : | test.swift:351:14:351:45 | (...) [Tuple element at index 1] : |
| test.swift:353:9:353:17 | (...) [Tuple element at index 0] : | test.swift:353:10:353:10 | a : |
| test.swift:353:9:353:17 | (...) [Tuple element at index 1] : | test.swift:353:13:353:13 | b : |
| test.swift:353:10:353:10 | a : | test.swift:363:15:363:15 | a |
| test.swift:353:13:353:13 | b : | test.swift:364:15:364:15 | b |
| test.swift:356:15:356:15 | t1 [Tuple element at index 0] : | test.swift:356:15:356:18 | .0 |
| test.swift:357:15:357:15 | t1 [Tuple element at index 1] : | test.swift:357:15:357:18 | .1 |
| test.swift:360:15:360:15 | t2 [Tuple element at index 0] : | test.swift:360:15:360:18 | .0 |
| test.swift:361:15:361:15 | t2 [Tuple element at index 1] : | test.swift:361:15:361:18 | .1 |
| test.swift:398:9:398:27 | call to ... [mySingle:0] : | test.swift:400:12:400:12 | a [mySingle:0] : |
| test.swift:398:9:398:27 | call to ... [mySingle:0] : | test.swift:412:32:412:32 | a [mySingle:0] : |
| test.swift:398:9:398:27 | call to ... [mySingle:0] : | test.swift:403:10:403:25 | .mySingle(...) [mySingle:0] : |
| test.swift:398:9:398:27 | call to ... [mySingle:0] : | test.swift:412:13:412:28 | .mySingle(...) [mySingle:0] : |
| test.swift:398:19:398:26 | call to source() : | test.swift:398:9:398:27 | call to ... [mySingle:0] : |
| test.swift:400:12:400:12 | a [mySingle:0] : | test.swift:403:10:403:25 | SSA def(a) : |
| test.swift:403:10:403:25 | SSA def(a) : | test.swift:404:19:404:19 | a |
| test.swift:412:13:412:28 | SSA def(x) : | test.swift:413:19:413:19 | x |
| test.swift:412:32:412:32 | a [mySingle:0] : | test.swift:412:13:412:28 | SSA def(x) : |
| test.swift:420:9:420:34 | call to ... [myPair:1] : | test.swift:422:12:422:12 | a [myPair:1] : |
| test.swift:420:9:420:34 | call to ... [myPair:1] : | test.swift:437:37:437:37 | a [myPair:1] : |
| test.swift:403:10:403:25 | .mySingle(...) [mySingle:0] : | test.swift:403:24:403:24 | a : |
| test.swift:403:24:403:24 | a : | test.swift:404:19:404:19 | a |
| test.swift:412:13:412:28 | .mySingle(...) [mySingle:0] : | test.swift:412:27:412:27 | x : |
| test.swift:412:27:412:27 | x : | test.swift:413:19:413:19 | x |
| test.swift:420:9:420:34 | call to ... [myPair:1] : | test.swift:427:10:427:30 | .myPair(...) [myPair:1] : |
| test.swift:420:9:420:34 | call to ... [myPair:1] : | test.swift:437:13:437:33 | .myPair(...) [myPair:1] : |
| test.swift:420:9:420:34 | call to ... [myPair:1] : | test.swift:442:33:442:33 | a [myPair:1] : |
| test.swift:420:9:420:34 | call to ... [myPair:1] : | test.swift:471:13:471:13 | a [myPair:1] : |
| test.swift:420:26:420:33 | call to source() : | test.swift:420:9:420:34 | call to ... [myPair:1] : |
| test.swift:422:12:422:12 | a [myPair:1] : | test.swift:427:10:427:30 | SSA def(b) : |
| test.swift:427:10:427:30 | SSA def(b) : | test.swift:429:19:429:19 | b |
| test.swift:437:13:437:33 | SSA def(y) : | test.swift:439:19:439:19 | y |
| test.swift:437:37:437:37 | a [myPair:1] : | test.swift:437:13:437:33 | SSA def(y) : |
| test.swift:463:13:463:39 | SSA def(x) : | test.swift:464:19:464:19 | x |
| test.swift:463:43:463:62 | call to ... [myPair:0] : | test.swift:463:13:463:39 | SSA def(x) : |
| test.swift:427:10:427:30 | .myPair(...) [myPair:1] : | test.swift:427:29:427:29 | b : |
| test.swift:427:29:427:29 | b : | test.swift:429:19:429:19 | b |
| test.swift:437:13:437:33 | .myPair(...) [myPair:1] : | test.swift:437:32:437:32 | y : |
| test.swift:437:32:437:32 | y : | test.swift:439:19:439:19 | y |
| test.swift:442:21:442:34 | call to ... [myCons:1, myPair:1] : | test.swift:452:14:452:38 | .myCons(...) [myCons:1, myPair:1] : |
| test.swift:442:21:442:34 | call to ... [myCons:1, myPair:1] : | test.swift:467:17:467:41 | .myCons(...) [myCons:1, myPair:1] : |
| test.swift:442:21:442:34 | call to ... [myCons:1, myPair:1] : | test.swift:471:16:471:16 | b [myCons:1, myPair:1] : |
| test.swift:442:33:442:33 | a [myPair:1] : | test.swift:442:21:442:34 | call to ... [myCons:1, myPair:1] : |
| test.swift:452:14:452:38 | .myCons(...) [myCons:1, myPair:1] : | test.swift:452:25:452:37 | .myPair(...) [myPair:1] : |
| test.swift:452:25:452:37 | .myPair(...) [myPair:1] : | test.swift:452:36:452:36 | c : |
| test.swift:452:36:452:36 | c : | test.swift:455:19:455:19 | c |
| test.swift:463:13:463:39 | .myPair(...) [myPair:0] : | test.swift:463:31:463:31 | x : |
| test.swift:463:31:463:31 | x : | test.swift:464:19:464:19 | x |
| test.swift:463:43:463:62 | call to ... [myPair:0] : | test.swift:463:13:463:39 | .myPair(...) [myPair:0] : |
| test.swift:463:51:463:58 | call to source() : | test.swift:463:43:463:62 | call to ... [myPair:0] : |
| test.swift:471:13:471:13 | a [myPair:1] : | test.swift:472:14:472:55 | SSA def(b) : |
| test.swift:472:14:472:55 | SSA def(b) : | test.swift:474:19:474:19 | b |
| test.swift:486:13:486:28 | call to optionalSource() : | test.swift:489:19:489:19 | a |
| test.swift:509:9:509:9 | self [x] : | file://:0:0:0:0 | self [x] : |
| test.swift:509:9:509:9 | value : | file://:0:0:0:0 | value : |
| test.swift:513:13:513:28 | call to optionalSource() : | test.swift:515:12:515:12 | x : |
| test.swift:515:5:515:5 | [post] cx [x] : | test.swift:519:20:519:20 | cx [x] : |
| test.swift:515:12:515:12 | x : | test.swift:509:9:509:9 | value : |
| test.swift:515:12:515:12 | x : | test.swift:515:5:515:5 | [post] cx [x] : |
| test.swift:519:20:519:20 | cx [x] : | test.swift:509:9:509:9 | self [x] : |
| test.swift:519:20:519:20 | cx [x] : | test.swift:519:20:519:23 | .x : |
| test.swift:519:20:519:23 | .x : | test.swift:520:15:520:15 | z1 |
| test.swift:467:17:467:41 | .myCons(...) [myCons:1, myPair:1] : | test.swift:467:28:467:40 | .myPair(...) [myPair:1] : |
| test.swift:467:28:467:40 | .myPair(...) [myPair:1] : | test.swift:467:39:467:39 | c : |
| test.swift:467:39:467:39 | c : | test.swift:468:19:468:19 | c |
| test.swift:471:12:471:17 | (...) [Tuple element at index 0, myPair:1] : | test.swift:472:14:472:55 | (...) [Tuple element at index 0, myPair:1] : |
| test.swift:471:12:471:17 | (...) [Tuple element at index 1, myCons:1, myPair:1] : | test.swift:472:14:472:55 | (...) [Tuple element at index 1, myCons:1, myPair:1] : |
| test.swift:471:13:471:13 | a [myPair:1] : | test.swift:471:12:471:17 | (...) [Tuple element at index 0, myPair:1] : |
| test.swift:471:16:471:16 | b [myCons:1, myPair:1] : | test.swift:471:12:471:17 | (...) [Tuple element at index 1, myCons:1, myPair:1] : |
| test.swift:472:14:472:55 | (...) [Tuple element at index 0, myPair:1] : | test.swift:472:15:472:27 | .myPair(...) [myPair:1] : |
| test.swift:472:14:472:55 | (...) [Tuple element at index 1, myCons:1, myPair:1] : | test.swift:472:30:472:54 | .myCons(...) [myCons:1, myPair:1] : |
| test.swift:472:15:472:27 | .myPair(...) [myPair:1] : | test.swift:472:26:472:26 | b : |
| test.swift:472:26:472:26 | b : | test.swift:474:19:474:19 | b |
| test.swift:472:30:472:54 | .myCons(...) [myCons:1, myPair:1] : | test.swift:472:41:472:53 | .myPair(...) [myPair:1] : |
| test.swift:472:41:472:53 | .myPair(...) [myPair:1] : | test.swift:472:52:472:52 | e : |
| test.swift:472:52:472:52 | e : | test.swift:477:19:477:19 | e |
| test.swift:486:13:486:28 | call to optionalSource() [some:0] : | test.swift:488:8:488:12 | let ...? [some:0] : |
| test.swift:486:13:486:28 | call to optionalSource() [some:0] : | test.swift:493:19:493:19 | x [some:0] : |
| test.swift:488:8:488:12 | let ...? [some:0] : | test.swift:488:12:488:12 | a : |
| test.swift:488:12:488:12 | a : | test.swift:489:19:489:19 | a |
| test.swift:493:18:493:23 | (...) [Tuple element at index 0, some:0] : | test.swift:495:10:495:37 | (...) [Tuple element at index 0, some:0] : |
| test.swift:493:19:493:19 | x [some:0] : | test.swift:493:18:493:23 | (...) [Tuple element at index 0, some:0] : |
| test.swift:495:10:495:37 | (...) [Tuple element at index 0, some:0] : | test.swift:495:11:495:22 | .some(...) [some:0] : |
| test.swift:495:11:495:22 | .some(...) [some:0] : | test.swift:495:21:495:21 | a : |
| test.swift:495:21:495:21 | a : | test.swift:496:19:496:19 | a |
| test.swift:509:9:509:9 | self [x, some:0] : | file://:0:0:0:0 | self [x, some:0] : |
| test.swift:509:9:509:9 | value [some:0] : | file://:0:0:0:0 | value [some:0] : |
| test.swift:513:13:513:28 | call to optionalSource() [some:0] : | test.swift:515:12:515:12 | x [some:0] : |
| test.swift:515:5:515:5 | [post] cx [x, some:0] : | test.swift:519:20:519:20 | cx [x, some:0] : |
| test.swift:515:12:515:12 | x [some:0] : | test.swift:509:9:509:9 | value [some:0] : |
| test.swift:515:12:515:12 | x [some:0] : | test.swift:515:5:515:5 | [post] cx [x, some:0] : |
| test.swift:519:11:519:15 | let ...? [some:0] : | test.swift:519:15:519:15 | z1 : |
| test.swift:519:15:519:15 | z1 : | test.swift:520:15:520:15 | z1 |
| test.swift:519:20:519:20 | cx [x, some:0] : | test.swift:509:9:509:9 | self [x, some:0] : |
| test.swift:519:20:519:20 | cx [x, some:0] : | test.swift:519:20:519:23 | .x [some:0] : |
| test.swift:519:20:519:23 | .x [some:0] : | test.swift:519:11:519:15 | let ...? [some:0] : |
| test.swift:526:14:526:21 | call to source() : | test.swift:526:13:526:21 | call to +(_:) |
| test.swift:535:9:535:9 | self [str] : | file://:0:0:0:0 | self [str] : |
| test.swift:536:10:536:13 | s : | test.swift:537:13:537:13 | s : |
@@ -196,17 +251,19 @@ nodes
| file://:0:0:0:0 | .a [x] : | semmle.label | .a [x] : |
| file://:0:0:0:0 | .str : | semmle.label | .str : |
| file://:0:0:0:0 | .x : | semmle.label | .x : |
| file://:0:0:0:0 | .x : | semmle.label | .x : |
| file://:0:0:0:0 | [post] self [x] : | semmle.label | [post] self [x] : |
| file://:0:0:0:0 | .x [some:0] : | semmle.label | .x [some:0] : |
| file://:0:0:0:0 | [post] self [x, some:0] : | semmle.label | [post] self [x, some:0] : |
| file://:0:0:0:0 | [post] self [x] : | semmle.label | [post] self [x] : |
| file://:0:0:0:0 | [summary param] this in signum() : | semmle.label | [summary param] this in signum() : |
| file://:0:0:0:0 | [summary param] this in signum() [some:0] : | semmle.label | [summary param] this in signum() [some:0] : |
| file://:0:0:0:0 | [summary] to write: return (return) in signum() : | semmle.label | [summary] to write: return (return) in signum() : |
| file://:0:0:0:0 | [summary] to write: return (return) in signum() [some:0] : | semmle.label | [summary] to write: return (return) in signum() [some:0] : |
| file://:0:0:0:0 | self [a, x] : | semmle.label | self [a, x] : |
| file://:0:0:0:0 | self [str] : | semmle.label | self [str] : |
| file://:0:0:0:0 | self [x] : | semmle.label | self [x] : |
| file://:0:0:0:0 | self [x, some:0] : | semmle.label | self [x, some:0] : |
| file://:0:0:0:0 | self [x] : | semmle.label | self [x] : |
| file://:0:0:0:0 | value : | semmle.label | value : |
| file://:0:0:0:0 | value : | semmle.label | value : |
| file://:0:0:0:0 | value [some:0] : | semmle.label | value [some:0] : |
| test.swift:6:19:6:26 | call to source() : | semmle.label | call to source() : |
| test.swift:7:15:7:15 | t1 | semmle.label | t1 |
| test.swift:9:15:9:15 | t1 | semmle.label | t1 |
@@ -311,7 +368,9 @@ nodes
| test.swift:235:13:235:15 | .source_value | semmle.label | .source_value |
| test.swift:238:13:238:15 | .source_value | semmle.label | .source_value |
| test.swift:259:12:259:19 | call to source() : | semmle.label | call to source() : |
| test.swift:259:12:259:19 | call to source() [some:0] : | semmle.label | call to source() [some:0] : |
| test.swift:263:13:263:28 | call to optionalSource() : | semmle.label | call to optionalSource() : |
| test.swift:263:13:263:28 | call to optionalSource() [some:0] : | semmle.label | call to optionalSource() [some:0] : |
| test.swift:265:15:265:15 | x | semmle.label | x |
| test.swift:267:15:267:16 | ...! | semmle.label | ...! |
| test.swift:270:15:270:22 | call to source() : | semmle.label | call to source() : |
@@ -326,14 +385,27 @@ nodes
| test.swift:280:31:280:38 | call to source() : | semmle.label | call to source() : |
| test.swift:282:15:282:38 | ... ? ... : ... | semmle.label | ... ? ... : ... |
| test.swift:282:31:282:38 | call to source() : | semmle.label | call to source() : |
| test.swift:284:8:284:12 | let ...? [some:0] : | semmle.label | let ...? [some:0] : |
| test.swift:284:12:284:12 | z : | semmle.label | z : |
| test.swift:285:19:285:19 | z | semmle.label | z |
| test.swift:291:8:291:12 | let ...? [some:0] : | semmle.label | let ...? [some:0] : |
| test.swift:291:12:291:12 | z : | semmle.label | z : |
| test.swift:291:16:291:17 | ...? : | semmle.label | ...? : |
| test.swift:291:16:291:17 | ...? [some:0] : | semmle.label | ...? [some:0] : |
| test.swift:291:16:291:26 | call to signum() : | semmle.label | call to signum() : |
| test.swift:291:16:291:26 | call to signum() [some:0] : | semmle.label | call to signum() [some:0] : |
| test.swift:292:19:292:19 | z | semmle.label | z |
| test.swift:298:11:298:15 | let ...? [some:0] : | semmle.label | let ...? [some:0] : |
| test.swift:298:15:298:15 | z1 : | semmle.label | z1 : |
| test.swift:300:15:300:15 | z1 | semmle.label | z1 |
| test.swift:303:15:303:16 | ...! : | semmle.label | ...! : |
| test.swift:303:15:303:25 | call to signum() | semmle.label | call to signum() |
| test.swift:306:13:306:24 | .some(...) [some:0] : | semmle.label | .some(...) [some:0] : |
| test.swift:306:23:306:23 | z : | semmle.label | z : |
| test.swift:307:19:307:19 | z | semmle.label | z |
| test.swift:314:10:314:21 | .some(...) [some:0] : | semmle.label | .some(...) [some:0] : |
| test.swift:314:20:314:20 | z : | semmle.label | z : |
| test.swift:315:19:315:19 | z | semmle.label | z |
| test.swift:331:14:331:26 | (...) [Tuple element at index 1] : | semmle.label | (...) [Tuple element at index 1] : |
| test.swift:331:18:331:25 | call to source() : | semmle.label | call to source() : |
| test.swift:335:15:335:15 | t1 [Tuple element at index 1] : | semmle.label | t1 [Tuple element at index 1] : |
@@ -346,6 +418,10 @@ nodes
| test.swift:351:14:351:45 | (...) [Tuple element at index 1] : | semmle.label | (...) [Tuple element at index 1] : |
| test.swift:351:18:351:25 | call to source() : | semmle.label | call to source() : |
| test.swift:351:31:351:38 | call to source() : | semmle.label | call to source() : |
| test.swift:353:9:353:17 | (...) [Tuple element at index 0] : | semmle.label | (...) [Tuple element at index 0] : |
| test.swift:353:9:353:17 | (...) [Tuple element at index 1] : | semmle.label | (...) [Tuple element at index 1] : |
| test.swift:353:10:353:10 | a : | semmle.label | a : |
| test.swift:353:13:353:13 | b : | semmle.label | b : |
| test.swift:356:15:356:15 | t1 [Tuple element at index 0] : | semmle.label | t1 [Tuple element at index 0] : |
| test.swift:356:15:356:18 | .0 | semmle.label | .0 |
| test.swift:357:15:357:15 | t1 [Tuple element at index 1] : | semmle.label | t1 [Tuple element at index 1] : |
@@ -354,38 +430,71 @@ nodes
| test.swift:360:15:360:18 | .0 | semmle.label | .0 |
| test.swift:361:15:361:15 | t2 [Tuple element at index 1] : | semmle.label | t2 [Tuple element at index 1] : |
| test.swift:361:15:361:18 | .1 | semmle.label | .1 |
| test.swift:363:15:363:15 | a | semmle.label | a |
| test.swift:364:15:364:15 | b | semmle.label | b |
| test.swift:398:9:398:27 | call to ... [mySingle:0] : | semmle.label | call to ... [mySingle:0] : |
| test.swift:398:19:398:26 | call to source() : | semmle.label | call to source() : |
| test.swift:400:12:400:12 | a [mySingle:0] : | semmle.label | a [mySingle:0] : |
| test.swift:403:10:403:25 | SSA def(a) : | semmle.label | SSA def(a) : |
| test.swift:403:10:403:25 | .mySingle(...) [mySingle:0] : | semmle.label | .mySingle(...) [mySingle:0] : |
| test.swift:403:24:403:24 | a : | semmle.label | a : |
| test.swift:404:19:404:19 | a | semmle.label | a |
| test.swift:412:13:412:28 | SSA def(x) : | semmle.label | SSA def(x) : |
| test.swift:412:32:412:32 | a [mySingle:0] : | semmle.label | a [mySingle:0] : |
| test.swift:412:13:412:28 | .mySingle(...) [mySingle:0] : | semmle.label | .mySingle(...) [mySingle:0] : |
| test.swift:412:27:412:27 | x : | semmle.label | x : |
| test.swift:413:19:413:19 | x | semmle.label | x |
| test.swift:420:9:420:34 | call to ... [myPair:1] : | semmle.label | call to ... [myPair:1] : |
| test.swift:420:26:420:33 | call to source() : | semmle.label | call to source() : |
| test.swift:422:12:422:12 | a [myPair:1] : | semmle.label | a [myPair:1] : |
| test.swift:427:10:427:30 | SSA def(b) : | semmle.label | SSA def(b) : |
| test.swift:427:10:427:30 | .myPair(...) [myPair:1] : | semmle.label | .myPair(...) [myPair:1] : |
| test.swift:427:29:427:29 | b : | semmle.label | b : |
| test.swift:429:19:429:19 | b | semmle.label | b |
| test.swift:437:13:437:33 | SSA def(y) : | semmle.label | SSA def(y) : |
| test.swift:437:37:437:37 | a [myPair:1] : | semmle.label | a [myPair:1] : |
| test.swift:437:13:437:33 | .myPair(...) [myPair:1] : | semmle.label | .myPair(...) [myPair:1] : |
| test.swift:437:32:437:32 | y : | semmle.label | y : |
| test.swift:439:19:439:19 | y | semmle.label | y |
| test.swift:463:13:463:39 | SSA def(x) : | semmle.label | SSA def(x) : |
| test.swift:442:21:442:34 | call to ... [myCons:1, myPair:1] : | semmle.label | call to ... [myCons:1, myPair:1] : |
| test.swift:442:33:442:33 | a [myPair:1] : | semmle.label | a [myPair:1] : |
| test.swift:452:14:452:38 | .myCons(...) [myCons:1, myPair:1] : | semmle.label | .myCons(...) [myCons:1, myPair:1] : |
| test.swift:452:25:452:37 | .myPair(...) [myPair:1] : | semmle.label | .myPair(...) [myPair:1] : |
| test.swift:452:36:452:36 | c : | semmle.label | c : |
| test.swift:455:19:455:19 | c | semmle.label | c |
| test.swift:463:13:463:39 | .myPair(...) [myPair:0] : | semmle.label | .myPair(...) [myPair:0] : |
| test.swift:463:31:463:31 | x : | semmle.label | x : |
| test.swift:463:43:463:62 | call to ... [myPair:0] : | semmle.label | call to ... [myPair:0] : |
| test.swift:463:51:463:58 | call to source() : | semmle.label | call to source() : |
| test.swift:464:19:464:19 | x | semmle.label | x |
| test.swift:467:17:467:41 | .myCons(...) [myCons:1, myPair:1] : | semmle.label | .myCons(...) [myCons:1, myPair:1] : |
| test.swift:467:28:467:40 | .myPair(...) [myPair:1] : | semmle.label | .myPair(...) [myPair:1] : |
| test.swift:467:39:467:39 | c : | semmle.label | c : |
| test.swift:468:19:468:19 | c | semmle.label | c |
| test.swift:471:12:471:17 | (...) [Tuple element at index 0, myPair:1] : | semmle.label | (...) [Tuple element at index 0, myPair:1] : |
| test.swift:471:12:471:17 | (...) [Tuple element at index 1, myCons:1, myPair:1] : | semmle.label | (...) [Tuple element at index 1, myCons:1, myPair:1] : |
| test.swift:471:13:471:13 | a [myPair:1] : | semmle.label | a [myPair:1] : |
| test.swift:472:14:472:55 | SSA def(b) : | semmle.label | SSA def(b) : |
| test.swift:471:16:471:16 | b [myCons:1, myPair:1] : | semmle.label | b [myCons:1, myPair:1] : |
| test.swift:472:14:472:55 | (...) [Tuple element at index 0, myPair:1] : | semmle.label | (...) [Tuple element at index 0, myPair:1] : |
| test.swift:472:14:472:55 | (...) [Tuple element at index 1, myCons:1, myPair:1] : | semmle.label | (...) [Tuple element at index 1, myCons:1, myPair:1] : |
| test.swift:472:15:472:27 | .myPair(...) [myPair:1] : | semmle.label | .myPair(...) [myPair:1] : |
| test.swift:472:26:472:26 | b : | semmle.label | b : |
| test.swift:472:30:472:54 | .myCons(...) [myCons:1, myPair:1] : | semmle.label | .myCons(...) [myCons:1, myPair:1] : |
| test.swift:472:41:472:53 | .myPair(...) [myPair:1] : | semmle.label | .myPair(...) [myPair:1] : |
| test.swift:472:52:472:52 | e : | semmle.label | e : |
| test.swift:474:19:474:19 | b | semmle.label | b |
| test.swift:486:13:486:28 | call to optionalSource() : | semmle.label | call to optionalSource() : |
| test.swift:477:19:477:19 | e | semmle.label | e |
| test.swift:486:13:486:28 | call to optionalSource() [some:0] : | semmle.label | call to optionalSource() [some:0] : |
| test.swift:488:8:488:12 | let ...? [some:0] : | semmle.label | let ...? [some:0] : |
| test.swift:488:12:488:12 | a : | semmle.label | a : |
| test.swift:489:19:489:19 | a | semmle.label | a |
| test.swift:509:9:509:9 | self [x] : | semmle.label | self [x] : |
| test.swift:509:9:509:9 | value : | semmle.label | value : |
| test.swift:513:13:513:28 | call to optionalSource() : | semmle.label | call to optionalSource() : |
| test.swift:515:5:515:5 | [post] cx [x] : | semmle.label | [post] cx [x] : |
| test.swift:515:12:515:12 | x : | semmle.label | x : |
| test.swift:519:20:519:20 | cx [x] : | semmle.label | cx [x] : |
| test.swift:519:20:519:23 | .x : | semmle.label | .x : |
| test.swift:493:18:493:23 | (...) [Tuple element at index 0, some:0] : | semmle.label | (...) [Tuple element at index 0, some:0] : |
| test.swift:493:19:493:19 | x [some:0] : | semmle.label | x [some:0] : |
| test.swift:495:10:495:37 | (...) [Tuple element at index 0, some:0] : | semmle.label | (...) [Tuple element at index 0, some:0] : |
| test.swift:495:11:495:22 | .some(...) [some:0] : | semmle.label | .some(...) [some:0] : |
| test.swift:495:21:495:21 | a : | semmle.label | a : |
| test.swift:496:19:496:19 | a | semmle.label | a |
| test.swift:509:9:509:9 | self [x, some:0] : | semmle.label | self [x, some:0] : |
| test.swift:509:9:509:9 | value [some:0] : | semmle.label | value [some:0] : |
| test.swift:513:13:513:28 | call to optionalSource() [some:0] : | semmle.label | call to optionalSource() [some:0] : |
| test.swift:515:5:515:5 | [post] cx [x, some:0] : | semmle.label | [post] cx [x, some:0] : |
| test.swift:515:12:515:12 | x [some:0] : | semmle.label | x [some:0] : |
| test.swift:519:11:519:15 | let ...? [some:0] : | semmle.label | let ...? [some:0] : |
| test.swift:519:15:519:15 | z1 : | semmle.label | z1 : |
| test.swift:519:20:519:20 | cx [x, some:0] : | semmle.label | cx [x, some:0] : |
| test.swift:519:20:519:23 | .x [some:0] : | semmle.label | .x [some:0] : |
| test.swift:520:15:520:15 | z1 | semmle.label | z1 |
| test.swift:526:13:526:21 | call to +(_:) | semmle.label | call to +(_:) |
| test.swift:526:14:526:21 | call to source() : | semmle.label | call to source() : |
@@ -434,9 +543,10 @@ subpaths
| test.swift:270:15:270:22 | call to source() : | file://:0:0:0:0 | [summary param] this in signum() : | file://:0:0:0:0 | [summary] to write: return (return) in signum() : | test.swift:270:15:270:31 | call to signum() |
| test.swift:271:15:271:16 | ...? : | file://:0:0:0:0 | [summary param] this in signum() : | file://:0:0:0:0 | [summary] to write: return (return) in signum() : | test.swift:271:15:271:25 | call to signum() : |
| test.swift:291:16:291:17 | ...? : | file://:0:0:0:0 | [summary param] this in signum() : | file://:0:0:0:0 | [summary] to write: return (return) in signum() : | test.swift:291:16:291:26 | call to signum() : |
| test.swift:291:16:291:17 | ...? [some:0] : | file://:0:0:0:0 | [summary param] this in signum() [some:0] : | file://:0:0:0:0 | [summary] to write: return (return) in signum() [some:0] : | test.swift:291:16:291:26 | call to signum() [some:0] : |
| test.swift:303:15:303:16 | ...! : | file://:0:0:0:0 | [summary param] this in signum() : | file://:0:0:0:0 | [summary] to write: return (return) in signum() : | test.swift:303:15:303:25 | call to signum() |
| test.swift:515:12:515:12 | x : | test.swift:509:9:509:9 | value : | file://:0:0:0:0 | [post] self [x] : | test.swift:515:5:515:5 | [post] cx [x] : |
| test.swift:519:20:519:20 | cx [x] : | test.swift:509:9:509:9 | self [x] : | file://:0:0:0:0 | .x : | test.swift:519:20:519:23 | .x : |
| test.swift:515:12:515:12 | x [some:0] : | test.swift:509:9:509:9 | value [some:0] : | file://:0:0:0:0 | [post] self [x, some:0] : | test.swift:515:5:515:5 | [post] cx [x, some:0] : |
| test.swift:519:20:519:20 | cx [x, some:0] : | test.swift:509:9:509:9 | self [x, some:0] : | file://:0:0:0:0 | .x [some:0] : | test.swift:519:20:519:23 | .x [some:0] : |
| test.swift:543:20:543:28 | call to source3() : | test.swift:536:10:536:13 | s : | test.swift:537:7:537:7 | [post] self [str] : | test.swift:543:7:543:7 | [post] self [str] : |
| test.swift:549:13:549:33 | call to MyClass.init(s:) [str] : | test.swift:535:9:535:9 | self [str] : | file://:0:0:0:0 | .str : | test.swift:549:13:549:35 | .str |
| test.swift:549:24:549:32 | call to source3() : | test.swift:536:10:536:13 | s : | test.swift:536:5:538:5 | self[return] [str] : | test.swift:549:13:549:33 | call to MyClass.init(s:) [str] : |
@@ -485,19 +595,26 @@ subpaths
| test.swift:300:15:300:15 | z1 | test.swift:259:12:259:19 | call to source() : | test.swift:300:15:300:15 | z1 | result |
| test.swift:303:15:303:25 | call to signum() | test.swift:259:12:259:19 | call to source() : | test.swift:303:15:303:25 | call to signum() | result |
| test.swift:307:19:307:19 | z | test.swift:259:12:259:19 | call to source() : | test.swift:307:19:307:19 | z | result |
| test.swift:315:19:315:19 | z | test.swift:259:12:259:19 | call to source() : | test.swift:315:19:315:19 | z | result |
| test.swift:335:15:335:18 | .1 | test.swift:331:18:331:25 | call to source() : | test.swift:335:15:335:18 | .1 | result |
| test.swift:346:15:346:18 | .0 | test.swift:343:12:343:19 | call to source() : | test.swift:346:15:346:18 | .0 | result |
| test.swift:356:15:356:18 | .0 | test.swift:351:18:351:25 | call to source() : | test.swift:356:15:356:18 | .0 | result |
| test.swift:357:15:357:18 | .1 | test.swift:351:31:351:38 | call to source() : | test.swift:357:15:357:18 | .1 | result |
| test.swift:360:15:360:18 | .0 | test.swift:351:18:351:25 | call to source() : | test.swift:360:15:360:18 | .0 | result |
| test.swift:361:15:361:18 | .1 | test.swift:351:31:351:38 | call to source() : | test.swift:361:15:361:18 | .1 | result |
| test.swift:363:15:363:15 | a | test.swift:351:18:351:25 | call to source() : | test.swift:363:15:363:15 | a | result |
| test.swift:364:15:364:15 | b | test.swift:351:31:351:38 | call to source() : | test.swift:364:15:364:15 | b | result |
| test.swift:404:19:404:19 | a | test.swift:398:19:398:26 | call to source() : | test.swift:404:19:404:19 | a | result |
| test.swift:413:19:413:19 | x | test.swift:398:19:398:26 | call to source() : | test.swift:413:19:413:19 | x | result |
| test.swift:429:19:429:19 | b | test.swift:420:26:420:33 | call to source() : | test.swift:429:19:429:19 | b | result |
| test.swift:439:19:439:19 | y | test.swift:420:26:420:33 | call to source() : | test.swift:439:19:439:19 | y | result |
| test.swift:455:19:455:19 | c | test.swift:420:26:420:33 | call to source() : | test.swift:455:19:455:19 | c | result |
| test.swift:464:19:464:19 | x | test.swift:463:51:463:58 | call to source() : | test.swift:464:19:464:19 | x | result |
| test.swift:468:19:468:19 | c | test.swift:420:26:420:33 | call to source() : | test.swift:468:19:468:19 | c | result |
| test.swift:474:19:474:19 | b | test.swift:420:26:420:33 | call to source() : | test.swift:474:19:474:19 | b | result |
| test.swift:477:19:477:19 | e | test.swift:420:26:420:33 | call to source() : | test.swift:477:19:477:19 | e | result |
| test.swift:489:19:489:19 | a | test.swift:259:12:259:19 | call to source() : | test.swift:489:19:489:19 | a | result |
| test.swift:496:19:496:19 | a | test.swift:259:12:259:19 | call to source() : | test.swift:496:19:496:19 | a | result |
| test.swift:520:15:520:15 | z1 | test.swift:259:12:259:19 | call to source() : | test.swift:520:15:520:15 | z1 | result |
| test.swift:526:13:526:21 | call to +(_:) | test.swift:526:14:526:21 | call to source() : | test.swift:526:13:526:21 | call to +(_:) | result |
| test.swift:527:14:527:21 | call to source() | test.swift:527:14:527:21 | call to source() | test.swift:527:14:527:21 | call to source() | result |

View File

@@ -1,5 +1,8 @@
| test.swift:6:9:6:13 | SSA def(t1) | test.swift:7:15:7:15 | t1 |
| test.swift:6:19:6:26 | call to source() | test.swift:6:9:6:13 | SSA def(t1) |
| test.swift:5:9:5:13 | ... as ... | test.swift:5:9:5:9 | t2 |
| test.swift:6:9:6:9 | SSA def(t1) | test.swift:7:15:7:15 | t1 |
| test.swift:6:9:6:9 | t1 | test.swift:6:9:6:9 | SSA def(t1) |
| test.swift:6:9:6:13 | ... as ... | test.swift:6:9:6:9 | t1 |
| test.swift:6:19:6:26 | call to source() | test.swift:6:9:6:13 | ... as ... |
| test.swift:7:15:7:15 | [post] t1 | test.swift:8:10:8:10 | t1 |
| test.swift:7:15:7:15 | t1 | test.swift:8:10:8:10 | t1 |
| test.swift:8:5:8:10 | SSA def(t2) | test.swift:10:15:10:15 | t2 |
@@ -18,8 +21,12 @@
| test.swift:29:26:29:29 | y | test.swift:29:26:29:29 | SSA def(y) |
| test.swift:42:16:42:19 | SSA def(b) | test.swift:45:8:45:8 | b |
| test.swift:42:16:42:19 | b | test.swift:42:16:42:19 | SSA def(b) |
| test.swift:43:9:43:13 | SSA def(t1) | test.swift:46:13:46:13 | t1 |
| test.swift:43:19:43:26 | call to source() | test.swift:43:9:43:13 | SSA def(t1) |
| test.swift:43:9:43:9 | SSA def(t1) | test.swift:46:13:46:13 | t1 |
| test.swift:43:9:43:9 | t1 | test.swift:43:9:43:9 | SSA def(t1) |
| test.swift:43:9:43:13 | ... as ... | test.swift:43:9:43:9 | t1 |
| test.swift:43:19:43:26 | call to source() | test.swift:43:9:43:13 | ... as ... |
| test.swift:44:9:44:12 | ... as ... | test.swift:44:9:44:9 | t |
| test.swift:44:18:44:18 | 0 | test.swift:44:9:44:12 | ... as ... |
| test.swift:46:9:46:13 | SSA def(t) | test.swift:50:5:50:5 | SSA phi(t) |
| test.swift:46:13:46:13 | t1 | test.swift:46:9:46:13 | SSA def(t) |
| test.swift:48:9:48:13 | SSA def(t) | test.swift:50:5:50:5 | SSA phi(t) |
@@ -27,8 +34,10 @@
| test.swift:50:5:50:5 | SSA phi(t) | test.swift:50:15:50:15 | t |
| test.swift:54:5:54:18 | SSA def(arg) | test.swift:53:1:56:1 | arg[return] |
| test.swift:54:11:54:18 | call to source() | test.swift:54:5:54:18 | SSA def(arg) |
| test.swift:59:9:59:12 | SSA def(x) | test.swift:60:15:60:15 | x |
| test.swift:59:18:59:18 | 0 | test.swift:59:9:59:12 | SSA def(x) |
| test.swift:59:9:59:9 | SSA def(x) | test.swift:60:15:60:15 | x |
| test.swift:59:9:59:9 | x | test.swift:59:9:59:9 | SSA def(x) |
| test.swift:59:9:59:12 | ... as ... | test.swift:59:9:59:9 | x |
| test.swift:59:18:59:18 | 0 | test.swift:59:9:59:12 | ... as ... |
| 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 |
@@ -38,16 +47,22 @@
| test.swift:65:16:65:28 | arg1 | test.swift:65:16:65:28 | SSA def(arg1) |
| test.swift:65:33:65:45 | SSA def(arg2) | test.swift:67:12:67:12 | arg2 |
| test.swift:65:33:65:45 | arg2 | test.swift:65:33:65:45 | SSA def(arg2) |
| test.swift:66:9:66:15 | SSA def(temp) | test.swift:68:12:68:12 | temp |
| test.swift:66:21:66:21 | arg1 | test.swift:66:9:66:15 | SSA def(temp) |
| test.swift:66:9:66:9 | SSA def(temp) | test.swift:68:12:68:12 | temp |
| test.swift:66:9:66:9 | temp | test.swift:66:9:66:9 | SSA def(temp) |
| test.swift:66:9:66:15 | ... as ... | test.swift:66:9:66:9 | temp |
| test.swift:66:21:66:21 | arg1 | test.swift:66:9:66:15 | ... as ... |
| test.swift:67:5:67:12 | SSA def(arg1) | test.swift:65:1:70:1 | arg1[return] |
| test.swift:67:12:67:12 | arg2 | test.swift:67:5:67:12 | SSA def(arg1) |
| test.swift:68:5:68:12 | SSA def(arg2) | test.swift:65:1:70:1 | arg2[return] |
| test.swift:68:12:68:12 | temp | test.swift:68:5:68:12 | SSA def(arg2) |
| test.swift:73:9:73:12 | SSA def(x) | test.swift:75:22:75:22 | x |
| test.swift:73:18:73:25 | call to source() | test.swift:73:9:73:12 | SSA def(x) |
| test.swift:74:9:74:12 | SSA def(y) | test.swift:75:32:75:32 | y |
| test.swift:74:18:74:18 | 0 | test.swift:74:9:74:12 | SSA def(y) |
| test.swift:73:9:73:9 | SSA def(x) | test.swift:75:22:75:22 | x |
| test.swift:73:9:73:9 | x | test.swift:73:9:73:9 | SSA def(x) |
| test.swift:73:9:73:12 | ... as ... | test.swift:73:9:73:9 | x |
| test.swift:73:18:73:25 | call to source() | test.swift:73:9:73:12 | ... as ... |
| test.swift:74:9:74:9 | SSA def(y) | test.swift:75:32:75:32 | y |
| test.swift:74:9:74:9 | y | test.swift:74:9:74:9 | SSA def(y) |
| 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:76:15:76:15 | x |
| test.swift:75:22:75:22 | x | test.swift:75:21:75:22 | &... |
@@ -65,15 +80,19 @@
| test.swift:89:15:89:22 | call to source() | test.swift:89:9:89:22 | SSA def(arg) |
| test.swift:93:17:93:23 | SSA def(bool) | test.swift:104:50:104:50 | bool |
| test.swift:93:17:93:23 | bool | test.swift:93:17:93:23 | SSA def(bool) |
| test.swift:95:13:95:16 | SSA def(x) | test.swift:96:19:96:19 | x |
| test.swift:95:22:95:22 | 0 | test.swift:95:13:95:16 | SSA def(x) |
| test.swift:95:13:95:13 | SSA def(x) | test.swift:96:19:96:19 | x |
| test.swift:95:13:95:13 | x | test.swift:95:13:95:13 | SSA def(x) |
| test.swift:95:13:95:16 | ... as ... | test.swift:95:13:95:13 | x |
| test.swift:95:22:95:22 | 0 | test.swift:95:13:95:16 | ... as ... |
| 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:98:19:98:19 | x |
| test.swift:97:40:97:40 | x | test.swift:97:39:97:40 | &... |
| test.swift:102:13:102:16 | SSA def(x) | test.swift:103:19:103:19 | x |
| test.swift:102:22:102:22 | 0 | test.swift:102:13:102:16 | SSA def(x) |
| test.swift:102:13:102:13 | SSA def(x) | test.swift:103:19:103:19 | x |
| test.swift:102:13:102:13 | x | test.swift:102:13:102:13 | SSA def(x) |
| test.swift:102:13:102:16 | ... as ... | test.swift:102:13:102:13 | x |
| test.swift:102:22:102:22 | 0 | test.swift:102:13:102:16 | ... as ... |
| 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 |
@@ -85,25 +104,37 @@
| test.swift:113:14:113:19 | arg | test.swift:113:14:113:19 | SSA def(arg) |
| test.swift:113:24:113:41 | SSA def(lambda) | test.swift:114:12:114:12 | lambda |
| test.swift:113:24:113:41 | lambda | test.swift:113:24:113:41 | SSA def(lambda) |
| test.swift:118:9:118:12 | SSA def(x) | test.swift:119:31:119:31 | x |
| test.swift:118:18:118:25 | call to source() | test.swift:118:9:118:12 | SSA def(x) |
| test.swift:119:9:119:12 | SSA def(y) | test.swift:120:15:120:15 | y |
| test.swift:119:18:119:44 | call to forward(arg:lambda:) | test.swift:119:9:119:12 | SSA def(y) |
| test.swift:122:9:122:12 | SSA def(z) | test.swift:126:15:126:15 | z |
| test.swift:122:18:125:6 | call to forward(arg:lambda:) | test.swift:122:9:122:12 | SSA def(z) |
| test.swift:118:9:118:9 | SSA def(x) | test.swift:119:31:119:31 | x |
| test.swift:118:9:118:9 | x | test.swift:118:9:118:9 | SSA def(x) |
| test.swift:118:9:118:12 | ... as ... | test.swift:118:9:118:9 | x |
| test.swift:118:18:118:25 | call to source() | test.swift:118:9:118:12 | ... as ... |
| test.swift:119:9:119:9 | SSA def(y) | test.swift:120:15:120:15 | y |
| test.swift:119:9:119:9 | y | test.swift:119:9:119:9 | SSA def(y) |
| test.swift:119:9:119:12 | ... as ... | test.swift:119:9:119:9 | y |
| test.swift:119:18:119:44 | call to forward(arg:lambda:) | test.swift:119:9:119:12 | ... as ... |
| test.swift:122:9:122:9 | SSA def(z) | test.swift:126:15:126:15 | z |
| test.swift:122:9:122:9 | z | test.swift:122:9:122:9 | SSA def(z) |
| test.swift:122:9:122:12 | ... as ... | test.swift:122:9:122:9 | z |
| test.swift:122:18:125:6 | call to forward(arg:lambda:) | test.swift:122:9:122:12 | ... as ... |
| test.swift:123:10:123:13 | SSA def(i) | test.swift:124:16:124:16 | i |
| test.swift:123:10:123:13 | i | test.swift:123:10:123:13 | SSA def(i) |
| test.swift:128:9:128:16 | SSA def(clean) | test.swift:132:15:132:15 | clean |
| test.swift:128:22:131:6 | call to forward(arg:lambda:) | test.swift:128:9:128:16 | SSA def(clean) |
| test.swift:128:9:128:9 | SSA def(clean) | test.swift:132:15:132:15 | clean |
| test.swift:128:9:128:9 | clean | test.swift:128:9:128:9 | SSA def(clean) |
| test.swift:128:9:128:16 | ... as ... | test.swift:128:9:128:9 | clean |
| test.swift:128:22:131:6 | call to forward(arg:lambda:) | test.swift:128:9:128:16 | ... as ... |
| test.swift:136:19:139:5 | { ... } | test.swift:136:9:136:9 | lambda1 |
| test.swift:141:9:141:9 | SSA def(lambda2) | test.swift:145:15:145:15 | lambda2 |
| test.swift:141:19:144:5 | { ... } | test.swift:141:9:141:9 | SSA def(lambda2) |
| test.swift:141:9:141:9 | lambda2 | test.swift:141:9:141:9 | SSA def(lambda2) |
| test.swift:141:19:144:5 | { ... } | test.swift:141:9:141:9 | lambda2 |
| test.swift:142:10:142:13 | SSA def(i) | test.swift:143:16:143:16 | i |
| test.swift:142:10:142:13 | i | test.swift:142:10:142:13 | SSA def(i) |
| test.swift:147:9:147:9 | SSA def(lambdaSource) | test.swift:151:15:151:15 | lambdaSource |
| test.swift:147:24:150:5 | { ... } | test.swift:147:9:147:9 | SSA def(lambdaSource) |
| test.swift:147:9:147:9 | lambdaSource | test.swift:147:9:147:9 | SSA def(lambdaSource) |
| test.swift:147:24:150:5 | { ... } | test.swift:147:9:147:9 | lambdaSource |
| test.swift:151:15:151:15 | lambdaSource | test.swift:159:16:159:16 | lambdaSource |
| test.swift:153:9:153:9 | SSA def(lambdaSink) | test.swift:157:5:157:5 | lambdaSink |
| test.swift:153:22:156:5 | { ... } | test.swift:153:9:153:9 | SSA def(lambdaSink) |
| test.swift:153:9:153:9 | lambdaSink | test.swift:153:9:153:9 | SSA def(lambdaSink) |
| test.swift:153:22:156:5 | { ... } | test.swift:153:9:153:9 | lambdaSink |
| test.swift:154:10:154:13 | SSA def(i) | test.swift:155:19:155:19 | i |
| test.swift:154:10:154:13 | i | test.swift:154:10:154:13 | SSA def(i) |
| test.swift:157:5:157:5 | lambdaSink | test.swift:159:5:159:5 | lambdaSink |
@@ -128,7 +159,8 @@
| test.swift:174:12:174:12 | [post] self | test.swift:173:3:175:3 | self[return] |
| test.swift:174:12:174:12 | self | test.swift:173:3:175:3 | self[return] |
| test.swift:179:7:179:7 | SSA def(a) | test.swift:180:3:180:3 | a |
| test.swift:179:11:179:13 | call to A.init() | test.swift:179:7:179:7 | SSA def(a) |
| test.swift:179:7:179:7 | a | test.swift:179:7:179:7 | SSA def(a) |
| test.swift:179:11:179:13 | call to A.init() | test.swift:179:7:179:7 | a |
| test.swift:180:3:180:3 | [post] a | test.swift:181:13:181:13 | a |
| test.swift:180:3:180:3 | a | test.swift:181:13:181:13 | a |
| test.swift:184:7:184:7 | SSA def(self) | test.swift:184:7:184:7 | self[return] |
@@ -142,23 +174,28 @@
| test.swift:188:5:188:5 | [post] self | test.swift:187:3:189:3 | self[return] |
| test.swift:188:5:188:5 | self | test.swift:187:3:189:3 | self[return] |
| test.swift:193:7:193:7 | SSA def(b) | test.swift:194:3:194:3 | b |
| test.swift:193:11:193:13 | call to B.init() | test.swift:193:7:193:7 | SSA def(b) |
| test.swift:193:7:193:7 | b | test.swift:193:7:193:7 | SSA def(b) |
| test.swift:193:11:193:13 | call to B.init() | test.swift:193:7:193:7 | b |
| test.swift:194:3:194:3 | [post] b | test.swift:195:13:195:13 | b |
| test.swift:194:3:194:3 | b | test.swift:195:13:195:13 | b |
| test.swift:199:7:199:7 | SSA def(a) | test.swift:200:3:200:3 | a |
| test.swift:199:11:199:13 | call to A.init() | test.swift:199:7:199:7 | SSA def(a) |
| test.swift:199:7:199:7 | a | test.swift:199:7:199:7 | SSA def(a) |
| test.swift:199:11:199:13 | call to A.init() | test.swift:199:7:199:7 | a |
| test.swift:200:3:200:3 | [post] a | test.swift:201:13:201:13 | a |
| test.swift:200:3:200:3 | a | test.swift:201:13:201:13 | a |
| test.swift:205:7:205:7 | SSA def(a) | test.swift:206:3:206:3 | a |
| test.swift:205:11:205:13 | call to A.init() | test.swift:205:7:205:7 | SSA def(a) |
| test.swift:205:7:205:7 | a | test.swift:205:7:205:7 | SSA def(a) |
| test.swift:205:11:205:13 | call to A.init() | test.swift:205:7:205:7 | a |
| test.swift:206:3:206:3 | [post] a | test.swift:207:13:207:13 | a |
| test.swift:206:3:206:3 | a | test.swift:207:13:207:13 | a |
| test.swift:211:7:211:7 | SSA def(a) | test.swift:212:3:212:3 | a |
| test.swift:211:11:211:13 | call to A.init() | test.swift:211:7:211:7 | SSA def(a) |
| test.swift:211:7:211:7 | a | test.swift:211:7:211:7 | SSA def(a) |
| test.swift:211:11:211:13 | call to A.init() | test.swift:211:7:211:7 | a |
| test.swift:212:3:212:3 | [post] a | test.swift:213:13:213:13 | a |
| test.swift:212:3:212:3 | a | test.swift:213:13:213:13 | a |
| test.swift:217:7:217:7 | SSA def(b) | test.swift:218:3:218:3 | b |
| test.swift:217:11:217:13 | call to B.init() | test.swift:217:7:217:7 | SSA def(b) |
| test.swift:217:7:217:7 | b | test.swift:217:7:217:7 | SSA def(b) |
| test.swift:217:11:217:13 | call to B.init() | test.swift:217:7:217:7 | b |
| test.swift:218:3:218:3 | [post] b | test.swift:219:13:219:13 | b |
| test.swift:218:3:218:3 | b | test.swift:219:13:219:13 | b |
| test.swift:222:7:222:7 | SSA def(self) | test.swift:222:7:222:7 | self[return] |
@@ -171,7 +208,8 @@
| test.swift:227:5:227:5 | SSA def(self) | test.swift:227:5:229:5 | self[return] |
| test.swift:227:5:227:5 | self | test.swift:227:5:227:5 | SSA def(self) |
| test.swift:234:7:234:7 | SSA def(a) | test.swift:235:13:235:13 | a |
| test.swift:234:11:234:31 | call to HasComputedProperty.init() | test.swift:234:7:234:7 | SSA def(a) |
| test.swift:234:7:234:7 | a | test.swift:234:7:234:7 | SSA def(a) |
| test.swift:234:11:234:31 | call to HasComputedProperty.init() | test.swift:234:7:234:7 | a |
| test.swift:235:13:235:13 | [post] a | test.swift:237:3:237:3 | a |
| test.swift:235:13:235:13 | a | test.swift:237:3:237:3 | a |
| test.swift:237:3:237:3 | [post] a | test.swift:238:13:238:13 | a |
@@ -188,11 +226,13 @@
| test.swift:246:5:246:5 | self | test.swift:246:5:246:5 | SSA def(self) |
| test.swift:247:9:247:9 | [post] self | test.swift:246:5:248:5 | self[return] |
| test.swift:247:9:247:9 | self | test.swift:246:5:248:5 | self[return] |
| test.swift:252:6:252:27 | call to DidSetSource.init(wrappedValue:) | test.swift:252:23:252:23 | x |
| test.swift:252:23:252:23 | value | test.swift:252:23:252:23 | SSA def(value) |
| test.swift:262:21:262:27 | SSA def(y) | test.swift:266:15:266:15 | y |
| test.swift:262:21:262:27 | y | test.swift:262:21:262:27 | SSA def(y) |
| test.swift:263:9:263:9 | SSA def(x) | test.swift:265:15:265:15 | x |
| test.swift:263:13:263:28 | call to optionalSource() | test.swift:263:9:263:9 | SSA def(x) |
| test.swift:263:9:263:9 | x | test.swift:263:9:263:9 | SSA def(x) |
| test.swift:263:13:263:28 | call to optionalSource() | test.swift:263:9:263:9 | x |
| test.swift:265:15:265:15 | x | test.swift:267:15:267:15 | x |
| test.swift:266:15:266:15 | y | test.swift:268:15:268:15 | y |
| test.swift:267:15:267:15 | x | test.swift:267:15:267:16 | ...! |
@@ -241,42 +281,57 @@
| test.swift:282:26:282:26 | y | test.swift:287:16:287:16 | y |
| test.swift:282:26:282:27 | ...! | test.swift:282:15:282:38 | ... ? ... : ... |
| test.swift:282:31:282:38 | call to source() | test.swift:282:15:282:38 | ... ? ... : ... |
| test.swift:284:8:284:12 | SSA def(z) | test.swift:285:19:285:19 | z |
| test.swift:284:16:284:16 | x | test.swift:284:8:284:12 | SSA def(z) |
| test.swift:284:12:284:12 | SSA def(z) | test.swift:285:19:285:19 | z |
| test.swift:284:12:284:12 | z | test.swift:284:12:284:12 | SSA def(z) |
| test.swift:284:16:284:16 | x | test.swift:284:8:284:12 | let ...? |
| test.swift:284:16:284:16 | x | test.swift:291:16:291:16 | x |
| test.swift:287:8:287:12 | SSA def(z) | test.swift:288:19:288:19 | z |
| test.swift:287:16:287:16 | y | test.swift:287:8:287:12 | SSA def(z) |
| test.swift:287:12:287:12 | SSA def(z) | test.swift:288:19:288:19 | z |
| test.swift:287:12:287:12 | z | test.swift:287:12:287:12 | SSA def(z) |
| test.swift:287:16:287:16 | y | test.swift:287:8:287:12 | let ...? |
| test.swift:287:16:287:16 | y | test.swift:294:16:294:16 | y |
| test.swift:291:8:291:12 | SSA def(z) | test.swift:292:19:292:19 | z |
| test.swift:291:12:291:12 | SSA def(z) | test.swift:292:19:292:19 | z |
| test.swift:291:12:291:12 | z | test.swift:291:12:291:12 | SSA def(z) |
| test.swift:291:16:291:16 | x | test.swift:291:16:291:17 | ...? |
| test.swift:291:16:291:16 | x | test.swift:298:20:298:20 | x |
| test.swift:291:16:291:26 | OptionalEvaluationExpr | test.swift:291:8:291:12 | SSA def(z) |
| test.swift:291:16:291:26 | OptionalEvaluationExpr | test.swift:291:8:291:12 | let ...? |
| test.swift:291:16:291:26 | call to signum() | test.swift:291:16:291:26 | OptionalEvaluationExpr |
| test.swift:294:8:294:12 | SSA def(z) | test.swift:295:19:295:19 | z |
| test.swift:294:12:294:12 | SSA def(z) | test.swift:295:19:295:19 | z |
| test.swift:294:12:294:12 | z | test.swift:294:12:294:12 | SSA def(z) |
| test.swift:294:16:294:16 | y | test.swift:294:16:294:17 | ...? |
| test.swift:294:16:294:16 | y | test.swift:299:20:299:20 | y |
| test.swift:294:16:294:26 | OptionalEvaluationExpr | test.swift:294:8:294:12 | SSA def(z) |
| test.swift:294:16:294:26 | OptionalEvaluationExpr | test.swift:294:8:294:12 | let ...? |
| test.swift:294:16:294:26 | call to signum() | test.swift:294:16:294:26 | OptionalEvaluationExpr |
| test.swift:298:11:298:15 | SSA def(z1) | test.swift:300:15:300:15 | z1 |
| test.swift:298:20:298:20 | x | test.swift:298:11:298:15 | SSA def(z1) |
| test.swift:298:15:298:15 | SSA def(z1) | test.swift:300:15:300:15 | z1 |
| test.swift:298:15:298:15 | z1 | test.swift:298:15:298:15 | SSA def(z1) |
| test.swift:298:20:298:20 | x | test.swift:298:11:298:15 | let ...? |
| test.swift:298:20:298:20 | x | test.swift:303:15:303:15 | x |
| test.swift:299:11:299:15 | SSA def(z2) | test.swift:301:15:301:15 | z2 |
| test.swift:299:20:299:20 | y | test.swift:299:11:299:15 | SSA def(z2) |
| test.swift:299:15:299:15 | SSA def(z2) | test.swift:301:15:301:15 | z2 |
| test.swift:299:15:299:15 | z2 | test.swift:299:15:299:15 | SSA def(z2) |
| test.swift:299:20:299:20 | y | test.swift:299:11:299:15 | let ...? |
| test.swift:299:20:299:20 | y | test.swift:304:15:304:15 | y |
| test.swift:303:15:303:15 | x | test.swift:303:15:303:16 | ...! |
| test.swift:303:15:303:15 | x | test.swift:306:28:306:28 | x |
| test.swift:304:15:304:15 | y | test.swift:304:15:304:16 | ...! |
| test.swift:304:15:304:15 | y | test.swift:309:28:309:28 | y |
| test.swift:306:13:306:24 | SSA def(z) | test.swift:307:19:307:19 | z |
| test.swift:306:28:306:28 | x | test.swift:306:13:306:24 | SSA def(z) |
| test.swift:306:23:306:23 | SSA def(z) | test.swift:307:19:307:19 | z |
| test.swift:306:23:306:23 | z | test.swift:306:23:306:23 | SSA def(z) |
| test.swift:306:28:306:28 | x | test.swift:306:13:306:24 | .some(...) |
| test.swift:306:28:306:28 | x | test.swift:313:12:313:12 | x |
| test.swift:309:13:309:24 | SSA def(z) | test.swift:310:19:310:19 | z |
| test.swift:309:28:309:28 | y | test.swift:309:13:309:24 | SSA def(z) |
| test.swift:309:23:309:23 | SSA def(z) | test.swift:310:19:310:19 | z |
| test.swift:309:23:309:23 | z | test.swift:309:23:309:23 | SSA def(z) |
| test.swift:309:28:309:28 | y | test.swift:309:13:309:24 | .some(...) |
| test.swift:309:28:309:28 | y | test.swift:319:12:319:12 | y |
| test.swift:314:10:314:21 | SSA def(z) | test.swift:315:19:315:19 | z |
| test.swift:320:10:320:21 | SSA def(z) | test.swift:321:19:321:19 | z |
| test.swift:313:12:313:12 | x | test.swift:314:10:314:21 | .some(...) |
| test.swift:313:12:313:12 | x | test.swift:316:10:316:11 | .none |
| test.swift:314:20:314:20 | SSA def(z) | test.swift:315:19:315:19 | z |
| test.swift:314:20:314:20 | z | test.swift:314:20:314:20 | SSA def(z) |
| test.swift:319:12:319:12 | y | test.swift:320:10:320:21 | .some(...) |
| test.swift:319:12:319:12 | y | test.swift:322:10:322:11 | .none |
| test.swift:320:20:320:20 | SSA def(z) | test.swift:321:19:321:19 | z |
| test.swift:320:20:320:20 | z | test.swift:320:20:320:20 | SSA def(z) |
| test.swift:331:9:331:9 | SSA def(t1) | test.swift:333:15:333:15 | t1 |
| test.swift:331:14:331:26 | (...) | test.swift:331:9:331:9 | SSA def(t1) |
| test.swift:331:9:331:9 | t1 | test.swift:331:9:331:9 | SSA def(t1) |
| test.swift:331:14:331:26 | (...) | test.swift:331:9:331:9 | t1 |
| test.swift:333:15:333:15 | t1 | test.swift:334:15:334:15 | t1 |
| test.swift:334:15:334:15 | [post] t1 | test.swift:335:15:335:15 | t1 |
| test.swift:334:15:334:15 | t1 | test.swift:335:15:335:15 | t1 |
@@ -295,16 +350,19 @@
| test.swift:346:15:346:15 | [post] t1 | test.swift:347:15:347:15 | t1 |
| test.swift:346:15:346:15 | t1 | test.swift:347:15:347:15 | t1 |
| test.swift:351:9:351:9 | SSA def(t1) | test.swift:352:14:352:14 | t1 |
| test.swift:351:14:351:45 | (...) | test.swift:351:9:351:9 | SSA def(t1) |
| test.swift:351:9:351:9 | t1 | test.swift:351:9:351:9 | SSA def(t1) |
| test.swift:351:14:351:45 | (...) | test.swift:351:9:351:9 | t1 |
| test.swift:352:9:352:9 | SSA def(t2) | test.swift:359:15:359:15 | t2 |
| test.swift:352:14:352:14 | t1 | test.swift:352:9:352:9 | SSA def(t2) |
| test.swift:352:9:352:9 | t2 | test.swift:352:9:352:9 | SSA def(t2) |
| test.swift:352:14:352:14 | t1 | test.swift:352:9:352:9 | t2 |
| test.swift:352:14:352:14 | t1 | test.swift:353:21:353:21 | t1 |
| test.swift:353:9:353:17 | SSA def(a) | test.swift:363:15:363:15 | a |
| test.swift:353:9:353:17 | SSA def(b) | test.swift:364:15:364:15 | b |
| test.swift:353:9:353:17 | SSA def(c) | test.swift:365:15:365:15 | c |
| test.swift:353:21:353:21 | t1 | test.swift:353:9:353:17 | SSA def(a) |
| test.swift:353:21:353:21 | t1 | test.swift:353:9:353:17 | SSA def(b) |
| test.swift:353:21:353:21 | t1 | test.swift:353:9:353:17 | SSA def(c) |
| test.swift:353:10:353:10 | SSA def(a) | test.swift:363:15:363:15 | a |
| test.swift:353:10:353:10 | a | test.swift:353:10:353:10 | SSA def(a) |
| test.swift:353:13:353:13 | SSA def(b) | test.swift:364:15:364:15 | b |
| test.swift:353:13:353:13 | b | test.swift:353:13:353:13 | SSA def(b) |
| test.swift:353:16:353:16 | SSA def(c) | test.swift:365:15:365:15 | c |
| test.swift:353:16:353:16 | c | test.swift:353:16:353:16 | SSA def(c) |
| test.swift:353:21:353:21 | t1 | test.swift:353:9:353:17 | (...) |
| test.swift:353:21:353:21 | t1 | test.swift:355:15:355:15 | t1 |
| test.swift:355:15:355:15 | t1 | test.swift:356:15:356:15 | t1 |
| test.swift:356:15:356:15 | [post] t1 | test.swift:357:15:357:15 | t1 |
@@ -316,84 +374,173 @@
| test.swift:360:15:360:15 | t2 | test.swift:361:15:361:15 | t2 |
| test.swift:361:15:361:15 | [post] t2 | test.swift:362:15:362:15 | t2 |
| test.swift:361:15:361:15 | t2 | test.swift:362:15:362:15 | t2 |
| test.swift:376:9:376:13 | SSA def(a) | test.swift:378:12:378:12 | a |
| test.swift:376:22:376:23 | .myNone | test.swift:376:9:376:13 | SSA def(a) |
| test.swift:376:9:376:9 | SSA def(a) | test.swift:378:12:378:12 | a |
| test.swift:376:9:376:9 | a | test.swift:376:9:376:9 | SSA def(a) |
| test.swift:376:9:376:13 | ... as ... | test.swift:376:9:376:9 | a |
| test.swift:376:22:376:23 | .myNone | test.swift:376:9:376:13 | ... as ... |
| test.swift:378:12:378:12 | a | test.swift:379:10:379:11 | .myNone |
| test.swift:378:12:378:12 | a | test.swift:381:10:381:25 | .mySingle(...) |
| test.swift:378:12:378:12 | a | test.swift:383:10:383:30 | .myPair(...) |
| test.swift:378:12:378:12 | a | test.swift:386:14:386:26 | .myCons(...) |
| test.swift:378:12:378:12 | a | test.swift:390:32:390:32 | a |
| test.swift:381:10:381:25 | SSA def(a) | test.swift:382:19:382:19 | a |
| test.swift:383:10:383:30 | SSA def(a) | test.swift:384:19:384:19 | a |
| test.swift:383:10:383:30 | SSA def(b) | test.swift:385:19:385:19 | b |
| test.swift:386:14:386:26 | SSA def(a) | test.swift:387:19:387:19 | a |
| test.swift:390:13:390:28 | SSA def(x) | test.swift:391:19:391:19 | x |
| test.swift:390:32:390:32 | a | test.swift:390:13:390:28 | SSA def(x) |
| test.swift:381:24:381:24 | SSA def(a) | test.swift:382:19:382:19 | a |
| test.swift:381:24:381:24 | a | test.swift:381:24:381:24 | SSA def(a) |
| test.swift:383:22:383:22 | SSA def(a) | test.swift:384:19:384:19 | a |
| test.swift:383:22:383:22 | a | test.swift:383:22:383:22 | SSA def(a) |
| test.swift:383:29:383:29 | SSA def(b) | test.swift:385:19:385:19 | b |
| test.swift:383:29:383:29 | b | test.swift:383:29:383:29 | SSA def(b) |
| test.swift:386:10:386:26 | SSA phi(a) | test.swift:387:19:387:19 | a |
| test.swift:386:22:386:22 | SSA def(a) | test.swift:386:10:386:26 | SSA phi(a) |
| test.swift:386:22:386:22 | a | test.swift:386:22:386:22 | SSA def(a) |
| test.swift:390:27:390:27 | SSA def(x) | test.swift:391:19:391:19 | x |
| test.swift:390:27:390:27 | x | test.swift:390:27:390:27 | SSA def(x) |
| test.swift:390:32:390:32 | a | test.swift:390:13:390:28 | .mySingle(...) |
| test.swift:390:32:390:32 | a | test.swift:393:37:393:37 | a |
| test.swift:393:13:393:33 | SSA def(x) | test.swift:394:19:394:19 | x |
| test.swift:393:13:393:33 | SSA def(y) | test.swift:395:19:395:19 | y |
| test.swift:393:25:393:25 | SSA def(x) | test.swift:394:19:394:19 | x |
| test.swift:393:25:393:25 | x | test.swift:393:25:393:25 | SSA def(x) |
| test.swift:393:32:393:32 | SSA def(y) | test.swift:395:19:395:19 | y |
| test.swift:393:32:393:32 | y | test.swift:393:32:393:32 | SSA def(y) |
| test.swift:393:37:393:37 | a | test.swift:393:13:393:33 | .myPair(...) |
| test.swift:398:5:398:27 | SSA def(a) | test.swift:400:12:400:12 | a |
| test.swift:398:9:398:27 | call to ... | test.swift:398:5:398:27 | SSA def(a) |
| test.swift:400:12:400:12 | a | test.swift:401:10:401:11 | .myNone |
| test.swift:400:12:400:12 | a | test.swift:403:10:403:25 | .mySingle(...) |
| test.swift:400:12:400:12 | a | test.swift:405:10:405:30 | .myPair(...) |
| test.swift:400:12:400:12 | a | test.swift:408:14:408:26 | .myCons(...) |
| test.swift:400:12:400:12 | a | test.swift:412:32:412:32 | a |
| test.swift:403:10:403:25 | SSA def(a) | test.swift:404:19:404:19 | a |
| test.swift:405:10:405:30 | SSA def(a) | test.swift:406:19:406:19 | a |
| test.swift:405:10:405:30 | SSA def(b) | test.swift:407:19:407:19 | b |
| test.swift:408:14:408:26 | SSA def(a) | test.swift:409:19:409:19 | a |
| test.swift:412:13:412:28 | SSA def(x) | test.swift:413:19:413:19 | x |
| test.swift:412:32:412:32 | a | test.swift:412:13:412:28 | SSA def(x) |
| test.swift:403:24:403:24 | SSA def(a) | test.swift:404:19:404:19 | a |
| test.swift:403:24:403:24 | a | test.swift:403:24:403:24 | SSA def(a) |
| test.swift:405:22:405:22 | SSA def(a) | test.swift:406:19:406:19 | a |
| test.swift:405:22:405:22 | a | test.swift:405:22:405:22 | SSA def(a) |
| test.swift:405:29:405:29 | SSA def(b) | test.swift:407:19:407:19 | b |
| test.swift:405:29:405:29 | b | test.swift:405:29:405:29 | SSA def(b) |
| test.swift:408:10:408:26 | SSA phi(a) | test.swift:409:19:409:19 | a |
| test.swift:408:22:408:22 | SSA def(a) | test.swift:408:10:408:26 | SSA phi(a) |
| test.swift:408:22:408:22 | a | test.swift:408:22:408:22 | SSA def(a) |
| test.swift:412:27:412:27 | SSA def(x) | test.swift:413:19:413:19 | x |
| test.swift:412:27:412:27 | x | test.swift:412:27:412:27 | SSA def(x) |
| test.swift:412:32:412:32 | a | test.swift:412:13:412:28 | .mySingle(...) |
| test.swift:412:32:412:32 | a | test.swift:415:37:415:37 | a |
| test.swift:415:13:415:33 | SSA def(x) | test.swift:416:19:416:19 | x |
| test.swift:415:13:415:33 | SSA def(y) | test.swift:417:19:417:19 | y |
| test.swift:415:25:415:25 | SSA def(x) | test.swift:416:19:416:19 | x |
| test.swift:415:25:415:25 | x | test.swift:415:25:415:25 | SSA def(x) |
| test.swift:415:32:415:32 | SSA def(y) | test.swift:417:19:417:19 | y |
| test.swift:415:32:415:32 | y | test.swift:415:32:415:32 | SSA def(y) |
| test.swift:415:37:415:37 | a | test.swift:415:13:415:33 | .myPair(...) |
| test.swift:420:5:420:34 | SSA def(a) | test.swift:422:12:422:12 | a |
| test.swift:420:9:420:34 | call to ... | test.swift:420:5:420:34 | SSA def(a) |
| test.swift:422:12:422:12 | a | test.swift:423:10:423:11 | .myNone |
| test.swift:422:12:422:12 | a | test.swift:425:10:425:25 | .mySingle(...) |
| test.swift:422:12:422:12 | a | test.swift:427:10:427:30 | .myPair(...) |
| test.swift:422:12:422:12 | a | test.swift:430:14:430:26 | .myCons(...) |
| test.swift:422:12:422:12 | a | test.swift:434:32:434:32 | a |
| test.swift:425:10:425:25 | SSA def(a) | test.swift:426:19:426:19 | a |
| test.swift:427:10:427:30 | SSA def(a) | test.swift:428:19:428:19 | a |
| test.swift:427:10:427:30 | SSA def(b) | test.swift:429:19:429:19 | b |
| test.swift:430:14:430:26 | SSA def(a) | test.swift:431:19:431:19 | a |
| test.swift:434:13:434:28 | SSA def(x) | test.swift:435:19:435:19 | x |
| test.swift:434:32:434:32 | a | test.swift:434:13:434:28 | SSA def(x) |
| test.swift:425:24:425:24 | SSA def(a) | test.swift:426:19:426:19 | a |
| test.swift:425:24:425:24 | a | test.swift:425:24:425:24 | SSA def(a) |
| test.swift:427:22:427:22 | SSA def(a) | test.swift:428:19:428:19 | a |
| test.swift:427:22:427:22 | a | test.swift:427:22:427:22 | SSA def(a) |
| test.swift:427:29:427:29 | SSA def(b) | test.swift:429:19:429:19 | b |
| test.swift:427:29:427:29 | b | test.swift:427:29:427:29 | SSA def(b) |
| test.swift:430:10:430:26 | SSA phi(a) | test.swift:431:19:431:19 | a |
| test.swift:430:22:430:22 | SSA def(a) | test.swift:430:10:430:26 | SSA phi(a) |
| test.swift:430:22:430:22 | a | test.swift:430:22:430:22 | SSA def(a) |
| test.swift:434:27:434:27 | SSA def(x) | test.swift:435:19:435:19 | x |
| test.swift:434:27:434:27 | x | test.swift:434:27:434:27 | SSA def(x) |
| test.swift:434:32:434:32 | a | test.swift:434:13:434:28 | .mySingle(...) |
| test.swift:434:32:434:32 | a | test.swift:437:37:437:37 | a |
| test.swift:437:13:437:33 | SSA def(x) | test.swift:438:19:438:19 | x |
| test.swift:437:13:437:33 | SSA def(y) | test.swift:439:19:439:19 | y |
| test.swift:437:25:437:25 | SSA def(x) | test.swift:438:19:438:19 | x |
| test.swift:437:25:437:25 | x | test.swift:437:25:437:25 | SSA def(x) |
| test.swift:437:32:437:32 | SSA def(y) | test.swift:439:19:439:19 | y |
| test.swift:437:32:437:32 | y | test.swift:437:32:437:32 | SSA def(y) |
| test.swift:437:37:437:37 | a | test.swift:437:13:437:33 | .myPair(...) |
| test.swift:437:37:437:37 | a | test.swift:442:33:442:33 | a |
| test.swift:442:9:442:12 | SSA def(b) | test.swift:444:12:444:12 | b |
| test.swift:442:21:442:34 | call to ... | test.swift:442:9:442:12 | SSA def(b) |
| test.swift:442:9:442:9 | SSA def(b) | test.swift:444:12:444:12 | b |
| test.swift:442:9:442:9 | b | test.swift:442:9:442:9 | SSA def(b) |
| test.swift:442:9:442:12 | ... as ... | test.swift:442:9:442:9 | b |
| test.swift:442:21:442:34 | call to ... | test.swift:442:9:442:12 | ... as ... |
| test.swift:442:33:442:33 | [post] a | test.swift:471:13:471:13 | a |
| test.swift:442:33:442:33 | a | test.swift:471:13:471:13 | a |
| test.swift:444:12:444:12 | b | test.swift:445:10:445:11 | .myNone |
| test.swift:444:12:444:12 | b | test.swift:447:10:447:25 | .mySingle(...) |
| test.swift:444:12:444:12 | b | test.swift:449:10:449:30 | .myPair(...) |
| test.swift:444:12:444:12 | b | test.swift:452:14:452:38 | .myCons(...) |
| test.swift:444:12:444:12 | b | test.swift:456:14:456:26 | .myCons(...) |
| test.swift:444:12:444:12 | b | test.swift:467:45:467:45 | b |
| test.swift:447:10:447:25 | SSA def(a) | test.swift:448:19:448:19 | a |
| test.swift:449:10:449:30 | SSA def(a) | test.swift:450:19:450:19 | a |
| test.swift:449:10:449:30 | SSA def(b) | test.swift:451:19:451:19 | b |
| test.swift:452:14:452:38 | SSA def(a) | test.swift:453:19:453:19 | a |
| test.swift:452:14:452:38 | SSA def(b) | test.swift:454:19:454:19 | b |
| test.swift:452:14:452:38 | SSA def(c) | test.swift:455:19:455:19 | c |
| test.swift:456:14:456:26 | SSA def(a) | test.swift:457:19:457:19 | a |
| test.swift:460:13:460:28 | SSA def(x) | test.swift:461:19:461:19 | x |
| test.swift:460:32:460:57 | call to ... | test.swift:460:13:460:28 | SSA def(x) |
| test.swift:463:13:463:39 | SSA def(x) | test.swift:464:19:464:19 | x |
| test.swift:463:13:463:39 | SSA def(y) | test.swift:465:19:465:19 | y |
| test.swift:467:17:467:41 | SSA def(c) | test.swift:468:19:468:19 | c |
| test.swift:467:45:467:45 | b | test.swift:467:17:467:41 | SSA def(c) |
| test.swift:447:24:447:24 | SSA def(a) | test.swift:448:19:448:19 | a |
| test.swift:447:24:447:24 | a | test.swift:447:24:447:24 | SSA def(a) |
| test.swift:449:22:449:22 | SSA def(a) | test.swift:450:19:450:19 | a |
| test.swift:449:22:449:22 | a | test.swift:449:22:449:22 | SSA def(a) |
| test.swift:449:29:449:29 | SSA def(b) | test.swift:451:19:451:19 | b |
| test.swift:449:29:449:29 | b | test.swift:449:29:449:29 | SSA def(b) |
| test.swift:452:10:452:38 | SSA phi(a) | test.swift:453:19:453:19 | a |
| test.swift:452:10:452:38 | SSA phi(b) | test.swift:454:19:454:19 | b |
| test.swift:452:10:452:38 | SSA phi(c) | test.swift:455:19:455:19 | c |
| test.swift:452:22:452:22 | SSA def(a) | test.swift:452:10:452:38 | SSA phi(a) |
| test.swift:452:22:452:22 | a | test.swift:452:22:452:22 | SSA def(a) |
| test.swift:452:33:452:33 | SSA def(b) | test.swift:452:10:452:38 | SSA phi(b) |
| test.swift:452:33:452:33 | b | test.swift:452:33:452:33 | SSA def(b) |
| test.swift:452:36:452:36 | SSA def(c) | test.swift:452:10:452:38 | SSA phi(c) |
| test.swift:452:36:452:36 | c | test.swift:452:36:452:36 | SSA def(c) |
| test.swift:456:10:456:26 | SSA phi(a) | test.swift:457:19:457:19 | a |
| test.swift:456:22:456:22 | SSA def(a) | test.swift:456:10:456:26 | SSA phi(a) |
| test.swift:456:22:456:22 | a | test.swift:456:22:456:22 | SSA def(a) |
| test.swift:460:27:460:27 | SSA def(x) | test.swift:461:19:461:19 | x |
| test.swift:460:27:460:27 | x | test.swift:460:27:460:27 | SSA def(x) |
| test.swift:460:32:460:57 | call to ... | test.swift:460:13:460:28 | .mySingle(...) |
| test.swift:463:31:463:31 | SSA def(x) | test.swift:464:19:464:19 | x |
| test.swift:463:31:463:31 | x | test.swift:463:31:463:31 | SSA def(x) |
| test.swift:463:38:463:38 | SSA def(y) | test.swift:465:19:465:19 | y |
| test.swift:463:38:463:38 | y | test.swift:463:38:463:38 | SSA def(y) |
| test.swift:463:43:463:62 | call to ... | test.swift:463:13:463:39 | .myPair(...) |
| test.swift:467:13:467:41 | SSA phi(c) | test.swift:468:19:468:19 | c |
| test.swift:467:39:467:39 | SSA def(c) | test.swift:467:13:467:41 | SSA phi(c) |
| test.swift:467:39:467:39 | c | test.swift:467:39:467:39 | SSA def(c) |
| test.swift:467:45:467:45 | b | test.swift:467:17:467:41 | .myCons(...) |
| test.swift:467:45:467:45 | b | test.swift:471:16:471:16 | b |
| test.swift:472:14:472:55 | SSA def(a) | test.swift:473:19:473:19 | a |
| test.swift:472:14:472:55 | SSA def(b) | test.swift:474:19:474:19 | b |
| test.swift:472:14:472:55 | SSA def(c) | test.swift:475:19:475:19 | c |
| test.swift:472:14:472:55 | SSA def(d) | test.swift:476:19:476:19 | d |
| test.swift:472:14:472:55 | SSA def(e) | test.swift:477:19:477:19 | e |
| test.swift:471:12:471:17 | (...) | test.swift:472:14:472:55 | (...) |
| test.swift:471:12:471:17 | (...) | test.swift:478:5:478:5 | _ |
| test.swift:472:10:472:55 | SSA phi(a) | test.swift:473:19:473:19 | a |
| test.swift:472:10:472:55 | SSA phi(b) | test.swift:474:19:474:19 | b |
| test.swift:472:10:472:55 | SSA phi(c) | test.swift:475:19:475:19 | c |
| test.swift:472:10:472:55 | SSA phi(d) | test.swift:476:19:476:19 | d |
| test.swift:472:10:472:55 | SSA phi(e) | test.swift:477:19:477:19 | e |
| test.swift:472:23:472:23 | SSA def(a) | test.swift:472:10:472:55 | SSA phi(a) |
| test.swift:472:23:472:23 | a | test.swift:472:23:472:23 | SSA def(a) |
| test.swift:472:26:472:26 | SSA def(b) | test.swift:472:10:472:55 | SSA phi(b) |
| test.swift:472:26:472:26 | b | test.swift:472:26:472:26 | SSA def(b) |
| test.swift:472:38:472:38 | SSA def(c) | test.swift:472:10:472:55 | SSA phi(c) |
| test.swift:472:38:472:38 | c | test.swift:472:38:472:38 | SSA def(c) |
| test.swift:472:49:472:49 | SSA def(d) | test.swift:472:10:472:55 | SSA phi(d) |
| test.swift:472:49:472:49 | d | test.swift:472:49:472:49 | SSA def(d) |
| test.swift:472:52:472:52 | SSA def(e) | test.swift:472:10:472:55 | SSA phi(e) |
| test.swift:472:52:472:52 | e | test.swift:472:52:472:52 | SSA def(e) |
| test.swift:485:21:485:27 | SSA def(y) | test.swift:488:27:488:27 | y |
| test.swift:485:21:485:27 | SSA def(y) | test.swift:493:22:493:22 | y |
| test.swift:485:21:485:27 | y | test.swift:485:21:485:27 | SSA def(y) |
| test.swift:486:9:486:9 | SSA def(x) | test.swift:488:16:488:16 | x |
| test.swift:486:13:486:28 | call to optionalSource() | test.swift:486:9:486:9 | SSA def(x) |
| test.swift:488:8:488:12 | SSA def(a) | test.swift:489:19:489:19 | a |
| test.swift:488:16:488:16 | x | test.swift:488:8:488:12 | SSA def(a) |
| test.swift:486:9:486:9 | x | test.swift:486:9:486:9 | SSA def(x) |
| test.swift:486:13:486:28 | call to optionalSource() | test.swift:486:9:486:9 | x |
| test.swift:488:12:488:12 | SSA def(a) | test.swift:488:27:488:27 | SSA phi(a) |
| test.swift:488:12:488:12 | a | test.swift:488:12:488:12 | SSA def(a) |
| test.swift:488:16:488:16 | x | test.swift:488:8:488:12 | let ...? |
| test.swift:488:16:488:16 | x | test.swift:493:19:493:19 | x |
| test.swift:488:19:488:23 | SSA def(b) | test.swift:490:19:490:19 | b |
| test.swift:488:27:488:27 | y | test.swift:488:19:488:23 | SSA def(b) |
| test.swift:488:23:488:23 | SSA def(b) | test.swift:490:19:490:19 | b |
| test.swift:488:23:488:23 | b | test.swift:488:23:488:23 | SSA def(b) |
| test.swift:488:27:488:27 | SSA phi(a) | test.swift:489:19:489:19 | a |
| test.swift:488:27:488:27 | y | test.swift:488:19:488:23 | let ...? |
| test.swift:488:27:488:27 | y | test.swift:493:22:493:22 | y |
| test.swift:493:9:493:9 | SSA def(tuple1) | test.swift:494:12:494:12 | tuple1 |
| test.swift:493:18:493:23 | (...) | test.swift:493:9:493:9 | SSA def(tuple1) |
| test.swift:495:10:495:37 | SSA def(a) | test.swift:496:19:496:19 | a |
| test.swift:495:10:495:37 | SSA def(b) | test.swift:497:19:497:19 | b |
| test.swift:502:8:502:17 | SSA def(x) | test.swift:503:19:503:19 | x |
| test.swift:502:8:502:17 | SSA def(y) | test.swift:504:19:504:19 | y |
| test.swift:493:9:493:9 | tuple1 | test.swift:493:9:493:9 | SSA def(tuple1) |
| test.swift:493:18:493:23 | (...) | test.swift:493:9:493:9 | tuple1 |
| test.swift:494:12:494:12 | tuple1 | test.swift:495:10:495:37 | (...) |
| test.swift:494:12:494:12 | tuple1 | test.swift:498:5:498:5 | _ |
| test.swift:495:21:495:21 | SSA def(a) | test.swift:496:19:496:19 | a |
| test.swift:495:21:495:21 | a | test.swift:495:21:495:21 | SSA def(a) |
| test.swift:495:35:495:35 | SSA def(b) | test.swift:497:19:497:19 | b |
| test.swift:495:35:495:35 | b | test.swift:495:35:495:35 | SSA def(b) |
| test.swift:502:13:502:13 | SSA def(x) | test.swift:503:19:503:19 | x |
| test.swift:502:13:502:13 | x | test.swift:502:13:502:13 | SSA def(x) |
| test.swift:502:16:502:16 | SSA def(y) | test.swift:504:19:504:19 | y |
| test.swift:502:16:502:16 | y | test.swift:502:16:502:16 | SSA def(y) |
| test.swift:502:21:502:29 | call to source2() | test.swift:502:8:502:17 | let ...? |
| test.swift:508:7:508:7 | SSA def(self) | test.swift:508:7:508:7 | self[return] |
| test.swift:508:7:508:7 | SSA def(self) | test.swift:508:7:508:7 | self[return] |
| test.swift:508:7:508:7 | self | test.swift:508:7:508:7 | SSA def(self) |
@@ -405,19 +552,24 @@
| test.swift:512:33:512:39 | SSA def(y) | test.swift:517:12:517:12 | y |
| test.swift:512:33:512:39 | y | test.swift:512:33:512:39 | SSA def(y) |
| test.swift:513:9:513:9 | SSA def(x) | test.swift:515:12:515:12 | x |
| test.swift:513:13:513:28 | call to optionalSource() | test.swift:513:9:513:9 | SSA def(x) |
| test.swift:513:9:513:9 | x | test.swift:513:9:513:9 | SSA def(x) |
| test.swift:513:13:513:28 | call to optionalSource() | test.swift:513:9:513:9 | x |
| test.swift:514:9:514:9 | SSA def(cx) | test.swift:515:5:515:5 | cx |
| test.swift:514:14:514:16 | call to C.init() | test.swift:514:9:514:9 | SSA def(cx) |
| test.swift:514:9:514:9 | cx | test.swift:514:9:514:9 | SSA def(cx) |
| test.swift:514:14:514:16 | call to C.init() | test.swift:514:9:514:9 | cx |
| test.swift:515:5:515:5 | [post] cx | test.swift:519:20:519:20 | cx |
| test.swift:515:5:515:5 | cx | test.swift:519:20:519:20 | cx |
| test.swift:516:9:516:9 | SSA def(cy) | test.swift:517:5:517:5 | cy |
| test.swift:516:14:516:16 | call to C.init() | test.swift:516:9:516:9 | SSA def(cy) |
| test.swift:516:9:516:9 | cy | test.swift:516:9:516:9 | SSA def(cy) |
| test.swift:516:14:516:16 | call to C.init() | test.swift:516:9:516:9 | cy |
| test.swift:517:5:517:5 | [post] cy | test.swift:521:20:521:20 | cy |
| test.swift:517:5:517:5 | cy | test.swift:521:20:521:20 | cy |
| test.swift:519:11:519:15 | SSA def(z1) | test.swift:520:15:520:15 | z1 |
| test.swift:519:20:519:23 | .x | test.swift:519:11:519:15 | SSA def(z1) |
| test.swift:521:11:521:15 | SSA def(z2) | test.swift:522:15:522:15 | z2 |
| test.swift:521:20:521:23 | .x | test.swift:521:11:521:15 | SSA def(z2) |
| test.swift:519:15:519:15 | SSA def(z1) | test.swift:520:15:520:15 | z1 |
| test.swift:519:15:519:15 | z1 | test.swift:519:15:519:15 | SSA def(z1) |
| test.swift:519:20:519:23 | .x | test.swift:519:11:519:15 | let ...? |
| test.swift:521:15:521:15 | SSA def(z2) | test.swift:522:15:522:15 | z2 |
| test.swift:521:15:521:15 | z2 | test.swift:521:15:521:15 | SSA def(z2) |
| test.swift:521:20:521:23 | .x | test.swift:521:11:521:15 | let ...? |
| test.swift:526:14:526:21 | call to source() | test.swift:526:13:526:21 | call to +(_:) |
| test.swift:534:7:534:7 | SSA def(self) | test.swift:534:7:534:7 | self[return] |
| test.swift:534:7:534:7 | self | test.swift:534:7:534:7 | SSA def(self) |
@@ -446,5 +598,6 @@
| test.swift:554:27:554:38 | SSA def(n) | test.swift:554:3:554:40 | n[return] |
| test.swift:554:31:554:38 | call to source() | test.swift:554:27:554:38 | SSA def(n) |
| test.swift:560:7:560:7 | SSA def(n) | test.swift:561:36:561:36 | n |
| test.swift:560:11:560:11 | 0 | test.swift:560:7:560:7 | SSA def(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:36:561:36 | n | test.swift:561:35:561:36 | &... |

View File

@@ -312,7 +312,7 @@ func test_optionals(y: Int?) {
switch x {
case .some(let z):
sink(arg: z) // $ MISSING: flow=259
sink(arg: z) // $ flow=259
case .none:
()
}
@@ -360,8 +360,8 @@ func testTuples2() {
sink(arg: t2.x) // $ flow=351
sink(arg: t2.y) // $ flow=351
sink(arg: t2.z)
sink(arg: a) // $ MISSING: flow=351
sink(arg: b) // $ MISSING: flow=351
sink(arg: a) // $ flow=351
sink(arg: b) // $ flow=351
sink(arg: c)
}
@@ -452,7 +452,7 @@ func testEnums() {
case let .myCons(a, .myPair(b, c)):
sink(arg: a)
sink(arg: b)
sink(arg: c) // $ MISSING: flow=420
sink(arg: c) // $ flow=420
case let .myCons(a, _):
sink(arg: a)
}
@@ -465,7 +465,7 @@ func testEnums() {
sink(arg: y)
}
if case let .myCons(_, .myPair(_, c)) = b {
sink(arg: c) // $ MISSING: flow=420
sink(arg: c) // $ flow=420
}
switch (a, b) {
@@ -474,7 +474,7 @@ func testEnums() {
sink(arg: b) // $ flow=420
sink(arg: c)
sink(arg: d)
sink(arg: e) // $ MISSING: flow=420
sink(arg: e) // $ flow=420
default:
()
}
@@ -493,7 +493,7 @@ func testOptionals2(y: Int?) {
let tuple1 = (x, y)
switch tuple1 {
case (.some(let a), .some(let b)):
sink(arg: a) // $ MISSING: flow=259
sink(arg: a) // $ flow=259
sink(arg: b)
default:
()

View File

@@ -32,7 +32,8 @@
| simple.swift:32:13:32:20 | call to source() | simple.swift:32:13:32:25 | ... .&*(_:_:) ... |
| simple.swift:32:25:32:25 | 2 | simple.swift:32:13:32:25 | ... .&*(_:_:) ... |
| simple.swift:36:7:36:7 | SSA def(a) | simple.swift:37:13:37:13 | a |
| simple.swift:36:11:36:11 | 0 | simple.swift:36:7:36:7 | SSA def(a) |
| simple.swift:36:7:36:7 | a | simple.swift:36:7:36:7 | SSA def(a) |
| simple.swift:36:11:36:11 | 0 | simple.swift:36:7:36:7 | a |
| simple.swift:37:13:37:13 | [post] a | simple.swift:38:3:38:3 | a |
| simple.swift:37:13:37:13 | a | simple.swift:38:3:38:3 | a |
| simple.swift:38:3:38:3 | &... | simple.swift:39:13:39:13 | a |
@@ -54,7 +55,8 @@
| simple.swift:44:3:44:7 | SSA def(a) | simple.swift:45:13:45:13 | a |
| simple.swift:44:7:44:7 | 0 | simple.swift:44:3:44:7 | SSA def(a) |
| simple.swift:47:7:47:7 | SSA def(b) | simple.swift:48:3:48:3 | b |
| simple.swift:47:11:47:11 | 128 | simple.swift:47:7:47:7 | SSA def(b) |
| simple.swift:47:7:47:7 | b | simple.swift:47:7:47:7 | SSA def(b) |
| simple.swift:47:11:47:11 | 128 | simple.swift:47:7:47:7 | b |
| simple.swift:48:3:48:3 | &... | simple.swift:49:13:49:13 | b |
| simple.swift:48:3:48:3 | [post] &... | simple.swift:49:13:49:13 | b |
| simple.swift:48:3:48:3 | b | simple.swift:48:3:48:3 | &... |
@@ -66,7 +68,8 @@
| simple.swift:50:3:50:3 | b | simple.swift:50:3:50:3 | &... |
| simple.swift:50:8:50:8 | 1 | simple.swift:50:3:50:3 | &... |
| simple.swift:53:7:53:7 | SSA def(c) | simple.swift:54:3:54:3 | c |
| simple.swift:53:11:53:11 | 10 | simple.swift:53:7:53:7 | SSA def(c) |
| simple.swift:53:7:53:7 | c | simple.swift:53:7:53:7 | SSA def(c) |
| simple.swift:53:11:53:11 | 10 | simple.swift:53:7:53:7 | c |
| simple.swift:54:3:54:3 | &... | simple.swift:55:13:55:13 | c |
| simple.swift:54:3:54:3 | [post] &... | simple.swift:55:13:55:13 | c |
| simple.swift:54:3:54:3 | c | simple.swift:54:3:54:3 | &... |
@@ -78,7 +81,8 @@
| simple.swift:56:3:56:3 | c | simple.swift:56:3:56:3 | &... |
| simple.swift:56:8:56:8 | 2 | simple.swift:56:3:56:3 | &... |
| simple.swift:59:7:59:7 | SSA def(d) | simple.swift:60:3:60:3 | d |
| simple.swift:59:11:59:11 | 100 | simple.swift:59:7:59:7 | SSA def(d) |
| simple.swift:59:7:59:7 | d | simple.swift:59:7:59:7 | SSA def(d) |
| simple.swift:59:11:59:11 | 100 | simple.swift:59:7:59:7 | d |
| simple.swift:60:3:60:3 | &... | simple.swift:61:13:61:13 | d |
| simple.swift:60:3:60:3 | [post] &... | simple.swift:61:13:61:13 | d |
| simple.swift:60:3:60:3 | d | simple.swift:60:3:60:3 | &... |
@@ -90,7 +94,8 @@
| simple.swift:62:3:62:3 | d | simple.swift:62:3:62:3 | &... |
| simple.swift:62:8:62:8 | 2 | simple.swift:62:3:62:3 | &... |
| simple.swift:65:7:65:7 | SSA def(e) | simple.swift:66:3:66:3 | e |
| simple.swift:65:11:65:11 | 1000 | simple.swift:65:7:65:7 | SSA def(e) |
| simple.swift:65:7:65:7 | e | simple.swift:65:7:65:7 | SSA def(e) |
| simple.swift:65:11:65:11 | 1000 | simple.swift:65:7:65:7 | e |
| simple.swift:66:3:66:3 | &... | simple.swift:67:13:67:13 | e |
| simple.swift:66:3:66:3 | [post] &... | simple.swift:67:13:67:13 | e |
| simple.swift:66:3:66:3 | e | simple.swift:66:3:66:3 | &... |
@@ -168,7 +173,8 @@
| stringinterpolation.swift:13:47:13:47 | &... | stringinterpolation.swift:13:47:13:47 | [post] &... |
| stringinterpolation.swift:13:47:13:47 | [post] &... | stringinterpolation.swift:13:23:13:23 | TapExpr |
| stringinterpolation.swift:18:6:18:6 | SSA def(p1) | stringinterpolation.swift:19:2:19:2 | p1 |
| stringinterpolation.swift:18:11:18:24 | call to MyStringPair.init() | stringinterpolation.swift:18:6:18:6 | SSA def(p1) |
| stringinterpolation.swift:18:6:18:6 | p1 | stringinterpolation.swift:18:6:18:6 | SSA def(p1) |
| stringinterpolation.swift:18:11:18:24 | call to MyStringPair.init() | stringinterpolation.swift:18:6:18:6 | p1 |
| stringinterpolation.swift:19:2:19:2 | [post] p1 | stringinterpolation.swift:20:2:20:2 | p1 |
| stringinterpolation.swift:19:2:19:2 | p1 | stringinterpolation.swift:20:2:20:2 | p1 |
| stringinterpolation.swift:20:2:20:2 | [post] p1 | stringinterpolation.swift:22:21:22:21 | p1 |
@@ -246,7 +252,8 @@
| stringinterpolation.swift:24:24:24:24 | &... | stringinterpolation.swift:24:24:24:24 | [post] &... |
| stringinterpolation.swift:24:24:24:24 | [post] &... | stringinterpolation.swift:24:12:24:12 | TapExpr |
| stringinterpolation.swift:26:6:26:6 | SSA def(p2) | stringinterpolation.swift:27:2:27:2 | p2 |
| stringinterpolation.swift:26:11:26:24 | call to MyStringPair.init() | stringinterpolation.swift:26:6:26:6 | SSA def(p2) |
| stringinterpolation.swift:26:6:26:6 | p2 | stringinterpolation.swift:26:6:26:6 | SSA def(p2) |
| stringinterpolation.swift:26:11:26:24 | call to MyStringPair.init() | stringinterpolation.swift:26:6:26:6 | p2 |
| stringinterpolation.swift:27:2:27:2 | [post] p2 | stringinterpolation.swift:28:2:28:2 | p2 |
| stringinterpolation.swift:27:2:27:2 | p2 | stringinterpolation.swift:28:2:28:2 | p2 |
| stringinterpolation.swift:28:2:28:2 | [post] p2 | stringinterpolation.swift:30:21:30:21 | p2 |