C#: Represent all expressions in post-order in the CFG

This commit is contained in:
Tom Hvitved
2020-11-10 15:31:45 +01:00
parent 202f7f07ec
commit 94deed39a2
38 changed files with 3486 additions and 3106 deletions

View File

@@ -707,6 +707,14 @@ module ControlFlow {
or
cfe = any(ConditionallyQualifiedExpr cqe | result = first(getExprChildElement(cqe, 0)))
or
cfe =
any(ObjectCreation oc |
result = first(getObjectCreationArgument(oc, 0))
or
not exists(getObjectCreationArgument(oc, 0)) and
result = oc
)
or
cfe =
any(ArrayCreation ac |
// First element of first length argument
@@ -732,7 +740,7 @@ module ControlFlow {
result = first(getExprChildElement(cfe, getFirstChildElement(cfe)))
}
private class PreOrderElement extends ControlFlowElement {
private class PreOrderElement extends Stmt {
PreOrderElement() {
this instanceof StandardStmt
or
@@ -747,6 +755,19 @@ module ControlFlow {
this instanceof SpecificCatchClause
or
this instanceof LoopStmt and not this instanceof ForeachStmt
}
}
private Expr getObjectCreationArgument(ObjectCreation oc, int i) {
i >= 0 and
if oc.hasInitializer()
then result = getExprChildElement(oc, i + 1)
else result = getExprChildElement(oc, i)
}
private class PostOrderElement extends ControlFlowElement {
PostOrderElement() {
this instanceof StandardExpr
or
this instanceof LogicalNotExpr
or
@@ -761,29 +782,32 @@ module ControlFlow {
this instanceof SwitchExpr
or
this instanceof SwitchCaseExpr
}
}
private Expr getObjectCreationArgument(ObjectCreation oc, int i) {
i >= 0 and
if oc.hasInitializer()
then result = getExprChildElement(oc, i + 1)
else result = getExprChildElement(oc, i)
}
private class PostOrderElement extends ControlFlowElement {
PostOrderElement() {
this instanceof StandardExpr or
this instanceof JumpStmt or
this instanceof ThrowExpr or
this instanceof ObjectCreation
or
this instanceof JumpStmt
or
this instanceof ThrowExpr
}
ControlFlowElement getFirstChild() {
result = this.(StandardExpr).getFirstChildElement() or
result = this.(JumpStmt).getChild(0) or
result = this.(ThrowExpr).getExpr() or
result = getObjectCreationArgument(this, 0)
result = this.(StandardExpr).getFirstChildElement()
or
result = this.(LogicalNotExpr).getOperand()
or
result = this.(LogicalAndExpr).getLeftOperand()
or
result = this.(LogicalOrExpr).getLeftOperand()
or
result = this.(NullCoalescingExpr).getLeftOperand()
or
result = this.(ConditionalExpr).getCondition()
or
result = this.(SwitchExpr).getExpr()
or
result = this.(SwitchCaseExpr).getPattern()
or
result = this.(JumpStmt).getChild(0)
or
result = this.(ThrowExpr).getExpr()
}
}
@@ -804,8 +828,6 @@ module ControlFlow {
TLastRecAnyCompletion() or
TLastRecNormalCompletion() or
TLastRecAbnormalCompletion() or
TLastRecBooleanNegationCompletion() or
TLastRecNonBooleanCompletion() or
TLastRecBreakCompletion() or
TLastRecSwitchAbnormalCompletion() or
TLastRecInvalidOperationException() or
@@ -842,7 +864,7 @@ module ControlFlow {
)
or
// Post-order: element itself
cfe instanceof StandardExpr and
cfe instanceof PostOrderElement and
result = cfe and
c = getValidSelfCompletion(result)
or
@@ -850,72 +872,25 @@ module ControlFlow {
result = cfe.(StandardElement).getChildElement(_) and
c = TRec(TLastRecAbnormalCompletion())
or
cfe =
any(LogicalNotExpr lne |
// Operand exits with a Boolean completion
result = lne.getOperand() and
c = TRec(TLastRecBooleanNegationCompletion())
or
// Operand exits with a non-Boolean completion
result = lne.getOperand() and
c = TRec(TLastRecNonBooleanCompletion())
)
// Operand exits abnormally
result = cfe.(LogicalNotExpr).getOperand() and
c = TRec(TLastRecAbnormalCompletion())
or
cfe =
any(LogicalAndExpr lae |
// Left operand exits with a false completion
result = lae.getLeftOperand() and
c = specificBoolean(false)
or
// Left operand exits abnormally
result = lae.getLeftOperand() and
c = TRec(TLastRecAbnormalCompletion())
or
// Right operand exits with any completion
result = lae.getRightOperand() and
c = TRec(TLastRecAnyCompletion())
)
// An operand exits abnormally
result = cfe.(LogicalAndExpr).getAnOperand() and
c = TRec(TLastRecAbnormalCompletion())
or
cfe =
any(LogicalOrExpr loe |
// Left operand exits with a true completion
result = loe.getLeftOperand() and
c = specificBoolean(true)
or
// Left operand exits abnormally
result = loe.getLeftOperand() and
c = TRec(TLastRecAbnormalCompletion())
or
// Right operand exits with any completion
result = loe.getRightOperand() and
c = TRec(TLastRecAnyCompletion())
)
// An operand exits abnormally
result = cfe.(LogicalOrExpr).getAnOperand() and
c = TRec(TLastRecAbnormalCompletion())
or
cfe =
any(NullCoalescingExpr nce |
// Left operand exits with any non-`null` completion
result = nce.getLeftOperand() and
c = TRec(TLastRecSpecificNegCompletion(any(NullnessCompletion nc | nc.isNull())))
or
// Right operand exits with any completion
result = nce.getRightOperand() and
c = TRec(TLastRecAnyCompletion())
)
// An operand exits abnormally
result = cfe.(NullCoalescingExpr).getAnOperand() and
c = TRec(TLastRecAbnormalCompletion())
or
cfe =
any(ConditionalExpr ce |
// Condition exits abnormally
result = ce.getCondition() and
c = TRec(TLastRecAbnormalCompletion())
or
// Then branch exits with any completion
result = ce.getThen() and
c = TRec(TLastRecAnyCompletion())
or
// Else branch exits with any completion
result = ce.getElse() and
c = TRec(TLastRecAnyCompletion())
)
// An operand exits abnormally
result = cfe.(ConditionalExpr).getAnOperand() and
c = TRec(TLastRecAbnormalCompletion())
or
cfe =
any(AssignOperation ao |
@@ -934,16 +909,9 @@ module ControlFlow {
c = TRec(TLastRecSpecificCompletion(any(NullnessCompletion nc | nc.isNull())))
)
or
cfe =
any(ThrowExpr te |
// Post-order: element itself
result = te and
c = getValidSelfCompletion(result)
or
// Expression being thrown exits abnormally
result = te.getExpr() and
c = TRec(TLastRecAbnormalCompletion())
)
// Expression being thrown exits abnormally
result = cfe.(ThrowExpr).getExpr() and
c = TRec(TLastRecAbnormalCompletion())
or
cfe =
any(ObjectCreation oc |
@@ -991,22 +959,22 @@ module ControlFlow {
or
cfe =
any(Switch s |
// Switch expression exits normally and there are no cases
result = s.getExpr() and
not exists(s.getACase()) and
c = TRec(TLastRecNormalCompletion())
or
// Switch expression exits abnormally
result = s.getExpr() and
c = TRec(TLastRecAbnormalCompletion())
or
// Case condition exits abnormally
result = s.getACase().getCondition() and
c = TRec(TLastRecAbnormalCompletion())
// A case exits abnormally
result = s.getACase() and
c = TRec(TLastRecSwitchAbnormalCompletion())
)
or
cfe =
any(SwitchStmt ss |
// Switch expression exits normally and there are no cases
result = ss.getExpr() and
not exists(ss.getACase()) and
c = TRec(TLastRecNormalCompletion())
or
// A statement exits with a `break` completion
result = ss.getStmt(_) and
c = TRec(TLastRecBreakCompletion())
@@ -1030,10 +998,6 @@ module ControlFlow {
or
cfe =
any(SwitchExpr se |
// A matching case exists with any completion
result = se.getACase().getBody() and
c = TRec(TLastRecAnyCompletion())
or
// Last case exists with a non-match
exists(SwitchCaseExpr sce, int i |
sce = se.getCase(i) and
@@ -1048,14 +1012,17 @@ module ControlFlow {
or
cfe =
any(Case case |
// Condition, pattern, or body exists abnormally
result in [case.getCondition(), case.getPattern(), case.getBody()] and
c = TRec(TLastRecAbnormalCompletion())
)
or
cfe =
any(CaseStmt case |
// Condition exists with a `false` completion
result = case.getCondition() and
c = specificBoolean(false)
or
// Condition exists abnormally
result = case.getCondition() and
c = TRec(TLastRecAbnormalCompletion())
or
// Case pattern exits with a non-match
result = case.getPattern() and
c = TRec(TLastRecSpecificNegCompletion(any(MatchingCompletion mc | mc.isMatch())))
@@ -1210,27 +1177,6 @@ module ControlFlow {
not c0 instanceof NormalCompletion and
c = c0
or
rec = TLastRecBooleanNegationCompletion() and
(
c =
any(NestedCompletion nc |
nc.getInnerCompletion() = c0 and
nc.getOuterCompletion().(BooleanCompletion).getValue() =
c0.(BooleanCompletion).getValue().booleanNot()
)
or
c =
any(BooleanCompletion bc |
bc.getValue() =
c0.(NestedCompletion).getInnerCompletion().(BooleanCompletion).getValue() and
not bc instanceof NestedCompletion
)
)
or
rec = TLastRecNonBooleanCompletion() and
not c0 instanceof BooleanCompletion and
c = c0
or
rec = TLastRecBreakCompletion() and
c0 instanceof BreakCompletion and
c instanceof BreakNormalCompletion
@@ -1312,10 +1258,17 @@ module ControlFlow {
or
// If the `finally` block completes normally, it inherits any non-normal
// completion that was current before the `finally` block was entered
c =
any(NestedCompletion nc |
result = lastTryStmtFinally(ts, nc.getInnerCompletion(), nc.getOuterCompletion())
)
exists(NormalCompletion finally, Completion outer |
result = lastTryStmtFinally(ts, finally, outer)
|
c =
any(NestedCompletion nc |
nc.getInnerCompletion() = finally and nc.getOuterCompletion() = outer
)
or
not finally instanceof ConditionalCompletion and
c = outer
)
)
}
@@ -1441,55 +1394,68 @@ module ControlFlow {
result = first(parent.getChildElement(i + 1))
)
or
cfe =
// Post-order: flow from last element of operand to element itself
result =
any(LogicalNotExpr lne |
// Pre-order: flow from expression itself to first element of operand
result = first(lne.getOperand()) and
cfe = last(lne.getOperand(), c.(BooleanCompletion).getDual())
or
cfe = last(lne.getOperand(), c) and
c instanceof SimpleCompletion
)
or
exists(LogicalAndExpr lae |
// Pre-order: flow from expression itself to first element of left operand
lae = cfe and
result = first(lae.getLeftOperand()) and
c instanceof SimpleCompletion
or
// Flow from last element of left operand to first element of right operand
cfe = last(lae.getLeftOperand(), c) and
c instanceof TrueCompletion and
result = first(lae.getRightOperand())
or
// Post-order: flow from last element of left operand to element itself
cfe = last(lae.getLeftOperand(), c) and
c instanceof FalseCompletion and
result = lae
or
// Post-order: flow from last element of right operand to element itself
cfe = last(lae.getRightOperand(), c) and
c instanceof NormalCompletion and
result = lae
)
or
exists(LogicalOrExpr loe |
// Pre-order: flow from expression itself to first element of left operand
loe = cfe and
result = first(loe.getLeftOperand()) and
c instanceof SimpleCompletion
or
// Flow from last element of left operand to first element of right operand
cfe = last(loe.getLeftOperand(), c) and
c instanceof FalseCompletion and
result = first(loe.getRightOperand())
or
// Post-order: flow from last element of left operand to element itself
cfe = last(loe.getLeftOperand(), c) and
c instanceof TrueCompletion and
result = loe
or
// Post-order: flow from last element of right operand to element itself
cfe = last(loe.getRightOperand(), c) and
c instanceof NormalCompletion and
result = loe
)
or
exists(NullCoalescingExpr nce |
// Pre-order: flow from expression itself to first element of left operand
nce = cfe and
result = first(nce.getLeftOperand()) and
c instanceof SimpleCompletion
or
// Flow from last element of left operand to first element of right operand
cfe = last(nce.getLeftOperand(), c) and
c.(NullnessCompletion).isNull() and
result = first(nce.getRightOperand())
or
// Post-order: flow from last element of left operand to element itself
cfe = last(nce.getLeftOperand(), c) and
result = nce and
c instanceof NormalCompletion and
not c.(NullnessCompletion).isNull()
or
// Post-order: flow from last element of right operand to element itself
cfe = last(nce.getRightOperand(), c) and
c instanceof NormalCompletion and
result = nce
)
or
exists(ConditionalExpr ce |
// Pre-order: flow from expression itself to first element of condition
ce = cfe and
result = first(ce.getCondition()) and
c instanceof SimpleCompletion
or
// Flow from last element of condition to first element of then branch
cfe = last(ce.getCondition(), c) and
c instanceof TrueCompletion and
@@ -1499,6 +1465,11 @@ module ControlFlow {
cfe = last(ce.getCondition(), c) and
c instanceof FalseCompletion and
result = first(ce.getElse())
or
// Post-order: flow from last element of a branch to element itself
cfe = last([ce.getThen(), ce.getElse()], c) and
c instanceof NormalCompletion and
result = ce
)
or
exists(ConditionallyQualifiedExpr parent, int i |
@@ -1574,11 +1545,6 @@ module ControlFlow {
)
or
exists(Switch s |
// Pre-order: flow from statement itself to first switch expression
cfe = s and
result = first(s.getExpr()) and
c instanceof SimpleCompletion
or
// Flow from last element of switch expression to first element of first case
cfe = last(s.getExpr(), c) and
c instanceof NormalCompletion and
@@ -1600,6 +1566,11 @@ module ControlFlow {
)
or
exists(SwitchStmt ss |
// Pre-order: flow from statement itself to first switch expression
cfe = ss and
result = first(ss.getExpr()) and
c instanceof SimpleCompletion
or
// Flow from last element of non-`case` statement `i` to first element of statement `i+1`
exists(int i | cfe = last(ss.getStmt(i), c) |
not ss.getStmt(i) instanceof CaseStmt and
@@ -1614,12 +1585,11 @@ module ControlFlow {
)
)
or
// Post-order: flow from last element of a case to element itself
cfe = last(result.(SwitchExpr).getACase(), c) and
c instanceof NormalCompletion
or
exists(Case case |
// Pre-order: flow from case itself to first element of pattern
cfe = case and
result = first(case.getPattern()) and
c instanceof SimpleCompletion
or
cfe = last(case.getPattern(), c) and
c.(MatchingCompletion).isMatch() and
(
@@ -1638,6 +1608,14 @@ module ControlFlow {
result = first(case.getBody())
)
or
// Pre-order: flow from case itself to first element of pattern
result = first(cfe.(CaseStmt).getPattern()) and
c instanceof SimpleCompletion
or
// Post-order: flow from last element of a case body to element itself
cfe = last(result.(SwitchCaseExpr).getBody(), c) and
c instanceof NormalCompletion
or
// Pre-order: flow from statement itself to first element of statement
cfe =
any(DefaultCase dc |

View File

@@ -39,7 +39,7 @@ private newtype TCompletion =
TGotoCompletion(string label) { label = any(GotoStmt gs).getLabel() } or
TThrowCompletion(ExceptionClass ec) or
TExitCompletion() or
TNestedCompletion(NormalCompletion inner, Completion outer) {
TNestedCompletion(ConditionalCompletion inner, Completion outer) {
outer = TReturnCompletion()
or
outer = TBreakCompletion()
@@ -51,8 +51,6 @@ private newtype TCompletion =
outer = TThrowCompletion(_)
or
outer = TExitCompletion()
or
exists(boolean b | inner = TBooleanCompletion(b) and outer = TBooleanCompletion(b.booleanNot()))
}
pragma[noinline]
@@ -407,126 +405,87 @@ Completion assertionCompletion(Assertion a, int i) {
* Holds if a normal completion of `e` must be a Boolean completion.
*/
private predicate mustHaveBooleanCompletion(Expr e) {
inBooleanContext(e, _) and
not inBooleanContext(e.getAChildExpr(), true) and
inBooleanContext(e) and
not e instanceof NonReturningCall
}
/**
* Holds if `e` is used in a Boolean context. That is, whether the value
* that `e` evaluates to determines a true/false branch successor.
*
* `isBooleanCompletionForParent` indicates whether the Boolean completion
* for `e` will be the Boolean completion for `e`'s parent. For example,
* if `e = B` and the parent is `A && B`, then the Boolean completion of
* `B` is the Boolean completion of `A && B`.
*/
private predicate inBooleanContext(Expr e, boolean isBooleanCompletionForParent) {
exists(IfStmt is | is.getCondition() = e | isBooleanCompletionForParent = false)
private predicate inBooleanContext(Expr e) {
e = any(IfStmt is).getCondition()
or
exists(LoopStmt ls | ls.getCondition() = e | isBooleanCompletionForParent = false)
e = any(LoopStmt ls).getCondition()
or
exists(Case c | c.getCondition() = e | isBooleanCompletionForParent = false)
e = any(Case c).getCondition()
or
exists(SpecificCatchClause scc | scc.getFilterClause() = e | isBooleanCompletionForParent = false)
e = any(SpecificCatchClause scc).getFilterClause()
or
exists(BooleanAssertMethod m, int i |
assertion(_, i, m, e) and
i = m.getAnAssertionIndex(_) and
isBooleanCompletionForParent = false
i = m.getAnAssertionIndex(_)
)
or
exists(LogicalNotExpr lne | lne.getAnOperand() = e |
inBooleanContext(lne, _) and
isBooleanCompletionForParent = true
)
e = any(LogicalNotExpr lne | inBooleanContext(lne)).getAnOperand()
or
exists(LogicalAndExpr lae |
lae.getLeftOperand() = e and
isBooleanCompletionForParent = false
lae.getLeftOperand() = e
or
lae.getRightOperand() = e and
inBooleanContext(lae, _) and
isBooleanCompletionForParent = true
inBooleanContext(lae) and
lae.getRightOperand() = e
)
or
exists(LogicalOrExpr lae |
lae.getLeftOperand() = e and
isBooleanCompletionForParent = false
lae.getLeftOperand() = e
or
lae.getRightOperand() = e and
inBooleanContext(lae, _) and
isBooleanCompletionForParent = true
inBooleanContext(lae) and
lae.getRightOperand() = e
)
or
exists(ConditionalExpr ce |
ce.getCondition() = e and
isBooleanCompletionForParent = false
ce.getCondition() = e
or
(ce.getThen() = e or ce.getElse() = e) and
inBooleanContext(ce, _) and
isBooleanCompletionForParent = true
inBooleanContext(ce) and
e in [ce.getThen(), ce.getElse()]
)
or
exists(NullCoalescingExpr nce | nce.getAnOperand() = e |
inBooleanContext(nce, _) and
isBooleanCompletionForParent = true
)
e = any(NullCoalescingExpr nce | inBooleanContext(nce)).getAnOperand()
or
exists(SwitchExpr se |
inBooleanContext(se, _) and
e = se.getACase().getBody() and
isBooleanCompletionForParent = true
)
e = any(SwitchExpr se | inBooleanContext(se)).getACase()
or
e = any(SwitchCaseExpr sce | inBooleanContext(sce)).getBody()
}
/**
* Holds if a normal completion of `e` must be a nullness completion.
*/
private predicate mustHaveNullnessCompletion(Expr e) {
inNullnessContext(e, _) and
not inNullnessContext(e.getAChildExpr(), true) and
inNullnessContext(e) and
not e instanceof NonReturningCall
}
/**
* Holds if `e` is used in a nullness context. That is, whether the value
* that `e` evaluates to determines a `null`/non-`null` branch successor.
*
* `isNullnessCompletionForParent` indicates whether the nullness completion
* for `e` will be the nullness completion for `e`'s parent. For example,
* if `e = A` and the parent is `A ?? B`, then the nullness completion of `B`
* is the nullness completion of `A ?? B`.
*/
private predicate inNullnessContext(Expr e, boolean isNullnessCompletionForParent) {
exists(NullCoalescingExpr nce | e = nce.getLeftOperand() | isNullnessCompletionForParent = false)
private predicate inNullnessContext(Expr e) {
e = any(NullCoalescingExpr nce).getLeftOperand()
or
exists(QualifiableExpr qe | qe.isConditional() |
e = qe.getChildExpr(-1) and
isNullnessCompletionForParent = false
)
exists(QualifiableExpr qe | qe.isConditional() | e = qe.getChildExpr(-1))
or
exists(NullnessAssertMethod m, int i |
assertion(_, i, m, e) and
i = m.getAnAssertionIndex(_) and
isNullnessCompletionForParent = false
i = m.getAnAssertionIndex(_)
)
or
exists(ConditionalExpr ce | inNullnessContext(ce, _) |
(e = ce.getThen() or e = ce.getElse()) and
isNullnessCompletionForParent = true
)
exists(ConditionalExpr ce | inNullnessContext(ce) | (e = ce.getThen() or e = ce.getElse()))
or
exists(NullCoalescingExpr nce | inNullnessContext(nce, _) |
e = nce.getRightOperand() and
isNullnessCompletionForParent = true
)
exists(NullCoalescingExpr nce | inNullnessContext(nce) | e = nce.getRightOperand())
or
exists(SwitchExpr se |
inNullnessContext(se, _) and
e = se.getACase().getBody() and
isNullnessCompletionForParent = true
)
e = any(SwitchExpr se | inNullnessContext(se)).getACase()
or
e = any(SwitchCaseExpr sce | inNullnessContext(sce)).getBody()
}
/**
@@ -592,18 +551,14 @@ abstract class ConditionalCompletion extends NormalCompletion { }
class BooleanCompletion extends ConditionalCompletion {
private boolean value;
BooleanCompletion() {
this = TBooleanCompletion(value) or
this = TNestedCompletion(_, TBooleanCompletion(value))
}
BooleanCompletion() { this = TBooleanCompletion(value) }
/** Gets the Boolean value of this completion. */
boolean getValue() { result = value }
override string toString() {
this = TBooleanCompletion(value) and
result = this.getValue().toString()
}
BooleanCompletion getDual() { result = TBooleanCompletion(value.booleanNot()) }
override string toString() { result = value.toString() }
}
/** A Boolean `true` completion. */
@@ -690,30 +645,31 @@ class BreakNormalCompletion extends NormalCompletion, TBreakNormalCompletion {
* A nested completion. For example, in
*
* ```csharp
* void M(bool b)
* void M(bool b1, bool b2)
* {
* try
* {
* if (b)
* if (b1)
* throw new Exception();
* }
* finally
* {
* System.Console.WriteLine("M called");
* if (b2)
* System.Console.WriteLine("M called");
* }
* }
* ```
*
* `System.Console.WriteLine("M called")` has an outer throw completion
* from `throw new Exception` and an inner simple completion.
* `b2` has an outer throw completion (inherited from `throw new Exception`)
* and an inner `false` completion. `b2` also has a (normal) `true` completion.
*/
class NestedCompletion extends Completion, TNestedCompletion {
private NormalCompletion inner;
private ConditionalCompletion inner;
private Completion outer;
NestedCompletion() { this = TNestedCompletion(inner, outer) }
override NormalCompletion getInnerCompletion() { result = inner }
override ConditionalCompletion getInnerCompletion() { result = inner }
override Completion getOuterCompletion() { result = outer }

View File

@@ -27,6 +27,7 @@ private module Cached {
cached
newtype TSplitKind =
TInitializerSplitKind() or
TConditionalCompletionSplitKind() or
TAssertionSplitKind() or
TFinallySplitKind(int nestLevel) { nestLevel = FinallySplitting::nestLevel(_) } or
TExceptionHandlerSplitKind() or
@@ -36,6 +37,7 @@ private module Cached {
cached
newtype TSplit =
TInitializerSplit(Constructor c) { InitializerSplitting::constructorInitializes(c, _) } or
TConditionalCompletionSplit(ConditionalCompletion c) or
TAssertionSplit(AssertionSplitting::Assertion a, int i, boolean success) {
exists(a.getExpr(i)) and
success in [false, true]
@@ -220,7 +222,8 @@ module InitializerSplitting {
InitializedInstanceMember() {
not this.isStatic() and
expr_parent_top_level_adjusted(ae, _, this)
expr_parent_top_level_adjusted(ae, _, this) and
not ae = any(Callable c).getExpressionBody()
}
/** Gets the initializer expression. */
@@ -390,6 +393,102 @@ module InitializerSplitting {
}
}
module ConditionalCompletionSplitting {
/**
* A split for conditional completions. For example, in
*
* ```csharp
* void M(int i)
* {
* if (x && !y)
* System.Console.WriteLine("true")
* }
* ```
*
* we record whether `x`, `y`, and `!y` evaluate to `true` or `false`, and restrict
* the edges out of `!y` and `x && !y` accordingly.
*/
class ConditionalCompletionSplitImpl extends SplitImpl, TConditionalCompletionSplit {
ConditionalCompletion completion;
ConditionalCompletionSplitImpl() { this = TConditionalCompletionSplit(completion) }
override string toString() { result = completion.toString() }
}
private class ConditionalCompletionSplitKind extends SplitKind, TConditionalCompletionSplitKind {
override int getListOrder() { result = InitializerSplitting::getNextListOrder() }
override predicate isEnabled(ControlFlowElement cfe) { this.appliesTo(cfe) }
override string toString() { result = "ConditionalCompletion" }
}
int getNextListOrder() { result = InitializerSplitting::getNextListOrder() + 1 }
private class ConditionalCompletionSplitInternal extends SplitInternal,
ConditionalCompletionSplitImpl {
override ConditionalCompletionSplitKind getKind() { any() }
override predicate hasEntry(ControlFlowElement pred, ControlFlowElement succ, Completion c) {
succ = succ(pred, c) and
exists(last(succ, completion)) and
(
pred = last(succ.(LogicalNotExpr).getOperand(), c) and
completion.(BooleanCompletion).getDual() = c
or
pred = last(succ.(LogicalAndExpr).getAnOperand(), c) and
completion = c
or
pred = last(succ.(LogicalOrExpr).getAnOperand(), c) and
completion = c
or
succ =
any(ConditionalExpr ce |
pred = last([ce.getThen(), ce.getElse()], c) and
completion = c
)
or
succ =
any(NullCoalescingExpr nce |
exists(Expr operand |
pred = last(operand, c) and
completion = c
|
if c instanceof NullnessCompletion
then operand = nce.getRightOperand()
else operand = nce.getAnOperand()
)
)
or
pred = last(succ.(SwitchExpr).getACase(), c) and
completion = c
or
pred = last(succ.(SwitchCaseExpr).getBody(), c) and
completion = c
)
}
override predicate hasEntry(Callable c, ControlFlowElement succ) { none() }
override predicate hasExit(ControlFlowElement pred, ControlFlowElement succ, Completion c) {
this.appliesTo(pred) and
succ = succ(pred, c) and
if c instanceof ConditionalCompletion then completion = c else any()
}
override Callable hasExit(ControlFlowElement pred, Completion c) {
this.appliesTo(pred) and
result = succExit(pred, c) and
if c instanceof ConditionalCompletion then completion = c else any()
}
override predicate hasSuccessor(ControlFlowElement pred, ControlFlowElement succ, Completion c) {
none()
}
}
}
module AssertionSplitting {
import semmle.code.csharp.commons.Assertions
private import semmle.code.csharp.ExprOrStmtParent
@@ -435,14 +534,14 @@ module AssertionSplitting {
}
private class AssertionSplitKind extends SplitKind, TAssertionSplitKind {
override int getListOrder() { result = InitializerSplitting::getNextListOrder() }
override int getListOrder() { result = ConditionalCompletionSplitting::getNextListOrder() }
override predicate isEnabled(ControlFlowElement cfe) { this.appliesTo(cfe) }
override string toString() { result = "Assertion" }
}
int getNextListOrder() { result = InitializerSplitting::getNextListOrder() + 1 }
int getNextListOrder() { result = ConditionalCompletionSplitting::getNextListOrder() + 1 }
private class AssertionSplitInternal extends SplitInternal, AssertionSplitImpl {
override AssertionSplitKind getKind() { any() }
@@ -1508,12 +1607,13 @@ predicate succExitSplits(ControlFlowElement pred, Splits predSplits, Callable su
* 2. For all `split` in `predSplits`:
* - If `split.hasSuccessor(pred, succ, c)` then `split` in `succSplits`.
* 3. For all `split` in `predSplits`:
* - If `split.hasExit(pred, succ, c)` then `split` not in `succSplits`.
* 4. For all `split` not in `predSplits`:
* - If `split.hasExit(pred, succ, c)` and not `split.hasEntry(pred, succ, c)` then
* `split` not in `succSplits`.
* 4. For all `split` with kind not in `predSplits`:
* - If `split.hasEntry(pred, succ, c)` then `split` in `succSplits`.
* 5. For all `split` in `succSplits`:
* - `split.hasSuccessor(pred, succ, c)` and `split` in `predSplits`, or
* - `split.hasEntry(pred, succ, c)` and `split` not in `predSplits`.
* - `split.hasEntry(pred, succ, c)`.
*
* The algorithm divides into four cases:
*
@@ -1570,12 +1670,20 @@ private module SuccSplits {
case1b0(pred, predSplits, succ, c) and
except = predSplits
or
exists(Splits mid, SplitInternal split | case1bForall(pred, predSplits, succ, c, mid) |
mid = TSplitsCons(split, except) and
exists(SplitInternal split |
case1bForallCons(pred, predSplits, succ, c, split, except) and
split.hasSuccessor(pred, succ, c)
)
}
pragma[noinline]
private predicate case1bForallCons(
ControlFlowElement pred, Splits predSplits, ControlFlowElement succ, Completion c,
SplitInternal exceptHead, Splits exceptTail
) {
case1bForall(pred, predSplits, succ, c, TSplitsCons(exceptHead, exceptTail))
}
private predicate case1(
ControlFlowElement pred, Splits predSplits, ControlFlowElement succ, Completion c
) {
@@ -1589,6 +1697,15 @@ private module SuccSplits {
case1bForall(pred, predSplits, succ, c, TSplitsNil())
}
pragma[noinline]
private SplitInternal succInvariant1GetASplit(
Reachability::SameSplitsBlock b, ControlFlowElement pred, Splits predSplits,
ControlFlowElement succ, Completion c
) {
succInvariant1(b, pred, predSplits, succ, c) and
result = predSplits.getASplit()
}
private predicate case2aux(
ControlFlowElement pred, Splits predSplits, ControlFlowElement succ, Completion c
) {
@@ -1596,7 +1713,7 @@ private module SuccSplits {
succInvariant1(b, pred, predSplits, succ, c) and
(succ = b.getAnElement() implies succ = b)
|
predSplits.getASplit().hasExit(pred, succ, c)
succInvariant1GetASplit(b, pred, predSplits, succ, c).hasExit(pred, succ, c)
or
any(SplitInternal split).hasEntry(pred, succ, c)
)
@@ -1756,13 +1873,20 @@ private module SuccSplits {
not any(SplitKind sk).appliesTo(succ) and
except = predSplits
or
exists(Splits mid, SplitInternal split | case2bForall(pred, predSplits, succ, c, mid) |
mid = TSplitsCons(split, except) and
exists(SplitInternal split | case2bForallCons(pred, predSplits, succ, c, split, except) |
// Invariants 2 and 3
split.hasExit(pred, succ, c)
)
}
pragma[noinline]
private predicate case2bForallCons(
ControlFlowElement pred, Splits predSplits, ControlFlowElement succ, Completion c,
SplitInternal exceptHead, Splits exceptTail
) {
case2bForall(pred, predSplits, succ, c, TSplitsCons(exceptHead, exceptTail))
}
private predicate case2(
ControlFlowElement pred, Splits predSplits, ControlFlowElement succ, Splits succSplits,
Completion c

View File

@@ -170,7 +170,7 @@ module LocalFlow {
or
e1 = e2.(NullCoalescingExpr).getAnOperand() and
scope = e2 and
isSuccessor = false
isSuccessor = true
or
e1 = e2.(SuppressNullableWarningExpr).getExpr() and
scope = e2 and
@@ -182,7 +182,7 @@ module LocalFlow {
e1 = ce.getElse()
) and
scope = e2 and
isSuccessor = false
isSuccessor = true
or
e1 = e2.(Cast).getExpr() and
scope = e2 and
@@ -207,7 +207,7 @@ module LocalFlow {
or
e1 = e2.(SwitchExpr).getACase().getBody() and
scope = e2 and
isSuccessor = false
isSuccessor = true
)
}

View File

@@ -37,14 +37,13 @@ private class LocalTaintExprStepConfiguration extends ControlFlowReachabilityCon
Expr e1, Expr e2, ControlFlowElement scope, boolean exactScope, boolean isSuccessor
) {
exactScope = false and
isSuccessor = true and
(
e1 = e2.(ElementAccess).getQualifier() and
scope = e2 and
isSuccessor = true
scope = e2
or
e1 = e2.(AddExpr).getAnOperand() and
scope = e2 and
isSuccessor = true
scope = e2
or
// A comparison expression where taint can flow from one of the
// operands if the other operand is a constant value.
@@ -54,51 +53,43 @@ private class LocalTaintExprStepConfiguration extends ControlFlowReachabilityCon
other = ct.getAnArgument() and
other.stripCasts().hasValue() and
e1 != other and
scope = e2 and
isSuccessor = true
scope = e2
)
or
e1 = e2.(UnaryLogicalOperation).getAnOperand() and
scope = e2 and
isSuccessor = false
scope = e2
or
e1 = e2.(BinaryLogicalOperation).getAnOperand() and
scope = e2 and
isSuccessor = false
scope = e2
or
// Taint from tuple argument
e2 =
any(TupleExpr te |
e1 = te.getAnArgument() and
te.isReadAccess() and
scope = e2 and
isSuccessor = true
scope = e2
)
or
e1 = e2.(InterpolatedStringExpr).getAChild() and
scope = e2 and
isSuccessor = true
scope = e2
or
// Taint from tuple expression
e2 =
any(MemberAccess ma |
ma.getQualifier().getType() instanceof TupleType and
e1 = ma.getQualifier() and
scope = e2 and
isSuccessor = true
scope = e2
)
or
e2 =
any(OperatorCall oc |
oc.getTarget().(ConversionOperator).fromLibrary() and
e1 = oc.getAnArgument() and
scope = e2 and
isSuccessor = true
scope = e2
)
or
e1 = e2.(AwaitExpr).getExpr() and
scope = e2 and
isSuccessor = true
scope = e2
)
}
}

View File

@@ -73,6 +73,19 @@ private module Impl {
e2.(ExprNode::SubExpr).getRightOperand() = x and
x.getIntValue() = -delta
)
or
// Conditional expressions with only one branch can happen either
// because of pruning or because of Boolean splitting. In such cases
// the conditional expression has the same value as the branch.
delta = 0 and
e2 =
any(ExprNode::ConditionalExpr ce |
e1 = ce.getTrueExpr() and
not exists(ce.getFalseExpr())
or
e1 = ce.getFalseExpr() and
not exists(ce.getTrueExpr())
)
}
/** An expression whose value may control the execution of another element. */

View File

@@ -15,88 +15,88 @@
| ArrayCreation.cs:5:12:5:13 | enter M2 | ArrayCreation.cs:5:12:5:13 | exit M2 | 6 |
| ArrayCreation.cs:7:11:7:12 | enter M3 | ArrayCreation.cs:7:11:7:12 | exit M3 | 8 |
| ArrayCreation.cs:9:12:9:13 | enter M4 | ArrayCreation.cs:9:12:9:13 | exit M4 | 13 |
| Assert.cs:7:10:7:11 | enter M1 | Assert.cs:9:20:9:20 | access to parameter b | 5 |
| Assert.cs:7:10:7:11 | enter M1 | Assert.cs:9:20:9:20 | access to parameter b | 4 |
| Assert.cs:7:10:7:11 | exit M1 | Assert.cs:7:10:7:11 | exit M1 | 1 |
| Assert.cs:9:16:9:32 | String s = ... | Assert.cs:10:22:10:30 | ... != ... | 5 |
| Assert.cs:9:20:9:32 | ... ? ... : ... | Assert.cs:10:22:10:30 | ... != ... | 6 |
| Assert.cs:9:24:9:27 | null | Assert.cs:9:24:9:27 | null | 1 |
| Assert.cs:9:31:9:32 | "" | Assert.cs:9:31:9:32 | "" | 1 |
| Assert.cs:10:9:10:31 | [assertion failure] call to method Assert | Assert.cs:7:10:7:11 | exit M1 (abnormal) | 2 |
| Assert.cs:10:9:10:31 | [assertion success] call to method Assert | Assert.cs:7:10:7:11 | exit M1 (normal) | 6 |
| Assert.cs:14:10:14:11 | enter M2 | Assert.cs:16:20:16:20 | access to parameter b | 5 |
| Assert.cs:14:10:14:11 | enter M2 | Assert.cs:16:20:16:20 | access to parameter b | 4 |
| Assert.cs:14:10:14:11 | exit M2 | Assert.cs:14:10:14:11 | exit M2 | 1 |
| Assert.cs:16:16:16:32 | String s = ... | Assert.cs:17:23:17:23 | access to local variable s | 3 |
| Assert.cs:16:20:16:32 | ... ? ... : ... | Assert.cs:17:23:17:23 | access to local variable s | 4 |
| Assert.cs:16:24:16:27 | null | Assert.cs:16:24:16:27 | null | 1 |
| Assert.cs:16:31:16:32 | "" | Assert.cs:16:31:16:32 | "" | 1 |
| Assert.cs:17:9:17:24 | [assertion failure] call to method IsNull | Assert.cs:14:10:14:11 | exit M2 (abnormal) | 2 |
| Assert.cs:17:9:17:24 | [assertion success] call to method IsNull | Assert.cs:14:10:14:11 | exit M2 (normal) | 6 |
| Assert.cs:21:10:21:11 | enter M3 | Assert.cs:23:20:23:20 | access to parameter b | 5 |
| Assert.cs:21:10:21:11 | enter M3 | Assert.cs:23:20:23:20 | access to parameter b | 4 |
| Assert.cs:21:10:21:11 | exit M3 | Assert.cs:21:10:21:11 | exit M3 | 1 |
| Assert.cs:23:16:23:32 | String s = ... | Assert.cs:24:26:24:26 | access to local variable s | 3 |
| Assert.cs:23:20:23:32 | ... ? ... : ... | Assert.cs:24:26:24:26 | access to local variable s | 4 |
| Assert.cs:23:24:23:27 | null | Assert.cs:23:24:23:27 | null | 1 |
| Assert.cs:23:31:23:32 | "" | Assert.cs:23:31:23:32 | "" | 1 |
| Assert.cs:24:9:24:27 | [assertion failure] call to method IsNotNull | Assert.cs:21:10:21:11 | exit M3 (abnormal) | 2 |
| Assert.cs:24:9:24:27 | [assertion success] call to method IsNotNull | Assert.cs:21:10:21:11 | exit M3 (normal) | 6 |
| Assert.cs:28:10:28:11 | enter M4 | Assert.cs:30:20:30:20 | access to parameter b | 5 |
| Assert.cs:28:10:28:11 | enter M4 | Assert.cs:30:20:30:20 | access to parameter b | 4 |
| Assert.cs:28:10:28:11 | exit M4 | Assert.cs:28:10:28:11 | exit M4 | 1 |
| Assert.cs:30:16:30:32 | String s = ... | Assert.cs:31:23:31:31 | ... == ... | 5 |
| Assert.cs:30:20:30:32 | ... ? ... : ... | Assert.cs:31:23:31:31 | ... == ... | 6 |
| Assert.cs:30:24:30:27 | null | Assert.cs:30:24:30:27 | null | 1 |
| Assert.cs:30:31:30:32 | "" | Assert.cs:30:31:30:32 | "" | 1 |
| Assert.cs:31:9:31:32 | [assertion failure] call to method IsTrue | Assert.cs:28:10:28:11 | exit M4 (abnormal) | 2 |
| Assert.cs:31:9:31:32 | [assertion success] call to method IsTrue | Assert.cs:28:10:28:11 | exit M4 (normal) | 6 |
| Assert.cs:35:10:35:11 | enter M5 | Assert.cs:37:20:37:20 | access to parameter b | 5 |
| Assert.cs:35:10:35:11 | enter M5 | Assert.cs:37:20:37:20 | access to parameter b | 4 |
| Assert.cs:35:10:35:11 | exit M5 | Assert.cs:35:10:35:11 | exit M5 | 1 |
| Assert.cs:37:16:37:32 | String s = ... | Assert.cs:38:23:38:31 | ... != ... | 5 |
| Assert.cs:37:20:37:32 | ... ? ... : ... | Assert.cs:38:23:38:31 | ... != ... | 6 |
| Assert.cs:37:24:37:27 | null | Assert.cs:37:24:37:27 | null | 1 |
| Assert.cs:37:31:37:32 | "" | Assert.cs:37:31:37:32 | "" | 1 |
| Assert.cs:38:9:38:32 | [assertion failure] call to method IsTrue | Assert.cs:35:10:35:11 | exit M5 (abnormal) | 2 |
| Assert.cs:38:9:38:32 | [assertion success] call to method IsTrue | Assert.cs:35:10:35:11 | exit M5 (normal) | 6 |
| Assert.cs:42:10:42:11 | enter M6 | Assert.cs:44:20:44:20 | access to parameter b | 5 |
| Assert.cs:42:10:42:11 | enter M6 | Assert.cs:44:20:44:20 | access to parameter b | 4 |
| Assert.cs:42:10:42:11 | exit M6 | Assert.cs:42:10:42:11 | exit M6 | 1 |
| Assert.cs:44:16:44:32 | String s = ... | Assert.cs:45:24:45:32 | ... != ... | 5 |
| Assert.cs:44:20:44:32 | ... ? ... : ... | Assert.cs:45:24:45:32 | ... != ... | 6 |
| Assert.cs:44:24:44:27 | null | Assert.cs:44:24:44:27 | null | 1 |
| Assert.cs:44:31:44:32 | "" | Assert.cs:44:31:44:32 | "" | 1 |
| Assert.cs:45:9:45:33 | [assertion failure] call to method IsFalse | Assert.cs:42:10:42:11 | exit M6 (abnormal) | 2 |
| Assert.cs:45:9:45:33 | [assertion success] call to method IsFalse | Assert.cs:42:10:42:11 | exit M6 (normal) | 6 |
| Assert.cs:49:10:49:11 | enter M7 | Assert.cs:51:20:51:20 | access to parameter b | 5 |
| Assert.cs:49:10:49:11 | enter M7 | Assert.cs:51:20:51:20 | access to parameter b | 4 |
| Assert.cs:49:10:49:11 | exit M7 | Assert.cs:49:10:49:11 | exit M7 | 1 |
| Assert.cs:51:16:51:32 | String s = ... | Assert.cs:52:24:52:32 | ... == ... | 5 |
| Assert.cs:51:20:51:32 | ... ? ... : ... | Assert.cs:52:24:52:32 | ... == ... | 6 |
| Assert.cs:51:24:51:27 | null | Assert.cs:51:24:51:27 | null | 1 |
| Assert.cs:51:31:51:32 | "" | Assert.cs:51:31:51:32 | "" | 1 |
| Assert.cs:52:9:52:33 | [assertion failure] call to method IsFalse | Assert.cs:49:10:49:11 | exit M7 (abnormal) | 2 |
| Assert.cs:52:9:52:33 | [assertion success] call to method IsFalse | Assert.cs:49:10:49:11 | exit M7 (normal) | 6 |
| Assert.cs:56:10:56:11 | enter M8 | Assert.cs:58:20:58:20 | access to parameter b | 5 |
| Assert.cs:56:10:56:11 | enter M8 | Assert.cs:58:20:58:20 | access to parameter b | 4 |
| Assert.cs:56:10:56:11 | exit M8 | Assert.cs:56:10:56:11 | exit M8 | 1 |
| Assert.cs:58:24:58:27 | [b (line 56): true] null | Assert.cs:59:23:59:31 | [b (line 56): true] ... != ... | 7 |
| Assert.cs:58:31:58:32 | [b (line 56): false] "" | Assert.cs:59:23:59:31 | [b (line 56): false] ... != ... | 7 |
| Assert.cs:59:9:59:37 | [assertion failure] call to method IsTrue | Assert.cs:56:10:56:11 | exit M8 (abnormal) | 2 |
| Assert.cs:59:23:59:36 | [false] ... && ... | Assert.cs:56:10:56:11 | exit M8 (abnormal) | 3 |
| Assert.cs:59:36:59:36 | [b (line 56): false] access to parameter b | Assert.cs:59:36:59:36 | [b (line 56): false] access to parameter b | 1 |
| Assert.cs:59:36:59:36 | [b (line 56): true] access to parameter b | Assert.cs:56:10:56:11 | exit M8 (normal) | 7 |
| Assert.cs:63:10:63:11 | enter M9 | Assert.cs:65:20:65:20 | access to parameter b | 5 |
| Assert.cs:59:36:59:36 | [b (line 56): true] access to parameter b | Assert.cs:56:10:56:11 | exit M8 (normal) | 8 |
| Assert.cs:63:10:63:11 | enter M9 | Assert.cs:65:20:65:20 | access to parameter b | 4 |
| Assert.cs:63:10:63:11 | exit M9 | Assert.cs:63:10:63:11 | exit M9 | 1 |
| Assert.cs:65:24:65:27 | [b (line 63): true] null | Assert.cs:66:24:66:32 | [b (line 63): true] ... == ... | 7 |
| Assert.cs:65:31:65:32 | [b (line 63): false] "" | Assert.cs:66:24:66:32 | [b (line 63): false] ... == ... | 7 |
| Assert.cs:66:9:66:38 | [assertion failure] call to method IsFalse | Assert.cs:63:10:63:11 | exit M9 (abnormal) | 2 |
| Assert.cs:66:37:66:37 | [b (line 63): false] access to parameter b | Assert.cs:63:10:63:11 | exit M9 (normal) | 7 |
| Assert.cs:66:24:66:37 | [true] ... \|\| ... | Assert.cs:63:10:63:11 | exit M9 (abnormal) | 3 |
| Assert.cs:66:37:66:37 | [b (line 63): false] access to parameter b | Assert.cs:63:10:63:11 | exit M9 (normal) | 8 |
| Assert.cs:66:37:66:37 | [b (line 63): true] access to parameter b | Assert.cs:66:37:66:37 | [b (line 63): true] access to parameter b | 1 |
| Assert.cs:70:10:70:12 | enter M10 | Assert.cs:72:20:72:20 | access to parameter b | 5 |
| Assert.cs:70:10:70:12 | enter M10 | Assert.cs:72:20:72:20 | access to parameter b | 4 |
| Assert.cs:70:10:70:12 | exit M10 | Assert.cs:70:10:70:12 | exit M10 | 1 |
| Assert.cs:72:24:72:27 | [b (line 70): true] null | Assert.cs:73:23:73:31 | [b (line 70): true] ... == ... | 7 |
| Assert.cs:72:31:72:32 | [b (line 70): false] "" | Assert.cs:73:23:73:31 | [b (line 70): false] ... == ... | 7 |
| Assert.cs:73:9:73:37 | [assertion failure] call to method IsTrue | Assert.cs:70:10:70:12 | exit M10 (abnormal) | 2 |
| Assert.cs:73:23:73:36 | [false] ... && ... | Assert.cs:70:10:70:12 | exit M10 (abnormal) | 3 |
| Assert.cs:73:36:73:36 | [b (line 70): false] access to parameter b | Assert.cs:73:36:73:36 | [b (line 70): false] access to parameter b | 1 |
| Assert.cs:73:36:73:36 | [b (line 70): true] access to parameter b | Assert.cs:70:10:70:12 | exit M10 (normal) | 7 |
| Assert.cs:77:10:77:12 | enter M11 | Assert.cs:79:20:79:20 | access to parameter b | 5 |
| Assert.cs:73:36:73:36 | [b (line 70): true] access to parameter b | Assert.cs:70:10:70:12 | exit M10 (normal) | 8 |
| Assert.cs:77:10:77:12 | enter M11 | Assert.cs:79:20:79:20 | access to parameter b | 4 |
| Assert.cs:77:10:77:12 | exit M11 | Assert.cs:77:10:77:12 | exit M11 | 1 |
| Assert.cs:79:24:79:27 | [b (line 77): true] null | Assert.cs:80:24:80:32 | [b (line 77): true] ... != ... | 7 |
| Assert.cs:79:31:79:32 | [b (line 77): false] "" | Assert.cs:80:24:80:32 | [b (line 77): false] ... != ... | 7 |
| Assert.cs:80:9:80:38 | [assertion failure] call to method IsFalse | Assert.cs:77:10:77:12 | exit M11 (abnormal) | 2 |
| Assert.cs:80:37:80:37 | [b (line 77): false] access to parameter b | Assert.cs:77:10:77:12 | exit M11 (normal) | 7 |
| Assert.cs:80:24:80:37 | [true] ... \|\| ... | Assert.cs:77:10:77:12 | exit M11 (abnormal) | 3 |
| Assert.cs:80:37:80:37 | [b (line 77): false] access to parameter b | Assert.cs:77:10:77:12 | exit M11 (normal) | 8 |
| Assert.cs:80:37:80:37 | [b (line 77): true] access to parameter b | Assert.cs:80:37:80:37 | [b (line 77): true] access to parameter b | 1 |
| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:86:20:86:20 | access to parameter b | 5 |
| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:86:20:86:20 | access to parameter b | 4 |
| Assert.cs:84:10:84:12 | exit M12 | Assert.cs:84:10:84:12 | exit M12 | 1 |
| Assert.cs:84:10:84:12 | exit M12 (abnormal) | Assert.cs:84:10:84:12 | exit M12 (abnormal) | 1 |
| Assert.cs:86:24:86:27 | [b (line 84): true] null | Assert.cs:87:22:87:30 | [b (line 84): true] ... != ... | 6 |
| Assert.cs:86:31:86:32 | [b (line 84): false] "" | Assert.cs:87:22:87:30 | [b (line 84): false] ... != ... | 6 |
| Assert.cs:86:24:86:27 | [b (line 84): true] null | Assert.cs:87:22:87:30 | [b (line 84): true] ... != ... | 7 |
| Assert.cs:86:31:86:32 | [b (line 84): false] "" | Assert.cs:87:22:87:30 | [b (line 84): false] ... != ... | 7 |
| Assert.cs:87:9:87:31 | [assertion failure, b (line 84): false] call to method Assert | Assert.cs:87:9:87:31 | [assertion failure, b (line 84): false] call to method Assert | 1 |
| Assert.cs:87:9:87:31 | [assertion failure, b (line 84): true] call to method Assert | Assert.cs:87:9:87:31 | [assertion failure, b (line 84): true] call to method Assert | 1 |
| Assert.cs:87:9:87:31 | [assertion success, b (line 84): false] call to method Assert | Assert.cs:91:23:91:23 | [b (line 84): false] access to local variable s | 12 |
@@ -123,18 +123,18 @@
| Assert.cs:107:9:107:33 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:111:24:111:32 | [b (line 84): true] ... == ... | 14 |
| Assert.cs:111:9:111:33 | [assertion failure, b (line 84): false] call to method IsFalse | Assert.cs:111:9:111:33 | [assertion failure, b (line 84): false] call to method IsFalse | 1 |
| Assert.cs:111:9:111:33 | [assertion failure, b (line 84): true] call to method IsFalse | Assert.cs:111:9:111:33 | [assertion failure, b (line 84): true] call to method IsFalse | 1 |
| Assert.cs:111:9:111:33 | [assertion success, b (line 84): false] call to method IsFalse | Assert.cs:115:23:115:31 | [b (line 84): false] ... != ... | 15 |
| Assert.cs:111:9:111:33 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:115:23:115:31 | [b (line 84): true] ... != ... | 15 |
| Assert.cs:115:9:115:37 | [assertion failure, b (line 84): false] call to method IsTrue | Assert.cs:115:9:115:37 | [assertion failure, b (line 84): false] call to method IsTrue | 1 |
| Assert.cs:115:9:115:37 | [assertion failure, b (line 84): true] call to method IsTrue | Assert.cs:115:9:115:37 | [assertion failure, b (line 84): true] call to method IsTrue | 1 |
| Assert.cs:111:9:111:33 | [assertion success, b (line 84): false] call to method IsFalse | Assert.cs:115:23:115:31 | [b (line 84): false] ... != ... | 14 |
| Assert.cs:111:9:111:33 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:115:23:115:31 | [b (line 84): true] ... != ... | 14 |
| Assert.cs:115:23:115:36 | [false, b (line 84): false] ... && ... | Assert.cs:115:9:115:37 | [assertion failure, b (line 84): false] call to method IsTrue | 2 |
| Assert.cs:115:23:115:36 | [false, b (line 84): true] ... && ... | Assert.cs:115:9:115:37 | [assertion failure, b (line 84): true] call to method IsTrue | 2 |
| Assert.cs:115:36:115:36 | [b (line 84): false] access to parameter b | Assert.cs:115:36:115:36 | [b (line 84): false] access to parameter b | 1 |
| Assert.cs:115:36:115:36 | [b (line 84): true] access to parameter b | Assert.cs:119:24:119:32 | [b (line 84): true] ... == ... | 16 |
| Assert.cs:119:9:119:39 | [assertion failure, b (line 84): true] call to method IsFalse | Assert.cs:119:9:119:39 | [assertion failure, b (line 84): true] call to method IsFalse | 1 |
| Assert.cs:119:37:119:38 | [b (line 84): true] !... | Assert.cs:123:23:123:31 | [b (line 84): true] ... == ... | 17 |
| Assert.cs:123:9:123:37 | [assertion failure, b (line 84): true] call to method IsTrue | Assert.cs:123:9:123:37 | [assertion failure, b (line 84): true] call to method IsTrue | 1 |
| Assert.cs:119:24:119:38 | [true, b (line 84): true] ... \|\| ... | Assert.cs:119:9:119:39 | [assertion failure, b (line 84): true] call to method IsFalse | 2 |
| Assert.cs:119:38:119:38 | [b (line 84): true] access to parameter b | Assert.cs:123:23:123:31 | [b (line 84): true] ... == ... | 17 |
| Assert.cs:123:23:123:36 | [false, b (line 84): true] ... && ... | Assert.cs:123:9:123:37 | [assertion failure, b (line 84): true] call to method IsTrue | 2 |
| Assert.cs:123:36:123:36 | [b (line 84): true] access to parameter b | Assert.cs:127:24:127:32 | [b (line 84): true] ... != ... | 16 |
| Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | 1 |
| Assert.cs:127:37:127:38 | [b (line 84): true] !... | Assert.cs:84:10:84:12 | exit M12 (normal) | 8 |
| Assert.cs:127:24:127:38 | [true] ... \|\| ... | Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | 2 |
| Assert.cs:127:38:127:38 | [b (line 84): true] access to parameter b | Assert.cs:84:10:84:12 | exit M12 (normal) | 9 |
| Assert.cs:131:18:131:32 | enter AssertTrueFalse | Assert.cs:131:18:131:32 | exit AssertTrueFalse | 4 |
| Assert.cs:138:10:138:12 | enter M13 | Assert.cs:140:25:140:26 | access to parameter b1 | 5 |
| Assert.cs:138:10:138:12 | exit M13 | Assert.cs:138:10:138:12 | exit M13 | 1 |
@@ -187,8 +187,6 @@
| CompileTimeOperators.cs:15:10:15:15 | enter Typeof | CompileTimeOperators.cs:15:10:15:15 | exit Typeof | 6 |
| CompileTimeOperators.cs:20:12:20:17 | enter Nameof | CompileTimeOperators.cs:20:12:20:17 | exit Nameof | 6 |
| CompileTimeOperators.cs:28:10:28:10 | enter M | CompileTimeOperators.cs:28:10:28:10 | exit M | 15 |
| ConditionalAccess.cs:1:7:1:23 | enter ConditionalAccess | ConditionalAccess.cs:30:28:30:32 | ... = ... | 3 |
| ConditionalAccess.cs:1:7:1:23 | exit ConditionalAccess (normal) | ConditionalAccess.cs:1:7:1:23 | exit ConditionalAccess | 2 |
| ConditionalAccess.cs:3:12:3:13 | enter M1 | ConditionalAccess.cs:3:26:3:26 | access to parameter i | 2 |
| ConditionalAccess.cs:3:12:3:13 | exit M1 (normal) | ConditionalAccess.cs:3:12:3:13 | exit M1 | 2 |
| ConditionalAccess.cs:3:28:3:38 | call to method ToString | ConditionalAccess.cs:3:28:3:38 | call to method ToString | 1 |
@@ -196,12 +194,15 @@
| ConditionalAccess.cs:5:10:5:11 | enter M2 | ConditionalAccess.cs:5:26:5:26 | access to parameter s | 2 |
| ConditionalAccess.cs:5:10:5:11 | exit M2 (normal) | ConditionalAccess.cs:5:10:5:11 | exit M2 | 2 |
| ConditionalAccess.cs:5:28:5:34 | access to property Length | ConditionalAccess.cs:5:28:5:34 | access to property Length | 1 |
| ConditionalAccess.cs:7:10:7:11 | enter M3 | ConditionalAccess.cs:7:39:7:40 | access to parameter s1 | 3 |
| ConditionalAccess.cs:7:10:7:11 | enter M3 | ConditionalAccess.cs:7:39:7:40 | access to parameter s1 | 2 |
| ConditionalAccess.cs:7:10:7:11 | exit M3 (normal) | ConditionalAccess.cs:7:10:7:11 | exit M3 | 2 |
| ConditionalAccess.cs:7:39:7:46 | ... ?? ... | ConditionalAccess.cs:7:39:7:46 | ... ?? ... | 1 |
| ConditionalAccess.cs:7:39:7:46 | [non-null] ... ?? ... | ConditionalAccess.cs:7:39:7:46 | [non-null] ... ?? ... | 1 |
| ConditionalAccess.cs:7:39:7:46 | [null] ... ?? ... | ConditionalAccess.cs:7:39:7:46 | [null] ... ?? ... | 1 |
| ConditionalAccess.cs:7:45:7:46 | access to parameter s2 | ConditionalAccess.cs:7:45:7:46 | access to parameter s2 | 1 |
| ConditionalAccess.cs:7:49:7:55 | access to property Length | ConditionalAccess.cs:7:49:7:55 | access to property Length | 1 |
| ConditionalAccess.cs:9:9:9:10 | enter M4 | ConditionalAccess.cs:9:25:9:25 | access to parameter s | 3 |
| ConditionalAccess.cs:9:9:9:10 | exit M4 (normal) | ConditionalAccess.cs:9:9:9:10 | exit M4 | 2 |
| ConditionalAccess.cs:9:9:9:10 | enter M4 | ConditionalAccess.cs:9:25:9:25 | access to parameter s | 2 |
| ConditionalAccess.cs:9:25:9:38 | ... ?? ... | ConditionalAccess.cs:9:9:9:10 | exit M4 | 3 |
| ConditionalAccess.cs:9:27:9:33 | access to property Length | ConditionalAccess.cs:9:27:9:33 | access to property Length | 1 |
| ConditionalAccess.cs:9:38:9:38 | 0 | ConditionalAccess.cs:9:38:9:38 | 0 | 1 |
| ConditionalAccess.cs:11:9:11:10 | enter M5 | ConditionalAccess.cs:13:13:13:13 | access to parameter s | 4 |
@@ -214,21 +215,20 @@
| ConditionalAccess.cs:19:12:19:13 | exit M6 (normal) | ConditionalAccess.cs:19:12:19:13 | exit M6 | 2 |
| ConditionalAccess.cs:19:58:19:59 | access to parameter s2 | ConditionalAccess.cs:19:43:19:60 | call to method CommaJoinWith | 2 |
| ConditionalAccess.cs:21:10:21:11 | enter M7 | ConditionalAccess.cs:21:10:21:11 | exit M7 | 18 |
| ConditionalAccess.cs:30:10:30:12 | enter Out | ConditionalAccess.cs:30:28:30:32 | ... = ... | 3 |
| ConditionalAccess.cs:30:10:30:12 | exit Out (normal) | ConditionalAccess.cs:30:10:30:12 | exit Out | 2 |
| ConditionalAccess.cs:30:10:30:12 | enter Out | ConditionalAccess.cs:30:10:30:12 | exit Out | 5 |
| ConditionalAccess.cs:32:10:32:11 | enter M8 | ConditionalAccess.cs:35:9:35:12 | access to property Prop | 8 |
| ConditionalAccess.cs:32:10:32:11 | exit M8 (normal) | ConditionalAccess.cs:32:10:32:11 | exit M8 | 2 |
| ConditionalAccess.cs:35:14:35:24 | call to method Out | ConditionalAccess.cs:35:14:35:24 | call to method Out | 1 |
| ConditionalAccess.cs:41:26:41:38 | enter CommaJoinWith | ConditionalAccess.cs:41:26:41:38 | exit CommaJoinWith | 8 |
| Conditions.cs:3:10:3:19 | enter IncrOrDecr | Conditions.cs:5:13:5:15 | access to parameter inc | 4 |
| Conditions.cs:3:10:3:19 | exit IncrOrDecr (normal) | Conditions.cs:3:10:3:19 | exit IncrOrDecr | 2 |
| Conditions.cs:6:13:6:16 | [inc (line 3): true] ...; | Conditions.cs:7:14:7:16 | [inc (line 3): true] access to parameter inc | 6 |
| Conditions.cs:6:13:6:16 | [inc (line 3): true] ...; | Conditions.cs:7:13:7:16 | [false] !... | 6 |
| Conditions.cs:7:9:8:16 | [inc (line 3): false] if (...) ... | Conditions.cs:8:13:8:15 | ...-- | 6 |
| Conditions.cs:11:9:11:10 | enter M1 | Conditions.cs:14:13:14:13 | access to parameter b | 7 |
| Conditions.cs:15:13:15:16 | [b (line 11): true] ...; | Conditions.cs:16:13:16:17 | [b (line 11): true] ... > ... | 7 |
| Conditions.cs:16:9:18:20 | [b (line 11): false] if (...) ... | Conditions.cs:16:13:16:17 | [b (line 11): false] ... > ... | 4 |
| Conditions.cs:17:13:18:20 | [b (line 11): false] if (...) ... | Conditions.cs:18:17:18:19 | ...-- | 6 |
| Conditions.cs:17:13:18:20 | [b (line 11): true] if (...) ... | Conditions.cs:17:18:17:18 | [b (line 11): true] access to parameter b | 3 |
| Conditions.cs:17:13:18:20 | [b (line 11): true] if (...) ... | Conditions.cs:17:17:17:18 | [false] !... | 3 |
| Conditions.cs:19:16:19:16 | access to local variable x | Conditions.cs:11:9:11:10 | exit M1 | 4 |
| Conditions.cs:22:9:22:10 | enter M2 | Conditions.cs:25:13:25:14 | access to parameter b1 | 7 |
| Conditions.cs:26:13:27:20 | if (...) ... | Conditions.cs:26:17:26:18 | access to parameter b2 | 2 |
@@ -283,24 +283,24 @@
| Conditions.cs:106:13:106:20 | [b (line 102): true] ...; | Conditions.cs:107:13:107:24 | [b (line 102): true] ... > ... | 10 |
| Conditions.cs:107:9:109:24 | [b (line 102): false] if (...) ... | Conditions.cs:107:13:107:24 | [b (line 102): false] ... > ... | 5 |
| Conditions.cs:108:13:109:24 | [b (line 102): false] if (...) ... | Conditions.cs:109:17:109:23 | ... = ... | 8 |
| Conditions.cs:108:13:109:24 | [b (line 102): true] if (...) ... | Conditions.cs:108:18:108:18 | [b (line 102): true] access to parameter b | 3 |
| Conditions.cs:108:13:109:24 | [b (line 102): true] if (...) ... | Conditions.cs:108:17:108:18 | [false] !... | 3 |
| Conditions.cs:110:16:110:16 | access to local variable x | Conditions.cs:102:12:102:13 | exit M8 | 4 |
| Conditions.cs:113:10:113:11 | enter M9 | Conditions.cs:116:18:116:22 | Int32 i = ... | 8 |
| Conditions.cs:113:10:113:11 | exit M9 (normal) | Conditions.cs:113:10:113:11 | exit M9 | 2 |
| Conditions.cs:116:25:116:25 | access to local variable i | Conditions.cs:116:25:116:39 | ... < ... | 4 |
| Conditions.cs:116:42:116:42 | access to local variable i | Conditions.cs:116:42:116:44 | ...++ | 2 |
| Conditions.cs:117:9:123:9 | {...} | Conditions.cs:119:18:119:21 | access to local variable last | 12 |
| Conditions.cs:120:17:120:23 | [last (line 118): false] ...; | Conditions.cs:121:17:121:20 | [last (line 118): false] access to local variable last | 5 |
| Conditions.cs:121:13:122:25 | [last (line 118): true] if (...) ... | Conditions.cs:122:17:122:24 | ... = ... | 5 |
| Conditions.cs:117:9:123:9 | {...} | Conditions.cs:119:18:119:21 | access to local variable last | 11 |
| Conditions.cs:119:17:119:21 | [false, last (line 118): true] !... | Conditions.cs:122:17:122:24 | ... = ... | 6 |
| Conditions.cs:119:17:119:21 | [true, last (line 118): false] !... | Conditions.cs:121:17:121:20 | [last (line 118): false] access to local variable last | 6 |
| Conditions.cs:129:10:129:12 | enter M10 | Conditions.cs:133:17:133:22 | access to field Field1 | 8 |
| Conditions.cs:131:16:131:19 | [Field1 (line 129): false] true | Conditions.cs:133:17:133:22 | [Field1 (line 129): false] access to field Field1 | 5 |
| Conditions.cs:131:16:131:19 | [Field1 (line 129): true, Field2 (line 129): false] true | Conditions.cs:135:21:135:26 | [Field1 (line 129): true, Field2 (line 129): false] access to field Field2 | 9 |
| Conditions.cs:134:13:139:13 | [Field1 (line 129): true] {...} | Conditions.cs:135:21:135:26 | [Field1 (line 129): true] access to field Field2 | 4 |
| Conditions.cs:136:17:138:17 | [Field1 (line 129): true, Field2 (line 129): true] {...} | Conditions.cs:135:21:135:26 | [Field1 (line 129): true, Field2 (line 129): true] access to field Field2 | 14 |
| Conditions.cs:143:10:143:12 | enter M11 | Conditions.cs:145:17:145:17 | access to parameter b | 5 |
| Conditions.cs:143:10:143:12 | enter M11 | Conditions.cs:145:17:145:17 | access to parameter b | 4 |
| Conditions.cs:143:10:143:12 | exit M11 (normal) | Conditions.cs:143:10:143:12 | exit M11 | 2 |
| Conditions.cs:145:21:145:23 | [b (line 143): true] "a" | Conditions.cs:147:13:147:48 | call to method WriteLine | 9 |
| Conditions.cs:145:27:145:29 | [b (line 143): false] "b" | Conditions.cs:149:13:149:48 | call to method WriteLine | 9 |
| Conditions.cs:145:21:145:23 | [b (line 143): true] "a" | Conditions.cs:147:13:147:48 | call to method WriteLine | 10 |
| Conditions.cs:145:27:145:29 | [b (line 143): false] "b" | Conditions.cs:149:13:149:48 | call to method WriteLine | 10 |
| ExitMethods.cs:7:10:7:11 | enter M1 | ExitMethods.cs:7:10:7:11 | exit M1 | 8 |
| ExitMethods.cs:13:10:13:11 | enter M2 | ExitMethods.cs:13:10:13:11 | exit M2 | 8 |
| ExitMethods.cs:19:10:19:11 | enter M3 | ExitMethods.cs:19:10:19:11 | exit M3 | 7 |
@@ -327,12 +327,12 @@
| ExitMethods.cs:86:10:86:13 | enter Exit | ExitMethods.cs:86:10:86:13 | exit Exit | 7 |
| ExitMethods.cs:91:10:91:18 | enter ExitInTry | ExitMethods.cs:91:10:91:18 | exit ExitInTry | 9 |
| ExitMethods.cs:104:10:104:24 | enter ApplicationExit | ExitMethods.cs:104:10:104:24 | exit ApplicationExit | 6 |
| ExitMethods.cs:109:13:109:21 | enter ThrowExpr | ExitMethods.cs:111:16:111:25 | ... != ... | 7 |
| ExitMethods.cs:109:13:109:21 | enter ThrowExpr | ExitMethods.cs:111:16:111:25 | ... != ... | 6 |
| ExitMethods.cs:109:13:109:21 | exit ThrowExpr | ExitMethods.cs:109:13:109:21 | exit ThrowExpr | 1 |
| ExitMethods.cs:111:29:111:29 | 1 | ExitMethods.cs:109:13:109:21 | exit ThrowExpr (normal) | 6 |
| ExitMethods.cs:111:29:111:29 | 1 | ExitMethods.cs:109:13:109:21 | exit ThrowExpr (normal) | 7 |
| ExitMethods.cs:111:69:111:75 | "input" | ExitMethods.cs:109:13:109:21 | exit ThrowExpr (abnormal) | 4 |
| ExitMethods.cs:114:16:114:34 | enter ExtensionMethodCall | ExitMethods.cs:116:16:116:30 | call to method Contains | 6 |
| ExitMethods.cs:116:9:116:39 | return ...; | ExitMethods.cs:114:16:114:34 | exit ExtensionMethodCall | 3 |
| ExitMethods.cs:114:16:114:34 | enter ExtensionMethodCall | ExitMethods.cs:116:16:116:30 | call to method Contains | 5 |
| ExitMethods.cs:116:16:116:38 | ... ? ... : ... | ExitMethods.cs:114:16:114:34 | exit ExtensionMethodCall | 4 |
| ExitMethods.cs:116:34:116:34 | 0 | ExitMethods.cs:116:34:116:34 | 0 | 1 |
| ExitMethods.cs:116:38:116:38 | 1 | ExitMethods.cs:116:38:116:38 | 1 | 1 |
| ExitMethods.cs:119:17:119:32 | enter FailingAssertion | ExitMethods.cs:119:17:119:32 | exit FailingAssertion | 7 |
@@ -413,20 +413,25 @@
| Finally.cs:103:10:103:11 | exit M5 (normal) | Finally.cs:103:10:103:11 | exit M5 (normal) | 1 |
| Finally.cs:107:17:107:28 | access to property Length | Finally.cs:107:17:107:28 | access to property Length | 1 |
| Finally.cs:107:33:107:33 | 0 | Finally.cs:107:17:107:33 | ... == ... | 2 |
| Finally.cs:108:17:108:23 | return ...; | Finally.cs:114:19:114:35 | [finally: return] ... == ... | 9 |
| Finally.cs:108:17:108:23 | return ...; | Finally.cs:114:19:114:35 | [finally: return] ... == ... | 8 |
| Finally.cs:109:13:110:49 | if (...) ... | Finally.cs:109:17:109:21 | access to field Field | 3 |
| Finally.cs:109:17:109:28 | access to property Length | Finally.cs:109:17:109:28 | access to property Length | 1 |
| Finally.cs:109:33:109:33 | 1 | Finally.cs:109:17:109:33 | ... == ... | 2 |
| Finally.cs:110:17:110:49 | throw ...; | Finally.cs:114:19:114:35 | [finally: exception(OutOfMemoryException)] ... == ... | 9 |
| Finally.cs:110:17:110:49 | throw ...; | Finally.cs:114:19:114:35 | [finally: exception(OutOfMemoryException)] ... == ... | 8 |
| Finally.cs:110:23:110:48 | object creation of type OutOfMemoryException | Finally.cs:110:23:110:48 | object creation of type OutOfMemoryException | 1 |
| Finally.cs:113:9:118:9 | [finally: exception(Exception)] {...} | Finally.cs:114:19:114:35 | [finally: exception(Exception)] ... == ... | 8 |
| Finally.cs:113:9:118:9 | [finally: exception(NullReferenceException)] {...} | Finally.cs:114:19:114:35 | [finally: exception(NullReferenceException)] ... == ... | 8 |
| Finally.cs:113:9:118:9 | {...} | Finally.cs:114:19:114:35 | ... == ... | 8 |
| Finally.cs:115:17:115:41 | ...; | Finally.cs:115:17:115:40 | call to method WriteLine | 4 |
| Finally.cs:115:17:115:41 | [finally: exception(Exception)] ...; | Finally.cs:115:17:115:40 | [finally: exception(Exception)] call to method WriteLine | 4 |
| Finally.cs:115:17:115:41 | [finally: exception(NullReferenceException)] ...; | Finally.cs:115:17:115:40 | [finally: exception(NullReferenceException)] call to method WriteLine | 4 |
| Finally.cs:115:17:115:41 | [finally: exception(OutOfMemoryException)] ...; | Finally.cs:115:17:115:40 | [finally: exception(OutOfMemoryException)] call to method WriteLine | 4 |
| Finally.cs:115:17:115:41 | [finally: return] ...; | Finally.cs:115:17:115:40 | [finally: return] call to method WriteLine | 4 |
| Finally.cs:113:9:118:9 | [finally: exception(Exception)] {...} | Finally.cs:114:19:114:35 | [finally: exception(Exception)] ... == ... | 7 |
| Finally.cs:113:9:118:9 | [finally: exception(NullReferenceException)] {...} | Finally.cs:114:19:114:35 | [finally: exception(NullReferenceException)] ... == ... | 7 |
| Finally.cs:113:9:118:9 | {...} | Finally.cs:114:19:114:35 | ... == ... | 7 |
| Finally.cs:114:17:114:36 | [false, finally: exception(Exception)] !... | Finally.cs:114:17:114:36 | [false, finally: exception(Exception)] !... | 1 |
| Finally.cs:114:17:114:36 | [false, finally: exception(NullReferenceException)] !... | Finally.cs:114:17:114:36 | [false, finally: exception(NullReferenceException)] !... | 1 |
| Finally.cs:114:17:114:36 | [false, finally: exception(OutOfMemoryException)] !... | Finally.cs:114:17:114:36 | [false, finally: exception(OutOfMemoryException)] !... | 1 |
| Finally.cs:114:17:114:36 | [false, finally: return] !... | Finally.cs:114:17:114:36 | [false, finally: return] !... | 1 |
| Finally.cs:114:17:114:36 | [false] !... | Finally.cs:114:17:114:36 | [false] !... | 1 |
| Finally.cs:114:17:114:36 | [true, finally: exception(Exception)] !... | Finally.cs:115:17:115:40 | [finally: exception(Exception)] call to method WriteLine | 5 |
| Finally.cs:114:17:114:36 | [true, finally: exception(NullReferenceException)] !... | Finally.cs:115:17:115:40 | [finally: exception(NullReferenceException)] call to method WriteLine | 5 |
| Finally.cs:114:17:114:36 | [true, finally: exception(OutOfMemoryException)] !... | Finally.cs:115:17:115:40 | [finally: exception(OutOfMemoryException)] call to method WriteLine | 5 |
| Finally.cs:114:17:114:36 | [true, finally: return] !... | Finally.cs:115:17:115:40 | [finally: return] call to method WriteLine | 5 |
| Finally.cs:114:17:114:36 | [true] !... | Finally.cs:115:17:115:40 | call to method WriteLine | 5 |
| Finally.cs:116:13:117:37 | [finally: exception(Exception)] if (...) ... | Finally.cs:116:17:116:32 | [finally: exception(Exception)] ... > ... | 6 |
| Finally.cs:116:13:117:37 | [finally: exception(NullReferenceException)] if (...) ... | Finally.cs:116:17:116:32 | [finally: exception(NullReferenceException)] ... > ... | 6 |
| Finally.cs:116:13:117:37 | [finally: exception(OutOfMemoryException)] if (...) ... | Finally.cs:116:17:116:32 | [finally: exception(OutOfMemoryException)] ... > ... | 6 |
@@ -539,10 +544,11 @@
| Foreach.cs:12:10:12:11 | exit M2 (normal) | Foreach.cs:12:10:12:11 | exit M2 | 2 |
| Foreach.cs:14:9:15:13 | foreach (... ... in ...) ... | Foreach.cs:14:9:15:13 | foreach (... ... in ...) ... | 1 |
| Foreach.cs:14:22:14:22 | String _ | Foreach.cs:15:13:15:13 | ; | 2 |
| Foreach.cs:18:10:18:11 | enter M3 | Foreach.cs:20:27:20:27 | access to parameter e | 4 |
| Foreach.cs:18:10:18:11 | enter M3 | Foreach.cs:20:27:20:27 | access to parameter e | 3 |
| Foreach.cs:18:10:18:11 | exit M3 (normal) | Foreach.cs:18:10:18:11 | exit M3 | 2 |
| Foreach.cs:20:9:21:11 | foreach (... ... in ...) ... | Foreach.cs:20:9:21:11 | foreach (... ... in ...) ... | 1 |
| Foreach.cs:20:22:20:22 | String x | Foreach.cs:21:11:21:11 | ; | 2 |
| Foreach.cs:20:27:20:68 | ... ?? ... | Foreach.cs:20:27:20:68 | ... ?? ... | 1 |
| Foreach.cs:20:29:20:38 | call to method ToArray | Foreach.cs:20:29:20:38 | call to method ToArray | 1 |
| Foreach.cs:20:43:20:68 | call to method Empty | Foreach.cs:20:43:20:68 | call to method Empty | 1 |
| Foreach.cs:24:10:24:11 | enter M4 | Foreach.cs:26:36:26:39 | access to parameter args | 3 |
@@ -593,10 +599,10 @@
| LoopUnrolling.cs:58:22:58:22 | [b (line 55): true] String x | LoopUnrolling.cs:60:17:60:17 | [b (line 55): true] access to parameter b | 4 |
| LoopUnrolling.cs:61:17:61:37 | [b (line 55): true] ...; | LoopUnrolling.cs:58:9:64:9 | [b (line 55): true] foreach (... ... in ...) ... | 9 |
| LoopUnrolling.cs:62:13:63:37 | [b (line 55): false] if (...) ... | LoopUnrolling.cs:58:9:64:9 | [b (line 55): false] foreach (... ... in ...) ... | 3 |
| LoopUnrolling.cs:67:10:67:11 | enter M8 | LoopUnrolling.cs:69:14:69:23 | call to method Any | 6 |
| LoopUnrolling.cs:67:10:67:11 | enter M8 | LoopUnrolling.cs:69:14:69:23 | call to method Any | 5 |
| LoopUnrolling.cs:67:10:67:11 | exit M8 (normal) | LoopUnrolling.cs:67:10:67:11 | exit M8 | 2 |
| LoopUnrolling.cs:70:13:70:19 | return ...; | LoopUnrolling.cs:70:13:70:19 | return ...; | 1 |
| LoopUnrolling.cs:71:9:71:21 | ...; | LoopUnrolling.cs:72:9:73:35 | [skip (line 72)] foreach (... ... in ...) ... | 5 |
| LoopUnrolling.cs:69:13:69:23 | [false] !... | LoopUnrolling.cs:72:9:73:35 | [skip (line 72)] foreach (... ... in ...) ... | 6 |
| LoopUnrolling.cs:69:13:69:23 | [true] !... | LoopUnrolling.cs:70:13:70:19 | return ...; | 2 |
| LoopUnrolling.cs:76:10:76:11 | enter M9 | LoopUnrolling.cs:76:10:76:11 | exit M9 | 11 |
| LoopUnrolling.cs:85:10:85:12 | enter M10 | LoopUnrolling.cs:85:10:85:12 | exit M10 | 11 |
| LoopUnrolling.cs:94:10:94:12 | enter M11 | LoopUnrolling.cs:97:9:100:9 | [unroll (line 97)] foreach (... ... in ...) ... | 9 |
@@ -765,29 +771,33 @@
| MultiImplementationB.cs:32:9:32:10 | exit M1 | MultiImplementationB.cs:32:9:32:10 | exit M1 | 1 |
| MultiImplementationB.cs:32:17:32:17 | 0 | MultiImplementationA.cs:36:9:36:10 | exit M1 (normal) | 2 |
| MultiImplementationB.cs:32:17:32:17 | 0 | MultiImplementationB.cs:32:9:32:10 | exit M1 (normal) | 2 |
| NullCoalescing.cs:3:9:3:10 | enter M1 | NullCoalescing.cs:3:23:3:23 | access to parameter i | 3 |
| NullCoalescing.cs:3:9:3:10 | exit M1 (normal) | NullCoalescing.cs:3:9:3:10 | exit M1 | 2 |
| NullCoalescing.cs:3:9:3:10 | enter M1 | NullCoalescing.cs:3:23:3:23 | access to parameter i | 2 |
| NullCoalescing.cs:3:23:3:28 | ... ?? ... | NullCoalescing.cs:3:9:3:10 | exit M1 | 3 |
| NullCoalescing.cs:3:28:3:28 | 0 | NullCoalescing.cs:3:28:3:28 | 0 | 1 |
| NullCoalescing.cs:5:9:5:10 | enter M2 | NullCoalescing.cs:5:25:5:25 | access to parameter b | 4 |
| NullCoalescing.cs:5:9:5:10 | exit M2 (normal) | NullCoalescing.cs:5:9:5:10 | exit M2 | 2 |
| NullCoalescing.cs:5:9:5:10 | enter M2 | NullCoalescing.cs:5:25:5:25 | access to parameter b | 2 |
| NullCoalescing.cs:5:24:5:43 | ... ? ... : ... | NullCoalescing.cs:5:9:5:10 | exit M2 | 3 |
| NullCoalescing.cs:5:25:5:34 | [false] ... ?? ... | NullCoalescing.cs:5:43:5:43 | 1 | 2 |
| NullCoalescing.cs:5:25:5:34 | [true] ... ?? ... | NullCoalescing.cs:5:39:5:39 | 0 | 2 |
| NullCoalescing.cs:5:30:5:34 | false | NullCoalescing.cs:5:30:5:34 | false | 1 |
| NullCoalescing.cs:5:39:5:39 | 0 | NullCoalescing.cs:5:39:5:39 | 0 | 1 |
| NullCoalescing.cs:5:43:5:43 | 1 | NullCoalescing.cs:5:43:5:43 | 1 | 1 |
| NullCoalescing.cs:7:12:7:13 | enter M3 | NullCoalescing.cs:7:40:7:41 | access to parameter s1 | 3 |
| NullCoalescing.cs:7:12:7:13 | exit M3 (normal) | NullCoalescing.cs:7:12:7:13 | exit M3 | 2 |
| NullCoalescing.cs:7:46:7:53 | ... ?? ... | NullCoalescing.cs:7:46:7:47 | access to parameter s2 | 2 |
| NullCoalescing.cs:7:12:7:13 | enter M3 | NullCoalescing.cs:7:40:7:41 | access to parameter s1 | 2 |
| NullCoalescing.cs:7:40:7:53 | ... ?? ... | NullCoalescing.cs:7:12:7:13 | exit M3 | 3 |
| NullCoalescing.cs:7:46:7:47 | access to parameter s2 | NullCoalescing.cs:7:46:7:47 | access to parameter s2 | 1 |
| NullCoalescing.cs:7:46:7:53 | ... ?? ... | NullCoalescing.cs:7:46:7:53 | ... ?? ... | 1 |
| NullCoalescing.cs:7:52:7:53 | "" | NullCoalescing.cs:7:52:7:53 | "" | 1 |
| NullCoalescing.cs:9:12:9:13 | enter M4 | NullCoalescing.cs:9:37:9:37 | access to parameter b | 4 |
| NullCoalescing.cs:9:12:9:13 | exit M4 (normal) | NullCoalescing.cs:9:12:9:13 | exit M4 | 2 |
| NullCoalescing.cs:9:12:9:13 | enter M4 | NullCoalescing.cs:9:37:9:37 | access to parameter b | 2 |
| NullCoalescing.cs:9:36:9:58 | ... ?? ... | NullCoalescing.cs:9:12:9:13 | exit M4 | 3 |
| NullCoalescing.cs:9:37:9:45 | [non-null] ... ? ... : ... | NullCoalescing.cs:9:37:9:45 | [non-null] ... ? ... : ... | 1 |
| NullCoalescing.cs:9:37:9:45 | [null] ... ? ... : ... | NullCoalescing.cs:9:51:9:58 | ... ?? ... | 3 |
| NullCoalescing.cs:9:41:9:41 | access to parameter s | NullCoalescing.cs:9:41:9:41 | access to parameter s | 1 |
| NullCoalescing.cs:9:45:9:45 | access to parameter s | NullCoalescing.cs:9:45:9:45 | access to parameter s | 1 |
| NullCoalescing.cs:9:51:9:58 | ... ?? ... | NullCoalescing.cs:9:51:9:52 | "" | 2 |
| NullCoalescing.cs:11:9:11:10 | enter M5 | NullCoalescing.cs:11:44:11:45 | access to parameter b1 | 4 |
| NullCoalescing.cs:11:9:11:10 | exit M5 (normal) | NullCoalescing.cs:11:9:11:10 | exit M5 | 2 |
| NullCoalescing.cs:11:51:11:58 | ... && ... | NullCoalescing.cs:11:51:11:52 | access to parameter b2 | 2 |
| NullCoalescing.cs:11:9:11:10 | enter M5 | NullCoalescing.cs:11:44:11:45 | access to parameter b1 | 2 |
| NullCoalescing.cs:11:43:11:68 | ... ? ... : ... | NullCoalescing.cs:11:9:11:10 | exit M5 | 3 |
| NullCoalescing.cs:11:44:11:59 | [false] ... ?? ... | NullCoalescing.cs:11:68:11:68 | 1 | 2 |
| NullCoalescing.cs:11:44:11:59 | [true] ... ?? ... | NullCoalescing.cs:11:64:11:64 | 0 | 2 |
| NullCoalescing.cs:11:51:11:52 | access to parameter b2 | NullCoalescing.cs:11:51:11:52 | access to parameter b2 | 1 |
| NullCoalescing.cs:11:51:11:58 | [false] ... && ... | NullCoalescing.cs:11:51:11:58 | [false] ... && ... | 1 |
| NullCoalescing.cs:11:51:11:58 | [true] ... && ... | NullCoalescing.cs:11:51:11:58 | [true] ... && ... | 1 |
| NullCoalescing.cs:11:57:11:58 | access to parameter b3 | NullCoalescing.cs:11:57:11:58 | access to parameter b3 | 1 |
| NullCoalescing.cs:11:64:11:64 | 0 | NullCoalescing.cs:11:64:11:64 | 0 | 1 |
| NullCoalescing.cs:11:68:11:68 | 1 | NullCoalescing.cs:11:68:11:68 | 1 | 1 |
| NullCoalescing.cs:13:10:13:11 | enter M6 | NullCoalescing.cs:13:10:13:11 | exit M6 | 19 |
| Patterns.cs:5:10:5:13 | enter Test | Patterns.cs:8:13:8:23 | ... is ... | 9 |
| Patterns.cs:9:9:11:9 | {...} | Patterns.cs:10:13:10:42 | call to method WriteLine | 6 |
@@ -835,9 +845,10 @@
| Switch.cs:22:21:22:27 | return ...; | Switch.cs:22:21:22:27 | return ...; | 1 |
| Switch.cs:23:27:23:27 | 0 | Switch.cs:23:17:23:28 | goto case ...; | 2 |
| Switch.cs:24:13:24:56 | case ...: | Switch.cs:24:18:24:25 | String s | 2 |
| Switch.cs:24:32:24:55 | ... && ... | Switch.cs:24:32:24:43 | ... > ... | 5 |
| Switch.cs:24:32:24:32 | access to local variable s | Switch.cs:24:32:24:43 | ... > ... | 4 |
| Switch.cs:24:32:24:55 | [false] ... && ... | Switch.cs:24:32:24:55 | [false] ... && ... | 1 |
| Switch.cs:24:32:24:55 | [true] ... && ... | Switch.cs:26:17:26:23 | return ...; | 5 |
| Switch.cs:24:48:24:48 | access to local variable s | Switch.cs:24:48:24:55 | ... != ... | 3 |
| Switch.cs:25:17:25:37 | ...; | Switch.cs:26:17:26:23 | return ...; | 4 |
| Switch.cs:27:13:27:39 | case ...: | Switch.cs:27:18:27:25 | Double d | 2 |
| Switch.cs:27:32:27:38 | call to method Throw | Switch.cs:27:32:27:38 | call to method Throw | 1 |
| Switch.cs:30:13:30:20 | default: | Switch.cs:29:17:29:23 | return ...; | 4 |
@@ -881,16 +892,20 @@
| Switch.cs:118:25:118:25 | access to parameter s | Switch.cs:118:25:118:33 | ... == ... | 3 |
| Switch.cs:118:43:118:43 | 2 | Switch.cs:118:36:118:44 | return ...; | 2 |
| Switch.cs:120:17:120:17 | 1 | Switch.cs:120:9:120:18 | return ...; | 3 |
| Switch.cs:123:10:123:12 | enter M11 | Switch.cs:125:24:125:29 | Boolean b | 7 |
| Switch.cs:123:10:123:12 | enter M11 | Switch.cs:125:24:125:29 | Boolean b | 5 |
| Switch.cs:123:10:123:12 | exit M11 (normal) | Switch.cs:123:10:123:12 | exit M11 | 2 |
| Switch.cs:125:13:125:48 | [false] ... switch { ... } | Switch.cs:125:13:125:48 | [false] ... switch { ... } | 1 |
| Switch.cs:125:24:125:34 | [false] ... => ... | Switch.cs:125:24:125:34 | [false] ... => ... | 1 |
| Switch.cs:125:24:125:34 | [true] ... => ... | Switch.cs:126:13:126:19 | return ...; | 3 |
| Switch.cs:125:34:125:34 | access to local variable b | Switch.cs:125:34:125:34 | access to local variable b | 1 |
| Switch.cs:125:37:125:46 | ... => ... | Switch.cs:125:42:125:46 | false | 3 |
| Switch.cs:126:13:126:19 | return ...; | Switch.cs:126:13:126:19 | return ...; | 1 |
| Switch.cs:129:12:129:14 | enter M12 | Switch.cs:131:28:131:35 | String s | 6 |
| Switch.cs:125:37:125:37 | _ | Switch.cs:125:37:125:46 | [false] ... => ... | 3 |
| Switch.cs:129:12:129:14 | enter M12 | Switch.cs:131:28:131:35 | String s | 4 |
| Switch.cs:131:9:131:67 | return ...; | Switch.cs:129:12:129:14 | exit M12 | 3 |
| Switch.cs:131:17:131:53 | [null] ... switch { ... } | Switch.cs:131:17:131:53 | [null] ... switch { ... } | 1 |
| Switch.cs:131:28:131:40 | [non-null] ... => ... | Switch.cs:131:56:131:66 | call to method ToString | 3 |
| Switch.cs:131:28:131:40 | [null] ... => ... | Switch.cs:131:28:131:40 | [null] ... => ... | 1 |
| Switch.cs:131:40:131:40 | access to local variable s | Switch.cs:131:40:131:40 | access to local variable s | 1 |
| Switch.cs:131:43:131:51 | ... => ... | Switch.cs:131:48:131:51 | null | 3 |
| Switch.cs:131:56:131:66 | call to method ToString | Switch.cs:131:56:131:66 | call to method ToString | 1 |
| Switch.cs:131:43:131:43 | _ | Switch.cs:131:43:131:51 | [null] ... => ... | 3 |
| Switch.cs:134:9:134:11 | enter M13 | Switch.cs:139:18:139:18 | 1 | 6 |
| Switch.cs:134:9:134:11 | exit M13 (normal) | Switch.cs:134:9:134:11 | exit M13 | 2 |
| Switch.cs:138:13:138:20 | default: | Switch.cs:138:22:138:31 | return ...; | 4 |
@@ -903,14 +918,14 @@
| Switch.cs:149:13:149:20 | default: | Switch.cs:149:22:149:31 | return ...; | 4 |
| Switch.cs:150:13:150:19 | case ...: | Switch.cs:150:18:150:18 | 2 | 2 |
| Switch.cs:150:28:150:28 | 2 | Switch.cs:150:21:150:29 | return ...; | 2 |
| Switch.cs:154:10:154:12 | enter M15 | Switch.cs:156:28:156:31 | true | 7 |
| Switch.cs:154:10:154:12 | enter M15 | Switch.cs:156:28:156:31 | true | 5 |
| Switch.cs:154:10:154:12 | exit M15 | Switch.cs:154:10:154:12 | exit M15 | 1 |
| Switch.cs:154:10:154:12 | exit M15 (abnormal) | Switch.cs:154:10:154:12 | exit M15 (abnormal) | 1 |
| Switch.cs:154:10:154:12 | exit M15 (normal) | Switch.cs:154:10:154:12 | exit M15 (normal) | 1 |
| Switch.cs:156:13:156:54 | String s = ... | Switch.cs:157:13:157:13 | access to parameter b | 3 |
| Switch.cs:156:36:156:38 | "a" | Switch.cs:156:36:156:38 | "a" | 1 |
| Switch.cs:156:41:156:52 | ... => ... | Switch.cs:156:41:156:45 | false | 2 |
| Switch.cs:156:50:156:52 | "b" | Switch.cs:156:50:156:52 | "b" | 1 |
| Switch.cs:156:17:156:54 | ... switch { ... } | Switch.cs:157:13:157:13 | access to parameter b | 4 |
| Switch.cs:156:36:156:38 | "a" | Switch.cs:156:28:156:38 | ... => ... | 2 |
| Switch.cs:156:41:156:45 | false | Switch.cs:156:41:156:45 | false | 1 |
| Switch.cs:156:50:156:52 | "b" | Switch.cs:156:41:156:52 | ... => ... | 2 |
| Switch.cs:158:13:158:49 | ...; | Switch.cs:158:13:158:48 | call to method WriteLine | 5 |
| Switch.cs:160:13:160:49 | ...; | Switch.cs:160:13:160:48 | call to method WriteLine | 5 |
| TypeAccesses.cs:3:10:3:10 | enter M | TypeAccesses.cs:7:13:7:22 | ... is ... | 14 |
@@ -918,8 +933,8 @@
| TypeAccesses.cs:8:9:8:28 | ... ...; | TypeAccesses.cs:3:10:3:10 | exit M | 5 |
| VarDecls.cs:5:18:5:19 | enter M1 | VarDecls.cs:5:18:5:19 | exit M1 | 19 |
| VarDecls.cs:13:12:13:13 | enter M2 | VarDecls.cs:13:12:13:13 | exit M2 | 13 |
| VarDecls.cs:19:7:19:8 | enter M3 | VarDecls.cs:25:20:25:20 | access to parameter b | 12 |
| VarDecls.cs:25:13:25:29 | return ...; | VarDecls.cs:19:7:19:8 | exit M3 | 3 |
| VarDecls.cs:19:7:19:8 | enter M3 | VarDecls.cs:25:20:25:20 | access to parameter b | 11 |
| VarDecls.cs:25:20:25:28 | ... ? ... : ... | VarDecls.cs:19:7:19:8 | exit M3 | 4 |
| VarDecls.cs:25:24:25:24 | access to local variable x | VarDecls.cs:25:24:25:24 | access to local variable x | 1 |
| VarDecls.cs:25:28:25:28 | access to local variable y | VarDecls.cs:25:28:25:28 | access to local variable y | 1 |
| VarDecls.cs:28:41:28:47 | enter Dispose | VarDecls.cs:28:41:28:47 | exit Dispose | 4 |
@@ -934,10 +949,10 @@
| cflow.cs:24:9:34:9 | for (...;...;...) ... | cflow.cs:24:18:24:22 | Int32 i = ... | 3 |
| cflow.cs:24:25:24:25 | access to local variable i | cflow.cs:24:25:24:31 | ... <= ... | 3 |
| cflow.cs:24:34:24:34 | access to local variable i | cflow.cs:24:34:24:36 | ...++ | 2 |
| cflow.cs:25:9:34:9 | {...} | cflow.cs:26:17:26:26 | ... == ... | 8 |
| cflow.cs:25:9:34:9 | {...} | cflow.cs:26:17:26:26 | ... == ... | 7 |
| cflow.cs:26:17:26:40 | [false] ... && ... | cflow.cs:28:22:28:31 | ... == ... | 7 |
| cflow.cs:26:17:26:40 | [true] ... && ... | cflow.cs:27:17:27:45 | call to method WriteLine | 4 |
| cflow.cs:26:31:26:31 | access to local variable i | cflow.cs:26:31:26:40 | ... == ... | 5 |
| cflow.cs:27:17:27:46 | ...; | cflow.cs:27:17:27:45 | call to method WriteLine | 3 |
| cflow.cs:28:18:33:37 | if (...) ... | cflow.cs:28:22:28:31 | ... == ... | 6 |
| cflow.cs:29:17:29:42 | ...; | cflow.cs:29:17:29:41 | call to method WriteLine | 3 |
| cflow.cs:30:18:33:37 | if (...) ... | cflow.cs:30:22:30:31 | ... == ... | 6 |
| cflow.cs:31:17:31:42 | ...; | cflow.cs:31:17:31:41 | call to method WriteLine | 3 |
@@ -954,9 +969,9 @@
| cflow.cs:54:17:54:48 | ...; | cflow.cs:55:17:55:22 | break; | 4 |
| cflow.cs:56:13:56:20 | default: | cflow.cs:58:17:58:22 | break; | 5 |
| cflow.cs:60:9:66:9 | switch (...) {...} | cflow.cs:62:18:62:18 | 0 | 6 |
| cflow.cs:63:17:64:55 | if (...) ... | cflow.cs:63:23:63:33 | ... == ... | 6 |
| cflow.cs:64:27:64:54 | object creation of type NullReferenceException | cflow.cs:37:17:37:22 | exit Switch (abnormal) | 3 |
| cflow.cs:65:17:65:22 | break; | cflow.cs:65:17:65:22 | break; | 1 |
| cflow.cs:63:17:64:55 | if (...) ... | cflow.cs:63:23:63:33 | ... == ... | 5 |
| cflow.cs:63:21:63:34 | [false] !... | cflow.cs:65:17:65:22 | break; | 2 |
| cflow.cs:63:21:63:34 | [true] !... | cflow.cs:37:17:37:22 | exit Switch (abnormal) | 4 |
| cflow.cs:67:16:67:16 | access to parameter a | cflow.cs:37:17:37:22 | exit Switch (normal) | 3 |
| cflow.cs:70:18:70:18 | enter M | cflow.cs:72:13:72:21 | ... == ... | 6 |
| cflow.cs:70:18:70:18 | exit M (normal) | cflow.cs:70:18:70:18 | exit M | 2 |
@@ -964,10 +979,11 @@
| cflow.cs:74:9:81:9 | if (...) ... | cflow.cs:74:13:74:24 | ... > ... | 5 |
| cflow.cs:75:9:77:9 | {...} | cflow.cs:76:13:76:32 | call to method WriteLine | 4 |
| cflow.cs:79:9:81:9 | {...} | cflow.cs:80:13:80:47 | call to method WriteLine | 4 |
| cflow.cs:84:18:84:19 | enter M2 | cflow.cs:86:13:86:21 | ... != ... | 7 |
| cflow.cs:84:18:84:19 | enter M2 | cflow.cs:86:13:86:21 | ... != ... | 6 |
| cflow.cs:84:18:84:19 | exit M2 (normal) | cflow.cs:84:18:84:19 | exit M2 | 2 |
| cflow.cs:86:13:86:37 | [false] ... && ... | cflow.cs:86:13:86:37 | [false] ... && ... | 1 |
| cflow.cs:86:13:86:37 | [true] ... && ... | cflow.cs:87:13:87:32 | call to method WriteLine | 4 |
| cflow.cs:86:26:86:26 | access to parameter s | cflow.cs:86:26:86:37 | ... > ... | 4 |
| cflow.cs:87:13:87:33 | ...; | cflow.cs:87:13:87:32 | call to method WriteLine | 3 |
| cflow.cs:90:18:90:19 | enter M3 | cflow.cs:92:13:92:27 | call to method Equals | 6 |
| cflow.cs:90:18:90:19 | exit M3 | cflow.cs:90:18:90:19 | exit M3 | 1 |
| cflow.cs:90:18:90:19 | exit M3 (normal) | cflow.cs:90:18:90:19 | exit M3 (normal) | 1 |
@@ -983,8 +999,8 @@
| cflow.cs:110:20:110:23 | true | cflow.cs:112:17:112:36 | call to method WriteLine | 5 |
| cflow.cs:116:9:116:29 | ...; | cflow.cs:106:18:106:19 | exit M4 | 5 |
| cflow.cs:119:20:119:21 | enter M5 | cflow.cs:119:20:119:21 | exit M5 | 14 |
| cflow.cs:127:19:127:21 | enter get_Prop | cflow.cs:127:32:127:44 | ... == ... | 7 |
| cflow.cs:127:25:127:58 | return ...; | cflow.cs:127:19:127:21 | exit get_Prop | 3 |
| cflow.cs:127:19:127:21 | enter get_Prop | cflow.cs:127:32:127:44 | ... == ... | 6 |
| cflow.cs:127:32:127:57 | ... ? ... : ... | cflow.cs:127:19:127:21 | exit get_Prop | 4 |
| cflow.cs:127:48:127:49 | "" | cflow.cs:127:48:127:49 | "" | 1 |
| cflow.cs:127:53:127:57 | this access | cflow.cs:127:53:127:57 | access to field Field | 2 |
| cflow.cs:127:62:127:64 | enter set_Prop | cflow.cs:127:62:127:64 | exit set_Prop | 8 |
@@ -1013,20 +1029,22 @@
| cflow.cs:181:28:181:37 | enter (...) => ... | cflow.cs:181:28:181:37 | exit (...) => ... | 6 |
| cflow.cs:182:28:182:61 | enter delegate(...) { ... } | cflow.cs:182:28:182:61 | exit delegate(...) { ... } | 8 |
| cflow.cs:185:10:185:18 | enter LogicalOr | cflow.cs:185:10:185:18 | exit LogicalOr | 20 |
| cflow.cs:193:10:193:17 | enter Booleans | cflow.cs:195:17:195:32 | ... > ... | 9 |
| cflow.cs:193:10:193:17 | enter Booleans | cflow.cs:195:17:195:32 | ... > ... | 8 |
| cflow.cs:193:10:193:17 | exit Booleans | cflow.cs:193:10:193:17 | exit Booleans | 1 |
| cflow.cs:193:10:193:17 | exit Booleans (normal) | cflow.cs:193:10:193:17 | exit Booleans (normal) | 1 |
| cflow.cs:195:13:195:56 | Boolean b = ... | cflow.cs:197:15:197:31 | ... == ... | 9 |
| cflow.cs:195:37:195:56 | !... | cflow.cs:195:39:195:55 | ... == ... | 6 |
| cflow.cs:197:35:197:39 | false | cflow.cs:198:17:198:33 | ... == ... | 8 |
| cflow.cs:197:43:197:46 | true | cflow.cs:197:43:197:46 | true | 1 |
| cflow.cs:198:13:198:48 | ... = ... | cflow.cs:198:13:198:48 | ... = ... | 1 |
| cflow.cs:195:17:195:56 | ... && ... | cflow.cs:197:15:197:31 | ... == ... | 8 |
| cflow.cs:195:39:195:43 | this access | cflow.cs:195:37:195:56 | !... | 6 |
| cflow.cs:197:35:197:39 | false | cflow.cs:198:17:198:33 | ... == ... | 9 |
| cflow.cs:197:43:197:46 | true | cflow.cs:197:13:197:47 | [false] !... | 3 |
| cflow.cs:198:17:198:48 | ... ? ... : ... | cflow.cs:198:13:198:48 | ... = ... | 2 |
| cflow.cs:198:37:198:41 | false | cflow.cs:198:37:198:41 | false | 1 |
| cflow.cs:198:45:198:48 | true | cflow.cs:198:45:198:48 | true | 1 |
| cflow.cs:200:9:205:9 | if (...) ... | cflow.cs:200:15:200:31 | ... == ... | 8 |
| cflow.cs:200:37:200:62 | !... | cflow.cs:200:40:200:56 | ... == ... | 8 |
| cflow.cs:200:9:205:9 | if (...) ... | cflow.cs:200:15:200:31 | ... == ... | 6 |
| cflow.cs:200:13:200:32 | [false] !... | cflow.cs:200:40:200:56 | ... == ... | 6 |
| cflow.cs:200:13:200:32 | [true] !... | cflow.cs:200:13:200:32 | [true] !... | 1 |
| cflow.cs:200:13:200:62 | [true] ... \|\| ... | cflow.cs:193:10:193:17 | exit Booleans (abnormal) | 6 |
| cflow.cs:200:40:200:61 | [false] ... && ... | cflow.cs:193:10:193:17 | exit Booleans (normal) | 5 |
| cflow.cs:200:40:200:61 | [true] ... && ... | cflow.cs:200:37:200:62 | [true] !... | 3 |
| cflow.cs:200:61:200:61 | access to local variable b | cflow.cs:200:61:200:61 | access to local variable b | 1 |
| cflow.cs:201:9:205:9 | {...} | cflow.cs:193:10:193:17 | exit Booleans (abnormal) | 5 |
| cflow.cs:208:10:208:11 | enter Do | cflow.cs:210:9:221:36 | do ... while (...); | 3 |
| cflow.cs:208:10:208:11 | exit Do (normal) | cflow.cs:208:10:208:11 | exit Do | 2 |
| cflow.cs:211:9:221:9 | {...} | cflow.cs:213:17:213:32 | ... > ... | 14 |
@@ -1043,8 +1061,9 @@
| cflow.cs:234:13:236:13 | {...} | cflow.cs:235:17:235:22 | break; | 2 |
| cflow.cs:240:10:240:13 | enter Goto | cflow.cs:241:5:259:5 | {...} | 2 |
| cflow.cs:240:10:240:13 | exit Goto (normal) | cflow.cs:240:10:240:13 | exit Goto | 2 |
| cflow.cs:242:9:242:13 | Label: | cflow.cs:242:23:242:39 | ... == ... | 9 |
| cflow.cs:242:43:242:45 | {...} | cflow.cs:242:43:242:45 | {...} | 1 |
| cflow.cs:242:9:242:13 | Label: | cflow.cs:242:23:242:39 | ... == ... | 7 |
| cflow.cs:242:21:242:40 | [false] !... | cflow.cs:242:43:242:45 | {...} | 3 |
| cflow.cs:242:21:242:40 | [true] !... | cflow.cs:242:20:242:40 | [false] !... | 2 |
| cflow.cs:244:9:244:41 | if (...) ... | cflow.cs:244:13:244:28 | ... > ... | 6 |
| cflow.cs:244:31:244:41 | goto ...; | cflow.cs:244:31:244:41 | goto ...; | 1 |
| cflow.cs:246:9:258:9 | switch (...) {...} | cflow.cs:248:18:248:18 | 0 | 8 |
@@ -1063,6 +1082,7 @@
| cflow.cs:286:5:286:18 | enter ControlFlowSub | cflow.cs:286:5:286:18 | exit ControlFlowSub | 7 |
| cflow.cs:291:12:291:12 | enter M | cflow.cs:291:12:291:12 | exit M | 6 |
| cflow.cs:296:5:296:25 | enter NegationInConstructor | cflow.cs:296:5:296:25 | exit NegationInConstructor | 4 |
| cflow.cs:298:10:298:10 | enter M | cflow.cs:300:46:300:50 | ... > ... | 9 |
| cflow.cs:300:56:300:56 | access to parameter s | cflow.cs:300:56:300:64 | ... != ... | 3 |
| cflow.cs:300:70:300:71 | "" | cflow.cs:298:10:298:10 | exit M | 4 |
| cflow.cs:298:10:298:10 | enter M | cflow.cs:300:46:300:50 | ... > ... | 7 |
| cflow.cs:300:44:300:51 | [false] !... | cflow.cs:300:44:300:51 | [false] !... | 1 |
| cflow.cs:300:44:300:51 | [true] !... | cflow.cs:300:56:300:64 | ... != ... | 4 |
| cflow.cs:300:44:300:64 | ... && ... | cflow.cs:298:10:298:10 | exit M | 5 |

View File

@@ -3,81 +3,25 @@ nonUniqueSetRepresentation
breakInvariant2
breakInvariant3
breakInvariant4
| Assert.cs:140:29:140:30 | access to parameter b2 | assertion failure | Assert.cs:140:33:140:34 | access to parameter b3 | assertion failure | assertion failure | true |
| Assert.cs:140:29:140:30 | access to parameter b2 | assertion failure | Assert.cs:140:33:140:34 | access to parameter b3 | assertion failure | assertion success | false |
breakInvariant5
multipleSuccessors
| ConditionalAccess.cs:30:28:30:32 | ... = ... | successor | ConditionalAccess.cs:1:7:1:23 | exit ConditionalAccess (normal) |
| ConditionalAccess.cs:30:28:30:32 | ... = ... | successor | ConditionalAccess.cs:30:10:30:12 | exit Out (normal) |
| MultiImplementationA.cs:6:22:6:31 | enter get_P1 | successor | MultiImplementationA.cs:6:28:6:31 | null |
| MultiImplementationA.cs:6:22:6:31 | enter get_P1 | successor | MultiImplementationB.cs:3:22:3:22 | 0 |
| MultiImplementationA.cs:7:21:7:23 | enter get_P2 | successor | MultiImplementationA.cs:7:25:7:39 | {...} |
| MultiImplementationA.cs:7:21:7:23 | enter get_P2 | successor | MultiImplementationB.cs:4:25:4:37 | {...} |
| MultiImplementationA.cs:7:41:7:43 | enter set_P2 | successor | MultiImplementationA.cs:7:45:7:59 | {...} |
| MultiImplementationA.cs:7:41:7:43 | enter set_P2 | successor | MultiImplementationB.cs:4:43:4:45 | {...} |
| MultiImplementationA.cs:8:16:8:16 | enter M | successor | MultiImplementationA.cs:8:29:8:32 | null |
| MultiImplementationA.cs:8:16:8:16 | enter M | successor | MultiImplementationB.cs:5:23:5:23 | 2 |
| MultiImplementationA.cs:13:16:13:20 | ... = ... | successor | MultiImplementationA.cs:13:16:13:16 | this access |
| MultiImplementationA.cs:13:16:13:20 | ... = ... | successor | MultiImplementationA.cs:24:16:24:16 | this access |
| MultiImplementationA.cs:13:16:13:20 | ... = ... | successor | MultiImplementationB.cs:11:16:11:16 | this access |
| MultiImplementationA.cs:13:16:13:20 | ... = ... | successor | MultiImplementationB.cs:22:16:22:16 | this access |
| MultiImplementationA.cs:14:31:14:31 | enter get_Item | successor | MultiImplementationA.cs:14:31:14:31 | access to parameter i |
| MultiImplementationA.cs:14:31:14:31 | enter get_Item | successor | MultiImplementationB.cs:12:37:12:40 | null |
| MultiImplementationA.cs:15:36:15:38 | enter get_Item | successor | MultiImplementationA.cs:15:40:15:52 | {...} |
| MultiImplementationA.cs:15:36:15:38 | enter get_Item | successor | MultiImplementationB.cs:13:40:13:54 | {...} |
| MultiImplementationA.cs:15:54:15:56 | enter set_Item | successor | MultiImplementationA.cs:15:58:15:60 | {...} |
| MultiImplementationA.cs:15:54:15:56 | enter set_Item | successor | MultiImplementationB.cs:13:60:13:62 | {...} |
| MultiImplementationA.cs:16:17:16:18 | enter M1 | successor | MultiImplementationA.cs:17:5:19:5 | {...} |
| MultiImplementationA.cs:16:17:16:18 | enter M1 | successor | MultiImplementationB.cs:15:5:17:5 | {...} |
| MultiImplementationA.cs:20:12:20:13 | enter C2 | successor | MultiImplementationA.cs:13:16:13:16 | this access |
| MultiImplementationA.cs:20:12:20:13 | enter C2 | successor | MultiImplementationB.cs:11:16:11:16 | this access |
| MultiImplementationA.cs:21:12:21:13 | enter C2 | successor | MultiImplementationA.cs:21:24:21:24 | 0 |
| MultiImplementationA.cs:21:12:21:13 | enter C2 | successor | MultiImplementationB.cs:19:24:19:24 | 1 |
| MultiImplementationA.cs:21:19:21:22 | call to constructor C2 | successor | MultiImplementationA.cs:21:27:21:29 | {...} |
| MultiImplementationA.cs:21:19:21:22 | call to constructor C2 | successor | MultiImplementationB.cs:19:27:19:29 | {...} |
| MultiImplementationA.cs:22:6:22:7 | enter ~C2 | successor | MultiImplementationA.cs:22:11:22:13 | {...} |
| MultiImplementationA.cs:22:6:22:7 | enter ~C2 | successor | MultiImplementationB.cs:20:11:20:25 | {...} |
| MultiImplementationA.cs:23:28:23:35 | enter implicit conversion | successor | MultiImplementationA.cs:23:50:23:53 | null |
| MultiImplementationA.cs:23:28:23:35 | enter implicit conversion | successor | MultiImplementationB.cs:21:56:21:59 | null |
| MultiImplementationA.cs:24:32:24:34 | ... = ... | successor | MultiImplementationA.cs:20:22:20:31 | {...} |
| MultiImplementationA.cs:24:32:24:34 | ... = ... | successor | MultiImplementationA.cs:24:16:24:16 | this access |
| MultiImplementationA.cs:24:32:24:34 | ... = ... | successor | MultiImplementationB.cs:18:22:18:36 | {...} |
| MultiImplementationA.cs:24:32:24:34 | ... = ... | successor | MultiImplementationB.cs:22:16:22:16 | this access |
| MultiImplementationA.cs:36:9:36:10 | enter M1 | successor | MultiImplementationA.cs:36:14:36:28 | {...} |
| MultiImplementationA.cs:36:9:36:10 | enter M1 | successor | MultiImplementationB.cs:32:17:32:17 | 0 |
| MultiImplementationB.cs:3:22:3:22 | enter get_P1 | successor | MultiImplementationA.cs:6:28:6:31 | null |
| MultiImplementationB.cs:3:22:3:22 | enter get_P1 | successor | MultiImplementationB.cs:3:22:3:22 | 0 |
| MultiImplementationB.cs:4:21:4:23 | enter get_P2 | successor | MultiImplementationA.cs:7:25:7:39 | {...} |
| MultiImplementationB.cs:4:21:4:23 | enter get_P2 | successor | MultiImplementationB.cs:4:25:4:37 | {...} |
| MultiImplementationB.cs:4:39:4:41 | enter set_P2 | successor | MultiImplementationA.cs:7:45:7:59 | {...} |
| MultiImplementationB.cs:4:39:4:41 | enter set_P2 | successor | MultiImplementationB.cs:4:43:4:45 | {...} |
| MultiImplementationB.cs:5:16:5:16 | enter M | successor | MultiImplementationA.cs:8:29:8:32 | null |
| MultiImplementationB.cs:5:16:5:16 | enter M | successor | MultiImplementationB.cs:5:23:5:23 | 2 |
| MultiImplementationB.cs:11:16:11:20 | ... = ... | successor | MultiImplementationA.cs:13:16:13:16 | this access |
| MultiImplementationB.cs:11:16:11:20 | ... = ... | successor | MultiImplementationA.cs:24:16:24:16 | this access |
| MultiImplementationB.cs:11:16:11:20 | ... = ... | successor | MultiImplementationB.cs:11:16:11:16 | this access |
| MultiImplementationB.cs:11:16:11:20 | ... = ... | successor | MultiImplementationB.cs:22:16:22:16 | this access |
| MultiImplementationB.cs:12:31:12:40 | enter get_Item | successor | MultiImplementationA.cs:14:31:14:31 | access to parameter i |
| MultiImplementationB.cs:12:31:12:40 | enter get_Item | successor | MultiImplementationB.cs:12:37:12:40 | null |
| MultiImplementationB.cs:13:36:13:38 | enter get_Item | successor | MultiImplementationA.cs:15:40:15:52 | {...} |
| MultiImplementationB.cs:13:36:13:38 | enter get_Item | successor | MultiImplementationB.cs:13:40:13:54 | {...} |
| MultiImplementationB.cs:13:56:13:58 | enter set_Item | successor | MultiImplementationA.cs:15:58:15:60 | {...} |
| MultiImplementationB.cs:13:56:13:58 | enter set_Item | successor | MultiImplementationB.cs:13:60:13:62 | {...} |
| MultiImplementationB.cs:14:17:14:18 | enter M1 | successor | MultiImplementationA.cs:17:5:19:5 | {...} |
| MultiImplementationB.cs:14:17:14:18 | enter M1 | successor | MultiImplementationB.cs:15:5:17:5 | {...} |
| MultiImplementationB.cs:18:12:18:13 | enter C2 | successor | MultiImplementationA.cs:13:16:13:16 | this access |
| MultiImplementationB.cs:18:12:18:13 | enter C2 | successor | MultiImplementationB.cs:11:16:11:16 | this access |
| MultiImplementationB.cs:19:12:19:13 | enter C2 | successor | MultiImplementationA.cs:21:24:21:24 | 0 |
| MultiImplementationB.cs:19:12:19:13 | enter C2 | successor | MultiImplementationB.cs:19:24:19:24 | 1 |
| MultiImplementationB.cs:19:19:19:22 | call to constructor C2 | successor | MultiImplementationA.cs:21:27:21:29 | {...} |
| MultiImplementationB.cs:19:19:19:22 | call to constructor C2 | successor | MultiImplementationB.cs:19:27:19:29 | {...} |
| MultiImplementationB.cs:20:6:20:7 | enter ~C2 | successor | MultiImplementationA.cs:22:11:22:13 | {...} |
| MultiImplementationB.cs:20:6:20:7 | enter ~C2 | successor | MultiImplementationB.cs:20:11:20:25 | {...} |
| MultiImplementationB.cs:21:28:21:35 | enter implicit conversion | successor | MultiImplementationA.cs:23:50:23:53 | null |
| MultiImplementationB.cs:21:28:21:35 | enter implicit conversion | successor | MultiImplementationB.cs:21:56:21:59 | null |
| MultiImplementationB.cs:22:32:22:34 | ... = ... | successor | MultiImplementationA.cs:20:22:20:31 | {...} |
| MultiImplementationB.cs:22:32:22:34 | ... = ... | successor | MultiImplementationA.cs:24:16:24:16 | this access |
| MultiImplementationB.cs:22:32:22:34 | ... = ... | successor | MultiImplementationB.cs:18:22:18:36 | {...} |
| MultiImplementationB.cs:22:32:22:34 | ... = ... | successor | MultiImplementationB.cs:22:16:22:16 | this access |
| MultiImplementationB.cs:32:9:32:10 | enter M1 | successor | MultiImplementationA.cs:36:14:36:28 | {...} |
| MultiImplementationB.cs:32:9:32:10 | enter M1 | successor | MultiImplementationB.cs:32:17:32:17 | 0 |

View File

@@ -72,6 +72,7 @@ query predicate breakInvariant3(
succSplits(pred, predSplits, succ, succSplits, c) and
split = predSplits.getASplit() and
split.hasExit(pred, succ, c) and
not split.hasEntry(pred, succ, c) and
split = succSplits.getASplit()
}
@@ -81,7 +82,7 @@ query predicate breakInvariant4(
) {
succSplits(pred, predSplits, succ, succSplits, c) and
split.hasEntry(pred, succ, c) and
not split = predSplits.getASplit() and
not split.getKind() = predSplits.getASplit().getKind() and
not split = succSplits.getASplit()
}
@@ -92,12 +93,13 @@ query predicate breakInvariant5(
succSplits(pred, predSplits, succ, succSplits, c) and
split = succSplits.getASplit() and
not (split.hasSuccessor(pred, succ, c) and split = predSplits.getASplit()) and
not (split.hasEntry(pred, succ, c) and not split = predSplits.getASplit())
not split.hasEntry(pred, succ, c)
}
query predicate multipleSuccessors(
ControlFlow::Node node, SuccessorType t, ControlFlow::Node successor
) {
not node instanceof ControlFlow::Nodes::EntryNode and
strictcount(node.getASuccessorByType(t)) > 1 and
successor = node.getASuccessorByType(t)
}

View File

@@ -497,7 +497,8 @@ nodeEnclosing
| Assert.cs:58:16:58:32 | [b (line 56): false] String s = ... | Assert.cs:56:10:56:11 | M8 |
| Assert.cs:58:16:58:32 | [b (line 56): true] String s = ... | Assert.cs:56:10:56:11 | M8 |
| Assert.cs:58:20:58:20 | access to parameter b | Assert.cs:56:10:56:11 | M8 |
| Assert.cs:58:20:58:32 | ... ? ... : ... | Assert.cs:56:10:56:11 | M8 |
| Assert.cs:58:20:58:32 | [b (line 56): false] ... ? ... : ... | Assert.cs:56:10:56:11 | M8 |
| Assert.cs:58:20:58:32 | [b (line 56): true] ... ? ... : ... | Assert.cs:56:10:56:11 | M8 |
| Assert.cs:58:24:58:27 | [b (line 56): true] null | Assert.cs:56:10:56:11 | M8 |
| Assert.cs:58:31:58:32 | [b (line 56): false] "" | Assert.cs:56:10:56:11 | M8 |
| Assert.cs:59:9:59:37 | [assertion failure] call to method IsTrue | Assert.cs:56:10:56:11 | M8 |
@@ -508,8 +509,8 @@ nodeEnclosing
| Assert.cs:59:23:59:23 | [b (line 56): true] access to local variable s | Assert.cs:56:10:56:11 | M8 |
| Assert.cs:59:23:59:31 | [b (line 56): false] ... != ... | Assert.cs:56:10:56:11 | M8 |
| Assert.cs:59:23:59:31 | [b (line 56): true] ... != ... | Assert.cs:56:10:56:11 | M8 |
| Assert.cs:59:23:59:36 | [b (line 56): false] ... && ... | Assert.cs:56:10:56:11 | M8 |
| Assert.cs:59:23:59:36 | [b (line 56): true] ... && ... | Assert.cs:56:10:56:11 | M8 |
| Assert.cs:59:23:59:36 | [false] ... && ... | Assert.cs:56:10:56:11 | M8 |
| Assert.cs:59:23:59:36 | [true] ... && ... | Assert.cs:56:10:56:11 | M8 |
| Assert.cs:59:28:59:31 | [b (line 56): false] null | Assert.cs:56:10:56:11 | M8 |
| Assert.cs:59:28:59:31 | [b (line 56): true] null | Assert.cs:56:10:56:11 | M8 |
| Assert.cs:59:36:59:36 | [b (line 56): false] access to parameter b | Assert.cs:56:10:56:11 | M8 |
@@ -527,7 +528,8 @@ nodeEnclosing
| Assert.cs:65:16:65:32 | [b (line 63): false] String s = ... | Assert.cs:63:10:63:11 | M9 |
| Assert.cs:65:16:65:32 | [b (line 63): true] String s = ... | Assert.cs:63:10:63:11 | M9 |
| Assert.cs:65:20:65:20 | access to parameter b | Assert.cs:63:10:63:11 | M9 |
| Assert.cs:65:20:65:32 | ... ? ... : ... | Assert.cs:63:10:63:11 | M9 |
| Assert.cs:65:20:65:32 | [b (line 63): false] ... ? ... : ... | Assert.cs:63:10:63:11 | M9 |
| Assert.cs:65:20:65:32 | [b (line 63): true] ... ? ... : ... | Assert.cs:63:10:63:11 | M9 |
| Assert.cs:65:24:65:27 | [b (line 63): true] null | Assert.cs:63:10:63:11 | M9 |
| Assert.cs:65:31:65:32 | [b (line 63): false] "" | Assert.cs:63:10:63:11 | M9 |
| Assert.cs:66:9:66:38 | [assertion failure] call to method IsFalse | Assert.cs:63:10:63:11 | M9 |
@@ -538,8 +540,8 @@ nodeEnclosing
| Assert.cs:66:24:66:24 | [b (line 63): true] access to local variable s | Assert.cs:63:10:63:11 | M9 |
| Assert.cs:66:24:66:32 | [b (line 63): false] ... == ... | Assert.cs:63:10:63:11 | M9 |
| Assert.cs:66:24:66:32 | [b (line 63): true] ... == ... | Assert.cs:63:10:63:11 | M9 |
| Assert.cs:66:24:66:37 | [b (line 63): false] ... \|\| ... | Assert.cs:63:10:63:11 | M9 |
| Assert.cs:66:24:66:37 | [b (line 63): true] ... \|\| ... | Assert.cs:63:10:63:11 | M9 |
| Assert.cs:66:24:66:37 | [false] ... \|\| ... | Assert.cs:63:10:63:11 | M9 |
| Assert.cs:66:24:66:37 | [true] ... \|\| ... | Assert.cs:63:10:63:11 | M9 |
| Assert.cs:66:29:66:32 | [b (line 63): false] null | Assert.cs:63:10:63:11 | M9 |
| Assert.cs:66:29:66:32 | [b (line 63): true] null | Assert.cs:63:10:63:11 | M9 |
| Assert.cs:66:37:66:37 | [b (line 63): false] access to parameter b | Assert.cs:63:10:63:11 | M9 |
@@ -557,7 +559,8 @@ nodeEnclosing
| Assert.cs:72:16:72:32 | [b (line 70): false] String s = ... | Assert.cs:70:10:70:12 | M10 |
| Assert.cs:72:16:72:32 | [b (line 70): true] String s = ... | Assert.cs:70:10:70:12 | M10 |
| Assert.cs:72:20:72:20 | access to parameter b | Assert.cs:70:10:70:12 | M10 |
| Assert.cs:72:20:72:32 | ... ? ... : ... | Assert.cs:70:10:70:12 | M10 |
| Assert.cs:72:20:72:32 | [b (line 70): false] ... ? ... : ... | Assert.cs:70:10:70:12 | M10 |
| Assert.cs:72:20:72:32 | [b (line 70): true] ... ? ... : ... | Assert.cs:70:10:70:12 | M10 |
| Assert.cs:72:24:72:27 | [b (line 70): true] null | Assert.cs:70:10:70:12 | M10 |
| Assert.cs:72:31:72:32 | [b (line 70): false] "" | Assert.cs:70:10:70:12 | M10 |
| Assert.cs:73:9:73:37 | [assertion failure] call to method IsTrue | Assert.cs:70:10:70:12 | M10 |
@@ -568,8 +571,8 @@ nodeEnclosing
| Assert.cs:73:23:73:23 | [b (line 70): true] access to local variable s | Assert.cs:70:10:70:12 | M10 |
| Assert.cs:73:23:73:31 | [b (line 70): false] ... == ... | Assert.cs:70:10:70:12 | M10 |
| Assert.cs:73:23:73:31 | [b (line 70): true] ... == ... | Assert.cs:70:10:70:12 | M10 |
| Assert.cs:73:23:73:36 | [b (line 70): false] ... && ... | Assert.cs:70:10:70:12 | M10 |
| Assert.cs:73:23:73:36 | [b (line 70): true] ... && ... | Assert.cs:70:10:70:12 | M10 |
| Assert.cs:73:23:73:36 | [false] ... && ... | Assert.cs:70:10:70:12 | M10 |
| Assert.cs:73:23:73:36 | [true] ... && ... | Assert.cs:70:10:70:12 | M10 |
| Assert.cs:73:28:73:31 | [b (line 70): false] null | Assert.cs:70:10:70:12 | M10 |
| Assert.cs:73:28:73:31 | [b (line 70): true] null | Assert.cs:70:10:70:12 | M10 |
| Assert.cs:73:36:73:36 | [b (line 70): false] access to parameter b | Assert.cs:70:10:70:12 | M10 |
@@ -587,7 +590,8 @@ nodeEnclosing
| Assert.cs:79:16:79:32 | [b (line 77): false] String s = ... | Assert.cs:77:10:77:12 | M11 |
| Assert.cs:79:16:79:32 | [b (line 77): true] String s = ... | Assert.cs:77:10:77:12 | M11 |
| Assert.cs:79:20:79:20 | access to parameter b | Assert.cs:77:10:77:12 | M11 |
| Assert.cs:79:20:79:32 | ... ? ... : ... | Assert.cs:77:10:77:12 | M11 |
| Assert.cs:79:20:79:32 | [b (line 77): false] ... ? ... : ... | Assert.cs:77:10:77:12 | M11 |
| Assert.cs:79:20:79:32 | [b (line 77): true] ... ? ... : ... | Assert.cs:77:10:77:12 | M11 |
| Assert.cs:79:24:79:27 | [b (line 77): true] null | Assert.cs:77:10:77:12 | M11 |
| Assert.cs:79:31:79:32 | [b (line 77): false] "" | Assert.cs:77:10:77:12 | M11 |
| Assert.cs:80:9:80:38 | [assertion failure] call to method IsFalse | Assert.cs:77:10:77:12 | M11 |
@@ -598,8 +602,8 @@ nodeEnclosing
| Assert.cs:80:24:80:24 | [b (line 77): true] access to local variable s | Assert.cs:77:10:77:12 | M11 |
| Assert.cs:80:24:80:32 | [b (line 77): false] ... != ... | Assert.cs:77:10:77:12 | M11 |
| Assert.cs:80:24:80:32 | [b (line 77): true] ... != ... | Assert.cs:77:10:77:12 | M11 |
| Assert.cs:80:24:80:37 | [b (line 77): false] ... \|\| ... | Assert.cs:77:10:77:12 | M11 |
| Assert.cs:80:24:80:37 | [b (line 77): true] ... \|\| ... | Assert.cs:77:10:77:12 | M11 |
| Assert.cs:80:24:80:37 | [false] ... \|\| ... | Assert.cs:77:10:77:12 | M11 |
| Assert.cs:80:24:80:37 | [true] ... \|\| ... | Assert.cs:77:10:77:12 | M11 |
| Assert.cs:80:29:80:32 | [b (line 77): false] null | Assert.cs:77:10:77:12 | M11 |
| Assert.cs:80:29:80:32 | [b (line 77): true] null | Assert.cs:77:10:77:12 | M11 |
| Assert.cs:80:37:80:37 | [b (line 77): false] access to parameter b | Assert.cs:77:10:77:12 | M11 |
@@ -617,7 +621,8 @@ nodeEnclosing
| Assert.cs:86:16:86:32 | [b (line 84): false] String s = ... | Assert.cs:84:10:84:12 | M12 |
| Assert.cs:86:16:86:32 | [b (line 84): true] String s = ... | Assert.cs:84:10:84:12 | M12 |
| Assert.cs:86:20:86:20 | access to parameter b | Assert.cs:84:10:84:12 | M12 |
| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:84:10:84:12 | M12 |
| Assert.cs:86:20:86:32 | [b (line 84): false] ... ? ... : ... | Assert.cs:84:10:84:12 | M12 |
| Assert.cs:86:20:86:32 | [b (line 84): true] ... ? ... : ... | Assert.cs:84:10:84:12 | M12 |
| Assert.cs:86:24:86:27 | [b (line 84): true] null | Assert.cs:84:10:84:12 | M12 |
| Assert.cs:86:31:86:32 | [b (line 84): false] "" | Assert.cs:84:10:84:12 | M12 |
| Assert.cs:87:9:87:31 | [assertion failure, b (line 84): false] call to method Assert | Assert.cs:84:10:84:12 | M12 |
@@ -831,8 +836,9 @@ nodeEnclosing
| Assert.cs:115:23:115:23 | [b (line 84): true] access to local variable s | Assert.cs:84:10:84:12 | M12 |
| Assert.cs:115:23:115:31 | [b (line 84): false] ... != ... | Assert.cs:84:10:84:12 | M12 |
| Assert.cs:115:23:115:31 | [b (line 84): true] ... != ... | Assert.cs:84:10:84:12 | M12 |
| Assert.cs:115:23:115:36 | [b (line 84): false] ... && ... | Assert.cs:84:10:84:12 | M12 |
| Assert.cs:115:23:115:36 | [b (line 84): true] ... && ... | Assert.cs:84:10:84:12 | M12 |
| Assert.cs:115:23:115:36 | [false, b (line 84): false] ... && ... | Assert.cs:84:10:84:12 | M12 |
| Assert.cs:115:23:115:36 | [false, b (line 84): true] ... && ... | Assert.cs:84:10:84:12 | M12 |
| Assert.cs:115:23:115:36 | [true, b (line 84): true] ... && ... | Assert.cs:84:10:84:12 | M12 |
| Assert.cs:115:28:115:31 | [b (line 84): false] null | Assert.cs:84:10:84:12 | M12 |
| Assert.cs:115:28:115:31 | [b (line 84): true] null | Assert.cs:84:10:84:12 | M12 |
| Assert.cs:115:36:115:36 | [b (line 84): false] access to parameter b | Assert.cs:84:10:84:12 | M12 |
@@ -851,9 +857,10 @@ nodeEnclosing
| Assert.cs:119:9:119:40 | [b (line 84): true] ...; | Assert.cs:84:10:84:12 | M12 |
| Assert.cs:119:24:119:24 | [b (line 84): true] access to local variable s | Assert.cs:84:10:84:12 | M12 |
| Assert.cs:119:24:119:32 | [b (line 84): true] ... == ... | Assert.cs:84:10:84:12 | M12 |
| Assert.cs:119:24:119:38 | [b (line 84): true] ... \|\| ... | Assert.cs:84:10:84:12 | M12 |
| Assert.cs:119:24:119:38 | [false, b (line 84): true] ... \|\| ... | Assert.cs:84:10:84:12 | M12 |
| Assert.cs:119:24:119:38 | [true, b (line 84): true] ... \|\| ... | Assert.cs:84:10:84:12 | M12 |
| Assert.cs:119:29:119:32 | [b (line 84): true] null | Assert.cs:84:10:84:12 | M12 |
| Assert.cs:119:37:119:38 | [b (line 84): true] !... | Assert.cs:84:10:84:12 | M12 |
| Assert.cs:119:37:119:38 | [false, b (line 84): true] !... | Assert.cs:84:10:84:12 | M12 |
| Assert.cs:119:38:119:38 | [b (line 84): true] access to parameter b | Assert.cs:84:10:84:12 | M12 |
| Assert.cs:120:9:120:35 | [b (line 84): true] call to method WriteLine | Assert.cs:84:10:84:12 | M12 |
| Assert.cs:120:9:120:36 | [b (line 84): true] ...; | Assert.cs:84:10:84:12 | M12 |
@@ -869,7 +876,8 @@ nodeEnclosing
| Assert.cs:123:9:123:38 | [b (line 84): true] ...; | Assert.cs:84:10:84:12 | M12 |
| Assert.cs:123:23:123:23 | [b (line 84): true] access to local variable s | Assert.cs:84:10:84:12 | M12 |
| Assert.cs:123:23:123:31 | [b (line 84): true] ... == ... | Assert.cs:84:10:84:12 | M12 |
| Assert.cs:123:23:123:36 | [b (line 84): true] ... && ... | Assert.cs:84:10:84:12 | M12 |
| Assert.cs:123:23:123:36 | [false, b (line 84): true] ... && ... | Assert.cs:84:10:84:12 | M12 |
| Assert.cs:123:23:123:36 | [true, b (line 84): true] ... && ... | Assert.cs:84:10:84:12 | M12 |
| Assert.cs:123:28:123:31 | [b (line 84): true] null | Assert.cs:84:10:84:12 | M12 |
| Assert.cs:123:36:123:36 | [b (line 84): true] access to parameter b | Assert.cs:84:10:84:12 | M12 |
| Assert.cs:124:9:124:35 | [b (line 84): true] call to method WriteLine | Assert.cs:84:10:84:12 | M12 |
@@ -886,9 +894,10 @@ nodeEnclosing
| Assert.cs:127:9:127:40 | [b (line 84): true] ...; | Assert.cs:84:10:84:12 | M12 |
| Assert.cs:127:24:127:24 | [b (line 84): true] access to local variable s | Assert.cs:84:10:84:12 | M12 |
| Assert.cs:127:24:127:32 | [b (line 84): true] ... != ... | Assert.cs:84:10:84:12 | M12 |
| Assert.cs:127:24:127:38 | [b (line 84): true] ... \|\| ... | Assert.cs:84:10:84:12 | M12 |
| Assert.cs:127:24:127:38 | [false] ... \|\| ... | Assert.cs:84:10:84:12 | M12 |
| Assert.cs:127:24:127:38 | [true] ... \|\| ... | Assert.cs:84:10:84:12 | M12 |
| Assert.cs:127:29:127:32 | [b (line 84): true] null | Assert.cs:84:10:84:12 | M12 |
| Assert.cs:127:37:127:38 | [b (line 84): true] !... | Assert.cs:84:10:84:12 | M12 |
| Assert.cs:127:37:127:38 | [false] !... | Assert.cs:84:10:84:12 | M12 |
| Assert.cs:127:38:127:38 | [b (line 84): true] access to parameter b | Assert.cs:84:10:84:12 | M12 |
| Assert.cs:128:9:128:35 | call to method WriteLine | Assert.cs:84:10:84:12 | M12 |
| Assert.cs:128:9:128:36 | ...; | Assert.cs:84:10:84:12 | M12 |
@@ -1110,9 +1119,6 @@ nodeEnclosing
| CompileTimeOperators.cs:40:14:40:37 | call to method WriteLine | CompileTimeOperators.cs:28:10:28:10 | M |
| CompileTimeOperators.cs:40:14:40:38 | ...; | CompileTimeOperators.cs:28:10:28:10 | M |
| CompileTimeOperators.cs:40:32:40:36 | "End" | CompileTimeOperators.cs:28:10:28:10 | M |
| ConditionalAccess.cs:1:7:1:23 | enter ConditionalAccess | ConditionalAccess.cs:1:7:1:23 | ConditionalAccess |
| ConditionalAccess.cs:1:7:1:23 | exit ConditionalAccess | ConditionalAccess.cs:1:7:1:23 | ConditionalAccess |
| ConditionalAccess.cs:1:7:1:23 | exit ConditionalAccess (normal) | ConditionalAccess.cs:1:7:1:23 | ConditionalAccess |
| ConditionalAccess.cs:3:12:3:13 | enter M1 | ConditionalAccess.cs:3:12:3:13 | M1 |
| ConditionalAccess.cs:3:12:3:13 | exit M1 | ConditionalAccess.cs:3:12:3:13 | M1 |
| ConditionalAccess.cs:3:12:3:13 | exit M1 (normal) | ConditionalAccess.cs:3:12:3:13 | M1 |
@@ -1129,6 +1135,8 @@ nodeEnclosing
| ConditionalAccess.cs:7:10:7:11 | exit M3 (normal) | ConditionalAccess.cs:7:10:7:11 | M3 |
| ConditionalAccess.cs:7:39:7:40 | access to parameter s1 | ConditionalAccess.cs:7:10:7:11 | M3 |
| ConditionalAccess.cs:7:39:7:46 | ... ?? ... | ConditionalAccess.cs:7:10:7:11 | M3 |
| ConditionalAccess.cs:7:39:7:46 | [non-null] ... ?? ... | ConditionalAccess.cs:7:10:7:11 | M3 |
| ConditionalAccess.cs:7:39:7:46 | [null] ... ?? ... | ConditionalAccess.cs:7:10:7:11 | M3 |
| ConditionalAccess.cs:7:45:7:46 | access to parameter s2 | ConditionalAccess.cs:7:10:7:11 | M3 |
| ConditionalAccess.cs:7:49:7:55 | access to property Length | ConditionalAccess.cs:7:10:7:11 | M3 |
| ConditionalAccess.cs:9:9:9:10 | enter M4 | ConditionalAccess.cs:9:9:9:10 | M4 |
@@ -1179,11 +1187,7 @@ nodeEnclosing
| ConditionalAccess.cs:30:10:30:12 | enter Out | ConditionalAccess.cs:30:10:30:12 | Out |
| ConditionalAccess.cs:30:10:30:12 | exit Out | ConditionalAccess.cs:30:10:30:12 | Out |
| ConditionalAccess.cs:30:10:30:12 | exit Out (normal) | ConditionalAccess.cs:30:10:30:12 | Out |
| ConditionalAccess.cs:30:28:30:32 | ... = ... | ConditionalAccess.cs:1:7:1:23 | ConditionalAccess |
| ConditionalAccess.cs:30:28:30:32 | ... = ... | ConditionalAccess.cs:30:10:30:12 | Out |
| ConditionalAccess.cs:30:28:30:32 | ... = ... | ConditionalAccess.cs:30:10:30:12 | Out |
| ConditionalAccess.cs:30:32:30:32 | 0 | ConditionalAccess.cs:1:7:1:23 | ConditionalAccess |
| ConditionalAccess.cs:30:32:30:32 | 0 | ConditionalAccess.cs:30:10:30:12 | Out |
| ConditionalAccess.cs:30:32:30:32 | 0 | ConditionalAccess.cs:30:10:30:12 | Out |
| ConditionalAccess.cs:32:10:32:11 | enter M8 | ConditionalAccess.cs:32:10:32:11 | M8 |
| ConditionalAccess.cs:32:10:32:11 | exit M8 | ConditionalAccess.cs:32:10:32:11 | M8 |
@@ -1215,8 +1219,8 @@ nodeEnclosing
| Conditions.cs:6:13:6:16 | [inc (line 3): true] ...; | Conditions.cs:3:10:3:19 | IncrOrDecr |
| Conditions.cs:7:9:8:16 | [inc (line 3): false] if (...) ... | Conditions.cs:3:10:3:19 | IncrOrDecr |
| Conditions.cs:7:9:8:16 | [inc (line 3): true] if (...) ... | Conditions.cs:3:10:3:19 | IncrOrDecr |
| Conditions.cs:7:13:7:16 | [inc (line 3): false] !... | Conditions.cs:3:10:3:19 | IncrOrDecr |
| Conditions.cs:7:13:7:16 | [inc (line 3): true] !... | Conditions.cs:3:10:3:19 | IncrOrDecr |
| Conditions.cs:7:13:7:16 | [false] !... | Conditions.cs:3:10:3:19 | IncrOrDecr |
| Conditions.cs:7:13:7:16 | [true] !... | Conditions.cs:3:10:3:19 | IncrOrDecr |
| Conditions.cs:7:14:7:16 | [inc (line 3): false] access to parameter inc | Conditions.cs:3:10:3:19 | IncrOrDecr |
| Conditions.cs:7:14:7:16 | [inc (line 3): true] access to parameter inc | Conditions.cs:3:10:3:19 | IncrOrDecr |
| Conditions.cs:8:13:8:13 | access to parameter x | Conditions.cs:3:10:3:19 | IncrOrDecr |
@@ -1244,8 +1248,8 @@ nodeEnclosing
| Conditions.cs:16:17:16:17 | [b (line 11): true] 0 | Conditions.cs:11:9:11:10 | M1 |
| Conditions.cs:17:13:18:20 | [b (line 11): false] if (...) ... | Conditions.cs:11:9:11:10 | M1 |
| Conditions.cs:17:13:18:20 | [b (line 11): true] if (...) ... | Conditions.cs:11:9:11:10 | M1 |
| Conditions.cs:17:17:17:18 | [b (line 11): false] !... | Conditions.cs:11:9:11:10 | M1 |
| Conditions.cs:17:17:17:18 | [b (line 11): true] !... | Conditions.cs:11:9:11:10 | M1 |
| Conditions.cs:17:17:17:18 | [false] !... | Conditions.cs:11:9:11:10 | M1 |
| Conditions.cs:17:17:17:18 | [true] !... | Conditions.cs:11:9:11:10 | M1 |
| Conditions.cs:17:18:17:18 | [b (line 11): false] access to parameter b | Conditions.cs:11:9:11:10 | M1 |
| Conditions.cs:17:18:17:18 | [b (line 11): true] access to parameter b | Conditions.cs:11:9:11:10 | M1 |
| Conditions.cs:18:17:18:17 | access to local variable x | Conditions.cs:11:9:11:10 | M1 |
@@ -1483,8 +1487,8 @@ nodeEnclosing
| Conditions.cs:107:24:107:24 | [b (line 102): true] 0 | Conditions.cs:102:12:102:13 | M8 |
| Conditions.cs:108:13:109:24 | [b (line 102): false] if (...) ... | Conditions.cs:102:12:102:13 | M8 |
| Conditions.cs:108:13:109:24 | [b (line 102): true] if (...) ... | Conditions.cs:102:12:102:13 | M8 |
| Conditions.cs:108:17:108:18 | [b (line 102): false] !... | Conditions.cs:102:12:102:13 | M8 |
| Conditions.cs:108:17:108:18 | [b (line 102): true] !... | Conditions.cs:102:12:102:13 | M8 |
| Conditions.cs:108:17:108:18 | [false] !... | Conditions.cs:102:12:102:13 | M8 |
| Conditions.cs:108:17:108:18 | [true] !... | Conditions.cs:102:12:102:13 | M8 |
| Conditions.cs:108:18:108:18 | [b (line 102): false] access to parameter b | Conditions.cs:102:12:102:13 | M8 |
| Conditions.cs:108:18:108:18 | [b (line 102): true] access to parameter b | Conditions.cs:102:12:102:13 | M8 |
| Conditions.cs:109:17:109:17 | access to local variable x | Conditions.cs:102:12:102:13 | M8 |
@@ -1520,7 +1524,8 @@ nodeEnclosing
| Conditions.cs:118:29:118:43 | ... - ... | Conditions.cs:113:10:113:11 | M9 |
| Conditions.cs:118:43:118:43 | 1 | Conditions.cs:113:10:113:11 | M9 |
| Conditions.cs:119:13:120:23 | if (...) ... | Conditions.cs:113:10:113:11 | M9 |
| Conditions.cs:119:17:119:21 | !... | Conditions.cs:113:10:113:11 | M9 |
| Conditions.cs:119:17:119:21 | [false, last (line 118): true] !... | Conditions.cs:113:10:113:11 | M9 |
| Conditions.cs:119:17:119:21 | [true, last (line 118): false] !... | Conditions.cs:113:10:113:11 | M9 |
| Conditions.cs:119:18:119:21 | access to local variable last | Conditions.cs:113:10:113:11 | M9 |
| Conditions.cs:120:17:120:22 | [last (line 118): false] ... = ... | Conditions.cs:113:10:113:11 | M9 |
| Conditions.cs:120:17:120:23 | [last (line 118): false] ...; | Conditions.cs:113:10:113:11 | M9 |
@@ -1580,7 +1585,8 @@ nodeEnclosing
| Conditions.cs:145:13:145:29 | [b (line 143): false] String s = ... | Conditions.cs:143:10:143:12 | M11 |
| Conditions.cs:145:13:145:29 | [b (line 143): true] String s = ... | Conditions.cs:143:10:143:12 | M11 |
| Conditions.cs:145:17:145:17 | access to parameter b | Conditions.cs:143:10:143:12 | M11 |
| Conditions.cs:145:17:145:29 | ... ? ... : ... | Conditions.cs:143:10:143:12 | M11 |
| Conditions.cs:145:17:145:29 | [b (line 143): false] ... ? ... : ... | Conditions.cs:143:10:143:12 | M11 |
| Conditions.cs:145:17:145:29 | [b (line 143): true] ... ? ... : ... | Conditions.cs:143:10:143:12 | M11 |
| Conditions.cs:145:21:145:23 | [b (line 143): true] "a" | Conditions.cs:143:10:143:12 | M11 |
| Conditions.cs:145:27:145:29 | [b (line 143): false] "b" | Conditions.cs:143:10:143:12 | M11 |
| Conditions.cs:146:9:149:49 | [b (line 143): false] if (...) ... | Conditions.cs:143:10:143:12 | M11 |
@@ -2064,11 +2070,16 @@ nodeEnclosing
| Finally.cs:114:13:115:41 | [finally: exception(OutOfMemoryException)] if (...) ... | Finally.cs:103:10:103:11 | M5 |
| Finally.cs:114:13:115:41 | [finally: return] if (...) ... | Finally.cs:103:10:103:11 | M5 |
| Finally.cs:114:13:115:41 | if (...) ... | Finally.cs:103:10:103:11 | M5 |
| Finally.cs:114:17:114:36 | !... | Finally.cs:103:10:103:11 | M5 |
| Finally.cs:114:17:114:36 | [finally: exception(Exception)] !... | Finally.cs:103:10:103:11 | M5 |
| Finally.cs:114:17:114:36 | [finally: exception(NullReferenceException)] !... | Finally.cs:103:10:103:11 | M5 |
| Finally.cs:114:17:114:36 | [finally: exception(OutOfMemoryException)] !... | Finally.cs:103:10:103:11 | M5 |
| Finally.cs:114:17:114:36 | [finally: return] !... | Finally.cs:103:10:103:11 | M5 |
| Finally.cs:114:17:114:36 | [false, finally: exception(Exception)] !... | Finally.cs:103:10:103:11 | M5 |
| Finally.cs:114:17:114:36 | [false, finally: exception(NullReferenceException)] !... | Finally.cs:103:10:103:11 | M5 |
| Finally.cs:114:17:114:36 | [false, finally: exception(OutOfMemoryException)] !... | Finally.cs:103:10:103:11 | M5 |
| Finally.cs:114:17:114:36 | [false, finally: return] !... | Finally.cs:103:10:103:11 | M5 |
| Finally.cs:114:17:114:36 | [false] !... | Finally.cs:103:10:103:11 | M5 |
| Finally.cs:114:17:114:36 | [true, finally: exception(Exception)] !... | Finally.cs:103:10:103:11 | M5 |
| Finally.cs:114:17:114:36 | [true, finally: exception(NullReferenceException)] !... | Finally.cs:103:10:103:11 | M5 |
| Finally.cs:114:17:114:36 | [true, finally: exception(OutOfMemoryException)] !... | Finally.cs:103:10:103:11 | M5 |
| Finally.cs:114:17:114:36 | [true, finally: return] !... | Finally.cs:103:10:103:11 | M5 |
| Finally.cs:114:17:114:36 | [true] !... | Finally.cs:103:10:103:11 | M5 |
| Finally.cs:114:19:114:23 | [finally: exception(Exception)] access to field Field | Finally.cs:103:10:103:11 | M5 |
| Finally.cs:114:19:114:23 | [finally: exception(Exception)] this access | Finally.cs:103:10:103:11 | M5 |
| Finally.cs:114:19:114:23 | [finally: exception(NullReferenceException)] access to field Field | Finally.cs:103:10:103:11 | M5 |
@@ -2896,7 +2907,8 @@ nodeEnclosing
| LoopUnrolling.cs:67:10:67:11 | exit M8 (normal) | LoopUnrolling.cs:67:10:67:11 | M8 |
| LoopUnrolling.cs:68:5:74:5 | {...} | LoopUnrolling.cs:67:10:67:11 | M8 |
| LoopUnrolling.cs:69:9:70:19 | if (...) ... | LoopUnrolling.cs:67:10:67:11 | M8 |
| LoopUnrolling.cs:69:13:69:23 | !... | LoopUnrolling.cs:67:10:67:11 | M8 |
| LoopUnrolling.cs:69:13:69:23 | [false] !... | LoopUnrolling.cs:67:10:67:11 | M8 |
| LoopUnrolling.cs:69:13:69:23 | [true] !... | LoopUnrolling.cs:67:10:67:11 | M8 |
| LoopUnrolling.cs:69:14:69:17 | access to parameter args | LoopUnrolling.cs:67:10:67:11 | M8 |
| LoopUnrolling.cs:69:14:69:23 | call to method Any | LoopUnrolling.cs:67:10:67:11 | M8 |
| LoopUnrolling.cs:70:13:70:19 | return ...; | LoopUnrolling.cs:67:10:67:11 | M8 |
@@ -3322,7 +3334,8 @@ nodeEnclosing
| NullCoalescing.cs:5:9:5:10 | exit M2 (normal) | NullCoalescing.cs:5:9:5:10 | M2 |
| NullCoalescing.cs:5:24:5:43 | ... ? ... : ... | NullCoalescing.cs:5:9:5:10 | M2 |
| NullCoalescing.cs:5:25:5:25 | access to parameter b | NullCoalescing.cs:5:9:5:10 | M2 |
| NullCoalescing.cs:5:25:5:34 | ... ?? ... | NullCoalescing.cs:5:9:5:10 | M2 |
| NullCoalescing.cs:5:25:5:34 | [false] ... ?? ... | NullCoalescing.cs:5:9:5:10 | M2 |
| NullCoalescing.cs:5:25:5:34 | [true] ... ?? ... | NullCoalescing.cs:5:9:5:10 | M2 |
| NullCoalescing.cs:5:30:5:34 | false | NullCoalescing.cs:5:9:5:10 | M2 |
| NullCoalescing.cs:5:39:5:39 | 0 | NullCoalescing.cs:5:9:5:10 | M2 |
| NullCoalescing.cs:5:43:5:43 | 1 | NullCoalescing.cs:5:9:5:10 | M2 |
@@ -3339,7 +3352,8 @@ nodeEnclosing
| NullCoalescing.cs:9:12:9:13 | exit M4 (normal) | NullCoalescing.cs:9:12:9:13 | M4 |
| NullCoalescing.cs:9:36:9:58 | ... ?? ... | NullCoalescing.cs:9:12:9:13 | M4 |
| NullCoalescing.cs:9:37:9:37 | access to parameter b | NullCoalescing.cs:9:12:9:13 | M4 |
| NullCoalescing.cs:9:37:9:45 | ... ? ... : ... | NullCoalescing.cs:9:12:9:13 | M4 |
| NullCoalescing.cs:9:37:9:45 | [non-null] ... ? ... : ... | NullCoalescing.cs:9:12:9:13 | M4 |
| NullCoalescing.cs:9:37:9:45 | [null] ... ? ... : ... | NullCoalescing.cs:9:12:9:13 | M4 |
| NullCoalescing.cs:9:41:9:41 | access to parameter s | NullCoalescing.cs:9:12:9:13 | M4 |
| NullCoalescing.cs:9:45:9:45 | access to parameter s | NullCoalescing.cs:9:12:9:13 | M4 |
| NullCoalescing.cs:9:51:9:52 | "" | NullCoalescing.cs:9:12:9:13 | M4 |
@@ -3349,9 +3363,11 @@ nodeEnclosing
| NullCoalescing.cs:11:9:11:10 | exit M5 (normal) | NullCoalescing.cs:11:9:11:10 | M5 |
| NullCoalescing.cs:11:43:11:68 | ... ? ... : ... | NullCoalescing.cs:11:9:11:10 | M5 |
| NullCoalescing.cs:11:44:11:45 | access to parameter b1 | NullCoalescing.cs:11:9:11:10 | M5 |
| NullCoalescing.cs:11:44:11:59 | ... ?? ... | NullCoalescing.cs:11:9:11:10 | M5 |
| NullCoalescing.cs:11:44:11:59 | [false] ... ?? ... | NullCoalescing.cs:11:9:11:10 | M5 |
| NullCoalescing.cs:11:44:11:59 | [true] ... ?? ... | NullCoalescing.cs:11:9:11:10 | M5 |
| NullCoalescing.cs:11:51:11:52 | access to parameter b2 | NullCoalescing.cs:11:9:11:10 | M5 |
| NullCoalescing.cs:11:51:11:58 | ... && ... | NullCoalescing.cs:11:9:11:10 | M5 |
| NullCoalescing.cs:11:51:11:58 | [false] ... && ... | NullCoalescing.cs:11:9:11:10 | M5 |
| NullCoalescing.cs:11:51:11:58 | [true] ... && ... | NullCoalescing.cs:11:9:11:10 | M5 |
| NullCoalescing.cs:11:57:11:58 | access to parameter b3 | NullCoalescing.cs:11:9:11:10 | M5 |
| NullCoalescing.cs:11:64:11:64 | 0 | NullCoalescing.cs:11:9:11:10 | M5 |
| NullCoalescing.cs:11:68:11:68 | 1 | NullCoalescing.cs:11:9:11:10 | M5 |
@@ -3585,7 +3601,8 @@ nodeEnclosing
| Switch.cs:24:32:24:32 | access to local variable s | Switch.cs:10:10:10:11 | M2 |
| Switch.cs:24:32:24:39 | access to property Length | Switch.cs:10:10:10:11 | M2 |
| Switch.cs:24:32:24:43 | ... > ... | Switch.cs:10:10:10:11 | M2 |
| Switch.cs:24:32:24:55 | ... && ... | Switch.cs:10:10:10:11 | M2 |
| Switch.cs:24:32:24:55 | [false] ... && ... | Switch.cs:10:10:10:11 | M2 |
| Switch.cs:24:32:24:55 | [true] ... && ... | Switch.cs:10:10:10:11 | M2 |
| Switch.cs:24:43:24:43 | 0 | Switch.cs:10:10:10:11 | M2 |
| Switch.cs:24:48:24:48 | access to local variable s | Switch.cs:10:10:10:11 | M2 |
| Switch.cs:24:48:24:55 | ... != ... | Switch.cs:10:10:10:11 | M2 |
@@ -3733,12 +3750,14 @@ nodeEnclosing
| Switch.cs:124:5:127:5 | {...} | Switch.cs:123:10:123:12 | M11 |
| Switch.cs:125:9:126:19 | if (...) ... | Switch.cs:123:10:123:12 | M11 |
| Switch.cs:125:13:125:13 | access to parameter o | Switch.cs:123:10:123:12 | M11 |
| Switch.cs:125:13:125:48 | ... switch { ... } | Switch.cs:123:10:123:12 | M11 |
| Switch.cs:125:13:125:48 | [false] ... switch { ... } | Switch.cs:123:10:123:12 | M11 |
| Switch.cs:125:13:125:48 | [true] ... switch { ... } | Switch.cs:123:10:123:12 | M11 |
| Switch.cs:125:24:125:29 | Boolean b | Switch.cs:123:10:123:12 | M11 |
| Switch.cs:125:24:125:34 | ... => ... | Switch.cs:123:10:123:12 | M11 |
| Switch.cs:125:24:125:34 | [false] ... => ... | Switch.cs:123:10:123:12 | M11 |
| Switch.cs:125:24:125:34 | [true] ... => ... | Switch.cs:123:10:123:12 | M11 |
| Switch.cs:125:34:125:34 | access to local variable b | Switch.cs:123:10:123:12 | M11 |
| Switch.cs:125:37:125:37 | _ | Switch.cs:123:10:123:12 | M11 |
| Switch.cs:125:37:125:46 | ... => ... | Switch.cs:123:10:123:12 | M11 |
| Switch.cs:125:37:125:46 | [false] ... => ... | Switch.cs:123:10:123:12 | M11 |
| Switch.cs:125:42:125:46 | false | Switch.cs:123:10:123:12 | M11 |
| Switch.cs:126:13:126:19 | return ...; | Switch.cs:123:10:123:12 | M11 |
| Switch.cs:129:12:129:14 | enter M12 | Switch.cs:129:12:129:14 | M12 |
@@ -3747,12 +3766,14 @@ nodeEnclosing
| Switch.cs:130:5:132:5 | {...} | Switch.cs:129:12:129:14 | M12 |
| Switch.cs:131:9:131:67 | return ...; | Switch.cs:129:12:129:14 | M12 |
| Switch.cs:131:17:131:17 | access to parameter o | Switch.cs:129:12:129:14 | M12 |
| Switch.cs:131:17:131:53 | ... switch { ... } | Switch.cs:129:12:129:14 | M12 |
| Switch.cs:131:17:131:53 | [non-null] ... switch { ... } | Switch.cs:129:12:129:14 | M12 |
| Switch.cs:131:17:131:53 | [null] ... switch { ... } | Switch.cs:129:12:129:14 | M12 |
| Switch.cs:131:28:131:35 | String s | Switch.cs:129:12:129:14 | M12 |
| Switch.cs:131:28:131:40 | ... => ... | Switch.cs:129:12:129:14 | M12 |
| Switch.cs:131:28:131:40 | [non-null] ... => ... | Switch.cs:129:12:129:14 | M12 |
| Switch.cs:131:28:131:40 | [null] ... => ... | Switch.cs:129:12:129:14 | M12 |
| Switch.cs:131:40:131:40 | access to local variable s | Switch.cs:129:12:129:14 | M12 |
| Switch.cs:131:43:131:43 | _ | Switch.cs:129:12:129:14 | M12 |
| Switch.cs:131:43:131:51 | ... => ... | Switch.cs:129:12:129:14 | M12 |
| Switch.cs:131:43:131:51 | [null] ... => ... | Switch.cs:129:12:129:14 | M12 |
| Switch.cs:131:48:131:51 | null | Switch.cs:129:12:129:14 | M12 |
| Switch.cs:131:56:131:66 | call to method ToString | Switch.cs:129:12:129:14 | M12 |
| Switch.cs:134:9:134:11 | enter M13 | Switch.cs:134:9:134:11 | M13 |
@@ -3945,7 +3966,8 @@ nodeEnclosing
| cflow.cs:26:17:26:17 | access to local variable i | cflow.cs:5:17:5:20 | Main |
| cflow.cs:26:17:26:21 | ... % ... | cflow.cs:5:17:5:20 | Main |
| cflow.cs:26:17:26:26 | ... == ... | cflow.cs:5:17:5:20 | Main |
| cflow.cs:26:17:26:40 | ... && ... | cflow.cs:5:17:5:20 | Main |
| cflow.cs:26:17:26:40 | [false] ... && ... | cflow.cs:5:17:5:20 | Main |
| cflow.cs:26:17:26:40 | [true] ... && ... | cflow.cs:5:17:5:20 | Main |
| cflow.cs:26:21:26:21 | 3 | cflow.cs:5:17:5:20 | Main |
| cflow.cs:26:26:26:26 | 0 | cflow.cs:5:17:5:20 | Main |
| cflow.cs:26:31:26:31 | access to local variable i | cflow.cs:5:17:5:20 | Main |
@@ -4024,7 +4046,8 @@ nodeEnclosing
| cflow.cs:62:13:62:19 | case ...: | cflow.cs:37:17:37:22 | Switch |
| cflow.cs:62:18:62:18 | 0 | cflow.cs:37:17:37:22 | Switch |
| cflow.cs:63:17:64:55 | if (...) ... | cflow.cs:37:17:37:22 | Switch |
| cflow.cs:63:21:63:34 | !... | cflow.cs:37:17:37:22 | Switch |
| cflow.cs:63:21:63:34 | [false] !... | cflow.cs:37:17:37:22 | Switch |
| cflow.cs:63:21:63:34 | [true] !... | cflow.cs:37:17:37:22 | Switch |
| cflow.cs:63:23:63:27 | access to field Field | cflow.cs:37:17:37:22 | Switch |
| cflow.cs:63:23:63:27 | this access | cflow.cs:37:17:37:22 | Switch |
| cflow.cs:63:23:63:33 | ... == ... | cflow.cs:37:17:37:22 | Switch |
@@ -4063,7 +4086,8 @@ nodeEnclosing
| cflow.cs:86:9:87:33 | if (...) ... | cflow.cs:84:18:84:19 | M2 |
| cflow.cs:86:13:86:13 | access to parameter s | cflow.cs:84:18:84:19 | M2 |
| cflow.cs:86:13:86:21 | ... != ... | cflow.cs:84:18:84:19 | M2 |
| cflow.cs:86:13:86:37 | ... && ... | cflow.cs:84:18:84:19 | M2 |
| cflow.cs:86:13:86:37 | [false] ... && ... | cflow.cs:84:18:84:19 | M2 |
| cflow.cs:86:13:86:37 | [true] ... && ... | cflow.cs:84:18:84:19 | M2 |
| cflow.cs:86:18:86:21 | null | cflow.cs:84:18:84:19 | M2 |
| cflow.cs:86:26:86:26 | access to parameter s | cflow.cs:84:18:84:19 | M2 |
| cflow.cs:86:26:86:33 | access to property Length | cflow.cs:84:18:84:19 | M2 |
@@ -4317,15 +4341,15 @@ nodeEnclosing
| cflow.cs:187:9:190:52 | if (...) ... | cflow.cs:185:10:185:18 | LogicalOr |
| cflow.cs:187:13:187:13 | 1 | cflow.cs:185:10:185:18 | LogicalOr |
| cflow.cs:187:13:187:18 | ... == ... | cflow.cs:185:10:185:18 | LogicalOr |
| cflow.cs:187:13:187:28 | ... \|\| ... | cflow.cs:185:10:185:18 | LogicalOr |
| cflow.cs:187:13:187:50 | ... \|\| ... | cflow.cs:185:10:185:18 | LogicalOr |
| cflow.cs:187:13:187:28 | [false] ... \|\| ... | cflow.cs:185:10:185:18 | LogicalOr |
| cflow.cs:187:13:187:50 | [false] ... \|\| ... | cflow.cs:185:10:185:18 | LogicalOr |
| cflow.cs:187:18:187:18 | 2 | cflow.cs:185:10:185:18 | LogicalOr |
| cflow.cs:187:23:187:23 | 2 | cflow.cs:185:10:185:18 | LogicalOr |
| cflow.cs:187:23:187:28 | ... == ... | cflow.cs:185:10:185:18 | LogicalOr |
| cflow.cs:187:28:187:28 | 3 | cflow.cs:185:10:185:18 | LogicalOr |
| cflow.cs:187:34:187:34 | 1 | cflow.cs:185:10:185:18 | LogicalOr |
| cflow.cs:187:34:187:39 | ... == ... | cflow.cs:185:10:185:18 | LogicalOr |
| cflow.cs:187:34:187:49 | ... && ... | cflow.cs:185:10:185:18 | LogicalOr |
| cflow.cs:187:34:187:49 | [false] ... && ... | cflow.cs:185:10:185:18 | LogicalOr |
| cflow.cs:187:39:187:39 | 3 | cflow.cs:185:10:185:18 | LogicalOr |
| cflow.cs:190:13:190:51 | call to method WriteLine | cflow.cs:185:10:185:18 | LogicalOr |
| cflow.cs:190:13:190:52 | ...; | cflow.cs:185:10:185:18 | LogicalOr |
@@ -4350,12 +4374,14 @@ nodeEnclosing
| cflow.cs:195:39:195:55 | ... == ... | cflow.cs:193:10:193:17 | Booleans |
| cflow.cs:195:55:195:55 | 1 | cflow.cs:193:10:193:17 | Booleans |
| cflow.cs:197:9:198:49 | if (...) ... | cflow.cs:193:10:193:17 | Booleans |
| cflow.cs:197:13:197:47 | !... | cflow.cs:193:10:193:17 | Booleans |
| cflow.cs:197:13:197:47 | [false] !... | cflow.cs:193:10:193:17 | Booleans |
| cflow.cs:197:13:197:47 | [true] !... | cflow.cs:193:10:193:17 | Booleans |
| cflow.cs:197:15:197:19 | access to field Field | cflow.cs:193:10:193:17 | Booleans |
| cflow.cs:197:15:197:19 | this access | cflow.cs:193:10:193:17 | Booleans |
| cflow.cs:197:15:197:26 | access to property Length | cflow.cs:193:10:193:17 | Booleans |
| cflow.cs:197:15:197:31 | ... == ... | cflow.cs:193:10:193:17 | Booleans |
| cflow.cs:197:15:197:46 | ... ? ... : ... | cflow.cs:193:10:193:17 | Booleans |
| cflow.cs:197:15:197:46 | [false] ... ? ... : ... | cflow.cs:193:10:193:17 | Booleans |
| cflow.cs:197:15:197:46 | [true] ... ? ... : ... | cflow.cs:193:10:193:17 | Booleans |
| cflow.cs:197:31:197:31 | 0 | cflow.cs:193:10:193:17 | Booleans |
| cflow.cs:197:35:197:39 | false | cflow.cs:193:10:193:17 | Booleans |
| cflow.cs:197:43:197:46 | true | cflow.cs:193:10:193:17 | Booleans |
@@ -4370,20 +4396,25 @@ nodeEnclosing
| cflow.cs:198:37:198:41 | false | cflow.cs:193:10:193:17 | Booleans |
| cflow.cs:198:45:198:48 | true | cflow.cs:193:10:193:17 | Booleans |
| cflow.cs:200:9:205:9 | if (...) ... | cflow.cs:193:10:193:17 | Booleans |
| cflow.cs:200:13:200:32 | !... | cflow.cs:193:10:193:17 | Booleans |
| cflow.cs:200:13:200:62 | ... \|\| ... | cflow.cs:193:10:193:17 | Booleans |
| cflow.cs:200:13:200:32 | [false] !... | cflow.cs:193:10:193:17 | Booleans |
| cflow.cs:200:13:200:32 | [true] !... | cflow.cs:193:10:193:17 | Booleans |
| cflow.cs:200:13:200:62 | [false] ... \|\| ... | cflow.cs:193:10:193:17 | Booleans |
| cflow.cs:200:13:200:62 | [true] ... \|\| ... | cflow.cs:193:10:193:17 | Booleans |
| cflow.cs:200:15:200:19 | access to field Field | cflow.cs:193:10:193:17 | Booleans |
| cflow.cs:200:15:200:19 | this access | cflow.cs:193:10:193:17 | Booleans |
| cflow.cs:200:15:200:26 | access to property Length | cflow.cs:193:10:193:17 | Booleans |
| cflow.cs:200:15:200:31 | ... == ... | cflow.cs:193:10:193:17 | Booleans |
| cflow.cs:200:31:200:31 | 0 | cflow.cs:193:10:193:17 | Booleans |
| cflow.cs:200:37:200:62 | !... | cflow.cs:193:10:193:17 | Booleans |
| cflow.cs:200:38:200:62 | !... | cflow.cs:193:10:193:17 | Booleans |
| cflow.cs:200:37:200:62 | [false] !... | cflow.cs:193:10:193:17 | Booleans |
| cflow.cs:200:37:200:62 | [true] !... | cflow.cs:193:10:193:17 | Booleans |
| cflow.cs:200:38:200:62 | [false] !... | cflow.cs:193:10:193:17 | Booleans |
| cflow.cs:200:38:200:62 | [true] !... | cflow.cs:193:10:193:17 | Booleans |
| cflow.cs:200:40:200:44 | access to field Field | cflow.cs:193:10:193:17 | Booleans |
| cflow.cs:200:40:200:44 | this access | cflow.cs:193:10:193:17 | Booleans |
| cflow.cs:200:40:200:51 | access to property Length | cflow.cs:193:10:193:17 | Booleans |
| cflow.cs:200:40:200:56 | ... == ... | cflow.cs:193:10:193:17 | Booleans |
| cflow.cs:200:40:200:61 | ... && ... | cflow.cs:193:10:193:17 | Booleans |
| cflow.cs:200:40:200:61 | [false] ... && ... | cflow.cs:193:10:193:17 | Booleans |
| cflow.cs:200:40:200:61 | [true] ... && ... | cflow.cs:193:10:193:17 | Booleans |
| cflow.cs:200:56:200:56 | 1 | cflow.cs:193:10:193:17 | Booleans |
| cflow.cs:200:61:200:61 | access to local variable b | cflow.cs:193:10:193:17 | Booleans |
| cflow.cs:201:9:205:9 | {...} | cflow.cs:193:10:193:17 | Booleans |
@@ -4463,8 +4494,10 @@ nodeEnclosing
| cflow.cs:241:5:259:5 | {...} | cflow.cs:240:10:240:13 | Goto |
| cflow.cs:242:9:242:13 | Label: | cflow.cs:240:10:240:13 | Goto |
| cflow.cs:242:16:242:45 | if (...) ... | cflow.cs:240:10:240:13 | Goto |
| cflow.cs:242:20:242:40 | !... | cflow.cs:240:10:240:13 | Goto |
| cflow.cs:242:21:242:40 | !... | cflow.cs:240:10:240:13 | Goto |
| cflow.cs:242:20:242:40 | [false] !... | cflow.cs:240:10:240:13 | Goto |
| cflow.cs:242:20:242:40 | [true] !... | cflow.cs:240:10:240:13 | Goto |
| cflow.cs:242:21:242:40 | [false] !... | cflow.cs:240:10:240:13 | Goto |
| cflow.cs:242:21:242:40 | [true] !... | cflow.cs:240:10:240:13 | Goto |
| cflow.cs:242:23:242:27 | access to field Field | cflow.cs:240:10:240:13 | Goto |
| cflow.cs:242:23:242:27 | this access | cflow.cs:240:10:240:13 | Goto |
| cflow.cs:242:23:242:34 | access to property Length | cflow.cs:240:10:240:13 | Goto |
@@ -4559,7 +4592,8 @@ nodeEnclosing
| cflow.cs:300:9:300:72 | object creation of type NegationInConstructor | cflow.cs:298:10:298:10 | M |
| cflow.cs:300:9:300:73 | ...; | cflow.cs:298:10:298:10 | M |
| cflow.cs:300:38:300:38 | 0 | cflow.cs:298:10:298:10 | M |
| cflow.cs:300:44:300:51 | !... | cflow.cs:298:10:298:10 | M |
| cflow.cs:300:44:300:51 | [false] !... | cflow.cs:298:10:298:10 | M |
| cflow.cs:300:44:300:51 | [true] !... | cflow.cs:298:10:298:10 | M |
| cflow.cs:300:44:300:64 | ... && ... | cflow.cs:298:10:298:10 | M |
| cflow.cs:300:46:300:46 | access to parameter i | cflow.cs:298:10:298:10 | M |
| cflow.cs:300:46:300:50 | ... > ... | cflow.cs:298:10:298:10 | M |
@@ -4588,49 +4622,49 @@ blockEnclosing
| ArrayCreation.cs:9:12:9:13 | enter M4 | ArrayCreation.cs:9:12:9:13 | M4 |
| Assert.cs:7:10:7:11 | enter M1 | Assert.cs:7:10:7:11 | M1 |
| Assert.cs:7:10:7:11 | exit M1 | Assert.cs:7:10:7:11 | M1 |
| Assert.cs:9:16:9:32 | String s = ... | Assert.cs:7:10:7:11 | M1 |
| Assert.cs:9:20:9:32 | ... ? ... : ... | Assert.cs:7:10:7:11 | M1 |
| Assert.cs:9:24:9:27 | null | Assert.cs:7:10:7:11 | M1 |
| Assert.cs:9:31:9:32 | "" | Assert.cs:7:10:7:11 | M1 |
| Assert.cs:10:9:10:31 | [assertion failure] call to method Assert | Assert.cs:7:10:7:11 | M1 |
| Assert.cs:10:9:10:31 | [assertion success] call to method Assert | Assert.cs:7:10:7:11 | M1 |
| Assert.cs:14:10:14:11 | enter M2 | Assert.cs:14:10:14:11 | M2 |
| Assert.cs:14:10:14:11 | exit M2 | Assert.cs:14:10:14:11 | M2 |
| Assert.cs:16:16:16:32 | String s = ... | Assert.cs:14:10:14:11 | M2 |
| Assert.cs:16:20:16:32 | ... ? ... : ... | Assert.cs:14:10:14:11 | M2 |
| Assert.cs:16:24:16:27 | null | Assert.cs:14:10:14:11 | M2 |
| Assert.cs:16:31:16:32 | "" | Assert.cs:14:10:14:11 | M2 |
| Assert.cs:17:9:17:24 | [assertion failure] call to method IsNull | Assert.cs:14:10:14:11 | M2 |
| Assert.cs:17:9:17:24 | [assertion success] call to method IsNull | Assert.cs:14:10:14:11 | M2 |
| Assert.cs:21:10:21:11 | enter M3 | Assert.cs:21:10:21:11 | M3 |
| Assert.cs:21:10:21:11 | exit M3 | Assert.cs:21:10:21:11 | M3 |
| Assert.cs:23:16:23:32 | String s = ... | Assert.cs:21:10:21:11 | M3 |
| Assert.cs:23:20:23:32 | ... ? ... : ... | Assert.cs:21:10:21:11 | M3 |
| Assert.cs:23:24:23:27 | null | Assert.cs:21:10:21:11 | M3 |
| Assert.cs:23:31:23:32 | "" | Assert.cs:21:10:21:11 | M3 |
| Assert.cs:24:9:24:27 | [assertion failure] call to method IsNotNull | Assert.cs:21:10:21:11 | M3 |
| Assert.cs:24:9:24:27 | [assertion success] call to method IsNotNull | Assert.cs:21:10:21:11 | M3 |
| Assert.cs:28:10:28:11 | enter M4 | Assert.cs:28:10:28:11 | M4 |
| Assert.cs:28:10:28:11 | exit M4 | Assert.cs:28:10:28:11 | M4 |
| Assert.cs:30:16:30:32 | String s = ... | Assert.cs:28:10:28:11 | M4 |
| Assert.cs:30:20:30:32 | ... ? ... : ... | Assert.cs:28:10:28:11 | M4 |
| Assert.cs:30:24:30:27 | null | Assert.cs:28:10:28:11 | M4 |
| Assert.cs:30:31:30:32 | "" | Assert.cs:28:10:28:11 | M4 |
| Assert.cs:31:9:31:32 | [assertion failure] call to method IsTrue | Assert.cs:28:10:28:11 | M4 |
| Assert.cs:31:9:31:32 | [assertion success] call to method IsTrue | Assert.cs:28:10:28:11 | M4 |
| Assert.cs:35:10:35:11 | enter M5 | Assert.cs:35:10:35:11 | M5 |
| Assert.cs:35:10:35:11 | exit M5 | Assert.cs:35:10:35:11 | M5 |
| Assert.cs:37:16:37:32 | String s = ... | Assert.cs:35:10:35:11 | M5 |
| Assert.cs:37:20:37:32 | ... ? ... : ... | Assert.cs:35:10:35:11 | M5 |
| Assert.cs:37:24:37:27 | null | Assert.cs:35:10:35:11 | M5 |
| Assert.cs:37:31:37:32 | "" | Assert.cs:35:10:35:11 | M5 |
| Assert.cs:38:9:38:32 | [assertion failure] call to method IsTrue | Assert.cs:35:10:35:11 | M5 |
| Assert.cs:38:9:38:32 | [assertion success] call to method IsTrue | Assert.cs:35:10:35:11 | M5 |
| Assert.cs:42:10:42:11 | enter M6 | Assert.cs:42:10:42:11 | M6 |
| Assert.cs:42:10:42:11 | exit M6 | Assert.cs:42:10:42:11 | M6 |
| Assert.cs:44:16:44:32 | String s = ... | Assert.cs:42:10:42:11 | M6 |
| Assert.cs:44:20:44:32 | ... ? ... : ... | Assert.cs:42:10:42:11 | M6 |
| Assert.cs:44:24:44:27 | null | Assert.cs:42:10:42:11 | M6 |
| Assert.cs:44:31:44:32 | "" | Assert.cs:42:10:42:11 | M6 |
| Assert.cs:45:9:45:33 | [assertion failure] call to method IsFalse | Assert.cs:42:10:42:11 | M6 |
| Assert.cs:45:9:45:33 | [assertion success] call to method IsFalse | Assert.cs:42:10:42:11 | M6 |
| Assert.cs:49:10:49:11 | enter M7 | Assert.cs:49:10:49:11 | M7 |
| Assert.cs:49:10:49:11 | exit M7 | Assert.cs:49:10:49:11 | M7 |
| Assert.cs:51:16:51:32 | String s = ... | Assert.cs:49:10:49:11 | M7 |
| Assert.cs:51:20:51:32 | ... ? ... : ... | Assert.cs:49:10:49:11 | M7 |
| Assert.cs:51:24:51:27 | null | Assert.cs:49:10:49:11 | M7 |
| Assert.cs:51:31:51:32 | "" | Assert.cs:49:10:49:11 | M7 |
| Assert.cs:52:9:52:33 | [assertion failure] call to method IsFalse | Assert.cs:49:10:49:11 | M7 |
@@ -4639,28 +4673,28 @@ blockEnclosing
| Assert.cs:56:10:56:11 | exit M8 | Assert.cs:56:10:56:11 | M8 |
| Assert.cs:58:24:58:27 | [b (line 56): true] null | Assert.cs:56:10:56:11 | M8 |
| Assert.cs:58:31:58:32 | [b (line 56): false] "" | Assert.cs:56:10:56:11 | M8 |
| Assert.cs:59:9:59:37 | [assertion failure] call to method IsTrue | Assert.cs:56:10:56:11 | M8 |
| Assert.cs:59:23:59:36 | [false] ... && ... | Assert.cs:56:10:56:11 | M8 |
| Assert.cs:59:36:59:36 | [b (line 56): false] access to parameter b | Assert.cs:56:10:56:11 | M8 |
| Assert.cs:59:36:59:36 | [b (line 56): true] access to parameter b | Assert.cs:56:10:56:11 | M8 |
| Assert.cs:63:10:63:11 | enter M9 | Assert.cs:63:10:63:11 | M9 |
| Assert.cs:63:10:63:11 | exit M9 | Assert.cs:63:10:63:11 | M9 |
| Assert.cs:65:24:65:27 | [b (line 63): true] null | Assert.cs:63:10:63:11 | M9 |
| Assert.cs:65:31:65:32 | [b (line 63): false] "" | Assert.cs:63:10:63:11 | M9 |
| Assert.cs:66:9:66:38 | [assertion failure] call to method IsFalse | Assert.cs:63:10:63:11 | M9 |
| Assert.cs:66:24:66:37 | [true] ... \|\| ... | Assert.cs:63:10:63:11 | M9 |
| Assert.cs:66:37:66:37 | [b (line 63): false] access to parameter b | Assert.cs:63:10:63:11 | M9 |
| Assert.cs:66:37:66:37 | [b (line 63): true] access to parameter b | Assert.cs:63:10:63:11 | M9 |
| Assert.cs:70:10:70:12 | enter M10 | Assert.cs:70:10:70:12 | M10 |
| Assert.cs:70:10:70:12 | exit M10 | Assert.cs:70:10:70:12 | M10 |
| Assert.cs:72:24:72:27 | [b (line 70): true] null | Assert.cs:70:10:70:12 | M10 |
| Assert.cs:72:31:72:32 | [b (line 70): false] "" | Assert.cs:70:10:70:12 | M10 |
| Assert.cs:73:9:73:37 | [assertion failure] call to method IsTrue | Assert.cs:70:10:70:12 | M10 |
| Assert.cs:73:23:73:36 | [false] ... && ... | Assert.cs:70:10:70:12 | M10 |
| Assert.cs:73:36:73:36 | [b (line 70): false] access to parameter b | Assert.cs:70:10:70:12 | M10 |
| Assert.cs:73:36:73:36 | [b (line 70): true] access to parameter b | Assert.cs:70:10:70:12 | M10 |
| Assert.cs:77:10:77:12 | enter M11 | Assert.cs:77:10:77:12 | M11 |
| Assert.cs:77:10:77:12 | exit M11 | Assert.cs:77:10:77:12 | M11 |
| Assert.cs:79:24:79:27 | [b (line 77): true] null | Assert.cs:77:10:77:12 | M11 |
| Assert.cs:79:31:79:32 | [b (line 77): false] "" | Assert.cs:77:10:77:12 | M11 |
| Assert.cs:80:9:80:38 | [assertion failure] call to method IsFalse | Assert.cs:77:10:77:12 | M11 |
| Assert.cs:80:24:80:37 | [true] ... \|\| ... | Assert.cs:77:10:77:12 | M11 |
| Assert.cs:80:37:80:37 | [b (line 77): false] access to parameter b | Assert.cs:77:10:77:12 | M11 |
| Assert.cs:80:37:80:37 | [b (line 77): true] access to parameter b | Assert.cs:77:10:77:12 | M11 |
| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:84:10:84:12 | M12 |
@@ -4696,16 +4730,16 @@ blockEnclosing
| Assert.cs:111:9:111:33 | [assertion failure, b (line 84): true] call to method IsFalse | Assert.cs:84:10:84:12 | M12 |
| Assert.cs:111:9:111:33 | [assertion success, b (line 84): false] call to method IsFalse | Assert.cs:84:10:84:12 | M12 |
| Assert.cs:111:9:111:33 | [assertion success, b (line 84): true] call to method IsFalse | Assert.cs:84:10:84:12 | M12 |
| Assert.cs:115:9:115:37 | [assertion failure, b (line 84): false] call to method IsTrue | Assert.cs:84:10:84:12 | M12 |
| Assert.cs:115:9:115:37 | [assertion failure, b (line 84): true] call to method IsTrue | Assert.cs:84:10:84:12 | M12 |
| Assert.cs:115:23:115:36 | [false, b (line 84): false] ... && ... | Assert.cs:84:10:84:12 | M12 |
| Assert.cs:115:23:115:36 | [false, b (line 84): true] ... && ... | Assert.cs:84:10:84:12 | M12 |
| Assert.cs:115:36:115:36 | [b (line 84): false] access to parameter b | Assert.cs:84:10:84:12 | M12 |
| Assert.cs:115:36:115:36 | [b (line 84): true] access to parameter b | Assert.cs:84:10:84:12 | M12 |
| Assert.cs:119:9:119:39 | [assertion failure, b (line 84): true] call to method IsFalse | Assert.cs:84:10:84:12 | M12 |
| Assert.cs:119:37:119:38 | [b (line 84): true] !... | Assert.cs:84:10:84:12 | M12 |
| Assert.cs:123:9:123:37 | [assertion failure, b (line 84): true] call to method IsTrue | Assert.cs:84:10:84:12 | M12 |
| Assert.cs:119:24:119:38 | [true, b (line 84): true] ... \|\| ... | Assert.cs:84:10:84:12 | M12 |
| Assert.cs:119:38:119:38 | [b (line 84): true] access to parameter b | Assert.cs:84:10:84:12 | M12 |
| Assert.cs:123:23:123:36 | [false, b (line 84): true] ... && ... | Assert.cs:84:10:84:12 | M12 |
| Assert.cs:123:36:123:36 | [b (line 84): true] access to parameter b | Assert.cs:84:10:84:12 | M12 |
| Assert.cs:127:9:127:39 | [assertion failure] call to method IsFalse | Assert.cs:84:10:84:12 | M12 |
| Assert.cs:127:37:127:38 | [b (line 84): true] !... | Assert.cs:84:10:84:12 | M12 |
| Assert.cs:127:24:127:38 | [true] ... \|\| ... | Assert.cs:84:10:84:12 | M12 |
| Assert.cs:127:38:127:38 | [b (line 84): true] access to parameter b | Assert.cs:84:10:84:12 | M12 |
| Assert.cs:131:18:131:32 | enter AssertTrueFalse | Assert.cs:131:18:131:32 | AssertTrueFalse |
| Assert.cs:138:10:138:12 | enter M13 | Assert.cs:138:10:138:12 | M13 |
| Assert.cs:138:10:138:12 | exit M13 | Assert.cs:138:10:138:12 | M13 |
@@ -4758,8 +4792,6 @@ blockEnclosing
| CompileTimeOperators.cs:15:10:15:15 | enter Typeof | CompileTimeOperators.cs:15:10:15:15 | Typeof |
| CompileTimeOperators.cs:20:12:20:17 | enter Nameof | CompileTimeOperators.cs:20:12:20:17 | Nameof |
| CompileTimeOperators.cs:28:10:28:10 | enter M | CompileTimeOperators.cs:28:10:28:10 | M |
| ConditionalAccess.cs:1:7:1:23 | enter ConditionalAccess | ConditionalAccess.cs:1:7:1:23 | ConditionalAccess |
| ConditionalAccess.cs:1:7:1:23 | exit ConditionalAccess (normal) | ConditionalAccess.cs:1:7:1:23 | ConditionalAccess |
| ConditionalAccess.cs:3:12:3:13 | enter M1 | ConditionalAccess.cs:3:12:3:13 | M1 |
| ConditionalAccess.cs:3:12:3:13 | exit M1 (normal) | ConditionalAccess.cs:3:12:3:13 | M1 |
| ConditionalAccess.cs:3:28:3:38 | call to method ToString | ConditionalAccess.cs:3:12:3:13 | M1 |
@@ -4769,10 +4801,13 @@ blockEnclosing
| ConditionalAccess.cs:5:28:5:34 | access to property Length | ConditionalAccess.cs:5:10:5:11 | M2 |
| ConditionalAccess.cs:7:10:7:11 | enter M3 | ConditionalAccess.cs:7:10:7:11 | M3 |
| ConditionalAccess.cs:7:10:7:11 | exit M3 (normal) | ConditionalAccess.cs:7:10:7:11 | M3 |
| ConditionalAccess.cs:7:39:7:46 | ... ?? ... | ConditionalAccess.cs:7:10:7:11 | M3 |
| ConditionalAccess.cs:7:39:7:46 | [non-null] ... ?? ... | ConditionalAccess.cs:7:10:7:11 | M3 |
| ConditionalAccess.cs:7:39:7:46 | [null] ... ?? ... | ConditionalAccess.cs:7:10:7:11 | M3 |
| ConditionalAccess.cs:7:45:7:46 | access to parameter s2 | ConditionalAccess.cs:7:10:7:11 | M3 |
| ConditionalAccess.cs:7:49:7:55 | access to property Length | ConditionalAccess.cs:7:10:7:11 | M3 |
| ConditionalAccess.cs:9:9:9:10 | enter M4 | ConditionalAccess.cs:9:9:9:10 | M4 |
| ConditionalAccess.cs:9:9:9:10 | exit M4 (normal) | ConditionalAccess.cs:9:9:9:10 | M4 |
| ConditionalAccess.cs:9:25:9:38 | ... ?? ... | ConditionalAccess.cs:9:9:9:10 | M4 |
| ConditionalAccess.cs:9:27:9:33 | access to property Length | ConditionalAccess.cs:9:9:9:10 | M4 |
| ConditionalAccess.cs:9:38:9:38 | 0 | ConditionalAccess.cs:9:9:9:10 | M4 |
| ConditionalAccess.cs:11:9:11:10 | enter M5 | ConditionalAccess.cs:11:9:11:10 | M5 |
@@ -4786,7 +4821,6 @@ blockEnclosing
| ConditionalAccess.cs:19:58:19:59 | access to parameter s2 | ConditionalAccess.cs:19:12:19:13 | M6 |
| ConditionalAccess.cs:21:10:21:11 | enter M7 | ConditionalAccess.cs:21:10:21:11 | M7 |
| ConditionalAccess.cs:30:10:30:12 | enter Out | ConditionalAccess.cs:30:10:30:12 | Out |
| ConditionalAccess.cs:30:10:30:12 | exit Out (normal) | ConditionalAccess.cs:30:10:30:12 | Out |
| ConditionalAccess.cs:32:10:32:11 | enter M8 | ConditionalAccess.cs:32:10:32:11 | M8 |
| ConditionalAccess.cs:32:10:32:11 | exit M8 (normal) | ConditionalAccess.cs:32:10:32:11 | M8 |
| ConditionalAccess.cs:35:14:35:24 | call to method Out | ConditionalAccess.cs:32:10:32:11 | M8 |
@@ -4861,8 +4895,8 @@ blockEnclosing
| Conditions.cs:116:25:116:25 | access to local variable i | Conditions.cs:113:10:113:11 | M9 |
| Conditions.cs:116:42:116:42 | access to local variable i | Conditions.cs:113:10:113:11 | M9 |
| Conditions.cs:117:9:123:9 | {...} | Conditions.cs:113:10:113:11 | M9 |
| Conditions.cs:120:17:120:23 | [last (line 118): false] ...; | Conditions.cs:113:10:113:11 | M9 |
| Conditions.cs:121:13:122:25 | [last (line 118): true] if (...) ... | Conditions.cs:113:10:113:11 | M9 |
| Conditions.cs:119:17:119:21 | [false, last (line 118): true] !... | Conditions.cs:113:10:113:11 | M9 |
| Conditions.cs:119:17:119:21 | [true, last (line 118): false] !... | Conditions.cs:113:10:113:11 | M9 |
| Conditions.cs:129:10:129:12 | enter M10 | Conditions.cs:129:10:129:12 | M10 |
| Conditions.cs:131:16:131:19 | [Field1 (line 129): false] true | Conditions.cs:129:10:129:12 | M10 |
| Conditions.cs:131:16:131:19 | [Field1 (line 129): true, Field2 (line 129): false] true | Conditions.cs:129:10:129:12 | M10 |
@@ -4903,7 +4937,7 @@ blockEnclosing
| ExitMethods.cs:111:29:111:29 | 1 | ExitMethods.cs:109:13:109:21 | ThrowExpr |
| ExitMethods.cs:111:69:111:75 | "input" | ExitMethods.cs:109:13:109:21 | ThrowExpr |
| ExitMethods.cs:114:16:114:34 | enter ExtensionMethodCall | ExitMethods.cs:114:16:114:34 | ExtensionMethodCall |
| ExitMethods.cs:116:9:116:39 | return ...; | ExitMethods.cs:114:16:114:34 | ExtensionMethodCall |
| ExitMethods.cs:116:16:116:38 | ... ? ... : ... | ExitMethods.cs:114:16:114:34 | ExtensionMethodCall |
| ExitMethods.cs:116:34:116:34 | 0 | ExitMethods.cs:114:16:114:34 | ExtensionMethodCall |
| ExitMethods.cs:116:38:116:38 | 1 | ExitMethods.cs:114:16:114:34 | ExtensionMethodCall |
| ExitMethods.cs:119:17:119:32 | enter FailingAssertion | ExitMethods.cs:119:17:119:32 | FailingAssertion |
@@ -4993,11 +5027,16 @@ blockEnclosing
| Finally.cs:113:9:118:9 | [finally: exception(Exception)] {...} | Finally.cs:103:10:103:11 | M5 |
| Finally.cs:113:9:118:9 | [finally: exception(NullReferenceException)] {...} | Finally.cs:103:10:103:11 | M5 |
| Finally.cs:113:9:118:9 | {...} | Finally.cs:103:10:103:11 | M5 |
| Finally.cs:115:17:115:41 | ...; | Finally.cs:103:10:103:11 | M5 |
| Finally.cs:115:17:115:41 | [finally: exception(Exception)] ...; | Finally.cs:103:10:103:11 | M5 |
| Finally.cs:115:17:115:41 | [finally: exception(NullReferenceException)] ...; | Finally.cs:103:10:103:11 | M5 |
| Finally.cs:115:17:115:41 | [finally: exception(OutOfMemoryException)] ...; | Finally.cs:103:10:103:11 | M5 |
| Finally.cs:115:17:115:41 | [finally: return] ...; | Finally.cs:103:10:103:11 | M5 |
| Finally.cs:114:17:114:36 | [false, finally: exception(Exception)] !... | Finally.cs:103:10:103:11 | M5 |
| Finally.cs:114:17:114:36 | [false, finally: exception(NullReferenceException)] !... | Finally.cs:103:10:103:11 | M5 |
| Finally.cs:114:17:114:36 | [false, finally: exception(OutOfMemoryException)] !... | Finally.cs:103:10:103:11 | M5 |
| Finally.cs:114:17:114:36 | [false, finally: return] !... | Finally.cs:103:10:103:11 | M5 |
| Finally.cs:114:17:114:36 | [false] !... | Finally.cs:103:10:103:11 | M5 |
| Finally.cs:114:17:114:36 | [true, finally: exception(Exception)] !... | Finally.cs:103:10:103:11 | M5 |
| Finally.cs:114:17:114:36 | [true, finally: exception(NullReferenceException)] !... | Finally.cs:103:10:103:11 | M5 |
| Finally.cs:114:17:114:36 | [true, finally: exception(OutOfMemoryException)] !... | Finally.cs:103:10:103:11 | M5 |
| Finally.cs:114:17:114:36 | [true, finally: return] !... | Finally.cs:103:10:103:11 | M5 |
| Finally.cs:114:17:114:36 | [true] !... | Finally.cs:103:10:103:11 | M5 |
| Finally.cs:116:13:117:37 | [finally: exception(Exception)] if (...) ... | Finally.cs:103:10:103:11 | M5 |
| Finally.cs:116:13:117:37 | [finally: exception(NullReferenceException)] if (...) ... | Finally.cs:103:10:103:11 | M5 |
| Finally.cs:116:13:117:37 | [finally: exception(OutOfMemoryException)] if (...) ... | Finally.cs:103:10:103:11 | M5 |
@@ -5114,6 +5153,7 @@ blockEnclosing
| Foreach.cs:18:10:18:11 | exit M3 (normal) | Foreach.cs:18:10:18:11 | M3 |
| Foreach.cs:20:9:21:11 | foreach (... ... in ...) ... | Foreach.cs:18:10:18:11 | M3 |
| Foreach.cs:20:22:20:22 | String x | Foreach.cs:18:10:18:11 | M3 |
| Foreach.cs:20:27:20:68 | ... ?? ... | Foreach.cs:18:10:18:11 | M3 |
| Foreach.cs:20:29:20:38 | call to method ToArray | Foreach.cs:18:10:18:11 | M3 |
| Foreach.cs:20:43:20:68 | call to method Empty | Foreach.cs:18:10:18:11 | M3 |
| Foreach.cs:24:10:24:11 | enter M4 | Foreach.cs:24:10:24:11 | M4 |
@@ -5165,8 +5205,8 @@ blockEnclosing
| LoopUnrolling.cs:62:13:63:37 | [b (line 55): false] if (...) ... | LoopUnrolling.cs:55:10:55:11 | M7 |
| LoopUnrolling.cs:67:10:67:11 | enter M8 | LoopUnrolling.cs:67:10:67:11 | M8 |
| LoopUnrolling.cs:67:10:67:11 | exit M8 (normal) | LoopUnrolling.cs:67:10:67:11 | M8 |
| LoopUnrolling.cs:70:13:70:19 | return ...; | LoopUnrolling.cs:67:10:67:11 | M8 |
| LoopUnrolling.cs:71:9:71:21 | ...; | LoopUnrolling.cs:67:10:67:11 | M8 |
| LoopUnrolling.cs:69:13:69:23 | [false] !... | LoopUnrolling.cs:67:10:67:11 | M8 |
| LoopUnrolling.cs:69:13:69:23 | [true] !... | LoopUnrolling.cs:67:10:67:11 | M8 |
| LoopUnrolling.cs:76:10:76:11 | enter M9 | LoopUnrolling.cs:76:10:76:11 | M9 |
| LoopUnrolling.cs:85:10:85:12 | enter M10 | LoopUnrolling.cs:85:10:85:12 | M10 |
| LoopUnrolling.cs:94:10:94:12 | enter M11 | LoopUnrolling.cs:94:10:94:12 | M11 |
@@ -5348,28 +5388,32 @@ blockEnclosing
| MultiImplementationB.cs:32:17:32:17 | 0 | MultiImplementationA.cs:36:9:36:10 | M1 |
| MultiImplementationB.cs:32:17:32:17 | 0 | MultiImplementationB.cs:32:9:32:10 | M1 |
| NullCoalescing.cs:3:9:3:10 | enter M1 | NullCoalescing.cs:3:9:3:10 | M1 |
| NullCoalescing.cs:3:9:3:10 | exit M1 (normal) | NullCoalescing.cs:3:9:3:10 | M1 |
| NullCoalescing.cs:3:23:3:28 | ... ?? ... | NullCoalescing.cs:3:9:3:10 | M1 |
| NullCoalescing.cs:3:28:3:28 | 0 | NullCoalescing.cs:3:9:3:10 | M1 |
| NullCoalescing.cs:5:9:5:10 | enter M2 | NullCoalescing.cs:5:9:5:10 | M2 |
| NullCoalescing.cs:5:9:5:10 | exit M2 (normal) | NullCoalescing.cs:5:9:5:10 | M2 |
| NullCoalescing.cs:5:24:5:43 | ... ? ... : ... | NullCoalescing.cs:5:9:5:10 | M2 |
| NullCoalescing.cs:5:25:5:34 | [false] ... ?? ... | NullCoalescing.cs:5:9:5:10 | M2 |
| NullCoalescing.cs:5:25:5:34 | [true] ... ?? ... | NullCoalescing.cs:5:9:5:10 | M2 |
| NullCoalescing.cs:5:30:5:34 | false | NullCoalescing.cs:5:9:5:10 | M2 |
| NullCoalescing.cs:5:39:5:39 | 0 | NullCoalescing.cs:5:9:5:10 | M2 |
| NullCoalescing.cs:5:43:5:43 | 1 | NullCoalescing.cs:5:9:5:10 | M2 |
| NullCoalescing.cs:7:12:7:13 | enter M3 | NullCoalescing.cs:7:12:7:13 | M3 |
| NullCoalescing.cs:7:12:7:13 | exit M3 (normal) | NullCoalescing.cs:7:12:7:13 | M3 |
| NullCoalescing.cs:7:40:7:53 | ... ?? ... | NullCoalescing.cs:7:12:7:13 | M3 |
| NullCoalescing.cs:7:46:7:47 | access to parameter s2 | NullCoalescing.cs:7:12:7:13 | M3 |
| NullCoalescing.cs:7:46:7:53 | ... ?? ... | NullCoalescing.cs:7:12:7:13 | M3 |
| NullCoalescing.cs:7:52:7:53 | "" | NullCoalescing.cs:7:12:7:13 | M3 |
| NullCoalescing.cs:9:12:9:13 | enter M4 | NullCoalescing.cs:9:12:9:13 | M4 |
| NullCoalescing.cs:9:12:9:13 | exit M4 (normal) | NullCoalescing.cs:9:12:9:13 | M4 |
| NullCoalescing.cs:9:36:9:58 | ... ?? ... | NullCoalescing.cs:9:12:9:13 | M4 |
| NullCoalescing.cs:9:37:9:45 | [non-null] ... ? ... : ... | NullCoalescing.cs:9:12:9:13 | M4 |
| NullCoalescing.cs:9:37:9:45 | [null] ... ? ... : ... | NullCoalescing.cs:9:12:9:13 | M4 |
| NullCoalescing.cs:9:41:9:41 | access to parameter s | NullCoalescing.cs:9:12:9:13 | M4 |
| NullCoalescing.cs:9:45:9:45 | access to parameter s | NullCoalescing.cs:9:12:9:13 | M4 |
| NullCoalescing.cs:9:51:9:58 | ... ?? ... | NullCoalescing.cs:9:12:9:13 | M4 |
| NullCoalescing.cs:11:9:11:10 | enter M5 | NullCoalescing.cs:11:9:11:10 | M5 |
| NullCoalescing.cs:11:9:11:10 | exit M5 (normal) | NullCoalescing.cs:11:9:11:10 | M5 |
| NullCoalescing.cs:11:51:11:58 | ... && ... | NullCoalescing.cs:11:9:11:10 | M5 |
| NullCoalescing.cs:11:43:11:68 | ... ? ... : ... | NullCoalescing.cs:11:9:11:10 | M5 |
| NullCoalescing.cs:11:44:11:59 | [false] ... ?? ... | NullCoalescing.cs:11:9:11:10 | M5 |
| NullCoalescing.cs:11:44:11:59 | [true] ... ?? ... | NullCoalescing.cs:11:9:11:10 | M5 |
| NullCoalescing.cs:11:51:11:52 | access to parameter b2 | NullCoalescing.cs:11:9:11:10 | M5 |
| NullCoalescing.cs:11:51:11:58 | [false] ... && ... | NullCoalescing.cs:11:9:11:10 | M5 |
| NullCoalescing.cs:11:51:11:58 | [true] ... && ... | NullCoalescing.cs:11:9:11:10 | M5 |
| NullCoalescing.cs:11:57:11:58 | access to parameter b3 | NullCoalescing.cs:11:9:11:10 | M5 |
| NullCoalescing.cs:11:64:11:64 | 0 | NullCoalescing.cs:11:9:11:10 | M5 |
| NullCoalescing.cs:11:68:11:68 | 1 | NullCoalescing.cs:11:9:11:10 | M5 |
| NullCoalescing.cs:13:10:13:11 | enter M6 | NullCoalescing.cs:13:10:13:11 | M6 |
| Patterns.cs:5:10:5:13 | enter Test | Patterns.cs:5:10:5:13 | Test |
| Patterns.cs:9:9:11:9 | {...} | Patterns.cs:5:10:5:13 | Test |
@@ -5417,9 +5461,10 @@ blockEnclosing
| Switch.cs:22:21:22:27 | return ...; | Switch.cs:10:10:10:11 | M2 |
| Switch.cs:23:27:23:27 | 0 | Switch.cs:10:10:10:11 | M2 |
| Switch.cs:24:13:24:56 | case ...: | Switch.cs:10:10:10:11 | M2 |
| Switch.cs:24:32:24:55 | ... && ... | Switch.cs:10:10:10:11 | M2 |
| Switch.cs:24:32:24:32 | access to local variable s | Switch.cs:10:10:10:11 | M2 |
| Switch.cs:24:32:24:55 | [false] ... && ... | Switch.cs:10:10:10:11 | M2 |
| Switch.cs:24:32:24:55 | [true] ... && ... | Switch.cs:10:10:10:11 | M2 |
| Switch.cs:24:48:24:48 | access to local variable s | Switch.cs:10:10:10:11 | M2 |
| Switch.cs:25:17:25:37 | ...; | Switch.cs:10:10:10:11 | M2 |
| Switch.cs:27:13:27:39 | case ...: | Switch.cs:10:10:10:11 | M2 |
| Switch.cs:27:32:27:38 | call to method Throw | Switch.cs:10:10:10:11 | M2 |
| Switch.cs:30:13:30:20 | default: | Switch.cs:10:10:10:11 | M2 |
@@ -5465,14 +5510,18 @@ blockEnclosing
| Switch.cs:120:17:120:17 | 1 | Switch.cs:113:9:113:11 | M10 |
| Switch.cs:123:10:123:12 | enter M11 | Switch.cs:123:10:123:12 | M11 |
| Switch.cs:123:10:123:12 | exit M11 (normal) | Switch.cs:123:10:123:12 | M11 |
| Switch.cs:125:13:125:48 | [false] ... switch { ... } | Switch.cs:123:10:123:12 | M11 |
| Switch.cs:125:24:125:34 | [false] ... => ... | Switch.cs:123:10:123:12 | M11 |
| Switch.cs:125:24:125:34 | [true] ... => ... | Switch.cs:123:10:123:12 | M11 |
| Switch.cs:125:34:125:34 | access to local variable b | Switch.cs:123:10:123:12 | M11 |
| Switch.cs:125:37:125:46 | ... => ... | Switch.cs:123:10:123:12 | M11 |
| Switch.cs:126:13:126:19 | return ...; | Switch.cs:123:10:123:12 | M11 |
| Switch.cs:125:37:125:37 | _ | Switch.cs:123:10:123:12 | M11 |
| Switch.cs:129:12:129:14 | enter M12 | Switch.cs:129:12:129:14 | M12 |
| Switch.cs:131:9:131:67 | return ...; | Switch.cs:129:12:129:14 | M12 |
| Switch.cs:131:17:131:53 | [null] ... switch { ... } | Switch.cs:129:12:129:14 | M12 |
| Switch.cs:131:28:131:40 | [non-null] ... => ... | Switch.cs:129:12:129:14 | M12 |
| Switch.cs:131:28:131:40 | [null] ... => ... | Switch.cs:129:12:129:14 | M12 |
| Switch.cs:131:40:131:40 | access to local variable s | Switch.cs:129:12:129:14 | M12 |
| Switch.cs:131:43:131:51 | ... => ... | Switch.cs:129:12:129:14 | M12 |
| Switch.cs:131:56:131:66 | call to method ToString | Switch.cs:129:12:129:14 | M12 |
| Switch.cs:131:43:131:43 | _ | Switch.cs:129:12:129:14 | M12 |
| Switch.cs:134:9:134:11 | enter M13 | Switch.cs:134:9:134:11 | M13 |
| Switch.cs:134:9:134:11 | exit M13 (normal) | Switch.cs:134:9:134:11 | M13 |
| Switch.cs:138:13:138:20 | default: | Switch.cs:134:9:134:11 | M13 |
@@ -5489,9 +5538,9 @@ blockEnclosing
| Switch.cs:154:10:154:12 | exit M15 | Switch.cs:154:10:154:12 | M15 |
| Switch.cs:154:10:154:12 | exit M15 (abnormal) | Switch.cs:154:10:154:12 | M15 |
| Switch.cs:154:10:154:12 | exit M15 (normal) | Switch.cs:154:10:154:12 | M15 |
| Switch.cs:156:13:156:54 | String s = ... | Switch.cs:154:10:154:12 | M15 |
| Switch.cs:156:17:156:54 | ... switch { ... } | Switch.cs:154:10:154:12 | M15 |
| Switch.cs:156:36:156:38 | "a" | Switch.cs:154:10:154:12 | M15 |
| Switch.cs:156:41:156:52 | ... => ... | Switch.cs:154:10:154:12 | M15 |
| Switch.cs:156:41:156:45 | false | Switch.cs:154:10:154:12 | M15 |
| Switch.cs:156:50:156:52 | "b" | Switch.cs:154:10:154:12 | M15 |
| Switch.cs:158:13:158:49 | ...; | Switch.cs:154:10:154:12 | M15 |
| Switch.cs:160:13:160:49 | ...; | Switch.cs:154:10:154:12 | M15 |
@@ -5501,7 +5550,7 @@ blockEnclosing
| VarDecls.cs:5:18:5:19 | enter M1 | VarDecls.cs:5:18:5:19 | M1 |
| VarDecls.cs:13:12:13:13 | enter M2 | VarDecls.cs:13:12:13:13 | M2 |
| VarDecls.cs:19:7:19:8 | enter M3 | VarDecls.cs:19:7:19:8 | M3 |
| VarDecls.cs:25:13:25:29 | return ...; | VarDecls.cs:19:7:19:8 | M3 |
| VarDecls.cs:25:20:25:28 | ... ? ... : ... | VarDecls.cs:19:7:19:8 | M3 |
| VarDecls.cs:25:24:25:24 | access to local variable x | VarDecls.cs:19:7:19:8 | M3 |
| VarDecls.cs:25:28:25:28 | access to local variable y | VarDecls.cs:19:7:19:8 | M3 |
| VarDecls.cs:28:41:28:47 | enter Dispose | VarDecls.cs:28:41:28:47 | Dispose |
@@ -5517,9 +5566,9 @@ blockEnclosing
| cflow.cs:24:25:24:25 | access to local variable i | cflow.cs:5:17:5:20 | Main |
| cflow.cs:24:34:24:34 | access to local variable i | cflow.cs:5:17:5:20 | Main |
| cflow.cs:25:9:34:9 | {...} | cflow.cs:5:17:5:20 | Main |
| cflow.cs:26:17:26:40 | [false] ... && ... | cflow.cs:5:17:5:20 | Main |
| cflow.cs:26:17:26:40 | [true] ... && ... | cflow.cs:5:17:5:20 | Main |
| cflow.cs:26:31:26:31 | access to local variable i | cflow.cs:5:17:5:20 | Main |
| cflow.cs:27:17:27:46 | ...; | cflow.cs:5:17:5:20 | Main |
| cflow.cs:28:18:33:37 | if (...) ... | cflow.cs:5:17:5:20 | Main |
| cflow.cs:29:17:29:42 | ...; | cflow.cs:5:17:5:20 | Main |
| cflow.cs:30:18:33:37 | if (...) ... | cflow.cs:5:17:5:20 | Main |
| cflow.cs:31:17:31:42 | ...; | cflow.cs:5:17:5:20 | Main |
@@ -5537,8 +5586,8 @@ blockEnclosing
| cflow.cs:56:13:56:20 | default: | cflow.cs:37:17:37:22 | Switch |
| cflow.cs:60:9:66:9 | switch (...) {...} | cflow.cs:37:17:37:22 | Switch |
| cflow.cs:63:17:64:55 | if (...) ... | cflow.cs:37:17:37:22 | Switch |
| cflow.cs:64:27:64:54 | object creation of type NullReferenceException | cflow.cs:37:17:37:22 | Switch |
| cflow.cs:65:17:65:22 | break; | cflow.cs:37:17:37:22 | Switch |
| cflow.cs:63:21:63:34 | [false] !... | cflow.cs:37:17:37:22 | Switch |
| cflow.cs:63:21:63:34 | [true] !... | cflow.cs:37:17:37:22 | Switch |
| cflow.cs:67:16:67:16 | access to parameter a | cflow.cs:37:17:37:22 | Switch |
| cflow.cs:70:18:70:18 | enter M | cflow.cs:70:18:70:18 | M |
| cflow.cs:70:18:70:18 | exit M (normal) | cflow.cs:70:18:70:18 | M |
@@ -5548,8 +5597,9 @@ blockEnclosing
| cflow.cs:79:9:81:9 | {...} | cflow.cs:70:18:70:18 | M |
| cflow.cs:84:18:84:19 | enter M2 | cflow.cs:84:18:84:19 | M2 |
| cflow.cs:84:18:84:19 | exit M2 (normal) | cflow.cs:84:18:84:19 | M2 |
| cflow.cs:86:13:86:37 | [false] ... && ... | cflow.cs:84:18:84:19 | M2 |
| cflow.cs:86:13:86:37 | [true] ... && ... | cflow.cs:84:18:84:19 | M2 |
| cflow.cs:86:26:86:26 | access to parameter s | cflow.cs:84:18:84:19 | M2 |
| cflow.cs:87:13:87:33 | ...; | cflow.cs:84:18:84:19 | M2 |
| cflow.cs:90:18:90:19 | enter M3 | cflow.cs:90:18:90:19 | M3 |
| cflow.cs:90:18:90:19 | exit M3 | cflow.cs:90:18:90:19 | M3 |
| cflow.cs:90:18:90:19 | exit M3 (normal) | cflow.cs:90:18:90:19 | M3 |
@@ -5566,7 +5616,7 @@ blockEnclosing
| cflow.cs:116:9:116:29 | ...; | cflow.cs:106:18:106:19 | M4 |
| cflow.cs:119:20:119:21 | enter M5 | cflow.cs:119:20:119:21 | M5 |
| cflow.cs:127:19:127:21 | enter get_Prop | cflow.cs:127:19:127:21 | get_Prop |
| cflow.cs:127:25:127:58 | return ...; | cflow.cs:127:19:127:21 | get_Prop |
| cflow.cs:127:32:127:57 | ... ? ... : ... | cflow.cs:127:19:127:21 | get_Prop |
| cflow.cs:127:48:127:49 | "" | cflow.cs:127:19:127:21 | get_Prop |
| cflow.cs:127:53:127:57 | this access | cflow.cs:127:19:127:21 | get_Prop |
| cflow.cs:127:62:127:64 | enter set_Prop | cflow.cs:127:62:127:64 | set_Prop |
@@ -5597,18 +5647,20 @@ blockEnclosing
| cflow.cs:185:10:185:18 | enter LogicalOr | cflow.cs:185:10:185:18 | LogicalOr |
| cflow.cs:193:10:193:17 | enter Booleans | cflow.cs:193:10:193:17 | Booleans |
| cflow.cs:193:10:193:17 | exit Booleans | cflow.cs:193:10:193:17 | Booleans |
| cflow.cs:193:10:193:17 | exit Booleans (normal) | cflow.cs:193:10:193:17 | Booleans |
| cflow.cs:195:13:195:56 | Boolean b = ... | cflow.cs:193:10:193:17 | Booleans |
| cflow.cs:195:37:195:56 | !... | cflow.cs:193:10:193:17 | Booleans |
| cflow.cs:195:17:195:56 | ... && ... | cflow.cs:193:10:193:17 | Booleans |
| cflow.cs:195:39:195:43 | this access | cflow.cs:193:10:193:17 | Booleans |
| cflow.cs:197:35:197:39 | false | cflow.cs:193:10:193:17 | Booleans |
| cflow.cs:197:43:197:46 | true | cflow.cs:193:10:193:17 | Booleans |
| cflow.cs:198:13:198:48 | ... = ... | cflow.cs:193:10:193:17 | Booleans |
| cflow.cs:198:17:198:48 | ... ? ... : ... | cflow.cs:193:10:193:17 | Booleans |
| cflow.cs:198:37:198:41 | false | cflow.cs:193:10:193:17 | Booleans |
| cflow.cs:198:45:198:48 | true | cflow.cs:193:10:193:17 | Booleans |
| cflow.cs:200:9:205:9 | if (...) ... | cflow.cs:193:10:193:17 | Booleans |
| cflow.cs:200:37:200:62 | !... | cflow.cs:193:10:193:17 | Booleans |
| cflow.cs:200:13:200:32 | [false] !... | cflow.cs:193:10:193:17 | Booleans |
| cflow.cs:200:13:200:32 | [true] !... | cflow.cs:193:10:193:17 | Booleans |
| cflow.cs:200:13:200:62 | [true] ... \|\| ... | cflow.cs:193:10:193:17 | Booleans |
| cflow.cs:200:40:200:61 | [false] ... && ... | cflow.cs:193:10:193:17 | Booleans |
| cflow.cs:200:40:200:61 | [true] ... && ... | cflow.cs:193:10:193:17 | Booleans |
| cflow.cs:200:61:200:61 | access to local variable b | cflow.cs:193:10:193:17 | Booleans |
| cflow.cs:201:9:205:9 | {...} | cflow.cs:193:10:193:17 | Booleans |
| cflow.cs:208:10:208:11 | enter Do | cflow.cs:208:10:208:11 | Do |
| cflow.cs:208:10:208:11 | exit Do (normal) | cflow.cs:208:10:208:11 | Do |
| cflow.cs:211:9:221:9 | {...} | cflow.cs:208:10:208:11 | Do |
@@ -5626,7 +5678,8 @@ blockEnclosing
| cflow.cs:240:10:240:13 | enter Goto | cflow.cs:240:10:240:13 | Goto |
| cflow.cs:240:10:240:13 | exit Goto (normal) | cflow.cs:240:10:240:13 | Goto |
| cflow.cs:242:9:242:13 | Label: | cflow.cs:240:10:240:13 | Goto |
| cflow.cs:242:43:242:45 | {...} | cflow.cs:240:10:240:13 | Goto |
| cflow.cs:242:21:242:40 | [false] !... | cflow.cs:240:10:240:13 | Goto |
| cflow.cs:242:21:242:40 | [true] !... | cflow.cs:240:10:240:13 | Goto |
| cflow.cs:244:9:244:41 | if (...) ... | cflow.cs:240:10:240:13 | Goto |
| cflow.cs:244:31:244:41 | goto ...; | cflow.cs:240:10:240:13 | Goto |
| cflow.cs:246:9:258:9 | switch (...) {...} | cflow.cs:240:10:240:13 | Goto |
@@ -5646,5 +5699,6 @@ blockEnclosing
| cflow.cs:291:12:291:12 | enter M | cflow.cs:291:12:291:12 | M |
| cflow.cs:296:5:296:25 | enter NegationInConstructor | cflow.cs:296:5:296:25 | NegationInConstructor |
| cflow.cs:298:10:298:10 | enter M | cflow.cs:298:10:298:10 | M |
| cflow.cs:300:56:300:56 | access to parameter s | cflow.cs:298:10:298:10 | M |
| cflow.cs:300:70:300:71 | "" | cflow.cs:298:10:298:10 | M |
| cflow.cs:300:44:300:51 | [false] !... | cflow.cs:298:10:298:10 | M |
| cflow.cs:300:44:300:51 | [true] !... | cflow.cs:298:10:298:10 | M |
| cflow.cs:300:44:300:64 | ... && ... | cflow.cs:298:10:298:10 | M |

View File

@@ -310,9 +310,9 @@
| ArrayCreation.cs:9:48:9:48 | 3 | ArrayCreation.cs:9:48:9:48 | 3 |
| Assert.cs:8:5:12:5 | {...} | Assert.cs:8:5:12:5 | {...} |
| Assert.cs:9:9:9:33 | ... ...; | Assert.cs:9:9:9:33 | ... ...; |
| Assert.cs:9:16:9:32 | String s = ... | Assert.cs:9:20:9:32 | ... ? ... : ... |
| Assert.cs:9:16:9:32 | String s = ... | Assert.cs:9:20:9:20 | access to parameter b |
| Assert.cs:9:20:9:20 | access to parameter b | Assert.cs:9:20:9:20 | access to parameter b |
| Assert.cs:9:20:9:32 | ... ? ... : ... | Assert.cs:9:20:9:32 | ... ? ... : ... |
| Assert.cs:9:20:9:32 | ... ? ... : ... | Assert.cs:9:20:9:20 | access to parameter b |
| Assert.cs:9:24:9:27 | null | Assert.cs:9:24:9:27 | null |
| Assert.cs:9:31:9:32 | "" | Assert.cs:9:31:9:32 | "" |
| Assert.cs:10:9:10:31 | call to method Assert | Assert.cs:10:22:10:22 | access to local variable s |
@@ -326,9 +326,9 @@
| Assert.cs:11:27:11:34 | access to property Length | Assert.cs:11:27:11:27 | access to local variable s |
| Assert.cs:15:5:19:5 | {...} | Assert.cs:15:5:19:5 | {...} |
| Assert.cs:16:9:16:33 | ... ...; | Assert.cs:16:9:16:33 | ... ...; |
| Assert.cs:16:16:16:32 | String s = ... | Assert.cs:16:20:16:32 | ... ? ... : ... |
| Assert.cs:16:16:16:32 | String s = ... | Assert.cs:16:20:16:20 | access to parameter b |
| Assert.cs:16:20:16:20 | access to parameter b | Assert.cs:16:20:16:20 | access to parameter b |
| Assert.cs:16:20:16:32 | ... ? ... : ... | Assert.cs:16:20:16:32 | ... ? ... : ... |
| Assert.cs:16:20:16:32 | ... ? ... : ... | Assert.cs:16:20:16:20 | access to parameter b |
| Assert.cs:16:24:16:27 | null | Assert.cs:16:24:16:27 | null |
| Assert.cs:16:31:16:32 | "" | Assert.cs:16:31:16:32 | "" |
| Assert.cs:17:9:17:24 | call to method IsNull | Assert.cs:17:23:17:23 | access to local variable s |
@@ -340,9 +340,9 @@
| Assert.cs:18:27:18:34 | access to property Length | Assert.cs:18:27:18:27 | access to local variable s |
| Assert.cs:22:5:26:5 | {...} | Assert.cs:22:5:26:5 | {...} |
| Assert.cs:23:9:23:33 | ... ...; | Assert.cs:23:9:23:33 | ... ...; |
| Assert.cs:23:16:23:32 | String s = ... | Assert.cs:23:20:23:32 | ... ? ... : ... |
| Assert.cs:23:16:23:32 | String s = ... | Assert.cs:23:20:23:20 | access to parameter b |
| Assert.cs:23:20:23:20 | access to parameter b | Assert.cs:23:20:23:20 | access to parameter b |
| Assert.cs:23:20:23:32 | ... ? ... : ... | Assert.cs:23:20:23:32 | ... ? ... : ... |
| Assert.cs:23:20:23:32 | ... ? ... : ... | Assert.cs:23:20:23:20 | access to parameter b |
| Assert.cs:23:24:23:27 | null | Assert.cs:23:24:23:27 | null |
| Assert.cs:23:31:23:32 | "" | Assert.cs:23:31:23:32 | "" |
| Assert.cs:24:9:24:27 | call to method IsNotNull | Assert.cs:24:26:24:26 | access to local variable s |
@@ -354,9 +354,9 @@
| Assert.cs:25:27:25:34 | access to property Length | Assert.cs:25:27:25:27 | access to local variable s |
| Assert.cs:29:5:33:5 | {...} | Assert.cs:29:5:33:5 | {...} |
| Assert.cs:30:9:30:33 | ... ...; | Assert.cs:30:9:30:33 | ... ...; |
| Assert.cs:30:16:30:32 | String s = ... | Assert.cs:30:20:30:32 | ... ? ... : ... |
| Assert.cs:30:16:30:32 | String s = ... | Assert.cs:30:20:30:20 | access to parameter b |
| Assert.cs:30:20:30:20 | access to parameter b | Assert.cs:30:20:30:20 | access to parameter b |
| Assert.cs:30:20:30:32 | ... ? ... : ... | Assert.cs:30:20:30:32 | ... ? ... : ... |
| Assert.cs:30:20:30:32 | ... ? ... : ... | Assert.cs:30:20:30:20 | access to parameter b |
| Assert.cs:30:24:30:27 | null | Assert.cs:30:24:30:27 | null |
| Assert.cs:30:31:30:32 | "" | Assert.cs:30:31:30:32 | "" |
| Assert.cs:31:9:31:32 | call to method IsTrue | Assert.cs:31:23:31:23 | access to local variable s |
@@ -370,9 +370,9 @@
| Assert.cs:32:27:32:34 | access to property Length | Assert.cs:32:27:32:27 | access to local variable s |
| Assert.cs:36:5:40:5 | {...} | Assert.cs:36:5:40:5 | {...} |
| Assert.cs:37:9:37:33 | ... ...; | Assert.cs:37:9:37:33 | ... ...; |
| Assert.cs:37:16:37:32 | String s = ... | Assert.cs:37:20:37:32 | ... ? ... : ... |
| Assert.cs:37:16:37:32 | String s = ... | Assert.cs:37:20:37:20 | access to parameter b |
| Assert.cs:37:20:37:20 | access to parameter b | Assert.cs:37:20:37:20 | access to parameter b |
| Assert.cs:37:20:37:32 | ... ? ... : ... | Assert.cs:37:20:37:32 | ... ? ... : ... |
| Assert.cs:37:20:37:32 | ... ? ... : ... | Assert.cs:37:20:37:20 | access to parameter b |
| Assert.cs:37:24:37:27 | null | Assert.cs:37:24:37:27 | null |
| Assert.cs:37:31:37:32 | "" | Assert.cs:37:31:37:32 | "" |
| Assert.cs:38:9:38:32 | call to method IsTrue | Assert.cs:38:23:38:23 | access to local variable s |
@@ -386,9 +386,9 @@
| Assert.cs:39:27:39:34 | access to property Length | Assert.cs:39:27:39:27 | access to local variable s |
| Assert.cs:43:5:47:5 | {...} | Assert.cs:43:5:47:5 | {...} |
| Assert.cs:44:9:44:33 | ... ...; | Assert.cs:44:9:44:33 | ... ...; |
| Assert.cs:44:16:44:32 | String s = ... | Assert.cs:44:20:44:32 | ... ? ... : ... |
| Assert.cs:44:16:44:32 | String s = ... | Assert.cs:44:20:44:20 | access to parameter b |
| Assert.cs:44:20:44:20 | access to parameter b | Assert.cs:44:20:44:20 | access to parameter b |
| Assert.cs:44:20:44:32 | ... ? ... : ... | Assert.cs:44:20:44:32 | ... ? ... : ... |
| Assert.cs:44:20:44:32 | ... ? ... : ... | Assert.cs:44:20:44:20 | access to parameter b |
| Assert.cs:44:24:44:27 | null | Assert.cs:44:24:44:27 | null |
| Assert.cs:44:31:44:32 | "" | Assert.cs:44:31:44:32 | "" |
| Assert.cs:45:9:45:33 | call to method IsFalse | Assert.cs:45:24:45:24 | access to local variable s |
@@ -402,9 +402,9 @@
| Assert.cs:46:27:46:34 | access to property Length | Assert.cs:46:27:46:27 | access to local variable s |
| Assert.cs:50:5:54:5 | {...} | Assert.cs:50:5:54:5 | {...} |
| Assert.cs:51:9:51:33 | ... ...; | Assert.cs:51:9:51:33 | ... ...; |
| Assert.cs:51:16:51:32 | String s = ... | Assert.cs:51:20:51:32 | ... ? ... : ... |
| Assert.cs:51:16:51:32 | String s = ... | Assert.cs:51:20:51:20 | access to parameter b |
| Assert.cs:51:20:51:20 | access to parameter b | Assert.cs:51:20:51:20 | access to parameter b |
| Assert.cs:51:20:51:32 | ... ? ... : ... | Assert.cs:51:20:51:32 | ... ? ... : ... |
| Assert.cs:51:20:51:32 | ... ? ... : ... | Assert.cs:51:20:51:20 | access to parameter b |
| Assert.cs:51:24:51:27 | null | Assert.cs:51:24:51:27 | null |
| Assert.cs:51:31:51:32 | "" | Assert.cs:51:31:51:32 | "" |
| Assert.cs:52:9:52:33 | call to method IsFalse | Assert.cs:52:24:52:24 | access to local variable s |
@@ -418,16 +418,16 @@
| Assert.cs:53:27:53:34 | access to property Length | Assert.cs:53:27:53:27 | access to local variable s |
| Assert.cs:57:5:61:5 | {...} | Assert.cs:57:5:61:5 | {...} |
| Assert.cs:58:9:58:33 | ... ...; | Assert.cs:58:9:58:33 | ... ...; |
| Assert.cs:58:16:58:32 | String s = ... | Assert.cs:58:20:58:32 | ... ? ... : ... |
| Assert.cs:58:16:58:32 | String s = ... | Assert.cs:58:20:58:20 | access to parameter b |
| Assert.cs:58:20:58:20 | access to parameter b | Assert.cs:58:20:58:20 | access to parameter b |
| Assert.cs:58:20:58:32 | ... ? ... : ... | Assert.cs:58:20:58:32 | ... ? ... : ... |
| Assert.cs:58:20:58:32 | ... ? ... : ... | Assert.cs:58:20:58:20 | access to parameter b |
| Assert.cs:58:24:58:27 | null | Assert.cs:58:24:58:27 | null |
| Assert.cs:58:31:58:32 | "" | Assert.cs:58:31:58:32 | "" |
| Assert.cs:59:9:59:37 | call to method IsTrue | Assert.cs:59:23:59:36 | ... && ... |
| Assert.cs:59:9:59:37 | call to method IsTrue | Assert.cs:59:23:59:23 | access to local variable s |
| Assert.cs:59:9:59:38 | ...; | Assert.cs:59:9:59:38 | ...; |
| Assert.cs:59:23:59:23 | access to local variable s | Assert.cs:59:23:59:23 | access to local variable s |
| Assert.cs:59:23:59:31 | ... != ... | Assert.cs:59:23:59:23 | access to local variable s |
| Assert.cs:59:23:59:36 | ... && ... | Assert.cs:59:23:59:36 | ... && ... |
| Assert.cs:59:23:59:36 | ... && ... | Assert.cs:59:23:59:23 | access to local variable s |
| Assert.cs:59:28:59:31 | null | Assert.cs:59:28:59:31 | null |
| Assert.cs:59:36:59:36 | access to parameter b | Assert.cs:59:36:59:36 | access to parameter b |
| Assert.cs:60:9:60:35 | call to method WriteLine | Assert.cs:60:27:60:27 | access to local variable s |
@@ -436,16 +436,16 @@
| Assert.cs:60:27:60:34 | access to property Length | Assert.cs:60:27:60:27 | access to local variable s |
| Assert.cs:64:5:68:5 | {...} | Assert.cs:64:5:68:5 | {...} |
| Assert.cs:65:9:65:33 | ... ...; | Assert.cs:65:9:65:33 | ... ...; |
| Assert.cs:65:16:65:32 | String s = ... | Assert.cs:65:20:65:32 | ... ? ... : ... |
| Assert.cs:65:16:65:32 | String s = ... | Assert.cs:65:20:65:20 | access to parameter b |
| Assert.cs:65:20:65:20 | access to parameter b | Assert.cs:65:20:65:20 | access to parameter b |
| Assert.cs:65:20:65:32 | ... ? ... : ... | Assert.cs:65:20:65:32 | ... ? ... : ... |
| Assert.cs:65:20:65:32 | ... ? ... : ... | Assert.cs:65:20:65:20 | access to parameter b |
| Assert.cs:65:24:65:27 | null | Assert.cs:65:24:65:27 | null |
| Assert.cs:65:31:65:32 | "" | Assert.cs:65:31:65:32 | "" |
| Assert.cs:66:9:66:38 | call to method IsFalse | Assert.cs:66:24:66:37 | ... \|\| ... |
| Assert.cs:66:9:66:38 | call to method IsFalse | Assert.cs:66:24:66:24 | access to local variable s |
| Assert.cs:66:9:66:39 | ...; | Assert.cs:66:9:66:39 | ...; |
| Assert.cs:66:24:66:24 | access to local variable s | Assert.cs:66:24:66:24 | access to local variable s |
| Assert.cs:66:24:66:32 | ... == ... | Assert.cs:66:24:66:24 | access to local variable s |
| Assert.cs:66:24:66:37 | ... \|\| ... | Assert.cs:66:24:66:37 | ... \|\| ... |
| Assert.cs:66:24:66:37 | ... \|\| ... | Assert.cs:66:24:66:24 | access to local variable s |
| Assert.cs:66:29:66:32 | null | Assert.cs:66:29:66:32 | null |
| Assert.cs:66:37:66:37 | access to parameter b | Assert.cs:66:37:66:37 | access to parameter b |
| Assert.cs:67:9:67:35 | call to method WriteLine | Assert.cs:67:27:67:27 | access to local variable s |
@@ -454,16 +454,16 @@
| Assert.cs:67:27:67:34 | access to property Length | Assert.cs:67:27:67:27 | access to local variable s |
| Assert.cs:71:5:75:5 | {...} | Assert.cs:71:5:75:5 | {...} |
| Assert.cs:72:9:72:33 | ... ...; | Assert.cs:72:9:72:33 | ... ...; |
| Assert.cs:72:16:72:32 | String s = ... | Assert.cs:72:20:72:32 | ... ? ... : ... |
| Assert.cs:72:16:72:32 | String s = ... | Assert.cs:72:20:72:20 | access to parameter b |
| Assert.cs:72:20:72:20 | access to parameter b | Assert.cs:72:20:72:20 | access to parameter b |
| Assert.cs:72:20:72:32 | ... ? ... : ... | Assert.cs:72:20:72:32 | ... ? ... : ... |
| Assert.cs:72:20:72:32 | ... ? ... : ... | Assert.cs:72:20:72:20 | access to parameter b |
| Assert.cs:72:24:72:27 | null | Assert.cs:72:24:72:27 | null |
| Assert.cs:72:31:72:32 | "" | Assert.cs:72:31:72:32 | "" |
| Assert.cs:73:9:73:37 | call to method IsTrue | Assert.cs:73:23:73:36 | ... && ... |
| Assert.cs:73:9:73:37 | call to method IsTrue | Assert.cs:73:23:73:23 | access to local variable s |
| Assert.cs:73:9:73:38 | ...; | Assert.cs:73:9:73:38 | ...; |
| Assert.cs:73:23:73:23 | access to local variable s | Assert.cs:73:23:73:23 | access to local variable s |
| Assert.cs:73:23:73:31 | ... == ... | Assert.cs:73:23:73:23 | access to local variable s |
| Assert.cs:73:23:73:36 | ... && ... | Assert.cs:73:23:73:36 | ... && ... |
| Assert.cs:73:23:73:36 | ... && ... | Assert.cs:73:23:73:23 | access to local variable s |
| Assert.cs:73:28:73:31 | null | Assert.cs:73:28:73:31 | null |
| Assert.cs:73:36:73:36 | access to parameter b | Assert.cs:73:36:73:36 | access to parameter b |
| Assert.cs:74:9:74:35 | call to method WriteLine | Assert.cs:74:27:74:27 | access to local variable s |
@@ -472,16 +472,16 @@
| Assert.cs:74:27:74:34 | access to property Length | Assert.cs:74:27:74:27 | access to local variable s |
| Assert.cs:78:5:82:5 | {...} | Assert.cs:78:5:82:5 | {...} |
| Assert.cs:79:9:79:33 | ... ...; | Assert.cs:79:9:79:33 | ... ...; |
| Assert.cs:79:16:79:32 | String s = ... | Assert.cs:79:20:79:32 | ... ? ... : ... |
| Assert.cs:79:16:79:32 | String s = ... | Assert.cs:79:20:79:20 | access to parameter b |
| Assert.cs:79:20:79:20 | access to parameter b | Assert.cs:79:20:79:20 | access to parameter b |
| Assert.cs:79:20:79:32 | ... ? ... : ... | Assert.cs:79:20:79:32 | ... ? ... : ... |
| Assert.cs:79:20:79:32 | ... ? ... : ... | Assert.cs:79:20:79:20 | access to parameter b |
| Assert.cs:79:24:79:27 | null | Assert.cs:79:24:79:27 | null |
| Assert.cs:79:31:79:32 | "" | Assert.cs:79:31:79:32 | "" |
| Assert.cs:80:9:80:38 | call to method IsFalse | Assert.cs:80:24:80:37 | ... \|\| ... |
| Assert.cs:80:9:80:38 | call to method IsFalse | Assert.cs:80:24:80:24 | access to local variable s |
| Assert.cs:80:9:80:39 | ...; | Assert.cs:80:9:80:39 | ...; |
| Assert.cs:80:24:80:24 | access to local variable s | Assert.cs:80:24:80:24 | access to local variable s |
| Assert.cs:80:24:80:32 | ... != ... | Assert.cs:80:24:80:24 | access to local variable s |
| Assert.cs:80:24:80:37 | ... \|\| ... | Assert.cs:80:24:80:37 | ... \|\| ... |
| Assert.cs:80:24:80:37 | ... \|\| ... | Assert.cs:80:24:80:24 | access to local variable s |
| Assert.cs:80:29:80:32 | null | Assert.cs:80:29:80:32 | null |
| Assert.cs:80:37:80:37 | access to parameter b | Assert.cs:80:37:80:37 | access to parameter b |
| Assert.cs:81:9:81:35 | call to method WriteLine | Assert.cs:81:27:81:27 | access to local variable s |
@@ -490,9 +490,9 @@
| Assert.cs:81:27:81:34 | access to property Length | Assert.cs:81:27:81:27 | access to local variable s |
| Assert.cs:85:5:129:5 | {...} | Assert.cs:85:5:129:5 | {...} |
| Assert.cs:86:9:86:33 | ... ...; | Assert.cs:86:9:86:33 | ... ...; |
| Assert.cs:86:16:86:32 | String s = ... | Assert.cs:86:20:86:32 | ... ? ... : ... |
| Assert.cs:86:16:86:32 | String s = ... | Assert.cs:86:20:86:20 | access to parameter b |
| Assert.cs:86:20:86:20 | access to parameter b | Assert.cs:86:20:86:20 | access to parameter b |
| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:86:20:86:32 | ... ? ... : ... |
| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:86:20:86:20 | access to parameter b |
| Assert.cs:86:24:86:27 | null | Assert.cs:86:24:86:27 | null |
| Assert.cs:86:31:86:32 | "" | Assert.cs:86:31:86:32 | "" |
| Assert.cs:87:9:87:31 | call to method Assert | Assert.cs:87:22:87:22 | access to local variable s |
@@ -504,10 +504,10 @@
| Assert.cs:88:9:88:36 | ...; | Assert.cs:88:9:88:36 | ...; |
| Assert.cs:88:27:88:27 | access to local variable s | Assert.cs:88:27:88:27 | access to local variable s |
| Assert.cs:88:27:88:34 | access to property Length | Assert.cs:88:27:88:27 | access to local variable s |
| Assert.cs:90:9:90:25 | ... = ... | Assert.cs:90:13:90:25 | ... ? ... : ... |
| Assert.cs:90:9:90:25 | ... = ... | Assert.cs:90:13:90:13 | access to parameter b |
| Assert.cs:90:9:90:26 | ...; | Assert.cs:90:9:90:26 | ...; |
| Assert.cs:90:13:90:13 | access to parameter b | Assert.cs:90:13:90:13 | access to parameter b |
| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:90:13:90:25 | ... ? ... : ... |
| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:90:13:90:13 | access to parameter b |
| Assert.cs:90:17:90:20 | null | Assert.cs:90:17:90:20 | null |
| Assert.cs:90:24:90:25 | "" | Assert.cs:90:24:90:25 | "" |
| Assert.cs:91:9:91:24 | call to method IsNull | Assert.cs:91:23:91:23 | access to local variable s |
@@ -517,10 +517,10 @@
| Assert.cs:92:9:92:36 | ...; | Assert.cs:92:9:92:36 | ...; |
| Assert.cs:92:27:92:27 | access to local variable s | Assert.cs:92:27:92:27 | access to local variable s |
| Assert.cs:92:27:92:34 | access to property Length | Assert.cs:92:27:92:27 | access to local variable s |
| Assert.cs:94:9:94:25 | ... = ... | Assert.cs:94:13:94:25 | ... ? ... : ... |
| Assert.cs:94:9:94:25 | ... = ... | Assert.cs:94:13:94:13 | access to parameter b |
| Assert.cs:94:9:94:26 | ...; | Assert.cs:94:9:94:26 | ...; |
| Assert.cs:94:13:94:13 | access to parameter b | Assert.cs:94:13:94:13 | access to parameter b |
| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:94:13:94:25 | ... ? ... : ... |
| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:94:13:94:13 | access to parameter b |
| Assert.cs:94:17:94:20 | null | Assert.cs:94:17:94:20 | null |
| Assert.cs:94:24:94:25 | "" | Assert.cs:94:24:94:25 | "" |
| Assert.cs:95:9:95:27 | call to method IsNotNull | Assert.cs:95:26:95:26 | access to local variable s |
@@ -530,10 +530,10 @@
| Assert.cs:96:9:96:36 | ...; | Assert.cs:96:9:96:36 | ...; |
| Assert.cs:96:27:96:27 | access to local variable s | Assert.cs:96:27:96:27 | access to local variable s |
| Assert.cs:96:27:96:34 | access to property Length | Assert.cs:96:27:96:27 | access to local variable s |
| Assert.cs:98:9:98:25 | ... = ... | Assert.cs:98:13:98:25 | ... ? ... : ... |
| Assert.cs:98:9:98:25 | ... = ... | Assert.cs:98:13:98:13 | access to parameter b |
| Assert.cs:98:9:98:26 | ...; | Assert.cs:98:9:98:26 | ...; |
| Assert.cs:98:13:98:13 | access to parameter b | Assert.cs:98:13:98:13 | access to parameter b |
| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:98:13:98:25 | ... ? ... : ... |
| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:98:13:98:13 | access to parameter b |
| Assert.cs:98:17:98:20 | null | Assert.cs:98:17:98:20 | null |
| Assert.cs:98:24:98:25 | "" | Assert.cs:98:24:98:25 | "" |
| Assert.cs:99:9:99:32 | call to method IsTrue | Assert.cs:99:23:99:23 | access to local variable s |
@@ -545,10 +545,10 @@
| Assert.cs:100:9:100:36 | ...; | Assert.cs:100:9:100:36 | ...; |
| Assert.cs:100:27:100:27 | access to local variable s | Assert.cs:100:27:100:27 | access to local variable s |
| Assert.cs:100:27:100:34 | access to property Length | Assert.cs:100:27:100:27 | access to local variable s |
| Assert.cs:102:9:102:25 | ... = ... | Assert.cs:102:13:102:25 | ... ? ... : ... |
| Assert.cs:102:9:102:25 | ... = ... | Assert.cs:102:13:102:13 | access to parameter b |
| Assert.cs:102:9:102:26 | ...; | Assert.cs:102:9:102:26 | ...; |
| Assert.cs:102:13:102:13 | access to parameter b | Assert.cs:102:13:102:13 | access to parameter b |
| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:102:13:102:25 | ... ? ... : ... |
| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:102:13:102:13 | access to parameter b |
| Assert.cs:102:17:102:20 | null | Assert.cs:102:17:102:20 | null |
| Assert.cs:102:24:102:25 | "" | Assert.cs:102:24:102:25 | "" |
| Assert.cs:103:9:103:32 | call to method IsTrue | Assert.cs:103:23:103:23 | access to local variable s |
@@ -560,10 +560,10 @@
| Assert.cs:104:9:104:36 | ...; | Assert.cs:104:9:104:36 | ...; |
| Assert.cs:104:27:104:27 | access to local variable s | Assert.cs:104:27:104:27 | access to local variable s |
| Assert.cs:104:27:104:34 | access to property Length | Assert.cs:104:27:104:27 | access to local variable s |
| Assert.cs:106:9:106:25 | ... = ... | Assert.cs:106:13:106:25 | ... ? ... : ... |
| Assert.cs:106:9:106:25 | ... = ... | Assert.cs:106:13:106:13 | access to parameter b |
| Assert.cs:106:9:106:26 | ...; | Assert.cs:106:9:106:26 | ...; |
| Assert.cs:106:13:106:13 | access to parameter b | Assert.cs:106:13:106:13 | access to parameter b |
| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:106:13:106:25 | ... ? ... : ... |
| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:106:13:106:13 | access to parameter b |
| Assert.cs:106:17:106:20 | null | Assert.cs:106:17:106:20 | null |
| Assert.cs:106:24:106:25 | "" | Assert.cs:106:24:106:25 | "" |
| Assert.cs:107:9:107:33 | call to method IsFalse | Assert.cs:107:24:107:24 | access to local variable s |
@@ -575,10 +575,10 @@
| Assert.cs:108:9:108:36 | ...; | Assert.cs:108:9:108:36 | ...; |
| Assert.cs:108:27:108:27 | access to local variable s | Assert.cs:108:27:108:27 | access to local variable s |
| Assert.cs:108:27:108:34 | access to property Length | Assert.cs:108:27:108:27 | access to local variable s |
| Assert.cs:110:9:110:25 | ... = ... | Assert.cs:110:13:110:25 | ... ? ... : ... |
| Assert.cs:110:9:110:25 | ... = ... | Assert.cs:110:13:110:13 | access to parameter b |
| Assert.cs:110:9:110:26 | ...; | Assert.cs:110:9:110:26 | ...; |
| Assert.cs:110:13:110:13 | access to parameter b | Assert.cs:110:13:110:13 | access to parameter b |
| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:110:13:110:25 | ... ? ... : ... |
| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:110:13:110:13 | access to parameter b |
| Assert.cs:110:17:110:20 | null | Assert.cs:110:17:110:20 | null |
| Assert.cs:110:24:110:25 | "" | Assert.cs:110:24:110:25 | "" |
| Assert.cs:111:9:111:33 | call to method IsFalse | Assert.cs:111:24:111:24 | access to local variable s |
@@ -590,71 +590,71 @@
| Assert.cs:112:9:112:36 | ...; | Assert.cs:112:9:112:36 | ...; |
| Assert.cs:112:27:112:27 | access to local variable s | Assert.cs:112:27:112:27 | access to local variable s |
| Assert.cs:112:27:112:34 | access to property Length | Assert.cs:112:27:112:27 | access to local variable s |
| Assert.cs:114:9:114:25 | ... = ... | Assert.cs:114:13:114:25 | ... ? ... : ... |
| Assert.cs:114:9:114:25 | ... = ... | Assert.cs:114:13:114:13 | access to parameter b |
| Assert.cs:114:9:114:26 | ...; | Assert.cs:114:9:114:26 | ...; |
| Assert.cs:114:13:114:13 | access to parameter b | Assert.cs:114:13:114:13 | access to parameter b |
| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:114:13:114:25 | ... ? ... : ... |
| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:114:13:114:13 | access to parameter b |
| Assert.cs:114:17:114:20 | null | Assert.cs:114:17:114:20 | null |
| Assert.cs:114:24:114:25 | "" | Assert.cs:114:24:114:25 | "" |
| Assert.cs:115:9:115:37 | call to method IsTrue | Assert.cs:115:23:115:36 | ... && ... |
| Assert.cs:115:9:115:37 | call to method IsTrue | Assert.cs:115:23:115:23 | access to local variable s |
| Assert.cs:115:9:115:38 | ...; | Assert.cs:115:9:115:38 | ...; |
| Assert.cs:115:23:115:23 | access to local variable s | Assert.cs:115:23:115:23 | access to local variable s |
| Assert.cs:115:23:115:31 | ... != ... | Assert.cs:115:23:115:23 | access to local variable s |
| Assert.cs:115:23:115:36 | ... && ... | Assert.cs:115:23:115:36 | ... && ... |
| Assert.cs:115:23:115:36 | ... && ... | Assert.cs:115:23:115:23 | access to local variable s |
| Assert.cs:115:28:115:31 | null | Assert.cs:115:28:115:31 | null |
| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:115:36:115:36 | access to parameter b |
| Assert.cs:116:9:116:35 | call to method WriteLine | Assert.cs:116:27:116:27 | access to local variable s |
| Assert.cs:116:9:116:36 | ...; | Assert.cs:116:9:116:36 | ...; |
| Assert.cs:116:27:116:27 | access to local variable s | Assert.cs:116:27:116:27 | access to local variable s |
| Assert.cs:116:27:116:34 | access to property Length | Assert.cs:116:27:116:27 | access to local variable s |
| Assert.cs:118:9:118:25 | ... = ... | Assert.cs:118:13:118:25 | ... ? ... : ... |
| Assert.cs:118:9:118:25 | ... = ... | Assert.cs:118:13:118:13 | access to parameter b |
| Assert.cs:118:9:118:26 | ...; | Assert.cs:118:9:118:26 | ...; |
| Assert.cs:118:13:118:13 | access to parameter b | Assert.cs:118:13:118:13 | access to parameter b |
| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:118:13:118:25 | ... ? ... : ... |
| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:118:13:118:13 | access to parameter b |
| Assert.cs:118:17:118:20 | null | Assert.cs:118:17:118:20 | null |
| Assert.cs:118:24:118:25 | "" | Assert.cs:118:24:118:25 | "" |
| Assert.cs:119:9:119:39 | call to method IsFalse | Assert.cs:119:24:119:38 | ... \|\| ... |
| Assert.cs:119:9:119:39 | call to method IsFalse | Assert.cs:119:24:119:24 | access to local variable s |
| Assert.cs:119:9:119:40 | ...; | Assert.cs:119:9:119:40 | ...; |
| Assert.cs:119:24:119:24 | access to local variable s | Assert.cs:119:24:119:24 | access to local variable s |
| Assert.cs:119:24:119:32 | ... == ... | Assert.cs:119:24:119:24 | access to local variable s |
| Assert.cs:119:24:119:38 | ... \|\| ... | Assert.cs:119:24:119:38 | ... \|\| ... |
| Assert.cs:119:24:119:38 | ... \|\| ... | Assert.cs:119:24:119:24 | access to local variable s |
| Assert.cs:119:29:119:32 | null | Assert.cs:119:29:119:32 | null |
| Assert.cs:119:37:119:38 | !... | Assert.cs:119:37:119:38 | !... |
| Assert.cs:119:37:119:38 | !... | Assert.cs:119:38:119:38 | access to parameter b |
| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:119:38:119:38 | access to parameter b |
| Assert.cs:120:9:120:35 | call to method WriteLine | Assert.cs:120:27:120:27 | access to local variable s |
| Assert.cs:120:9:120:36 | ...; | Assert.cs:120:9:120:36 | ...; |
| Assert.cs:120:27:120:27 | access to local variable s | Assert.cs:120:27:120:27 | access to local variable s |
| Assert.cs:120:27:120:34 | access to property Length | Assert.cs:120:27:120:27 | access to local variable s |
| Assert.cs:122:9:122:25 | ... = ... | Assert.cs:122:13:122:25 | ... ? ... : ... |
| Assert.cs:122:9:122:25 | ... = ... | Assert.cs:122:13:122:13 | access to parameter b |
| Assert.cs:122:9:122:26 | ...; | Assert.cs:122:9:122:26 | ...; |
| Assert.cs:122:13:122:13 | access to parameter b | Assert.cs:122:13:122:13 | access to parameter b |
| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:122:13:122:25 | ... ? ... : ... |
| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:122:13:122:13 | access to parameter b |
| Assert.cs:122:17:122:20 | null | Assert.cs:122:17:122:20 | null |
| Assert.cs:122:24:122:25 | "" | Assert.cs:122:24:122:25 | "" |
| Assert.cs:123:9:123:37 | call to method IsTrue | Assert.cs:123:23:123:36 | ... && ... |
| Assert.cs:123:9:123:37 | call to method IsTrue | Assert.cs:123:23:123:23 | access to local variable s |
| Assert.cs:123:9:123:38 | ...; | Assert.cs:123:9:123:38 | ...; |
| Assert.cs:123:23:123:23 | access to local variable s | Assert.cs:123:23:123:23 | access to local variable s |
| Assert.cs:123:23:123:31 | ... == ... | Assert.cs:123:23:123:23 | access to local variable s |
| Assert.cs:123:23:123:36 | ... && ... | Assert.cs:123:23:123:36 | ... && ... |
| Assert.cs:123:23:123:36 | ... && ... | Assert.cs:123:23:123:23 | access to local variable s |
| Assert.cs:123:28:123:31 | null | Assert.cs:123:28:123:31 | null |
| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:123:36:123:36 | access to parameter b |
| Assert.cs:124:9:124:35 | call to method WriteLine | Assert.cs:124:27:124:27 | access to local variable s |
| Assert.cs:124:9:124:36 | ...; | Assert.cs:124:9:124:36 | ...; |
| Assert.cs:124:27:124:27 | access to local variable s | Assert.cs:124:27:124:27 | access to local variable s |
| Assert.cs:124:27:124:34 | access to property Length | Assert.cs:124:27:124:27 | access to local variable s |
| Assert.cs:126:9:126:25 | ... = ... | Assert.cs:126:13:126:25 | ... ? ... : ... |
| Assert.cs:126:9:126:25 | ... = ... | Assert.cs:126:13:126:13 | access to parameter b |
| Assert.cs:126:9:126:26 | ...; | Assert.cs:126:9:126:26 | ...; |
| Assert.cs:126:13:126:13 | access to parameter b | Assert.cs:126:13:126:13 | access to parameter b |
| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:126:13:126:25 | ... ? ... : ... |
| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:126:13:126:13 | access to parameter b |
| Assert.cs:126:17:126:20 | null | Assert.cs:126:17:126:20 | null |
| Assert.cs:126:24:126:25 | "" | Assert.cs:126:24:126:25 | "" |
| Assert.cs:127:9:127:39 | call to method IsFalse | Assert.cs:127:24:127:38 | ... \|\| ... |
| Assert.cs:127:9:127:39 | call to method IsFalse | Assert.cs:127:24:127:24 | access to local variable s |
| Assert.cs:127:9:127:40 | ...; | Assert.cs:127:9:127:40 | ...; |
| Assert.cs:127:24:127:24 | access to local variable s | Assert.cs:127:24:127:24 | access to local variable s |
| Assert.cs:127:24:127:32 | ... != ... | Assert.cs:127:24:127:24 | access to local variable s |
| Assert.cs:127:24:127:38 | ... \|\| ... | Assert.cs:127:24:127:38 | ... \|\| ... |
| Assert.cs:127:24:127:38 | ... \|\| ... | Assert.cs:127:24:127:24 | access to local variable s |
| Assert.cs:127:29:127:32 | null | Assert.cs:127:29:127:32 | null |
| Assert.cs:127:37:127:38 | !... | Assert.cs:127:37:127:38 | !... |
| Assert.cs:127:37:127:38 | !... | Assert.cs:127:38:127:38 | access to parameter b |
| Assert.cs:127:38:127:38 | access to parameter b | Assert.cs:127:38:127:38 | access to parameter b |
| Assert.cs:128:9:128:35 | call to method WriteLine | Assert.cs:128:27:128:27 | access to local variable s |
| Assert.cs:128:9:128:36 | ...; | Assert.cs:128:9:128:36 | ...; |
@@ -820,11 +820,11 @@
| ConditionalAccess.cs:5:26:5:26 | access to parameter s | ConditionalAccess.cs:5:26:5:26 | access to parameter s |
| ConditionalAccess.cs:5:28:5:34 | access to property Length | ConditionalAccess.cs:5:26:5:26 | access to parameter s |
| ConditionalAccess.cs:7:39:7:40 | access to parameter s1 | ConditionalAccess.cs:7:39:7:40 | access to parameter s1 |
| ConditionalAccess.cs:7:39:7:46 | ... ?? ... | ConditionalAccess.cs:7:39:7:46 | ... ?? ... |
| ConditionalAccess.cs:7:39:7:46 | ... ?? ... | ConditionalAccess.cs:7:39:7:40 | access to parameter s1 |
| ConditionalAccess.cs:7:45:7:46 | access to parameter s2 | ConditionalAccess.cs:7:45:7:46 | access to parameter s2 |
| ConditionalAccess.cs:7:49:7:55 | access to property Length | ConditionalAccess.cs:7:39:7:46 | ... ?? ... |
| ConditionalAccess.cs:7:49:7:55 | access to property Length | ConditionalAccess.cs:7:39:7:40 | access to parameter s1 |
| ConditionalAccess.cs:9:25:9:25 | access to parameter s | ConditionalAccess.cs:9:25:9:25 | access to parameter s |
| ConditionalAccess.cs:9:25:9:38 | ... ?? ... | ConditionalAccess.cs:9:25:9:38 | ... ?? ... |
| ConditionalAccess.cs:9:25:9:38 | ... ?? ... | ConditionalAccess.cs:9:25:9:25 | access to parameter s |
| ConditionalAccess.cs:9:27:9:33 | access to property Length | ConditionalAccess.cs:9:25:9:25 | access to parameter s |
| ConditionalAccess.cs:9:38:9:38 | 0 | ConditionalAccess.cs:9:38:9:38 | 0 |
| ConditionalAccess.cs:12:5:17:5 | {...} | ConditionalAccess.cs:12:5:17:5 | {...} |
@@ -879,7 +879,7 @@
| Conditions.cs:6:13:6:15 | ...++ | Conditions.cs:6:13:6:13 | access to parameter x |
| Conditions.cs:6:13:6:16 | ...; | Conditions.cs:6:13:6:16 | ...; |
| Conditions.cs:7:9:8:16 | if (...) ... | Conditions.cs:7:9:8:16 | if (...) ... |
| Conditions.cs:7:13:7:16 | !... | Conditions.cs:7:13:7:16 | !... |
| Conditions.cs:7:13:7:16 | !... | Conditions.cs:7:14:7:16 | access to parameter inc |
| Conditions.cs:7:14:7:16 | access to parameter inc | Conditions.cs:7:14:7:16 | access to parameter inc |
| Conditions.cs:8:13:8:13 | access to parameter x | Conditions.cs:8:13:8:13 | access to parameter x |
| Conditions.cs:8:13:8:15 | ...-- | Conditions.cs:8:13:8:13 | access to parameter x |
@@ -898,7 +898,7 @@
| Conditions.cs:16:13:16:17 | ... > ... | Conditions.cs:16:13:16:13 | access to local variable x |
| Conditions.cs:16:17:16:17 | 0 | Conditions.cs:16:17:16:17 | 0 |
| Conditions.cs:17:13:18:20 | if (...) ... | Conditions.cs:17:13:18:20 | if (...) ... |
| Conditions.cs:17:17:17:18 | !... | Conditions.cs:17:17:17:18 | !... |
| Conditions.cs:17:17:17:18 | !... | Conditions.cs:17:18:17:18 | access to parameter b |
| Conditions.cs:17:18:17:18 | access to parameter b | Conditions.cs:17:18:17:18 | access to parameter b |
| Conditions.cs:18:17:18:17 | access to local variable x | Conditions.cs:18:17:18:17 | access to local variable x |
| Conditions.cs:18:17:18:19 | ...-- | Conditions.cs:18:17:18:17 | access to local variable x |
@@ -1071,7 +1071,7 @@
| Conditions.cs:107:13:107:24 | ... > ... | Conditions.cs:107:13:107:13 | access to local variable x |
| Conditions.cs:107:24:107:24 | 0 | Conditions.cs:107:24:107:24 | 0 |
| Conditions.cs:108:13:109:24 | if (...) ... | Conditions.cs:108:13:109:24 | if (...) ... |
| Conditions.cs:108:17:108:18 | !... | Conditions.cs:108:17:108:18 | !... |
| Conditions.cs:108:17:108:18 | !... | Conditions.cs:108:18:108:18 | access to parameter b |
| Conditions.cs:108:18:108:18 | access to parameter b | Conditions.cs:108:18:108:18 | access to parameter b |
| Conditions.cs:109:17:109:17 | access to local variable x | Conditions.cs:109:17:109:17 | access to local variable x |
| Conditions.cs:109:17:109:23 | ... + ... | Conditions.cs:109:17:109:17 | access to local variable x |
@@ -1104,7 +1104,7 @@
| Conditions.cs:118:29:118:43 | ... - ... | Conditions.cs:118:29:118:32 | access to parameter args |
| Conditions.cs:118:43:118:43 | 1 | Conditions.cs:118:43:118:43 | 1 |
| Conditions.cs:119:13:120:23 | if (...) ... | Conditions.cs:119:13:120:23 | if (...) ... |
| Conditions.cs:119:17:119:21 | !... | Conditions.cs:119:17:119:21 | !... |
| Conditions.cs:119:17:119:21 | !... | Conditions.cs:119:18:119:21 | access to local variable last |
| Conditions.cs:119:18:119:21 | access to local variable last | Conditions.cs:119:18:119:21 | access to local variable last |
| Conditions.cs:120:17:120:22 | ... = ... | Conditions.cs:120:21:120:22 | "" |
| Conditions.cs:120:17:120:23 | ...; | Conditions.cs:120:17:120:23 | ...; |
@@ -1132,9 +1132,9 @@
| Conditions.cs:137:21:137:38 | ...; | Conditions.cs:137:21:137:38 | ...; |
| Conditions.cs:144:5:150:5 | {...} | Conditions.cs:144:5:150:5 | {...} |
| Conditions.cs:145:9:145:30 | ... ...; | Conditions.cs:145:9:145:30 | ... ...; |
| Conditions.cs:145:13:145:29 | String s = ... | Conditions.cs:145:17:145:29 | ... ? ... : ... |
| Conditions.cs:145:13:145:29 | String s = ... | Conditions.cs:145:17:145:17 | access to parameter b |
| Conditions.cs:145:17:145:17 | access to parameter b | Conditions.cs:145:17:145:17 | access to parameter b |
| Conditions.cs:145:17:145:29 | ... ? ... : ... | Conditions.cs:145:17:145:29 | ... ? ... : ... |
| Conditions.cs:145:17:145:29 | ... ? ... : ... | Conditions.cs:145:17:145:17 | access to parameter b |
| Conditions.cs:145:21:145:23 | "a" | Conditions.cs:145:21:145:23 | "a" |
| Conditions.cs:145:27:145:29 | "b" | Conditions.cs:145:27:145:29 | "b" |
| Conditions.cs:146:9:149:49 | if (...) ... | Conditions.cs:146:9:149:49 | if (...) ... |
@@ -1230,10 +1230,10 @@
| ExitMethods.cs:106:9:106:47 | call to method Exit | ExitMethods.cs:106:9:106:47 | call to method Exit |
| ExitMethods.cs:106:9:106:48 | ...; | ExitMethods.cs:106:9:106:48 | ...; |
| ExitMethods.cs:110:5:112:5 | {...} | ExitMethods.cs:110:5:112:5 | {...} |
| ExitMethods.cs:111:9:111:77 | return ...; | ExitMethods.cs:111:16:111:76 | ... ? ... : ... |
| ExitMethods.cs:111:9:111:77 | return ...; | ExitMethods.cs:111:16:111:20 | access to parameter input |
| ExitMethods.cs:111:16:111:20 | access to parameter input | ExitMethods.cs:111:16:111:20 | access to parameter input |
| ExitMethods.cs:111:16:111:25 | ... != ... | ExitMethods.cs:111:16:111:20 | access to parameter input |
| ExitMethods.cs:111:16:111:76 | ... ? ... : ... | ExitMethods.cs:111:16:111:76 | ... ? ... : ... |
| ExitMethods.cs:111:16:111:76 | ... ? ... : ... | ExitMethods.cs:111:16:111:20 | access to parameter input |
| ExitMethods.cs:111:25:111:25 | 0 | ExitMethods.cs:111:25:111:25 | 0 |
| ExitMethods.cs:111:25:111:25 | (...) ... | ExitMethods.cs:111:25:111:25 | 0 |
| ExitMethods.cs:111:29:111:29 | 1 | ExitMethods.cs:111:29:111:29 | 1 |
@@ -1244,10 +1244,10 @@
| ExitMethods.cs:111:47:111:76 | object creation of type ArgumentException | ExitMethods.cs:111:69:111:75 | "input" |
| ExitMethods.cs:111:69:111:75 | "input" | ExitMethods.cs:111:69:111:75 | "input" |
| ExitMethods.cs:115:5:117:5 | {...} | ExitMethods.cs:115:5:117:5 | {...} |
| ExitMethods.cs:116:9:116:39 | return ...; | ExitMethods.cs:116:16:116:38 | ... ? ... : ... |
| ExitMethods.cs:116:9:116:39 | return ...; | ExitMethods.cs:116:16:116:16 | access to parameter s |
| ExitMethods.cs:116:16:116:16 | access to parameter s | ExitMethods.cs:116:16:116:16 | access to parameter s |
| ExitMethods.cs:116:16:116:30 | call to method Contains | ExitMethods.cs:116:16:116:16 | access to parameter s |
| ExitMethods.cs:116:16:116:38 | ... ? ... : ... | ExitMethods.cs:116:16:116:38 | ... ? ... : ... |
| ExitMethods.cs:116:16:116:38 | ... ? ... : ... | ExitMethods.cs:116:16:116:16 | access to parameter s |
| ExitMethods.cs:116:27:116:29 | - | ExitMethods.cs:116:27:116:29 | - |
| ExitMethods.cs:116:34:116:34 | 0 | ExitMethods.cs:116:34:116:34 | 0 |
| ExitMethods.cs:116:38:116:38 | 1 | ExitMethods.cs:116:38:116:38 | 1 |
@@ -1428,7 +1428,7 @@
| Finally.cs:110:23:110:48 | object creation of type OutOfMemoryException | Finally.cs:110:23:110:48 | object creation of type OutOfMemoryException |
| Finally.cs:113:9:118:9 | {...} | Finally.cs:113:9:118:9 | {...} |
| Finally.cs:114:13:115:41 | if (...) ... | Finally.cs:114:13:115:41 | if (...) ... |
| Finally.cs:114:17:114:36 | !... | Finally.cs:114:17:114:36 | !... |
| Finally.cs:114:17:114:36 | !... | Finally.cs:114:19:114:23 | this access |
| Finally.cs:114:19:114:23 | access to field Field | Finally.cs:114:19:114:23 | this access |
| Finally.cs:114:19:114:23 | this access | Finally.cs:114:19:114:23 | this access |
| Finally.cs:114:19:114:30 | access to property Length | Finally.cs:114:19:114:23 | this access |
@@ -1591,10 +1591,10 @@
| Foreach.cs:14:27:14:30 | access to parameter args | Foreach.cs:14:27:14:30 | access to parameter args |
| Foreach.cs:15:13:15:13 | ; | Foreach.cs:15:13:15:13 | ; |
| Foreach.cs:19:5:22:5 | {...} | Foreach.cs:19:5:22:5 | {...} |
| Foreach.cs:20:9:21:11 | foreach (... ... in ...) ... | Foreach.cs:20:27:20:68 | ... ?? ... |
| Foreach.cs:20:9:21:11 | foreach (... ... in ...) ... | Foreach.cs:20:27:20:27 | access to parameter e |
| Foreach.cs:20:22:20:22 | String x | Foreach.cs:20:22:20:22 | String x |
| Foreach.cs:20:27:20:27 | access to parameter e | Foreach.cs:20:27:20:27 | access to parameter e |
| Foreach.cs:20:27:20:68 | ... ?? ... | Foreach.cs:20:27:20:68 | ... ?? ... |
| Foreach.cs:20:27:20:68 | ... ?? ... | Foreach.cs:20:27:20:27 | access to parameter e |
| Foreach.cs:20:29:20:38 | call to method ToArray | Foreach.cs:20:27:20:27 | access to parameter e |
| Foreach.cs:20:43:20:68 | call to method Empty | Foreach.cs:20:43:20:68 | call to method Empty |
| Foreach.cs:21:11:21:11 | ; | Foreach.cs:21:11:21:11 | ; |
@@ -1916,7 +1916,7 @@
| LoopUnrolling.cs:63:35:63:35 | access to local variable x | LoopUnrolling.cs:63:35:63:35 | access to local variable x |
| LoopUnrolling.cs:68:5:74:5 | {...} | LoopUnrolling.cs:68:5:74:5 | {...} |
| LoopUnrolling.cs:69:9:70:19 | if (...) ... | LoopUnrolling.cs:69:9:70:19 | if (...) ... |
| LoopUnrolling.cs:69:13:69:23 | !... | LoopUnrolling.cs:69:13:69:23 | !... |
| LoopUnrolling.cs:69:13:69:23 | !... | LoopUnrolling.cs:69:14:69:17 | access to parameter args |
| LoopUnrolling.cs:69:14:69:17 | access to parameter args | LoopUnrolling.cs:69:14:69:17 | access to parameter args |
| LoopUnrolling.cs:69:14:69:23 | call to method Any | LoopUnrolling.cs:69:14:69:17 | access to parameter args |
| LoopUnrolling.cs:70:13:70:19 | return ...; | LoopUnrolling.cs:70:13:70:19 | return ...; |
@@ -2052,51 +2052,51 @@
| MultiImplementationB.cs:22:34:22:34 | 1 | MultiImplementationB.cs:22:34:22:34 | 1 |
| MultiImplementationB.cs:32:17:32:17 | 0 | MultiImplementationB.cs:32:17:32:17 | 0 |
| NullCoalescing.cs:3:23:3:23 | access to parameter i | NullCoalescing.cs:3:23:3:23 | access to parameter i |
| NullCoalescing.cs:3:23:3:28 | ... ?? ... | NullCoalescing.cs:3:23:3:28 | ... ?? ... |
| NullCoalescing.cs:3:23:3:28 | ... ?? ... | NullCoalescing.cs:3:23:3:23 | access to parameter i |
| NullCoalescing.cs:3:28:3:28 | 0 | NullCoalescing.cs:3:28:3:28 | 0 |
| NullCoalescing.cs:5:24:5:43 | ... ? ... : ... | NullCoalescing.cs:5:24:5:43 | ... ? ... : ... |
| NullCoalescing.cs:5:24:5:43 | ... ? ... : ... | NullCoalescing.cs:5:25:5:25 | access to parameter b |
| NullCoalescing.cs:5:25:5:25 | access to parameter b | NullCoalescing.cs:5:25:5:25 | access to parameter b |
| NullCoalescing.cs:5:25:5:34 | ... ?? ... | NullCoalescing.cs:5:25:5:34 | ... ?? ... |
| NullCoalescing.cs:5:25:5:34 | ... ?? ... | NullCoalescing.cs:5:25:5:25 | access to parameter b |
| NullCoalescing.cs:5:30:5:34 | false | NullCoalescing.cs:5:30:5:34 | false |
| NullCoalescing.cs:5:39:5:39 | 0 | NullCoalescing.cs:5:39:5:39 | 0 |
| NullCoalescing.cs:5:43:5:43 | 1 | NullCoalescing.cs:5:43:5:43 | 1 |
| NullCoalescing.cs:7:40:7:41 | access to parameter s1 | NullCoalescing.cs:7:40:7:41 | access to parameter s1 |
| NullCoalescing.cs:7:40:7:53 | ... ?? ... | NullCoalescing.cs:7:40:7:53 | ... ?? ... |
| NullCoalescing.cs:7:40:7:53 | ... ?? ... | NullCoalescing.cs:7:40:7:41 | access to parameter s1 |
| NullCoalescing.cs:7:46:7:47 | access to parameter s2 | NullCoalescing.cs:7:46:7:47 | access to parameter s2 |
| NullCoalescing.cs:7:46:7:53 | ... ?? ... | NullCoalescing.cs:7:46:7:53 | ... ?? ... |
| NullCoalescing.cs:7:46:7:53 | ... ?? ... | NullCoalescing.cs:7:46:7:47 | access to parameter s2 |
| NullCoalescing.cs:7:52:7:53 | "" | NullCoalescing.cs:7:52:7:53 | "" |
| NullCoalescing.cs:9:36:9:58 | ... ?? ... | NullCoalescing.cs:9:36:9:58 | ... ?? ... |
| NullCoalescing.cs:9:36:9:58 | ... ?? ... | NullCoalescing.cs:9:37:9:37 | access to parameter b |
| NullCoalescing.cs:9:37:9:37 | access to parameter b | NullCoalescing.cs:9:37:9:37 | access to parameter b |
| NullCoalescing.cs:9:37:9:45 | ... ? ... : ... | NullCoalescing.cs:9:37:9:45 | ... ? ... : ... |
| NullCoalescing.cs:9:37:9:45 | ... ? ... : ... | NullCoalescing.cs:9:37:9:37 | access to parameter b |
| NullCoalescing.cs:9:41:9:41 | access to parameter s | NullCoalescing.cs:9:41:9:41 | access to parameter s |
| NullCoalescing.cs:9:45:9:45 | access to parameter s | NullCoalescing.cs:9:45:9:45 | access to parameter s |
| NullCoalescing.cs:9:51:9:52 | "" | NullCoalescing.cs:9:51:9:52 | "" |
| NullCoalescing.cs:9:51:9:58 | ... ?? ... | NullCoalescing.cs:9:51:9:58 | ... ?? ... |
| NullCoalescing.cs:9:51:9:58 | ... ?? ... | NullCoalescing.cs:9:51:9:52 | "" |
| NullCoalescing.cs:9:57:9:58 | "" | NullCoalescing.cs:9:57:9:58 | "" |
| NullCoalescing.cs:11:43:11:68 | ... ? ... : ... | NullCoalescing.cs:11:43:11:68 | ... ? ... : ... |
| NullCoalescing.cs:11:43:11:68 | ... ? ... : ... | NullCoalescing.cs:11:44:11:45 | access to parameter b1 |
| NullCoalescing.cs:11:44:11:45 | access to parameter b1 | NullCoalescing.cs:11:44:11:45 | access to parameter b1 |
| NullCoalescing.cs:11:44:11:59 | ... ?? ... | NullCoalescing.cs:11:44:11:59 | ... ?? ... |
| NullCoalescing.cs:11:44:11:59 | ... ?? ... | NullCoalescing.cs:11:44:11:45 | access to parameter b1 |
| NullCoalescing.cs:11:51:11:52 | access to parameter b2 | NullCoalescing.cs:11:51:11:52 | access to parameter b2 |
| NullCoalescing.cs:11:51:11:58 | ... && ... | NullCoalescing.cs:11:51:11:58 | ... && ... |
| NullCoalescing.cs:11:51:11:58 | ... && ... | NullCoalescing.cs:11:51:11:52 | access to parameter b2 |
| NullCoalescing.cs:11:57:11:58 | access to parameter b3 | NullCoalescing.cs:11:57:11:58 | access to parameter b3 |
| NullCoalescing.cs:11:64:11:64 | 0 | NullCoalescing.cs:11:64:11:64 | 0 |
| NullCoalescing.cs:11:68:11:68 | 1 | NullCoalescing.cs:11:68:11:68 | 1 |
| NullCoalescing.cs:14:5:18:5 | {...} | NullCoalescing.cs:14:5:18:5 | {...} |
| NullCoalescing.cs:15:9:15:32 | ... ...; | NullCoalescing.cs:15:9:15:32 | ... ...; |
| NullCoalescing.cs:15:13:15:31 | Int32 j = ... | NullCoalescing.cs:15:17:15:31 | ... ?? ... |
| NullCoalescing.cs:15:13:15:31 | Int32 j = ... | NullCoalescing.cs:15:23:15:26 | null |
| NullCoalescing.cs:15:17:15:26 | (...) ... | NullCoalescing.cs:15:23:15:26 | null |
| NullCoalescing.cs:15:17:15:31 | ... ?? ... | NullCoalescing.cs:15:17:15:31 | ... ?? ... |
| NullCoalescing.cs:15:17:15:31 | ... ?? ... | NullCoalescing.cs:15:23:15:26 | null |
| NullCoalescing.cs:15:23:15:26 | null | NullCoalescing.cs:15:23:15:26 | null |
| NullCoalescing.cs:15:31:15:31 | 0 | NullCoalescing.cs:15:31:15:31 | 0 |
| NullCoalescing.cs:16:9:16:26 | ... ...; | NullCoalescing.cs:16:9:16:26 | ... ...; |
| NullCoalescing.cs:16:13:16:25 | String s = ... | NullCoalescing.cs:16:17:16:25 | ... ?? ... |
| NullCoalescing.cs:16:13:16:25 | String s = ... | NullCoalescing.cs:16:17:16:18 | "" |
| NullCoalescing.cs:16:17:16:18 | "" | NullCoalescing.cs:16:17:16:18 | "" |
| NullCoalescing.cs:16:17:16:25 | ... ?? ... | NullCoalescing.cs:16:17:16:25 | ... ?? ... |
| NullCoalescing.cs:16:17:16:25 | ... ?? ... | NullCoalescing.cs:16:17:16:18 | "" |
| NullCoalescing.cs:16:23:16:25 | "a" | NullCoalescing.cs:16:23:16:25 | "a" |
| NullCoalescing.cs:17:9:17:24 | ... = ... | NullCoalescing.cs:17:13:17:24 | ... ?? ... |
| NullCoalescing.cs:17:9:17:24 | ... = ... | NullCoalescing.cs:17:19:17:19 | access to parameter i |
| NullCoalescing.cs:17:9:17:25 | ...; | NullCoalescing.cs:17:9:17:25 | ...; |
| NullCoalescing.cs:17:13:17:19 | (...) ... | NullCoalescing.cs:17:19:17:19 | access to parameter i |
| NullCoalescing.cs:17:13:17:24 | ... ?? ... | NullCoalescing.cs:17:13:17:24 | ... ?? ... |
| NullCoalescing.cs:17:13:17:24 | ... ?? ... | NullCoalescing.cs:17:19:17:19 | access to parameter i |
| NullCoalescing.cs:17:19:17:19 | access to parameter i | NullCoalescing.cs:17:19:17:19 | access to parameter i |
| NullCoalescing.cs:17:24:17:24 | 1 | NullCoalescing.cs:17:24:17:24 | 1 |
| Patterns.cs:6:5:43:5 | {...} | Patterns.cs:6:5:43:5 | {...} |
@@ -2282,7 +2282,7 @@
| Switch.cs:24:32:24:32 | access to local variable s | Switch.cs:24:32:24:32 | access to local variable s |
| Switch.cs:24:32:24:39 | access to property Length | Switch.cs:24:32:24:32 | access to local variable s |
| Switch.cs:24:32:24:43 | ... > ... | Switch.cs:24:32:24:32 | access to local variable s |
| Switch.cs:24:32:24:55 | ... && ... | Switch.cs:24:32:24:55 | ... && ... |
| Switch.cs:24:32:24:55 | ... && ... | Switch.cs:24:32:24:32 | access to local variable s |
| Switch.cs:24:43:24:43 | 0 | Switch.cs:24:43:24:43 | 0 |
| Switch.cs:24:48:24:48 | access to local variable s | Switch.cs:24:48:24:48 | access to local variable s |
| Switch.cs:24:48:24:55 | ... != ... | Switch.cs:24:48:24:48 | access to local variable s |
@@ -2404,25 +2404,25 @@
| Switch.cs:124:5:127:5 | {...} | Switch.cs:124:5:127:5 | {...} |
| Switch.cs:125:9:126:19 | if (...) ... | Switch.cs:125:9:126:19 | if (...) ... |
| Switch.cs:125:13:125:13 | access to parameter o | Switch.cs:125:13:125:13 | access to parameter o |
| Switch.cs:125:13:125:48 | ... switch { ... } | Switch.cs:125:13:125:48 | ... switch { ... } |
| Switch.cs:125:13:125:48 | ... switch { ... } | Switch.cs:125:13:125:13 | access to parameter o |
| Switch.cs:125:24:125:29 | Boolean b | Switch.cs:125:24:125:29 | Boolean b |
| Switch.cs:125:24:125:34 | ... => ... | Switch.cs:125:24:125:34 | ... => ... |
| Switch.cs:125:24:125:34 | ... => ... | Switch.cs:125:24:125:29 | Boolean b |
| Switch.cs:125:34:125:34 | access to local variable b | Switch.cs:125:34:125:34 | access to local variable b |
| Switch.cs:125:37:125:37 | _ | Switch.cs:125:37:125:37 | _ |
| Switch.cs:125:37:125:46 | ... => ... | Switch.cs:125:37:125:46 | ... => ... |
| Switch.cs:125:37:125:46 | ... => ... | Switch.cs:125:37:125:37 | _ |
| Switch.cs:125:42:125:46 | false | Switch.cs:125:42:125:46 | false |
| Switch.cs:126:13:126:19 | return ...; | Switch.cs:126:13:126:19 | return ...; |
| Switch.cs:130:5:132:5 | {...} | Switch.cs:130:5:132:5 | {...} |
| Switch.cs:131:9:131:67 | return ...; | Switch.cs:131:17:131:53 | ... switch { ... } |
| Switch.cs:131:9:131:67 | return ...; | Switch.cs:131:17:131:17 | access to parameter o |
| Switch.cs:131:17:131:17 | access to parameter o | Switch.cs:131:17:131:17 | access to parameter o |
| Switch.cs:131:17:131:53 | ... switch { ... } | Switch.cs:131:17:131:53 | ... switch { ... } |
| Switch.cs:131:17:131:53 | ... switch { ... } | Switch.cs:131:17:131:17 | access to parameter o |
| Switch.cs:131:28:131:35 | String s | Switch.cs:131:28:131:35 | String s |
| Switch.cs:131:28:131:40 | ... => ... | Switch.cs:131:28:131:40 | ... => ... |
| Switch.cs:131:28:131:40 | ... => ... | Switch.cs:131:28:131:35 | String s |
| Switch.cs:131:40:131:40 | access to local variable s | Switch.cs:131:40:131:40 | access to local variable s |
| Switch.cs:131:43:131:43 | _ | Switch.cs:131:43:131:43 | _ |
| Switch.cs:131:43:131:51 | ... => ... | Switch.cs:131:43:131:51 | ... => ... |
| Switch.cs:131:43:131:51 | ... => ... | Switch.cs:131:43:131:43 | _ |
| Switch.cs:131:48:131:51 | null | Switch.cs:131:48:131:51 | null |
| Switch.cs:131:56:131:66 | call to method ToString | Switch.cs:131:17:131:53 | ... switch { ... } |
| Switch.cs:131:56:131:66 | call to method ToString | Switch.cs:131:17:131:17 | access to parameter o |
| Switch.cs:135:5:142:5 | {...} | Switch.cs:135:5:142:5 | {...} |
| Switch.cs:136:9:141:9 | switch (...) {...} | Switch.cs:136:9:141:9 | switch (...) {...} |
| Switch.cs:136:17:136:17 | access to parameter i | Switch.cs:136:17:136:17 | access to parameter i |
@@ -2455,14 +2455,14 @@
| Switch.cs:150:28:150:28 | 2 | Switch.cs:150:28:150:28 | 2 |
| Switch.cs:155:5:161:5 | {...} | Switch.cs:155:5:161:5 | {...} |
| Switch.cs:156:9:156:55 | ... ...; | Switch.cs:156:9:156:55 | ... ...; |
| Switch.cs:156:13:156:54 | String s = ... | Switch.cs:156:17:156:54 | ... switch { ... } |
| Switch.cs:156:13:156:54 | String s = ... | Switch.cs:156:17:156:17 | access to parameter b |
| Switch.cs:156:17:156:17 | access to parameter b | Switch.cs:156:17:156:17 | access to parameter b |
| Switch.cs:156:17:156:54 | ... switch { ... } | Switch.cs:156:17:156:54 | ... switch { ... } |
| Switch.cs:156:17:156:54 | ... switch { ... } | Switch.cs:156:17:156:17 | access to parameter b |
| Switch.cs:156:28:156:31 | true | Switch.cs:156:28:156:31 | true |
| Switch.cs:156:28:156:38 | ... => ... | Switch.cs:156:28:156:38 | ... => ... |
| Switch.cs:156:28:156:38 | ... => ... | Switch.cs:156:28:156:31 | true |
| Switch.cs:156:36:156:38 | "a" | Switch.cs:156:36:156:38 | "a" |
| Switch.cs:156:41:156:45 | false | Switch.cs:156:41:156:45 | false |
| Switch.cs:156:41:156:52 | ... => ... | Switch.cs:156:41:156:52 | ... => ... |
| Switch.cs:156:41:156:52 | ... => ... | Switch.cs:156:41:156:45 | false |
| Switch.cs:156:50:156:52 | "b" | Switch.cs:156:50:156:52 | "b" |
| Switch.cs:157:9:160:49 | if (...) ... | Switch.cs:157:9:160:49 | if (...) ... |
| Switch.cs:157:13:157:13 | access to parameter b | Switch.cs:157:13:157:13 | access to parameter b |
@@ -2528,9 +2528,9 @@
| VarDecls.cs:24:22:24:28 | object creation of type C | VarDecls.cs:24:22:24:28 | object creation of type C |
| VarDecls.cs:24:31:24:41 | C y = ... | VarDecls.cs:24:35:24:41 | object creation of type C |
| VarDecls.cs:24:35:24:41 | object creation of type C | VarDecls.cs:24:35:24:41 | object creation of type C |
| VarDecls.cs:25:13:25:29 | return ...; | VarDecls.cs:25:20:25:28 | ... ? ... : ... |
| VarDecls.cs:25:13:25:29 | return ...; | VarDecls.cs:25:20:25:20 | access to parameter b |
| VarDecls.cs:25:20:25:20 | access to parameter b | VarDecls.cs:25:20:25:20 | access to parameter b |
| VarDecls.cs:25:20:25:28 | ... ? ... : ... | VarDecls.cs:25:20:25:28 | ... ? ... : ... |
| VarDecls.cs:25:20:25:28 | ... ? ... : ... | VarDecls.cs:25:20:25:20 | access to parameter b |
| VarDecls.cs:25:24:25:24 | access to local variable x | VarDecls.cs:25:24:25:24 | access to local variable x |
| VarDecls.cs:25:28:25:28 | access to local variable y | VarDecls.cs:25:28:25:28 | access to local variable y |
| VarDecls.cs:28:51:28:53 | {...} | VarDecls.cs:28:51:28:53 | {...} |
@@ -2585,7 +2585,7 @@
| cflow.cs:26:17:26:17 | access to local variable i | cflow.cs:26:17:26:17 | access to local variable i |
| cflow.cs:26:17:26:21 | ... % ... | cflow.cs:26:17:26:17 | access to local variable i |
| cflow.cs:26:17:26:26 | ... == ... | cflow.cs:26:17:26:17 | access to local variable i |
| cflow.cs:26:17:26:40 | ... && ... | cflow.cs:26:17:26:40 | ... && ... |
| cflow.cs:26:17:26:40 | ... && ... | cflow.cs:26:17:26:17 | access to local variable i |
| cflow.cs:26:21:26:21 | 3 | cflow.cs:26:21:26:21 | 3 |
| cflow.cs:26:26:26:26 | 0 | cflow.cs:26:26:26:26 | 0 |
| cflow.cs:26:31:26:31 | access to local variable i | cflow.cs:26:31:26:31 | access to local variable i |
@@ -2660,7 +2660,7 @@
| cflow.cs:62:13:62:19 | case ...: | cflow.cs:62:13:62:19 | case ...: |
| cflow.cs:62:18:62:18 | 0 | cflow.cs:62:18:62:18 | 0 |
| cflow.cs:63:17:64:55 | if (...) ... | cflow.cs:63:17:64:55 | if (...) ... |
| cflow.cs:63:21:63:34 | !... | cflow.cs:63:21:63:34 | !... |
| cflow.cs:63:21:63:34 | !... | cflow.cs:63:23:63:27 | this access |
| cflow.cs:63:23:63:27 | access to field Field | cflow.cs:63:23:63:27 | this access |
| cflow.cs:63:23:63:27 | this access | cflow.cs:63:23:63:27 | this access |
| cflow.cs:63:23:63:33 | ... == ... | cflow.cs:63:23:63:27 | this access |
@@ -2693,7 +2693,7 @@
| cflow.cs:86:9:87:33 | if (...) ... | cflow.cs:86:9:87:33 | if (...) ... |
| cflow.cs:86:13:86:13 | access to parameter s | cflow.cs:86:13:86:13 | access to parameter s |
| cflow.cs:86:13:86:21 | ... != ... | cflow.cs:86:13:86:13 | access to parameter s |
| cflow.cs:86:13:86:37 | ... && ... | cflow.cs:86:13:86:37 | ... && ... |
| cflow.cs:86:13:86:37 | ... && ... | cflow.cs:86:13:86:13 | access to parameter s |
| cflow.cs:86:18:86:21 | null | cflow.cs:86:18:86:21 | null |
| cflow.cs:86:26:86:26 | access to parameter s | cflow.cs:86:26:86:26 | access to parameter s |
| cflow.cs:86:26:86:33 | access to property Length | cflow.cs:86:26:86:26 | access to parameter s |
@@ -2770,11 +2770,11 @@
| cflow.cs:123:9:123:17 | return ...; | cflow.cs:123:16:123:16 | access to local variable x |
| cflow.cs:123:16:123:16 | access to local variable x | cflow.cs:123:16:123:16 | access to local variable x |
| cflow.cs:127:23:127:60 | {...} | cflow.cs:127:23:127:60 | {...} |
| cflow.cs:127:25:127:58 | return ...; | cflow.cs:127:32:127:57 | ... ? ... : ... |
| cflow.cs:127:25:127:58 | return ...; | cflow.cs:127:32:127:36 | this access |
| cflow.cs:127:32:127:36 | access to field Field | cflow.cs:127:32:127:36 | this access |
| cflow.cs:127:32:127:36 | this access | cflow.cs:127:32:127:36 | this access |
| cflow.cs:127:32:127:44 | ... == ... | cflow.cs:127:32:127:36 | this access |
| cflow.cs:127:32:127:57 | ... ? ... : ... | cflow.cs:127:32:127:57 | ... ? ... : ... |
| cflow.cs:127:32:127:57 | ... ? ... : ... | cflow.cs:127:32:127:36 | this access |
| cflow.cs:127:41:127:44 | null | cflow.cs:127:41:127:44 | null |
| cflow.cs:127:48:127:49 | "" | cflow.cs:127:48:127:49 | "" |
| cflow.cs:127:53:127:57 | access to field Field | cflow.cs:127:53:127:57 | this access |
@@ -2903,15 +2903,15 @@
| cflow.cs:187:9:190:52 | if (...) ... | cflow.cs:187:9:190:52 | if (...) ... |
| cflow.cs:187:13:187:13 | 1 | cflow.cs:187:13:187:13 | 1 |
| cflow.cs:187:13:187:18 | ... == ... | cflow.cs:187:13:187:13 | 1 |
| cflow.cs:187:13:187:28 | ... \|\| ... | cflow.cs:187:13:187:28 | ... \|\| ... |
| cflow.cs:187:13:187:50 | ... \|\| ... | cflow.cs:187:13:187:50 | ... \|\| ... |
| cflow.cs:187:13:187:28 | ... \|\| ... | cflow.cs:187:13:187:13 | 1 |
| cflow.cs:187:13:187:50 | ... \|\| ... | cflow.cs:187:13:187:13 | 1 |
| cflow.cs:187:18:187:18 | 2 | cflow.cs:187:18:187:18 | 2 |
| cflow.cs:187:23:187:23 | 2 | cflow.cs:187:23:187:23 | 2 |
| cflow.cs:187:23:187:28 | ... == ... | cflow.cs:187:23:187:23 | 2 |
| cflow.cs:187:28:187:28 | 3 | cflow.cs:187:28:187:28 | 3 |
| cflow.cs:187:34:187:34 | 1 | cflow.cs:187:34:187:34 | 1 |
| cflow.cs:187:34:187:39 | ... == ... | cflow.cs:187:34:187:34 | 1 |
| cflow.cs:187:34:187:49 | ... && ... | cflow.cs:187:34:187:49 | ... && ... |
| cflow.cs:187:34:187:49 | ... && ... | cflow.cs:187:34:187:34 | 1 |
| cflow.cs:187:39:187:39 | 3 | cflow.cs:187:39:187:39 | 3 |
| cflow.cs:187:44:187:44 | 3 | cflow.cs:187:44:187:44 | 3 |
| cflow.cs:187:44:187:49 | ... == ... | cflow.cs:187:44:187:44 | 3 |
@@ -2924,54 +2924,54 @@
| cflow.cs:190:31:190:50 | "This should happen" | cflow.cs:190:31:190:50 | "This should happen" |
| cflow.cs:194:5:206:5 | {...} | cflow.cs:194:5:206:5 | {...} |
| cflow.cs:195:9:195:57 | ... ...; | cflow.cs:195:9:195:57 | ... ...; |
| cflow.cs:195:13:195:56 | Boolean b = ... | cflow.cs:195:17:195:56 | ... && ... |
| cflow.cs:195:13:195:56 | Boolean b = ... | cflow.cs:195:17:195:21 | this access |
| cflow.cs:195:17:195:21 | access to field Field | cflow.cs:195:17:195:21 | this access |
| cflow.cs:195:17:195:21 | this access | cflow.cs:195:17:195:21 | this access |
| cflow.cs:195:17:195:28 | access to property Length | cflow.cs:195:17:195:21 | this access |
| cflow.cs:195:17:195:32 | ... > ... | cflow.cs:195:17:195:21 | this access |
| cflow.cs:195:17:195:56 | ... && ... | cflow.cs:195:17:195:56 | ... && ... |
| cflow.cs:195:17:195:56 | ... && ... | cflow.cs:195:17:195:21 | this access |
| cflow.cs:195:32:195:32 | 0 | cflow.cs:195:32:195:32 | 0 |
| cflow.cs:195:37:195:56 | !... | cflow.cs:195:37:195:56 | !... |
| cflow.cs:195:37:195:56 | !... | cflow.cs:195:39:195:43 | this access |
| cflow.cs:195:39:195:43 | access to field Field | cflow.cs:195:39:195:43 | this access |
| cflow.cs:195:39:195:43 | this access | cflow.cs:195:39:195:43 | this access |
| cflow.cs:195:39:195:50 | access to property Length | cflow.cs:195:39:195:43 | this access |
| cflow.cs:195:39:195:55 | ... == ... | cflow.cs:195:39:195:43 | this access |
| cflow.cs:195:55:195:55 | 1 | cflow.cs:195:55:195:55 | 1 |
| cflow.cs:197:9:198:49 | if (...) ... | cflow.cs:197:9:198:49 | if (...) ... |
| cflow.cs:197:13:197:47 | !... | cflow.cs:197:13:197:47 | !... |
| cflow.cs:197:13:197:47 | !... | cflow.cs:197:15:197:19 | this access |
| cflow.cs:197:15:197:19 | access to field Field | cflow.cs:197:15:197:19 | this access |
| cflow.cs:197:15:197:19 | this access | cflow.cs:197:15:197:19 | this access |
| cflow.cs:197:15:197:26 | access to property Length | cflow.cs:197:15:197:19 | this access |
| cflow.cs:197:15:197:31 | ... == ... | cflow.cs:197:15:197:19 | this access |
| cflow.cs:197:15:197:46 | ... ? ... : ... | cflow.cs:197:15:197:46 | ... ? ... : ... |
| cflow.cs:197:15:197:46 | ... ? ... : ... | cflow.cs:197:15:197:19 | this access |
| cflow.cs:197:31:197:31 | 0 | cflow.cs:197:31:197:31 | 0 |
| cflow.cs:197:35:197:39 | false | cflow.cs:197:35:197:39 | false |
| cflow.cs:197:43:197:46 | true | cflow.cs:197:43:197:46 | true |
| cflow.cs:198:13:198:48 | ... = ... | cflow.cs:198:17:198:48 | ... ? ... : ... |
| cflow.cs:198:13:198:48 | ... = ... | cflow.cs:198:17:198:21 | this access |
| cflow.cs:198:13:198:49 | ...; | cflow.cs:198:13:198:49 | ...; |
| cflow.cs:198:17:198:21 | access to field Field | cflow.cs:198:17:198:21 | this access |
| cflow.cs:198:17:198:21 | this access | cflow.cs:198:17:198:21 | this access |
| cflow.cs:198:17:198:28 | access to property Length | cflow.cs:198:17:198:21 | this access |
| cflow.cs:198:17:198:33 | ... == ... | cflow.cs:198:17:198:21 | this access |
| cflow.cs:198:17:198:48 | ... ? ... : ... | cflow.cs:198:17:198:48 | ... ? ... : ... |
| cflow.cs:198:17:198:48 | ... ? ... : ... | cflow.cs:198:17:198:21 | this access |
| cflow.cs:198:33:198:33 | 0 | cflow.cs:198:33:198:33 | 0 |
| cflow.cs:198:37:198:41 | false | cflow.cs:198:37:198:41 | false |
| cflow.cs:198:45:198:48 | true | cflow.cs:198:45:198:48 | true |
| cflow.cs:200:9:205:9 | if (...) ... | cflow.cs:200:9:205:9 | if (...) ... |
| cflow.cs:200:13:200:32 | !... | cflow.cs:200:13:200:32 | !... |
| cflow.cs:200:13:200:62 | ... \|\| ... | cflow.cs:200:13:200:62 | ... \|\| ... |
| cflow.cs:200:13:200:32 | !... | cflow.cs:200:15:200:19 | this access |
| cflow.cs:200:13:200:62 | ... \|\| ... | cflow.cs:200:15:200:19 | this access |
| cflow.cs:200:15:200:19 | access to field Field | cflow.cs:200:15:200:19 | this access |
| cflow.cs:200:15:200:19 | this access | cflow.cs:200:15:200:19 | this access |
| cflow.cs:200:15:200:26 | access to property Length | cflow.cs:200:15:200:19 | this access |
| cflow.cs:200:15:200:31 | ... == ... | cflow.cs:200:15:200:19 | this access |
| cflow.cs:200:31:200:31 | 0 | cflow.cs:200:31:200:31 | 0 |
| cflow.cs:200:37:200:62 | !... | cflow.cs:200:37:200:62 | !... |
| cflow.cs:200:38:200:62 | !... | cflow.cs:200:38:200:62 | !... |
| cflow.cs:200:37:200:62 | !... | cflow.cs:200:40:200:44 | this access |
| cflow.cs:200:38:200:62 | !... | cflow.cs:200:40:200:44 | this access |
| cflow.cs:200:40:200:44 | access to field Field | cflow.cs:200:40:200:44 | this access |
| cflow.cs:200:40:200:44 | this access | cflow.cs:200:40:200:44 | this access |
| cflow.cs:200:40:200:51 | access to property Length | cflow.cs:200:40:200:44 | this access |
| cflow.cs:200:40:200:56 | ... == ... | cflow.cs:200:40:200:44 | this access |
| cflow.cs:200:40:200:61 | ... && ... | cflow.cs:200:40:200:61 | ... && ... |
| cflow.cs:200:40:200:61 | ... && ... | cflow.cs:200:40:200:44 | this access |
| cflow.cs:200:56:200:56 | 1 | cflow.cs:200:56:200:56 | 1 |
| cflow.cs:200:61:200:61 | access to local variable b | cflow.cs:200:61:200:61 | access to local variable b |
| cflow.cs:201:9:205:9 | {...} | cflow.cs:201:9:205:9 | {...} |
@@ -3046,8 +3046,8 @@
| cflow.cs:241:5:259:5 | {...} | cflow.cs:241:5:259:5 | {...} |
| cflow.cs:242:9:242:13 | Label: | cflow.cs:242:9:242:13 | Label: |
| cflow.cs:242:16:242:45 | if (...) ... | cflow.cs:242:16:242:45 | if (...) ... |
| cflow.cs:242:20:242:40 | !... | cflow.cs:242:20:242:40 | !... |
| cflow.cs:242:21:242:40 | !... | cflow.cs:242:21:242:40 | !... |
| cflow.cs:242:20:242:40 | !... | cflow.cs:242:23:242:27 | this access |
| cflow.cs:242:21:242:40 | !... | cflow.cs:242:23:242:27 | this access |
| cflow.cs:242:23:242:27 | access to field Field | cflow.cs:242:23:242:27 | this access |
| cflow.cs:242:23:242:27 | this access | cflow.cs:242:23:242:27 | this access |
| cflow.cs:242:23:242:34 | access to property Length | cflow.cs:242:23:242:27 | this access |
@@ -3124,8 +3124,8 @@
| cflow.cs:300:9:300:72 | object creation of type NegationInConstructor | cflow.cs:300:38:300:38 | 0 |
| cflow.cs:300:9:300:73 | ...; | cflow.cs:300:9:300:73 | ...; |
| cflow.cs:300:38:300:38 | 0 | cflow.cs:300:38:300:38 | 0 |
| cflow.cs:300:44:300:51 | !... | cflow.cs:300:44:300:51 | !... |
| cflow.cs:300:44:300:64 | ... && ... | cflow.cs:300:44:300:64 | ... && ... |
| cflow.cs:300:44:300:51 | !... | cflow.cs:300:46:300:46 | access to parameter i |
| cflow.cs:300:44:300:64 | ... && ... | cflow.cs:300:46:300:46 | access to parameter i |
| cflow.cs:300:46:300:46 | access to parameter i | cflow.cs:300:46:300:46 | access to parameter i |
| cflow.cs:300:46:300:50 | ... > ... | cflow.cs:300:46:300:46 | access to parameter i |
| cflow.cs:300:50:300:50 | 0 | cflow.cs:300:50:300:50 | 0 |

View File

@@ -1,6 +1,8 @@
booleanNode
| Assert.cs:58:16:58:32 | [b (line 56): false] String s = ... | b (line 56): false |
| Assert.cs:58:16:58:32 | [b (line 56): true] String s = ... | b (line 56): true |
| Assert.cs:58:20:58:32 | [b (line 56): false] ... ? ... : ... | b (line 56): false |
| Assert.cs:58:20:58:32 | [b (line 56): true] ... ? ... : ... | b (line 56): true |
| Assert.cs:58:24:58:27 | [b (line 56): true] null | b (line 56): true |
| Assert.cs:58:31:58:32 | [b (line 56): false] "" | b (line 56): false |
| Assert.cs:59:9:59:38 | [b (line 56): false] ...; | b (line 56): false |
@@ -9,14 +11,14 @@ booleanNode
| Assert.cs:59:23:59:23 | [b (line 56): true] access to local variable s | b (line 56): true |
| Assert.cs:59:23:59:31 | [b (line 56): false] ... != ... | b (line 56): false |
| Assert.cs:59:23:59:31 | [b (line 56): true] ... != ... | b (line 56): true |
| Assert.cs:59:23:59:36 | [b (line 56): false] ... && ... | b (line 56): false |
| Assert.cs:59:23:59:36 | [b (line 56): true] ... && ... | b (line 56): true |
| Assert.cs:59:28:59:31 | [b (line 56): false] null | b (line 56): false |
| Assert.cs:59:28:59:31 | [b (line 56): true] null | b (line 56): true |
| Assert.cs:59:36:59:36 | [b (line 56): false] access to parameter b | b (line 56): false |
| Assert.cs:59:36:59:36 | [b (line 56): true] access to parameter b | b (line 56): true |
| Assert.cs:65:16:65:32 | [b (line 63): false] String s = ... | b (line 63): false |
| Assert.cs:65:16:65:32 | [b (line 63): true] String s = ... | b (line 63): true |
| Assert.cs:65:20:65:32 | [b (line 63): false] ... ? ... : ... | b (line 63): false |
| Assert.cs:65:20:65:32 | [b (line 63): true] ... ? ... : ... | b (line 63): true |
| Assert.cs:65:24:65:27 | [b (line 63): true] null | b (line 63): true |
| Assert.cs:65:31:65:32 | [b (line 63): false] "" | b (line 63): false |
| Assert.cs:66:9:66:39 | [b (line 63): false] ...; | b (line 63): false |
@@ -25,14 +27,14 @@ booleanNode
| Assert.cs:66:24:66:24 | [b (line 63): true] access to local variable s | b (line 63): true |
| Assert.cs:66:24:66:32 | [b (line 63): false] ... == ... | b (line 63): false |
| Assert.cs:66:24:66:32 | [b (line 63): true] ... == ... | b (line 63): true |
| Assert.cs:66:24:66:37 | [b (line 63): false] ... \|\| ... | b (line 63): false |
| Assert.cs:66:24:66:37 | [b (line 63): true] ... \|\| ... | b (line 63): true |
| Assert.cs:66:29:66:32 | [b (line 63): false] null | b (line 63): false |
| Assert.cs:66:29:66:32 | [b (line 63): true] null | b (line 63): true |
| Assert.cs:66:37:66:37 | [b (line 63): false] access to parameter b | b (line 63): false |
| Assert.cs:66:37:66:37 | [b (line 63): true] access to parameter b | b (line 63): true |
| Assert.cs:72:16:72:32 | [b (line 70): false] String s = ... | b (line 70): false |
| Assert.cs:72:16:72:32 | [b (line 70): true] String s = ... | b (line 70): true |
| Assert.cs:72:20:72:32 | [b (line 70): false] ... ? ... : ... | b (line 70): false |
| Assert.cs:72:20:72:32 | [b (line 70): true] ... ? ... : ... | b (line 70): true |
| Assert.cs:72:24:72:27 | [b (line 70): true] null | b (line 70): true |
| Assert.cs:72:31:72:32 | [b (line 70): false] "" | b (line 70): false |
| Assert.cs:73:9:73:38 | [b (line 70): false] ...; | b (line 70): false |
@@ -41,14 +43,14 @@ booleanNode
| Assert.cs:73:23:73:23 | [b (line 70): true] access to local variable s | b (line 70): true |
| Assert.cs:73:23:73:31 | [b (line 70): false] ... == ... | b (line 70): false |
| Assert.cs:73:23:73:31 | [b (line 70): true] ... == ... | b (line 70): true |
| Assert.cs:73:23:73:36 | [b (line 70): false] ... && ... | b (line 70): false |
| Assert.cs:73:23:73:36 | [b (line 70): true] ... && ... | b (line 70): true |
| Assert.cs:73:28:73:31 | [b (line 70): false] null | b (line 70): false |
| Assert.cs:73:28:73:31 | [b (line 70): true] null | b (line 70): true |
| Assert.cs:73:36:73:36 | [b (line 70): false] access to parameter b | b (line 70): false |
| Assert.cs:73:36:73:36 | [b (line 70): true] access to parameter b | b (line 70): true |
| Assert.cs:79:16:79:32 | [b (line 77): false] String s = ... | b (line 77): false |
| Assert.cs:79:16:79:32 | [b (line 77): true] String s = ... | b (line 77): true |
| Assert.cs:79:20:79:32 | [b (line 77): false] ... ? ... : ... | b (line 77): false |
| Assert.cs:79:20:79:32 | [b (line 77): true] ... ? ... : ... | b (line 77): true |
| Assert.cs:79:24:79:27 | [b (line 77): true] null | b (line 77): true |
| Assert.cs:79:31:79:32 | [b (line 77): false] "" | b (line 77): false |
| Assert.cs:80:9:80:39 | [b (line 77): false] ...; | b (line 77): false |
@@ -57,14 +59,14 @@ booleanNode
| Assert.cs:80:24:80:24 | [b (line 77): true] access to local variable s | b (line 77): true |
| Assert.cs:80:24:80:32 | [b (line 77): false] ... != ... | b (line 77): false |
| Assert.cs:80:24:80:32 | [b (line 77): true] ... != ... | b (line 77): true |
| Assert.cs:80:24:80:37 | [b (line 77): false] ... \|\| ... | b (line 77): false |
| Assert.cs:80:24:80:37 | [b (line 77): true] ... \|\| ... | b (line 77): true |
| Assert.cs:80:29:80:32 | [b (line 77): false] null | b (line 77): false |
| Assert.cs:80:29:80:32 | [b (line 77): true] null | b (line 77): true |
| Assert.cs:80:37:80:37 | [b (line 77): false] access to parameter b | b (line 77): false |
| Assert.cs:80:37:80:37 | [b (line 77): true] access to parameter b | b (line 77): true |
| Assert.cs:86:16:86:32 | [b (line 84): false] String s = ... | b (line 84): false |
| Assert.cs:86:16:86:32 | [b (line 84): true] String s = ... | b (line 84): true |
| Assert.cs:86:20:86:32 | [b (line 84): false] ... ? ... : ... | b (line 84): false |
| Assert.cs:86:20:86:32 | [b (line 84): true] ... ? ... : ... | b (line 84): true |
| Assert.cs:86:24:86:27 | [b (line 84): true] null | b (line 84): true |
| Assert.cs:86:31:86:32 | [b (line 84): false] "" | b (line 84): false |
| Assert.cs:87:9:87:31 | [assertion failure, b (line 84): false] call to method Assert | b (line 84): false |
@@ -278,8 +280,9 @@ booleanNode
| Assert.cs:115:23:115:23 | [b (line 84): true] access to local variable s | b (line 84): true |
| Assert.cs:115:23:115:31 | [b (line 84): false] ... != ... | b (line 84): false |
| Assert.cs:115:23:115:31 | [b (line 84): true] ... != ... | b (line 84): true |
| Assert.cs:115:23:115:36 | [b (line 84): false] ... && ... | b (line 84): false |
| Assert.cs:115:23:115:36 | [b (line 84): true] ... && ... | b (line 84): true |
| Assert.cs:115:23:115:36 | [false, b (line 84): false] ... && ... | b (line 84): false |
| Assert.cs:115:23:115:36 | [false, b (line 84): true] ... && ... | b (line 84): true |
| Assert.cs:115:23:115:36 | [true, b (line 84): true] ... && ... | b (line 84): true |
| Assert.cs:115:28:115:31 | [b (line 84): false] null | b (line 84): false |
| Assert.cs:115:28:115:31 | [b (line 84): true] null | b (line 84): true |
| Assert.cs:115:36:115:36 | [b (line 84): false] access to parameter b | b (line 84): false |
@@ -298,9 +301,10 @@ booleanNode
| Assert.cs:119:9:119:40 | [b (line 84): true] ...; | b (line 84): true |
| Assert.cs:119:24:119:24 | [b (line 84): true] access to local variable s | b (line 84): true |
| Assert.cs:119:24:119:32 | [b (line 84): true] ... == ... | b (line 84): true |
| Assert.cs:119:24:119:38 | [b (line 84): true] ... \|\| ... | b (line 84): true |
| Assert.cs:119:24:119:38 | [false, b (line 84): true] ... \|\| ... | b (line 84): true |
| Assert.cs:119:24:119:38 | [true, b (line 84): true] ... \|\| ... | b (line 84): true |
| Assert.cs:119:29:119:32 | [b (line 84): true] null | b (line 84): true |
| Assert.cs:119:37:119:38 | [b (line 84): true] !... | b (line 84): true |
| Assert.cs:119:37:119:38 | [false, b (line 84): true] !... | b (line 84): true |
| Assert.cs:119:38:119:38 | [b (line 84): true] access to parameter b | b (line 84): true |
| Assert.cs:120:9:120:35 | [b (line 84): true] call to method WriteLine | b (line 84): true |
| Assert.cs:120:9:120:36 | [b (line 84): true] ...; | b (line 84): true |
@@ -316,7 +320,8 @@ booleanNode
| Assert.cs:123:9:123:38 | [b (line 84): true] ...; | b (line 84): true |
| Assert.cs:123:23:123:23 | [b (line 84): true] access to local variable s | b (line 84): true |
| Assert.cs:123:23:123:31 | [b (line 84): true] ... == ... | b (line 84): true |
| Assert.cs:123:23:123:36 | [b (line 84): true] ... && ... | b (line 84): true |
| Assert.cs:123:23:123:36 | [false, b (line 84): true] ... && ... | b (line 84): true |
| Assert.cs:123:23:123:36 | [true, b (line 84): true] ... && ... | b (line 84): true |
| Assert.cs:123:28:123:31 | [b (line 84): true] null | b (line 84): true |
| Assert.cs:123:36:123:36 | [b (line 84): true] access to parameter b | b (line 84): true |
| Assert.cs:124:9:124:35 | [b (line 84): true] call to method WriteLine | b (line 84): true |
@@ -331,17 +336,13 @@ booleanNode
| Assert.cs:127:9:127:40 | [b (line 84): true] ...; | b (line 84): true |
| Assert.cs:127:24:127:24 | [b (line 84): true] access to local variable s | b (line 84): true |
| Assert.cs:127:24:127:32 | [b (line 84): true] ... != ... | b (line 84): true |
| Assert.cs:127:24:127:38 | [b (line 84): true] ... \|\| ... | b (line 84): true |
| Assert.cs:127:29:127:32 | [b (line 84): true] null | b (line 84): true |
| Assert.cs:127:37:127:38 | [b (line 84): true] !... | b (line 84): true |
| Assert.cs:127:38:127:38 | [b (line 84): true] access to parameter b | b (line 84): true |
| Conditions.cs:6:13:6:13 | [inc (line 3): true] access to parameter x | inc (line 3): true |
| Conditions.cs:6:13:6:15 | [inc (line 3): true] ...++ | inc (line 3): true |
| Conditions.cs:6:13:6:16 | [inc (line 3): true] ...; | inc (line 3): true |
| Conditions.cs:7:9:8:16 | [inc (line 3): false] if (...) ... | inc (line 3): false |
| Conditions.cs:7:9:8:16 | [inc (line 3): true] if (...) ... | inc (line 3): true |
| Conditions.cs:7:13:7:16 | [inc (line 3): false] !... | inc (line 3): false |
| Conditions.cs:7:13:7:16 | [inc (line 3): true] !... | inc (line 3): true |
| Conditions.cs:7:14:7:16 | [inc (line 3): false] access to parameter inc | inc (line 3): false |
| Conditions.cs:7:14:7:16 | [inc (line 3): true] access to parameter inc | inc (line 3): true |
| Conditions.cs:15:13:15:13 | [b (line 11): true] access to local variable x | b (line 11): true |
@@ -357,8 +358,6 @@ booleanNode
| Conditions.cs:16:17:16:17 | [b (line 11): true] 0 | b (line 11): true |
| Conditions.cs:17:13:18:20 | [b (line 11): false] if (...) ... | b (line 11): false |
| Conditions.cs:17:13:18:20 | [b (line 11): true] if (...) ... | b (line 11): true |
| Conditions.cs:17:17:17:18 | [b (line 11): false] !... | b (line 11): false |
| Conditions.cs:17:17:17:18 | [b (line 11): true] !... | b (line 11): true |
| Conditions.cs:17:18:17:18 | [b (line 11): false] access to parameter b | b (line 11): false |
| Conditions.cs:17:18:17:18 | [b (line 11): true] access to parameter b | b (line 11): true |
| Conditions.cs:27:17:27:17 | [b2 (line 22): true] access to local variable x | b2 (line 22): true |
@@ -430,10 +429,10 @@ booleanNode
| Conditions.cs:107:24:107:24 | [b (line 102): true] 0 | b (line 102): true |
| Conditions.cs:108:13:109:24 | [b (line 102): false] if (...) ... | b (line 102): false |
| Conditions.cs:108:13:109:24 | [b (line 102): true] if (...) ... | b (line 102): true |
| Conditions.cs:108:17:108:18 | [b (line 102): false] !... | b (line 102): false |
| Conditions.cs:108:17:108:18 | [b (line 102): true] !... | b (line 102): true |
| Conditions.cs:108:18:108:18 | [b (line 102): false] access to parameter b | b (line 102): false |
| Conditions.cs:108:18:108:18 | [b (line 102): true] access to parameter b | b (line 102): true |
| Conditions.cs:119:17:119:21 | [false, last (line 118): true] !... | last (line 118): true |
| Conditions.cs:119:17:119:21 | [true, last (line 118): false] !... | last (line 118): false |
| Conditions.cs:120:17:120:22 | [last (line 118): false] ... = ... | last (line 118): false |
| Conditions.cs:120:17:120:23 | [last (line 118): false] ...; | last (line 118): false |
| Conditions.cs:120:21:120:22 | [last (line 118): false] "" | last (line 118): false |
@@ -498,6 +497,8 @@ booleanNode
| Conditions.cs:137:21:137:38 | [Field1 (line 129): true, Field2 (line 129): true] ...; | Field2 (line 129): true |
| Conditions.cs:145:13:145:29 | [b (line 143): false] String s = ... | b (line 143): false |
| Conditions.cs:145:13:145:29 | [b (line 143): true] String s = ... | b (line 143): true |
| Conditions.cs:145:17:145:29 | [b (line 143): false] ... ? ... : ... | b (line 143): false |
| Conditions.cs:145:17:145:29 | [b (line 143): true] ... ? ... : ... | b (line 143): true |
| Conditions.cs:145:21:145:23 | [b (line 143): true] "a" | b (line 143): true |
| Conditions.cs:145:27:145:29 | [b (line 143): false] "b" | b (line 143): false |
| Conditions.cs:146:9:149:49 | [b (line 143): false] if (...) ... | b (line 143): false |
@@ -720,10 +721,14 @@ finallyNode
| Finally.cs:114:13:115:41 | [finally: exception(NullReferenceException)] if (...) ... | Finally.cs:105:9:118:9 | try {...} ... |
| Finally.cs:114:13:115:41 | [finally: exception(OutOfMemoryException)] if (...) ... | Finally.cs:105:9:118:9 | try {...} ... |
| Finally.cs:114:13:115:41 | [finally: return] if (...) ... | Finally.cs:105:9:118:9 | try {...} ... |
| Finally.cs:114:17:114:36 | [finally: exception(Exception)] !... | Finally.cs:105:9:118:9 | try {...} ... |
| Finally.cs:114:17:114:36 | [finally: exception(NullReferenceException)] !... | Finally.cs:105:9:118:9 | try {...} ... |
| Finally.cs:114:17:114:36 | [finally: exception(OutOfMemoryException)] !... | Finally.cs:105:9:118:9 | try {...} ... |
| Finally.cs:114:17:114:36 | [finally: return] !... | Finally.cs:105:9:118:9 | try {...} ... |
| Finally.cs:114:17:114:36 | [false, finally: exception(Exception)] !... | Finally.cs:105:9:118:9 | try {...} ... |
| Finally.cs:114:17:114:36 | [false, finally: exception(NullReferenceException)] !... | Finally.cs:105:9:118:9 | try {...} ... |
| Finally.cs:114:17:114:36 | [false, finally: exception(OutOfMemoryException)] !... | Finally.cs:105:9:118:9 | try {...} ... |
| Finally.cs:114:17:114:36 | [false, finally: return] !... | Finally.cs:105:9:118:9 | try {...} ... |
| Finally.cs:114:17:114:36 | [true, finally: exception(Exception)] !... | Finally.cs:105:9:118:9 | try {...} ... |
| Finally.cs:114:17:114:36 | [true, finally: exception(NullReferenceException)] !... | Finally.cs:105:9:118:9 | try {...} ... |
| Finally.cs:114:17:114:36 | [true, finally: exception(OutOfMemoryException)] !... | Finally.cs:105:9:118:9 | try {...} ... |
| Finally.cs:114:17:114:36 | [true, finally: return] !... | Finally.cs:105:9:118:9 | try {...} ... |
| Finally.cs:114:19:114:23 | [finally: exception(Exception)] access to field Field | Finally.cs:105:9:118:9 | try {...} ... |
| Finally.cs:114:19:114:23 | [finally: exception(Exception)] this access | Finally.cs:105:9:118:9 | try {...} ... |
| Finally.cs:114:19:114:23 | [finally: exception(NullReferenceException)] access to field Field | Finally.cs:105:9:118:9 | try {...} ... |
@@ -1014,11 +1019,10 @@ entryPoint
| CompileTimeOperators.cs:15:10:15:15 | Typeof | CompileTimeOperators.cs:16:5:18:5 | {...} |
| CompileTimeOperators.cs:20:12:20:17 | Nameof | CompileTimeOperators.cs:21:5:23:5 | {...} |
| CompileTimeOperators.cs:28:10:28:10 | M | CompileTimeOperators.cs:29:5:41:5 | {...} |
| ConditionalAccess.cs:1:7:1:23 | ConditionalAccess | ConditionalAccess.cs:30:32:30:32 | 0 |
| ConditionalAccess.cs:3:12:3:13 | M1 | ConditionalAccess.cs:3:26:3:26 | access to parameter i |
| ConditionalAccess.cs:5:10:5:11 | M2 | ConditionalAccess.cs:5:26:5:26 | access to parameter s |
| ConditionalAccess.cs:7:10:7:11 | M3 | ConditionalAccess.cs:7:39:7:46 | ... ?? ... |
| ConditionalAccess.cs:9:9:9:10 | M4 | ConditionalAccess.cs:9:25:9:38 | ... ?? ... |
| ConditionalAccess.cs:7:10:7:11 | M3 | ConditionalAccess.cs:7:39:7:40 | access to parameter s1 |
| ConditionalAccess.cs:9:9:9:10 | M4 | ConditionalAccess.cs:9:25:9:25 | access to parameter s |
| ConditionalAccess.cs:11:9:11:10 | M5 | ConditionalAccess.cs:12:5:17:5 | {...} |
| ConditionalAccess.cs:19:12:19:13 | M6 | ConditionalAccess.cs:19:40:19:41 | access to parameter s1 |
| ConditionalAccess.cs:21:10:21:11 | M7 | ConditionalAccess.cs:22:5:26:5 | {...} |
@@ -1155,11 +1159,11 @@ entryPoint
| MultiImplementationB.cs:27:21:27:23 | get_P3 | MultiImplementationA.cs:30:34:30:37 | null |
| MultiImplementationB.cs:32:9:32:10 | M1 | MultiImplementationA.cs:36:14:36:28 | {...} |
| MultiImplementationB.cs:32:9:32:10 | M1 | MultiImplementationB.cs:32:17:32:17 | 0 |
| NullCoalescing.cs:3:9:3:10 | M1 | NullCoalescing.cs:3:23:3:28 | ... ?? ... |
| NullCoalescing.cs:5:9:5:10 | M2 | NullCoalescing.cs:5:24:5:43 | ... ? ... : ... |
| NullCoalescing.cs:7:12:7:13 | M3 | NullCoalescing.cs:7:40:7:53 | ... ?? ... |
| NullCoalescing.cs:9:12:9:13 | M4 | NullCoalescing.cs:9:36:9:58 | ... ?? ... |
| NullCoalescing.cs:11:9:11:10 | M5 | NullCoalescing.cs:11:43:11:68 | ... ? ... : ... |
| NullCoalescing.cs:3:9:3:10 | M1 | NullCoalescing.cs:3:23:3:23 | access to parameter i |
| NullCoalescing.cs:5:9:5:10 | M2 | NullCoalescing.cs:5:25:5:25 | access to parameter b |
| NullCoalescing.cs:7:12:7:13 | M3 | NullCoalescing.cs:7:40:7:41 | access to parameter s1 |
| NullCoalescing.cs:9:12:9:13 | M4 | NullCoalescing.cs:9:37:9:37 | access to parameter b |
| NullCoalescing.cs:11:9:11:10 | M5 | NullCoalescing.cs:11:44:11:45 | access to parameter b1 |
| NullCoalescing.cs:13:10:13:11 | M6 | NullCoalescing.cs:14:5:18:5 | {...} |
| Patterns.cs:5:10:5:13 | Test | Patterns.cs:6:5:43:5 | {...} |
| PostDominance.cs:5:10:5:11 | M1 | PostDominance.cs:6:5:8:5 | {...} |

View File

@@ -14,7 +14,6 @@
| CSharp7.cs:33:16:33:16 | access to parameter i | CSharp7.cs:33:16:33:20 | ... > ... |
| CSharp7.cs:33:16:33:16 | access to parameter i | CSharp7.cs:33:24:33:24 | access to parameter i |
| CSharp7.cs:33:24:33:24 | access to parameter i | CSharp7.cs:33:16:33:59 | ... ? ... : ... |
| CSharp7.cs:33:28:33:59 | throw ... | CSharp7.cs:33:16:33:59 | ... ? ... : ... |
| CSharp7.cs:41:13:41:21 | "tainted" | CSharp7.cs:41:9:41:21 | SSA def(x) |
| CSharp7.cs:44:19:44:19 | x | CSharp7.cs:46:13:46:13 | access to parameter x |
| CSharp7.cs:46:13:46:13 | access to parameter x | CSharp7.cs:46:9:46:13 | SSA def(y) |
@@ -191,11 +190,13 @@
| CSharp7.cs:235:13:235:13 | access to local variable o | CSharp7.cs:235:18:235:23 | SSA def(i1) |
| CSharp7.cs:235:13:235:13 | access to local variable o | CSharp7.cs:239:18:239:18 | access to local variable o |
| CSharp7.cs:235:13:235:13 | access to local variable o | CSharp7.cs:250:17:250:17 | access to local variable o |
| CSharp7.cs:235:13:235:23 | ... is ... | CSharp7.cs:235:13:235:33 | ... && ... |
| CSharp7.cs:235:13:235:23 | ... is ... | CSharp7.cs:235:13:235:33 | [false] ... && ... |
| CSharp7.cs:235:13:235:23 | ... is ... | CSharp7.cs:235:13:235:33 | [true] ... && ... |
| CSharp7.cs:235:18:235:23 | SSA def(i1) | CSharp7.cs:235:28:235:29 | access to local variable i1 |
| CSharp7.cs:235:28:235:29 | access to local variable i1 | CSharp7.cs:235:28:235:33 | ... > ... |
| CSharp7.cs:235:28:235:29 | access to local variable i1 | CSharp7.cs:237:38:237:39 | access to local variable i1 |
| CSharp7.cs:235:28:235:33 | ... > ... | CSharp7.cs:235:13:235:33 | ... && ... |
| CSharp7.cs:235:28:235:33 | ... > ... | CSharp7.cs:235:13:235:33 | [false] ... && ... |
| CSharp7.cs:235:28:235:33 | ... > ... | CSharp7.cs:235:13:235:33 | [true] ... && ... |
| CSharp7.cs:237:33:237:36 | "int " | CSharp7.cs:237:31:237:41 | $"..." |
| CSharp7.cs:237:38:237:39 | access to local variable i1 | CSharp7.cs:237:31:237:41 | $"..." |
| CSharp7.cs:239:18:239:18 | access to local variable o | CSharp7.cs:239:23:239:31 | SSA def(s1) |
@@ -238,14 +239,16 @@
| CSharp7.cs:285:51:285:60 | access to property Value | CSharp7.cs:285:40:285:61 | (..., ...) |
| CSharp7.cs:287:39:287:42 | access to local variable list | CSharp7.cs:289:36:289:39 | access to local variable list |
| CSharp7.cs:289:36:289:39 | access to local variable list | CSharp7.cs:291:32:291:35 | access to local variable list |
| CSharp7.cs:299:18:299:22 | SSA def(x) | CSharp7.cs:299:25:299:44 | SSA phi(x) |
| CSharp7.cs:299:18:299:22 | SSA def(x) | CSharp7.cs:299:25:299:25 | SSA phi(x) |
| CSharp7.cs:299:22:299:22 | 0 | CSharp7.cs:299:18:299:22 | SSA def(x) |
| CSharp7.cs:299:25:299:25 | SSA phi(x) | CSharp7.cs:299:25:299:25 | access to local variable x |
| CSharp7.cs:299:25:299:25 | access to local variable x | CSharp7.cs:299:25:299:30 | ... < ... |
| CSharp7.cs:299:25:299:25 | access to local variable x | CSharp7.cs:299:35:299:35 | access to local variable x |
| CSharp7.cs:299:25:299:30 | ... < ... | CSharp7.cs:299:25:299:44 | ... && ... |
| CSharp7.cs:299:25:299:44 | SSA phi(x) | CSharp7.cs:299:25:299:25 | access to local variable x |
| CSharp7.cs:299:25:299:30 | ... < ... | CSharp7.cs:299:25:299:44 | [false] ... && ... |
| CSharp7.cs:299:25:299:30 | ... < ... | CSharp7.cs:299:25:299:44 | [true] ... && ... |
| CSharp7.cs:299:35:299:35 | access to local variable x | CSharp7.cs:299:40:299:44 | SSA def(y) |
| CSharp7.cs:299:35:299:35 | access to local variable x | CSharp7.cs:299:49:299:49 | access to local variable x |
| CSharp7.cs:299:35:299:44 | ... is ... | CSharp7.cs:299:25:299:44 | ... && ... |
| CSharp7.cs:299:35:299:44 | ... is ... | CSharp7.cs:299:25:299:44 | [false] ... && ... |
| CSharp7.cs:299:35:299:44 | ... is ... | CSharp7.cs:299:25:299:44 | [true] ... && ... |
| CSharp7.cs:299:40:299:44 | SSA def(y) | CSharp7.cs:301:31:301:31 | access to local variable y |
| CSharp7.cs:299:47:299:49 | SSA def(x) | CSharp7.cs:299:25:299:44 | SSA phi(x) |
| CSharp7.cs:299:47:299:49 | SSA def(x) | CSharp7.cs:299:25:299:25 | SSA phi(x) |

View File

@@ -4,9 +4,9 @@
| NullCoalescingAssignment.cs:7:9:7:24 | ... ...; | NullCoalescingAssignment.cs:7:20:7:23 | null | semmle.label | successor |
| NullCoalescingAssignment.cs:7:16:7:23 | Object o = ... | NullCoalescingAssignment.cs:8:9:8:19 | ...; | semmle.label | successor |
| NullCoalescingAssignment.cs:7:20:7:23 | null | NullCoalescingAssignment.cs:7:16:7:23 | Object o = ... | semmle.label | successor |
| NullCoalescingAssignment.cs:8:9:8:9 | access to local variable o | NullCoalescingAssignment.cs:8:9:8:18 | ... = ... | semmle.label | non-null |
| NullCoalescingAssignment.cs:8:9:8:9 | access to local variable o | NullCoalescingAssignment.cs:8:9:8:18 | ... ?? ... | semmle.label | non-null |
| NullCoalescingAssignment.cs:8:9:8:9 | access to local variable o | NullCoalescingAssignment.cs:8:15:8:18 | this access | semmle.label | null |
| NullCoalescingAssignment.cs:8:9:8:18 | ... = ... | NullCoalescingAssignment.cs:5:10:5:23 | exit NullCoalescing (normal) | semmle.label | successor |
| NullCoalescingAssignment.cs:8:9:8:18 | ... ?? ... | NullCoalescingAssignment.cs:8:9:8:9 | access to local variable o | semmle.label | successor |
| NullCoalescingAssignment.cs:8:9:8:19 | ...; | NullCoalescingAssignment.cs:8:9:8:18 | ... ?? ... | semmle.label | successor |
| NullCoalescingAssignment.cs:8:15:8:18 | this access | NullCoalescingAssignment.cs:8:9:8:18 | ... = ... | semmle.label | successor |
| NullCoalescingAssignment.cs:8:9:8:18 | ... ?? ... | NullCoalescingAssignment.cs:8:9:8:18 | ... = ... | semmle.label | successor |
| NullCoalescingAssignment.cs:8:9:8:19 | ...; | NullCoalescingAssignment.cs:8:9:8:9 | access to local variable o | semmle.label | successor |
| NullCoalescingAssignment.cs:8:15:8:18 | this access | NullCoalescingAssignment.cs:8:9:8:18 | ... ?? ... | semmle.label | successor |

View File

@@ -14,24 +14,26 @@
| patterns.cs:9:13:9:29 | ... is ... | patterns.cs:13:9:15:9 | if (...) ... | semmle.label | false |
| patterns.cs:9:18:9:29 | MyStruct ms1 | patterns.cs:9:13:9:29 | ... is ... | semmle.label | successor |
| patterns.cs:10:9:11:9 | {...} | patterns.cs:13:9:15:9 | if (...) ... | semmle.label | successor |
| patterns.cs:13:9:15:9 | if (...) ... | patterns.cs:13:13:13:56 | ... && ... | semmle.label | successor |
| patterns.cs:13:9:15:9 | if (...) ... | patterns.cs:13:13:13:13 | access to local variable o | semmle.label | successor |
| patterns.cs:13:13:13:13 | access to local variable o | patterns.cs:13:18:13:40 | MyStruct s | semmle.label | successor |
| patterns.cs:13:13:13:40 | ... is ... | patterns.cs:13:13:13:47 | [false] ... && ... | semmle.label | false |
| patterns.cs:13:13:13:40 | ... is ... | patterns.cs:13:45:13:45 | access to local variable x | semmle.label | true |
| patterns.cs:13:13:13:40 | ... is ... | patterns.cs:17:9:19:9 | if (...) ... | semmle.label | false |
| patterns.cs:13:13:13:47 | ... && ... | patterns.cs:13:13:13:13 | access to local variable o | semmle.label | successor |
| patterns.cs:13:13:13:56 | ... && ... | patterns.cs:13:13:13:47 | ... && ... | semmle.label | successor |
| patterns.cs:13:13:13:47 | [false] ... && ... | patterns.cs:13:13:13:56 | [false] ... && ... | semmle.label | false |
| patterns.cs:13:13:13:47 | [true] ... && ... | patterns.cs:13:52:13:52 | access to local variable s | semmle.label | true |
| patterns.cs:13:13:13:56 | [false] ... && ... | patterns.cs:17:9:19:9 | if (...) ... | semmle.label | false |
| patterns.cs:13:13:13:56 | [true] ... && ... | patterns.cs:14:9:15:9 | {...} | semmle.label | true |
| patterns.cs:13:18:13:40 | MyStruct s | patterns.cs:13:32:13:36 | Int32 x | semmle.label | successor |
| patterns.cs:13:18:13:40 | { ... } | patterns.cs:13:13:13:40 | ... is ... | semmle.label | successor |
| patterns.cs:13:27:13:38 | { ... } | patterns.cs:13:18:13:40 | { ... } | semmle.label | successor |
| patterns.cs:13:32:13:36 | Int32 x | patterns.cs:13:27:13:38 | { ... } | semmle.label | successor |
| patterns.cs:13:45:13:45 | access to local variable x | patterns.cs:13:47:13:47 | 4 | semmle.label | successor |
| patterns.cs:13:45:13:47 | ... < ... | patterns.cs:13:52:13:52 | access to local variable s | semmle.label | true |
| patterns.cs:13:45:13:47 | ... < ... | patterns.cs:17:9:19:9 | if (...) ... | semmle.label | false |
| patterns.cs:13:45:13:47 | ... < ... | patterns.cs:13:13:13:47 | [false] ... && ... | semmle.label | false |
| patterns.cs:13:45:13:47 | ... < ... | patterns.cs:13:13:13:47 | [true] ... && ... | semmle.label | true |
| patterns.cs:13:47:13:47 | 4 | patterns.cs:13:45:13:47 | ... < ... | semmle.label | successor |
| patterns.cs:13:52:13:52 | access to local variable s | patterns.cs:13:52:13:54 | access to property Y | semmle.label | successor |
| patterns.cs:13:52:13:54 | access to property Y | patterns.cs:13:56:13:56 | 2 | semmle.label | successor |
| patterns.cs:13:52:13:56 | ... < ... | patterns.cs:14:9:15:9 | {...} | semmle.label | true |
| patterns.cs:13:52:13:56 | ... < ... | patterns.cs:17:9:19:9 | if (...) ... | semmle.label | false |
| patterns.cs:13:52:13:56 | ... < ... | patterns.cs:13:13:13:56 | [false] ... && ... | semmle.label | false |
| patterns.cs:13:52:13:56 | ... < ... | patterns.cs:13:13:13:56 | [true] ... && ... | semmle.label | true |
| patterns.cs:13:56:13:56 | 2 | patterns.cs:13:52:13:56 | ... < ... | semmle.label | successor |
| patterns.cs:14:9:15:9 | {...} | patterns.cs:17:9:19:9 | if (...) ... | semmle.label | successor |
| patterns.cs:17:9:19:9 | if (...) ... | patterns.cs:17:13:17:13 | access to local variable o | semmle.label | successor |

View File

@@ -2,85 +2,85 @@
| patterns.cs:98:10:98:20 | exit Expressions (abnormal) | patterns.cs:98:10:98:20 | exit Expressions | semmle.label | successor |
| patterns.cs:98:10:98:20 | exit Expressions (normal) | patterns.cs:98:10:98:20 | exit Expressions | semmle.label | successor |
| patterns.cs:99:5:121:5 | {...} | patterns.cs:100:9:103:10 | ... ...; | semmle.label | successor |
| patterns.cs:100:9:103:10 | ... ...; | patterns.cs:100:20:103:9 | ... switch { ... } | semmle.label | successor |
| patterns.cs:100:9:103:10 | ... ...; | patterns.cs:100:20:100:20 | access to parameter x | semmle.label | successor |
| patterns.cs:100:13:103:9 | String size = ... | patterns.cs:105:9:105:27 | ... ...; | semmle.label | successor |
| patterns.cs:100:20:100:20 | access to parameter x | patterns.cs:101:13:101:40 | ... => ... | semmle.label | successor |
| patterns.cs:100:20:103:9 | ... switch { ... } | patterns.cs:100:20:100:20 | access to parameter x | semmle.label | successor |
| patterns.cs:100:20:100:20 | access to parameter x | patterns.cs:101:13:101:17 | Int32 y | semmle.label | successor |
| patterns.cs:100:20:103:9 | ... switch { ... } | patterns.cs:100:13:103:9 | String size = ... | semmle.label | successor |
| patterns.cs:101:13:101:17 | Int32 y | patterns.cs:101:24:101:24 | access to local variable y | semmle.label | match |
| patterns.cs:101:13:101:17 | Int32 y | patterns.cs:102:13:102:24 | ... => ... | semmle.label | no-match |
| patterns.cs:101:13:101:40 | ... => ... | patterns.cs:101:13:101:17 | Int32 y | semmle.label | successor |
| patterns.cs:101:13:101:17 | Int32 y | patterns.cs:102:13:102:13 | _ | semmle.label | no-match |
| patterns.cs:101:13:101:40 | ... => ... | patterns.cs:100:20:103:9 | ... switch { ... } | semmle.label | successor |
| patterns.cs:101:24:101:24 | access to local variable y | patterns.cs:101:28:101:29 | 10 | semmle.label | successor |
| patterns.cs:101:24:101:29 | ... > ... | patterns.cs:101:34:101:40 | "large" | semmle.label | true |
| patterns.cs:101:24:101:29 | ... > ... | patterns.cs:102:13:102:24 | ... => ... | semmle.label | false |
| patterns.cs:101:24:101:29 | ... > ... | patterns.cs:102:13:102:13 | _ | semmle.label | false |
| patterns.cs:101:28:101:29 | 10 | patterns.cs:101:24:101:29 | ... > ... | semmle.label | successor |
| patterns.cs:101:34:101:40 | "large" | patterns.cs:100:13:103:9 | String size = ... | semmle.label | successor |
| patterns.cs:101:34:101:40 | "large" | patterns.cs:101:13:101:40 | ... => ... | semmle.label | successor |
| patterns.cs:102:13:102:13 | _ | patterns.cs:102:18:102:24 | "small" | semmle.label | match |
| patterns.cs:102:13:102:24 | ... => ... | patterns.cs:102:13:102:13 | _ | semmle.label | successor |
| patterns.cs:102:18:102:24 | "small" | patterns.cs:100:13:103:9 | String size = ... | semmle.label | successor |
| patterns.cs:102:13:102:24 | ... => ... | patterns.cs:100:20:103:9 | ... switch { ... } | semmle.label | successor |
| patterns.cs:102:18:102:24 | "small" | patterns.cs:102:13:102:24 | ... => ... | semmle.label | successor |
| patterns.cs:105:9:105:27 | ... ...; | patterns.cs:105:18:105:18 | 0 | semmle.label | successor |
| patterns.cs:105:13:105:18 | Int32 x0 = ... | patterns.cs:105:26:105:26 | 0 | semmle.label | successor |
| patterns.cs:105:18:105:18 | 0 | patterns.cs:105:13:105:18 | Int32 x0 = ... | semmle.label | successor |
| patterns.cs:105:21:105:26 | Int32 y0 = ... | patterns.cs:108:9:112:10 | ...; | semmle.label | successor |
| patterns.cs:105:26:105:26 | 0 | patterns.cs:105:21:105:26 | Int32 y0 = ... | semmle.label | successor |
| patterns.cs:108:9:108:20 | (..., ...) | patterns.cs:108:24:112:9 | ... switch { ... } | semmle.label | successor |
| patterns.cs:108:9:108:20 | (..., ...) | patterns.cs:108:25:108:26 | access to local variable x0 | semmle.label | successor |
| patterns.cs:108:9:112:9 | ... = ... | patterns.cs:115:9:120:10 | ...; | semmle.label | successor |
| patterns.cs:108:9:112:10 | ...; | patterns.cs:108:14:108:15 | Int32 x1 | semmle.label | successor |
| patterns.cs:108:14:108:15 | Int32 x1 | patterns.cs:108:18:108:19 | Int32 y1 | semmle.label | successor |
| patterns.cs:108:18:108:19 | Int32 y1 | patterns.cs:108:9:108:20 | (..., ...) | semmle.label | successor |
| patterns.cs:108:24:108:31 | (..., ...) | patterns.cs:110:13:110:26 | ... => ... | semmle.label | successor |
| patterns.cs:108:24:112:9 | ... switch { ... } | patterns.cs:108:25:108:26 | access to local variable x0 | semmle.label | successor |
| patterns.cs:108:24:108:31 | (..., ...) | patterns.cs:110:14:110:14 | 0 | semmle.label | successor |
| patterns.cs:108:24:112:9 | ... switch { ... } | patterns.cs:108:9:112:9 | ... = ... | semmle.label | successor |
| patterns.cs:108:25:108:26 | access to local variable x0 | patterns.cs:108:29:108:30 | access to local variable y0 | semmle.label | successor |
| patterns.cs:108:29:108:30 | access to local variable y0 | patterns.cs:108:24:108:31 | (..., ...) | semmle.label | successor |
| patterns.cs:110:13:110:17 | ( ... ) | patterns.cs:110:13:110:17 | { ... } | semmle.label | successor |
| patterns.cs:110:13:110:17 | { ... } | patterns.cs:110:23:110:23 | 1 | semmle.label | match |
| patterns.cs:110:13:110:17 | { ... } | patterns.cs:111:13:111:26 | ... => ... | semmle.label | no-match |
| patterns.cs:110:13:110:26 | ... => ... | patterns.cs:110:14:110:14 | 0 | semmle.label | successor |
| patterns.cs:110:13:110:17 | { ... } | patterns.cs:111:14:111:14 | 1 | semmle.label | no-match |
| patterns.cs:110:13:110:26 | ... => ... | patterns.cs:108:24:112:9 | ... switch { ... } | semmle.label | successor |
| patterns.cs:110:14:110:14 | 0 | patterns.cs:110:16:110:16 | 1 | semmle.label | successor |
| patterns.cs:110:16:110:16 | 1 | patterns.cs:110:13:110:17 | ( ... ) | semmle.label | successor |
| patterns.cs:110:22:110:26 | (..., ...) | patterns.cs:108:9:112:9 | ... = ... | semmle.label | successor |
| patterns.cs:110:22:110:26 | (..., ...) | patterns.cs:110:13:110:26 | ... => ... | semmle.label | successor |
| patterns.cs:110:23:110:23 | 1 | patterns.cs:110:25:110:25 | 0 | semmle.label | successor |
| patterns.cs:110:25:110:25 | 0 | patterns.cs:110:22:110:26 | (..., ...) | semmle.label | successor |
| patterns.cs:111:13:111:17 | ( ... ) | patterns.cs:111:13:111:17 | { ... } | semmle.label | successor |
| patterns.cs:111:13:111:17 | { ... } | patterns.cs:98:10:98:20 | exit Expressions (abnormal) | semmle.label | exception(InvalidOperationException) |
| patterns.cs:111:13:111:17 | { ... } | patterns.cs:111:23:111:23 | 0 | semmle.label | match |
| patterns.cs:111:13:111:26 | ... => ... | patterns.cs:111:14:111:14 | 1 | semmle.label | successor |
| patterns.cs:111:13:111:26 | ... => ... | patterns.cs:108:24:112:9 | ... switch { ... } | semmle.label | successor |
| patterns.cs:111:14:111:14 | 1 | patterns.cs:111:16:111:16 | 0 | semmle.label | successor |
| patterns.cs:111:16:111:16 | 0 | patterns.cs:111:13:111:17 | ( ... ) | semmle.label | successor |
| patterns.cs:111:22:111:26 | (..., ...) | patterns.cs:108:9:112:9 | ... = ... | semmle.label | successor |
| patterns.cs:111:22:111:26 | (..., ...) | patterns.cs:111:13:111:26 | ... => ... | semmle.label | successor |
| patterns.cs:111:23:111:23 | 0 | patterns.cs:111:25:111:25 | 1 | semmle.label | successor |
| patterns.cs:111:25:111:25 | 1 | patterns.cs:111:22:111:26 | (..., ...) | semmle.label | successor |
| patterns.cs:115:9:115:16 | (..., ...) | patterns.cs:115:20:120:9 | ... switch { ... } | semmle.label | successor |
| patterns.cs:115:9:115:16 | (..., ...) | patterns.cs:115:21:115:22 | access to local variable x0 | semmle.label | successor |
| patterns.cs:115:9:120:9 | ... = ... | patterns.cs:98:10:98:20 | exit Expressions (normal) | semmle.label | successor |
| patterns.cs:115:9:120:10 | ...; | patterns.cs:115:9:115:16 | (..., ...) | semmle.label | successor |
| patterns.cs:115:20:115:27 | (..., ...) | patterns.cs:117:13:117:33 | ... => ... | semmle.label | successor |
| patterns.cs:115:20:120:9 | ... switch { ... } | patterns.cs:115:21:115:22 | access to local variable x0 | semmle.label | successor |
| patterns.cs:115:20:115:27 | (..., ...) | patterns.cs:117:14:117:14 | 0 | semmle.label | successor |
| patterns.cs:115:20:120:9 | ... switch { ... } | patterns.cs:115:9:120:9 | ... = ... | semmle.label | successor |
| patterns.cs:115:21:115:22 | access to local variable x0 | patterns.cs:115:25:115:26 | access to local variable y0 | semmle.label | successor |
| patterns.cs:115:25:115:26 | access to local variable y0 | patterns.cs:115:20:115:27 | (..., ...) | semmle.label | successor |
| patterns.cs:117:13:117:22 | ( ... ) | patterns.cs:117:13:117:22 | { ... } | semmle.label | successor |
| patterns.cs:117:13:117:22 | { ... } | patterns.cs:117:28:117:29 | access to local variable y2 | semmle.label | match |
| patterns.cs:117:13:117:22 | { ... } | patterns.cs:118:13:118:34 | ... => ... | semmle.label | no-match |
| patterns.cs:117:13:117:33 | ... => ... | patterns.cs:117:14:117:14 | 0 | semmle.label | successor |
| patterns.cs:117:13:117:22 | { ... } | patterns.cs:118:14:118:19 | Int32 x2 | semmle.label | no-match |
| patterns.cs:117:13:117:33 | ... => ... | patterns.cs:115:20:120:9 | ... switch { ... } | semmle.label | successor |
| patterns.cs:117:14:117:14 | 0 | patterns.cs:117:16:117:21 | Int32 y2 | semmle.label | successor |
| patterns.cs:117:16:117:21 | Int32 y2 | patterns.cs:117:13:117:22 | ( ... ) | semmle.label | successor |
| patterns.cs:117:27:117:33 | (..., ...) | patterns.cs:115:9:120:9 | ... = ... | semmle.label | successor |
| patterns.cs:117:27:117:33 | (..., ...) | patterns.cs:117:13:117:33 | ... => ... | semmle.label | successor |
| patterns.cs:117:28:117:29 | access to local variable y2 | patterns.cs:117:32:117:32 | 0 | semmle.label | successor |
| patterns.cs:117:32:117:32 | 0 | patterns.cs:117:27:117:33 | (..., ...) | semmle.label | successor |
| patterns.cs:118:13:118:23 | ( ... ) | patterns.cs:118:13:118:23 | { ... } | semmle.label | successor |
| patterns.cs:118:13:118:23 | { ... } | patterns.cs:118:29:118:29 | 0 | semmle.label | match |
| patterns.cs:118:13:118:23 | { ... } | patterns.cs:119:13:119:38 | ... => ... | semmle.label | no-match |
| patterns.cs:118:13:118:34 | ... => ... | patterns.cs:118:14:118:19 | Int32 x2 | semmle.label | successor |
| patterns.cs:118:13:118:23 | { ... } | patterns.cs:119:14:119:19 | Int32 x2 | semmle.label | no-match |
| patterns.cs:118:13:118:34 | ... => ... | patterns.cs:115:20:120:9 | ... switch { ... } | semmle.label | successor |
| patterns.cs:118:14:118:19 | Int32 x2 | patterns.cs:118:22:118:22 | 0 | semmle.label | successor |
| patterns.cs:118:22:118:22 | 0 | patterns.cs:118:13:118:23 | ( ... ) | semmle.label | successor |
| patterns.cs:118:28:118:34 | (..., ...) | patterns.cs:115:9:120:9 | ... = ... | semmle.label | successor |
| patterns.cs:118:28:118:34 | (..., ...) | patterns.cs:118:13:118:34 | ... => ... | semmle.label | successor |
| patterns.cs:118:29:118:29 | 0 | patterns.cs:118:32:118:33 | access to local variable x2 | semmle.label | successor |
| patterns.cs:118:32:118:33 | access to local variable x2 | patterns.cs:118:28:118:34 | (..., ...) | semmle.label | successor |
| patterns.cs:119:13:119:28 | ( ... ) | patterns.cs:119:13:119:28 | { ... } | semmle.label | successor |
| patterns.cs:119:13:119:28 | { ... } | patterns.cs:98:10:98:20 | exit Expressions (abnormal) | semmle.label | exception(InvalidOperationException) |
| patterns.cs:119:13:119:28 | { ... } | patterns.cs:119:34:119:34 | 0 | semmle.label | match |
| patterns.cs:119:13:119:38 | ... => ... | patterns.cs:119:14:119:19 | Int32 x2 | semmle.label | successor |
| patterns.cs:119:13:119:38 | ... => ... | patterns.cs:115:20:120:9 | ... switch { ... } | semmle.label | successor |
| patterns.cs:119:14:119:19 | Int32 x2 | patterns.cs:119:22:119:27 | Int32 y2 | semmle.label | successor |
| patterns.cs:119:22:119:27 | Int32 y2 | patterns.cs:119:13:119:28 | ( ... ) | semmle.label | successor |
| patterns.cs:119:33:119:38 | (..., ...) | patterns.cs:115:9:120:9 | ... = ... | semmle.label | successor |
| patterns.cs:119:33:119:38 | (..., ...) | patterns.cs:119:13:119:38 | ... => ... | semmle.label | successor |
| patterns.cs:119:34:119:34 | 0 | patterns.cs:119:37:119:37 | 0 | semmle.label | successor |
| patterns.cs:119:37:119:37 | 0 | patterns.cs:119:33:119:38 | (..., ...) | semmle.label | successor |
| patterns.cs:123:10:123:21 | enter Expressions2 | patterns.cs:124:5:149:5 | {...} | semmle.label | successor |
@@ -93,75 +93,74 @@
| patterns.cs:125:30:125:38 | { ..., ... } | patterns.cs:125:13:125:38 | MyStruct s = ... | semmle.label | successor |
| patterns.cs:125:32:125:36 | ... = ... | patterns.cs:125:30:125:38 | { ..., ... } | semmle.label | successor |
| patterns.cs:125:36:125:36 | 0 | patterns.cs:125:32:125:36 | ... = ... | semmle.label | successor |
| patterns.cs:126:9:132:10 | ... ...; | patterns.cs:126:17:132:9 | ... switch { ... } | semmle.label | successor |
| patterns.cs:126:9:132:10 | ... ...; | patterns.cs:126:17:126:17 | access to local variable s | semmle.label | successor |
| patterns.cs:126:13:132:9 | Int32 r = ... | patterns.cs:134:9:148:9 | try {...} ... | semmle.label | successor |
| patterns.cs:126:17:126:17 | access to local variable s | patterns.cs:128:13:128:49 | ... => ... | semmle.label | successor |
| patterns.cs:126:17:132:9 | ... switch { ... } | patterns.cs:126:17:126:17 | access to local variable s | semmle.label | successor |
| patterns.cs:126:17:126:17 | access to local variable s | patterns.cs:128:27:128:31 | Int32 x | semmle.label | successor |
| patterns.cs:126:17:132:9 | ... switch { ... } | patterns.cs:126:13:132:9 | Int32 r = ... | semmle.label | successor |
| patterns.cs:128:13:128:33 | { ... } | patterns.cs:128:40:128:40 | access to local variable x | semmle.label | match |
| patterns.cs:128:13:128:33 | { ... } | patterns.cs:129:13:129:38 | ... => ... | semmle.label | no-match |
| patterns.cs:128:13:128:49 | ... => ... | patterns.cs:128:27:128:31 | Int32 x | semmle.label | successor |
| patterns.cs:128:13:128:33 | { ... } | patterns.cs:129:13:129:33 | MyStruct ms | semmle.label | no-match |
| patterns.cs:128:13:128:49 | ... => ... | patterns.cs:126:17:132:9 | ... switch { ... } | semmle.label | successor |
| patterns.cs:128:22:128:33 | { ... } | patterns.cs:128:13:128:33 | { ... } | semmle.label | successor |
| patterns.cs:128:27:128:31 | Int32 x | patterns.cs:128:22:128:33 | { ... } | semmle.label | successor |
| patterns.cs:128:40:128:40 | access to local variable x | patterns.cs:128:44:128:44 | 2 | semmle.label | successor |
| patterns.cs:128:40:128:44 | ... > ... | patterns.cs:128:49:128:49 | 0 | semmle.label | true |
| patterns.cs:128:40:128:44 | ... > ... | patterns.cs:129:13:129:38 | ... => ... | semmle.label | false |
| patterns.cs:128:40:128:44 | ... > ... | patterns.cs:129:13:129:33 | MyStruct ms | semmle.label | false |
| patterns.cs:128:44:128:44 | 2 | patterns.cs:128:40:128:44 | ... > ... | semmle.label | successor |
| patterns.cs:128:49:128:49 | 0 | patterns.cs:126:13:132:9 | Int32 r = ... | semmle.label | successor |
| patterns.cs:128:49:128:49 | 0 | patterns.cs:128:13:128:49 | ... => ... | semmle.label | successor |
| patterns.cs:129:13:129:33 | MyStruct ms | patterns.cs:129:27:129:28 | 10 | semmle.label | successor |
| patterns.cs:129:13:129:33 | { ... } | patterns.cs:129:38:129:38 | 1 | semmle.label | match |
| patterns.cs:129:13:129:33 | { ... } | patterns.cs:130:13:130:23 | ... => ... | semmle.label | no-match |
| patterns.cs:129:13:129:38 | ... => ... | patterns.cs:129:13:129:33 | MyStruct ms | semmle.label | successor |
| patterns.cs:129:13:129:33 | { ... } | patterns.cs:130:14:130:14 | 1 | semmle.label | no-match |
| patterns.cs:129:13:129:38 | ... => ... | patterns.cs:126:17:132:9 | ... switch { ... } | semmle.label | successor |
| patterns.cs:129:22:129:30 | { ... } | patterns.cs:129:13:129:33 | { ... } | semmle.label | successor |
| patterns.cs:129:27:129:28 | 10 | patterns.cs:129:22:129:30 | { ... } | semmle.label | successor |
| patterns.cs:129:38:129:38 | 1 | patterns.cs:126:13:132:9 | Int32 r = ... | semmle.label | successor |
| patterns.cs:129:38:129:38 | 1 | patterns.cs:129:13:129:38 | ... => ... | semmle.label | successor |
| patterns.cs:130:13:130:18 | ( ... ) | patterns.cs:130:13:130:18 | { ... } | semmle.label | successor |
| patterns.cs:130:13:130:18 | { ... } | patterns.cs:130:23:130:23 | 2 | semmle.label | match |
| patterns.cs:130:13:130:18 | { ... } | patterns.cs:131:13:131:27 | ... => ... | semmle.label | no-match |
| patterns.cs:130:13:130:23 | ... => ... | patterns.cs:130:14:130:14 | 1 | semmle.label | successor |
| patterns.cs:130:13:130:18 | { ... } | patterns.cs:131:18:131:18 | Int32 x | semmle.label | no-match |
| patterns.cs:130:13:130:23 | ... => ... | patterns.cs:126:17:132:9 | ... switch { ... } | semmle.label | successor |
| patterns.cs:130:14:130:14 | 1 | patterns.cs:130:17:130:17 | 2 | semmle.label | successor |
| patterns.cs:130:17:130:17 | 2 | patterns.cs:130:13:130:18 | ( ... ) | semmle.label | successor |
| patterns.cs:130:23:130:23 | 2 | patterns.cs:126:13:132:9 | Int32 r = ... | semmle.label | successor |
| patterns.cs:130:23:130:23 | 2 | patterns.cs:130:13:130:23 | ... => ... | semmle.label | successor |
| patterns.cs:131:13:131:22 | (..., ...) | patterns.cs:123:10:123:21 | exit Expressions2 (abnormal) | semmle.label | exception(InvalidOperationException) |
| patterns.cs:131:13:131:22 | (..., ...) | patterns.cs:131:27:131:27 | 3 | semmle.label | match |
| patterns.cs:131:13:131:27 | ... => ... | patterns.cs:131:18:131:18 | Int32 x | semmle.label | successor |
| patterns.cs:131:13:131:27 | ... => ... | patterns.cs:126:17:132:9 | ... switch { ... } | semmle.label | successor |
| patterns.cs:131:18:131:18 | Int32 x | patterns.cs:131:21:131:21 | _ | semmle.label | successor |
| patterns.cs:131:21:131:21 | _ | patterns.cs:131:13:131:22 | (..., ...) | semmle.label | successor |
| patterns.cs:131:27:131:27 | 3 | patterns.cs:126:13:132:9 | Int32 r = ... | semmle.label | successor |
| patterns.cs:131:27:131:27 | 3 | patterns.cs:131:13:131:27 | ... => ... | semmle.label | successor |
| patterns.cs:134:9:148:9 | try {...} ... | patterns.cs:135:9:144:9 | {...} | semmle.label | successor |
| patterns.cs:135:9:144:9 | {...} | patterns.cs:136:13:143:14 | ...; | semmle.label | successor |
| patterns.cs:136:13:143:13 | ... = ... | patterns.cs:123:10:123:21 | exit Expressions2 (normal) | semmle.label | successor |
| patterns.cs:136:13:143:14 | ...; | patterns.cs:136:17:143:13 | ... switch { ... } | semmle.label | successor |
| patterns.cs:136:17:136:17 | access to parameter o | patterns.cs:138:17:138:50 | ... => ... | semmle.label | successor |
| patterns.cs:136:17:143:13 | ... switch { ... } | patterns.cs:136:17:136:17 | access to parameter o | semmle.label | successor |
| patterns.cs:136:13:143:14 | ...; | patterns.cs:136:17:136:17 | access to parameter o | semmle.label | successor |
| patterns.cs:136:17:136:17 | access to parameter o | patterns.cs:138:17:138:17 | 1 | semmle.label | successor |
| patterns.cs:136:17:143:13 | ... switch { ... } | patterns.cs:136:13:143:13 | ... = ... | semmle.label | successor |
| patterns.cs:138:17:138:17 | 1 | patterns.cs:138:28:138:50 | object creation of type ArgumentException | semmle.label | match |
| patterns.cs:138:17:138:17 | 1 | patterns.cs:139:17:139:22 | ... => ... | semmle.label | no-match |
| patterns.cs:138:17:138:50 | ... => ... | patterns.cs:138:17:138:17 | 1 | semmle.label | successor |
| patterns.cs:138:17:138:17 | 1 | patterns.cs:139:17:139:17 | 2 | semmle.label | no-match |
| patterns.cs:138:22:138:50 | throw ... | patterns.cs:145:9:148:9 | [exception: ArgumentException] catch (...) {...} | semmle.label | exception(ArgumentException) |
| patterns.cs:138:28:138:50 | object creation of type ArgumentException | patterns.cs:138:22:138:50 | throw ... | semmle.label | successor |
| patterns.cs:138:28:138:50 | object creation of type ArgumentException | patterns.cs:145:9:148:9 | [exception: Exception] catch (...) {...} | semmle.label | exception(Exception) |
| patterns.cs:139:17:139:17 | 2 | patterns.cs:139:22:139:22 | 3 | semmle.label | match |
| patterns.cs:139:17:139:17 | 2 | patterns.cs:140:17:140:42 | ... => ... | semmle.label | no-match |
| patterns.cs:139:17:139:22 | ... => ... | patterns.cs:139:17:139:17 | 2 | semmle.label | successor |
| patterns.cs:139:22:139:22 | 3 | patterns.cs:136:13:143:13 | ... = ... | semmle.label | successor |
| patterns.cs:139:17:139:17 | 2 | patterns.cs:140:17:140:24 | Object y | semmle.label | no-match |
| patterns.cs:139:17:139:22 | ... => ... | patterns.cs:136:17:143:13 | ... switch { ... } | semmle.label | successor |
| patterns.cs:139:22:139:22 | 3 | patterns.cs:139:17:139:22 | ... => ... | semmle.label | successor |
| patterns.cs:140:17:140:24 | Object y | patterns.cs:140:31:140:31 | access to local variable y | semmle.label | match |
| patterns.cs:140:17:140:24 | Object y | patterns.cs:141:17:141:29 | ... => ... | semmle.label | no-match |
| patterns.cs:140:17:140:42 | ... => ... | patterns.cs:140:17:140:24 | Object y | semmle.label | successor |
| patterns.cs:140:17:140:24 | Object y | patterns.cs:141:17:141:22 | access to type String | semmle.label | no-match |
| patterns.cs:140:17:140:42 | ... => ... | patterns.cs:136:17:143:13 | ... switch { ... } | semmle.label | successor |
| patterns.cs:140:31:140:31 | access to local variable y | patterns.cs:140:36:140:37 | { ... } | semmle.label | successor |
| patterns.cs:140:31:140:37 | ... is ... | patterns.cs:140:42:140:42 | 4 | semmle.label | true |
| patterns.cs:140:31:140:37 | ... is ... | patterns.cs:141:17:141:29 | ... => ... | semmle.label | false |
| patterns.cs:140:31:140:37 | ... is ... | patterns.cs:141:17:141:22 | access to type String | semmle.label | false |
| patterns.cs:140:36:140:37 | { ... } | patterns.cs:140:31:140:37 | ... is ... | semmle.label | successor |
| patterns.cs:140:36:140:37 | { ... } | patterns.cs:140:36:140:37 | { ... } | semmle.label | successor |
| patterns.cs:140:42:140:42 | 4 | patterns.cs:136:13:143:13 | ... = ... | semmle.label | successor |
| patterns.cs:140:42:140:42 | 4 | patterns.cs:140:17:140:42 | ... => ... | semmle.label | successor |
| patterns.cs:141:17:141:22 | access to type String | patterns.cs:141:29:141:29 | 5 | semmle.label | match |
| patterns.cs:141:17:141:22 | access to type String | patterns.cs:142:17:142:41 | ... => ... | semmle.label | no-match |
| patterns.cs:141:17:141:29 | ... => ... | patterns.cs:141:17:141:22 | access to type String | semmle.label | successor |
| patterns.cs:141:29:141:29 | 5 | patterns.cs:136:13:143:13 | ... = ... | semmle.label | successor |
| patterns.cs:141:17:141:22 | access to type String | patterns.cs:142:31:142:32 | 10 | semmle.label | no-match |
| patterns.cs:141:17:141:29 | ... => ... | patterns.cs:136:17:143:13 | ... switch { ... } | semmle.label | successor |
| patterns.cs:141:29:141:29 | 5 | patterns.cs:141:17:141:29 | ... => ... | semmle.label | successor |
| patterns.cs:142:17:142:36 | { ... } | patterns.cs:142:41:142:41 | 6 | semmle.label | match |
| patterns.cs:142:17:142:36 | { ... } | patterns.cs:145:9:148:9 | [exception: InvalidOperationException] catch (...) {...} | semmle.label | exception(InvalidOperationException) |
| patterns.cs:142:17:142:41 | ... => ... | patterns.cs:142:31:142:32 | 10 | semmle.label | successor |
| patterns.cs:142:17:142:41 | ... => ... | patterns.cs:136:17:143:13 | ... switch { ... } | semmle.label | successor |
| patterns.cs:142:26:142:34 | { ... } | patterns.cs:142:17:142:36 | { ... } | semmle.label | successor |
| patterns.cs:142:31:142:32 | 10 | patterns.cs:142:26:142:34 | { ... } | semmle.label | successor |
| patterns.cs:142:41:142:41 | 6 | patterns.cs:136:13:143:13 | ... = ... | semmle.label | successor |
| patterns.cs:142:41:142:41 | 6 | patterns.cs:142:17:142:41 | ... => ... | semmle.label | successor |
| patterns.cs:145:9:148:9 | [exception: ArgumentException] catch (...) {...} | patterns.cs:123:10:123:21 | exit Expressions2 (abnormal) | semmle.label | exception(ArgumentException) |
| patterns.cs:145:9:148:9 | [exception: Exception] catch (...) {...} | patterns.cs:123:10:123:21 | exit Expressions2 (abnormal) | semmle.label | exception(Exception) |
| patterns.cs:145:9:148:9 | [exception: Exception] catch (...) {...} | patterns.cs:145:41:145:42 | [exception: Exception] InvalidOperationException ex | semmle.label | match |

View File

@@ -1,11 +1,13 @@
edges
| CallSensitivityFlow.cs:19:39:19:39 | o : Object | CallSensitivityFlow.cs:23:18:23:18 | access to parameter o |
| CallSensitivityFlow.cs:27:40:27:40 | o : Object | CallSensitivityFlow.cs:31:18:31:18 | access to parameter o |
| CallSensitivityFlow.cs:27:40:27:40 | o : Object | CallSensitivityFlow.cs:31:18:31:18 | access to parameter o |
| CallSensitivityFlow.cs:35:41:35:41 | o : Object | CallSensitivityFlow.cs:39:18:39:18 | [cond (line 35): true] access to parameter o |
| CallSensitivityFlow.cs:43:45:43:45 | o : Object | CallSensitivityFlow.cs:53:14:53:15 | access to local variable o3 |
| CallSensitivityFlow.cs:56:46:56:46 | o : Object | CallSensitivityFlow.cs:66:14:66:15 | access to local variable o3 |
| CallSensitivityFlow.cs:56:46:56:46 | o : Object | CallSensitivityFlow.cs:66:14:66:15 | access to local variable o3 |
| CallSensitivityFlow.cs:56:46:56:46 | o : Object | CallSensitivityFlow.cs:66:14:66:15 | access to local variable o3 |
| CallSensitivityFlow.cs:56:46:56:46 | o : Object | CallSensitivityFlow.cs:66:14:66:15 | access to local variable o3 |
| CallSensitivityFlow.cs:78:24:78:35 | object creation of type Object : Object | CallSensitivityFlow.cs:19:39:19:39 | o : Object |
| CallSensitivityFlow.cs:79:25:79:36 | object creation of type Object : Object | CallSensitivityFlow.cs:27:40:27:40 | o : Object |
| CallSensitivityFlow.cs:80:26:80:37 | object creation of type Object : Object | CallSensitivityFlow.cs:35:41:35:41 | o : Object |
@@ -36,6 +38,7 @@ nodes
| CallSensitivityFlow.cs:19:39:19:39 | o : Object | semmle.label | o : Object |
| CallSensitivityFlow.cs:23:18:23:18 | access to parameter o | semmle.label | access to parameter o |
| CallSensitivityFlow.cs:27:40:27:40 | o : Object | semmle.label | o : Object |
| CallSensitivityFlow.cs:27:40:27:40 | o : Object | semmle.label | o : Object |
| CallSensitivityFlow.cs:31:18:31:18 | access to parameter o | semmle.label | access to parameter o |
| CallSensitivityFlow.cs:35:41:35:41 | o : Object | semmle.label | o : Object |
| CallSensitivityFlow.cs:39:18:39:18 | [cond (line 35): true] access to parameter o | semmle.label | [cond (line 35): true] access to parameter o |
@@ -44,6 +47,7 @@ nodes
| CallSensitivityFlow.cs:56:46:56:46 | o : Object | semmle.label | o : Object |
| CallSensitivityFlow.cs:56:46:56:46 | o : Object | semmle.label | o : Object |
| CallSensitivityFlow.cs:56:46:56:46 | o : Object | semmle.label | o : Object |
| CallSensitivityFlow.cs:56:46:56:46 | o : Object | semmle.label | o : Object |
| CallSensitivityFlow.cs:66:14:66:15 | access to local variable o3 | semmle.label | access to local variable o3 |
| CallSensitivityFlow.cs:78:24:78:35 | object creation of type Object : Object | semmle.label | object creation of type Object : Object |
| CallSensitivityFlow.cs:79:25:79:36 | object creation of type Object : Object | semmle.label | object creation of type Object : Object |

View File

@@ -60,6 +60,5 @@
| Splitting.cs:32:15:32:15 | [b (line 24): true] access to local variable x |
| Splitting.cs:34:19:34:19 | access to local variable x |
| Splitting.cs:41:19:41:19 | access to local variable s |
| Splitting.cs:43:19:43:19 | access to local variable s |
| Splitting.cs:50:19:50:19 | access to local variable s |
| Splitting.cs:52:19:52:19 | access to local variable s |

View File

@@ -250,7 +250,6 @@ edges
| Splitting.cs:31:19:31:25 | [b (line 24): false] access to parameter tainted : String | Splitting.cs:31:17:31:26 | [b (line 24): false] dynamic access to element : String |
| Splitting.cs:31:19:31:25 | [b (line 24): true] access to parameter tainted : String | Splitting.cs:31:17:31:26 | [b (line 24): true] dynamic access to element : String |
| Splitting.cs:39:21:39:34 | [b (line 37): true] "taint source" : String | Splitting.cs:41:19:41:19 | access to local variable s |
| Splitting.cs:39:21:39:34 | [b (line 37): true] "taint source" : String | Splitting.cs:43:19:43:19 | access to local variable s |
| Splitting.cs:48:36:48:49 | "taint source" : String | Splitting.cs:50:19:50:19 | access to local variable s |
| Splitting.cs:48:36:48:49 | "taint source" : String | Splitting.cs:52:19:52:19 | access to local variable s |
nodes
@@ -468,7 +467,6 @@ nodes
| Splitting.cs:34:19:34:19 | access to local variable x | semmle.label | access to local variable x |
| Splitting.cs:39:21:39:34 | [b (line 37): true] "taint source" : String | semmle.label | [b (line 37): true] "taint source" : String |
| Splitting.cs:41:19:41:19 | access to local variable s | semmle.label | access to local variable s |
| Splitting.cs:43:19:43:19 | access to local variable s | semmle.label | access to local variable s |
| Splitting.cs:48:36:48:49 | "taint source" : String | semmle.label | "taint source" : String |
| Splitting.cs:50:19:50:19 | access to local variable s | semmle.label | access to local variable s |
| Splitting.cs:52:19:52:19 | access to local variable s | semmle.label | access to local variable s |
@@ -479,7 +477,6 @@ nodes
| Splitting.cs:9:15:9:15 | [b (line 3): true] access to local variable x | Splitting.cs:3:28:3:34 | tainted : String | Splitting.cs:9:15:9:15 | [b (line 3): true] access to local variable x | [b (line 3): true] access to local variable x |
| GlobalDataFlow.cs:19:15:19:29 | access to field SinkField0 | GlobalDataFlow.cs:18:27:18:40 | "taint source" : String | GlobalDataFlow.cs:19:15:19:29 | access to field SinkField0 | access to field SinkField0 |
| Splitting.cs:41:19:41:19 | access to local variable s | Splitting.cs:39:21:39:34 | [b (line 37): true] "taint source" : String | Splitting.cs:41:19:41:19 | access to local variable s | access to local variable s |
| Splitting.cs:43:19:43:19 | access to local variable s | Splitting.cs:39:21:39:34 | [b (line 37): true] "taint source" : String | Splitting.cs:43:19:43:19 | access to local variable s | access to local variable s |
| Splitting.cs:50:19:50:19 | access to local variable s | Splitting.cs:48:36:48:49 | "taint source" : String | Splitting.cs:50:19:50:19 | access to local variable s | access to local variable s |
| Splitting.cs:52:19:52:19 | access to local variable s | Splitting.cs:48:36:48:49 | "taint source" : String | Splitting.cs:52:19:52:19 | access to local variable s | access to local variable s |
| GlobalDataFlow.cs:72:15:72:19 | access to local variable sink0 | GlobalDataFlow.cs:18:27:18:40 | "taint source" : String | GlobalDataFlow.cs:72:15:72:19 | access to local variable sink0 | access to local variable sink0 |

View File

@@ -40,7 +40,7 @@ class Splitting
if (b)
Check(s); // flow
else
Check(s); // no flow [FALSE POSITIVE]
Check(s); // no flow
}
void M4(bool b)

View File

@@ -66,6 +66,5 @@
| Splitting.cs:32:15:32:15 | [b (line 24): true] access to local variable x |
| Splitting.cs:34:19:34:19 | access to local variable x |
| Splitting.cs:41:19:41:19 | access to local variable s |
| Splitting.cs:43:19:43:19 | access to local variable s |
| Splitting.cs:50:19:50:19 | access to local variable s |
| Splitting.cs:52:19:52:19 | access to local variable s |

View File

@@ -270,7 +270,6 @@ edges
| Splitting.cs:31:19:31:25 | [b (line 24): false] access to parameter tainted : String | Splitting.cs:31:17:31:26 | [b (line 24): false] dynamic access to element : String |
| Splitting.cs:31:19:31:25 | [b (line 24): true] access to parameter tainted : String | Splitting.cs:31:17:31:26 | [b (line 24): true] dynamic access to element : String |
| Splitting.cs:39:21:39:34 | [b (line 37): true] "taint source" : String | Splitting.cs:41:19:41:19 | access to local variable s |
| Splitting.cs:39:21:39:34 | [b (line 37): true] "taint source" : String | Splitting.cs:43:19:43:19 | access to local variable s |
| Splitting.cs:48:36:48:49 | "taint source" : String | Splitting.cs:50:19:50:19 | access to local variable s |
| Splitting.cs:48:36:48:49 | "taint source" : String | Splitting.cs:52:19:52:19 | access to local variable s |
nodes
@@ -510,7 +509,6 @@ nodes
| Splitting.cs:34:19:34:19 | access to local variable x | semmle.label | access to local variable x |
| Splitting.cs:39:21:39:34 | [b (line 37): true] "taint source" : String | semmle.label | [b (line 37): true] "taint source" : String |
| Splitting.cs:41:19:41:19 | access to local variable s | semmle.label | access to local variable s |
| Splitting.cs:43:19:43:19 | access to local variable s | semmle.label | access to local variable s |
| Splitting.cs:48:36:48:49 | "taint source" : String | semmle.label | "taint source" : String |
| Splitting.cs:50:19:50:19 | access to local variable s | semmle.label | access to local variable s |
| Splitting.cs:52:19:52:19 | access to local variable s | semmle.label | access to local variable s |
@@ -583,6 +581,5 @@ nodes
| Splitting.cs:32:15:32:15 | [b (line 24): true] access to local variable x | Splitting.cs:24:28:24:34 | tainted : String | Splitting.cs:32:15:32:15 | [b (line 24): true] access to local variable x | [b (line 24): true] access to local variable x |
| Splitting.cs:34:19:34:19 | access to local variable x | Splitting.cs:24:28:24:34 | tainted : String | Splitting.cs:34:19:34:19 | access to local variable x | access to local variable x |
| Splitting.cs:41:19:41:19 | access to local variable s | Splitting.cs:39:21:39:34 | [b (line 37): true] "taint source" : String | Splitting.cs:41:19:41:19 | access to local variable s | access to local variable s |
| Splitting.cs:43:19:43:19 | access to local variable s | Splitting.cs:39:21:39:34 | [b (line 37): true] "taint source" : String | Splitting.cs:43:19:43:19 | access to local variable s | access to local variable s |
| Splitting.cs:50:19:50:19 | access to local variable s | Splitting.cs:48:36:48:49 | "taint source" : String | Splitting.cs:50:19:50:19 | access to local variable s | access to local variable s |
| Splitting.cs:52:19:52:19 | access to local variable s | Splitting.cs:48:36:48:49 | "taint source" : String | Splitting.cs:52:19:52:19 | access to local variable s | access to local variable s |

View File

@@ -59,18 +59,17 @@
| LocalDataFlow.cs:84:13:84:35 | [b (line 48): true] SSA def(sink7) | LocalDataFlow.cs:85:15:85:19 | [b (line 48): true] access to local variable sink7 |
| LocalDataFlow.cs:84:21:84:21 | access to parameter b | LocalDataFlow.cs:88:20:88:20 | [b (line 48): false] access to parameter b |
| LocalDataFlow.cs:84:21:84:21 | access to parameter b | LocalDataFlow.cs:88:20:88:20 | [b (line 48): true] access to parameter b |
| LocalDataFlow.cs:84:21:84:35 | ... ? ... : ... | LocalDataFlow.cs:84:13:84:35 | [b (line 48): false] SSA def(sink7) |
| LocalDataFlow.cs:84:21:84:35 | ... ? ... : ... | LocalDataFlow.cs:84:13:84:35 | [b (line 48): true] SSA def(sink7) |
| LocalDataFlow.cs:84:25:84:27 | [b (line 48): true] "a" | LocalDataFlow.cs:84:21:84:35 | ... ? ... : ... |
| LocalDataFlow.cs:84:31:84:35 | [b (line 48): false] access to local variable sink6 | LocalDataFlow.cs:84:21:84:35 | ... ? ... : ... |
| LocalDataFlow.cs:85:15:85:19 | [b (line 48): false] access to local variable sink7 | LocalDataFlow.cs:88:9:88:36 | SSA phi(sink7) |
| LocalDataFlow.cs:85:15:85:19 | [b (line 48): true] access to local variable sink7 | LocalDataFlow.cs:88:9:88:36 | SSA phi(sink7) |
| LocalDataFlow.cs:84:21:84:35 | [b (line 48): false] ... ? ... : ... | LocalDataFlow.cs:84:13:84:35 | [b (line 48): false] SSA def(sink7) |
| LocalDataFlow.cs:84:21:84:35 | [b (line 48): true] ... ? ... : ... | LocalDataFlow.cs:84:13:84:35 | [b (line 48): true] SSA def(sink7) |
| LocalDataFlow.cs:84:25:84:27 | [b (line 48): true] "a" | LocalDataFlow.cs:84:21:84:35 | [b (line 48): true] ... ? ... : ... |
| LocalDataFlow.cs:84:31:84:35 | [b (line 48): false] access to local variable sink6 | LocalDataFlow.cs:84:21:84:35 | [b (line 48): false] ... ? ... : ... |
| LocalDataFlow.cs:85:15:85:19 | [b (line 48): false] access to local variable sink7 | LocalDataFlow.cs:88:20:88:36 | SSA phi(sink7) |
| LocalDataFlow.cs:85:15:85:19 | [b (line 48): true] access to local variable sink7 | LocalDataFlow.cs:88:20:88:36 | SSA phi(sink7) |
| LocalDataFlow.cs:88:9:88:36 | SSA def(nonSink0) | LocalDataFlow.cs:89:15:89:22 | access to local variable nonSink0 |
| LocalDataFlow.cs:88:9:88:36 | SSA phi(sink7) | LocalDataFlow.cs:92:29:92:33 | access to local variable sink7 |
| LocalDataFlow.cs:88:20:88:36 | [b (line 48): false] ... ? ... : ... | LocalDataFlow.cs:88:9:88:36 | SSA def(nonSink0) |
| LocalDataFlow.cs:88:20:88:36 | [b (line 48): true] ... ? ... : ... | LocalDataFlow.cs:88:9:88:36 | SSA def(nonSink0) |
| LocalDataFlow.cs:88:24:88:28 | "abc" | LocalDataFlow.cs:88:20:88:36 | [b (line 48): true] ... ? ... : ... |
| LocalDataFlow.cs:88:32:88:36 | "def" | LocalDataFlow.cs:88:20:88:36 | [b (line 48): false] ... ? ... : ... |
| LocalDataFlow.cs:88:20:88:36 | ... ? ... : ... | LocalDataFlow.cs:88:9:88:36 | SSA def(nonSink0) |
| LocalDataFlow.cs:88:20:88:36 | SSA phi(sink7) | LocalDataFlow.cs:92:29:92:33 | access to local variable sink7 |
| LocalDataFlow.cs:88:24:88:28 | "abc" | LocalDataFlow.cs:88:20:88:36 | ... ? ... : ... |
| LocalDataFlow.cs:88:32:88:36 | "def" | LocalDataFlow.cs:88:20:88:36 | ... ? ... : ... |
| LocalDataFlow.cs:89:15:89:22 | [post] access to local variable nonSink0 | LocalDataFlow.cs:96:32:96:39 | access to local variable nonSink0 |
| LocalDataFlow.cs:89:15:89:22 | access to local variable nonSink0 | LocalDataFlow.cs:96:32:96:39 | access to local variable nonSink0 |
| LocalDataFlow.cs:92:13:92:33 | SSA def(sink8) | LocalDataFlow.cs:93:15:93:19 | access to local variable sink8 |

View File

@@ -3,7 +3,6 @@
| LocalDataFlow.cs:69:15:69:19 | access to local variable sink5 |
| LocalDataFlow.cs:77:15:77:19 | access to local variable sink6 |
| LocalDataFlow.cs:85:15:85:19 | [b (line 48): false] access to local variable sink7 |
| LocalDataFlow.cs:85:15:85:19 | [b (line 48): true] access to local variable sink7 |
| LocalDataFlow.cs:93:15:93:19 | access to local variable sink8 |
| LocalDataFlow.cs:101:15:101:19 | access to local variable sink9 |
| LocalDataFlow.cs:109:15:109:20 | access to local variable sink15 |

View File

@@ -67,18 +67,17 @@
| LocalDataFlow.cs:84:13:84:35 | [b (line 48): true] SSA def(sink7) | LocalDataFlow.cs:85:15:85:19 | [b (line 48): true] access to local variable sink7 |
| LocalDataFlow.cs:84:21:84:21 | access to parameter b | LocalDataFlow.cs:88:20:88:20 | [b (line 48): false] access to parameter b |
| LocalDataFlow.cs:84:21:84:21 | access to parameter b | LocalDataFlow.cs:88:20:88:20 | [b (line 48): true] access to parameter b |
| LocalDataFlow.cs:84:21:84:35 | ... ? ... : ... | LocalDataFlow.cs:84:13:84:35 | [b (line 48): false] SSA def(sink7) |
| LocalDataFlow.cs:84:21:84:35 | ... ? ... : ... | LocalDataFlow.cs:84:13:84:35 | [b (line 48): true] SSA def(sink7) |
| LocalDataFlow.cs:84:25:84:27 | [b (line 48): true] "a" | LocalDataFlow.cs:84:21:84:35 | ... ? ... : ... |
| LocalDataFlow.cs:84:31:84:35 | [b (line 48): false] access to local variable sink6 | LocalDataFlow.cs:84:21:84:35 | ... ? ... : ... |
| LocalDataFlow.cs:85:15:85:19 | [b (line 48): false] access to local variable sink7 | LocalDataFlow.cs:88:9:88:36 | SSA phi(sink7) |
| LocalDataFlow.cs:85:15:85:19 | [b (line 48): true] access to local variable sink7 | LocalDataFlow.cs:88:9:88:36 | SSA phi(sink7) |
| LocalDataFlow.cs:84:21:84:35 | [b (line 48): false] ... ? ... : ... | LocalDataFlow.cs:84:13:84:35 | [b (line 48): false] SSA def(sink7) |
| LocalDataFlow.cs:84:21:84:35 | [b (line 48): true] ... ? ... : ... | LocalDataFlow.cs:84:13:84:35 | [b (line 48): true] SSA def(sink7) |
| LocalDataFlow.cs:84:25:84:27 | [b (line 48): true] "a" | LocalDataFlow.cs:84:21:84:35 | [b (line 48): true] ... ? ... : ... |
| LocalDataFlow.cs:84:31:84:35 | [b (line 48): false] access to local variable sink6 | LocalDataFlow.cs:84:21:84:35 | [b (line 48): false] ... ? ... : ... |
| LocalDataFlow.cs:85:15:85:19 | [b (line 48): false] access to local variable sink7 | LocalDataFlow.cs:88:20:88:36 | SSA phi(sink7) |
| LocalDataFlow.cs:85:15:85:19 | [b (line 48): true] access to local variable sink7 | LocalDataFlow.cs:88:20:88:36 | SSA phi(sink7) |
| LocalDataFlow.cs:88:9:88:36 | SSA def(nonSink0) | LocalDataFlow.cs:89:15:89:22 | access to local variable nonSink0 |
| LocalDataFlow.cs:88:9:88:36 | SSA phi(sink7) | LocalDataFlow.cs:92:29:92:33 | access to local variable sink7 |
| LocalDataFlow.cs:88:20:88:36 | [b (line 48): false] ... ? ... : ... | LocalDataFlow.cs:88:9:88:36 | SSA def(nonSink0) |
| LocalDataFlow.cs:88:20:88:36 | [b (line 48): true] ... ? ... : ... | LocalDataFlow.cs:88:9:88:36 | SSA def(nonSink0) |
| LocalDataFlow.cs:88:24:88:28 | "abc" | LocalDataFlow.cs:88:20:88:36 | [b (line 48): true] ... ? ... : ... |
| LocalDataFlow.cs:88:32:88:36 | "def" | LocalDataFlow.cs:88:20:88:36 | [b (line 48): false] ... ? ... : ... |
| LocalDataFlow.cs:88:20:88:36 | ... ? ... : ... | LocalDataFlow.cs:88:9:88:36 | SSA def(nonSink0) |
| LocalDataFlow.cs:88:20:88:36 | SSA phi(sink7) | LocalDataFlow.cs:92:29:92:33 | access to local variable sink7 |
| LocalDataFlow.cs:88:24:88:28 | "abc" | LocalDataFlow.cs:88:20:88:36 | ... ? ... : ... |
| LocalDataFlow.cs:88:32:88:36 | "def" | LocalDataFlow.cs:88:20:88:36 | ... ? ... : ... |
| LocalDataFlow.cs:89:15:89:22 | [post] access to local variable nonSink0 | LocalDataFlow.cs:96:32:96:39 | access to local variable nonSink0 |
| LocalDataFlow.cs:89:15:89:22 | access to local variable nonSink0 | LocalDataFlow.cs:96:32:96:39 | access to local variable nonSink0 |
| LocalDataFlow.cs:92:13:92:33 | SSA def(sink8) | LocalDataFlow.cs:93:15:93:19 | access to local variable sink8 |

View File

@@ -81,7 +81,7 @@ class ModulusAnalysis
? i * 4 + 3
: i * 8 + 7;
if (!cond3)
System.Console.WriteLine(j); // congruent 3 mod 4
System.Console.WriteLine(j); // congruent 7 mod 8
}
void For(int cap)

View File

@@ -131,9 +131,10 @@
| ModulusAnalysis.cs:75:25:75:25 | 3 | 0 | 3 | 0 |
| ModulusAnalysis.cs:77:38:77:38 | access to parameter x | 0 | 3 | 16 |
| ModulusAnalysis.cs:77:38:77:38 | access to parameter x | SSA param(x) | 0 | 0 |
| ModulusAnalysis.cs:80:9:82:23 | [cond3 (line 9): false] ... = ... | 0 | 3 | 4 |
| ModulusAnalysis.cs:80:9:82:23 | [cond3 (line 9): false] ... = ... | 0 | 7 | 8 |
| ModulusAnalysis.cs:80:9:82:23 | [cond3 (line 9): true] ... = ... | 0 | 3 | 4 |
| ModulusAnalysis.cs:80:13:82:23 | ... ? ... : ... | 0 | 3 | 4 |
| ModulusAnalysis.cs:80:13:82:23 | [cond3 (line 9): false] ... ? ... : ... | 0 | 7 | 8 |
| ModulusAnalysis.cs:80:13:82:23 | [cond3 (line 9): true] ... ? ... : ... | 0 | 3 | 4 |
| ModulusAnalysis.cs:81:15:81:15 | [cond3 (line 9): true] access to parameter i | SSA param(i) | 0 | 0 |
| ModulusAnalysis.cs:81:15:81:19 | [cond3 (line 9): true] ... * ... | 0 | 0 | 4 |
| ModulusAnalysis.cs:81:15:81:23 | [cond3 (line 9): true] ... + ... | 0 | 3 | 4 |
@@ -144,7 +145,7 @@
| ModulusAnalysis.cs:82:15:82:23 | [cond3 (line 9): false] ... + ... | 0 | 7 | 8 |
| ModulusAnalysis.cs:82:19:82:19 | [cond3 (line 9): false] 8 | 0 | 8 | 0 |
| ModulusAnalysis.cs:82:23:82:23 | [cond3 (line 9): false] 7 | 0 | 7 | 0 |
| ModulusAnalysis.cs:84:38:84:38 | access to local variable j | 0 | 3 | 4 |
| ModulusAnalysis.cs:84:38:84:38 | access to local variable j | 0 | 7 | 8 |
| ModulusAnalysis.cs:84:38:84:38 | access to local variable j | [cond3 (line 9): false] SSA def(j) | 0 | 0 |
| ModulusAnalysis.cs:89:22:89:22 | 0 | 0 | 0 | 0 |
| ModulusAnalysis.cs:89:25:89:25 | access to local variable i | SSA phi(i) | 0 | 0 |

View File

@@ -4,8 +4,8 @@
| DefUse.cs:6:14:6:14 | y | DefUse.cs:23:9:23:15 | SSA phi(y) | DefUse.cs:18:13:18:18 | SSA def(y) |
| DefUse.cs:6:14:6:14 | y | DefUse.cs:42:9:42:15 | SSA phi(y) | DefUse.cs:28:13:28:18 | SSA def(y) |
| DefUse.cs:6:14:6:14 | y | DefUse.cs:42:9:42:15 | SSA phi(y) | DefUse.cs:39:13:39:18 | SSA def(y) |
| DefUse.cs:79:13:79:14 | x1 | DefUse.cs:80:16:80:46 | SSA phi(x1) | DefUse.cs:79:13:79:18 | SSA def(x1) |
| DefUse.cs:79:13:79:14 | x1 | DefUse.cs:80:16:80:46 | SSA phi(x1) | DefUse.cs:80:30:80:31 | SSA def(x1) |
| DefUse.cs:79:13:79:14 | x1 | DefUse.cs:80:30:80:31 | SSA phi(x1) | DefUse.cs:79:13:79:18 | SSA def(x1) |
| DefUse.cs:79:13:79:14 | x1 | DefUse.cs:80:30:80:31 | SSA phi(x1) | DefUse.cs:80:30:80:31 | SSA def(x1) |
| DefUse.cs:97:13:97:14 | x5 | DefUse.cs:98:16:98:17 | SSA phi(x5) | DefUse.cs:97:13:97:18 | SSA def(x5) |
| DefUse.cs:97:13:97:14 | x5 | DefUse.cs:98:16:98:17 | SSA phi(x5) | DefUse.cs:101:13:101:23 | SSA def(x5) |
| Example.cs:8:9:8:18 | this.Field | Example.cs:14:9:14:24 | SSA phi(this.Field) | Example.cs:8:9:8:22 | SSA def(this.Field) |

View File

@@ -125,8 +125,8 @@
| DefUse.cs:66:9:66:14 | this.Field3 | DefUse.cs:66:9:66:18 | SSA def(this.Field3) |
| DefUse.cs:67:19:67:20 | tc | DefUse.cs:67:19:67:27 | SSA def(tc) |
| DefUse.cs:79:13:79:14 | x1 | DefUse.cs:79:13:79:18 | SSA def(x1) |
| DefUse.cs:79:13:79:14 | x1 | DefUse.cs:80:16:80:46 | SSA phi(x1) |
| DefUse.cs:79:13:79:14 | x1 | DefUse.cs:80:30:80:31 | SSA def(x1) |
| DefUse.cs:79:13:79:14 | x1 | DefUse.cs:80:30:80:31 | SSA phi(x1) |
| DefUse.cs:83:13:83:14 | x2 | DefUse.cs:83:13:83:18 | SSA def(x2) |
| DefUse.cs:83:13:83:14 | x2 | DefUse.cs:85:15:85:16 | SSA def(x2) |
| DefUse.cs:89:13:89:14 | x3 | DefUse.cs:89:13:89:18 | SSA def(x3) |

View File

@@ -96,8 +96,8 @@
| DefUse.cs:63:9:63:14 | this.Field2 | DefUse.cs:63:9:63:18 | SSA def(this.Field2) | DefUse.cs:80:37:80:42 | access to field Field2 |
| DefUse.cs:66:9:66:14 | this.Field3 | DefUse.cs:66:9:66:18 | SSA def(this.Field3) | DefUse.cs:69:13:69:18 | access to field Field3 |
| DefUse.cs:67:19:67:20 | tc | DefUse.cs:67:19:67:27 | SSA def(tc) | DefUse.cs:68:9:68:10 | access to local variable tc |
| DefUse.cs:79:13:79:14 | x1 | DefUse.cs:80:16:80:46 | SSA phi(x1) | DefUse.cs:80:30:80:31 | access to local variable x1 |
| DefUse.cs:79:13:79:14 | x1 | DefUse.cs:80:30:80:31 | SSA def(x1) | DefUse.cs:81:13:81:14 | access to local variable x1 |
| DefUse.cs:79:13:79:14 | x1 | DefUse.cs:80:30:80:31 | SSA phi(x1) | DefUse.cs:80:30:80:31 | access to local variable x1 |
| DefUse.cs:83:13:83:14 | x2 | DefUse.cs:83:13:83:18 | SSA def(x2) | DefUse.cs:85:15:85:16 | access to local variable x2 |
| DefUse.cs:83:13:83:14 | x2 | DefUse.cs:85:15:85:16 | SSA def(x2) | DefUse.cs:87:13:87:14 | access to local variable x2 |
| DefUse.cs:89:13:89:14 | x3 | DefUse.cs:89:13:89:18 | SSA def(x3) | DefUse.cs:92:15:92:16 | access to local variable x3 |

View File

@@ -111,8 +111,8 @@
| DefUse.cs:63:9:63:14 | this.Field2 | DefUse.cs:63:9:63:18 | SSA def(this.Field2) | DefUse.cs:80:37:80:42 | access to field Field2 |
| DefUse.cs:66:9:66:14 | this.Field3 | DefUse.cs:66:9:66:18 | SSA def(this.Field3) | DefUse.cs:69:13:69:18 | access to field Field3 |
| DefUse.cs:67:19:67:20 | tc | DefUse.cs:67:19:67:27 | SSA def(tc) | DefUse.cs:68:9:68:10 | access to local variable tc |
| DefUse.cs:79:13:79:14 | x1 | DefUse.cs:80:16:80:46 | SSA phi(x1) | DefUse.cs:80:30:80:31 | access to local variable x1 |
| DefUse.cs:79:13:79:14 | x1 | DefUse.cs:80:30:80:31 | SSA def(x1) | DefUse.cs:81:13:81:14 | access to local variable x1 |
| DefUse.cs:79:13:79:14 | x1 | DefUse.cs:80:30:80:31 | SSA phi(x1) | DefUse.cs:80:30:80:31 | access to local variable x1 |
| DefUse.cs:83:13:83:14 | x2 | DefUse.cs:83:13:83:18 | SSA def(x2) | DefUse.cs:85:15:85:16 | access to local variable x2 |
| DefUse.cs:83:13:83:14 | x2 | DefUse.cs:85:15:85:16 | SSA def(x2) | DefUse.cs:87:13:87:14 | access to local variable x2 |
| DefUse.cs:89:13:89:14 | x3 | DefUse.cs:89:13:89:18 | SSA def(x3) | DefUse.cs:92:15:92:16 | access to local variable x3 |

View File

@@ -139,9 +139,9 @@
| DefUse.cs:66:9:66:14 | this.Field3 | DefUse.cs:66:9:66:18 | SSA def(this.Field3) | DefUse.cs:66:9:66:18 | SSA def(this.Field3) |
| DefUse.cs:67:19:67:20 | tc | DefUse.cs:67:19:67:27 | SSA def(tc) | DefUse.cs:67:19:67:27 | SSA def(tc) |
| DefUse.cs:79:13:79:14 | x1 | DefUse.cs:79:13:79:18 | SSA def(x1) | DefUse.cs:79:13:79:18 | SSA def(x1) |
| DefUse.cs:79:13:79:14 | x1 | DefUse.cs:80:16:80:46 | SSA phi(x1) | DefUse.cs:79:13:79:18 | SSA def(x1) |
| DefUse.cs:79:13:79:14 | x1 | DefUse.cs:80:16:80:46 | SSA phi(x1) | DefUse.cs:80:30:80:31 | SSA def(x1) |
| DefUse.cs:79:13:79:14 | x1 | DefUse.cs:80:30:80:31 | SSA def(x1) | DefUse.cs:80:30:80:31 | SSA def(x1) |
| DefUse.cs:79:13:79:14 | x1 | DefUse.cs:80:30:80:31 | SSA phi(x1) | DefUse.cs:79:13:79:18 | SSA def(x1) |
| DefUse.cs:79:13:79:14 | x1 | DefUse.cs:80:30:80:31 | SSA phi(x1) | DefUse.cs:80:30:80:31 | SSA def(x1) |
| DefUse.cs:83:13:83:14 | x2 | DefUse.cs:83:13:83:18 | SSA def(x2) | DefUse.cs:83:13:83:18 | SSA def(x2) |
| DefUse.cs:83:13:83:14 | x2 | DefUse.cs:85:15:85:16 | SSA def(x2) | DefUse.cs:85:15:85:16 | SSA def(x2) |
| DefUse.cs:89:13:89:14 | x3 | DefUse.cs:89:13:89:18 | SSA def(x3) | DefUse.cs:89:13:89:18 | SSA def(x3) |

View File

@@ -1085,13 +1085,15 @@
| E.cs:85:18:85:29 | ... != ... | true | E.cs:85:18:85:21 | access to parameter vals | non-null |
| E.cs:85:18:85:35 | ... && ... | true | E.cs:85:18:85:29 | ... != ... | true |
| E.cs:85:18:85:35 | ... && ... | true | E.cs:85:34:85:35 | access to parameter b2 | true |
| E.cs:90:17:90:27 | access to local variable switchguard | match access to constant MY_CONST_A | E.cs:83:13:83:24 | ... != ... | true |
| E.cs:90:17:90:27 | access to local variable switchguard | match access to constant MY_CONST_A | E.cs:83:29:83:30 | access to parameter b1 | true |
| E.cs:90:17:90:27 | access to local variable switchguard | match access to constant MY_CONST_A | E.cs:83:13:83:30 | ... && ... | true |
| E.cs:90:17:90:27 | access to local variable switchguard | match access to constant MY_CONST_A | E.cs:90:17:90:27 | access to local variable switchguard | 1 |
| E.cs:90:17:90:27 | access to local variable switchguard | match access to constant MY_CONST_B | E.cs:85:18:85:29 | ... != ... | true |
| E.cs:90:17:90:27 | access to local variable switchguard | match access to constant MY_CONST_B | E.cs:85:34:85:35 | access to parameter b2 | true |
| E.cs:90:17:90:27 | access to local variable switchguard | match access to constant MY_CONST_B | E.cs:83:13:83:30 | ... && ... | false |
| E.cs:90:17:90:27 | access to local variable switchguard | match access to constant MY_CONST_B | E.cs:85:18:85:35 | ... && ... | true |
| E.cs:90:17:90:27 | access to local variable switchguard | match access to constant MY_CONST_B | E.cs:90:17:90:27 | access to local variable switchguard | 2 |
| E.cs:90:17:90:27 | access to local variable switchguard | match access to constant MY_CONST_C | E.cs:83:13:83:30 | ... && ... | false |
| E.cs:90:17:90:27 | access to local variable switchguard | match access to constant MY_CONST_C | E.cs:85:18:85:35 | ... && ... | false |
| E.cs:90:17:90:27 | access to local variable switchguard | match access to constant MY_CONST_C | E.cs:90:17:90:27 | access to local variable switchguard | 3 |
| E.cs:90:17:90:27 | access to local variable switchguard | non-match access to constant MY_CONST_A | E.cs:83:13:83:30 | ... && ... | false |
| E.cs:108:13:108:27 | ... > ... | true | E.cs:108:13:108:16 | access to parameter arr1 | non-empty |
| E.cs:120:16:120:20 | !... | false | E.cs:120:17:120:20 | access to local variable stop | true |
| E.cs:120:16:120:20 | !... | true | E.cs:120:17:120:20 | access to local variable stop | false |

View File

@@ -46,6 +46,7 @@ nodes
| B.cs:22:9:24:37 | if (...) ... |
| B.cs:24:13:24:25 | access to local variable neqCallAlways |
| C.cs:10:16:10:23 | SSA def(o) |
| C.cs:11:17:11:28 | [false] !... |
| C.cs:16:9:19:9 | if (...) ... |
| C.cs:18:13:18:13 | access to local variable o |
| C.cs:40:13:40:35 | SSA def(s) |
@@ -107,10 +108,10 @@ nodes
| D.cs:61:9:62:26 | if (...) ... |
| D.cs:62:13:62:14 | access to local variable o5 |
| D.cs:68:13:68:34 | SSA def(o7) |
| D.cs:69:13:69:36 | Boolean ok = ... |
| D.cs:69:18:69:36 | ... && ... |
| D.cs:73:13:73:14 | access to local variable o7 |
| D.cs:75:13:75:34 | SSA def(o8) |
| D.cs:76:13:76:43 | Int32 track = ... |
| D.cs:76:21:76:43 | ... ? ... : ... |
| D.cs:76:34:76:35 | 42 |
| D.cs:79:9:80:26 | if (...) ... |
| D.cs:81:9:82:26 | if (...) ... |
@@ -140,13 +141,13 @@ nodes
| D.cs:125:35:125:35 | SSA param(a) |
| D.cs:125:35:125:35 | SSA param(a) |
| D.cs:125:44:125:44 | SSA param(b) |
| D.cs:127:13:127:43 | Int32 alen = ... |
| D.cs:127:13:127:43 | Int32 alen = ... |
| D.cs:127:20:127:43 | ... ? ... : ... |
| D.cs:127:20:127:43 | ... ? ... : ... |
| D.cs:127:32:127:32 | 0 |
| D.cs:127:32:127:32 | 0 |
| D.cs:127:36:127:36 | access to parameter a |
| D.cs:128:13:128:43 | Int32 blen = ... |
| D.cs:128:13:128:43 | Int32 blen = ... |
| D.cs:128:20:128:43 | ... ? ... : ... |
| D.cs:128:20:128:43 | ... ? ... : ... |
| D.cs:128:32:128:32 | 0 |
| D.cs:128:32:128:32 | 0 |
| D.cs:128:36:128:36 | access to parameter b |
@@ -170,7 +171,7 @@ nodes
| D.cs:168:9:170:9 | [exception: Exception] catch (...) {...} |
| D.cs:171:9:171:11 | access to local variable obj |
| D.cs:240:9:240:16 | SSA def(o) |
| D.cs:241:13:241:37 | String other = ... |
| D.cs:241:21:241:37 | ... ? ... : ... |
| D.cs:241:29:241:32 | null |
| D.cs:241:36:241:37 | "" |
| D.cs:244:9:247:25 | if (...) ... |
@@ -203,7 +204,7 @@ nodes
| D.cs:312:13:313:29 | if (...) ... |
| D.cs:313:17:313:17 | access to local variable s |
| D.cs:316:16:316:23 | SSA def(r) |
| D.cs:318:16:318:62 | ... && ... |
| D.cs:318:16:318:19 | access to local variable stat |
| D.cs:318:41:318:44 | access to local variable stat |
| D.cs:324:9:324:9 | access to local variable r |
| D.cs:351:15:351:22 | SSA def(a) |
@@ -215,7 +216,7 @@ nodes
| D.cs:361:29:361:29 | access to local variable i |
| D.cs:363:13:363:16 | access to local variable last |
| D.cs:366:15:366:47 | SSA def(b) |
| D.cs:370:9:373:9 | for (...;...;...) ... |
| D.cs:367:13:367:56 | [false] ... && ... |
| D.cs:370:25:370:25 | access to local variable i |
| D.cs:371:9:373:9 | {...} |
| D.cs:372:13:372:13 | access to local variable b |
@@ -224,8 +225,8 @@ nodes
| D.cs:385:13:385:15 | access to local variable ioe |
| D.cs:388:36:388:36 | SSA param(a) |
| D.cs:388:45:388:45 | SSA param(b) |
| D.cs:390:13:390:43 | Int32 alen = ... |
| D.cs:390:13:390:43 | Int32 alen = ... |
| D.cs:390:20:390:43 | ... ? ... : ... |
| D.cs:390:20:390:43 | ... ? ... : ... |
| D.cs:390:32:390:32 | 0 |
| D.cs:390:32:390:32 | 0 |
| D.cs:390:36:390:36 | access to parameter a |
@@ -235,7 +236,7 @@ nodes
| D.cs:394:9:396:9 | {...} |
| D.cs:395:20:395:20 | access to parameter a |
| D.cs:397:9:397:44 | ... ...; |
| D.cs:397:13:397:43 | Int32 blen = ... |
| D.cs:397:20:397:43 | ... ? ... : ... |
| D.cs:397:32:397:32 | 0 |
| D.cs:398:21:398:21 | access to local variable i |
| D.cs:399:9:401:9 | {...} |
@@ -246,23 +247,23 @@ nodes
| D.cs:405:45:405:45 | SSA param(y) |
| D.cs:405:45:405:45 | SSA param(y) |
| D.cs:405:45:405:45 | SSA param(y) |
| D.cs:407:42:407:63 | ... && ... |
| D.cs:407:42:407:63 | ... && ... |
| D.cs:407:14:407:35 | [false] ... && ... |
| D.cs:407:14:407:35 | [false] ... && ... |
| D.cs:407:42:407:63 | [false] ... && ... |
| D.cs:407:42:407:63 | [false] ... && ... |
| D.cs:407:55:407:55 | access to parameter y |
| D.cs:407:55:407:55 | access to parameter y |
| D.cs:409:9:410:25 | if (...) ... |
| D.cs:409:9:410:25 | if (...) ... |
| D.cs:410:13:410:13 | access to parameter y |
| D.cs:411:9:412:25 | if (...) ... |
| D.cs:412:13:412:13 | access to parameter x |
| E.cs:9:18:9:26 | SSA def(a2) |
| E.cs:10:13:10:54 | Boolean haveA2 = ... |
| E.cs:10:22:10:54 | ... && ... |
| E.cs:11:16:11:24 | SSA def(a3) |
| E.cs:12:13:12:52 | Boolean haveA3 = ... |
| E.cs:12:22:12:52 | ... && ... |
| E.cs:12:38:12:39 | access to local variable a2 |
| E.cs:14:13:14:14 | access to local variable a3 |
| E.cs:23:13:23:30 | SSA def(s1) |
| E.cs:24:13:24:41 | ... = ... |
| E.cs:24:18:24:41 | ... ? ... : ... |
| E.cs:24:33:24:36 | null |
| E.cs:26:9:27:26 | if (...) ... |
| E.cs:27:13:27:14 | access to local variable s1 |
@@ -272,8 +273,8 @@ nodes
| E.cs:61:13:61:17 | access to local variable slice |
| E.cs:61:13:61:27 | ...; |
| E.cs:66:40:66:42 | SSA param(arr) |
| E.cs:70:13:70:49 | ... = ... |
| E.cs:70:13:70:50 | ...; |
| E.cs:70:22:70:49 | ... ? ... : ... |
| E.cs:70:36:70:36 | 0 |
| E.cs:72:9:73:23 | if (...) ... |
| E.cs:73:13:73:15 | access to parameter arr |
@@ -282,21 +283,24 @@ nodes
| E.cs:111:25:111:25 | access to local variable i |
| E.cs:112:13:112:16 | access to local variable arr2 |
| E.cs:112:13:112:30 | ...; |
| E.cs:120:16:120:20 | !... |
| E.cs:121:9:143:9 | {...} |
| E.cs:123:20:123:35 | ... && ... |
| E.cs:123:29:123:29 | access to local variable j |
| E.cs:124:13:142:13 | {...} |
| E.cs:120:16:120:20 | [true] !... |
| E.cs:120:17:120:20 | access to local variable stop |
| E.cs:123:20:123:24 | [false] !... |
| E.cs:123:20:123:24 | [true] !... |
| E.cs:123:20:123:35 | [false] ... && ... |
| E.cs:123:20:123:35 | [true] ... && ... |
| E.cs:123:21:123:24 | access to local variable stop |
| E.cs:125:33:125:35 | access to local variable obj |
| E.cs:128:21:128:23 | access to local variable obj |
| E.cs:137:25:137:34 | SSA def(obj) |
| E.cs:139:21:139:29 | continue; |
| E.cs:141:17:141:26 | ...; |
| E.cs:152:16:152:26 | SSA def(obj2) |
| E.cs:153:13:153:54 | [false] ... && ... |
| E.cs:158:9:159:28 | if (...) ... |
| E.cs:159:13:159:16 | access to local variable obj2 |
| E.cs:162:28:162:28 | SSA param(a) |
| E.cs:164:13:164:40 | Int32 n = ... |
| E.cs:164:17:164:40 | ... ? ... : ... |
| E.cs:164:29:164:29 | 0 |
| E.cs:165:25:165:25 | access to local variable i |
| E.cs:165:32:165:32 | access to local variable i |
@@ -304,7 +308,7 @@ nodes
| E.cs:167:21:167:21 | access to parameter a |
| E.cs:173:29:173:31 | SSA param(obj) |
| E.cs:173:29:173:31 | SSA param(obj) |
| E.cs:175:14:175:42 | Boolean b2 = ... |
| E.cs:175:19:175:42 | ... ? ... : ... |
| E.cs:175:33:175:37 | false |
| E.cs:177:9:179:9 | {...} |
| E.cs:178:13:178:15 | access to parameter obj |
@@ -337,8 +341,8 @@ nodes
| E.cs:301:13:301:27 | SSA def(s) |
| E.cs:302:9:302:9 | access to local variable s |
| E.cs:319:29:319:30 | SSA param(s1) |
| E.cs:321:14:321:21 | ... ?? ... |
| E.cs:321:20:321:21 | access to parameter s2 |
| E.cs:321:27:321:30 | null |
| E.cs:323:13:323:14 | access to parameter s1 |
| E.cs:330:13:330:36 | SSA def(x) |
| E.cs:331:9:331:9 | access to local variable x |
@@ -356,12 +360,12 @@ nodes
| E.cs:380:30:380:31 | SSA param(e2) |
| E.cs:380:30:380:31 | SSA param(e2) |
| E.cs:380:30:380:31 | SSA param(e2) |
| E.cs:382:14:382:37 | [false] ... && ... |
| E.cs:382:14:382:37 | [false] ... && ... |
| E.cs:382:28:382:29 | access to parameter e2 |
| E.cs:382:28:382:29 | access to parameter e2 |
| E.cs:382:44:382:67 | ... && ... |
| E.cs:382:44:382:67 | ... && ... |
| E.cs:384:9:385:24 | if (...) ... |
| E.cs:384:9:385:24 | if (...) ... |
| E.cs:382:44:382:67 | [false] ... && ... |
| E.cs:382:44:382:67 | [false] ... && ... |
| E.cs:384:27:384:28 | access to parameter e2 |
| E.cs:386:16:386:17 | access to parameter e1 |
| E.cs:386:27:386:28 | access to parameter e2 |
@@ -369,8 +373,10 @@ nodes
| E.cs:404:9:404:18 | SSA def(i) |
| E.cs:405:16:405:16 | access to local variable i |
| Forwarding.cs:7:16:7:23 | SSA def(s) |
| Forwarding.cs:9:13:9:30 | [false] !... |
| Forwarding.cs:14:9:17:9 | if (...) ... |
| Forwarding.cs:19:9:22:9 | if (...) ... |
| Forwarding.cs:19:13:19:23 | [false] !... |
| Forwarding.cs:24:9:27:9 | if (...) ... |
| Forwarding.cs:29:9:32:9 | if (...) ... |
| Forwarding.cs:34:9:37:9 | if (...) ... |
@@ -378,7 +384,9 @@ nodes
| Forwarding.cs:36:31:36:31 | access to local variable s |
| Forwarding.cs:40:27:40:27 | access to local variable s |
| GuardedString.cs:7:16:7:32 | SSA def(s) |
| GuardedString.cs:9:13:9:36 | [false] !... |
| GuardedString.cs:14:9:17:9 | if (...) ... |
| GuardedString.cs:14:13:14:41 | [false] !... |
| GuardedString.cs:19:9:20:40 | if (...) ... |
| GuardedString.cs:19:26:19:26 | 0 |
| GuardedString.cs:22:9:23:40 | if (...) ... |
@@ -432,7 +440,8 @@ edges
| B.cs:18:25:18:27 | {...} | B.cs:22:9:24:37 | if (...) ... |
| B.cs:20:13:20:26 | ...; | B.cs:22:9:24:37 | if (...) ... |
| B.cs:22:9:24:37 | if (...) ... | B.cs:24:13:24:25 | access to local variable neqCallAlways |
| C.cs:10:16:10:23 | SSA def(o) | C.cs:16:9:19:9 | if (...) ... |
| C.cs:10:16:10:23 | SSA def(o) | C.cs:11:17:11:28 | [false] !... |
| C.cs:11:17:11:28 | [false] !... | C.cs:16:9:19:9 | if (...) ... |
| C.cs:16:9:19:9 | if (...) ... | C.cs:18:13:18:13 | access to local variable o |
| C.cs:40:13:40:35 | SSA def(s) | C.cs:42:9:42:9 | access to local variable s |
| C.cs:55:13:55:36 | SSA def(o2) | C.cs:57:9:57:10 | access to local variable o2 |
@@ -471,11 +480,11 @@ edges
| D.cs:26:32:26:36 | SSA param(param) | D.cs:32:9:32:13 | access to parameter param |
| D.cs:58:13:58:41 | SSA def(o5) | D.cs:61:9:62:26 | if (...) ... |
| D.cs:61:9:62:26 | if (...) ... | D.cs:62:13:62:14 | access to local variable o5 |
| D.cs:68:13:68:34 | SSA def(o7) | D.cs:69:13:69:36 | Boolean ok = ... |
| D.cs:69:13:69:36 | Boolean ok = ... | D.cs:73:13:73:14 | access to local variable o7 |
| D.cs:68:13:68:34 | SSA def(o7) | D.cs:69:18:69:36 | ... && ... |
| D.cs:69:18:69:36 | ... && ... | D.cs:73:13:73:14 | access to local variable o7 |
| D.cs:75:13:75:34 | SSA def(o8) | D.cs:76:34:76:35 | 42 |
| D.cs:76:13:76:43 | Int32 track = ... | D.cs:79:9:80:26 | if (...) ... |
| D.cs:76:34:76:35 | 42 | D.cs:76:13:76:43 | Int32 track = ... |
| D.cs:76:21:76:43 | ... ? ... : ... | D.cs:79:9:80:26 | if (...) ... |
| D.cs:76:34:76:35 | 42 | D.cs:76:21:76:43 | ... ? ... : ... |
| D.cs:79:9:80:26 | if (...) ... | D.cs:81:9:82:26 | if (...) ... |
| D.cs:81:9:82:26 | if (...) ... | D.cs:82:13:82:14 | access to local variable o8 |
| D.cs:81:9:82:26 | if (...) ... | D.cs:82:13:82:26 | ...; |
@@ -508,18 +517,18 @@ edges
| D.cs:125:35:125:35 | SSA param(a) | D.cs:127:32:127:32 | 0 |
| D.cs:125:44:125:44 | SSA param(b) | D.cs:127:32:127:32 | 0 |
| D.cs:125:44:125:44 | SSA param(b) | D.cs:127:36:127:36 | access to parameter a |
| D.cs:127:13:127:43 | Int32 alen = ... | D.cs:128:32:128:32 | 0 |
| D.cs:127:13:127:43 | Int32 alen = ... | D.cs:128:32:128:32 | 0 |
| D.cs:127:13:127:43 | Int32 alen = ... | D.cs:128:36:128:36 | access to parameter b |
| D.cs:127:32:127:32 | 0 | D.cs:127:13:127:43 | Int32 alen = ... |
| D.cs:127:32:127:32 | 0 | D.cs:127:13:127:43 | Int32 alen = ... |
| D.cs:127:36:127:36 | access to parameter a | D.cs:127:13:127:43 | Int32 alen = ... |
| D.cs:128:13:128:43 | Int32 blen = ... | D.cs:131:9:137:9 | {...} |
| D.cs:128:13:128:43 | Int32 blen = ... | D.cs:131:9:137:9 | {...} |
| D.cs:128:13:128:43 | Int32 blen = ... | D.cs:138:9:138:18 | ... ...; |
| D.cs:128:32:128:32 | 0 | D.cs:128:13:128:43 | Int32 blen = ... |
| D.cs:128:32:128:32 | 0 | D.cs:128:13:128:43 | Int32 blen = ... |
| D.cs:128:36:128:36 | access to parameter b | D.cs:128:13:128:43 | Int32 blen = ... |
| D.cs:127:20:127:43 | ... ? ... : ... | D.cs:128:32:128:32 | 0 |
| D.cs:127:20:127:43 | ... ? ... : ... | D.cs:128:32:128:32 | 0 |
| D.cs:127:20:127:43 | ... ? ... : ... | D.cs:128:36:128:36 | access to parameter b |
| D.cs:127:32:127:32 | 0 | D.cs:127:20:127:43 | ... ? ... : ... |
| D.cs:127:32:127:32 | 0 | D.cs:127:20:127:43 | ... ? ... : ... |
| D.cs:127:36:127:36 | access to parameter a | D.cs:127:20:127:43 | ... ? ... : ... |
| D.cs:128:20:128:43 | ... ? ... : ... | D.cs:131:9:137:9 | {...} |
| D.cs:128:20:128:43 | ... ? ... : ... | D.cs:131:9:137:9 | {...} |
| D.cs:128:20:128:43 | ... ? ... : ... | D.cs:138:9:138:18 | ... ...; |
| D.cs:128:32:128:32 | 0 | D.cs:128:20:128:43 | ... ? ... : ... |
| D.cs:128:32:128:32 | 0 | D.cs:128:20:128:43 | ... ? ... : ... |
| D.cs:128:36:128:36 | access to parameter b | D.cs:128:20:128:43 | ... ? ... : ... |
| D.cs:131:9:137:9 | {...} | D.cs:132:29:132:29 | access to local variable i |
| D.cs:131:9:137:9 | {...} | D.cs:132:29:132:29 | access to local variable i |
| D.cs:132:29:132:29 | access to local variable i | D.cs:133:13:136:13 | {...} |
@@ -540,9 +549,9 @@ edges
| D.cs:168:9:170:9 | [exception: Exception] catch (...) {...} | D.cs:171:9:171:11 | access to local variable obj |
| D.cs:240:9:240:16 | SSA def(o) | D.cs:241:29:241:32 | null |
| D.cs:240:9:240:16 | SSA def(o) | D.cs:241:36:241:37 | "" |
| D.cs:241:13:241:37 | String other = ... | D.cs:244:9:247:25 | if (...) ... |
| D.cs:241:29:241:32 | null | D.cs:241:13:241:37 | String other = ... |
| D.cs:241:36:241:37 | "" | D.cs:241:13:241:37 | String other = ... |
| D.cs:241:21:241:37 | ... ? ... : ... | D.cs:244:9:247:25 | if (...) ... |
| D.cs:241:29:241:32 | null | D.cs:241:21:241:37 | ... ? ... : ... |
| D.cs:241:36:241:37 | "" | D.cs:241:21:241:37 | ... ? ... : ... |
| D.cs:244:9:247:25 | if (...) ... | D.cs:245:13:245:13 | access to local variable o |
| D.cs:244:9:247:25 | if (...) ... | D.cs:247:13:247:13 | access to local variable o |
| D.cs:249:13:249:38 | SSA def(o2) | D.cs:253:13:253:14 | access to local variable o2 |
@@ -569,9 +578,9 @@ edges
| D.cs:304:16:304:23 | SSA def(s) | D.cs:307:13:311:13 | foreach (... ... in ...) ... |
| D.cs:307:13:311:13 | foreach (... ... in ...) ... | D.cs:312:13:313:29 | if (...) ... |
| D.cs:312:13:313:29 | if (...) ... | D.cs:313:17:313:17 | access to local variable s |
| D.cs:316:16:316:23 | SSA def(r) | D.cs:318:16:318:62 | ... && ... |
| D.cs:318:16:318:62 | ... && ... | D.cs:318:41:318:44 | access to local variable stat |
| D.cs:318:16:318:62 | ... && ... | D.cs:324:9:324:9 | access to local variable r |
| D.cs:316:16:316:23 | SSA def(r) | D.cs:318:16:318:19 | access to local variable stat |
| D.cs:318:16:318:19 | access to local variable stat | D.cs:318:41:318:44 | access to local variable stat |
| D.cs:318:16:318:19 | access to local variable stat | D.cs:324:9:324:9 | access to local variable r |
| D.cs:318:41:318:44 | access to local variable stat | D.cs:324:9:324:9 | access to local variable r |
| D.cs:351:15:351:22 | SSA def(a) | D.cs:355:9:356:21 | for (...;...;...) ... |
| D.cs:355:9:356:21 | for (...;...;...) ... | D.cs:355:25:355:25 | access to local variable i |
@@ -580,8 +589,8 @@ edges
| D.cs:356:13:356:21 | ...; | D.cs:355:25:355:25 | access to local variable i |
| D.cs:360:20:360:30 | SSA def(last) | D.cs:361:29:361:29 | access to local variable i |
| D.cs:361:29:361:29 | access to local variable i | D.cs:363:13:363:16 | access to local variable last |
| D.cs:366:15:366:47 | SSA def(b) | D.cs:370:9:373:9 | for (...;...;...) ... |
| D.cs:370:9:373:9 | for (...;...;...) ... | D.cs:370:25:370:25 | access to local variable i |
| D.cs:366:15:366:47 | SSA def(b) | D.cs:367:13:367:56 | [false] ... && ... |
| D.cs:367:13:367:56 | [false] ... && ... | D.cs:370:25:370:25 | access to local variable i |
| D.cs:370:25:370:25 | access to local variable i | D.cs:371:9:373:9 | {...} |
| D.cs:370:25:370:25 | access to local variable i | D.cs:372:13:372:13 | access to local variable b |
| D.cs:371:9:373:9 | {...} | D.cs:370:25:370:25 | access to local variable i |
@@ -590,11 +599,11 @@ edges
| D.cs:388:36:388:36 | SSA param(a) | D.cs:390:32:390:32 | 0 |
| D.cs:388:45:388:45 | SSA param(b) | D.cs:390:32:390:32 | 0 |
| D.cs:388:45:388:45 | SSA param(b) | D.cs:390:36:390:36 | access to parameter a |
| D.cs:390:13:390:43 | Int32 alen = ... | D.cs:393:21:393:21 | access to local variable i |
| D.cs:390:13:390:43 | Int32 alen = ... | D.cs:393:21:393:21 | access to local variable i |
| D.cs:390:32:390:32 | 0 | D.cs:390:13:390:43 | Int32 alen = ... |
| D.cs:390:32:390:32 | 0 | D.cs:390:13:390:43 | Int32 alen = ... |
| D.cs:390:36:390:36 | access to parameter a | D.cs:390:13:390:43 | Int32 alen = ... |
| D.cs:390:20:390:43 | ... ? ... : ... | D.cs:393:21:393:21 | access to local variable i |
| D.cs:390:20:390:43 | ... ? ... : ... | D.cs:393:21:393:21 | access to local variable i |
| D.cs:390:32:390:32 | 0 | D.cs:390:20:390:43 | ... ? ... : ... |
| D.cs:390:32:390:32 | 0 | D.cs:390:20:390:43 | ... ? ... : ... |
| D.cs:390:36:390:36 | access to parameter a | D.cs:390:20:390:43 | ... ? ... : ... |
| D.cs:393:21:393:21 | access to local variable i | D.cs:394:9:396:9 | {...} |
| D.cs:393:21:393:21 | access to local variable i | D.cs:394:9:396:9 | {...} |
| D.cs:393:21:393:21 | access to local variable i | D.cs:395:20:395:20 | access to parameter a |
@@ -602,32 +611,32 @@ edges
| D.cs:394:9:396:9 | {...} | D.cs:393:21:393:21 | access to local variable i |
| D.cs:394:9:396:9 | {...} | D.cs:393:21:393:21 | access to local variable i |
| D.cs:397:9:397:44 | ... ...; | D.cs:397:32:397:32 | 0 |
| D.cs:397:13:397:43 | Int32 blen = ... | D.cs:398:21:398:21 | access to local variable i |
| D.cs:397:32:397:32 | 0 | D.cs:397:13:397:43 | Int32 blen = ... |
| D.cs:397:20:397:43 | ... ? ... : ... | D.cs:398:21:398:21 | access to local variable i |
| D.cs:397:32:397:32 | 0 | D.cs:397:20:397:43 | ... ? ... : ... |
| D.cs:398:21:398:21 | access to local variable i | D.cs:399:9:401:9 | {...} |
| D.cs:398:21:398:21 | access to local variable i | D.cs:400:20:400:20 | access to parameter b |
| D.cs:399:9:401:9 | {...} | D.cs:398:21:398:21 | access to local variable i |
| D.cs:405:35:405:35 | SSA param(x) | D.cs:407:42:407:63 | ... && ... |
| D.cs:405:35:405:35 | SSA param(x) | D.cs:407:42:407:63 | ... && ... |
| D.cs:405:35:405:35 | SSA param(x) | D.cs:407:42:407:63 | ... && ... |
| D.cs:405:45:405:45 | SSA param(y) | D.cs:407:42:407:63 | ... && ... |
| D.cs:405:45:405:45 | SSA param(y) | D.cs:407:42:407:63 | ... && ... |
| D.cs:405:45:405:45 | SSA param(y) | D.cs:407:42:407:63 | ... && ... |
| D.cs:407:42:407:63 | ... && ... | D.cs:407:55:407:55 | access to parameter y |
| D.cs:407:42:407:63 | ... && ... | D.cs:407:55:407:55 | access to parameter y |
| D.cs:407:42:407:63 | ... && ... | D.cs:409:9:410:25 | if (...) ... |
| D.cs:407:55:407:55 | access to parameter y | D.cs:409:9:410:25 | if (...) ... |
| D.cs:407:55:407:55 | access to parameter y | D.cs:409:9:410:25 | if (...) ... |
| D.cs:409:9:410:25 | if (...) ... | D.cs:410:13:410:13 | access to parameter y |
| D.cs:409:9:410:25 | if (...) ... | D.cs:411:9:412:25 | if (...) ... |
| D.cs:405:35:405:35 | SSA param(x) | D.cs:407:14:407:35 | [false] ... && ... |
| D.cs:405:35:405:35 | SSA param(x) | D.cs:407:14:407:35 | [false] ... && ... |
| D.cs:405:35:405:35 | SSA param(x) | D.cs:407:14:407:35 | [false] ... && ... |
| D.cs:405:45:405:45 | SSA param(y) | D.cs:407:14:407:35 | [false] ... && ... |
| D.cs:405:45:405:45 | SSA param(y) | D.cs:407:14:407:35 | [false] ... && ... |
| D.cs:405:45:405:45 | SSA param(y) | D.cs:407:14:407:35 | [false] ... && ... |
| D.cs:407:14:407:35 | [false] ... && ... | D.cs:407:42:407:63 | [false] ... && ... |
| D.cs:407:14:407:35 | [false] ... && ... | D.cs:407:55:407:55 | access to parameter y |
| D.cs:407:14:407:35 | [false] ... && ... | D.cs:407:55:407:55 | access to parameter y |
| D.cs:407:42:407:63 | [false] ... && ... | D.cs:410:13:410:13 | access to parameter y |
| D.cs:407:42:407:63 | [false] ... && ... | D.cs:411:9:412:25 | if (...) ... |
| D.cs:407:55:407:55 | access to parameter y | D.cs:407:42:407:63 | [false] ... && ... |
| D.cs:407:55:407:55 | access to parameter y | D.cs:407:42:407:63 | [false] ... && ... |
| D.cs:411:9:412:25 | if (...) ... | D.cs:412:13:412:13 | access to parameter x |
| E.cs:9:18:9:26 | SSA def(a2) | E.cs:10:13:10:54 | Boolean haveA2 = ... |
| E.cs:10:13:10:54 | Boolean haveA2 = ... | E.cs:12:38:12:39 | access to local variable a2 |
| E.cs:11:16:11:24 | SSA def(a3) | E.cs:12:13:12:52 | Boolean haveA3 = ... |
| E.cs:12:13:12:52 | Boolean haveA3 = ... | E.cs:14:13:14:14 | access to local variable a3 |
| E.cs:9:18:9:26 | SSA def(a2) | E.cs:10:22:10:54 | ... && ... |
| E.cs:10:22:10:54 | ... && ... | E.cs:12:38:12:39 | access to local variable a2 |
| E.cs:11:16:11:24 | SSA def(a3) | E.cs:12:22:12:52 | ... && ... |
| E.cs:12:22:12:52 | ... && ... | E.cs:14:13:14:14 | access to local variable a3 |
| E.cs:23:13:23:30 | SSA def(s1) | E.cs:24:33:24:36 | null |
| E.cs:24:13:24:41 | ... = ... | E.cs:26:9:27:26 | if (...) ... |
| E.cs:24:33:24:36 | null | E.cs:24:13:24:41 | ... = ... |
| E.cs:24:18:24:41 | ... ? ... : ... | E.cs:26:9:27:26 | if (...) ... |
| E.cs:24:33:24:36 | null | E.cs:24:18:24:41 | ... ? ... : ... |
| E.cs:26:9:27:26 | if (...) ... | E.cs:27:13:27:14 | access to local variable s1 |
| E.cs:51:22:51:33 | SSA def(slice) | E.cs:53:16:53:19 | access to local variable iter |
| E.cs:53:16:53:19 | access to local variable iter | E.cs:54:9:63:9 | {...} |
@@ -636,42 +645,45 @@ edges
| E.cs:61:13:61:27 | ...; | E.cs:53:16:53:19 | access to local variable iter |
| E.cs:66:40:66:42 | SSA param(arr) | E.cs:70:13:70:50 | ...; |
| E.cs:66:40:66:42 | SSA param(arr) | E.cs:72:9:73:23 | if (...) ... |
| E.cs:70:13:70:49 | ... = ... | E.cs:72:9:73:23 | if (...) ... |
| E.cs:70:13:70:50 | ...; | E.cs:70:36:70:36 | 0 |
| E.cs:70:36:70:36 | 0 | E.cs:70:13:70:49 | ... = ... |
| E.cs:70:22:70:49 | ... ? ... : ... | E.cs:72:9:73:23 | if (...) ... |
| E.cs:70:36:70:36 | 0 | E.cs:70:22:70:49 | ... ? ... : ... |
| E.cs:72:9:73:23 | if (...) ... | E.cs:73:13:73:15 | access to parameter arr |
| E.cs:107:15:107:25 | SSA def(arr2) | E.cs:111:9:112:30 | for (...;...;...) ... |
| E.cs:111:9:112:30 | for (...;...;...) ... | E.cs:111:25:111:25 | access to local variable i |
| E.cs:111:25:111:25 | access to local variable i | E.cs:112:13:112:16 | access to local variable arr2 |
| E.cs:111:25:111:25 | access to local variable i | E.cs:112:13:112:30 | ...; |
| E.cs:112:13:112:30 | ...; | E.cs:111:25:111:25 | access to local variable i |
| E.cs:120:16:120:20 | !... | E.cs:121:9:143:9 | {...} |
| E.cs:121:9:143:9 | {...} | E.cs:123:20:123:35 | ... && ... |
| E.cs:123:20:123:35 | ... && ... | E.cs:120:16:120:20 | !... |
| E.cs:123:20:123:35 | ... && ... | E.cs:123:29:123:29 | access to local variable j |
| E.cs:123:29:123:29 | access to local variable j | E.cs:120:16:120:20 | !... |
| E.cs:123:29:123:29 | access to local variable j | E.cs:124:13:142:13 | {...} |
| E.cs:123:29:123:29 | access to local variable j | E.cs:125:33:125:35 | access to local variable obj |
| E.cs:124:13:142:13 | {...} | E.cs:128:21:128:23 | access to local variable obj |
| E.cs:124:13:142:13 | {...} | E.cs:141:17:141:26 | ...; |
| E.cs:120:16:120:20 | [true] !... | E.cs:123:21:123:24 | access to local variable stop |
| E.cs:120:17:120:20 | access to local variable stop | E.cs:120:16:120:20 | [true] !... |
| E.cs:123:20:123:24 | [false] !... | E.cs:123:20:123:35 | [false] ... && ... |
| E.cs:123:20:123:24 | [true] !... | E.cs:123:20:123:35 | [false] ... && ... |
| E.cs:123:20:123:24 | [true] !... | E.cs:123:20:123:35 | [true] ... && ... |
| E.cs:123:20:123:24 | [true] !... | E.cs:125:33:125:35 | access to local variable obj |
| E.cs:123:20:123:35 | [false] ... && ... | E.cs:120:17:120:20 | access to local variable stop |
| E.cs:123:20:123:35 | [true] ... && ... | E.cs:128:21:128:23 | access to local variable obj |
| E.cs:123:20:123:35 | [true] ... && ... | E.cs:141:17:141:26 | ...; |
| E.cs:123:21:123:24 | access to local variable stop | E.cs:123:20:123:24 | [false] !... |
| E.cs:123:21:123:24 | access to local variable stop | E.cs:123:20:123:24 | [true] !... |
| E.cs:137:25:137:34 | SSA def(obj) | E.cs:139:21:139:29 | continue; |
| E.cs:139:21:139:29 | continue; | E.cs:123:20:123:35 | ... && ... |
| E.cs:141:17:141:26 | ...; | E.cs:123:20:123:35 | ... && ... |
| E.cs:152:16:152:26 | SSA def(obj2) | E.cs:158:9:159:28 | if (...) ... |
| E.cs:139:21:139:29 | continue; | E.cs:123:21:123:24 | access to local variable stop |
| E.cs:141:17:141:26 | ...; | E.cs:123:21:123:24 | access to local variable stop |
| E.cs:152:16:152:26 | SSA def(obj2) | E.cs:153:13:153:54 | [false] ... && ... |
| E.cs:153:13:153:54 | [false] ... && ... | E.cs:158:9:159:28 | if (...) ... |
| E.cs:158:9:159:28 | if (...) ... | E.cs:159:13:159:16 | access to local variable obj2 |
| E.cs:162:28:162:28 | SSA param(a) | E.cs:164:29:164:29 | 0 |
| E.cs:164:13:164:40 | Int32 n = ... | E.cs:165:25:165:25 | access to local variable i |
| E.cs:164:29:164:29 | 0 | E.cs:164:13:164:40 | Int32 n = ... |
| E.cs:164:17:164:40 | ... ? ... : ... | E.cs:165:25:165:25 | access to local variable i |
| E.cs:164:29:164:29 | 0 | E.cs:164:17:164:40 | ... ? ... : ... |
| E.cs:165:25:165:25 | access to local variable i | E.cs:166:9:170:9 | {...} |
| E.cs:165:25:165:25 | access to local variable i | E.cs:167:21:167:21 | access to parameter a |
| E.cs:165:32:165:32 | access to local variable i | E.cs:165:25:165:25 | access to local variable i |
| E.cs:166:9:170:9 | {...} | E.cs:165:32:165:32 | access to local variable i |
| E.cs:173:29:173:31 | SSA param(obj) | E.cs:175:33:175:37 | false |
| E.cs:173:29:173:31 | SSA param(obj) | E.cs:175:33:175:37 | false |
| E.cs:175:14:175:42 | Boolean b2 = ... | E.cs:177:9:179:9 | {...} |
| E.cs:175:14:175:42 | Boolean b2 = ... | E.cs:178:13:178:15 | access to parameter obj |
| E.cs:175:14:175:42 | Boolean b2 = ... | E.cs:180:9:183:9 | if (...) ... |
| E.cs:175:33:175:37 | false | E.cs:175:14:175:42 | Boolean b2 = ... |
| E.cs:175:19:175:42 | ... ? ... : ... | E.cs:177:9:179:9 | {...} |
| E.cs:175:19:175:42 | ... ? ... : ... | E.cs:178:13:178:15 | access to parameter obj |
| E.cs:175:19:175:42 | ... ? ... : ... | E.cs:180:9:183:9 | if (...) ... |
| E.cs:175:33:175:37 | false | E.cs:175:19:175:42 | ... ? ... : ... |
| E.cs:177:9:179:9 | {...} | E.cs:180:9:183:9 | if (...) ... |
| E.cs:180:9:183:9 | if (...) ... | E.cs:181:9:183:9 | {...} |
| E.cs:181:9:183:9 | {...} | E.cs:184:9:187:9 | if (...) ... |
@@ -690,8 +702,8 @@ edges
| E.cs:283:13:283:22 | [b (line 279): true] SSA def(o) | E.cs:285:9:285:9 | access to local variable o |
| E.cs:301:13:301:27 | SSA def(s) | E.cs:302:9:302:9 | access to local variable s |
| E.cs:319:29:319:30 | SSA param(s1) | E.cs:321:20:321:21 | access to parameter s2 |
| E.cs:321:20:321:21 | access to parameter s2 | E.cs:321:27:321:30 | null |
| E.cs:321:27:321:30 | null | E.cs:323:13:323:14 | access to parameter s1 |
| E.cs:321:14:321:21 | ... ?? ... | E.cs:323:13:323:14 | access to parameter s1 |
| E.cs:321:20:321:21 | access to parameter s2 | E.cs:321:14:321:21 | ... ?? ... |
| E.cs:330:13:330:36 | SSA def(x) | E.cs:331:9:331:9 | access to local variable x |
| E.cs:342:13:342:32 | SSA def(x) | E.cs:343:9:343:9 | access to local variable x |
| E.cs:348:17:348:36 | SSA def(x) | E.cs:349:9:349:9 | access to local variable x |
@@ -700,31 +712,35 @@ edges
| E.cs:380:24:380:25 | SSA param(e1) | E.cs:382:28:382:29 | access to parameter e2 |
| E.cs:380:24:380:25 | SSA param(e1) | E.cs:382:28:382:29 | access to parameter e2 |
| E.cs:380:24:380:25 | SSA param(e1) | E.cs:382:28:382:29 | access to parameter e2 |
| E.cs:380:30:380:31 | SSA param(e2) | E.cs:382:14:382:37 | [false] ... && ... |
| E.cs:380:30:380:31 | SSA param(e2) | E.cs:382:14:382:37 | [false] ... && ... |
| E.cs:380:30:380:31 | SSA param(e2) | E.cs:382:14:382:37 | [false] ... && ... |
| E.cs:380:30:380:31 | SSA param(e2) | E.cs:382:28:382:29 | access to parameter e2 |
| E.cs:380:30:380:31 | SSA param(e2) | E.cs:382:28:382:29 | access to parameter e2 |
| E.cs:380:30:380:31 | SSA param(e2) | E.cs:382:28:382:29 | access to parameter e2 |
| E.cs:380:30:380:31 | SSA param(e2) | E.cs:382:44:382:67 | ... && ... |
| E.cs:380:30:380:31 | SSA param(e2) | E.cs:382:44:382:67 | ... && ... |
| E.cs:380:30:380:31 | SSA param(e2) | E.cs:382:44:382:67 | ... && ... |
| E.cs:382:28:382:29 | access to parameter e2 | E.cs:382:44:382:67 | ... && ... |
| E.cs:382:28:382:29 | access to parameter e2 | E.cs:382:44:382:67 | ... && ... |
| E.cs:382:44:382:67 | ... && ... | E.cs:384:9:385:24 | if (...) ... |
| E.cs:382:44:382:67 | ... && ... | E.cs:384:9:385:24 | if (...) ... |
| E.cs:384:9:385:24 | if (...) ... | E.cs:384:27:384:28 | access to parameter e2 |
| E.cs:384:9:385:24 | if (...) ... | E.cs:386:27:386:28 | access to parameter e2 |
| E.cs:382:14:382:37 | [false] ... && ... | E.cs:382:44:382:67 | [false] ... && ... |
| E.cs:382:14:382:37 | [false] ... && ... | E.cs:382:44:382:67 | [false] ... && ... |
| E.cs:382:28:382:29 | access to parameter e2 | E.cs:382:14:382:37 | [false] ... && ... |
| E.cs:382:28:382:29 | access to parameter e2 | E.cs:382:14:382:37 | [false] ... && ... |
| E.cs:382:44:382:67 | [false] ... && ... | E.cs:384:27:384:28 | access to parameter e2 |
| E.cs:382:44:382:67 | [false] ... && ... | E.cs:386:27:386:28 | access to parameter e2 |
| E.cs:384:27:384:28 | access to parameter e2 | E.cs:386:16:386:17 | access to parameter e1 |
| E.cs:404:9:404:18 | SSA def(i) | E.cs:405:16:405:16 | access to local variable i |
| E.cs:404:9:404:18 | SSA def(i) | E.cs:405:16:405:16 | access to local variable i |
| Forwarding.cs:7:16:7:23 | SSA def(s) | Forwarding.cs:14:9:17:9 | if (...) ... |
| Forwarding.cs:7:16:7:23 | SSA def(s) | Forwarding.cs:9:13:9:30 | [false] !... |
| Forwarding.cs:9:13:9:30 | [false] !... | Forwarding.cs:14:9:17:9 | if (...) ... |
| Forwarding.cs:14:9:17:9 | if (...) ... | Forwarding.cs:19:9:22:9 | if (...) ... |
| Forwarding.cs:19:9:22:9 | if (...) ... | Forwarding.cs:24:9:27:9 | if (...) ... |
| Forwarding.cs:19:9:22:9 | if (...) ... | Forwarding.cs:19:13:19:23 | [false] !... |
| Forwarding.cs:19:13:19:23 | [false] !... | Forwarding.cs:24:9:27:9 | if (...) ... |
| Forwarding.cs:24:9:27:9 | if (...) ... | Forwarding.cs:29:9:32:9 | if (...) ... |
| Forwarding.cs:29:9:32:9 | if (...) ... | Forwarding.cs:34:9:37:9 | if (...) ... |
| Forwarding.cs:34:9:37:9 | if (...) ... | Forwarding.cs:35:9:37:9 | {...} |
| Forwarding.cs:34:9:37:9 | if (...) ... | Forwarding.cs:36:31:36:31 | access to local variable s |
| Forwarding.cs:35:9:37:9 | {...} | Forwarding.cs:40:27:40:27 | access to local variable s |
| GuardedString.cs:7:16:7:32 | SSA def(s) | GuardedString.cs:14:9:17:9 | if (...) ... |
| GuardedString.cs:14:9:17:9 | if (...) ... | GuardedString.cs:19:9:20:40 | if (...) ... |
| GuardedString.cs:7:16:7:32 | SSA def(s) | GuardedString.cs:9:13:9:36 | [false] !... |
| GuardedString.cs:9:13:9:36 | [false] !... | GuardedString.cs:14:9:17:9 | if (...) ... |
| GuardedString.cs:14:9:17:9 | if (...) ... | GuardedString.cs:14:13:14:41 | [false] !... |
| GuardedString.cs:14:13:14:41 | [false] !... | GuardedString.cs:19:9:20:40 | if (...) ... |
| GuardedString.cs:19:9:20:40 | if (...) ... | GuardedString.cs:19:26:19:26 | 0 |
| GuardedString.cs:19:26:19:26 | 0 | GuardedString.cs:22:9:23:40 | if (...) ... |
| GuardedString.cs:22:9:23:40 | if (...) ... | GuardedString.cs:22:25:22:25 | 0 |