C#: Include parameters and their defaults in the CFG

This commit is contained in:
Tom Hvitved
2026-04-28 10:45:47 +02:00
parent d792e11b7f
commit cbe207ab65
19 changed files with 2032 additions and 824 deletions

View File

@@ -22,6 +22,8 @@ external int selectedSourceColumn();
private predicate selectedSourceColumnAlias = selectedSourceColumn/0;
module ViewCfgQueryInput implements ControlFlow::ViewCfgQueryInputSig<File> {
private import semmle.code.csharp.controlflow.ControlFlowGraph
predicate selectedSourceFile = selectedSourceFileAlias/0;
predicate selectedSourceLine = selectedSourceLineAlias/0;
@@ -29,7 +31,7 @@ module ViewCfgQueryInput implements ControlFlow::ViewCfgQueryInputSig<File> {
predicate selectedSourceColumn = selectedSourceColumnAlias/0;
predicate cfgScopeSpan(
Callable scope, File file, int startLine, int startColumn, int endLine, int endColumn
Ast::Callable scope, File file, int startLine, int startColumn, int endLine, int endColumn
) {
file = scope.getFile() and
scope.getLocation().getStartLine() = startLine and

View File

@@ -13,7 +13,7 @@ private import internal.Location
* An element that can have a child statement or expression.
*/
class ExprOrStmtParent extends Element, @exprorstmt_parent {
final override ControlFlowElement getChild(int i) {
override ControlFlowElement getChild(int i) {
result = this.getChildExpr(i) or
result = this.getChildStmt(i)
}
@@ -42,14 +42,8 @@ class ExprOrStmtParent extends Element, @exprorstmt_parent {
*
* An element that can have a child top-level expression.
*/
class TopLevelExprParent extends Element, @top_level_expr_parent {
class TopLevelExprParent extends ExprOrStmtParent, @top_level_expr_parent {
final override Expr getChild(int i) { result = this.getChildExpr(i) }
/** Gets the `i`th child expression of this element (zero-based). */
final Expr getChildExpr(int i) { expr_parent_top_level_adjusted(result, i, this) }
/** Gets a child expression of this element, if any. */
final Expr getAChildExpr() { result = this.getChildExpr(_) }
}
/** INTERNAL: Do not use. */

View File

@@ -299,7 +299,9 @@ class ControlFlowElementNode extends ElementNode {
not isNotNeeded(element.getParent+()) and
// LambdaExpr is both a Callable and a ControlFlowElement,
// print it with the more specific CallableNode
not element instanceof Callable
not element instanceof Callable and
// Handled in `ParameterNode`
not element instanceof Parameter
}
override PrintAstNode getChild(int childIndex) {

View File

@@ -87,7 +87,9 @@ class LocalScopeVariable extends Variable, @local_scope_variable {
* }
* ```
*/
class Parameter extends LocalScopeVariable, Attributable, TopLevelExprParent, @parameter {
class Parameter extends LocalScopeVariable, Attributable, TopLevelExprParent, ControlFlowElement,
@parameter
{
/** Gets the raw position of this parameter, including the `this` parameter at index 0. */
final int getRawPosition() { this = this.getDeclaringElement().getRawParameter(result) }

View File

@@ -19,8 +19,12 @@ private import Cfg1
private import Cfg2
import Public
/** Provides an implementation of the AST signature for C#. */
private module Ast implements AstSig<Location> {
/**
* INTERNAL: Do not use.
*
* Provides an implementation of the AST signature for C#.
*/
module Ast implements AstSig<Location> {
private import csharp as CS
class AstNode = ControlFlowElementOrCallable;
@@ -73,18 +77,41 @@ private module Ast implements AstSig<Location> {
private AstNode getParent(AstNode n) { n = getChild(result, _) }
Callable getEnclosingCallable(AstNode node) {
result = node.(ControlFlowElement).getEnclosingCallable() or
result.(ObjectInitMethod).initializes(getParent*(node)) or
result = node.(ControlFlowElement).getEnclosingCallable()
or
result.(ObjectInitMethod).initializes(getParent*(node))
or
Initializers::staticMemberInitializer(result, getParent*(node))
or
result = node.(Parameter).getCallable()
or
not skipControlFlow(node) and
getParent*(node) = any(Parameter p | result = p.getCallable()).getDefaultValue()
}
class Callable = CS::Callable;
class Callable extends CS::Callable {
Callable() { this.isUnboundDeclaration() }
}
AstNode callableGetBody(Callable c) {
not skipControlFlow(result) and
result = c.getBody()
}
final private class ParameterFinal = CS::Parameter;
class Parameter extends ParameterFinal {
Expr getDefaultValue() {
// Avoid combinatorial explosions for callables with multiple bodies
result = unique( | | super.getDefaultValue())
}
}
Parameter callableGetParameter(Callable c, int i) {
not skipControlFlow(result) and
result = c.getParameter(i)
}
class Stmt = CS::Stmt;
class Expr = CS::Expr;
@@ -232,9 +259,11 @@ private class CompilationExt extends TCompilationExt {
}
/** Gets the compilation that source file `f` belongs to. */
private CompilationExt getCompilation(File f) {
bindingset[e]
pragma[inline_late]
private CompilationExt getCompilation(Element e) {
exists(Compilation c |
f = c.getAFileCompiled() and
e.getALocation().getFile() = c.getAFileCompiled() and
result = TCompilation(c)
)
or
@@ -415,12 +444,12 @@ private module Input implements InputSig1, InputSig2 {
l = TLblGoto(n.(LabelStmt).getLabel())
}
class CallableBodyPartContext = CompilationExt;
class CallableContext = CompilationExt;
pragma[nomagic]
Ast::AstNode callableGetBodyPart(Callable c, CallableBodyPartContext ctx, int index) {
Ast::AstNode callableGetBodyPart(Ast::Callable c, CallableContext ctx, int index) {
not Ast::skipControlFlow(result) and
ctx = getCompilation(result.getFile()) and
ctx = getCompilation(result) and
(
result = Initializers::initializedInstanceMemberOrder(c, index)
or
@@ -437,9 +466,19 @@ private module Input implements InputSig1, InputSig2 {
or
i = 2 and result = ctor.getBody()
)
or
not c instanceof Constructor and
result = c.getBody() and
index = 0
)
}
pragma[nomagic]
Ast::Parameter callableGetParameter(Ast::Callable c, CallableContext ctx, int index) {
result = Ast::callableGetParameter(c, index) and
ctx = getCompilation(result)
}
private Expr getQualifier(QualifiableExpr qe) {
result = qe.getQualifier() or
result = qe.(ExtensionMethodCall).getArgument(0)

View File

@@ -175,6 +175,18 @@ private module ThisFlow {
result = strictcount(int primaryParamPos | primaryConstructorThisAccess(_, bb, primaryParamPos))
}
private module BodyNearestLocationInput implements NearestLocationInputSig {
class C = ControlFlowElement;
predicate relevantLocations(ControlFlowElement body, Location l1, Location l2) {
exists(DataFlowCallable c |
any(InstanceParameterNode p).isParameterOf(c, _) and
body = c.asCallable(l1).getBody() and
l2 = body.getLocation()
)
}
}
private predicate thisAccess(Node n, BasicBlock bb, int i) {
thisAccess(n, bb.getNode(i))
or
@@ -183,21 +195,29 @@ private module ThisFlow {
i = ppos - numberOfPrimaryConstructorParameters(bb)
)
or
exists(DataFlowCallable c, EntryBasicBlock entry |
n.(InstanceParameterNode).isParameterOf(c, _) and
exists(ControlFlowNode succ |
succ = c.getAControlFlowNode() and
succ = entry.getFirstNode().getASuccessor() and
exists(Callable c, InstanceParameterNode p, Location l |
p = n and
c = p.getCallable(l) and
(
// In case `c` has multiple bodies, we want each body to gets its own implicit
// entry definition. In case `c` doesn't have multiple bodies, the line below
// is simply the same as `bb = entry`, because `entry.getFirstNode().getASuccessor()`
// will be in the entry block.
bb = succ.getBasicBlock()
|
i = -1 - numberOfPrimaryConstructorParameters(bb)
// entry definition.
exists(ControlFlowElement body |
body = c.getBody() and
bb.getANode().isBefore(body) and
NearestLocation<BodyNearestLocationInput>::nearestLocation(body, l, _)
)
or
not exists(numberOfPrimaryConstructorParameters(bb)) and i = -1
not c.hasBody() and
exists(EntryBasicBlock entry, ControlFlowNode succ |
succ = p.getEnclosingCallableImpl().getAControlFlowNode() and
succ = entry.getFirstNode().getASuccessor() and
bb = succ.getBasicBlock()
)
)
|
i = -1 - numberOfPrimaryConstructorParameters(bb)
or
not exists(numberOfPrimaryConstructorParameters(bb)) and i = -1
)
}

View File

@@ -753,26 +753,25 @@ private module Cached {
cached
predicate implicitEntryDefinition(BasicBlock bb, Ssa::SourceVariable v) {
exists(EntryBasicBlock entry, Callable c |
c = entry.getEnclosingCallable() and
// In case `c` has multiple bodies, we want each body to get its own implicit
// entry definition. In case `c` doesn't have multiple bodies, the line below
// is simply the same as `bb = entry`, because `entry.getFirstNode().getASuccessor()`
// will be in the entry block.
bb = entry.getFirstNode().getASuccessor().getBasicBlock() and
c = v.getEnclosingCallable()
|
// Captured variable
exists(LocalScopeVariable lsv |
v = any(LocalScopeSourceVariable lv | lsv = lv.getAssignable())
|
lsv.getCallable() != c
exists(Callable c | c = v.getEnclosingCallable() |
c = bb.(EntryBasicBlock).getEnclosingCallable() and
(
// Captured variable
exists(LocalScopeVariable lsv |
v = any(LocalScopeSourceVariable lv | lsv = lv.getAssignable())
|
lsv.getCallable() != c
)
or
// Each tracked field and property has an implicit entry definition
v instanceof PlainFieldOrPropSourceVariable
)
or
// Each tracked field and property has an implicit entry definition
v instanceof PlainFieldOrPropSourceVariable
or
v.getAssignable() instanceof Parameter
// In case `c` has multiple bodies, we want each body to get its own implicit
// entry definition, so we use the basic block containing the body instead of
// the entry block.
v.getAssignable() instanceof Parameter and
bb.getANode().isBefore(c.getBody())
)
}

View File

@@ -1363,7 +1363,7 @@ compiler_generated(unique int id: @element ref);
/** CONTROL/DATA FLOW **/
@control_flow_element = @stmt | @expr;
@control_flow_element = @stmt | @expr | @parameter;
/* XML Files */

View File

@@ -1,73 +1,73 @@
| AccessorCalls.cs:1:7:1:19 | Entry | AccessorCalls.cs:1:7:1:19 | Exit | 11 |
| AccessorCalls.cs:5:23:5:25 | Entry | AccessorCalls.cs:5:23:5:25 | Exit | 4 |
| AccessorCalls.cs:5:33:5:35 | Entry | AccessorCalls.cs:5:33:5:35 | Exit | 4 |
| AccessorCalls.cs:7:32:7:34 | Entry | AccessorCalls.cs:7:32:7:34 | Exit | 4 |
| AccessorCalls.cs:7:40:7:45 | Entry | AccessorCalls.cs:7:40:7:45 | Exit | 4 |
| AccessorCalls.cs:10:10:10:11 | Entry | AccessorCalls.cs:10:10:10:11 | Exit | 66 |
| AccessorCalls.cs:19:10:19:11 | Entry | AccessorCalls.cs:19:10:19:11 | Exit | 90 |
| AccessorCalls.cs:5:23:5:25 | Entry | AccessorCalls.cs:5:23:5:25 | Exit | 5 |
| AccessorCalls.cs:5:33:5:35 | Entry | AccessorCalls.cs:5:33:5:35 | Exit | 6 |
| AccessorCalls.cs:7:32:7:34 | Entry | AccessorCalls.cs:7:32:7:34 | Exit | 5 |
| AccessorCalls.cs:7:40:7:45 | Entry | AccessorCalls.cs:7:40:7:45 | Exit | 5 |
| AccessorCalls.cs:10:10:10:11 | Entry | AccessorCalls.cs:10:10:10:11 | Exit | 67 |
| AccessorCalls.cs:19:10:19:11 | Entry | AccessorCalls.cs:19:10:19:11 | Exit | 91 |
| AccessorCalls.cs:28:10:28:11 | Entry | AccessorCalls.cs:28:10:28:11 | Exit | 33 |
| AccessorCalls.cs:35:10:35:11 | Entry | AccessorCalls.cs:35:10:35:11 | Exit | 42 |
| AccessorCalls.cs:42:10:42:11 | Entry | AccessorCalls.cs:42:10:42:11 | Exit | 46 |
| AccessorCalls.cs:49:10:49:11 | Entry | AccessorCalls.cs:49:10:49:11 | Exit | 64 |
| AccessorCalls.cs:56:10:56:11 | Entry | AccessorCalls.cs:56:10:56:11 | Exit | 50 |
| AccessorCalls.cs:61:10:61:11 | Entry | AccessorCalls.cs:61:10:61:11 | Exit | 68 |
| AccessorCalls.cs:66:10:66:11 | Entry | AccessorCalls.cs:66:10:66:11 | Exit | 104 |
| AccessorCalls.cs:56:10:56:11 | Entry | AccessorCalls.cs:56:10:56:11 | Exit | 51 |
| AccessorCalls.cs:61:10:61:11 | Entry | AccessorCalls.cs:61:10:61:11 | Exit | 69 |
| AccessorCalls.cs:66:10:66:11 | Entry | AccessorCalls.cs:66:10:66:11 | Exit | 107 |
| ArrayCreation.cs:1:7:1:19 | Entry | ArrayCreation.cs:1:7:1:19 | Exit | 11 |
| ArrayCreation.cs:3:11:3:12 | Entry | ArrayCreation.cs:3:11:3:12 | Exit | 7 |
| ArrayCreation.cs:5:12:5:13 | Entry | ArrayCreation.cs:5:12:5:13 | Exit | 8 |
| ArrayCreation.cs:7:11:7:12 | Entry | ArrayCreation.cs:7:11:7:12 | Exit | 12 |
| ArrayCreation.cs:9:12:9:13 | Entry | ArrayCreation.cs:9:12:9:13 | Exit | 21 |
| Assert.cs:5:7:5:17 | Entry | Assert.cs:5:7:5:17 | Exit | 11 |
| Assert.cs:7:10:7:11 | Entry | Assert.cs:9:20:9:20 | access to parameter b | 7 |
| Assert.cs:7:10:7:11 | Entry | Assert.cs:9:20:9:20 | access to parameter b | 8 |
| Assert.cs:7:10:7:11 | Exceptional Exit | Assert.cs:7:10:7:11 | Exceptional Exit | 1 |
| Assert.cs:7:10:7:11 | Exit | Assert.cs:7:10:7:11 | Exit | 1 |
| Assert.cs:9:20:9:20 | After access to parameter b [false] | Assert.cs:9:31:9:32 | "" | 2 |
| Assert.cs:9:20:9:20 | After access to parameter b [true] | Assert.cs:9:24:9:27 | null | 2 |
| Assert.cs:9:20:9:32 | After ... ? ... : ... | Assert.cs:10:9:10:31 | call to method Assert | 12 |
| Assert.cs:10:9:10:31 | After call to method Assert | Assert.cs:7:10:7:11 | Normal Exit | 13 |
| Assert.cs:14:10:14:11 | Entry | Assert.cs:16:20:16:20 | access to parameter b | 7 |
| Assert.cs:14:10:14:11 | Entry | Assert.cs:16:20:16:20 | access to parameter b | 8 |
| Assert.cs:14:10:14:11 | Exceptional Exit | Assert.cs:14:10:14:11 | Exceptional Exit | 1 |
| Assert.cs:14:10:14:11 | Exit | Assert.cs:14:10:14:11 | Exit | 1 |
| Assert.cs:16:20:16:20 | After access to parameter b [false] | Assert.cs:16:31:16:32 | "" | 2 |
| Assert.cs:16:20:16:20 | After access to parameter b [true] | Assert.cs:16:24:16:27 | null | 2 |
| Assert.cs:16:20:16:32 | After ... ? ... : ... | Assert.cs:17:9:17:24 | call to method IsNull | 8 |
| Assert.cs:17:9:17:24 | After call to method IsNull | Assert.cs:14:10:14:11 | Normal Exit | 13 |
| Assert.cs:21:10:21:11 | Entry | Assert.cs:23:20:23:20 | access to parameter b | 7 |
| Assert.cs:21:10:21:11 | Entry | Assert.cs:23:20:23:20 | access to parameter b | 8 |
| Assert.cs:21:10:21:11 | Exceptional Exit | Assert.cs:21:10:21:11 | Exceptional Exit | 1 |
| Assert.cs:21:10:21:11 | Exit | Assert.cs:21:10:21:11 | Exit | 1 |
| Assert.cs:23:20:23:20 | After access to parameter b [false] | Assert.cs:23:31:23:32 | "" | 2 |
| Assert.cs:23:20:23:20 | After access to parameter b [true] | Assert.cs:23:24:23:27 | null | 2 |
| Assert.cs:23:20:23:32 | After ... ? ... : ... | Assert.cs:24:9:24:27 | call to method IsNotNull | 8 |
| Assert.cs:24:9:24:27 | After call to method IsNotNull | Assert.cs:21:10:21:11 | Normal Exit | 13 |
| Assert.cs:28:10:28:11 | Entry | Assert.cs:30:20:30:20 | access to parameter b | 7 |
| Assert.cs:28:10:28:11 | Entry | Assert.cs:30:20:30:20 | access to parameter b | 8 |
| Assert.cs:28:10:28:11 | Exceptional Exit | Assert.cs:28:10:28:11 | Exceptional Exit | 1 |
| Assert.cs:28:10:28:11 | Exit | Assert.cs:28:10:28:11 | Exit | 1 |
| Assert.cs:30:20:30:20 | After access to parameter b [false] | Assert.cs:30:31:30:32 | "" | 2 |
| Assert.cs:30:20:30:20 | After access to parameter b [true] | Assert.cs:30:24:30:27 | null | 2 |
| Assert.cs:30:20:30:32 | After ... ? ... : ... | Assert.cs:31:9:31:32 | call to method IsTrue | 12 |
| Assert.cs:31:9:31:32 | After call to method IsTrue | Assert.cs:28:10:28:11 | Normal Exit | 13 |
| Assert.cs:35:10:35:11 | Entry | Assert.cs:37:20:37:20 | access to parameter b | 7 |
| Assert.cs:35:10:35:11 | Entry | Assert.cs:37:20:37:20 | access to parameter b | 8 |
| Assert.cs:35:10:35:11 | Exceptional Exit | Assert.cs:35:10:35:11 | Exceptional Exit | 1 |
| Assert.cs:35:10:35:11 | Exit | Assert.cs:35:10:35:11 | Exit | 1 |
| Assert.cs:37:20:37:20 | After access to parameter b [false] | Assert.cs:37:31:37:32 | "" | 2 |
| Assert.cs:37:20:37:20 | After access to parameter b [true] | Assert.cs:37:24:37:27 | null | 2 |
| Assert.cs:37:20:37:32 | After ... ? ... : ... | Assert.cs:38:9:38:32 | call to method IsTrue | 12 |
| Assert.cs:38:9:38:32 | After call to method IsTrue | Assert.cs:35:10:35:11 | Normal Exit | 13 |
| Assert.cs:42:10:42:11 | Entry | Assert.cs:44:20:44:20 | access to parameter b | 7 |
| Assert.cs:42:10:42:11 | Entry | Assert.cs:44:20:44:20 | access to parameter b | 8 |
| Assert.cs:42:10:42:11 | Exceptional Exit | Assert.cs:42:10:42:11 | Exceptional Exit | 1 |
| Assert.cs:42:10:42:11 | Exit | Assert.cs:42:10:42:11 | Exit | 1 |
| Assert.cs:44:20:44:20 | After access to parameter b [false] | Assert.cs:44:31:44:32 | "" | 2 |
| Assert.cs:44:20:44:20 | After access to parameter b [true] | Assert.cs:44:24:44:27 | null | 2 |
| Assert.cs:44:20:44:32 | After ... ? ... : ... | Assert.cs:45:9:45:33 | call to method IsFalse | 12 |
| Assert.cs:45:9:45:33 | After call to method IsFalse | Assert.cs:42:10:42:11 | Normal Exit | 13 |
| Assert.cs:49:10:49:11 | Entry | Assert.cs:51:20:51:20 | access to parameter b | 7 |
| Assert.cs:49:10:49:11 | Entry | Assert.cs:51:20:51:20 | access to parameter b | 8 |
| Assert.cs:49:10:49:11 | Exceptional Exit | Assert.cs:49:10:49:11 | Exceptional Exit | 1 |
| Assert.cs:49:10:49:11 | Exit | Assert.cs:49:10:49:11 | Exit | 1 |
| Assert.cs:51:20:51:20 | After access to parameter b [false] | Assert.cs:51:31:51:32 | "" | 2 |
| Assert.cs:51:20:51:20 | After access to parameter b [true] | Assert.cs:51:24:51:27 | null | 2 |
| Assert.cs:51:20:51:32 | After ... ? ... : ... | Assert.cs:52:9:52:33 | call to method IsFalse | 12 |
| Assert.cs:52:9:52:33 | After call to method IsFalse | Assert.cs:49:10:49:11 | Normal Exit | 13 |
| Assert.cs:56:10:56:11 | Entry | Assert.cs:58:20:58:20 | access to parameter b | 7 |
| Assert.cs:56:10:56:11 | Entry | Assert.cs:58:20:58:20 | access to parameter b | 8 |
| Assert.cs:56:10:56:11 | Exceptional Exit | Assert.cs:56:10:56:11 | Exceptional Exit | 1 |
| Assert.cs:56:10:56:11 | Exit | Assert.cs:56:10:56:11 | Exit | 1 |
| Assert.cs:58:20:58:20 | After access to parameter b [false] | Assert.cs:58:31:58:32 | "" | 2 |
@@ -77,7 +77,7 @@
| Assert.cs:59:23:59:31 | After ... != ... [false] | Assert.cs:59:23:59:31 | After ... != ... [false] | 1 |
| Assert.cs:59:23:59:31 | After ... != ... [true] | Assert.cs:59:36:59:36 | access to parameter b | 2 |
| Assert.cs:59:23:59:36 | After ... && ... | Assert.cs:59:9:59:37 | call to method IsTrue | 2 |
| Assert.cs:63:10:63:11 | Entry | Assert.cs:65:20:65:20 | access to parameter b | 7 |
| Assert.cs:63:10:63:11 | Entry | Assert.cs:65:20:65:20 | access to parameter b | 8 |
| Assert.cs:63:10:63:11 | Exceptional Exit | Assert.cs:63:10:63:11 | Exceptional Exit | 1 |
| Assert.cs:63:10:63:11 | Exit | Assert.cs:63:10:63:11 | Exit | 1 |
| Assert.cs:65:20:65:20 | After access to parameter b [false] | Assert.cs:65:31:65:32 | "" | 2 |
@@ -87,7 +87,7 @@
| Assert.cs:66:24:66:32 | After ... == ... [false] | Assert.cs:66:37:66:37 | access to parameter b | 2 |
| Assert.cs:66:24:66:32 | After ... == ... [true] | Assert.cs:66:24:66:32 | After ... == ... [true] | 1 |
| Assert.cs:66:24:66:37 | After ... \|\| ... | Assert.cs:66:9:66:38 | call to method IsFalse | 2 |
| Assert.cs:70:10:70:12 | Entry | Assert.cs:72:20:72:20 | access to parameter b | 7 |
| Assert.cs:70:10:70:12 | Entry | Assert.cs:72:20:72:20 | access to parameter b | 8 |
| Assert.cs:70:10:70:12 | Exceptional Exit | Assert.cs:70:10:70:12 | Exceptional Exit | 1 |
| Assert.cs:70:10:70:12 | Exit | Assert.cs:70:10:70:12 | Exit | 1 |
| Assert.cs:72:20:72:20 | After access to parameter b [false] | Assert.cs:72:31:72:32 | "" | 2 |
@@ -97,7 +97,7 @@
| Assert.cs:73:23:73:31 | After ... == ... [false] | Assert.cs:73:23:73:31 | After ... == ... [false] | 1 |
| Assert.cs:73:23:73:31 | After ... == ... [true] | Assert.cs:73:36:73:36 | access to parameter b | 2 |
| Assert.cs:73:23:73:36 | After ... && ... | Assert.cs:73:9:73:37 | call to method IsTrue | 2 |
| Assert.cs:77:10:77:12 | Entry | Assert.cs:79:20:79:20 | access to parameter b | 7 |
| Assert.cs:77:10:77:12 | Entry | Assert.cs:79:20:79:20 | access to parameter b | 8 |
| Assert.cs:77:10:77:12 | Exceptional Exit | Assert.cs:77:10:77:12 | Exceptional Exit | 1 |
| Assert.cs:77:10:77:12 | Exit | Assert.cs:77:10:77:12 | Exit | 1 |
| Assert.cs:79:20:79:20 | After access to parameter b [false] | Assert.cs:79:31:79:32 | "" | 2 |
@@ -107,7 +107,7 @@
| Assert.cs:80:24:80:32 | After ... != ... [false] | Assert.cs:80:37:80:37 | access to parameter b | 2 |
| Assert.cs:80:24:80:32 | After ... != ... [true] | Assert.cs:80:24:80:32 | After ... != ... [true] | 1 |
| Assert.cs:80:24:80:37 | After ... \|\| ... | Assert.cs:80:9:80:38 | call to method IsFalse | 2 |
| Assert.cs:84:10:84:12 | Entry | Assert.cs:86:20:86:20 | access to parameter b | 7 |
| Assert.cs:84:10:84:12 | Entry | Assert.cs:86:20:86:20 | access to parameter b | 8 |
| Assert.cs:84:10:84:12 | Exceptional Exit | Assert.cs:84:10:84:12 | Exceptional Exit | 1 |
| Assert.cs:84:10:84:12 | Exit | Assert.cs:84:10:84:12 | Exit | 1 |
| Assert.cs:86:20:86:20 | After access to parameter b [false] | Assert.cs:86:31:86:32 | "" | 2 |
@@ -166,20 +166,20 @@
| Assert.cs:127:24:127:32 | After ... != ... [false] | Assert.cs:127:37:127:38 | After !... | 4 |
| Assert.cs:127:24:127:32 | After ... != ... [true] | Assert.cs:127:24:127:32 | After ... != ... [true] | 1 |
| Assert.cs:127:24:127:38 | After ... \|\| ... | Assert.cs:127:9:127:39 | call to method IsFalse | 2 |
| Assert.cs:131:18:131:32 | Entry | Assert.cs:131:18:131:32 | Exit | 4 |
| Assert.cs:138:10:138:12 | Entry | Assert.cs:140:9:140:35 | call to method AssertTrueFalse | 9 |
| Assert.cs:131:18:131:32 | Entry | Assert.cs:131:18:131:32 | Exit | 7 |
| Assert.cs:138:10:138:12 | Entry | Assert.cs:140:9:140:35 | call to method AssertTrueFalse | 12 |
| Assert.cs:138:10:138:12 | Exceptional Exit | Assert.cs:138:10:138:12 | Exceptional Exit | 1 |
| Assert.cs:138:10:138:12 | Exit | Assert.cs:138:10:138:12 | Exit | 1 |
| Assert.cs:140:9:140:35 | After call to method AssertTrueFalse | Assert.cs:138:10:138:12 | Normal Exit | 5 |
| Assignments.cs:1:7:1:17 | Entry | Assignments.cs:1:7:1:17 | Exit | 11 |
| Assignments.cs:3:10:3:10 | Entry | Assignments.cs:3:10:3:10 | Exit | 62 |
| Assignments.cs:14:18:14:35 | Entry | Assignments.cs:14:18:14:35 | Exit | 4 |
| Assignments.cs:17:40:17:40 | Entry | Assignments.cs:17:40:17:40 | Exit | 7 |
| Assignments.cs:27:10:27:23 | Entry | Assignments.cs:27:10:27:23 | Exit | 12 |
| Assignments.cs:32:10:32:22 | Entry | Assignments.cs:32:10:32:22 | Exit | 19 |
| Assignments.cs:14:18:14:35 | Entry | Assignments.cs:14:18:14:35 | Exit | 6 |
| Assignments.cs:17:40:17:40 | Entry | Assignments.cs:17:40:17:40 | Exit | 9 |
| Assignments.cs:27:10:27:23 | Entry | Assignments.cs:27:10:27:23 | Exit | 13 |
| Assignments.cs:32:10:32:22 | Entry | Assignments.cs:32:10:32:22 | Exit | 22 |
| Assignments.cs:38:10:38:11 | Entry | Assignments.cs:38:10:38:11 | Exit | 52 |
| BreakInTry.cs:1:7:1:16 | Entry | BreakInTry.cs:1:7:1:16 | Exit | 11 |
| BreakInTry.cs:3:10:3:11 | Entry | BreakInTry.cs:7:33:7:36 | access to parameter args | 6 |
| BreakInTry.cs:3:10:3:11 | Entry | BreakInTry.cs:7:33:7:36 | access to parameter args | 7 |
| BreakInTry.cs:7:13:11:13 | After foreach (... ... in ...) ... | BreakInTry.cs:15:17:15:28 | ... == ... | 8 |
| BreakInTry.cs:7:26:7:28 | String arg | BreakInTry.cs:9:21:9:31 | ... == ... | 7 |
| BreakInTry.cs:7:33:7:36 | After access to parameter args [empty] | BreakInTry.cs:7:33:7:36 | After access to parameter args [empty] | 1 |
@@ -189,7 +189,7 @@
| BreakInTry.cs:15:13:16:17 | After if (...) ... | BreakInTry.cs:3:10:3:11 | Exit | 6 |
| BreakInTry.cs:15:17:15:28 | After ... == ... [false] | BreakInTry.cs:15:17:15:28 | After ... == ... [false] | 1 |
| BreakInTry.cs:15:17:15:28 | After ... == ... [true] | BreakInTry.cs:16:17:16:17 | ; | 2 |
| BreakInTry.cs:20:10:20:11 | Entry | BreakInTry.cs:22:29:22:32 | access to parameter args | 4 |
| BreakInTry.cs:20:10:20:11 | Entry | BreakInTry.cs:22:29:22:32 | access to parameter args | 5 |
| BreakInTry.cs:22:9:34:9 | After foreach (... ... in ...) ... | BreakInTry.cs:20:10:20:11 | Exit | 5 |
| BreakInTry.cs:22:22:22:24 | String arg | BreakInTry.cs:26:21:26:31 | ... == ... | 9 |
| BreakInTry.cs:22:29:22:32 | After access to parameter args [empty] | BreakInTry.cs:22:29:22:32 | After access to parameter args [empty] | 1 |
@@ -201,7 +201,7 @@
| BreakInTry.cs:31:17:32:21 | After if (...) ... | BreakInTry.cs:30:13:33:13 | After {...} | 2 |
| BreakInTry.cs:31:21:31:32 | After ... == ... [false] | BreakInTry.cs:31:21:31:32 | After ... == ... [false] | 1 |
| BreakInTry.cs:31:21:31:32 | After ... == ... [true] | BreakInTry.cs:32:21:32:21 | ; | 2 |
| BreakInTry.cs:38:10:38:11 | Entry | BreakInTry.cs:42:17:42:28 | ... == ... | 9 |
| BreakInTry.cs:38:10:38:11 | Entry | BreakInTry.cs:42:17:42:28 | ... == ... | 10 |
| BreakInTry.cs:38:10:38:11 | Normal Exit | BreakInTry.cs:38:10:38:11 | Exit | 2 |
| BreakInTry.cs:40:9:52:9 | After try {...} ... | BreakInTry.cs:39:5:54:5 | After {...} | 3 |
| BreakInTry.cs:42:17:42:28 | After ... == ... [false] | BreakInTry.cs:41:9:44:9 | After {...} | 3 |
@@ -213,7 +213,7 @@
| BreakInTry.cs:47:33:47:36 | After access to parameter args [non-empty] | BreakInTry.cs:47:33:47:36 | After access to parameter args [non-empty] | 1 |
| BreakInTry.cs:49:21:49:31 | After ... == ... [false] | BreakInTry.cs:47:13:51:13 | [LoopHeader] foreach (... ... in ...) ... | 4 |
| BreakInTry.cs:49:21:49:31 | After ... == ... [true] | BreakInTry.cs:50:21:50:26 | break; | 3 |
| BreakInTry.cs:56:10:56:11 | Entry | BreakInTry.cs:60:17:60:28 | ... == ... | 9 |
| BreakInTry.cs:56:10:56:11 | Entry | BreakInTry.cs:60:17:60:28 | ... == ... | 10 |
| BreakInTry.cs:56:10:56:11 | Normal Exit | BreakInTry.cs:56:10:56:11 | Exit | 2 |
| BreakInTry.cs:58:9:70:9 | After try {...} ... | BreakInTry.cs:57:5:71:5 | After {...} | 2 |
| BreakInTry.cs:60:17:60:28 | After ... == ... [false] | BreakInTry.cs:59:9:62:9 | After {...} | 3 |
@@ -229,7 +229,7 @@
| CompileTimeOperators.cs:5:9:5:15 | Entry | CompileTimeOperators.cs:5:9:5:15 | Exit | 7 |
| CompileTimeOperators.cs:10:9:10:14 | Entry | CompileTimeOperators.cs:10:9:10:14 | Exit | 7 |
| CompileTimeOperators.cs:15:10:15:15 | Entry | CompileTimeOperators.cs:15:10:15:15 | Exit | 7 |
| CompileTimeOperators.cs:20:12:20:17 | Entry | CompileTimeOperators.cs:20:12:20:17 | Exit | 7 |
| CompileTimeOperators.cs:20:12:20:17 | Entry | CompileTimeOperators.cs:20:12:20:17 | Exit | 8 |
| CompileTimeOperators.cs:26:7:26:22 | Entry | CompileTimeOperators.cs:26:7:26:22 | Exit | 11 |
| CompileTimeOperators.cs:28:10:28:10 | Entry | CompileTimeOperators.cs:36:9:38:9 | After {...} | 14 |
| CompileTimeOperators.cs:28:10:28:10 | Exceptional Exit | CompileTimeOperators.cs:28:10:28:10 | Exceptional Exit | 1 |
@@ -237,41 +237,41 @@
| CompileTimeOperators.cs:30:9:38:9 | After try {...} ... | CompileTimeOperators.cs:39:9:39:34 | After ...; | 7 |
| CompileTimeOperators.cs:40:9:40:11 | End: | CompileTimeOperators.cs:28:10:28:10 | Normal Exit | 9 |
| ConditionalAccess.cs:1:7:1:23 | Entry | ConditionalAccess.cs:1:7:1:23 | Exit | 11 |
| ConditionalAccess.cs:3:12:3:13 | Entry | ConditionalAccess.cs:3:26:3:26 | access to parameter i | 4 |
| ConditionalAccess.cs:3:12:3:13 | Entry | ConditionalAccess.cs:3:26:3:26 | access to parameter i | 5 |
| ConditionalAccess.cs:3:26:3:26 | After access to parameter i [non-null] | ConditionalAccess.cs:3:26:3:38 | call to method ToString | 2 |
| ConditionalAccess.cs:3:26:3:26 | After access to parameter i [null] | ConditionalAccess.cs:3:26:3:26 | After access to parameter i [null] | 1 |
| ConditionalAccess.cs:3:26:3:38 | After call to method ToString [non-null] | ConditionalAccess.cs:3:26:3:49 | call to method ToLower | 2 |
| ConditionalAccess.cs:3:26:3:38 | After call to method ToString [null] | ConditionalAccess.cs:3:26:3:38 | After call to method ToString [null] | 1 |
| ConditionalAccess.cs:3:26:3:49 | After call to method ToLower | ConditionalAccess.cs:3:12:3:13 | Exit | 3 |
| ConditionalAccess.cs:5:10:5:11 | Entry | ConditionalAccess.cs:5:26:5:26 | access to parameter s | 3 |
| ConditionalAccess.cs:5:10:5:11 | Entry | ConditionalAccess.cs:5:26:5:26 | access to parameter s | 4 |
| ConditionalAccess.cs:5:26:5:26 | After access to parameter s [non-null] | ConditionalAccess.cs:5:26:5:34 | access to property Length | 2 |
| ConditionalAccess.cs:5:26:5:26 | After access to parameter s [null] | ConditionalAccess.cs:5:26:5:26 | After access to parameter s [null] | 1 |
| ConditionalAccess.cs:5:26:5:34 | After access to property Length | ConditionalAccess.cs:5:10:5:11 | Exit | 3 |
| ConditionalAccess.cs:7:10:7:11 | Entry | ConditionalAccess.cs:7:39:7:40 | access to parameter s1 | 4 |
| ConditionalAccess.cs:7:10:7:11 | Entry | ConditionalAccess.cs:7:39:7:40 | access to parameter s1 | 6 |
| ConditionalAccess.cs:7:38:7:55 | After access to property Length | ConditionalAccess.cs:7:10:7:11 | Exit | 3 |
| ConditionalAccess.cs:7:39:7:40 | After access to parameter s1 [non-null] | ConditionalAccess.cs:7:39:7:40 | After access to parameter s1 [non-null] | 1 |
| ConditionalAccess.cs:7:39:7:40 | After access to parameter s1 [null] | ConditionalAccess.cs:7:45:7:46 | access to parameter s2 | 2 |
| ConditionalAccess.cs:7:39:7:46 | After ... ?? ... [non-null] | ConditionalAccess.cs:7:38:7:55 | access to property Length | 2 |
| ConditionalAccess.cs:7:45:7:46 | After access to parameter s2 [non-null] | ConditionalAccess.cs:7:45:7:46 | After access to parameter s2 [non-null] | 1 |
| ConditionalAccess.cs:7:45:7:46 | After access to parameter s2 [null] | ConditionalAccess.cs:7:39:7:46 | After ... ?? ... [null] | 2 |
| ConditionalAccess.cs:9:9:9:10 | Entry | ConditionalAccess.cs:9:25:9:25 | access to parameter s | 4 |
| ConditionalAccess.cs:9:9:9:10 | Entry | ConditionalAccess.cs:9:25:9:25 | access to parameter s | 5 |
| ConditionalAccess.cs:9:25:9:25 | After access to parameter s [non-null] | ConditionalAccess.cs:9:25:9:33 | access to property Length | 2 |
| ConditionalAccess.cs:9:25:9:25 | After access to parameter s [null] | ConditionalAccess.cs:9:25:9:25 | After access to parameter s [null] | 1 |
| ConditionalAccess.cs:9:25:9:33 | After access to property Length [non-null] | ConditionalAccess.cs:9:25:9:33 | After access to property Length [non-null] | 1 |
| ConditionalAccess.cs:9:25:9:33 | After access to property Length [null] | ConditionalAccess.cs:9:38:9:38 | 0 | 2 |
| ConditionalAccess.cs:9:25:9:38 | After ... ?? ... | ConditionalAccess.cs:9:9:9:10 | Exit | 3 |
| ConditionalAccess.cs:11:9:11:10 | Entry | ConditionalAccess.cs:13:13:13:13 | access to parameter s | 6 |
| ConditionalAccess.cs:11:9:11:10 | Entry | ConditionalAccess.cs:13:13:13:13 | access to parameter s | 7 |
| ConditionalAccess.cs:11:9:11:10 | Normal Exit | ConditionalAccess.cs:11:9:11:10 | Exit | 2 |
| ConditionalAccess.cs:13:13:13:13 | After access to parameter s [non-null] | ConditionalAccess.cs:13:13:13:21 | access to property Length | 2 |
| ConditionalAccess.cs:13:13:13:13 | After access to parameter s [null] | ConditionalAccess.cs:13:13:13:13 | After access to parameter s [null] | 1 |
| ConditionalAccess.cs:13:13:13:21 | After access to property Length | ConditionalAccess.cs:13:13:13:25 | ... > ... | 6 |
| ConditionalAccess.cs:13:13:13:25 | After ... > ... [false] | ConditionalAccess.cs:16:13:16:21 | return ...; | 4 |
| ConditionalAccess.cs:13:13:13:25 | After ... > ... [true] | ConditionalAccess.cs:14:13:14:21 | return ...; | 4 |
| ConditionalAccess.cs:19:12:19:13 | Entry | ConditionalAccess.cs:19:40:19:41 | access to parameter s1 | 3 |
| ConditionalAccess.cs:19:12:19:13 | Entry | ConditionalAccess.cs:19:40:19:41 | access to parameter s1 | 5 |
| ConditionalAccess.cs:19:40:19:41 | After access to parameter s1 [non-null] | ConditionalAccess.cs:19:40:19:60 | call to method CommaJoinWith | 3 |
| ConditionalAccess.cs:19:40:19:41 | After access to parameter s1 [null] | ConditionalAccess.cs:19:40:19:41 | After access to parameter s1 [null] | 1 |
| ConditionalAccess.cs:19:40:19:60 | After call to method CommaJoinWith | ConditionalAccess.cs:19:12:19:13 | Exit | 3 |
| ConditionalAccess.cs:21:10:21:11 | Entry | ConditionalAccess.cs:23:18:23:29 | (...) ... | 9 |
| ConditionalAccess.cs:21:10:21:11 | Entry | ConditionalAccess.cs:23:18:23:29 | (...) ... | 10 |
| ConditionalAccess.cs:23:17:23:38 | After access to property Length | ConditionalAccess.cs:24:18:24:24 | (...) ... | 11 |
| ConditionalAccess.cs:23:18:23:29 | After (...) ... [non-null] | ConditionalAccess.cs:23:17:23:38 | access to property Length | 2 |
| ConditionalAccess.cs:23:18:23:29 | After (...) ... [null] | ConditionalAccess.cs:23:18:23:29 | After (...) ... [null] | 1 |
@@ -281,14 +281,14 @@
| ConditionalAccess.cs:25:13:25:14 | After "" [non-null] | ConditionalAccess.cs:25:13:25:32 | call to method CommaJoinWith | 3 |
| ConditionalAccess.cs:25:13:25:14 | After "" [null] | ConditionalAccess.cs:25:13:25:14 | After "" [null] | 1 |
| ConditionalAccess.cs:25:13:25:32 | After call to method CommaJoinWith | ConditionalAccess.cs:21:10:21:11 | Exit | 7 |
| ConditionalAccess.cs:30:10:30:12 | Entry | ConditionalAccess.cs:30:10:30:12 | Exit | 8 |
| ConditionalAccess.cs:32:10:32:11 | Entry | ConditionalAccess.cs:35:9:35:12 | access to property Prop | 14 |
| ConditionalAccess.cs:30:10:30:12 | Entry | ConditionalAccess.cs:30:10:30:12 | Exit | 9 |
| ConditionalAccess.cs:32:10:32:11 | Entry | ConditionalAccess.cs:35:9:35:12 | access to property Prop | 16 |
| ConditionalAccess.cs:35:9:35:12 | After access to property Prop [non-null] | ConditionalAccess.cs:35:9:35:24 | call to method Out | 3 |
| ConditionalAccess.cs:35:9:35:12 | After access to property Prop [null] | ConditionalAccess.cs:35:9:35:12 | After access to property Prop [null] | 1 |
| ConditionalAccess.cs:35:9:35:24 | After call to method Out | ConditionalAccess.cs:32:10:32:11 | Exit | 5 |
| ConditionalAccess.cs:42:9:42:11 | Entry | ConditionalAccess.cs:42:9:42:11 | Exit | 7 |
| ConditionalAccess.cs:43:9:43:11 | Entry | ConditionalAccess.cs:43:9:43:11 | Exit | 4 |
| ConditionalAccess.cs:46:10:46:11 | Entry | ConditionalAccess.cs:48:9:48:10 | access to parameter ca | 6 |
| ConditionalAccess.cs:42:9:42:11 | Entry | ConditionalAccess.cs:42:9:42:11 | Exit | 8 |
| ConditionalAccess.cs:43:9:43:11 | Entry | ConditionalAccess.cs:43:9:43:11 | Exit | 6 |
| ConditionalAccess.cs:46:10:46:11 | Entry | ConditionalAccess.cs:48:9:48:10 | access to parameter ca | 7 |
| ConditionalAccess.cs:48:9:48:10 | After access to parameter ca [non-null] | ConditionalAccess.cs:48:12:48:25 | ... = ... | 5 |
| ConditionalAccess.cs:48:9:48:10 | After access to parameter ca [null] | ConditionalAccess.cs:48:9:48:10 | After access to parameter ca [null] | 1 |
| ConditionalAccess.cs:48:12:48:25 | After ... = ... | ConditionalAccess.cs:49:9:49:10 | access to parameter ca | 6 |
@@ -314,16 +314,16 @@
| ConditionalAccess.cs:54:9:54:10 | After access to parameter ca [non-null] | ConditionalAccess.cs:54:12:54:29 | ... += ... | 5 |
| ConditionalAccess.cs:54:9:54:10 | After access to parameter ca [null] | ConditionalAccess.cs:54:9:54:10 | After access to parameter ca [null] | 1 |
| ConditionalAccess.cs:54:12:54:29 | After ... += ... | ConditionalAccess.cs:46:10:46:11 | Exit | 5 |
| ConditionalAccess.cs:60:26:60:38 | Entry | ConditionalAccess.cs:60:26:60:38 | Exit | 12 |
| ConditionalAccess.cs:60:26:60:38 | Entry | ConditionalAccess.cs:60:26:60:38 | Exit | 14 |
| Conditions.cs:1:7:1:16 | Entry | Conditions.cs:1:7:1:16 | Exit | 11 |
| Conditions.cs:3:10:3:19 | Entry | Conditions.cs:5:13:5:15 | access to parameter inc | 4 |
| Conditions.cs:3:10:3:19 | Entry | Conditions.cs:5:13:5:15 | access to parameter inc | 6 |
| Conditions.cs:5:9:6:16 | After if (...) ... | Conditions.cs:7:14:7:16 | access to parameter inc | 4 |
| Conditions.cs:5:13:5:15 | After access to parameter inc [false] | Conditions.cs:5:13:5:15 | After access to parameter inc [false] | 1 |
| Conditions.cs:5:13:5:15 | After access to parameter inc [true] | Conditions.cs:6:13:6:16 | After ...; | 7 |
| Conditions.cs:7:9:8:16 | After if (...) ... | Conditions.cs:3:10:3:19 | Exit | 4 |
| Conditions.cs:7:14:7:16 | After access to parameter inc [false] | Conditions.cs:8:13:8:16 | After ...; | 8 |
| Conditions.cs:7:14:7:16 | After access to parameter inc [true] | Conditions.cs:7:13:7:16 | After !... [false] | 2 |
| Conditions.cs:11:9:11:10 | Entry | Conditions.cs:14:13:14:13 | access to parameter b | 11 |
| Conditions.cs:11:9:11:10 | Entry | Conditions.cs:14:13:14:13 | access to parameter b | 12 |
| Conditions.cs:14:9:15:16 | After if (...) ... | Conditions.cs:16:13:16:17 | ... > ... | 6 |
| Conditions.cs:14:13:14:13 | After access to parameter b [false] | Conditions.cs:14:13:14:13 | After access to parameter b [false] | 1 |
| Conditions.cs:14:13:14:13 | After access to parameter b [true] | Conditions.cs:15:13:15:16 | After ...; | 7 |
@@ -333,7 +333,7 @@
| Conditions.cs:17:13:18:20 | After if (...) ... | Conditions.cs:17:13:18:20 | After if (...) ... | 1 |
| Conditions.cs:17:18:17:18 | After access to parameter b [false] | Conditions.cs:18:17:18:20 | After ...; | 8 |
| Conditions.cs:17:18:17:18 | After access to parameter b [true] | Conditions.cs:17:17:17:18 | After !... [false] | 2 |
| Conditions.cs:22:9:22:10 | Entry | Conditions.cs:25:13:25:14 | access to parameter b1 | 11 |
| Conditions.cs:22:9:22:10 | Entry | Conditions.cs:25:13:25:14 | access to parameter b1 | 13 |
| Conditions.cs:25:9:27:20 | After if (...) ... | Conditions.cs:28:13:28:14 | access to parameter b2 | 3 |
| Conditions.cs:25:13:25:14 | After access to parameter b1 [false] | Conditions.cs:25:13:25:14 | After access to parameter b1 [false] | 1 |
| Conditions.cs:25:13:25:14 | After access to parameter b1 [true] | Conditions.cs:26:17:26:18 | access to parameter b2 | 3 |
@@ -343,7 +343,7 @@
| Conditions.cs:28:9:29:16 | After if (...) ... | Conditions.cs:22:9:22:10 | Exit | 6 |
| Conditions.cs:28:13:28:14 | After access to parameter b2 [false] | Conditions.cs:28:13:28:14 | After access to parameter b2 [false] | 1 |
| Conditions.cs:28:13:28:14 | After access to parameter b2 [true] | Conditions.cs:29:13:29:16 | After ...; | 7 |
| Conditions.cs:33:9:33:10 | Entry | Conditions.cs:37:13:37:14 | access to parameter b1 | 18 |
| Conditions.cs:33:9:33:10 | Entry | Conditions.cs:37:13:37:14 | access to parameter b1 | 19 |
| Conditions.cs:37:9:38:20 | After if (...) ... | Conditions.cs:39:13:39:14 | access to local variable b2 | 3 |
| Conditions.cs:37:13:37:14 | After access to parameter b1 [false] | Conditions.cs:37:13:37:14 | After access to parameter b1 [false] | 1 |
| Conditions.cs:37:13:37:14 | After access to parameter b1 [true] | Conditions.cs:38:13:38:20 | After ...; | 8 |
@@ -353,14 +353,14 @@
| Conditions.cs:41:9:42:16 | After if (...) ... | Conditions.cs:33:9:33:10 | Exit | 6 |
| Conditions.cs:41:13:41:14 | After access to local variable b2 [false] | Conditions.cs:41:13:41:14 | After access to local variable b2 [false] | 1 |
| Conditions.cs:41:13:41:14 | After access to local variable b2 [true] | Conditions.cs:42:13:42:16 | After ...; | 7 |
| Conditions.cs:46:9:46:10 | Entry | Conditions.cs:49:9:53:9 | while (...) ... | 10 |
| Conditions.cs:46:9:46:10 | Entry | Conditions.cs:49:9:53:9 | while (...) ... | 12 |
| Conditions.cs:49:9:53:9 | [LoopHeader] while (...) ... | Conditions.cs:49:16:49:22 | ... > ... | 8 |
| Conditions.cs:49:16:49:22 | After ... > ... [false] | Conditions.cs:46:9:46:10 | Exit | 7 |
| Conditions.cs:49:16:49:22 | After ... > ... [true] | Conditions.cs:51:17:51:17 | access to parameter b | 4 |
| Conditions.cs:51:13:52:20 | After if (...) ... | Conditions.cs:50:9:53:9 | After {...} | 2 |
| Conditions.cs:51:17:51:17 | After access to parameter b [false] | Conditions.cs:51:17:51:17 | After access to parameter b [false] | 1 |
| Conditions.cs:51:17:51:17 | After access to parameter b [true] | Conditions.cs:52:17:52:20 | After ...; | 7 |
| Conditions.cs:57:9:57:10 | Entry | Conditions.cs:60:9:64:9 | while (...) ... | 10 |
| Conditions.cs:57:9:57:10 | Entry | Conditions.cs:60:9:64:9 | while (...) ... | 12 |
| Conditions.cs:60:9:64:9 | [LoopHeader] while (...) ... | Conditions.cs:60:16:60:22 | ... > ... | 8 |
| Conditions.cs:60:16:60:22 | After ... > ... [false] | Conditions.cs:65:13:65:13 | access to parameter b | 4 |
| Conditions.cs:60:16:60:22 | After ... > ... [true] | Conditions.cs:62:17:62:17 | access to parameter b | 4 |
@@ -370,7 +370,7 @@
| Conditions.cs:65:9:66:16 | After if (...) ... | Conditions.cs:57:9:57:10 | Exit | 6 |
| Conditions.cs:65:13:65:13 | After access to parameter b [false] | Conditions.cs:65:13:65:13 | After access to parameter b [false] | 1 |
| Conditions.cs:65:13:65:13 | After access to parameter b [true] | Conditions.cs:66:13:66:16 | After ...; | 7 |
| Conditions.cs:70:9:70:10 | Entry | Conditions.cs:74:27:74:28 | access to parameter ss | 25 |
| Conditions.cs:70:9:70:10 | Entry | Conditions.cs:74:27:74:28 | access to parameter ss | 26 |
| Conditions.cs:74:9:80:9 | After foreach (... ... in ...) ... | Conditions.cs:81:13:81:13 | access to local variable b | 3 |
| Conditions.cs:74:22:74:22 | String _ | Conditions.cs:76:17:76:17 | access to local variable b | 4 |
| Conditions.cs:74:27:74:28 | After access to parameter ss [empty] | Conditions.cs:74:27:74:28 | After access to parameter ss [empty] | 1 |
@@ -384,7 +384,7 @@
| Conditions.cs:81:9:82:16 | After if (...) ... | Conditions.cs:70:9:70:10 | Exit | 6 |
| Conditions.cs:81:13:81:13 | After access to local variable b [false] | Conditions.cs:81:13:81:13 | After access to local variable b [false] | 1 |
| Conditions.cs:81:13:81:13 | After access to local variable b [true] | Conditions.cs:82:13:82:16 | After ...; | 7 |
| Conditions.cs:86:9:86:10 | Entry | Conditions.cs:90:27:90:28 | access to parameter ss | 25 |
| Conditions.cs:86:9:86:10 | Entry | Conditions.cs:90:27:90:28 | access to parameter ss | 26 |
| Conditions.cs:90:9:98:9 | After foreach (... ... in ...) ... | Conditions.cs:86:9:86:10 | Exit | 6 |
| Conditions.cs:90:22:90:22 | String _ | Conditions.cs:92:17:92:17 | access to local variable b | 4 |
| Conditions.cs:90:27:90:28 | After access to parameter ss [empty] | Conditions.cs:90:27:90:28 | After access to parameter ss [empty] | 1 |
@@ -398,7 +398,7 @@
| Conditions.cs:96:13:97:20 | After if (...) ... | Conditions.cs:90:9:98:9 | [LoopHeader] foreach (... ... in ...) ... | 3 |
| Conditions.cs:96:17:96:17 | After access to local variable b [false] | Conditions.cs:96:17:96:17 | After access to local variable b [false] | 1 |
| Conditions.cs:96:17:96:17 | After access to local variable b [true] | Conditions.cs:97:17:97:20 | After ...; | 7 |
| Conditions.cs:102:12:102:13 | Entry | Conditions.cs:105:13:105:13 | access to parameter b | 14 |
| Conditions.cs:102:12:102:13 | Entry | Conditions.cs:105:13:105:13 | access to parameter b | 15 |
| Conditions.cs:105:9:106:20 | After if (...) ... | Conditions.cs:107:13:107:24 | ... > ... | 9 |
| Conditions.cs:105:13:105:13 | After access to parameter b [false] | Conditions.cs:105:13:105:13 | After access to parameter b [false] | 1 |
| Conditions.cs:105:13:105:13 | After access to parameter b [true] | Conditions.cs:106:13:106:20 | After ...; | 8 |
@@ -408,7 +408,7 @@
| Conditions.cs:108:13:109:24 | After if (...) ... | Conditions.cs:108:13:109:24 | After if (...) ... | 1 |
| Conditions.cs:108:18:108:18 | After access to parameter b [false] | Conditions.cs:109:17:109:24 | After ...; | 9 |
| Conditions.cs:108:18:108:18 | After access to parameter b [true] | Conditions.cs:108:17:108:18 | After !... [false] | 2 |
| Conditions.cs:113:10:113:11 | Entry | Conditions.cs:116:18:116:22 | After Int32 i = ... | 15 |
| Conditions.cs:113:10:113:11 | Entry | Conditions.cs:116:18:116:22 | After Int32 i = ... | 16 |
| Conditions.cs:116:25:116:39 | After ... < ... [false] | Conditions.cs:113:10:113:11 | Exit | 5 |
| Conditions.cs:116:25:116:39 | After ... < ... [true] | Conditions.cs:119:18:119:21 | access to local variable last | 23 |
| Conditions.cs:116:25:116:39 | Before ... < ... | Conditions.cs:116:25:116:39 | ... < ... | 7 |
@@ -426,7 +426,7 @@
| Conditions.cs:135:17:138:17 | After if (...) ... | Conditions.cs:134:13:139:13 | After {...} | 2 |
| Conditions.cs:135:21:135:26 | After access to field Field2 [false] | Conditions.cs:135:21:135:26 | After access to field Field2 [false] | 1 |
| Conditions.cs:135:21:135:26 | After access to field Field2 [true] | Conditions.cs:136:17:138:17 | After {...} | 12 |
| Conditions.cs:143:10:143:12 | Entry | Conditions.cs:145:17:145:17 | access to parameter b | 7 |
| Conditions.cs:143:10:143:12 | Entry | Conditions.cs:145:17:145:17 | access to parameter b | 8 |
| Conditions.cs:145:17:145:17 | After access to parameter b [false] | Conditions.cs:145:27:145:29 | "b" | 2 |
| Conditions.cs:145:17:145:17 | After access to parameter b [true] | Conditions.cs:145:21:145:23 | "a" | 2 |
| Conditions.cs:145:17:145:29 | After ... ? ... : ... | Conditions.cs:146:13:146:13 | access to parameter b | 6 |
@@ -434,7 +434,13 @@
| Conditions.cs:146:13:146:13 | After access to parameter b [false] | Conditions.cs:149:13:149:49 | After ...; | 14 |
| Conditions.cs:146:13:146:13 | After access to parameter b [true] | Conditions.cs:147:13:147:49 | After ...; | 14 |
| DefaultParam.cs:1:7:1:18 | Entry | DefaultParam.cs:1:7:1:18 | Exit | 11 |
| DefaultParam.cs:3:12:3:13 | Entry | DefaultParam.cs:3:12:3:13 | Exit | 21 |
| DefaultParam.cs:3:12:3:13 | Entry | DefaultParam.cs:3:30:3:30 | s | 3 |
| DefaultParam.cs:3:30:3:30 | After s [match] | DefaultParam.cs:3:30:3:30 | After s [match] | 1 |
| DefaultParam.cs:3:30:3:30 | After s [no-match] | DefaultParam.cs:3:34:3:35 | "" | 2 |
| DefaultParam.cs:3:42:3:42 | After i [match] | DefaultParam.cs:3:42:3:42 | After i [match] | 1 |
| DefaultParam.cs:3:42:3:42 | After i [no-match] | DefaultParam.cs:3:46:3:46 | 0 | 2 |
| DefaultParam.cs:3:42:3:42 | i | DefaultParam.cs:3:42:3:42 | i | 1 |
| DefaultParam.cs:4:5:6:5 | {...} | DefaultParam.cs:3:12:3:13 | Exit | 20 |
| ExitMethods.cs:6:7:6:17 | Entry | ExitMethods.cs:6:7:6:17 | Exit | 11 |
| ExitMethods.cs:8:10:8:11 | Entry | ExitMethods.cs:8:10:8:11 | Exit | 12 |
| ExitMethods.cs:14:10:14:11 | Entry | ExitMethods.cs:14:10:14:11 | Exit | 12 |
@@ -450,11 +456,11 @@
| ExitMethods.cs:48:9:51:9 | After catch (...) {...} [no-match] | ExitMethods.cs:38:10:38:11 | Exceptional Exit | 2 |
| ExitMethods.cs:54:10:54:11 | Entry | ExitMethods.cs:54:10:54:11 | Exit | 7 |
| ExitMethods.cs:60:10:60:11 | Entry | ExitMethods.cs:60:10:60:11 | Exit | 7 |
| ExitMethods.cs:66:17:66:26 | Entry | ExitMethods.cs:68:13:68:13 | access to parameter b | 4 |
| ExitMethods.cs:66:17:66:26 | Entry | ExitMethods.cs:68:13:68:13 | access to parameter b | 5 |
| ExitMethods.cs:66:17:66:26 | Exit | ExitMethods.cs:66:17:66:26 | Exit | 1 |
| ExitMethods.cs:68:13:68:13 | After access to parameter b [false] | ExitMethods.cs:66:17:66:26 | Normal Exit | 4 |
| ExitMethods.cs:68:13:68:13 | After access to parameter b [true] | ExitMethods.cs:66:17:66:26 | Exceptional Exit | 7 |
| ExitMethods.cs:72:17:72:27 | Entry | ExitMethods.cs:74:13:74:13 | access to parameter b | 4 |
| ExitMethods.cs:72:17:72:27 | Entry | ExitMethods.cs:74:13:74:13 | access to parameter b | 5 |
| ExitMethods.cs:72:17:72:27 | Exceptional Exit | ExitMethods.cs:72:17:72:27 | Exit | 2 |
| ExitMethods.cs:74:13:74:13 | After access to parameter b [false] | ExitMethods.cs:77:13:77:45 | throw ...; | 7 |
| ExitMethods.cs:74:13:74:13 | After access to parameter b [true] | ExitMethods.cs:75:13:75:34 | throw ...; | 6 |
@@ -466,29 +472,29 @@
| ExitMethods.cs:92:10:92:18 | Exit | ExitMethods.cs:92:10:92:18 | Exit | 1 |
| ExitMethods.cs:94:9:102:9 | After try {...} ... | ExitMethods.cs:92:10:92:18 | Normal Exit | 3 |
| ExitMethods.cs:105:10:105:24 | Entry | ExitMethods.cs:105:10:105:24 | Exit | 7 |
| ExitMethods.cs:110:13:110:21 | Entry | ExitMethods.cs:112:16:112:25 | ... != ... | 11 |
| ExitMethods.cs:110:13:110:21 | Entry | ExitMethods.cs:112:16:112:25 | ... != ... | 12 |
| ExitMethods.cs:110:13:110:21 | Exit | ExitMethods.cs:110:13:110:21 | Exit | 1 |
| ExitMethods.cs:112:16:112:25 | After ... != ... [false] | ExitMethods.cs:110:13:110:21 | Exceptional Exit | 8 |
| ExitMethods.cs:112:16:112:25 | After ... != ... [true] | ExitMethods.cs:110:13:110:21 | Normal Exit | 12 |
| ExitMethods.cs:115:16:115:34 | Entry | ExitMethods.cs:117:16:117:30 | call to method Contains | 8 |
| ExitMethods.cs:115:16:115:34 | Entry | ExitMethods.cs:117:16:117:30 | call to method Contains | 9 |
| ExitMethods.cs:117:16:117:30 | After call to method Contains [false] | ExitMethods.cs:117:38:117:38 | 1 | 2 |
| ExitMethods.cs:117:16:117:30 | After call to method Contains [true] | ExitMethods.cs:117:34:117:34 | 0 | 2 |
| ExitMethods.cs:117:16:117:38 | After ... ? ... : ... | ExitMethods.cs:115:16:115:34 | Exit | 4 |
| ExitMethods.cs:120:17:120:32 | Entry | ExitMethods.cs:120:17:120:32 | Exit | 8 |
| ExitMethods.cs:126:17:126:33 | Entry | ExitMethods.cs:126:17:126:33 | Exit | 8 |
| ExitMethods.cs:132:10:132:20 | Entry | ExitMethods.cs:132:33:132:49 | call to method IsFalse | 4 |
| ExitMethods.cs:132:10:132:20 | Entry | ExitMethods.cs:132:33:132:49 | call to method IsFalse | 5 |
| ExitMethods.cs:132:10:132:20 | Exceptional Exit | ExitMethods.cs:132:10:132:20 | Exceptional Exit | 1 |
| ExitMethods.cs:132:10:132:20 | Exit | ExitMethods.cs:132:10:132:20 | Exit | 1 |
| ExitMethods.cs:132:33:132:49 | After call to method IsFalse | ExitMethods.cs:132:10:132:20 | Normal Exit | 2 |
| ExitMethods.cs:134:17:134:33 | Entry | ExitMethods.cs:134:17:134:33 | Exit | 9 |
| ExitMethods.cs:140:17:140:42 | Entry | ExitMethods.cs:142:13:142:13 | access to parameter b | 4 |
| ExitMethods.cs:140:17:140:42 | Entry | ExitMethods.cs:142:13:142:13 | access to parameter b | 6 |
| ExitMethods.cs:140:17:140:42 | Exceptional Exit | ExitMethods.cs:140:17:140:42 | Exit | 2 |
| ExitMethods.cs:142:13:142:13 | After access to parameter b [false] | ExitMethods.cs:145:13:145:52 | call to method Throw | 8 |
| ExitMethods.cs:142:13:142:13 | After access to parameter b [true] | ExitMethods.cs:143:13:143:42 | call to method Throw | 5 |
| Extensions.cs:5:23:5:29 | Entry | Extensions.cs:5:23:5:29 | Exit | 10 |
| Extensions.cs:10:24:10:29 | Entry | Extensions.cs:10:24:10:29 | Exit | 11 |
| Extensions.cs:5:23:5:29 | Entry | Extensions.cs:5:23:5:29 | Exit | 11 |
| Extensions.cs:10:24:10:29 | Entry | Extensions.cs:10:24:10:29 | Exit | 13 |
| Extensions.cs:15:23:15:33 | Entry | Extensions.cs:15:23:15:33 | Exit | 7 |
| Extensions.cs:20:17:20:20 | Entry | Extensions.cs:20:17:20:20 | Exit | 37 |
| Extensions.cs:20:17:20:20 | Entry | Extensions.cs:20:17:20:20 | Exit | 38 |
| Finally.cs:3:14:3:20 | Entry | Finally.cs:3:14:3:20 | Exit | 11 |
| Finally.cs:7:10:7:11 | Entry | Finally.cs:11:13:11:37 | call to method WriteLine | 8 |
| Finally.cs:7:10:7:11 | Exceptional Exit | Finally.cs:7:10:7:11 | Exceptional Exit | 1 |
@@ -570,7 +576,7 @@
| Finally.cs:133:10:133:11 | Entry | Finally.cs:137:13:137:36 | call to method WriteLine | 8 |
| Finally.cs:137:13:137:36 | After call to method WriteLine | Finally.cs:136:9:138:9 | After {...} | 3 |
| Finally.cs:140:9:143:9 | {...} | Finally.cs:133:10:133:11 | Exit | 9 |
| Finally.cs:147:10:147:11 | Entry | Finally.cs:151:17:151:28 | ... == ... | 9 |
| Finally.cs:147:10:147:11 | Entry | Finally.cs:151:17:151:28 | ... == ... | 10 |
| Finally.cs:147:10:147:11 | Exceptional Exit | Finally.cs:147:10:147:11 | Exceptional Exit | 1 |
| Finally.cs:147:10:147:11 | Exit | Finally.cs:147:10:147:11 | Exit | 1 |
| Finally.cs:149:9:169:9 | After try {...} ... | Finally.cs:147:10:147:11 | Normal Exit | 3 |
@@ -591,7 +597,7 @@
| Finally.cs:172:11:172:20 | Entry | Finally.cs:172:11:172:20 | Exit | 11 |
| Finally.cs:173:11:173:20 | Entry | Finally.cs:173:11:173:20 | Exit | 11 |
| Finally.cs:174:11:174:20 | Entry | Finally.cs:174:11:174:20 | Exit | 11 |
| Finally.cs:176:10:176:11 | Entry | Finally.cs:180:17:180:18 | access to parameter b1 | 6 |
| Finally.cs:176:10:176:11 | Entry | Finally.cs:180:17:180:18 | access to parameter b1 | 8 |
| Finally.cs:176:10:176:11 | Exceptional Exit | Finally.cs:176:10:176:11 | Exceptional Exit | 1 |
| Finally.cs:176:10:176:11 | Exit | Finally.cs:176:10:176:11 | Exit | 1 |
| Finally.cs:178:9:192:9 | After try {...} ... | Finally.cs:176:10:176:11 | Normal Exit | 3 |
@@ -610,7 +616,7 @@
| Finally.cs:188:38:188:39 | After access to parameter b2 [true] | Finally.cs:190:21:190:22 | access to parameter b1 | 4 |
| Finally.cs:190:21:190:22 | After access to parameter b1 [false] | Finally.cs:189:13:191:13 | After {...} | 3 |
| Finally.cs:190:21:190:22 | After access to parameter b1 [true] | Finally.cs:190:25:190:47 | throw ...; | 6 |
| Finally.cs:195:10:195:12 | Entry | Finally.cs:199:17:199:18 | access to parameter b1 | 6 |
| Finally.cs:195:10:195:12 | Entry | Finally.cs:199:17:199:18 | access to parameter b1 | 9 |
| Finally.cs:195:10:195:12 | Exceptional Exit | Finally.cs:195:10:195:12 | Exceptional Exit | 1 |
| Finally.cs:195:10:195:12 | Exit | Finally.cs:195:10:195:12 | Exit | 1 |
| Finally.cs:197:9:212:9 | After try {...} ... | Finally.cs:195:10:195:12 | Normal Exit | 13 |
@@ -629,7 +635,7 @@
| Finally.cs:220:13:220:36 | After call to method WriteLine | Finally.cs:219:9:221:9 | After {...} | 3 |
| Finally.cs:222:9:225:9 | catch {...} | Finally.cs:223:9:225:9 | After {...} | 10 |
| Finally.cs:227:9:229:9 | {...} | Finally.cs:216:10:216:12 | Exit | 18 |
| Finally.cs:233:10:233:12 | Entry | Finally.cs:239:21:239:22 | access to parameter b1 | 8 |
| Finally.cs:233:10:233:12 | Entry | Finally.cs:239:21:239:22 | access to parameter b1 | 10 |
| Finally.cs:233:10:233:12 | Exceptional Exit | Finally.cs:233:10:233:12 | Exceptional Exit | 1 |
| Finally.cs:233:10:233:12 | Exit | Finally.cs:233:10:233:12 | Exit | 1 |
| Finally.cs:235:9:259:9 | After try {...} ... | Finally.cs:233:10:233:12 | Normal Exit | 9 |
@@ -645,24 +651,24 @@
| Finally.cs:250:17:252:17 | {...} | Finally.cs:250:17:252:17 | After {...} | 8 |
| Finally.cs:254:13:254:44 | After call to method WriteLine | Finally.cs:236:9:255:9 | After {...} | 3 |
| Finally.cs:257:9:259:9 | {...} | Finally.cs:257:9:259:9 | After {...} | 8 |
| Finally.cs:263:10:263:12 | Entry | Finally.cs:267:13:267:34 | call to method WriteLine | 8 |
| Finally.cs:263:10:263:12 | Entry | Finally.cs:267:13:267:34 | call to method WriteLine | 9 |
| Finally.cs:263:10:263:12 | Exceptional Exit | Finally.cs:263:10:263:12 | Exceptional Exit | 1 |
| Finally.cs:263:10:263:12 | Exit | Finally.cs:263:10:263:12 | Exit | 1 |
| Finally.cs:265:9:273:9 | After try {...} ... | Finally.cs:263:10:263:12 | Normal Exit | 3 |
| Finally.cs:267:13:267:34 | After call to method WriteLine | Finally.cs:266:9:268:9 | After {...} | 3 |
| Finally.cs:270:9:273:9 | {...} | Finally.cs:270:9:273:9 | After {...} | 15 |
| Foreach.cs:4:7:4:13 | Entry | Foreach.cs:4:7:4:13 | Exit | 11 |
| Foreach.cs:6:10:6:11 | Entry | Foreach.cs:8:29:8:32 | access to parameter args | 4 |
| Foreach.cs:6:10:6:11 | Entry | Foreach.cs:8:29:8:32 | access to parameter args | 5 |
| Foreach.cs:8:9:9:13 | After foreach (... ... in ...) ... | Foreach.cs:6:10:6:11 | Exit | 4 |
| Foreach.cs:8:22:8:24 | String arg | Foreach.cs:8:9:9:13 | [LoopHeader] foreach (... ... in ...) ... | 3 |
| Foreach.cs:8:29:8:32 | After access to parameter args [empty] | Foreach.cs:8:29:8:32 | After access to parameter args [empty] | 1 |
| Foreach.cs:8:29:8:32 | After access to parameter args [non-empty] | Foreach.cs:8:29:8:32 | After access to parameter args [non-empty] | 1 |
| Foreach.cs:12:10:12:11 | Entry | Foreach.cs:14:27:14:30 | access to parameter args | 4 |
| Foreach.cs:12:10:12:11 | Entry | Foreach.cs:14:27:14:30 | access to parameter args | 5 |
| Foreach.cs:14:9:15:13 | After foreach (... ... in ...) ... | Foreach.cs:12:10:12:11 | Exit | 4 |
| Foreach.cs:14:22:14:22 | String _ | Foreach.cs:14:9:15:13 | [LoopHeader] foreach (... ... in ...) ... | 3 |
| Foreach.cs:14:27:14:30 | After access to parameter args [empty] | Foreach.cs:14:27:14:30 | After access to parameter args [empty] | 1 |
| Foreach.cs:14:27:14:30 | After access to parameter args [non-empty] | Foreach.cs:14:27:14:30 | After access to parameter args [non-empty] | 1 |
| Foreach.cs:18:10:18:11 | Entry | Foreach.cs:20:27:20:27 | access to parameter e | 6 |
| Foreach.cs:18:10:18:11 | Entry | Foreach.cs:20:27:20:27 | access to parameter e | 7 |
| Foreach.cs:20:9:21:11 | After foreach (... ... in ...) ... | Foreach.cs:18:10:18:11 | Exit | 4 |
| Foreach.cs:20:22:20:22 | String x | Foreach.cs:20:9:21:11 | [LoopHeader] foreach (... ... in ...) ... | 3 |
| Foreach.cs:20:27:20:27 | After access to parameter e [non-null] | Foreach.cs:20:27:20:38 | call to method ToArray<String> | 2 |
@@ -673,17 +679,17 @@
| Foreach.cs:20:27:20:68 | After ... ?? ... [non-empty] | Foreach.cs:20:27:20:68 | After ... ?? ... [non-empty] | 1 |
| Foreach.cs:20:43:20:68 | After call to method Empty<String> [empty] | Foreach.cs:20:43:20:68 | After call to method Empty<String> [empty] | 1 |
| Foreach.cs:20:43:20:68 | After call to method Empty<String> [non-empty] | Foreach.cs:20:43:20:68 | After call to method Empty<String> [non-empty] | 1 |
| Foreach.cs:24:10:24:11 | Entry | Foreach.cs:26:36:26:39 | access to parameter args | 4 |
| Foreach.cs:24:10:24:11 | Entry | Foreach.cs:26:36:26:39 | access to parameter args | 5 |
| Foreach.cs:26:9:27:11 | After foreach (... ... in ...) ... | Foreach.cs:24:10:24:11 | Exit | 4 |
| Foreach.cs:26:18:26:31 | Before (..., ...) | Foreach.cs:26:9:27:11 | [LoopHeader] foreach (... ... in ...) ... | 7 |
| Foreach.cs:26:36:26:39 | After access to parameter args [empty] | Foreach.cs:26:36:26:39 | After access to parameter args [empty] | 1 |
| Foreach.cs:26:36:26:39 | After access to parameter args [non-empty] | Foreach.cs:26:36:26:39 | After access to parameter args [non-empty] | 1 |
| Foreach.cs:30:10:30:11 | Entry | Foreach.cs:32:32:32:35 | access to parameter args | 4 |
| Foreach.cs:30:10:30:11 | Entry | Foreach.cs:32:32:32:35 | access to parameter args | 5 |
| Foreach.cs:32:9:33:11 | After foreach (... ... in ...) ... | Foreach.cs:30:10:30:11 | Exit | 4 |
| Foreach.cs:32:18:32:27 | Before (..., ...) | Foreach.cs:32:9:33:11 | [LoopHeader] foreach (... ... in ...) ... | 7 |
| Foreach.cs:32:32:32:35 | After access to parameter args [empty] | Foreach.cs:32:32:32:35 | After access to parameter args [empty] | 1 |
| Foreach.cs:32:32:32:35 | After access to parameter args [non-empty] | Foreach.cs:32:32:32:35 | After access to parameter args [non-empty] | 1 |
| Foreach.cs:36:10:36:11 | Entry | Foreach.cs:38:39:38:42 | access to parameter args | 4 |
| Foreach.cs:36:10:36:11 | Entry | Foreach.cs:38:39:38:42 | access to parameter args | 5 |
| Foreach.cs:38:9:39:11 | After foreach (... ... in ...) ... | Foreach.cs:36:10:36:11 | Exit | 4 |
| Foreach.cs:38:18:38:34 | Before (..., ...) | Foreach.cs:38:9:39:11 | [LoopHeader] foreach (... ... in ...) ... | 7 |
| Foreach.cs:38:39:38:42 | After access to parameter args [empty] | Foreach.cs:38:39:38:42 | After access to parameter args [empty] | 1 |
@@ -691,19 +697,19 @@
| Initializers.cs:3:7:3:18 | Entry | Initializers.cs:3:7:3:18 | Exit | 9 |
| Initializers.cs:3:7:3:18 | Entry | Initializers.cs:3:7:3:18 | Exit | 27 |
| Initializers.cs:8:5:8:16 | Entry | Initializers.cs:8:5:8:16 | Exit | 11 |
| Initializers.cs:10:5:10:16 | Entry | Initializers.cs:10:5:10:16 | Exit | 11 |
| Initializers.cs:10:5:10:16 | Entry | Initializers.cs:10:5:10:16 | Exit | 12 |
| Initializers.cs:12:10:12:10 | Entry | Initializers.cs:12:10:12:10 | Exit | 48 |
| Initializers.cs:20:11:20:23 | Entry | Initializers.cs:20:11:20:23 | Exit | 11 |
| Initializers.cs:20:11:20:23 | Entry | Initializers.cs:20:11:20:23 | Exit | 19 |
| Initializers.cs:26:11:26:13 | Entry | Initializers.cs:26:11:26:13 | Exit | 11 |
| Initializers.cs:31:9:31:11 | Entry | Initializers.cs:31:9:31:11 | Exit | 22 |
| Initializers.cs:33:9:33:11 | Entry | Initializers.cs:33:9:33:11 | Exit | 18 |
| Initializers.cs:35:9:35:11 | Entry | Initializers.cs:35:9:35:11 | Exit | 26 |
| Initializers.cs:33:9:33:11 | Entry | Initializers.cs:33:9:33:11 | Exit | 19 |
| Initializers.cs:35:9:35:11 | Entry | Initializers.cs:35:9:35:11 | Exit | 28 |
| Initializers.cs:39:7:39:23 | Entry | Initializers.cs:39:7:39:23 | Exit | 11 |
| Initializers.cs:41:11:41:18 | Entry | Initializers.cs:41:11:41:18 | Exit | 11 |
| Initializers.cs:51:10:51:13 | Entry | Initializers.cs:51:10:51:13 | Exit | 245 |
| Initializers.cs:51:10:51:13 | Entry | Initializers.cs:51:10:51:13 | Exit | 246 |
| LoopUnrolling.cs:5:7:5:19 | Entry | LoopUnrolling.cs:5:7:5:19 | Exit | 11 |
| LoopUnrolling.cs:7:10:7:11 | Entry | LoopUnrolling.cs:9:13:9:28 | ... == ... | 10 |
| LoopUnrolling.cs:7:10:7:11 | Entry | LoopUnrolling.cs:9:13:9:28 | ... == ... | 11 |
| LoopUnrolling.cs:7:10:7:11 | Normal Exit | LoopUnrolling.cs:7:10:7:11 | Exit | 2 |
| LoopUnrolling.cs:9:13:9:28 | After ... == ... [false] | LoopUnrolling.cs:11:29:11:32 | access to parameter args | 4 |
| LoopUnrolling.cs:9:13:9:28 | After ... == ... [true] | LoopUnrolling.cs:10:13:10:19 | return ...; | 3 |
@@ -716,7 +722,7 @@
| LoopUnrolling.cs:18:22:18:22 | String x | LoopUnrolling.cs:18:9:19:33 | [LoopHeader] foreach (... ... in ...) ... | 8 |
| LoopUnrolling.cs:18:27:18:28 | After access to local variable xs [empty] | LoopUnrolling.cs:18:27:18:28 | After access to local variable xs [empty] | 1 |
| LoopUnrolling.cs:18:27:18:28 | After access to local variable xs [non-empty] | LoopUnrolling.cs:18:27:18:28 | After access to local variable xs [non-empty] | 1 |
| LoopUnrolling.cs:22:10:22:11 | Entry | LoopUnrolling.cs:24:29:24:32 | access to parameter args | 4 |
| LoopUnrolling.cs:22:10:22:11 | Entry | LoopUnrolling.cs:24:29:24:32 | access to parameter args | 5 |
| LoopUnrolling.cs:24:9:26:40 | After foreach (... ... in ...) ... | LoopUnrolling.cs:22:10:22:11 | Exit | 4 |
| LoopUnrolling.cs:24:22:24:24 | Char arg | LoopUnrolling.cs:25:34:25:37 | access to parameter args | 3 |
| LoopUnrolling.cs:24:29:24:32 | After access to parameter args [empty] | LoopUnrolling.cs:24:29:24:32 | After access to parameter args [empty] | 1 |
@@ -743,7 +749,7 @@
| LoopUnrolling.cs:48:27:48:28 | After access to local variable xs [empty] | LoopUnrolling.cs:45:10:45:11 | Exit | 5 |
| LoopUnrolling.cs:48:27:48:28 | After access to local variable xs [non-empty] | LoopUnrolling.cs:49:9:52:9 | {...} | 3 |
| LoopUnrolling.cs:50:9:50:13 | Label: | LoopUnrolling.cs:51:13:51:23 | goto ...; | 9 |
| LoopUnrolling.cs:55:10:55:11 | Entry | LoopUnrolling.cs:58:27:58:28 | access to local variable xs | 20 |
| LoopUnrolling.cs:55:10:55:11 | Entry | LoopUnrolling.cs:58:27:58:28 | access to local variable xs | 21 |
| LoopUnrolling.cs:58:9:64:9 | After foreach (... ... in ...) ... | LoopUnrolling.cs:55:10:55:11 | Exit | 4 |
| LoopUnrolling.cs:58:22:58:22 | String x | LoopUnrolling.cs:60:17:60:17 | access to parameter b | 4 |
| LoopUnrolling.cs:58:27:58:28 | After access to local variable xs [empty] | LoopUnrolling.cs:58:27:58:28 | After access to local variable xs [empty] | 1 |
@@ -754,7 +760,7 @@
| LoopUnrolling.cs:62:13:63:37 | After if (...) ... | LoopUnrolling.cs:58:9:64:9 | [LoopHeader] foreach (... ... in ...) ... | 3 |
| LoopUnrolling.cs:62:17:62:17 | After access to parameter b [false] | LoopUnrolling.cs:62:17:62:17 | After access to parameter b [false] | 1 |
| LoopUnrolling.cs:62:17:62:17 | After access to parameter b [true] | LoopUnrolling.cs:63:17:63:37 | After ...; | 7 |
| LoopUnrolling.cs:67:10:67:11 | Entry | LoopUnrolling.cs:69:14:69:23 | call to method Any<String> | 7 |
| LoopUnrolling.cs:67:10:67:11 | Entry | LoopUnrolling.cs:69:14:69:23 | call to method Any<String> | 8 |
| LoopUnrolling.cs:67:10:67:11 | Normal Exit | LoopUnrolling.cs:67:10:67:11 | Exit | 2 |
| LoopUnrolling.cs:69:14:69:23 | After call to method Any<String> [false] | LoopUnrolling.cs:70:13:70:19 | return ...; | 4 |
| LoopUnrolling.cs:69:14:69:23 | After call to method Any<String> [true] | LoopUnrolling.cs:72:29:72:32 | access to parameter args | 11 |
@@ -786,7 +792,7 @@
| MultiImplementationA.cs:7:21:7:23 | Entry | MultiImplementationA.cs:7:21:7:23 | Entry | 1 |
| MultiImplementationA.cs:7:21:7:23 | Exit | MultiImplementationA.cs:7:21:7:23 | Exit | 1 |
| MultiImplementationA.cs:7:25:7:39 | {...} | MultiImplementationA.cs:7:21:7:23 | Exceptional Exit | 5 |
| MultiImplementationA.cs:7:41:7:43 | Entry | MultiImplementationA.cs:7:41:7:43 | Entry | 1 |
| MultiImplementationA.cs:7:41:7:43 | Entry | MultiImplementationA.cs:7:41:7:43 | value | 2 |
| MultiImplementationA.cs:7:41:7:43 | Exit | MultiImplementationA.cs:7:41:7:43 | Exit | 1 |
| MultiImplementationA.cs:7:45:7:59 | {...} | MultiImplementationA.cs:7:41:7:43 | Exceptional Exit | 5 |
| MultiImplementationA.cs:8:16:8:16 | Entry | MultiImplementationA.cs:8:16:8:16 | Entry | 1 |
@@ -795,21 +801,21 @@
| MultiImplementationA.cs:11:7:11:8 | Entry | MultiImplementationA.cs:11:7:11:8 | Entry | 1 |
| MultiImplementationA.cs:11:7:11:8 | Normal Exit | MultiImplementationA.cs:11:7:11:8 | Exit | 2 |
| MultiImplementationA.cs:13:16:13:20 | Before ... = ... | MultiImplementationA.cs:24:32:24:34 | After ... = ... | 16 |
| MultiImplementationA.cs:14:31:14:31 | Entry | MultiImplementationA.cs:14:31:14:31 | Entry | 1 |
| MultiImplementationA.cs:14:31:14:31 | Entry | MultiImplementationA.cs:14:25:14:25 | i | 2 |
| MultiImplementationA.cs:14:31:14:31 | Exit | MultiImplementationA.cs:14:31:14:31 | Exit | 1 |
| MultiImplementationA.cs:14:31:14:31 | access to parameter i | MultiImplementationA.cs:14:31:14:31 | Normal Exit | 2 |
| MultiImplementationA.cs:15:36:15:38 | Entry | MultiImplementationA.cs:15:36:15:38 | Entry | 1 |
| MultiImplementationA.cs:15:36:15:38 | Entry | MultiImplementationA.cs:15:31:15:31 | s | 2 |
| MultiImplementationA.cs:15:36:15:38 | Exit | MultiImplementationA.cs:15:36:15:38 | Exit | 1 |
| MultiImplementationA.cs:15:40:15:52 | {...} | MultiImplementationA.cs:15:36:15:38 | Normal Exit | 5 |
| MultiImplementationA.cs:15:54:15:56 | Entry | MultiImplementationA.cs:15:54:15:56 | Entry | 1 |
| MultiImplementationA.cs:15:54:15:56 | Entry | MultiImplementationA.cs:15:54:15:56 | value | 3 |
| MultiImplementationA.cs:15:54:15:56 | Normal Exit | MultiImplementationA.cs:15:54:15:56 | Exit | 2 |
| MultiImplementationA.cs:15:58:15:60 | {...} | MultiImplementationA.cs:15:58:15:60 | {...} | 1 |
| MultiImplementationA.cs:16:17:16:18 | Entry | MultiImplementationA.cs:16:17:16:18 | Entry | 1 |
| MultiImplementationA.cs:16:17:16:18 | Entry | MultiImplementationA.cs:16:24:16:24 | i | 2 |
| MultiImplementationA.cs:16:17:16:18 | Normal Exit | MultiImplementationA.cs:16:17:16:18 | Exit | 2 |
| MultiImplementationA.cs:17:5:19:5 | {...} | MultiImplementationA.cs:17:5:19:5 | After {...} | 3 |
| MultiImplementationA.cs:18:9:18:22 | Entry | MultiImplementationA.cs:18:9:18:22 | Exit | 4 |
| MultiImplementationA.cs:20:12:20:13 | Before call to method <object initializer> | MultiImplementationA.cs:20:12:20:13 | Normal Exit | 20 |
| MultiImplementationA.cs:20:12:20:13 | Entry | MultiImplementationA.cs:20:12:20:13 | Entry | 1 |
| MultiImplementationA.cs:20:12:20:13 | Entry | MultiImplementationA.cs:20:19:20:19 | i | 2 |
| MultiImplementationA.cs:20:12:20:13 | Exit | MultiImplementationA.cs:20:12:20:13 | Exit | 1 |
| MultiImplementationA.cs:21:12:21:13 | Entry | MultiImplementationA.cs:21:12:21:13 | Entry | 1 |
| MultiImplementationA.cs:21:12:21:13 | Normal Exit | MultiImplementationA.cs:21:12:21:13 | Exit | 2 |
@@ -817,7 +823,7 @@
| MultiImplementationA.cs:22:6:22:7 | Entry | MultiImplementationA.cs:22:6:22:7 | Entry | 1 |
| MultiImplementationA.cs:22:6:22:7 | Exit | MultiImplementationA.cs:22:6:22:7 | Exit | 1 |
| MultiImplementationA.cs:22:11:22:13 | {...} | MultiImplementationA.cs:22:6:22:7 | Normal Exit | 2 |
| MultiImplementationA.cs:23:28:23:35 | Entry | MultiImplementationA.cs:23:28:23:35 | Entry | 1 |
| MultiImplementationA.cs:23:28:23:35 | Entry | MultiImplementationA.cs:23:44:23:44 | i | 2 |
| MultiImplementationA.cs:23:28:23:35 | Exit | MultiImplementationA.cs:23:28:23:35 | Exit | 1 |
| MultiImplementationA.cs:23:50:23:53 | null | MultiImplementationA.cs:23:28:23:35 | Normal Exit | 2 |
| MultiImplementationA.cs:28:7:28:8 | Before call to method <object initializer> | MultiImplementationA.cs:28:7:28:8 | {...} | 8 |
@@ -850,24 +856,24 @@
| MultiImplementationB.cs:30:15:30:16 | Before call to method <object initializer> | MultiImplementationB.cs:30:15:30:16 | {...} | 8 |
| MultiImplementationB.cs:32:17:32:17 | 0 | MultiImplementationA.cs:36:9:36:10 | Normal Exit | 2 |
| NullCoalescing.cs:1:7:1:20 | Entry | NullCoalescing.cs:1:7:1:20 | Exit | 11 |
| NullCoalescing.cs:3:9:3:10 | Entry | NullCoalescing.cs:3:23:3:23 | access to parameter i | 3 |
| NullCoalescing.cs:3:9:3:10 | Entry | NullCoalescing.cs:3:23:3:23 | access to parameter i | 4 |
| NullCoalescing.cs:3:23:3:23 | After access to parameter i [non-null] | NullCoalescing.cs:3:23:3:23 | After access to parameter i [non-null] | 1 |
| NullCoalescing.cs:3:23:3:23 | After access to parameter i [null] | NullCoalescing.cs:3:28:3:28 | 0 | 2 |
| NullCoalescing.cs:3:23:3:28 | After ... ?? ... | NullCoalescing.cs:3:9:3:10 | Exit | 3 |
| NullCoalescing.cs:5:9:5:10 | Entry | NullCoalescing.cs:5:25:5:25 | access to parameter b | 4 |
| NullCoalescing.cs:5:9:5:10 | Entry | NullCoalescing.cs:5:25:5:25 | access to parameter b | 5 |
| NullCoalescing.cs:5:24:5:43 | After ... ? ... : ... | NullCoalescing.cs:5:9:5:10 | Exit | 3 |
| NullCoalescing.cs:5:25:5:25 | After access to parameter b [non-null] | NullCoalescing.cs:5:25:5:25 | After access to parameter b [non-null] | 1 |
| NullCoalescing.cs:5:25:5:25 | After access to parameter b [null] | NullCoalescing.cs:5:30:5:34 | After false [false] | 3 |
| NullCoalescing.cs:5:25:5:34 | After ... ?? ... [false] | NullCoalescing.cs:5:43:5:43 | 1 | 2 |
| NullCoalescing.cs:5:25:5:34 | After ... ?? ... [true] | NullCoalescing.cs:5:39:5:39 | 0 | 2 |
| NullCoalescing.cs:7:12:7:13 | Entry | NullCoalescing.cs:7:40:7:41 | access to parameter s1 | 3 |
| NullCoalescing.cs:7:12:7:13 | Entry | NullCoalescing.cs:7:40:7:41 | access to parameter s1 | 5 |
| NullCoalescing.cs:7:40:7:41 | After access to parameter s1 [non-null] | NullCoalescing.cs:7:40:7:41 | After access to parameter s1 [non-null] | 1 |
| NullCoalescing.cs:7:40:7:41 | After access to parameter s1 [null] | NullCoalescing.cs:7:46:7:47 | access to parameter s2 | 3 |
| NullCoalescing.cs:7:40:7:53 | After ... ?? ... | NullCoalescing.cs:7:12:7:13 | Exit | 3 |
| NullCoalescing.cs:7:46:7:47 | After access to parameter s2 [non-null] | NullCoalescing.cs:7:46:7:47 | After access to parameter s2 [non-null] | 1 |
| NullCoalescing.cs:7:46:7:47 | After access to parameter s2 [null] | NullCoalescing.cs:7:52:7:53 | "" | 2 |
| NullCoalescing.cs:7:46:7:53 | After ... ?? ... | NullCoalescing.cs:7:46:7:53 | After ... ?? ... | 1 |
| NullCoalescing.cs:9:12:9:13 | Entry | NullCoalescing.cs:9:37:9:37 | access to parameter b | 4 |
| NullCoalescing.cs:9:12:9:13 | Entry | NullCoalescing.cs:9:37:9:37 | access to parameter b | 6 |
| NullCoalescing.cs:9:36:9:58 | After ... ?? ... | NullCoalescing.cs:9:12:9:13 | Exit | 3 |
| NullCoalescing.cs:9:37:9:37 | After access to parameter b [false] | NullCoalescing.cs:9:45:9:45 | access to parameter s | 2 |
| NullCoalescing.cs:9:37:9:37 | After access to parameter b [true] | NullCoalescing.cs:9:41:9:41 | access to parameter s | 2 |
@@ -880,7 +886,7 @@
| NullCoalescing.cs:9:51:9:52 | After "" [non-null] | NullCoalescing.cs:9:51:9:52 | After "" [non-null] | 1 |
| NullCoalescing.cs:9:51:9:52 | After "" [null] | NullCoalescing.cs:9:57:9:58 | "" | 2 |
| NullCoalescing.cs:9:51:9:58 | After ... ?? ... | NullCoalescing.cs:9:51:9:58 | After ... ?? ... | 1 |
| NullCoalescing.cs:11:9:11:10 | Entry | NullCoalescing.cs:11:44:11:45 | access to parameter b1 | 4 |
| NullCoalescing.cs:11:9:11:10 | Entry | NullCoalescing.cs:11:44:11:45 | access to parameter b1 | 7 |
| NullCoalescing.cs:11:43:11:68 | After ... ? ... : ... | NullCoalescing.cs:11:9:11:10 | Exit | 3 |
| NullCoalescing.cs:11:44:11:45 | After access to parameter b1 [non-null] | NullCoalescing.cs:11:44:11:45 | After access to parameter b1 [non-null] | 1 |
| NullCoalescing.cs:11:44:11:45 | After access to parameter b1 [null] | NullCoalescing.cs:11:51:11:52 | access to parameter b2 | 3 |
@@ -891,7 +897,7 @@
| NullCoalescing.cs:11:51:11:58 | After ... && ... [false] | NullCoalescing.cs:11:51:11:58 | After ... && ... [false] | 1 |
| NullCoalescing.cs:11:57:11:58 | After access to parameter b3 [false] | NullCoalescing.cs:11:57:11:58 | After access to parameter b3 [false] | 1 |
| NullCoalescing.cs:11:57:11:58 | After access to parameter b3 [true] | NullCoalescing.cs:11:51:11:58 | After ... && ... [true] | 2 |
| NullCoalescing.cs:13:10:13:11 | Entry | NullCoalescing.cs:15:17:15:26 | (...) ... | 9 |
| NullCoalescing.cs:13:10:13:11 | Entry | NullCoalescing.cs:15:17:15:26 | (...) ... | 10 |
| NullCoalescing.cs:15:17:15:26 | After (...) ... [non-null] | NullCoalescing.cs:15:17:15:26 | After (...) ... [non-null] | 1 |
| NullCoalescing.cs:15:17:15:26 | After (...) ... [null] | NullCoalescing.cs:15:31:15:31 | 0 | 2 |
| NullCoalescing.cs:15:17:15:31 | After ... ?? ... | NullCoalescing.cs:16:17:16:18 | "" | 9 |
@@ -902,7 +908,7 @@
| NullCoalescing.cs:17:13:17:19 | After (...) ... [null] | NullCoalescing.cs:17:24:17:24 | 1 | 2 |
| NullCoalescing.cs:17:13:17:24 | After ... ?? ... | NullCoalescing.cs:13:10:13:11 | Exit | 7 |
| PartialImplementationA.cs:1:15:1:21 | Entry | PartialImplementationA.cs:1:15:1:21 | Exit | 19 |
| PartialImplementationA.cs:3:12:3:18 | Entry | PartialImplementationA.cs:3:12:3:18 | Exit | 11 |
| PartialImplementationA.cs:3:12:3:18 | Entry | PartialImplementationA.cs:3:12:3:18 | Exit | 12 |
| PartialImplementationB.cs:4:12:4:18 | Entry | PartialImplementationB.cs:4:12:4:18 | Exit | 11 |
| Patterns.cs:3:7:3:14 | Entry | Patterns.cs:3:7:3:14 | Exit | 11 |
| Patterns.cs:5:10:5:11 | Entry | Patterns.cs:8:13:8:23 | ... is ... | 13 |
@@ -929,10 +935,10 @@
| Patterns.cs:30:13:30:27 | After case ...: [no-match] | Patterns.cs:33:13:33:24 | case ...: | 2 |
| Patterns.cs:33:13:33:24 | After case ...: [match] | Patterns.cs:34:17:34:22 | break; | 4 |
| Patterns.cs:33:13:33:24 | After case ...: [no-match] | Patterns.cs:37:17:37:22 | break; | 11 |
| Patterns.cs:47:24:47:25 | Entry | Patterns.cs:48:9:48:20 | ... is ... | 4 |
| Patterns.cs:47:24:47:25 | Entry | Patterns.cs:48:9:48:20 | ... is ... | 5 |
| Patterns.cs:48:9:48:20 | After ... is ... | Patterns.cs:47:24:47:25 | Exit | 3 |
| Patterns.cs:48:9:48:20 | [MatchTrue] ... is ... | Patterns.cs:48:14:48:20 | After not ... | 5 |
| Patterns.cs:50:24:50:25 | Entry | Patterns.cs:51:9:51:21 | ... is ... | 5 |
| Patterns.cs:50:24:50:25 | Entry | Patterns.cs:51:9:51:21 | ... is ... | 6 |
| Patterns.cs:51:9:51:21 | After ... is ... [false] | Patterns.cs:51:34:51:39 | ... is ... | 4 |
| Patterns.cs:51:9:51:21 | [MatchTrue] ... is ... | Patterns.cs:51:25:51:30 | ... is ... | 9 |
| Patterns.cs:51:9:51:39 | After ... ? ... : ... | Patterns.cs:50:24:50:25 | Exit | 3 |
@@ -940,10 +946,10 @@
| Patterns.cs:51:25:51:30 | [MatchTrue] ... is ... | Patterns.cs:51:30:51:30 | 1 | 2 |
| Patterns.cs:51:34:51:39 | After ... is ... | Patterns.cs:51:34:51:39 | After ... is ... | 1 |
| Patterns.cs:51:34:51:39 | [MatchTrue] ... is ... | Patterns.cs:51:39:51:39 | 2 | 2 |
| Patterns.cs:53:24:53:25 | Entry | Patterns.cs:54:9:54:37 | ... is ... | 4 |
| Patterns.cs:53:24:53:25 | Entry | Patterns.cs:54:9:54:37 | ... is ... | 5 |
| Patterns.cs:54:9:54:37 | After ... is ... | Patterns.cs:53:24:53:25 | Exit | 3 |
| Patterns.cs:54:9:54:37 | [MatchTrue] ... is ... | Patterns.cs:54:14:54:37 | After not ... | 13 |
| Patterns.cs:56:26:56:27 | Entry | Patterns.cs:60:13:60:28 | ... => ... | 6 |
| Patterns.cs:56:26:56:27 | Entry | Patterns.cs:60:13:60:28 | ... => ... | 7 |
| Patterns.cs:58:16:62:9 | After ... switch { ... } | Patterns.cs:56:26:56:27 | Exit | 4 |
| Patterns.cs:60:13:60:28 | After ... => ... [match] | Patterns.cs:60:22:60:28 | "not 1" | 6 |
| Patterns.cs:60:13:60:28 | After ... => ... [no-match] | Patterns.cs:61:18:61:24 | "other" | 5 |
@@ -953,7 +959,7 @@
| Patterns.cs:69:13:69:33 | After ... => ... [no-match] | Patterns.cs:70:13:70:27 | ... => ... | 2 |
| Patterns.cs:70:13:70:27 | After ... => ... [match] | Patterns.cs:70:18:70:27 | "possible" | 3 |
| Patterns.cs:70:13:70:27 | After ... => ... [no-match] | Patterns.cs:70:13:70:27 | After ... => ... [no-match] | 1 |
| Patterns.cs:74:26:74:27 | Entry | Patterns.cs:78:13:78:24 | ... => ... | 6 |
| Patterns.cs:74:26:74:27 | Entry | Patterns.cs:78:13:78:24 | ... => ... | 7 |
| Patterns.cs:76:16:82:9 | After ... switch { ... } | Patterns.cs:74:26:74:27 | Exit | 4 |
| Patterns.cs:78:13:78:24 | After ... => ... [match] | Patterns.cs:78:20:78:24 | "> 1" | 6 |
| Patterns.cs:78:13:78:24 | After ... => ... [no-match] | Patterns.cs:79:13:79:24 | ... => ... | 2 |
@@ -961,11 +967,11 @@
| Patterns.cs:79:13:79:24 | After ... => ... [no-match] | Patterns.cs:80:13:80:20 | ... => ... | 2 |
| Patterns.cs:80:13:80:20 | After ... => ... [match] | Patterns.cs:80:18:80:20 | "1" | 3 |
| Patterns.cs:80:13:80:20 | After ... => ... [no-match] | Patterns.cs:81:18:81:20 | "0" | 5 |
| Patterns.cs:85:26:85:27 | Entry | Patterns.cs:85:39:85:53 | ... is ... | 5 |
| Patterns.cs:85:26:85:27 | Entry | Patterns.cs:85:39:85:53 | ... is ... | 6 |
| Patterns.cs:85:39:85:53 | After ... is ... [false] | Patterns.cs:85:67:85:69 | "2" | 2 |
| Patterns.cs:85:39:85:53 | [MatchTrue] ... is ... | Patterns.cs:85:57:85:63 | "not 2" | 11 |
| Patterns.cs:85:39:85:69 | After ... ? ... : ... | Patterns.cs:85:26:85:27 | Exit | 3 |
| Patterns.cs:87:26:87:27 | Entry | Patterns.cs:87:39:87:54 | ... is ... | 5 |
| Patterns.cs:87:26:87:27 | Entry | Patterns.cs:87:39:87:54 | ... is ... | 6 |
| Patterns.cs:87:39:87:54 | After ... is ... [false] | Patterns.cs:87:64:87:70 | "not 1" | 2 |
| Patterns.cs:87:39:87:54 | [MatchTrue] ... is ... | Patterns.cs:87:58:87:60 | "1" | 11 |
| Patterns.cs:87:39:87:70 | After ... ? ... : ... | Patterns.cs:87:26:87:27 | Exit | 3 |
@@ -974,12 +980,12 @@
| Patterns.cs:95:13:95:40 | After ... is ... [false] | Patterns.cs:95:13:95:40 | After ... is ... [false] | 1 |
| Patterns.cs:95:13:95:40 | [MatchTrue] ... is ... | Patterns.cs:96:9:98:9 | After {...} | 21 |
| PostDominance.cs:3:7:3:19 | Entry | PostDominance.cs:3:7:3:19 | Exit | 11 |
| PostDominance.cs:5:10:5:11 | Entry | PostDominance.cs:5:10:5:11 | Exit | 11 |
| PostDominance.cs:10:10:10:11 | Entry | PostDominance.cs:12:13:12:21 | ... is ... | 6 |
| PostDominance.cs:5:10:5:11 | Entry | PostDominance.cs:5:10:5:11 | Exit | 12 |
| PostDominance.cs:10:10:10:11 | Entry | PostDominance.cs:12:13:12:21 | ... is ... | 7 |
| PostDominance.cs:10:10:10:11 | Normal Exit | PostDominance.cs:10:10:10:11 | Exit | 2 |
| PostDominance.cs:12:13:12:21 | After ... is ... [false] | PostDominance.cs:11:5:15:5 | After {...} | 9 |
| PostDominance.cs:12:13:12:21 | [MatchTrue] ... is ... | PostDominance.cs:13:13:13:19 | return ...; | 5 |
| PostDominance.cs:17:10:17:11 | Entry | PostDominance.cs:19:13:19:21 | ... is ... | 6 |
| PostDominance.cs:17:10:17:11 | Entry | PostDominance.cs:19:13:19:21 | ... is ... | 7 |
| PostDominance.cs:17:10:17:11 | Exit | PostDominance.cs:17:10:17:11 | Exit | 1 |
| PostDominance.cs:19:13:19:21 | After ... is ... [false] | PostDominance.cs:17:10:17:11 | Normal Exit | 10 |
| PostDominance.cs:19:13:19:21 | [MatchTrue] ... is ... | PostDominance.cs:17:10:17:11 | Exceptional Exit | 10 |
@@ -988,8 +994,8 @@
| Qualifiers.cs:8:23:8:34 | Entry | Qualifiers.cs:8:23:8:34 | Exit | 4 |
| Qualifiers.cs:10:10:10:10 | Entry | Qualifiers.cs:10:10:10:10 | Exit | 149 |
| Switch.cs:3:7:3:12 | Entry | Switch.cs:3:7:3:12 | Exit | 11 |
| Switch.cs:5:10:5:11 | Entry | Switch.cs:5:10:5:11 | Exit | 8 |
| Switch.cs:10:10:10:11 | Entry | Switch.cs:14:13:14:21 | case ...: | 5 |
| Switch.cs:5:10:5:11 | Entry | Switch.cs:5:10:5:11 | Exit | 9 |
| Switch.cs:10:10:10:11 | Entry | Switch.cs:14:13:14:21 | case ...: | 6 |
| Switch.cs:10:10:10:11 | Exceptional Exit | Switch.cs:10:10:10:11 | Exceptional Exit | 1 |
| Switch.cs:10:10:10:11 | Exit | Switch.cs:10:10:10:11 | Exit | 1 |
| Switch.cs:10:10:10:11 | Normal Exit | Switch.cs:10:10:10:11 | Normal Exit | 1 |
@@ -1015,7 +1021,7 @@
| Switch.cs:27:13:27:39 | case ...: | Switch.cs:27:13:27:39 | case ...: | 1 |
| Switch.cs:30:13:30:20 | After default: [match] | Switch.cs:29:17:29:23 | return ...; | 6 |
| Switch.cs:35:10:35:11 | Entry | Switch.cs:35:10:35:11 | Exit | 7 |
| Switch.cs:44:10:44:11 | Entry | Switch.cs:48:13:48:23 | case ...: | 5 |
| Switch.cs:44:10:44:11 | Entry | Switch.cs:48:13:48:23 | case ...: | 6 |
| Switch.cs:46:9:52:9 | After switch (...) {...} | Switch.cs:44:10:44:11 | Exit | 4 |
| Switch.cs:48:13:48:23 | After case ...: [match] | Switch.cs:49:17:49:22 | break; | 4 |
| Switch.cs:48:13:48:23 | After case ...: [no-match] | Switch.cs:50:13:50:39 | case ...: | 2 |
@@ -1029,13 +1035,13 @@
| Switch.cs:59:13:59:19 | After case ...: [no-match] | Switch.cs:61:13:61:19 | case ...: | 2 |
| Switch.cs:61:13:61:19 | After case ...: [match] | Switch.cs:62:17:62:22 | break; | 4 |
| Switch.cs:61:13:61:19 | After case ...: [no-match] | Switch.cs:61:13:61:19 | After case ...: [no-match] | 1 |
| Switch.cs:66:10:66:11 | Entry | Switch.cs:70:13:70:23 | case ...: | 8 |
| Switch.cs:66:10:66:11 | Entry | Switch.cs:70:13:70:23 | case ...: | 9 |
| Switch.cs:68:9:74:9 | After switch (...) {...} | Switch.cs:66:10:66:11 | Exit | 4 |
| Switch.cs:70:13:70:23 | After case ...: [match] | Switch.cs:71:17:71:22 | break; | 4 |
| Switch.cs:70:13:70:23 | After case ...: [no-match] | Switch.cs:72:13:72:20 | case ...: | 2 |
| Switch.cs:72:13:72:20 | After case ...: [match] | Switch.cs:73:17:73:22 | break; | 4 |
| Switch.cs:72:13:72:20 | After case ...: [no-match] | Switch.cs:72:13:72:20 | After case ...: [no-match] | 1 |
| Switch.cs:77:10:77:11 | Entry | Switch.cs:81:13:81:19 | case ...: | 5 |
| Switch.cs:77:10:77:11 | Entry | Switch.cs:81:13:81:19 | case ...: | 7 |
| Switch.cs:77:10:77:11 | Normal Exit | Switch.cs:77:10:77:11 | Exit | 2 |
| Switch.cs:79:9:87:9 | After switch (...) {...} | Switch.cs:88:9:88:21 | return ...; | 4 |
| Switch.cs:81:13:81:19 | After case ...: [match] | Switch.cs:82:17:82:28 | return ...; | 5 |
@@ -1044,11 +1050,11 @@
| Switch.cs:83:13:83:19 | After case ...: [no-match] | Switch.cs:83:13:83:19 | After case ...: [no-match] | 1 |
| Switch.cs:84:21:84:25 | After ... > ... [false] | Switch.cs:86:17:86:28 | return ...; | 5 |
| Switch.cs:84:21:84:25 | After ... > ... [true] | Switch.cs:85:21:85:26 | break; | 3 |
| Switch.cs:91:10:91:11 | Entry | Switch.cs:95:13:95:23 | case ...: | 5 |
| Switch.cs:91:10:91:11 | Entry | Switch.cs:95:13:95:23 | case ...: | 6 |
| Switch.cs:91:10:91:11 | Normal Exit | Switch.cs:91:10:91:11 | Exit | 2 |
| Switch.cs:95:13:95:23 | After case ...: [match] | Switch.cs:96:17:96:28 | return ...; | 5 |
| Switch.cs:95:13:95:23 | After case ...: [no-match] | Switch.cs:98:9:98:21 | return ...; | 5 |
| Switch.cs:101:9:101:10 | Entry | Switch.cs:103:17:103:17 | access to parameter s | 5 |
| Switch.cs:101:9:101:10 | Entry | Switch.cs:103:17:103:17 | access to parameter s | 6 |
| Switch.cs:101:9:101:10 | Normal Exit | Switch.cs:101:9:101:10 | Exit | 2 |
| Switch.cs:103:17:103:17 | After access to parameter s [non-null] | Switch.cs:103:17:103:25 | access to property Length | 2 |
| Switch.cs:103:17:103:17 | After access to parameter s [null] | Switch.cs:103:17:103:17 | After access to parameter s [null] | 1 |
@@ -1058,7 +1064,7 @@
| Switch.cs:106:13:106:19 | After case ...: [match] | Switch.cs:106:21:106:29 | return ...; | 5 |
| Switch.cs:106:13:106:19 | After case ...: [no-match] | Switch.cs:108:9:108:18 | return ...; | 8 |
| Switch.cs:111:17:111:21 | Entry | Switch.cs:111:17:111:21 | Exit | 8 |
| Switch.cs:113:9:113:11 | Entry | Switch.cs:117:13:117:35 | case ...: | 8 |
| Switch.cs:113:9:113:11 | Entry | Switch.cs:117:13:117:35 | case ...: | 9 |
| Switch.cs:113:9:113:11 | Normal Exit | Switch.cs:113:9:113:11 | Exit | 2 |
| Switch.cs:115:9:119:9 | After switch (...) {...} | Switch.cs:120:9:120:18 | return ...; | 7 |
| Switch.cs:117:13:117:35 | After case ...: [match] | Switch.cs:117:25:117:34 | ... == ... | 6 |
@@ -1070,31 +1076,31 @@
| Switch.cs:118:13:118:34 | case ...: | Switch.cs:118:13:118:34 | case ...: | 1 |
| Switch.cs:118:25:118:33 | After ... == ... [false] | Switch.cs:118:25:118:33 | After ... == ... [false] | 1 |
| Switch.cs:118:25:118:33 | After ... == ... [true] | Switch.cs:118:36:118:44 | return ...; | 4 |
| Switch.cs:123:10:123:12 | Entry | Switch.cs:125:24:125:34 | ... => ... | 6 |
| Switch.cs:123:10:123:12 | Entry | Switch.cs:125:24:125:34 | ... => ... | 7 |
| Switch.cs:123:10:123:12 | Normal Exit | Switch.cs:123:10:123:12 | Exit | 2 |
| Switch.cs:125:13:125:48 | After ... switch { ... } [false] | Switch.cs:124:5:127:5 | After {...} | 3 |
| Switch.cs:125:13:125:48 | After ... switch { ... } [true] | Switch.cs:126:13:126:19 | return ...; | 3 |
| Switch.cs:125:24:125:34 | After ... => ... [match] | Switch.cs:125:34:125:34 | access to local variable b | 3 |
| Switch.cs:125:24:125:34 | After ... => ... [no-match] | Switch.cs:125:42:125:46 | false | 5 |
| Switch.cs:129:12:129:14 | Entry | Switch.cs:131:28:131:40 | ... => ... | 7 |
| Switch.cs:129:12:129:14 | Entry | Switch.cs:131:28:131:40 | ... => ... | 8 |
| Switch.cs:131:16:131:66 | After call to method ToString | Switch.cs:129:12:129:14 | Exit | 4 |
| Switch.cs:131:17:131:53 | After ... switch { ... } [non-null] | Switch.cs:131:16:131:66 | call to method ToString | 2 |
| Switch.cs:131:17:131:53 | After ... switch { ... } [null] | Switch.cs:131:17:131:53 | After ... switch { ... } [null] | 1 |
| Switch.cs:131:28:131:40 | After ... => ... [match] | Switch.cs:131:40:131:40 | access to local variable s | 3 |
| Switch.cs:131:28:131:40 | After ... => ... [no-match] | Switch.cs:131:48:131:51 | null | 5 |
| Switch.cs:134:9:134:11 | Entry | Switch.cs:139:13:139:19 | case ...: | 5 |
| Switch.cs:134:9:134:11 | Entry | Switch.cs:139:13:139:19 | case ...: | 6 |
| Switch.cs:134:9:134:11 | Normal Exit | Switch.cs:134:9:134:11 | Exit | 2 |
| Switch.cs:139:13:139:19 | After case ...: [match] | Switch.cs:139:21:139:29 | return ...; | 5 |
| Switch.cs:139:13:139:19 | After case ...: [no-match] | Switch.cs:140:13:140:19 | case ...: | 2 |
| Switch.cs:140:13:140:19 | After case ...: [match] | Switch.cs:140:21:140:29 | return ...; | 5 |
| Switch.cs:140:13:140:19 | After case ...: [no-match] | Switch.cs:138:22:138:31 | return ...; | 9 |
| Switch.cs:144:9:144:11 | Entry | Switch.cs:148:13:148:19 | case ...: | 5 |
| Switch.cs:144:9:144:11 | Entry | Switch.cs:148:13:148:19 | case ...: | 6 |
| Switch.cs:144:9:144:11 | Normal Exit | Switch.cs:144:9:144:11 | Exit | 2 |
| Switch.cs:148:13:148:19 | After case ...: [match] | Switch.cs:148:21:148:29 | return ...; | 5 |
| Switch.cs:148:13:148:19 | After case ...: [no-match] | Switch.cs:150:13:150:19 | case ...: | 2 |
| Switch.cs:150:13:150:19 | After case ...: [match] | Switch.cs:150:21:150:29 | return ...; | 5 |
| Switch.cs:150:13:150:19 | After case ...: [no-match] | Switch.cs:149:22:149:31 | return ...; | 9 |
| Switch.cs:154:10:154:12 | Entry | Switch.cs:156:28:156:38 | ... => ... | 8 |
| Switch.cs:154:10:154:12 | Entry | Switch.cs:156:28:156:38 | ... => ... | 9 |
| Switch.cs:156:17:156:54 | After ... switch { ... } | Switch.cs:157:13:157:13 | access to parameter b | 6 |
| Switch.cs:156:28:156:38 | After ... => ... [match] | Switch.cs:156:36:156:38 | "a" | 3 |
| Switch.cs:156:28:156:38 | After ... => ... [no-match] | Switch.cs:156:41:156:52 | ... => ... | 2 |
@@ -1103,7 +1109,7 @@
| Switch.cs:157:9:160:49 | After if (...) ... | Switch.cs:154:10:154:12 | Exit | 4 |
| Switch.cs:157:13:157:13 | After access to parameter b [false] | Switch.cs:160:13:160:49 | After ...; | 14 |
| Switch.cs:157:13:157:13 | After access to parameter b [true] | Switch.cs:158:13:158:49 | After ...; | 14 |
| Switch.cs:163:10:163:12 | Entry | Switch.cs:167:13:167:19 | case ...: | 5 |
| Switch.cs:163:10:163:12 | Entry | Switch.cs:167:13:167:19 | case ...: | 6 |
| Switch.cs:165:9:177:9 | After switch (...) {...} | Switch.cs:163:10:163:12 | Exit | 4 |
| Switch.cs:167:13:167:19 | After case ...: [match] | Switch.cs:167:18:167:18 | 1 | 2 |
| Switch.cs:167:13:167:19 | After case ...: [no-match] | Switch.cs:168:13:168:19 | case ...: | 2 |
@@ -1113,20 +1119,20 @@
| Switch.cs:171:13:171:19 | After case ...: [match] | Switch.cs:173:17:173:22 | break; | 10 |
| Switch.cs:171:13:171:19 | After case ...: [no-match] | Switch.cs:176:17:176:22 | break; | 11 |
| TypeAccesses.cs:1:7:1:18 | Entry | TypeAccesses.cs:1:7:1:18 | Exit | 11 |
| TypeAccesses.cs:3:10:3:10 | Entry | TypeAccesses.cs:7:13:7:22 | ... is ... | 26 |
| TypeAccesses.cs:3:10:3:10 | Entry | TypeAccesses.cs:7:13:7:22 | ... is ... | 27 |
| TypeAccesses.cs:7:9:7:25 | After if (...) ... | TypeAccesses.cs:3:10:3:10 | Exit | 11 |
| TypeAccesses.cs:7:13:7:22 | After ... is ... [false] | TypeAccesses.cs:7:13:7:22 | After ... is ... [false] | 1 |
| TypeAccesses.cs:7:13:7:22 | [MatchTrue] ... is ... | TypeAccesses.cs:7:25:7:25 | ; | 4 |
| VarDecls.cs:3:7:3:14 | Entry | VarDecls.cs:3:7:3:14 | Exit | 11 |
| VarDecls.cs:5:18:5:19 | Entry | VarDecls.cs:5:18:5:19 | Exit | 36 |
| VarDecls.cs:13:12:13:13 | Entry | VarDecls.cs:13:12:13:13 | Exit | 23 |
| VarDecls.cs:19:7:19:8 | Entry | VarDecls.cs:25:20:25:20 | access to parameter b | 26 |
| VarDecls.cs:5:18:5:19 | Entry | VarDecls.cs:5:18:5:19 | Exit | 37 |
| VarDecls.cs:13:12:13:13 | Entry | VarDecls.cs:13:12:13:13 | Exit | 24 |
| VarDecls.cs:19:7:19:8 | Entry | VarDecls.cs:25:20:25:20 | access to parameter b | 27 |
| VarDecls.cs:25:20:25:20 | After access to parameter b [false] | VarDecls.cs:25:28:25:28 | access to local variable y | 2 |
| VarDecls.cs:25:20:25:20 | After access to parameter b [true] | VarDecls.cs:25:24:25:24 | access to local variable x | 2 |
| VarDecls.cs:25:20:25:28 | After ... ? ... : ... | VarDecls.cs:19:7:19:8 | Exit | 4 |
| VarDecls.cs:28:11:28:11 | Entry | VarDecls.cs:28:11:28:11 | Exit | 11 |
| VarDecls.cs:28:41:28:47 | Entry | VarDecls.cs:28:41:28:47 | Exit | 4 |
| cflow.cs:5:17:5:20 | Entry | cflow.cs:11:13:11:17 | ... > ... | 30 |
| cflow.cs:5:17:5:20 | Entry | cflow.cs:11:13:11:17 | ... > ... | 31 |
| cflow.cs:11:9:12:49 | After if (...) ... | cflow.cs:14:9:17:9 | while (...) ... | 2 |
| cflow.cs:11:13:11:17 | After ... > ... [false] | cflow.cs:11:13:11:17 | After ... > ... [false] | 1 |
| cflow.cs:11:13:11:17 | After ... > ... [true] | cflow.cs:12:13:12:49 | After ...; | 7 |
@@ -1151,7 +1157,7 @@
| cflow.cs:30:18:33:37 | After if (...) ... | cflow.cs:30:18:33:37 | After if (...) ... | 1 |
| cflow.cs:30:22:30:31 | After ... == ... [false] | cflow.cs:33:17:33:37 | After ...; | 7 |
| cflow.cs:30:22:30:31 | After ... == ... [true] | cflow.cs:31:17:31:42 | After ...; | 7 |
| cflow.cs:37:17:37:22 | Entry | cflow.cs:41:13:41:19 | case ...: | 5 |
| cflow.cs:37:17:37:22 | Entry | cflow.cs:41:13:41:19 | case ...: | 6 |
| cflow.cs:37:17:37:22 | Exit | cflow.cs:37:17:37:22 | Exit | 1 |
| cflow.cs:39:9:50:9 | After switch (...) {...} | cflow.cs:53:13:53:20 | case ...: | 4 |
| cflow.cs:41:13:41:19 | After case ...: [match] | cflow.cs:43:17:43:28 | goto case ...; | 11 |
@@ -1168,21 +1174,21 @@
| cflow.cs:62:13:62:19 | After case ...: [no-match] | cflow.cs:62:13:62:19 | After case ...: [no-match] | 1 |
| cflow.cs:63:23:63:33 | After ... == ... [false] | cflow.cs:37:17:37:22 | Exceptional Exit | 8 |
| cflow.cs:63:23:63:33 | After ... == ... [true] | cflow.cs:65:17:65:22 | break; | 5 |
| cflow.cs:70:18:70:18 | Entry | cflow.cs:72:13:72:21 | ... == ... | 7 |
| cflow.cs:70:18:70:18 | Entry | cflow.cs:72:13:72:21 | ... == ... | 8 |
| cflow.cs:70:18:70:18 | Normal Exit | cflow.cs:70:18:70:18 | Exit | 2 |
| cflow.cs:72:13:72:21 | After ... == ... [false] | cflow.cs:74:13:74:24 | ... > ... | 10 |
| cflow.cs:72:13:72:21 | After ... == ... [true] | cflow.cs:73:13:73:19 | return ...; | 3 |
| cflow.cs:74:9:81:9 | After if (...) ... | cflow.cs:71:5:82:5 | After {...} | 2 |
| cflow.cs:74:13:74:24 | After ... > ... [false] | cflow.cs:79:9:81:9 | After {...} | 9 |
| cflow.cs:74:13:74:24 | After ... > ... [true] | cflow.cs:75:9:77:9 | After {...} | 9 |
| cflow.cs:84:18:84:19 | Entry | cflow.cs:86:13:86:21 | ... != ... | 8 |
| cflow.cs:84:18:84:19 | Entry | cflow.cs:86:13:86:21 | ... != ... | 9 |
| cflow.cs:86:9:87:33 | After if (...) ... | cflow.cs:84:18:84:19 | Exit | 4 |
| cflow.cs:86:13:86:21 | After ... != ... [false] | cflow.cs:86:13:86:21 | After ... != ... [false] | 1 |
| cflow.cs:86:13:86:21 | After ... != ... [true] | cflow.cs:86:26:86:37 | ... > ... | 8 |
| cflow.cs:86:13:86:37 | After ... && ... [false] | cflow.cs:86:13:86:37 | After ... && ... [false] | 1 |
| cflow.cs:86:26:86:37 | After ... > ... [false] | cflow.cs:86:26:86:37 | After ... > ... [false] | 1 |
| cflow.cs:86:26:86:37 | After ... > ... [true] | cflow.cs:87:13:87:33 | After ...; | 8 |
| cflow.cs:90:18:90:19 | Entry | cflow.cs:92:13:92:27 | call to method Equals | 7 |
| cflow.cs:90:18:90:19 | Entry | cflow.cs:92:13:92:27 | call to method Equals | 8 |
| cflow.cs:90:18:90:19 | Exit | cflow.cs:90:18:90:19 | Exit | 1 |
| cflow.cs:92:13:92:27 | After call to method Equals [false] | cflow.cs:96:13:96:25 | ... != ... | 16 |
| cflow.cs:92:13:92:27 | After call to method Equals [true] | cflow.cs:90:18:90:19 | Exceptional Exit | 8 |
@@ -1195,22 +1201,22 @@
| cflow.cs:102:9:103:36 | After if (...) ... | cflow.cs:90:18:90:19 | Normal Exit | 3 |
| cflow.cs:102:13:102:29 | After ... != ... [false] | cflow.cs:102:13:102:29 | After ... != ... [false] | 1 |
| cflow.cs:102:13:102:29 | After ... != ... [true] | cflow.cs:103:13:103:36 | After ...; | 10 |
| cflow.cs:106:18:106:19 | Entry | cflow.cs:108:13:108:21 | ... != ... | 7 |
| cflow.cs:106:18:106:19 | Entry | cflow.cs:108:13:108:21 | ... != ... | 8 |
| cflow.cs:108:13:108:21 | After ... != ... [false] | cflow.cs:106:18:106:19 | Exit | 11 |
| cflow.cs:108:13:108:21 | After ... != ... [true] | cflow.cs:110:13:113:13 | while (...) ... | 3 |
| cflow.cs:110:13:113:13 | [LoopHeader] while (...) ... | cflow.cs:111:13:113:13 | After {...} | 11 |
| cflow.cs:119:20:119:21 | Entry | cflow.cs:119:20:119:21 | Exit | 25 |
| cflow.cs:119:20:119:21 | Entry | cflow.cs:119:20:119:21 | Exit | 26 |
| cflow.cs:127:19:127:21 | Entry | cflow.cs:127:32:127:44 | ... == ... | 11 |
| cflow.cs:127:32:127:44 | After ... == ... [false] | cflow.cs:127:53:127:57 | After access to field Field | 5 |
| cflow.cs:127:32:127:44 | After ... == ... [true] | cflow.cs:127:48:127:49 | "" | 2 |
| cflow.cs:127:32:127:57 | After ... ? ... : ... | cflow.cs:127:19:127:21 | Exit | 4 |
| cflow.cs:127:62:127:64 | Entry | cflow.cs:127:62:127:64 | Exit | 15 |
| cflow.cs:129:5:129:15 | Entry | cflow.cs:129:5:129:15 | Exit | 22 |
| cflow.cs:134:5:134:15 | Entry | cflow.cs:134:5:134:15 | Exit | 15 |
| cflow.cs:127:62:127:64 | Entry | cflow.cs:127:62:127:64 | Exit | 16 |
| cflow.cs:129:5:129:15 | Entry | cflow.cs:129:5:129:15 | Exit | 23 |
| cflow.cs:134:5:134:15 | Entry | cflow.cs:134:5:134:15 | Exit | 16 |
| cflow.cs:136:12:136:22 | Entry | cflow.cs:136:12:136:22 | Exit | 12 |
| cflow.cs:138:40:138:40 | Entry | cflow.cs:138:40:138:40 | Exit | 13 |
| cflow.cs:144:33:144:35 | Entry | cflow.cs:144:33:144:35 | Exit | 14 |
| cflow.cs:144:56:144:58 | Entry | cflow.cs:144:56:144:58 | Exit | 4 |
| cflow.cs:138:40:138:40 | Entry | cflow.cs:138:40:138:40 | Exit | 15 |
| cflow.cs:144:33:144:35 | Entry | cflow.cs:144:33:144:35 | Exit | 15 |
| cflow.cs:144:56:144:58 | Entry | cflow.cs:144:56:144:58 | Exit | 6 |
| cflow.cs:146:10:146:12 | Entry | cflow.cs:149:9:150:33 | for (...;...;...) ... | 10 |
| cflow.cs:149:16:149:21 | After ... < ... [false] | cflow.cs:152:9:157:9 | for (...;...;...) ... | 3 |
| cflow.cs:149:16:149:21 | After ... < ... [true] | cflow.cs:149:24:149:26 | After ++... | 12 |
@@ -1228,8 +1234,8 @@
| cflow.cs:173:32:173:41 | After ... < ... [true] | cflow.cs:173:49:173:51 | After ...++ | 22 |
| cflow.cs:173:32:173:41 | Before ... < ... | cflow.cs:173:32:173:41 | ... < ... | 8 |
| cflow.cs:179:10:179:16 | Entry | cflow.cs:179:10:179:16 | Exit | 19 |
| cflow.cs:181:28:181:37 | Entry | cflow.cs:181:28:181:37 | Exit | 8 |
| cflow.cs:182:28:182:61 | Entry | cflow.cs:182:28:182:61 | Exit | 11 |
| cflow.cs:181:28:181:37 | Entry | cflow.cs:181:28:181:37 | Exit | 9 |
| cflow.cs:182:28:182:61 | Entry | cflow.cs:182:28:182:61 | Exit | 12 |
| cflow.cs:185:10:185:18 | Entry | cflow.cs:187:13:187:18 | ... == ... | 9 |
| cflow.cs:187:9:190:52 | After if (...) ... | cflow.cs:185:10:185:18 | Exit | 4 |
| cflow.cs:187:13:187:18 | After ... == ... [false] | cflow.cs:187:23:187:28 | ... == ... | 5 |
@@ -1306,15 +1312,15 @@
| cflow.cs:264:25:264:30 | Before ... < ... | cflow.cs:264:25:264:30 | ... < ... | 4 |
| cflow.cs:268:9:276:9 | After try {...} ... | cflow.cs:262:5:277:5 | After {...} | 2 |
| cflow.cs:282:5:282:18 | Entry | cflow.cs:282:5:282:18 | Exit | 11 |
| cflow.cs:284:5:284:18 | Entry | cflow.cs:284:5:284:18 | Exit | 7 |
| cflow.cs:286:5:286:18 | Entry | cflow.cs:286:5:286:18 | Exit | 11 |
| cflow.cs:284:5:284:18 | Entry | cflow.cs:284:5:284:18 | Exit | 8 |
| cflow.cs:286:5:286:18 | Entry | cflow.cs:286:5:286:18 | Exit | 12 |
| cflow.cs:289:7:289:18 | Entry | cflow.cs:289:7:289:18 | Exit | 11 |
| cflow.cs:291:12:291:12 | Entry | cflow.cs:291:12:291:12 | Exit | 8 |
| cflow.cs:296:5:296:25 | Entry | cflow.cs:296:5:296:25 | Exit | 11 |
| cflow.cs:298:10:298:10 | Entry | cflow.cs:300:46:300:50 | ... > ... | 11 |
| cflow.cs:291:12:291:12 | Entry | cflow.cs:291:12:291:12 | Exit | 9 |
| cflow.cs:296:5:296:25 | Entry | cflow.cs:296:5:296:25 | Exit | 14 |
| cflow.cs:298:10:298:10 | Entry | cflow.cs:300:46:300:50 | ... > ... | 14 |
| cflow.cs:300:44:300:64 | After ... && ... | cflow.cs:298:10:298:10 | Exit | 8 |
| cflow.cs:300:46:300:50 | After ... > ... [false] | cflow.cs:300:56:300:64 | After ... != ... | 7 |
| cflow.cs:300:46:300:50 | After ... > ... [true] | cflow.cs:300:44:300:51 | After !... [false] | 2 |
| cflow.cs:304:7:304:18 | Entry | cflow.cs:304:7:304:18 | Exit | 11 |
| cflow.cs:306:60:310:5 | Entry | cflow.cs:306:60:310:5 | Exit | 4 |
| cflow.cs:306:60:310:5 | Entry | cflow.cs:306:60:310:5 | Exit | 14 |
| cflow.cs:306:60:310:5 | Entry | cflow.cs:306:60:310:5 | Exit | 16 |

View File

@@ -260,6 +260,10 @@ conditionBlock
| Conditions.cs:143:10:143:12 | Entry | Conditions.cs:145:17:145:17 | After access to parameter b [true] | true |
| Conditions.cs:145:17:145:29 | After ... ? ... : ... | Conditions.cs:146:13:146:13 | After access to parameter b [false] | false |
| Conditions.cs:145:17:145:29 | After ... ? ... : ... | Conditions.cs:146:13:146:13 | After access to parameter b [true] | true |
| DefaultParam.cs:3:12:3:13 | Entry | DefaultParam.cs:3:30:3:30 | After s [match] | true |
| DefaultParam.cs:3:12:3:13 | Entry | DefaultParam.cs:3:30:3:30 | After s [no-match] | false |
| DefaultParam.cs:3:42:3:42 | i | DefaultParam.cs:3:42:3:42 | After i [match] | true |
| DefaultParam.cs:3:42:3:42 | i | DefaultParam.cs:3:42:3:42 | After i [no-match] | false |
| ExitMethods.cs:38:10:38:11 | Entry | ExitMethods.cs:44:9:47:9 | After catch (...) {...} [match] | true |
| ExitMethods.cs:38:10:38:11 | Entry | ExitMethods.cs:44:9:47:9 | After catch (...) {...} [no-match] | false |
| ExitMethods.cs:38:10:38:11 | Entry | ExitMethods.cs:48:9:51:9 | After catch (...) {...} [match] | false |

View File

@@ -2,10 +2,16 @@
| AccessorCalls.cs:1:7:1:19 | call to method <object initializer> | AccessorCalls.cs:1:7:1:19 | this access |
| AccessorCalls.cs:1:7:1:19 | this access | AccessorCalls.cs:1:7:1:19 | this access |
| AccessorCalls.cs:1:7:1:19 | {...} | AccessorCalls.cs:1:7:1:19 | {...} |
| AccessorCalls.cs:5:18:5:18 | i | AccessorCalls.cs:5:18:5:18 | i |
| AccessorCalls.cs:5:18:5:18 | i | AccessorCalls.cs:5:18:5:18 | i |
| AccessorCalls.cs:5:30:5:30 | access to parameter i | AccessorCalls.cs:5:30:5:30 | access to parameter i |
| AccessorCalls.cs:5:33:5:35 | value | AccessorCalls.cs:5:33:5:35 | value |
| AccessorCalls.cs:5:37:5:39 | {...} | AccessorCalls.cs:5:37:5:39 | {...} |
| AccessorCalls.cs:7:32:7:34 | value | AccessorCalls.cs:7:32:7:34 | value |
| AccessorCalls.cs:7:36:7:38 | {...} | AccessorCalls.cs:7:36:7:38 | {...} |
| AccessorCalls.cs:7:40:7:45 | value | AccessorCalls.cs:7:40:7:45 | value |
| AccessorCalls.cs:7:47:7:49 | {...} | AccessorCalls.cs:7:47:7:49 | {...} |
| AccessorCalls.cs:10:26:10:26 | e | AccessorCalls.cs:10:26:10:26 | e |
| AccessorCalls.cs:11:5:17:5 | {...} | AccessorCalls.cs:11:5:17:5 | {...} |
| AccessorCalls.cs:12:9:12:12 | this access | AccessorCalls.cs:12:9:12:12 | this access |
| AccessorCalls.cs:12:9:12:18 | access to field Field | AccessorCalls.cs:12:9:12:12 | this access |
@@ -37,6 +43,7 @@
| AccessorCalls.cs:16:9:16:23 | ... -= ... | AccessorCalls.cs:16:9:16:12 | this access |
| AccessorCalls.cs:16:9:16:24 | ...; | AccessorCalls.cs:16:9:16:24 | ...; |
| AccessorCalls.cs:16:23:16:23 | access to parameter e | AccessorCalls.cs:16:23:16:23 | access to parameter e |
| AccessorCalls.cs:19:26:19:26 | e | AccessorCalls.cs:19:26:19:26 | e |
| AccessorCalls.cs:20:5:26:5 | {...} | AccessorCalls.cs:20:5:26:5 | {...} |
| AccessorCalls.cs:21:9:21:12 | this access | AccessorCalls.cs:21:9:21:12 | this access |
| AccessorCalls.cs:21:9:21:14 | access to field x | AccessorCalls.cs:21:9:21:12 | this access |
@@ -155,6 +162,7 @@
| AccessorCalls.cs:53:22:53:27 | access to field x | AccessorCalls.cs:53:22:53:25 | this access |
| AccessorCalls.cs:53:22:53:30 | access to indexer | AccessorCalls.cs:53:22:53:25 | this access |
| AccessorCalls.cs:53:29:53:29 | 0 | AccessorCalls.cs:53:29:53:29 | 0 |
| AccessorCalls.cs:56:17:56:17 | i | AccessorCalls.cs:56:17:56:17 | i |
| AccessorCalls.cs:57:5:59:5 | {...} | AccessorCalls.cs:57:5:59:5 | {...} |
| AccessorCalls.cs:58:9:58:45 | (..., ...) | AccessorCalls.cs:58:10:58:13 | this access |
| AccessorCalls.cs:58:9:58:85 | ... = ... | AccessorCalls.cs:58:10:58:13 | this access |
@@ -178,6 +186,7 @@
| AccessorCalls.cs:58:77:58:80 | this access | AccessorCalls.cs:58:77:58:80 | this access |
| AccessorCalls.cs:58:77:58:83 | access to indexer | AccessorCalls.cs:58:77:58:80 | this access |
| AccessorCalls.cs:58:82:58:82 | 1 | AccessorCalls.cs:58:82:58:82 | 1 |
| AccessorCalls.cs:61:17:61:17 | i | AccessorCalls.cs:61:17:61:17 | i |
| AccessorCalls.cs:62:5:64:5 | {...} | AccessorCalls.cs:62:5:64:5 | {...} |
| AccessorCalls.cs:63:9:63:51 | (..., ...) | AccessorCalls.cs:63:10:63:13 | this access |
| AccessorCalls.cs:63:9:63:97 | ... = ... | AccessorCalls.cs:63:10:63:13 | this access |
@@ -207,6 +216,9 @@
| AccessorCalls.cs:63:87:63:92 | access to field x | AccessorCalls.cs:63:87:63:90 | this access |
| AccessorCalls.cs:63:87:63:95 | access to indexer | AccessorCalls.cs:63:87:63:90 | this access |
| AccessorCalls.cs:63:94:63:94 | 1 | AccessorCalls.cs:63:94:63:94 | 1 |
| AccessorCalls.cs:66:20:66:20 | o | AccessorCalls.cs:66:20:66:20 | o |
| AccessorCalls.cs:66:27:66:27 | i | AccessorCalls.cs:66:27:66:27 | i |
| AccessorCalls.cs:66:43:66:43 | e | AccessorCalls.cs:66:43:66:43 | e |
| AccessorCalls.cs:67:5:74:5 | {...} | AccessorCalls.cs:67:5:74:5 | {...} |
| AccessorCalls.cs:68:9:68:22 | ... ...; | AccessorCalls.cs:68:9:68:22 | ... ...; |
| AccessorCalls.cs:68:17:68:17 | access to local variable d | AccessorCalls.cs:68:17:68:17 | access to local variable d |
@@ -285,6 +297,7 @@
| Assert.cs:5:7:5:17 | call to method <object initializer> | Assert.cs:5:7:5:17 | this access |
| Assert.cs:5:7:5:17 | this access | Assert.cs:5:7:5:17 | this access |
| Assert.cs:5:7:5:17 | {...} | Assert.cs:5:7:5:17 | {...} |
| Assert.cs:7:18:7:18 | b | Assert.cs:7:18:7:18 | b |
| 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:16 | access to local variable s | Assert.cs:9:16:9:16 | access to local variable s |
@@ -302,6 +315,7 @@
| Assert.cs:11:9:11:36 | ...; | Assert.cs:11:9:11:36 | ...; |
| Assert.cs:11:27:11:27 | access to local variable s | Assert.cs:11:27:11:27 | access to local variable s |
| Assert.cs:11:27:11:34 | access to property Length | Assert.cs:11:27:11:27 | access to local variable s |
| Assert.cs:14:18:14:18 | b | Assert.cs:14:18:14:18 | b |
| 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:16 | access to local variable s | Assert.cs:16:16:16:16 | access to local variable s |
@@ -317,6 +331,7 @@
| Assert.cs:18:9:18:36 | ...; | Assert.cs:18:9:18:36 | ...; |
| Assert.cs:18:27:18:27 | access to local variable s | Assert.cs:18:27:18:27 | access to local variable s |
| Assert.cs:18:27:18:34 | access to property Length | Assert.cs:18:27:18:27 | access to local variable s |
| Assert.cs:21:18:21:18 | b | Assert.cs:21:18:21:18 | b |
| 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:16 | access to local variable s | Assert.cs:23:16:23:16 | access to local variable s |
@@ -332,6 +347,7 @@
| Assert.cs:25:9:25:36 | ...; | Assert.cs:25:9:25:36 | ...; |
| Assert.cs:25:27:25:27 | access to local variable s | Assert.cs:25:27:25:27 | access to local variable s |
| Assert.cs:25:27:25:34 | access to property Length | Assert.cs:25:27:25:27 | access to local variable s |
| Assert.cs:28:18:28:18 | b | Assert.cs:28:18:28:18 | b |
| 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:16 | access to local variable s | Assert.cs:30:16:30:16 | access to local variable s |
@@ -349,6 +365,7 @@
| Assert.cs:32:9:32:36 | ...; | Assert.cs:32:9:32:36 | ...; |
| Assert.cs:32:27:32:27 | access to local variable s | Assert.cs:32:27:32:27 | access to local variable s |
| Assert.cs:32:27:32:34 | access to property Length | Assert.cs:32:27:32:27 | access to local variable s |
| Assert.cs:35:18:35:18 | b | Assert.cs:35:18:35:18 | b |
| 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:16 | access to local variable s | Assert.cs:37:16:37:16 | access to local variable s |
@@ -366,6 +383,7 @@
| Assert.cs:39:9:39:36 | ...; | Assert.cs:39:9:39:36 | ...; |
| Assert.cs:39:27:39:27 | access to local variable s | Assert.cs:39:27:39:27 | access to local variable s |
| Assert.cs:39:27:39:34 | access to property Length | Assert.cs:39:27:39:27 | access to local variable s |
| Assert.cs:42:18:42:18 | b | Assert.cs:42:18:42:18 | b |
| 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:16 | access to local variable s | Assert.cs:44:16:44:16 | access to local variable s |
@@ -383,6 +401,7 @@
| Assert.cs:46:9:46:36 | ...; | Assert.cs:46:9:46:36 | ...; |
| Assert.cs:46:27:46:27 | access to local variable s | Assert.cs:46:27:46:27 | access to local variable s |
| Assert.cs:46:27:46:34 | access to property Length | Assert.cs:46:27:46:27 | access to local variable s |
| Assert.cs:49:18:49:18 | b | Assert.cs:49:18:49:18 | b |
| 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:16 | access to local variable s | Assert.cs:51:16:51:16 | access to local variable s |
@@ -400,6 +419,7 @@
| Assert.cs:53:9:53:36 | ...; | Assert.cs:53:9:53:36 | ...; |
| Assert.cs:53:27:53:27 | access to local variable s | Assert.cs:53:27:53:27 | access to local variable s |
| Assert.cs:53:27:53:34 | access to property Length | Assert.cs:53:27:53:27 | access to local variable s |
| Assert.cs:56:18:56:18 | b | Assert.cs:56:18:56:18 | b |
| 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:16 | access to local variable s | Assert.cs:58:16:58:16 | access to local variable s |
@@ -419,6 +439,7 @@
| Assert.cs:60:9:60:36 | ...; | Assert.cs:60:9:60:36 | ...; |
| Assert.cs:60:27:60:27 | access to local variable s | Assert.cs:60:27:60:27 | access to local variable s |
| Assert.cs:60:27:60:34 | access to property Length | Assert.cs:60:27:60:27 | access to local variable s |
| Assert.cs:63:18:63:18 | b | Assert.cs:63:18:63:18 | b |
| 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:16 | access to local variable s | Assert.cs:65:16:65:16 | access to local variable s |
@@ -438,6 +459,7 @@
| Assert.cs:67:9:67:36 | ...; | Assert.cs:67:9:67:36 | ...; |
| Assert.cs:67:27:67:27 | access to local variable s | Assert.cs:67:27:67:27 | access to local variable s |
| Assert.cs:67:27:67:34 | access to property Length | Assert.cs:67:27:67:27 | access to local variable s |
| Assert.cs:70:19:70:19 | b | Assert.cs:70:19:70:19 | b |
| 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:16 | access to local variable s | Assert.cs:72:16:72:16 | access to local variable s |
@@ -457,6 +479,7 @@
| Assert.cs:74:9:74:36 | ...; | Assert.cs:74:9:74:36 | ...; |
| Assert.cs:74:27:74:27 | access to local variable s | Assert.cs:74:27:74:27 | access to local variable s |
| Assert.cs:74:27:74:34 | access to property Length | Assert.cs:74:27:74:27 | access to local variable s |
| Assert.cs:77:19:77:19 | b | Assert.cs:77:19:77:19 | b |
| 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:16 | access to local variable s | Assert.cs:79:16:79:16 | access to local variable s |
@@ -476,6 +499,7 @@
| Assert.cs:81:9:81:36 | ...; | Assert.cs:81:9:81:36 | ...; |
| Assert.cs:81:27:81:27 | access to local variable s | Assert.cs:81:27:81:27 | access to local variable s |
| Assert.cs:81:27:81:34 | access to property Length | Assert.cs:81:27:81:27 | access to local variable s |
| Assert.cs:84:19:84:19 | b | Assert.cs:84:19:84:19 | b |
| 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:16 | access to local variable s | Assert.cs:86:16:86:16 | access to local variable s |
@@ -659,7 +683,13 @@
| Assert.cs:128:9:128:36 | ...; | Assert.cs:128:9:128:36 | ...; |
| Assert.cs:128:27:128:27 | access to local variable s | Assert.cs:128:27:128:27 | access to local variable s |
| Assert.cs:128:27:128:34 | access to property Length | Assert.cs:128:27:128:27 | access to local variable s |
| Assert.cs:132:74:132:83 | condition1 | Assert.cs:132:74:132:83 | condition1 |
| Assert.cs:133:73:133:82 | condition2 | Assert.cs:133:73:133:82 | condition2 |
| Assert.cs:134:17:134:28 | nonCondition | Assert.cs:134:17:134:28 | nonCondition |
| Assert.cs:135:5:136:5 | {...} | Assert.cs:135:5:136:5 | {...} |
| Assert.cs:138:19:138:20 | b1 | Assert.cs:138:19:138:20 | b1 |
| Assert.cs:138:28:138:29 | b2 | Assert.cs:138:28:138:29 | b2 |
| Assert.cs:138:37:138:38 | b3 | Assert.cs:138:37:138:38 | b3 |
| Assert.cs:139:5:142:5 | {...} | Assert.cs:139:5:142:5 | {...} |
| Assert.cs:140:9:140:35 | call to method AssertTrueFalse | Assert.cs:140:9:140:35 | this access |
| Assert.cs:140:9:140:35 | this access | Assert.cs:140:9:140:35 | this access |
@@ -703,15 +733,23 @@
| Assignments.cs:14:9:14:35 | ... += ... | Assignments.cs:14:9:14:13 | this access |
| Assignments.cs:14:9:14:36 | ...; | Assignments.cs:14:9:14:36 | ...; |
| Assignments.cs:14:18:14:35 | (...) => ... | Assignments.cs:14:18:14:35 | (...) => ... |
| Assignments.cs:14:19:14:24 | sender | Assignments.cs:14:19:14:24 | sender |
| Assignments.cs:14:27:14:27 | e | Assignments.cs:14:27:14:27 | e |
| Assignments.cs:14:33:14:35 | {...} | Assignments.cs:14:33:14:35 | {...} |
| Assignments.cs:17:54:17:54 | x | Assignments.cs:17:54:17:54 | x |
| Assignments.cs:17:69:17:69 | y | Assignments.cs:17:69:17:69 | y |
| Assignments.cs:18:5:20:5 | {...} | Assignments.cs:18:5:20:5 | {...} |
| Assignments.cs:19:9:19:17 | return ...; | Assignments.cs:19:16:19:16 | access to parameter x |
| Assignments.cs:19:16:19:16 | access to parameter x | Assignments.cs:19:16:19:16 | access to parameter x |
| Assignments.cs:27:33:27:33 | x | Assignments.cs:27:33:27:33 | x |
| Assignments.cs:28:5:30:5 | {...} | Assignments.cs:28:5:30:5 | {...} |
| Assignments.cs:29:9:29:9 | access to parameter x | Assignments.cs:29:9:29:9 | access to parameter x |
| Assignments.cs:29:9:29:14 | ... = ... | Assignments.cs:29:9:29:9 | access to parameter x |
| Assignments.cs:29:9:29:15 | ...; | Assignments.cs:29:9:29:15 | ...; |
| Assignments.cs:29:13:29:14 | 42 | Assignments.cs:29:13:29:14 | 42 |
| Assignments.cs:32:32:32:32 | x | Assignments.cs:32:32:32:32 | x |
| Assignments.cs:32:42:32:42 | o | Assignments.cs:32:42:32:42 | o |
| Assignments.cs:32:56:32:56 | y | Assignments.cs:32:56:32:56 | y |
| Assignments.cs:33:5:36:5 | {...} | Assignments.cs:33:5:36:5 | {...} |
| Assignments.cs:34:9:34:9 | access to parameter x | Assignments.cs:34:9:34:9 | access to parameter x |
| Assignments.cs:34:9:34:14 | ... = ... | Assignments.cs:34:9:34:9 | access to parameter x |
@@ -752,6 +790,7 @@
| BreakInTry.cs:1:7:1:16 | call to method <object initializer> | BreakInTry.cs:1:7:1:16 | this access |
| BreakInTry.cs:1:7:1:16 | this access | BreakInTry.cs:1:7:1:16 | this access |
| BreakInTry.cs:1:7:1:16 | {...} | BreakInTry.cs:1:7:1:16 | {...} |
| BreakInTry.cs:3:22:3:25 | args | BreakInTry.cs:3:22:3:25 | args |
| BreakInTry.cs:4:5:18:5 | {...} | BreakInTry.cs:4:5:18:5 | {...} |
| BreakInTry.cs:5:9:17:9 | try {...} ... | BreakInTry.cs:5:9:17:9 | try {...} ... |
| BreakInTry.cs:6:9:12:9 | {...} | BreakInTry.cs:6:9:12:9 | {...} |
@@ -770,6 +809,7 @@
| BreakInTry.cs:15:17:15:28 | ... == ... | BreakInTry.cs:15:17:15:20 | access to parameter args |
| BreakInTry.cs:15:25:15:28 | null | BreakInTry.cs:15:25:15:28 | null |
| BreakInTry.cs:16:17:16:17 | ; | BreakInTry.cs:16:17:16:17 | ; |
| BreakInTry.cs:20:22:20:25 | args | BreakInTry.cs:20:22:20:25 | args |
| BreakInTry.cs:21:5:36:5 | {...} | BreakInTry.cs:21:5:36:5 | {...} |
| BreakInTry.cs:22:9:34:9 | foreach (... ... in ...) ... | BreakInTry.cs:22:9:34:9 | foreach (... ... in ...) ... |
| BreakInTry.cs:22:22:22:24 | String arg | BreakInTry.cs:22:22:22:24 | String arg |
@@ -789,6 +829,7 @@
| BreakInTry.cs:31:29:31:32 | null | BreakInTry.cs:31:29:31:32 | null |
| BreakInTry.cs:32:21:32:21 | ; | BreakInTry.cs:32:21:32:21 | ; |
| BreakInTry.cs:35:7:35:7 | ; | BreakInTry.cs:35:7:35:7 | ; |
| BreakInTry.cs:38:22:38:25 | args | BreakInTry.cs:38:22:38:25 | args |
| BreakInTry.cs:39:5:54:5 | {...} | BreakInTry.cs:39:5:54:5 | {...} |
| BreakInTry.cs:40:9:52:9 | try {...} ... | BreakInTry.cs:40:9:52:9 | try {...} ... |
| BreakInTry.cs:41:9:44:9 | {...} | BreakInTry.cs:41:9:44:9 | {...} |
@@ -808,6 +849,7 @@
| BreakInTry.cs:49:28:49:31 | null | BreakInTry.cs:49:28:49:31 | null |
| BreakInTry.cs:50:21:50:26 | break; | BreakInTry.cs:50:21:50:26 | break; |
| BreakInTry.cs:53:7:53:7 | ; | BreakInTry.cs:53:7:53:7 | ; |
| BreakInTry.cs:56:22:56:25 | args | BreakInTry.cs:56:22:56:25 | args |
| BreakInTry.cs:57:5:71:5 | {...} | BreakInTry.cs:57:5:71:5 | {...} |
| BreakInTry.cs:58:9:70:9 | try {...} ... | BreakInTry.cs:58:9:70:9 | try {...} ... |
| BreakInTry.cs:59:9:62:9 | {...} | BreakInTry.cs:59:9:62:9 | {...} |
@@ -839,6 +881,7 @@
| CompileTimeOperators.cs:16:5:18:5 | {...} | CompileTimeOperators.cs:16:5:18:5 | {...} |
| CompileTimeOperators.cs:17:9:17:27 | return ...; | CompileTimeOperators.cs:17:16:17:26 | typeof(...) |
| CompileTimeOperators.cs:17:16:17:26 | typeof(...) | CompileTimeOperators.cs:17:16:17:26 | typeof(...) |
| CompileTimeOperators.cs:20:23:20:23 | i | CompileTimeOperators.cs:20:23:20:23 | i |
| CompileTimeOperators.cs:21:5:23:5 | {...} | CompileTimeOperators.cs:21:5:23:5 | {...} |
| CompileTimeOperators.cs:22:9:22:25 | return ...; | CompileTimeOperators.cs:22:16:22:24 | nameof(...) |
| CompileTimeOperators.cs:22:16:22:24 | nameof(...) | CompileTimeOperators.cs:22:16:22:24 | nameof(...) |
@@ -865,19 +908,25 @@
| ConditionalAccess.cs:1:7:1:23 | call to method <object initializer> | ConditionalAccess.cs:1:7:1:23 | this access |
| ConditionalAccess.cs:1:7:1:23 | this access | ConditionalAccess.cs:1:7:1:23 | this access |
| ConditionalAccess.cs:1:7:1:23 | {...} | ConditionalAccess.cs:1:7:1:23 | {...} |
| ConditionalAccess.cs:3:20:3:20 | i | ConditionalAccess.cs:3:20:3:20 | i |
| ConditionalAccess.cs:3:26:3:26 | access to parameter i | ConditionalAccess.cs:3:26:3:26 | access to parameter i |
| ConditionalAccess.cs:3:26:3:38 | call to method ToString | ConditionalAccess.cs:3:26:3:26 | access to parameter i |
| ConditionalAccess.cs:3:26:3:49 | call to method ToLower | ConditionalAccess.cs:3:26:3:26 | access to parameter i |
| ConditionalAccess.cs:5:20:5:20 | s | ConditionalAccess.cs:5:20:5:20 | s |
| ConditionalAccess.cs:5:26:5:26 | access to parameter s | ConditionalAccess.cs:5:26:5:26 | access to parameter s |
| ConditionalAccess.cs:5:26:5:34 | access to property Length | ConditionalAccess.cs:5:26:5:26 | access to parameter s |
| ConditionalAccess.cs:7:20:7:21 | s1 | ConditionalAccess.cs:7:20:7:21 | s1 |
| ConditionalAccess.cs:7:31:7:32 | s2 | ConditionalAccess.cs:7:31:7:32 | s2 |
| ConditionalAccess.cs:7:38:7:55 | access to property Length | ConditionalAccess.cs:7:39:7:46 | ... ?? ... |
| 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:45:7:46 | access to parameter s2 | ConditionalAccess.cs:7:45:7:46 | access to parameter s2 |
| ConditionalAccess.cs:9:19:9:19 | s | ConditionalAccess.cs:9:19:9:19 | s |
| 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:33 | access to property Length | 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:38:9:38 | 0 | ConditionalAccess.cs:9:38:9:38 | 0 |
| ConditionalAccess.cs:11:19:11:19 | s | ConditionalAccess.cs:11:19:11:19 | s |
| ConditionalAccess.cs:12:5:17:5 | {...} | ConditionalAccess.cs:12:5:17:5 | {...} |
| ConditionalAccess.cs:13:9:16:21 | if (...) ... | ConditionalAccess.cs:13:9:16:21 | if (...) ... |
| ConditionalAccess.cs:13:13:13:13 | access to parameter s | ConditionalAccess.cs:13:13:13:13 | access to parameter s |
@@ -889,9 +938,12 @@
| ConditionalAccess.cs:14:20:14:20 | 0 | ConditionalAccess.cs:14:20:14:20 | 0 |
| ConditionalAccess.cs:16:13:16:21 | return ...; | ConditionalAccess.cs:16:20:16:20 | 1 |
| ConditionalAccess.cs:16:20:16:20 | 1 | ConditionalAccess.cs:16:20:16:20 | 1 |
| ConditionalAccess.cs:19:22:19:23 | s1 | ConditionalAccess.cs:19:22:19:23 | s1 |
| ConditionalAccess.cs:19:33:19:34 | s2 | ConditionalAccess.cs:19:33:19:34 | s2 |
| ConditionalAccess.cs:19:40:19:41 | access to parameter s1 | ConditionalAccess.cs:19:40:19:41 | access to parameter s1 |
| ConditionalAccess.cs:19:40:19:60 | call to method CommaJoinWith | ConditionalAccess.cs:19:40:19:41 | access to parameter s1 |
| ConditionalAccess.cs:19:58:19:59 | access to parameter s2 | ConditionalAccess.cs:19:58:19:59 | access to parameter s2 |
| ConditionalAccess.cs:21:17:21:17 | i | ConditionalAccess.cs:21:17:21:17 | i |
| ConditionalAccess.cs:22:5:26:5 | {...} | ConditionalAccess.cs:22:5:26:5 | {...} |
| ConditionalAccess.cs:23:9:23:39 | ... ...; | ConditionalAccess.cs:23:9:23:39 | ... ...; |
| ConditionalAccess.cs:23:13:23:13 | access to local variable j | ConditionalAccess.cs:23:13:23:13 | access to local variable j |
@@ -911,9 +963,12 @@
| ConditionalAccess.cs:25:13:25:14 | "" | ConditionalAccess.cs:25:13:25:14 | "" |
| ConditionalAccess.cs:25:13:25:32 | call to method CommaJoinWith | ConditionalAccess.cs:25:13:25:14 | "" |
| ConditionalAccess.cs:25:31:25:31 | access to local variable s | ConditionalAccess.cs:25:31:25:31 | access to local variable s |
| ConditionalAccess.cs:30:22:30:22 | i | ConditionalAccess.cs:30:22:30:22 | i |
| ConditionalAccess.cs:30:28:30:28 | access to parameter i | ConditionalAccess.cs:30:28:30:28 | access to parameter i |
| ConditionalAccess.cs:30:28:30:32 | ... = ... | ConditionalAccess.cs:30:28:30:28 | access to parameter i |
| ConditionalAccess.cs:30:32:30:32 | 0 | ConditionalAccess.cs:30:32:30:32 | 0 |
| ConditionalAccess.cs:32:18:32:18 | b | ConditionalAccess.cs:32:18:32:18 | b |
| ConditionalAccess.cs:32:29:32:29 | i | ConditionalAccess.cs:32:29:32:29 | i |
| ConditionalAccess.cs:33:5:36:5 | {...} | ConditionalAccess.cs:33:5:36:5 | {...} |
| ConditionalAccess.cs:34:9:34:9 | access to parameter i | ConditionalAccess.cs:34:9:34:9 | access to parameter i |
| ConditionalAccess.cs:34:9:34:13 | ... = ... | ConditionalAccess.cs:34:9:34:9 | access to parameter i |
@@ -924,10 +979,14 @@
| ConditionalAccess.cs:35:9:35:24 | call to method Out | ConditionalAccess.cs:35:9:35:12 | this access |
| ConditionalAccess.cs:35:9:35:25 | ...; | ConditionalAccess.cs:35:9:35:25 | ...; |
| ConditionalAccess.cs:35:23:35:23 | access to parameter i | ConditionalAccess.cs:35:23:35:23 | access to parameter i |
| ConditionalAccess.cs:40:21:40:25 | index | ConditionalAccess.cs:40:21:40:25 | index |
| ConditionalAccess.cs:40:21:40:25 | index | ConditionalAccess.cs:40:21:40:25 | index |
| ConditionalAccess.cs:42:13:42:28 | {...} | ConditionalAccess.cs:42:13:42:28 | {...} |
| ConditionalAccess.cs:42:15:42:26 | return ...; | ConditionalAccess.cs:42:22:42:25 | null |
| ConditionalAccess.cs:42:22:42:25 | null | ConditionalAccess.cs:42:22:42:25 | null |
| ConditionalAccess.cs:43:9:43:11 | value | ConditionalAccess.cs:43:9:43:11 | value |
| ConditionalAccess.cs:43:13:43:15 | {...} | ConditionalAccess.cs:43:13:43:15 | {...} |
| ConditionalAccess.cs:46:31:46:32 | ca | ConditionalAccess.cs:46:31:46:32 | ca |
| ConditionalAccess.cs:47:5:55:5 | {...} | ConditionalAccess.cs:47:5:55:5 | {...} |
| ConditionalAccess.cs:48:9:48:10 | access to parameter ca | ConditionalAccess.cs:48:9:48:10 | access to parameter ca |
| ConditionalAccess.cs:48:9:48:20 | access to field IntField | ConditionalAccess.cs:48:9:48:10 | access to parameter ca |
@@ -967,6 +1026,8 @@
| ConditionalAccess.cs:54:9:54:30 | ...; | ConditionalAccess.cs:54:9:54:30 | ...; |
| ConditionalAccess.cs:54:12:54:29 | ... += ... | ConditionalAccess.cs:54:9:54:10 | access to parameter ca |
| ConditionalAccess.cs:54:27:54:29 | "!" | ConditionalAccess.cs:54:27:54:29 | "!" |
| ConditionalAccess.cs:60:52:60:53 | s1 | ConditionalAccess.cs:60:52:60:53 | s1 |
| ConditionalAccess.cs:60:63:60:64 | s2 | ConditionalAccess.cs:60:63:60:64 | s2 |
| ConditionalAccess.cs:60:70:60:71 | access to parameter s1 | ConditionalAccess.cs:60:70:60:71 | access to parameter s1 |
| ConditionalAccess.cs:60:70:60:78 | ... + ... | ConditionalAccess.cs:60:70:60:71 | access to parameter s1 |
| ConditionalAccess.cs:60:70:60:83 | ... + ... | ConditionalAccess.cs:60:70:60:71 | access to parameter s1 |
@@ -976,6 +1037,8 @@
| Conditions.cs:1:7:1:16 | call to method <object initializer> | Conditions.cs:1:7:1:16 | this access |
| Conditions.cs:1:7:1:16 | this access | Conditions.cs:1:7:1:16 | this access |
| Conditions.cs:1:7:1:16 | {...} | Conditions.cs:1:7:1:16 | {...} |
| Conditions.cs:3:26:3:28 | inc | Conditions.cs:3:26:3:28 | inc |
| Conditions.cs:3:39:3:39 | x | Conditions.cs:3:39:3:39 | x |
| Conditions.cs:4:5:9:5 | {...} | Conditions.cs:4:5:9:5 | {...} |
| Conditions.cs:5:9:6:16 | if (...) ... | Conditions.cs:5:9:6:16 | if (...) ... |
| Conditions.cs:5:13:5:15 | access to parameter inc | Conditions.cs:5:13:5:15 | access to parameter inc |
@@ -988,6 +1051,7 @@
| 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 |
| Conditions.cs:8:13:8:16 | ...; | Conditions.cs:8:13:8:16 | ...; |
| Conditions.cs:11:17:11:17 | b | Conditions.cs:11:17:11:17 | b |
| Conditions.cs:12:5:20:5 | {...} | Conditions.cs:12:5:20:5 | {...} |
| Conditions.cs:13:9:13:18 | ... ...; | Conditions.cs:13:9:13:18 | ... ...; |
| Conditions.cs:13:13:13:13 | access to local variable x | Conditions.cs:13:13:13:13 | access to local variable x |
@@ -1010,6 +1074,8 @@
| Conditions.cs:18:17:18:20 | ...; | Conditions.cs:18:17:18:20 | ...; |
| Conditions.cs:19:9:19:17 | return ...; | Conditions.cs:19:16:19:16 | access to local variable x |
| Conditions.cs:19:16:19:16 | access to local variable x | Conditions.cs:19:16:19:16 | access to local variable x |
| Conditions.cs:22:17:22:18 | b1 | Conditions.cs:22:17:22:18 | b1 |
| Conditions.cs:22:26:22:27 | b2 | Conditions.cs:22:26:22:27 | b2 |
| Conditions.cs:23:5:31:5 | {...} | Conditions.cs:23:5:31:5 | {...} |
| Conditions.cs:24:9:24:18 | ... ...; | Conditions.cs:24:9:24:18 | ... ...; |
| Conditions.cs:24:13:24:13 | access to local variable x | Conditions.cs:24:13:24:13 | access to local variable x |
@@ -1029,6 +1095,7 @@
| Conditions.cs:29:13:29:16 | ...; | Conditions.cs:29:13:29:16 | ...; |
| Conditions.cs:30:9:30:17 | return ...; | Conditions.cs:30:16:30:16 | access to local variable x |
| Conditions.cs:30:16:30:16 | access to local variable x | Conditions.cs:30:16:30:16 | access to local variable x |
| Conditions.cs:33:17:33:18 | b1 | Conditions.cs:33:17:33:18 | b1 |
| Conditions.cs:34:5:44:5 | {...} | Conditions.cs:34:5:44:5 | {...} |
| Conditions.cs:35:9:35:18 | ... ...; | Conditions.cs:35:9:35:18 | ... ...; |
| Conditions.cs:35:13:35:13 | access to local variable x | Conditions.cs:35:13:35:13 | access to local variable x |
@@ -1056,6 +1123,8 @@
| Conditions.cs:42:13:42:16 | ...; | Conditions.cs:42:13:42:16 | ...; |
| Conditions.cs:43:9:43:17 | return ...; | Conditions.cs:43:16:43:16 | access to local variable x |
| Conditions.cs:43:16:43:16 | access to local variable x | Conditions.cs:43:16:43:16 | access to local variable x |
| Conditions.cs:46:17:46:17 | b | Conditions.cs:46:17:46:17 | b |
| Conditions.cs:46:24:46:24 | x | Conditions.cs:46:24:46:24 | x |
| Conditions.cs:47:5:55:5 | {...} | Conditions.cs:47:5:55:5 | {...} |
| Conditions.cs:48:9:48:18 | ... ...; | Conditions.cs:48:9:48:18 | ... ...; |
| Conditions.cs:48:13:48:13 | access to local variable y | Conditions.cs:48:13:48:13 | access to local variable y |
@@ -1074,6 +1143,8 @@
| Conditions.cs:52:17:52:20 | ...; | Conditions.cs:52:17:52:20 | ...; |
| Conditions.cs:54:9:54:17 | return ...; | Conditions.cs:54:16:54:16 | access to local variable y |
| Conditions.cs:54:16:54:16 | access to local variable y | Conditions.cs:54:16:54:16 | access to local variable y |
| Conditions.cs:57:17:57:17 | b | Conditions.cs:57:17:57:17 | b |
| Conditions.cs:57:24:57:24 | x | Conditions.cs:57:24:57:24 | x |
| Conditions.cs:58:5:68:5 | {...} | Conditions.cs:58:5:68:5 | {...} |
| Conditions.cs:59:9:59:18 | ... ...; | Conditions.cs:59:9:59:18 | ... ...; |
| Conditions.cs:59:13:59:13 | access to local variable y | Conditions.cs:59:13:59:13 | access to local variable y |
@@ -1097,6 +1168,7 @@
| Conditions.cs:66:13:66:16 | ...; | Conditions.cs:66:13:66:16 | ...; |
| Conditions.cs:67:9:67:17 | return ...; | Conditions.cs:67:16:67:16 | access to local variable y |
| Conditions.cs:67:16:67:16 | access to local variable y | Conditions.cs:67:16:67:16 | access to local variable y |
| Conditions.cs:70:21:70:22 | ss | Conditions.cs:70:21:70:22 | ss |
| Conditions.cs:71:5:84:5 | {...} | Conditions.cs:71:5:84:5 | {...} |
| Conditions.cs:72:9:72:30 | ... ...; | Conditions.cs:72:9:72:30 | ... ...; |
| Conditions.cs:72:13:72:13 | access to local variable b | Conditions.cs:72:13:72:13 | access to local variable b |
@@ -1133,6 +1205,7 @@
| Conditions.cs:82:13:82:16 | ...; | Conditions.cs:82:13:82:16 | ...; |
| Conditions.cs:83:9:83:17 | return ...; | Conditions.cs:83:16:83:16 | access to local variable x |
| Conditions.cs:83:16:83:16 | access to local variable x | Conditions.cs:83:16:83:16 | access to local variable x |
| Conditions.cs:86:21:86:22 | ss | Conditions.cs:86:21:86:22 | ss |
| Conditions.cs:87:5:100:5 | {...} | Conditions.cs:87:5:100:5 | {...} |
| Conditions.cs:88:9:88:30 | ... ...; | Conditions.cs:88:9:88:30 | ... ...; |
| Conditions.cs:88:13:88:13 | access to local variable b | Conditions.cs:88:13:88:13 | access to local variable b |
@@ -1169,6 +1242,7 @@
| Conditions.cs:97:17:97:20 | ...; | Conditions.cs:97:17:97:20 | ...; |
| Conditions.cs:99:9:99:17 | return ...; | Conditions.cs:99:16:99:16 | access to local variable x |
| Conditions.cs:99:16:99:16 | access to local variable x | Conditions.cs:99:16:99:16 | access to local variable x |
| Conditions.cs:102:20:102:20 | b | Conditions.cs:102:20:102:20 | b |
| Conditions.cs:103:5:111:5 | {...} | Conditions.cs:103:5:111:5 | {...} |
| Conditions.cs:104:9:104:29 | ... ...; | Conditions.cs:104:9:104:29 | ... ...; |
| Conditions.cs:104:13:104:13 | access to local variable x | Conditions.cs:104:13:104:13 | access to local variable x |
@@ -1195,6 +1269,7 @@
| Conditions.cs:109:22:109:23 | "" | Conditions.cs:109:22:109:23 | "" |
| Conditions.cs:110:9:110:17 | return ...; | Conditions.cs:110:16:110:16 | access to local variable x |
| Conditions.cs:110:16:110:16 | access to local variable x | Conditions.cs:110:16:110:16 | access to local variable x |
| Conditions.cs:113:22:113:25 | args | Conditions.cs:113:22:113:25 | args |
| Conditions.cs:114:5:124:5 | {...} | Conditions.cs:114:5:124:5 | {...} |
| Conditions.cs:115:9:115:24 | ... ...; | Conditions.cs:115:9:115:24 | ... ...; |
| Conditions.cs:115:16:115:16 | access to local variable s | Conditions.cs:115:16:115:16 | access to local variable s |
@@ -1249,6 +1324,7 @@
| Conditions.cs:137:21:137:26 | this access | Conditions.cs:137:21:137:26 | this access |
| Conditions.cs:137:21:137:37 | call to method ToString | Conditions.cs:137:21:137:26 | this access |
| Conditions.cs:137:21:137:38 | ...; | Conditions.cs:137:21:137:38 | ...; |
| Conditions.cs:143:19:143:19 | b | Conditions.cs:143:19:143:19 | b |
| 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:13 | access to local variable s | Conditions.cs:145:13:145:13 | access to local variable s |
@@ -1275,6 +1351,11 @@
| DefaultParam.cs:1:7:1:18 | call to method <object initializer> | DefaultParam.cs:1:7:1:18 | this access |
| DefaultParam.cs:1:7:1:18 | this access | DefaultParam.cs:1:7:1:18 | this access |
| DefaultParam.cs:1:7:1:18 | {...} | DefaultParam.cs:1:7:1:18 | {...} |
| DefaultParam.cs:3:20:3:20 | b | DefaultParam.cs:3:20:3:20 | b |
| DefaultParam.cs:3:30:3:30 | s | DefaultParam.cs:3:30:3:30 | s |
| DefaultParam.cs:3:34:3:35 | "" | DefaultParam.cs:3:34:3:35 | "" |
| DefaultParam.cs:3:42:3:42 | i | DefaultParam.cs:3:42:3:42 | i |
| DefaultParam.cs:3:46:3:46 | 0 | DefaultParam.cs:3:46:3:46 | 0 |
| DefaultParam.cs:4:5:6:5 | {...} | DefaultParam.cs:4:5:6:5 | {...} |
| DefaultParam.cs:5:9:5:25 | return ...; | DefaultParam.cs:5:16:5:16 | access to parameter b |
| DefaultParam.cs:5:16:5:16 | (...) ... | DefaultParam.cs:5:16:5:16 | access to parameter b |
@@ -1328,11 +1409,13 @@
| ExitMethods.cs:61:5:64:5 | {...} | ExitMethods.cs:61:5:64:5 | {...} |
| ExitMethods.cs:62:9:62:22 | call to method ErrorAlways3 | ExitMethods.cs:62:9:62:22 | call to method ErrorAlways3 |
| ExitMethods.cs:62:9:62:23 | ...; | ExitMethods.cs:62:9:62:23 | ...; |
| ExitMethods.cs:66:33:66:33 | b | ExitMethods.cs:66:33:66:33 | b |
| ExitMethods.cs:67:5:70:5 | {...} | ExitMethods.cs:67:5:70:5 | {...} |
| ExitMethods.cs:68:9:69:34 | if (...) ... | ExitMethods.cs:68:9:69:34 | if (...) ... |
| ExitMethods.cs:68:13:68:13 | access to parameter b | ExitMethods.cs:68:13:68:13 | access to parameter b |
| ExitMethods.cs:69:13:69:34 | throw ...; | ExitMethods.cs:69:19:69:33 | object creation of type Exception |
| ExitMethods.cs:69:19:69:33 | object creation of type Exception | ExitMethods.cs:69:19:69:33 | object creation of type Exception |
| ExitMethods.cs:72:34:72:34 | b | ExitMethods.cs:72:34:72:34 | b |
| ExitMethods.cs:73:5:78:5 | {...} | ExitMethods.cs:73:5:78:5 | {...} |
| ExitMethods.cs:74:9:77:45 | if (...) ... | ExitMethods.cs:74:9:77:45 | if (...) ... |
| ExitMethods.cs:74:13:74:13 | access to parameter b | ExitMethods.cs:74:13:74:13 | access to parameter b |
@@ -1363,6 +1446,7 @@
| ExitMethods.cs:106:5:108:5 | {...} | ExitMethods.cs:106:5:108:5 | {...} |
| ExitMethods.cs:107:9:107:47 | call to method Exit | ExitMethods.cs:107:9:107:47 | call to method Exit |
| ExitMethods.cs:107:9:107:48 | ...; | ExitMethods.cs:107:9:107:48 | ...; |
| ExitMethods.cs:110:31:110:35 | input | ExitMethods.cs:110:31:110:35 | input |
| ExitMethods.cs:111:5:113:5 | {...} | ExitMethods.cs:111:5:113:5 | {...} |
| ExitMethods.cs:112:9:112:77 | return ...; | ExitMethods.cs:112:16:112:76 | ... ? ... : ... |
| ExitMethods.cs:112:16:112:20 | access to parameter input | ExitMethods.cs:112:16:112:20 | access to parameter input |
@@ -1377,6 +1461,7 @@
| ExitMethods.cs:112:41:112:76 | throw ... | ExitMethods.cs:112:69:112:75 | "input" |
| ExitMethods.cs:112:47:112:76 | object creation of type ArgumentException | ExitMethods.cs:112:69:112:75 | "input" |
| ExitMethods.cs:112:69:112:75 | "input" | ExitMethods.cs:112:69:112:75 | "input" |
| ExitMethods.cs:115:43:115:43 | s | ExitMethods.cs:115:43:115:43 | s |
| ExitMethods.cs:116:5:118:5 | {...} | ExitMethods.cs:116:5:118:5 | {...} |
| ExitMethods.cs:117:9:117:39 | return ...; | ExitMethods.cs:117:16:117:38 | ... ? ... : ... |
| ExitMethods.cs:117:16:117:16 | access to parameter s | ExitMethods.cs:117:16:117:16 | access to parameter s |
@@ -1393,6 +1478,7 @@
| ExitMethods.cs:128:9:128:26 | call to method FailingAssertion | ExitMethods.cs:128:9:128:26 | this access |
| ExitMethods.cs:128:9:128:26 | this access | ExitMethods.cs:128:9:128:26 | this access |
| ExitMethods.cs:128:9:128:27 | ...; | ExitMethods.cs:128:9:128:27 | ...; |
| ExitMethods.cs:132:27:132:27 | b | ExitMethods.cs:132:27:132:27 | b |
| ExitMethods.cs:132:33:132:49 | call to method IsFalse | ExitMethods.cs:132:48:132:48 | access to parameter b |
| ExitMethods.cs:132:48:132:48 | access to parameter b | ExitMethods.cs:132:48:132:48 | access to parameter b |
| ExitMethods.cs:135:5:138:5 | {...} | ExitMethods.cs:135:5:138:5 | {...} |
@@ -1400,6 +1486,8 @@
| ExitMethods.cs:136:9:136:25 | this access | ExitMethods.cs:136:9:136:25 | this access |
| ExitMethods.cs:136:9:136:26 | ...; | ExitMethods.cs:136:9:136:26 | ...; |
| ExitMethods.cs:136:21:136:24 | true | ExitMethods.cs:136:21:136:24 | true |
| ExitMethods.cs:140:49:140:49 | b | ExitMethods.cs:140:49:140:49 | b |
| ExitMethods.cs:140:70:140:70 | e | ExitMethods.cs:140:70:140:70 | e |
| ExitMethods.cs:141:5:147:5 | {...} | ExitMethods.cs:141:5:147:5 | {...} |
| ExitMethods.cs:142:9:145:53 | if (...) ... | ExitMethods.cs:142:9:145:53 | if (...) ... |
| ExitMethods.cs:142:13:142:13 | access to parameter b | ExitMethods.cs:142:13:142:13 | access to parameter b |
@@ -1410,10 +1498,13 @@
| ExitMethods.cs:145:13:145:52 | call to method Throw | ExitMethods.cs:145:43:145:43 | access to parameter e |
| ExitMethods.cs:145:13:145:53 | ...; | ExitMethods.cs:145:13:145:53 | ...; |
| ExitMethods.cs:145:43:145:43 | access to parameter e | ExitMethods.cs:145:43:145:43 | access to parameter e |
| Extensions.cs:5:43:5:43 | s | Extensions.cs:5:43:5:43 | s |
| Extensions.cs:6:5:8:5 | {...} | Extensions.cs:6:5:8:5 | {...} |
| Extensions.cs:7:9:7:30 | return ...; | Extensions.cs:7:28:7:28 | access to parameter s |
| Extensions.cs:7:16:7:29 | call to method Parse | Extensions.cs:7:28:7:28 | access to parameter s |
| Extensions.cs:7:28:7:28 | access to parameter s | Extensions.cs:7:28:7:28 | access to parameter s |
| Extensions.cs:10:43:10:43 | s | Extensions.cs:10:43:10:43 | s |
| Extensions.cs:10:65:10:65 | f | Extensions.cs:10:65:10:65 | f |
| Extensions.cs:11:5:13:5 | {...} | Extensions.cs:11:5:13:5 | {...} |
| Extensions.cs:12:9:12:20 | return ...; | Extensions.cs:12:16:12:16 | access to parameter f |
| Extensions.cs:12:16:12:16 | access to parameter f | Extensions.cs:12:16:12:16 | access to parameter f |
@@ -1421,6 +1512,7 @@
| Extensions.cs:12:18:12:18 | access to parameter s | Extensions.cs:12:18:12:18 | access to parameter s |
| Extensions.cs:15:40:15:51 | call to method ToInt32 | Extensions.cs:15:48:15:50 | "0" |
| Extensions.cs:15:48:15:50 | "0" | Extensions.cs:15:48:15:50 | "0" |
| Extensions.cs:20:29:20:29 | s | Extensions.cs:20:29:20:29 | s |
| Extensions.cs:21:5:26:5 | {...} | Extensions.cs:21:5:26:5 | {...} |
| Extensions.cs:22:9:22:9 | access to parameter s | Extensions.cs:22:9:22:9 | access to parameter s |
| Extensions.cs:22:9:22:19 | call to method ToInt32 | Extensions.cs:22:9:22:9 | access to parameter s |
@@ -1607,6 +1699,7 @@
| Finally.cs:141:13:141:44 | throw ...; | Finally.cs:141:41:141:42 | "" |
| Finally.cs:141:19:141:43 | object creation of type ArgumentException | Finally.cs:141:41:141:42 | "" |
| Finally.cs:141:41:141:42 | "" | Finally.cs:141:41:141:42 | "" |
| Finally.cs:147:22:147:25 | args | Finally.cs:147:22:147:25 | args |
| Finally.cs:148:5:170:5 | {...} | Finally.cs:148:5:170:5 | {...} |
| Finally.cs:149:9:169:9 | try {...} ... | Finally.cs:149:9:169:9 | try {...} ... |
| Finally.cs:150:9:153:9 | {...} | Finally.cs:150:9:153:9 | {...} |
@@ -1656,6 +1749,8 @@
| Finally.cs:174:11:174:20 | call to method <object initializer> | Finally.cs:174:11:174:20 | this access |
| Finally.cs:174:11:174:20 | this access | Finally.cs:174:11:174:20 | this access |
| Finally.cs:174:11:174:20 | {...} | Finally.cs:174:11:174:20 | {...} |
| Finally.cs:176:18:176:19 | b1 | Finally.cs:176:18:176:19 | b1 |
| Finally.cs:176:27:176:28 | b2 | Finally.cs:176:27:176:28 | b2 |
| Finally.cs:177:5:193:5 | {...} | Finally.cs:177:5:193:5 | {...} |
| Finally.cs:178:9:192:9 | try {...} ... | Finally.cs:178:9:192:9 | try {...} ... |
| Finally.cs:179:9:181:9 | {...} | Finally.cs:179:9:181:9 | {...} |
@@ -1677,6 +1772,9 @@
| Finally.cs:190:21:190:22 | access to parameter b1 | Finally.cs:190:21:190:22 | access to parameter b1 |
| Finally.cs:190:25:190:47 | throw ...; | Finally.cs:190:31:190:46 | object creation of type ExceptionC |
| Finally.cs:190:31:190:46 | object creation of type ExceptionC | Finally.cs:190:31:190:46 | object creation of type ExceptionC |
| Finally.cs:195:19:195:20 | b1 | Finally.cs:195:19:195:20 | b1 |
| Finally.cs:195:28:195:29 | b2 | Finally.cs:195:28:195:29 | b2 |
| Finally.cs:195:37:195:38 | b3 | Finally.cs:195:37:195:38 | b3 |
| Finally.cs:196:5:214:5 | {...} | Finally.cs:196:5:214:5 | {...} |
| Finally.cs:197:9:212:9 | try {...} ... | Finally.cs:197:9:212:9 | try {...} ... |
| Finally.cs:198:9:200:9 | {...} | Finally.cs:198:9:200:9 | {...} |
@@ -1724,6 +1822,8 @@
| Finally.cs:230:9:230:33 | call to method WriteLine | Finally.cs:230:27:230:32 | "Done" |
| Finally.cs:230:9:230:34 | ...; | Finally.cs:230:9:230:34 | ...; |
| Finally.cs:230:27:230:32 | "Done" | Finally.cs:230:27:230:32 | "Done" |
| Finally.cs:233:19:233:20 | b1 | Finally.cs:233:19:233:20 | b1 |
| Finally.cs:233:28:233:29 | b2 | Finally.cs:233:28:233:29 | b2 |
| Finally.cs:234:5:261:5 | {...} | Finally.cs:234:5:261:5 | {...} |
| Finally.cs:235:9:259:9 | try {...} ... | Finally.cs:235:9:259:9 | try {...} ... |
| Finally.cs:236:9:255:9 | {...} | Finally.cs:236:9:255:9 | {...} |
@@ -1754,6 +1854,7 @@
| Finally.cs:260:9:260:33 | call to method WriteLine | Finally.cs:260:27:260:32 | "Done" |
| Finally.cs:260:9:260:34 | ...; | Finally.cs:260:9:260:34 | ...; |
| Finally.cs:260:27:260:32 | "Done" | Finally.cs:260:27:260:32 | "Done" |
| Finally.cs:263:18:263:18 | i | Finally.cs:263:18:263:18 | i |
| Finally.cs:264:5:274:5 | {...} | Finally.cs:264:5:274:5 | {...} |
| Finally.cs:265:9:273:9 | try {...} ... | Finally.cs:265:9:273:9 | try {...} ... |
| Finally.cs:266:9:268:9 | {...} | Finally.cs:266:9:268:9 | {...} |
@@ -1772,16 +1873,19 @@
| Foreach.cs:4:7:4:13 | call to method <object initializer> | Foreach.cs:4:7:4:13 | this access |
| Foreach.cs:4:7:4:13 | this access | Foreach.cs:4:7:4:13 | this access |
| Foreach.cs:4:7:4:13 | {...} | Foreach.cs:4:7:4:13 | {...} |
| Foreach.cs:6:22:6:25 | args | Foreach.cs:6:22:6:25 | args |
| Foreach.cs:7:5:10:5 | {...} | Foreach.cs:7:5:10:5 | {...} |
| Foreach.cs:8:9:9:13 | foreach (... ... in ...) ... | Foreach.cs:8:9:9:13 | foreach (... ... in ...) ... |
| Foreach.cs:8:22:8:24 | String arg | Foreach.cs:8:22:8:24 | String arg |
| Foreach.cs:8:29:8:32 | access to parameter args | Foreach.cs:8:29:8:32 | access to parameter args |
| Foreach.cs:9:13:9:13 | ; | Foreach.cs:9:13:9:13 | ; |
| Foreach.cs:12:22:12:25 | args | Foreach.cs:12:22:12:25 | args |
| Foreach.cs:13:5:16:5 | {...} | Foreach.cs:13:5:16:5 | {...} |
| Foreach.cs:14:9:15:13 | foreach (... ... in ...) ... | Foreach.cs:14:9:15:13 | foreach (... ... in ...) ... |
| Foreach.cs:14:22:14:22 | String _ | Foreach.cs:14:22:14:22 | String _ |
| 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:18:33:18:33 | e | Foreach.cs:18:33:18:33 | e |
| Foreach.cs:19:5:22:5 | {...} | Foreach.cs:19:5:22:5 | {...} |
| Foreach.cs:20:9:21:11 | foreach (... ... in ...) ... | Foreach.cs:20:9:21:11 | foreach (... ... in ...) ... |
| Foreach.cs:20:22:20:22 | String x | Foreach.cs:20:22:20:22 | String x |
@@ -1790,6 +1894,7 @@
| Foreach.cs:20:27:20:68 | ... ?? ... | Foreach.cs:20:27:20:68 | ... ?? ... |
| Foreach.cs:20:43:20:68 | call to method Empty<String> | Foreach.cs:20:43:20:68 | call to method Empty<String> |
| Foreach.cs:21:11:21:11 | ; | Foreach.cs:21:11:21:11 | ; |
| Foreach.cs:24:40:24:43 | args | Foreach.cs:24:40:24:43 | args |
| Foreach.cs:25:5:28:5 | {...} | Foreach.cs:25:5:28:5 | {...} |
| Foreach.cs:26:9:27:11 | foreach (... ... in ...) ... | Foreach.cs:26:9:27:11 | foreach (... ... in ...) ... |
| Foreach.cs:26:18:26:31 | (..., ...) | Foreach.cs:26:23:26:23 | String x |
@@ -1797,6 +1902,7 @@
| Foreach.cs:26:30:26:30 | Int32 y | Foreach.cs:26:30:26:30 | Int32 y |
| Foreach.cs:26:36:26:39 | access to parameter args | Foreach.cs:26:36:26:39 | access to parameter args |
| Foreach.cs:27:11:27:11 | ; | Foreach.cs:27:11:27:11 | ; |
| Foreach.cs:30:40:30:43 | args | Foreach.cs:30:40:30:43 | args |
| Foreach.cs:31:5:34:5 | {...} | Foreach.cs:31:5:34:5 | {...} |
| Foreach.cs:32:9:33:11 | foreach (... ... in ...) ... | Foreach.cs:32:9:33:11 | foreach (... ... in ...) ... |
| Foreach.cs:32:18:32:27 | (..., ...) | Foreach.cs:32:23:32:23 | String x |
@@ -1804,6 +1910,7 @@
| Foreach.cs:32:26:32:26 | Int32 y | Foreach.cs:32:26:32:26 | Int32 y |
| Foreach.cs:32:32:32:35 | access to parameter args | Foreach.cs:32:32:32:35 | access to parameter args |
| Foreach.cs:33:11:33:11 | ; | Foreach.cs:33:11:33:11 | ; |
| Foreach.cs:36:40:36:43 | args | Foreach.cs:36:40:36:43 | args |
| Foreach.cs:37:5:40:5 | {...} | Foreach.cs:37:5:40:5 | {...} |
| Foreach.cs:38:9:39:11 | foreach (... ... in ...) ... | Foreach.cs:38:9:39:11 | foreach (... ... in ...) ... |
| Foreach.cs:38:18:38:34 | (..., ...) | Foreach.cs:38:26:38:26 | String x |
@@ -1831,6 +1938,7 @@
| Initializers.cs:10:5:10:16 | call to constructor Object | Initializers.cs:10:5:10:16 | call to constructor Object |
| Initializers.cs:10:5:10:16 | call to method <object initializer> | Initializers.cs:10:5:10:16 | this access |
| Initializers.cs:10:5:10:16 | this access | Initializers.cs:10:5:10:16 | this access |
| Initializers.cs:10:25:10:25 | s | Initializers.cs:10:25:10:25 | s |
| Initializers.cs:10:28:10:30 | {...} | Initializers.cs:10:28:10:30 | {...} |
| Initializers.cs:13:5:16:5 | {...} | Initializers.cs:13:5:16:5 | {...} |
| Initializers.cs:14:9:14:54 | ... ...; | Initializers.cs:14:9:14:54 | ... ...; |
@@ -1882,6 +1990,7 @@
| Initializers.cs:31:26:31:30 | ... = ... | Initializers.cs:31:26:31:26 | this access |
| Initializers.cs:31:26:31:31 | ...; | Initializers.cs:31:26:31:31 | ...; |
| Initializers.cs:31:30:31:30 | 3 | Initializers.cs:31:30:31:30 | 3 |
| Initializers.cs:33:17:33:17 | i | Initializers.cs:33:17:33:17 | i |
| Initializers.cs:33:22:33:25 | call to constructor Sub | Initializers.cs:33:22:33:25 | call to constructor Sub |
| Initializers.cs:33:29:33:38 | {...} | Initializers.cs:33:29:33:38 | {...} |
| Initializers.cs:33:31:33:31 | access to field I | Initializers.cs:33:31:33:31 | this access |
@@ -1892,6 +2001,8 @@
| Initializers.cs:35:9:35:11 | call to constructor NoConstructor | Initializers.cs:35:9:35:11 | call to constructor NoConstructor |
| Initializers.cs:35:9:35:11 | call to method <object initializer> | Initializers.cs:35:9:35:11 | this access |
| Initializers.cs:35:9:35:11 | this access | Initializers.cs:35:9:35:11 | this access |
| Initializers.cs:35:17:35:17 | i | Initializers.cs:35:17:35:17 | i |
| Initializers.cs:35:24:35:24 | j | Initializers.cs:35:24:35:24 | j |
| Initializers.cs:35:27:35:40 | {...} | Initializers.cs:35:27:35:40 | {...} |
| Initializers.cs:35:29:35:29 | access to field I | Initializers.cs:35:29:35:29 | this access |
| Initializers.cs:35:29:35:29 | this access | Initializers.cs:35:29:35:29 | this access |
@@ -1908,6 +2019,7 @@
| Initializers.cs:41:11:41:18 | call to method <object initializer> | Initializers.cs:41:11:41:18 | this access |
| Initializers.cs:41:11:41:18 | this access | Initializers.cs:41:11:41:18 | this access |
| Initializers.cs:41:11:41:18 | {...} | Initializers.cs:41:11:41:18 | {...} |
| Initializers.cs:51:19:51:19 | i | Initializers.cs:51:19:51:19 | i |
| Initializers.cs:52:5:66:5 | {...} | Initializers.cs:52:5:66:5 | {...} |
| Initializers.cs:54:9:54:96 | ... ...; | Initializers.cs:54:9:54:96 | ... ...; |
| Initializers.cs:54:13:54:16 | access to local variable dict | Initializers.cs:54:13:54:16 | access to local variable dict |
@@ -2027,6 +2139,7 @@
| LoopUnrolling.cs:5:7:5:19 | call to method <object initializer> | LoopUnrolling.cs:5:7:5:19 | this access |
| LoopUnrolling.cs:5:7:5:19 | this access | LoopUnrolling.cs:5:7:5:19 | this access |
| LoopUnrolling.cs:5:7:5:19 | {...} | LoopUnrolling.cs:5:7:5:19 | {...} |
| LoopUnrolling.cs:7:22:7:25 | args | LoopUnrolling.cs:7:22:7:25 | args |
| LoopUnrolling.cs:8:5:13:5 | {...} | LoopUnrolling.cs:8:5:13:5 | {...} |
| LoopUnrolling.cs:9:9:10:19 | if (...) ... | LoopUnrolling.cs:9:9:10:19 | if (...) ... |
| LoopUnrolling.cs:9:13:9:16 | access to parameter args | LoopUnrolling.cs:9:13:9:16 | access to parameter args |
@@ -2056,6 +2169,7 @@
| LoopUnrolling.cs:19:13:19:32 | call to method WriteLine | LoopUnrolling.cs:19:31:19:31 | access to local variable x |
| LoopUnrolling.cs:19:13:19:33 | ...; | LoopUnrolling.cs:19:13:19:33 | ...; |
| LoopUnrolling.cs:19:31:19:31 | access to local variable x | LoopUnrolling.cs:19:31:19:31 | access to local variable x |
| LoopUnrolling.cs:22:20:22:23 | args | LoopUnrolling.cs:22:20:22:23 | args |
| LoopUnrolling.cs:23:5:27:5 | {...} | LoopUnrolling.cs:23:5:27:5 | {...} |
| LoopUnrolling.cs:24:9:26:40 | foreach (... ... in ...) ... | LoopUnrolling.cs:24:9:26:40 | foreach (... ... in ...) ... |
| LoopUnrolling.cs:24:22:24:24 | Char arg | LoopUnrolling.cs:24:22:24:24 | Char arg |
@@ -2127,6 +2241,7 @@
| LoopUnrolling.cs:50:16:50:36 | ...; | LoopUnrolling.cs:50:16:50:36 | ...; |
| LoopUnrolling.cs:50:34:50:34 | access to local variable x | LoopUnrolling.cs:50:34:50:34 | access to local variable x |
| LoopUnrolling.cs:51:13:51:23 | goto ...; | LoopUnrolling.cs:51:13:51:23 | goto ...; |
| LoopUnrolling.cs:55:18:55:18 | b | LoopUnrolling.cs:55:18:55:18 | b |
| LoopUnrolling.cs:56:5:65:5 | {...} | LoopUnrolling.cs:56:5:65:5 | {...} |
| LoopUnrolling.cs:57:9:57:48 | ... ...; | LoopUnrolling.cs:57:9:57:48 | ... ...; |
| LoopUnrolling.cs:57:13:57:14 | access to local variable xs | LoopUnrolling.cs:57:13:57:14 | access to local variable xs |
@@ -2151,6 +2266,7 @@
| LoopUnrolling.cs:63:17:63:36 | call to method WriteLine | LoopUnrolling.cs:63:35:63:35 | access to local variable x |
| LoopUnrolling.cs:63:17:63:37 | ...; | LoopUnrolling.cs:63:17:63:37 | ...; |
| LoopUnrolling.cs:63:35:63:35 | access to local variable x | LoopUnrolling.cs:63:35:63:35 | access to local variable x |
| LoopUnrolling.cs:67:26:67:29 | args | LoopUnrolling.cs:67:26:67:29 | args |
| 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 | !... |
@@ -2217,6 +2333,7 @@
| MultiImplementationA.cs:7:25:7:39 | {...} | MultiImplementationA.cs:7:25:7:39 | {...} |
| MultiImplementationA.cs:7:27:7:37 | throw ...; | MultiImplementationA.cs:7:33:7:36 | null |
| MultiImplementationA.cs:7:33:7:36 | null | MultiImplementationA.cs:7:33:7:36 | null |
| MultiImplementationA.cs:7:41:7:43 | value | MultiImplementationA.cs:7:41:7:43 | value |
| MultiImplementationA.cs:7:45:7:59 | {...} | MultiImplementationA.cs:7:45:7:59 | {...} |
| MultiImplementationA.cs:7:47:7:57 | throw ...; | MultiImplementationA.cs:7:53:7:56 | null |
| MultiImplementationA.cs:7:53:7:56 | null | MultiImplementationA.cs:7:53:7:56 | null |
@@ -2226,17 +2343,23 @@
| MultiImplementationA.cs:13:16:13:16 | this access | MultiImplementationA.cs:13:16:13:16 | this access |
| MultiImplementationA.cs:13:16:13:20 | ... = ... | MultiImplementationA.cs:13:16:13:16 | this access |
| MultiImplementationA.cs:13:20:13:20 | 0 | MultiImplementationA.cs:13:20:13:20 | 0 |
| MultiImplementationA.cs:14:25:14:25 | i | MultiImplementationA.cs:14:25:14:25 | i |
| MultiImplementationA.cs:14:31:14:31 | access to parameter i | MultiImplementationA.cs:14:31:14:31 | access to parameter i |
| MultiImplementationA.cs:15:31:15:31 | s | MultiImplementationA.cs:15:31:15:31 | s |
| MultiImplementationA.cs:15:31:15:31 | s | MultiImplementationA.cs:15:31:15:31 | s |
| MultiImplementationA.cs:15:40:15:52 | {...} | MultiImplementationA.cs:15:40:15:52 | {...} |
| MultiImplementationA.cs:15:42:15:50 | return ...; | MultiImplementationA.cs:15:49:15:49 | access to parameter s |
| MultiImplementationA.cs:15:49:15:49 | access to parameter s | MultiImplementationA.cs:15:49:15:49 | access to parameter s |
| MultiImplementationA.cs:15:54:15:56 | value | MultiImplementationA.cs:15:54:15:56 | value |
| MultiImplementationA.cs:15:58:15:60 | {...} | MultiImplementationA.cs:15:58:15:60 | {...} |
| MultiImplementationA.cs:16:24:16:24 | i | MultiImplementationA.cs:16:24:16:24 | i |
| MultiImplementationA.cs:17:5:19:5 | {...} | MultiImplementationA.cs:17:5:19:5 | {...} |
| MultiImplementationA.cs:18:9:18:22 | M2(...) | MultiImplementationA.cs:18:9:18:22 | M2(...) |
| MultiImplementationA.cs:18:21:18:21 | 0 | MultiImplementationA.cs:18:21:18:21 | 0 |
| MultiImplementationA.cs:20:12:20:13 | call to constructor Object | MultiImplementationA.cs:20:12:20:13 | call to constructor Object |
| MultiImplementationA.cs:20:12:20:13 | call to method <object initializer> | MultiImplementationA.cs:20:12:20:13 | this access |
| MultiImplementationA.cs:20:12:20:13 | this access | MultiImplementationA.cs:20:12:20:13 | this access |
| MultiImplementationA.cs:20:19:20:19 | i | MultiImplementationA.cs:20:19:20:19 | i |
| MultiImplementationA.cs:20:22:20:31 | {...} | MultiImplementationA.cs:20:22:20:31 | {...} |
| MultiImplementationA.cs:20:24:20:24 | access to field F | MultiImplementationA.cs:20:24:20:24 | this access |
| MultiImplementationA.cs:20:24:20:24 | this access | MultiImplementationA.cs:20:24:20:24 | this access |
@@ -2247,6 +2370,7 @@
| MultiImplementationA.cs:21:24:21:24 | 0 | MultiImplementationA.cs:21:24:21:24 | 0 |
| MultiImplementationA.cs:21:27:21:29 | {...} | MultiImplementationA.cs:21:27:21:29 | {...} |
| MultiImplementationA.cs:22:11:22:13 | {...} | MultiImplementationA.cs:22:11:22:13 | {...} |
| MultiImplementationA.cs:23:44:23:44 | i | MultiImplementationA.cs:23:44:23:44 | i |
| MultiImplementationA.cs:23:50:23:53 | null | MultiImplementationA.cs:23:50:23:53 | null |
| MultiImplementationA.cs:24:16:24:16 | access to property P | MultiImplementationA.cs:24:16:24:16 | this access |
| MultiImplementationA.cs:24:16:24:16 | this access | MultiImplementationA.cs:24:16:24:16 | this access |
@@ -2323,20 +2447,26 @@
| NullCoalescing.cs:1:7:1:20 | call to method <object initializer> | NullCoalescing.cs:1:7:1:20 | this access |
| NullCoalescing.cs:1:7:1:20 | this access | NullCoalescing.cs:1:7:1:20 | this access |
| NullCoalescing.cs:1:7:1:20 | {...} | NullCoalescing.cs:1:7:1:20 | {...} |
| NullCoalescing.cs:3:17:3:17 | i | NullCoalescing.cs:3:17:3:17 | i |
| 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:28:3:28 | 0 | NullCoalescing.cs:3:28:3:28 | 0 |
| NullCoalescing.cs:5:18:5:18 | b | NullCoalescing.cs:5:18:5:18 | b |
| 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:34 | ... ?? ... | NullCoalescing.cs:5:25:5:34 | ... ?? ... |
| 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:22:7:23 | s1 | NullCoalescing.cs:7:22:7:23 | s1 |
| NullCoalescing.cs:7:33:7:34 | s2 | NullCoalescing.cs:7:33:7:34 | s2 |
| 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: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:52:7:53 | "" | NullCoalescing.cs:7:52:7:53 | "" |
| NullCoalescing.cs:9:20:9:20 | b | NullCoalescing.cs:9:20:9:20 | b |
| NullCoalescing.cs:9:30:9:30 | s | NullCoalescing.cs:9:30:9:30 | s |
| 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:45 | ... ? ... : ... | NullCoalescing.cs:9:37:9:45 | ... ? ... : ... |
@@ -2345,6 +2475,9 @@
| 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:57:9:58 | "" | NullCoalescing.cs:9:57:9:58 | "" |
| NullCoalescing.cs:11:18:11:19 | b1 | NullCoalescing.cs:11:18:11:19 | b1 |
| NullCoalescing.cs:11:27:11:28 | b2 | NullCoalescing.cs:11:27:11:28 | b2 |
| NullCoalescing.cs:11:36:11:37 | b3 | NullCoalescing.cs:11:36:11:37 | b3 |
| 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:59 | ... ?? ... | NullCoalescing.cs:11:44:11:59 | ... ?? ... |
@@ -2353,6 +2486,7 @@
| 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:13:17:13:17 | i | NullCoalescing.cs:13:17:13:17 | i |
| 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:13 | access to local variable j | NullCoalescing.cs:15:13:15:13 | access to local variable j |
@@ -2377,6 +2511,7 @@
| PartialImplementationA.cs:3:12:3:18 | call to constructor Object | PartialImplementationA.cs:3:12:3:18 | call to constructor Object |
| PartialImplementationA.cs:3:12:3:18 | call to method <object initializer> | PartialImplementationA.cs:3:12:3:18 | this access |
| PartialImplementationA.cs:3:12:3:18 | this access | PartialImplementationA.cs:3:12:3:18 | this access |
| PartialImplementationA.cs:3:24:3:24 | i | PartialImplementationA.cs:3:24:3:24 | i |
| PartialImplementationA.cs:3:27:3:29 | {...} | PartialImplementationA.cs:3:27:3:29 | {...} |
| PartialImplementationB.cs:3:16:3:16 | access to field F | PartialImplementationB.cs:3:16:3:16 | this access |
| PartialImplementationB.cs:3:16:3:16 | this access | PartialImplementationB.cs:3:16:3:16 | this access |
@@ -2471,10 +2606,12 @@
| Patterns.cs:37:17:37:22 | break; | Patterns.cs:37:17:37:22 | break; |
| Patterns.cs:40:9:42:9 | switch (...) {...} | Patterns.cs:40:9:42:9 | switch (...) {...} |
| Patterns.cs:40:17:40:17 | access to local variable o | Patterns.cs:40:17:40:17 | access to local variable o |
| Patterns.cs:47:32:47:32 | c | Patterns.cs:47:32:47:32 | c |
| Patterns.cs:48:9:48:9 | access to parameter c | Patterns.cs:48:9:48:9 | access to parameter c |
| Patterns.cs:48:9:48:20 | ... is ... | Patterns.cs:48:9:48:9 | access to parameter c |
| Patterns.cs:48:14:48:20 | not ... | Patterns.cs:48:18:48:20 | a |
| Patterns.cs:48:18:48:20 | a | Patterns.cs:48:18:48:20 | a |
| Patterns.cs:50:34:50:34 | c | Patterns.cs:50:34:50:34 | c |
| Patterns.cs:51:9:51:9 | access to parameter c | Patterns.cs:51:9:51:9 | access to parameter c |
| Patterns.cs:51:9:51:21 | ... is ... | Patterns.cs:51:9:51:9 | access to parameter c |
| Patterns.cs:51:9:51:39 | ... ? ... : ... | Patterns.cs:51:9:51:39 | ... ? ... : ... |
@@ -2486,6 +2623,7 @@
| Patterns.cs:51:34:51:34 | access to parameter c | Patterns.cs:51:34:51:34 | access to parameter c |
| Patterns.cs:51:34:51:39 | ... is ... | Patterns.cs:51:34:51:34 | access to parameter c |
| Patterns.cs:51:39:51:39 | 2 | Patterns.cs:51:39:51:39 | 2 |
| Patterns.cs:53:34:53:34 | c | Patterns.cs:53:34:53:34 | c |
| Patterns.cs:54:9:54:9 | access to parameter c | Patterns.cs:54:9:54:9 | access to parameter c |
| Patterns.cs:54:9:54:37 | ... is ... | Patterns.cs:54:9:54:9 | access to parameter c |
| Patterns.cs:54:14:54:37 | not ... | Patterns.cs:54:18:54:37 | Patterns u |
@@ -2494,6 +2632,7 @@
| Patterns.cs:54:18:54:37 | { ... } | Patterns.cs:54:18:54:37 | Patterns u |
| Patterns.cs:54:27:54:35 | { ... } | Patterns.cs:54:33:54:33 | 1 |
| Patterns.cs:54:33:54:33 | 1 | Patterns.cs:54:33:54:33 | 1 |
| Patterns.cs:56:33:56:33 | i | Patterns.cs:56:33:56:33 | i |
| Patterns.cs:57:5:63:5 | {...} | Patterns.cs:57:5:63:5 | {...} |
| Patterns.cs:58:9:62:10 | return ...; | Patterns.cs:58:16:62:9 | ... switch { ... } |
| Patterns.cs:58:16:58:16 | access to parameter i | Patterns.cs:58:16:58:16 | access to parameter i |
@@ -2516,6 +2655,7 @@
| Patterns.cs:70:13:70:13 | 2 | Patterns.cs:70:13:70:13 | 2 |
| Patterns.cs:70:13:70:27 | ... => ... | Patterns.cs:70:13:70:27 | ... => ... |
| Patterns.cs:70:18:70:27 | "possible" | Patterns.cs:70:18:70:27 | "possible" |
| Patterns.cs:74:33:74:33 | i | Patterns.cs:74:33:74:33 | i |
| Patterns.cs:75:5:83:5 | {...} | Patterns.cs:75:5:83:5 | {...} |
| Patterns.cs:76:9:82:10 | return ...; | Patterns.cs:76:16:82:9 | ... switch { ... } |
| Patterns.cs:76:16:76:16 | access to parameter i | Patterns.cs:76:16:76:16 | access to parameter i |
@@ -2534,6 +2674,7 @@
| Patterns.cs:81:13:81:13 | _ | Patterns.cs:81:13:81:13 | _ |
| Patterns.cs:81:13:81:20 | ... => ... | Patterns.cs:81:13:81:20 | ... => ... |
| Patterns.cs:81:18:81:20 | "0" | Patterns.cs:81:18:81:20 | "0" |
| Patterns.cs:85:33:85:33 | i | Patterns.cs:85:33:85:33 | i |
| Patterns.cs:85:39:85:39 | access to parameter i | Patterns.cs:85:39:85:39 | access to parameter i |
| Patterns.cs:85:39:85:53 | ... is ... | Patterns.cs:85:39:85:39 | access to parameter i |
| Patterns.cs:85:39:85:69 | ... ? ... : ... | Patterns.cs:85:39:85:69 | ... ? ... : ... |
@@ -2543,6 +2684,7 @@
| Patterns.cs:85:53:85:53 | 2 | Patterns.cs:85:53:85:53 | 2 |
| Patterns.cs:85:57:85:63 | "not 2" | Patterns.cs:85:57:85:63 | "not 2" |
| Patterns.cs:85:67:85:69 | "2" | Patterns.cs:85:67:85:69 | "2" |
| Patterns.cs:87:33:87:33 | i | Patterns.cs:87:33:87:33 | i |
| Patterns.cs:87:39:87:39 | access to parameter i | Patterns.cs:87:39:87:39 | access to parameter i |
| Patterns.cs:87:39:87:54 | ... is ... | Patterns.cs:87:39:87:39 | access to parameter i |
| Patterns.cs:87:39:87:70 | ... ? ... : ... | Patterns.cs:87:39:87:70 | ... ? ... : ... |
@@ -2569,10 +2711,12 @@
| PostDominance.cs:3:7:3:19 | call to method <object initializer> | PostDominance.cs:3:7:3:19 | this access |
| PostDominance.cs:3:7:3:19 | this access | PostDominance.cs:3:7:3:19 | this access |
| PostDominance.cs:3:7:3:19 | {...} | PostDominance.cs:3:7:3:19 | {...} |
| PostDominance.cs:5:20:5:20 | s | PostDominance.cs:5:20:5:20 | s |
| PostDominance.cs:6:5:8:5 | {...} | PostDominance.cs:6:5:8:5 | {...} |
| PostDominance.cs:7:9:7:28 | call to method WriteLine | PostDominance.cs:7:27:7:27 | access to parameter s |
| PostDominance.cs:7:9:7:29 | ...; | PostDominance.cs:7:9:7:29 | ...; |
| PostDominance.cs:7:27:7:27 | access to parameter s | PostDominance.cs:7:27:7:27 | access to parameter s |
| PostDominance.cs:10:20:10:20 | s | PostDominance.cs:10:20:10:20 | s |
| PostDominance.cs:11:5:15:5 | {...} | PostDominance.cs:11:5:15:5 | {...} |
| PostDominance.cs:12:9:13:19 | if (...) ... | PostDominance.cs:12:9:13:19 | if (...) ... |
| PostDominance.cs:12:13:12:13 | access to parameter s | PostDominance.cs:12:13:12:13 | access to parameter s |
@@ -2582,6 +2726,7 @@
| PostDominance.cs:14:9:14:28 | call to method WriteLine | PostDominance.cs:14:27:14:27 | access to parameter s |
| PostDominance.cs:14:9:14:29 | ...; | PostDominance.cs:14:9:14:29 | ...; |
| PostDominance.cs:14:27:14:27 | access to parameter s | PostDominance.cs:14:27:14:27 | access to parameter s |
| PostDominance.cs:17:20:17:20 | s | PostDominance.cs:17:20:17:20 | s |
| PostDominance.cs:18:5:22:5 | {...} | PostDominance.cs:18:5:22:5 | {...} |
| PostDominance.cs:19:9:20:55 | if (...) ... | PostDominance.cs:19:9:20:55 | if (...) ... |
| PostDominance.cs:19:13:19:13 | access to parameter s | PostDominance.cs:19:13:19:13 | access to parameter s |
@@ -2673,9 +2818,11 @@
| Switch.cs:3:7:3:12 | call to method <object initializer> | Switch.cs:3:7:3:12 | this access |
| Switch.cs:3:7:3:12 | this access | Switch.cs:3:7:3:12 | this access |
| Switch.cs:3:7:3:12 | {...} | Switch.cs:3:7:3:12 | {...} |
| Switch.cs:5:20:5:20 | o | Switch.cs:5:20:5:20 | o |
| Switch.cs:6:5:8:5 | {...} | Switch.cs:6:5:8:5 | {...} |
| Switch.cs:7:9:7:22 | switch (...) {...} | Switch.cs:7:9:7:22 | switch (...) {...} |
| Switch.cs:7:17:7:17 | access to parameter o | Switch.cs:7:17:7:17 | access to parameter o |
| Switch.cs:10:20:10:20 | o | Switch.cs:10:20:10:20 | o |
| Switch.cs:11:5:33:5 | {...} | Switch.cs:11:5:33:5 | {...} |
| Switch.cs:12:9:32:9 | switch (...) {...} | Switch.cs:12:9:32:9 | switch (...) {...} |
| Switch.cs:12:17:12:17 | access to parameter o | Switch.cs:12:17:12:17 | access to parameter o |
@@ -2722,6 +2869,7 @@
| Switch.cs:36:5:42:5 | {...} | Switch.cs:36:5:42:5 | {...} |
| Switch.cs:37:9:41:9 | switch (...) {...} | Switch.cs:37:9:41:9 | switch (...) {...} |
| Switch.cs:37:17:37:23 | call to method Throw | Switch.cs:37:17:37:23 | call to method Throw |
| Switch.cs:44:20:44:20 | o | Switch.cs:44:20:44:20 | o |
| Switch.cs:45:5:53:5 | {...} | Switch.cs:45:5:53:5 | {...} |
| Switch.cs:46:9:52:9 | switch (...) {...} | Switch.cs:46:9:52:9 | switch (...) {...} |
| Switch.cs:46:17:46:17 | access to parameter o | Switch.cs:46:17:46:17 | access to parameter o |
@@ -2745,6 +2893,7 @@
| Switch.cs:61:13:61:19 | case ...: | Switch.cs:61:13:61:19 | case ...: |
| Switch.cs:61:18:61:18 | 3 | Switch.cs:61:18:61:18 | 3 |
| Switch.cs:62:17:62:22 | break; | Switch.cs:62:17:62:22 | break; |
| Switch.cs:66:20:66:20 | s | Switch.cs:66:20:66:20 | s |
| Switch.cs:67:5:75:5 | {...} | Switch.cs:67:5:75:5 | {...} |
| Switch.cs:68:9:74:9 | switch (...) {...} | Switch.cs:68:9:74:9 | switch (...) {...} |
| Switch.cs:68:17:68:25 | (...) ... | Switch.cs:68:25:68:25 | access to parameter s |
@@ -2755,6 +2904,8 @@
| Switch.cs:72:13:72:20 | case ...: | Switch.cs:72:13:72:20 | case ...: |
| Switch.cs:72:18:72:19 | "" | Switch.cs:72:18:72:19 | "" |
| Switch.cs:73:17:73:22 | break; | Switch.cs:73:17:73:22 | break; |
| Switch.cs:77:17:77:17 | i | Switch.cs:77:17:77:17 | i |
| Switch.cs:77:24:77:24 | j | Switch.cs:77:24:77:24 | j |
| Switch.cs:78:5:89:5 | {...} | Switch.cs:78:5:89:5 | {...} |
| Switch.cs:79:9:87:9 | switch (...) {...} | Switch.cs:79:9:87:9 | switch (...) {...} |
| Switch.cs:79:17:79:17 | access to parameter i | Switch.cs:79:17:79:17 | access to parameter i |
@@ -2773,6 +2924,7 @@
| Switch.cs:86:24:86:27 | true | Switch.cs:86:24:86:27 | true |
| Switch.cs:88:9:88:21 | return ...; | Switch.cs:88:16:88:20 | false |
| Switch.cs:88:16:88:20 | false | Switch.cs:88:16:88:20 | false |
| Switch.cs:91:20:91:20 | o | Switch.cs:91:20:91:20 | o |
| Switch.cs:92:5:99:5 | {...} | Switch.cs:92:5:99:5 | {...} |
| Switch.cs:93:9:97:9 | switch (...) {...} | Switch.cs:93:9:97:9 | switch (...) {...} |
| Switch.cs:93:17:93:17 | access to parameter o | Switch.cs:93:17:93:17 | access to parameter o |
@@ -2782,6 +2934,7 @@
| Switch.cs:96:24:96:27 | true | Switch.cs:96:24:96:27 | true |
| Switch.cs:98:9:98:21 | return ...; | Switch.cs:98:16:98:20 | false |
| Switch.cs:98:16:98:20 | false | Switch.cs:98:16:98:20 | false |
| Switch.cs:101:19:101:19 | s | Switch.cs:101:19:101:19 | s |
| Switch.cs:102:5:109:5 | {...} | Switch.cs:102:5:109:5 | {...} |
| Switch.cs:103:9:107:9 | switch (...) {...} | Switch.cs:103:9:107:9 | switch (...) {...} |
| Switch.cs:103:17:103:17 | access to parameter s | Switch.cs:103:17:103:17 | access to parameter s |
@@ -2799,6 +2952,7 @@
| Switch.cs:108:17:108:17 | 1 | Switch.cs:108:17:108:17 | 1 |
| Switch.cs:111:28:111:48 | throw ... | Switch.cs:111:34:111:48 | object creation of type Exception |
| Switch.cs:111:34:111:48 | object creation of type Exception | Switch.cs:111:34:111:48 | object creation of type Exception |
| Switch.cs:113:20:113:20 | s | Switch.cs:113:20:113:20 | s |
| Switch.cs:114:5:121:5 | {...} | Switch.cs:114:5:121:5 | {...} |
| Switch.cs:115:9:119:9 | switch (...) {...} | Switch.cs:115:9:119:9 | switch (...) {...} |
| Switch.cs:115:17:115:17 | access to parameter s | Switch.cs:115:17:115:17 | access to parameter s |
@@ -2820,6 +2974,7 @@
| Switch.cs:120:9:120:18 | return ...; | Switch.cs:120:17:120:17 | 1 |
| Switch.cs:120:16:120:17 | -... | Switch.cs:120:17:120:17 | 1 |
| Switch.cs:120:17:120:17 | 1 | Switch.cs:120:17:120:17 | 1 |
| Switch.cs:123:21:123:21 | o | Switch.cs:123:21:123:21 | o |
| 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 |
@@ -2831,6 +2986,7 @@
| Switch.cs:125:37:125:46 | ... => ... | Switch.cs:125:37:125:46 | ... => ... |
| 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:129:23:129:23 | o | Switch.cs:129:23:129:23 | o |
| 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:16:131:66 | call to method ToString | Switch.cs:131:17:131:53 | ... switch { ... } |
@@ -2842,6 +2998,7 @@
| 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:48:131:51 | null | Switch.cs:131:48:131:51 | null |
| Switch.cs:134:17:134:17 | i | Switch.cs:134:17:134:17 | i |
| 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 |
@@ -2857,6 +3014,7 @@
| Switch.cs:140:18:140:18 | 2 | Switch.cs:140:18:140:18 | 2 |
| Switch.cs:140:21:140:29 | return ...; | Switch.cs:140:28:140:28 | 2 |
| Switch.cs:140:28:140:28 | 2 | Switch.cs:140:28:140:28 | 2 |
| Switch.cs:144:17:144:17 | i | Switch.cs:144:17:144:17 | i |
| Switch.cs:145:5:152:5 | {...} | Switch.cs:145:5:152:5 | {...} |
| Switch.cs:146:9:151:9 | switch (...) {...} | Switch.cs:146:9:151:9 | switch (...) {...} |
| Switch.cs:146:17:146:17 | access to parameter i | Switch.cs:146:17:146:17 | access to parameter i |
@@ -2872,6 +3030,7 @@
| Switch.cs:150:18:150:18 | 2 | Switch.cs:150:18:150:18 | 2 |
| Switch.cs:150:21:150:29 | return ...; | Switch.cs:150:28:150:28 | 2 |
| Switch.cs:150:28:150:28 | 2 | Switch.cs:150:28:150:28 | 2 |
| Switch.cs:154:19:154:19 | b | Switch.cs:154:19:154:19 | b |
| 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:13 | access to local variable s | Switch.cs:156:13:156:13 | access to local variable s |
@@ -2898,6 +3057,7 @@
| Switch.cs:160:40:160:43 | "b = " | Switch.cs:160:40:160:43 | "b = " |
| Switch.cs:160:44:160:46 | {...} | Switch.cs:160:45:160:45 | access to local variable s |
| Switch.cs:160:45:160:45 | access to local variable s | Switch.cs:160:45:160:45 | access to local variable s |
| Switch.cs:163:18:163:18 | i | Switch.cs:163:18:163:18 | i |
| Switch.cs:164:5:178:5 | {...} | Switch.cs:164:5:178:5 | {...} |
| Switch.cs:165:9:177:9 | switch (...) {...} | Switch.cs:165:9:177:9 | switch (...) {...} |
| Switch.cs:165:17:165:17 | access to parameter i | Switch.cs:165:17:165:17 | access to parameter i |
@@ -2924,6 +3084,7 @@
| TypeAccesses.cs:1:7:1:18 | call to method <object initializer> | TypeAccesses.cs:1:7:1:18 | this access |
| TypeAccesses.cs:1:7:1:18 | this access | TypeAccesses.cs:1:7:1:18 | this access |
| TypeAccesses.cs:1:7:1:18 | {...} | TypeAccesses.cs:1:7:1:18 | {...} |
| TypeAccesses.cs:3:19:3:19 | o | TypeAccesses.cs:3:19:3:19 | o |
| TypeAccesses.cs:4:5:9:5 | {...} | TypeAccesses.cs:4:5:9:5 | {...} |
| TypeAccesses.cs:5:9:5:26 | ... ...; | TypeAccesses.cs:5:9:5:26 | ... ...; |
| TypeAccesses.cs:5:13:5:13 | access to local variable s | TypeAccesses.cs:5:13:5:13 | access to local variable s |
@@ -2948,6 +3109,7 @@
| VarDecls.cs:3:7:3:14 | call to method <object initializer> | VarDecls.cs:3:7:3:14 | this access |
| VarDecls.cs:3:7:3:14 | this access | VarDecls.cs:3:7:3:14 | this access |
| VarDecls.cs:3:7:3:14 | {...} | VarDecls.cs:3:7:3:14 | {...} |
| VarDecls.cs:5:30:5:36 | strings | VarDecls.cs:5:30:5:36 | strings |
| VarDecls.cs:6:5:11:5 | {...} | VarDecls.cs:6:5:11:5 | {...} |
| VarDecls.cs:7:9:10:9 | fixed(...) { ... } | VarDecls.cs:7:9:10:9 | fixed(...) { ... } |
| VarDecls.cs:7:22:7:23 | access to local variable c1 | VarDecls.cs:7:22:7:23 | access to local variable c1 |
@@ -2966,6 +3128,7 @@
| VarDecls.cs:9:13:9:29 | return ...; | VarDecls.cs:9:27:9:28 | access to local variable c1 |
| VarDecls.cs:9:20:9:28 | (...) ... | VarDecls.cs:9:27:9:28 | access to local variable c1 |
| VarDecls.cs:9:27:9:28 | access to local variable c1 | VarDecls.cs:9:27:9:28 | access to local variable c1 |
| VarDecls.cs:13:22:13:22 | s | VarDecls.cs:13:22:13:22 | s |
| VarDecls.cs:14:5:17:5 | {...} | VarDecls.cs:14:5:17:5 | {...} |
| VarDecls.cs:15:9:15:30 | ... ...; | VarDecls.cs:15:9:15:30 | ... ...; |
| VarDecls.cs:15:16:15:17 | access to local variable s1 | VarDecls.cs:15:16:15:17 | access to local variable s1 |
@@ -2978,6 +3141,7 @@
| VarDecls.cs:16:16:16:17 | access to local variable s1 | VarDecls.cs:16:16:16:17 | access to local variable s1 |
| VarDecls.cs:16:16:16:22 | ... + ... | VarDecls.cs:16:16:16:17 | access to local variable s1 |
| VarDecls.cs:16:21:16:22 | access to local variable s2 | VarDecls.cs:16:21:16:22 | access to local variable s2 |
| VarDecls.cs:19:15:19:15 | b | VarDecls.cs:19:15:19:15 | b |
| VarDecls.cs:20:5:26:5 | {...} | VarDecls.cs:20:5:26:5 | {...} |
| VarDecls.cs:21:9:22:13 | using (...) {...} | VarDecls.cs:21:9:22:13 | using (...) {...} |
| VarDecls.cs:21:16:21:22 | object creation of type C | VarDecls.cs:21:16:21:22 | object creation of type C |
@@ -2999,6 +3163,7 @@
| VarDecls.cs:28:11:28:11 | this access | VarDecls.cs:28:11:28:11 | this access |
| VarDecls.cs:28:11:28:11 | {...} | VarDecls.cs:28:11:28:11 | {...} |
| VarDecls.cs:28:51:28:53 | {...} | VarDecls.cs:28:51:28:53 | {...} |
| cflow.cs:5:31:5:34 | args | cflow.cs:5:31:5:34 | args |
| cflow.cs:6:5:35:5 | {...} | cflow.cs:6:5:35:5 | {...} |
| cflow.cs:7:9:7:28 | ... ...; | cflow.cs:7:9:7:28 | ... ...; |
| cflow.cs:7:13:7:13 | access to local variable a | cflow.cs:7:13:7:13 | access to local variable a |
@@ -3085,6 +3250,7 @@
| cflow.cs:33:17:33:36 | call to method WriteLine | cflow.cs:33:35:33:35 | access to local variable i |
| cflow.cs:33:17:33:37 | ...; | cflow.cs:33:17:33:37 | ...; |
| cflow.cs:33:35:33:35 | access to local variable i | cflow.cs:33:35:33:35 | access to local variable i |
| cflow.cs:37:28:37:28 | a | cflow.cs:37:28:37:28 | a |
| cflow.cs:38:5:68:5 | {...} | cflow.cs:38:5:68:5 | {...} |
| cflow.cs:39:9:50:9 | switch (...) {...} | cflow.cs:39:9:50:9 | switch (...) {...} |
| cflow.cs:39:17:39:17 | access to parameter a | cflow.cs:39:17:39:17 | access to parameter a |
@@ -3138,6 +3304,7 @@
| cflow.cs:65:17:65:22 | break; | cflow.cs:65:17:65:22 | break; |
| cflow.cs:67:9:67:17 | return ...; | cflow.cs:67:16:67:16 | access to parameter a |
| cflow.cs:67:16:67:16 | access to parameter a | cflow.cs:67:16:67:16 | access to parameter a |
| cflow.cs:70:27:70:27 | s | cflow.cs:70:27:70:27 | s |
| cflow.cs:71:5:82:5 | {...} | cflow.cs:71:5:82:5 | {...} |
| cflow.cs:72:9:73:19 | if (...) ... | cflow.cs:72:9:73:19 | if (...) ... |
| cflow.cs:72:13:72:13 | access to parameter s | cflow.cs:72:13:72:13 | access to parameter s |
@@ -3157,6 +3324,7 @@
| cflow.cs:80:13:80:47 | call to method WriteLine | cflow.cs:80:31:80:46 | "<empty string>" |
| cflow.cs:80:13:80:48 | ...; | cflow.cs:80:13:80:48 | ...; |
| cflow.cs:80:31:80:46 | "<empty string>" | cflow.cs:80:31:80:46 | "<empty string>" |
| cflow.cs:84:28:84:28 | s | cflow.cs:84:28:84:28 | s |
| cflow.cs:85:5:88:5 | {...} | cflow.cs:85:5:88:5 | {...} |
| 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 |
@@ -3170,6 +3338,7 @@
| cflow.cs:87:13:87:32 | call to method WriteLine | cflow.cs:87:31:87:31 | access to parameter s |
| cflow.cs:87:13:87:33 | ...; | cflow.cs:87:13:87:33 | ...; |
| cflow.cs:87:31:87:31 | access to parameter s | cflow.cs:87:31:87:31 | access to parameter s |
| cflow.cs:90:28:90:28 | s | cflow.cs:90:28:90:28 | s |
| cflow.cs:91:5:104:5 | {...} | cflow.cs:91:5:104:5 | {...} |
| cflow.cs:92:9:93:49 | if (...) ... | cflow.cs:92:9:93:49 | if (...) ... |
| cflow.cs:92:13:92:27 | call to method Equals | cflow.cs:92:20:92:20 | access to parameter s |
@@ -3208,6 +3377,7 @@
| cflow.cs:103:13:103:36 | ...; | cflow.cs:103:13:103:36 | ...; |
| cflow.cs:103:31:103:34 | access to property Prop | cflow.cs:103:31:103:34 | this access |
| cflow.cs:103:31:103:34 | this access | cflow.cs:103:31:103:34 | this access |
| cflow.cs:106:28:106:28 | s | cflow.cs:106:28:106:28 | s |
| cflow.cs:107:5:117:5 | {...} | cflow.cs:107:5:117:5 | {...} |
| cflow.cs:108:9:115:9 | if (...) ... | cflow.cs:108:9:115:9 | if (...) ... |
| cflow.cs:108:13:108:13 | access to parameter s | cflow.cs:108:13:108:13 | access to parameter s |
@@ -3223,6 +3393,7 @@
| cflow.cs:116:9:116:28 | call to method WriteLine | cflow.cs:116:27:116:27 | access to parameter s |
| cflow.cs:116:9:116:29 | ...; | cflow.cs:116:9:116:29 | ...; |
| cflow.cs:116:27:116:27 | access to parameter s | cflow.cs:116:27:116:27 | access to parameter s |
| cflow.cs:119:30:119:30 | s | cflow.cs:119:30:119:30 | s |
| cflow.cs:120:5:124:5 | {...} | cflow.cs:120:5:124:5 | {...} |
| cflow.cs:121:9:121:18 | ... ...; | cflow.cs:121:9:121:18 | ... ...; |
| cflow.cs:121:13:121:13 | access to local variable x | cflow.cs:121:13:121:13 | access to local variable x |
@@ -3246,6 +3417,7 @@
| 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 |
| cflow.cs:127:53:127:57 | this access | cflow.cs:127:53:127:57 | this access |
| cflow.cs:127:62:127:64 | value | cflow.cs:127:62:127:64 | value |
| cflow.cs:127:66:127:83 | {...} | cflow.cs:127:66:127:83 | {...} |
| cflow.cs:127:68:127:72 | access to field Field | cflow.cs:127:68:127:72 | this access |
| cflow.cs:127:68:127:72 | this access | cflow.cs:127:68:127:72 | this access |
@@ -3255,12 +3427,14 @@
| cflow.cs:129:5:129:15 | call to constructor Object | cflow.cs:129:5:129:15 | call to constructor Object |
| cflow.cs:129:5:129:15 | call to method <object initializer> | cflow.cs:129:5:129:15 | this access |
| cflow.cs:129:5:129:15 | this access | cflow.cs:129:5:129:15 | this access |
| cflow.cs:129:24:129:24 | s | cflow.cs:129:24:129:24 | s |
| cflow.cs:130:5:132:5 | {...} | cflow.cs:130:5:132:5 | {...} |
| cflow.cs:131:9:131:13 | access to field Field | cflow.cs:131:9:131:13 | this access |
| cflow.cs:131:9:131:13 | this access | cflow.cs:131:9:131:13 | this access |
| cflow.cs:131:9:131:17 | ... = ... | cflow.cs:131:9:131:13 | this access |
| cflow.cs:131:9:131:18 | ...; | cflow.cs:131:9:131:18 | ...; |
| cflow.cs:131:17:131:17 | access to parameter s | cflow.cs:131:17:131:17 | access to parameter s |
| cflow.cs:134:21:134:21 | i | cflow.cs:134:21:134:21 | i |
| cflow.cs:134:26:134:29 | call to constructor ControlFlow | cflow.cs:134:31:134:31 | access to parameter i |
| cflow.cs:134:31:134:31 | (...) ... | cflow.cs:134:31:134:31 | access to parameter i |
| cflow.cs:134:31:134:31 | access to parameter i | cflow.cs:134:31:134:31 | access to parameter i |
@@ -3272,18 +3446,23 @@
| cflow.cs:136:33:136:37 | ... + ... | cflow.cs:136:33:136:33 | 0 |
| cflow.cs:136:37:136:37 | 1 | cflow.cs:136:37:136:37 | 1 |
| cflow.cs:136:40:136:42 | {...} | cflow.cs:136:40:136:42 | {...} |
| cflow.cs:138:54:138:54 | x | cflow.cs:138:54:138:54 | x |
| cflow.cs:138:69:138:69 | y | cflow.cs:138:69:138:69 | y |
| cflow.cs:139:5:142:5 | {...} | cflow.cs:139:5:142:5 | {...} |
| cflow.cs:140:9:140:28 | call to method WriteLine | cflow.cs:140:27:140:27 | access to parameter x |
| cflow.cs:140:9:140:29 | ...; | cflow.cs:140:9:140:29 | ...; |
| cflow.cs:140:27:140:27 | access to parameter x | cflow.cs:140:27:140:27 | access to parameter x |
| cflow.cs:141:9:141:17 | return ...; | cflow.cs:141:16:141:16 | access to parameter y |
| cflow.cs:141:16:141:16 | access to parameter y | cflow.cs:141:16:141:16 | access to parameter y |
| cflow.cs:144:28:144:28 | i | cflow.cs:144:28:144:28 | i |
| cflow.cs:144:28:144:28 | i | cflow.cs:144:28:144:28 | i |
| cflow.cs:144:37:144:54 | {...} | cflow.cs:144:37:144:54 | {...} |
| cflow.cs:144:39:144:52 | return ...; | cflow.cs:144:46:144:46 | access to parameter i |
| cflow.cs:144:46:144:46 | (...) ... | cflow.cs:144:46:144:46 | access to parameter i |
| cflow.cs:144:46:144:46 | access to parameter i | cflow.cs:144:46:144:46 | access to parameter i |
| cflow.cs:144:46:144:51 | ... + ... | cflow.cs:144:46:144:46 | access to parameter i |
| cflow.cs:144:50:144:51 | "" | cflow.cs:144:50:144:51 | "" |
| cflow.cs:144:56:144:58 | value | cflow.cs:144:56:144:58 | value |
| cflow.cs:144:60:144:62 | {...} | cflow.cs:144:60:144:62 | {...} |
| cflow.cs:147:5:177:5 | {...} | cflow.cs:147:5:177:5 | {...} |
| cflow.cs:148:9:148:18 | ... ...; | cflow.cs:148:9:148:18 | ... ...; |
@@ -3361,6 +3540,7 @@
| cflow.cs:181:9:181:38 | ... ...; | cflow.cs:181:9:181:38 | ... ...; |
| cflow.cs:181:24:181:24 | access to local variable y | cflow.cs:181:24:181:24 | access to local variable y |
| cflow.cs:181:24:181:37 | Func<Int32,Int32> y = ... | cflow.cs:181:24:181:24 | access to local variable y |
| cflow.cs:181:28:181:28 | x | cflow.cs:181:28:181:28 | x |
| cflow.cs:181:28:181:37 | (...) => ... | cflow.cs:181:28:181:37 | (...) => ... |
| cflow.cs:181:33:181:33 | access to parameter x | cflow.cs:181:33:181:33 | access to parameter x |
| cflow.cs:181:33:181:37 | ... + ... | cflow.cs:181:33:181:33 | access to parameter x |
@@ -3369,6 +3549,7 @@
| cflow.cs:182:24:182:24 | access to local variable z | cflow.cs:182:24:182:24 | access to local variable z |
| cflow.cs:182:24:182:61 | Func<Int32,Int32> z = ... | cflow.cs:182:24:182:24 | access to local variable z |
| cflow.cs:182:28:182:61 | delegate(...) { ... } | cflow.cs:182:28:182:61 | delegate(...) { ... } |
| cflow.cs:182:42:182:42 | x | cflow.cs:182:42:182:42 | x |
| cflow.cs:182:45:182:61 | {...} | cflow.cs:182:45:182:61 | {...} |
| cflow.cs:182:47:182:59 | return ...; | cflow.cs:182:54:182:54 | access to parameter x |
| cflow.cs:182:54:182:54 | access to parameter x | cflow.cs:182:54:182:54 | access to parameter x |
@@ -3579,8 +3760,10 @@
| cflow.cs:282:5:282:18 | this access | cflow.cs:282:5:282:18 | this access |
| cflow.cs:282:24:282:27 | call to constructor ControlFlow | cflow.cs:282:24:282:27 | call to constructor ControlFlow |
| cflow.cs:282:31:282:33 | {...} | cflow.cs:282:31:282:33 | {...} |
| cflow.cs:284:27:284:27 | s | cflow.cs:284:27:284:27 | s |
| cflow.cs:284:32:284:35 | call to constructor ControlFlowSub | cflow.cs:284:32:284:35 | call to constructor ControlFlowSub |
| cflow.cs:284:39:284:41 | {...} | cflow.cs:284:39:284:41 | {...} |
| cflow.cs:286:24:286:24 | i | cflow.cs:286:24:286:24 | i |
| cflow.cs:286:29:286:32 | call to constructor ControlFlowSub | cflow.cs:286:34:286:34 | access to parameter i |
| cflow.cs:286:34:286:34 | access to parameter i | cflow.cs:286:34:286:34 | access to parameter i |
| cflow.cs:286:34:286:45 | call to method ToString | cflow.cs:286:34:286:34 | access to parameter i |
@@ -3589,13 +3772,20 @@
| cflow.cs:289:7:289:18 | call to method <object initializer> | cflow.cs:289:7:289:18 | this access |
| cflow.cs:289:7:289:18 | this access | cflow.cs:289:7:289:18 | this access |
| cflow.cs:289:7:289:18 | {...} | cflow.cs:289:7:289:18 | {...} |
| cflow.cs:291:32:291:32 | f | cflow.cs:291:32:291:32 | f |
| cflow.cs:291:38:291:38 | access to parameter f | cflow.cs:291:38:291:38 | access to parameter f |
| cflow.cs:291:38:291:41 | delegate call | cflow.cs:291:38:291:38 | access to parameter f |
| cflow.cs:291:40:291:40 | 0 | cflow.cs:291:40:291:40 | 0 |
| cflow.cs:296:5:296:25 | call to constructor Object | cflow.cs:296:5:296:25 | call to constructor Object |
| cflow.cs:296:5:296:25 | call to method <object initializer> | cflow.cs:296:5:296:25 | this access |
| cflow.cs:296:5:296:25 | this access | cflow.cs:296:5:296:25 | this access |
| cflow.cs:296:32:296:32 | b | cflow.cs:296:32:296:32 | b |
| cflow.cs:296:39:296:39 | i | cflow.cs:296:39:296:39 | i |
| cflow.cs:296:49:296:49 | s | cflow.cs:296:49:296:49 | s |
| cflow.cs:296:52:296:54 | {...} | cflow.cs:296:52:296:54 | {...} |
| cflow.cs:298:16:298:16 | i | cflow.cs:298:16:298:16 | i |
| cflow.cs:298:26:298:26 | s | cflow.cs:298:26:298:26 | s |
| cflow.cs:298:34:298:34 | b | cflow.cs:298:34:298:34 | b |
| cflow.cs:299:5:301:5 | {...} | cflow.cs:299:5:301:5 | {...} |
| 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 | ...; |
@@ -3614,6 +3804,8 @@
| cflow.cs:304:7:304:18 | this access | cflow.cs:304:7:304:18 | this access |
| cflow.cs:304:7:304:18 | {...} | cflow.cs:304:7:304:18 | {...} |
| cflow.cs:306:60:310:5 | (...) => ... | cflow.cs:306:60:310:5 | (...) => ... |
| cflow.cs:306:61:306:61 | o | cflow.cs:306:61:306:61 | o |
| cflow.cs:306:64:306:64 | n | cflow.cs:306:64:306:64 | n |
| cflow.cs:307:5:310:5 | {...} | cflow.cs:307:5:310:5 | {...} |
| cflow.cs:308:9:308:21 | ... ...; | cflow.cs:308:9:308:21 | ... ...; |
| cflow.cs:308:16:308:16 | access to local variable x | cflow.cs:308:16:308:16 | access to local variable x |

View File

@@ -1,65 +1,71 @@
| AccessorCalls.cs:5:23:5:25 | get_Item | AccessorCalls.cs:5:30:5:30 | access to parameter i |
| AccessorCalls.cs:5:33:5:35 | set_Item | AccessorCalls.cs:5:37:5:39 | {...} |
| AccessorCalls.cs:7:32:7:34 | add_Event | AccessorCalls.cs:7:36:7:38 | {...} |
| AccessorCalls.cs:7:40:7:45 | remove_Event | AccessorCalls.cs:7:47:7:49 | {...} |
| AccessorCalls.cs:10:10:10:11 | M1 | AccessorCalls.cs:11:5:17:5 | {...} |
| AccessorCalls.cs:19:10:19:11 | M2 | AccessorCalls.cs:20:5:26:5 | {...} |
| AccessorCalls.cs:5:23:5:25 | get_Item | AccessorCalls.cs:5:18:5:18 | i |
| AccessorCalls.cs:5:33:5:35 | set_Item | AccessorCalls.cs:5:18:5:18 | i |
| AccessorCalls.cs:7:32:7:34 | add_Event | AccessorCalls.cs:7:32:7:34 | value |
| AccessorCalls.cs:7:40:7:45 | remove_Event | AccessorCalls.cs:7:40:7:45 | value |
| AccessorCalls.cs:10:10:10:11 | M1 | AccessorCalls.cs:10:26:10:26 | e |
| AccessorCalls.cs:19:10:19:11 | M2 | AccessorCalls.cs:19:26:19:26 | e |
| AccessorCalls.cs:28:10:28:11 | M3 | AccessorCalls.cs:29:5:33:5 | {...} |
| AccessorCalls.cs:35:10:35:11 | M4 | AccessorCalls.cs:36:5:40:5 | {...} |
| AccessorCalls.cs:42:10:42:11 | M5 | AccessorCalls.cs:43:5:47:5 | {...} |
| AccessorCalls.cs:49:10:49:11 | M6 | AccessorCalls.cs:50:5:54:5 | {...} |
| AccessorCalls.cs:56:10:56:11 | M7 | AccessorCalls.cs:57:5:59:5 | {...} |
| AccessorCalls.cs:61:10:61:11 | M8 | AccessorCalls.cs:62:5:64:5 | {...} |
| AccessorCalls.cs:66:10:66:11 | M9 | AccessorCalls.cs:67:5:74:5 | {...} |
| Assert.cs:7:10:7:11 | M1 | Assert.cs:8:5:12:5 | {...} |
| Assert.cs:14:10:14:11 | M2 | Assert.cs:15:5:19:5 | {...} |
| Assert.cs:21:10:21:11 | M3 | Assert.cs:22:5:26:5 | {...} |
| Assert.cs:28:10:28:11 | M4 | Assert.cs:29:5:33:5 | {...} |
| Assert.cs:35:10:35:11 | M5 | Assert.cs:36:5:40:5 | {...} |
| Assert.cs:42:10:42:11 | M6 | Assert.cs:43:5:47:5 | {...} |
| Assert.cs:49:10:49:11 | M7 | Assert.cs:50:5:54:5 | {...} |
| Assert.cs:56:10:56:11 | M8 | Assert.cs:57:5:61:5 | {...} |
| Assert.cs:63:10:63:11 | M9 | Assert.cs:64:5:68:5 | {...} |
| Assert.cs:70:10:70:12 | M10 | Assert.cs:71:5:75:5 | {...} |
| Assert.cs:77:10:77:12 | M11 | Assert.cs:78:5:82:5 | {...} |
| Assert.cs:84:10:84:12 | M12 | Assert.cs:85:5:129:5 | {...} |
| Assert.cs:131:18:131:32 | AssertTrueFalse | Assert.cs:135:5:136:5 | {...} |
| Assert.cs:138:10:138:12 | M13 | Assert.cs:139:5:142:5 | {...} |
| AccessorCalls.cs:56:10:56:11 | M7 | AccessorCalls.cs:56:17:56:17 | i |
| AccessorCalls.cs:61:10:61:11 | M8 | AccessorCalls.cs:61:17:61:17 | i |
| AccessorCalls.cs:66:10:66:11 | M9 | AccessorCalls.cs:66:20:66:20 | o |
| Assert.cs:7:10:7:11 | M1 | Assert.cs:7:18:7:18 | b |
| Assert.cs:14:10:14:11 | M2 | Assert.cs:14:18:14:18 | b |
| Assert.cs:21:10:21:11 | M3 | Assert.cs:21:18:21:18 | b |
| Assert.cs:28:10:28:11 | M4 | Assert.cs:28:18:28:18 | b |
| Assert.cs:35:10:35:11 | M5 | Assert.cs:35:18:35:18 | b |
| Assert.cs:42:10:42:11 | M6 | Assert.cs:42:18:42:18 | b |
| Assert.cs:49:10:49:11 | M7 | Assert.cs:49:18:49:18 | b |
| Assert.cs:56:10:56:11 | M8 | Assert.cs:56:18:56:18 | b |
| Assert.cs:63:10:63:11 | M9 | Assert.cs:63:18:63:18 | b |
| Assert.cs:70:10:70:12 | M10 | Assert.cs:70:19:70:19 | b |
| Assert.cs:77:10:77:12 | M11 | Assert.cs:77:19:77:19 | b |
| Assert.cs:84:10:84:12 | M12 | Assert.cs:84:19:84:19 | b |
| Assert.cs:131:18:131:32 | AssertTrueFalse | Assert.cs:132:74:132:83 | condition1 |
| Assert.cs:138:10:138:12 | M13 | Assert.cs:138:19:138:20 | b1 |
| Assignments.cs:3:10:3:10 | M | Assignments.cs:4:5:15:5 | {...} |
| Assignments.cs:14:18:14:35 | (...) => ... | Assignments.cs:14:33:14:35 | {...} |
| Assignments.cs:17:40:17:40 | + | Assignments.cs:18:5:20:5 | {...} |
| Assignments.cs:27:10:27:23 | SetParamSingle | Assignments.cs:28:5:30:5 | {...} |
| Assignments.cs:32:10:32:22 | SetParamMulti | Assignments.cs:33:5:36:5 | {...} |
| Assignments.cs:14:18:14:35 | (...) => ... | Assignments.cs:14:19:14:24 | sender |
| Assignments.cs:17:40:17:40 | + | Assignments.cs:17:54:17:54 | x |
| Assignments.cs:27:10:27:23 | SetParamSingle | Assignments.cs:27:33:27:33 | x |
| Assignments.cs:32:10:32:22 | SetParamMulti | Assignments.cs:32:32:32:32 | x |
| Assignments.cs:38:10:38:11 | M2 | Assignments.cs:39:5:45:5 | {...} |
| BreakInTry.cs:3:10:3:11 | M1 | BreakInTry.cs:4:5:18:5 | {...} |
| BreakInTry.cs:20:10:20:11 | M2 | BreakInTry.cs:21:5:36:5 | {...} |
| BreakInTry.cs:38:10:38:11 | M3 | BreakInTry.cs:39:5:54:5 | {...} |
| BreakInTry.cs:56:10:56:11 | M4 | BreakInTry.cs:57:5:71:5 | {...} |
| BreakInTry.cs:3:10:3:11 | M1 | BreakInTry.cs:3:22:3:25 | args |
| BreakInTry.cs:20:10:20:11 | M2 | BreakInTry.cs:20:22:20:25 | args |
| BreakInTry.cs:38:10:38:11 | M3 | BreakInTry.cs:38:22:38:25 | args |
| BreakInTry.cs:56:10:56:11 | M4 | BreakInTry.cs:56:22:56:25 | args |
| CompileTimeOperators.cs:5:9:5:15 | Default | CompileTimeOperators.cs:6:5:8:5 | {...} |
| CompileTimeOperators.cs:10:9:10:14 | Sizeof | CompileTimeOperators.cs:11:5:13:5 | {...} |
| 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:20:12:20:17 | Nameof | CompileTimeOperators.cs:20:23:20:23 | i |
| CompileTimeOperators.cs:28:10:28:10 | M | CompileTimeOperators.cs:29:5:41:5 | {...} |
| ConditionalAccess.cs:9:9:9:10 | M4 | ConditionalAccess.cs:9:25:9:38 | ... ?? ... |
| ConditionalAccess.cs:11:9:11:10 | M5 | ConditionalAccess.cs:12:5:17:5 | {...} |
| ConditionalAccess.cs:21:10:21:11 | M7 | ConditionalAccess.cs:22:5:26:5 | {...} |
| ConditionalAccess.cs:32:10:32:11 | M8 | ConditionalAccess.cs:33:5:36:5 | {...} |
| ConditionalAccess.cs:42:9:42:11 | get_Item | ConditionalAccess.cs:42:13:42:28 | {...} |
| ConditionalAccess.cs:43:9:43:11 | set_Item | ConditionalAccess.cs:43:13:43:15 | {...} |
| ConditionalAccess.cs:46:10:46:11 | M9 | ConditionalAccess.cs:47:5:55:5 | {...} |
| Conditions.cs:3:10:3:19 | IncrOrDecr | Conditions.cs:4:5:9:5 | {...} |
| Conditions.cs:11:9:11:10 | M1 | Conditions.cs:12:5:20:5 | {...} |
| Conditions.cs:22:9:22:10 | M2 | Conditions.cs:23:5:31:5 | {...} |
| Conditions.cs:33:9:33:10 | M3 | Conditions.cs:34:5:44:5 | {...} |
| Conditions.cs:46:9:46:10 | M4 | Conditions.cs:47:5:55:5 | {...} |
| Conditions.cs:57:9:57:10 | M5 | Conditions.cs:58:5:68:5 | {...} |
| Conditions.cs:70:9:70:10 | M6 | Conditions.cs:71:5:84:5 | {...} |
| Conditions.cs:86:9:86:10 | M7 | Conditions.cs:87:5:100:5 | {...} |
| Conditions.cs:102:12:102:13 | M8 | Conditions.cs:103:5:111:5 | {...} |
| Conditions.cs:113:10:113:11 | M9 | Conditions.cs:114:5:124:5 | {...} |
| ConditionalAccess.cs:3:12:3:13 | M1 | ConditionalAccess.cs:3:20:3:20 | i |
| ConditionalAccess.cs:5:10:5:11 | M2 | ConditionalAccess.cs:5:20:5:20 | s |
| ConditionalAccess.cs:7:10:7:11 | M3 | ConditionalAccess.cs:7:20:7:21 | s1 |
| ConditionalAccess.cs:9:9:9:10 | M4 | ConditionalAccess.cs:9:19:9:19 | s |
| ConditionalAccess.cs:11:9:11:10 | M5 | ConditionalAccess.cs:11:19:11:19 | s |
| ConditionalAccess.cs:19:12:19:13 | M6 | ConditionalAccess.cs:19:22:19:23 | s1 |
| ConditionalAccess.cs:21:10:21:11 | M7 | ConditionalAccess.cs:21:17:21:17 | i |
| ConditionalAccess.cs:30:10:30:12 | Out | ConditionalAccess.cs:30:22:30:22 | i |
| ConditionalAccess.cs:32:10:32:11 | M8 | ConditionalAccess.cs:32:18:32:18 | b |
| ConditionalAccess.cs:42:9:42:11 | get_Item | ConditionalAccess.cs:40:21:40:25 | index |
| ConditionalAccess.cs:43:9:43:11 | set_Item | ConditionalAccess.cs:40:21:40:25 | index |
| ConditionalAccess.cs:46:10:46:11 | M9 | ConditionalAccess.cs:46:31:46:32 | ca |
| ConditionalAccess.cs:60:26:60:38 | CommaJoinWith | ConditionalAccess.cs:60:52:60:53 | s1 |
| Conditions.cs:3:10:3:19 | IncrOrDecr | Conditions.cs:3:26:3:28 | inc |
| Conditions.cs:11:9:11:10 | M1 | Conditions.cs:11:17:11:17 | b |
| Conditions.cs:22:9:22:10 | M2 | Conditions.cs:22:17:22:18 | b1 |
| Conditions.cs:33:9:33:10 | M3 | Conditions.cs:33:17:33:18 | b1 |
| Conditions.cs:46:9:46:10 | M4 | Conditions.cs:46:17:46:17 | b |
| Conditions.cs:57:9:57:10 | M5 | Conditions.cs:57:17:57:17 | b |
| Conditions.cs:70:9:70:10 | M6 | Conditions.cs:70:21:70:22 | ss |
| Conditions.cs:86:9:86:10 | M7 | Conditions.cs:86:21:86:22 | ss |
| Conditions.cs:102:12:102:13 | M8 | Conditions.cs:102:20:102:20 | b |
| Conditions.cs:113:10:113:11 | M9 | Conditions.cs:113:22:113:25 | args |
| Conditions.cs:129:10:129:12 | M10 | Conditions.cs:130:5:141:5 | {...} |
| Conditions.cs:143:10:143:12 | M11 | Conditions.cs:144:5:150:5 | {...} |
| DefaultParam.cs:3:12:3:13 | M1 | DefaultParam.cs:4:5:6:5 | {...} |
| Conditions.cs:143:10:143:12 | M11 | Conditions.cs:143:19:143:19 | b |
| DefaultParam.cs:3:12:3:13 | M1 | DefaultParam.cs:3:20:3:20 | b |
| ExitMethods.cs:8:10:8:11 | M1 | ExitMethods.cs:9:5:12:5 | {...} |
| ExitMethods.cs:14:10:14:11 | M2 | ExitMethods.cs:15:5:18:5 | {...} |
| ExitMethods.cs:20:10:20:11 | M3 | ExitMethods.cs:21:5:24:5 | {...} |
@@ -68,21 +74,22 @@
| ExitMethods.cs:38:10:38:11 | M6 | ExitMethods.cs:39:5:52:5 | {...} |
| ExitMethods.cs:54:10:54:11 | M7 | ExitMethods.cs:55:5:58:5 | {...} |
| ExitMethods.cs:60:10:60:11 | M8 | ExitMethods.cs:61:5:64:5 | {...} |
| ExitMethods.cs:66:17:66:26 | ErrorMaybe | ExitMethods.cs:67:5:70:5 | {...} |
| ExitMethods.cs:72:17:72:27 | ErrorAlways | ExitMethods.cs:73:5:78:5 | {...} |
| ExitMethods.cs:66:17:66:26 | ErrorMaybe | ExitMethods.cs:66:33:66:33 | b |
| ExitMethods.cs:72:17:72:27 | ErrorAlways | ExitMethods.cs:72:34:72:34 | b |
| ExitMethods.cs:80:17:80:28 | ErrorAlways2 | ExitMethods.cs:81:5:83:5 | {...} |
| ExitMethods.cs:87:10:87:13 | Exit | ExitMethods.cs:88:5:90:5 | {...} |
| ExitMethods.cs:92:10:92:18 | ExitInTry | ExitMethods.cs:93:5:103:5 | {...} |
| ExitMethods.cs:105:10:105:24 | ApplicationExit | ExitMethods.cs:106:5:108:5 | {...} |
| ExitMethods.cs:110:13:110:21 | ThrowExpr | ExitMethods.cs:111:5:113:5 | {...} |
| ExitMethods.cs:115:16:115:34 | ExtensionMethodCall | ExitMethods.cs:116:5:118:5 | {...} |
| ExitMethods.cs:110:13:110:21 | ThrowExpr | ExitMethods.cs:110:31:110:35 | input |
| ExitMethods.cs:115:16:115:34 | ExtensionMethodCall | ExitMethods.cs:115:43:115:43 | s |
| ExitMethods.cs:120:17:120:32 | FailingAssertion | ExitMethods.cs:121:5:124:5 | {...} |
| ExitMethods.cs:126:17:126:33 | FailingAssertion2 | ExitMethods.cs:127:5:130:5 | {...} |
| ExitMethods.cs:132:10:132:20 | AssertFalse | ExitMethods.cs:132:27:132:27 | b |
| ExitMethods.cs:134:17:134:33 | FailingAssertion3 | ExitMethods.cs:135:5:138:5 | {...} |
| ExitMethods.cs:140:17:140:42 | ExceptionDispatchInfoThrow | ExitMethods.cs:141:5:147:5 | {...} |
| Extensions.cs:5:23:5:29 | ToInt32 | Extensions.cs:6:5:8:5 | {...} |
| Extensions.cs:10:24:10:29 | ToBool | Extensions.cs:11:5:13:5 | {...} |
| Extensions.cs:20:17:20:20 | Main | Extensions.cs:21:5:26:5 | {...} |
| ExitMethods.cs:140:17:140:42 | ExceptionDispatchInfoThrow | ExitMethods.cs:140:49:140:49 | b |
| Extensions.cs:5:23:5:29 | ToInt32 | Extensions.cs:5:43:5:43 | s |
| Extensions.cs:10:24:10:29 | ToBool | Extensions.cs:10:43:10:43 | s |
| Extensions.cs:20:17:20:20 | Main | Extensions.cs:20:29:20:29 | s |
| Finally.cs:7:10:7:11 | M1 | Finally.cs:8:5:17:5 | {...} |
| Finally.cs:19:10:19:11 | M2 | Finally.cs:20:5:52:5 | {...} |
| Finally.cs:54:10:54:11 | M3 | Finally.cs:55:5:72:5 | {...} |
@@ -90,113 +97,123 @@
| Finally.cs:103:10:103:11 | M5 | Finally.cs:104:5:119:5 | {...} |
| Finally.cs:121:10:121:11 | M6 | Finally.cs:122:5:131:5 | {...} |
| Finally.cs:133:10:133:11 | M7 | Finally.cs:134:5:145:5 | {...} |
| Finally.cs:147:10:147:11 | M8 | Finally.cs:148:5:170:5 | {...} |
| Finally.cs:176:10:176:11 | M9 | Finally.cs:177:5:193:5 | {...} |
| Finally.cs:195:10:195:12 | M10 | Finally.cs:196:5:214:5 | {...} |
| Finally.cs:147:10:147:11 | M8 | Finally.cs:147:22:147:25 | args |
| Finally.cs:176:10:176:11 | M9 | Finally.cs:176:18:176:19 | b1 |
| Finally.cs:195:10:195:12 | M10 | Finally.cs:195:19:195:20 | b1 |
| Finally.cs:216:10:216:12 | M11 | Finally.cs:217:5:231:5 | {...} |
| Finally.cs:233:10:233:12 | M12 | Finally.cs:234:5:261:5 | {...} |
| Finally.cs:263:10:263:12 | M13 | Finally.cs:264:5:274:5 | {...} |
| Foreach.cs:6:10:6:11 | M1 | Foreach.cs:7:5:10:5 | {...} |
| Foreach.cs:12:10:12:11 | M2 | Foreach.cs:13:5:16:5 | {...} |
| Foreach.cs:18:10:18:11 | M3 | Foreach.cs:19:5:22:5 | {...} |
| Foreach.cs:24:10:24:11 | M4 | Foreach.cs:25:5:28:5 | {...} |
| Foreach.cs:30:10:30:11 | M5 | Foreach.cs:31:5:34:5 | {...} |
| Foreach.cs:36:10:36:11 | M6 | Foreach.cs:37:5:40:5 | {...} |
| Finally.cs:233:10:233:12 | M12 | Finally.cs:233:19:233:20 | b1 |
| Finally.cs:263:10:263:12 | M13 | Finally.cs:263:18:263:18 | i |
| Foreach.cs:6:10:6:11 | M1 | Foreach.cs:6:22:6:25 | args |
| Foreach.cs:12:10:12:11 | M2 | Foreach.cs:12:22:12:25 | args |
| Foreach.cs:18:10:18:11 | M3 | Foreach.cs:18:33:18:33 | e |
| Foreach.cs:24:10:24:11 | M4 | Foreach.cs:24:40:24:43 | args |
| Foreach.cs:30:10:30:11 | M5 | Foreach.cs:30:40:30:43 | args |
| Foreach.cs:36:10:36:11 | M6 | Foreach.cs:36:40:36:43 | args |
| Initializers.cs:10:5:10:16 | Initializers | Initializers.cs:10:25:10:25 | s |
| Initializers.cs:12:10:12:10 | M | Initializers.cs:13:5:16:5 | {...} |
| Initializers.cs:51:10:51:13 | Test | Initializers.cs:52:5:66:5 | {...} |
| LoopUnrolling.cs:7:10:7:11 | M1 | LoopUnrolling.cs:8:5:13:5 | {...} |
| Initializers.cs:33:9:33:11 | Sub | Initializers.cs:33:17:33:17 | i |
| Initializers.cs:35:9:35:11 | Sub | Initializers.cs:35:17:35:17 | i |
| Initializers.cs:51:10:51:13 | Test | Initializers.cs:51:19:51:19 | i |
| LoopUnrolling.cs:7:10:7:11 | M1 | LoopUnrolling.cs:7:22:7:25 | args |
| LoopUnrolling.cs:15:10:15:11 | M2 | LoopUnrolling.cs:16:5:20:5 | {...} |
| LoopUnrolling.cs:22:10:22:11 | M3 | LoopUnrolling.cs:23:5:27:5 | {...} |
| LoopUnrolling.cs:22:10:22:11 | M3 | LoopUnrolling.cs:22:20:22:23 | args |
| LoopUnrolling.cs:29:10:29:11 | M4 | LoopUnrolling.cs:30:5:34:5 | {...} |
| LoopUnrolling.cs:36:10:36:11 | M5 | LoopUnrolling.cs:37:5:43:5 | {...} |
| LoopUnrolling.cs:45:10:45:11 | M6 | LoopUnrolling.cs:46:5:53:5 | {...} |
| LoopUnrolling.cs:55:10:55:11 | M7 | LoopUnrolling.cs:56:5:65:5 | {...} |
| LoopUnrolling.cs:67:10:67:11 | M8 | LoopUnrolling.cs:68:5:74:5 | {...} |
| LoopUnrolling.cs:55:10:55:11 | M7 | LoopUnrolling.cs:55:18:55:18 | b |
| LoopUnrolling.cs:67:10:67:11 | M8 | LoopUnrolling.cs:67:26:67:29 | args |
| LoopUnrolling.cs:76:10:76:11 | M9 | LoopUnrolling.cs:77:5:83:5 | {...} |
| LoopUnrolling.cs:85:10:85:12 | M10 | LoopUnrolling.cs:86:5:92:5 | {...} |
| LoopUnrolling.cs:94:10:94:12 | M11 | LoopUnrolling.cs:95:5:101:5 | {...} |
| MultiImplementationA.cs:6:22:6:31 | get_P1 | MultiImplementationB.cs:3:22:3:22 | 0 |
| MultiImplementationA.cs:7:21:7:23 | get_P2 | MultiImplementationA.cs:7:25:7:39 | {...} |
| MultiImplementationA.cs:7:21:7:23 | get_P2 | MultiImplementationB.cs:4:25:4:37 | {...} |
| MultiImplementationA.cs:7:41:7:43 | set_P2 | MultiImplementationA.cs:7:45:7:59 | {...} |
| MultiImplementationA.cs:7:41:7:43 | set_P2 | MultiImplementationB.cs:4:43:4:45 | {...} |
| MultiImplementationA.cs:7:41:7:43 | set_P2 | MultiImplementationA.cs:7:41:7:43 | value |
| MultiImplementationA.cs:8:16:8:16 | M | MultiImplementationB.cs:5:23:5:23 | 2 |
| MultiImplementationA.cs:14:31:14:31 | get_Item | MultiImplementationA.cs:14:31:14:31 | access to parameter i |
| MultiImplementationA.cs:15:36:15:38 | get_Item | MultiImplementationA.cs:15:40:15:52 | {...} |
| MultiImplementationA.cs:15:36:15:38 | get_Item | MultiImplementationB.cs:13:40:13:54 | {...} |
| MultiImplementationA.cs:15:54:15:56 | set_Item | MultiImplementationA.cs:15:58:15:60 | {...} |
| MultiImplementationA.cs:15:54:15:56 | set_Item | MultiImplementationB.cs:13:60:13:62 | {...} |
| MultiImplementationA.cs:16:17:16:18 | M1 | MultiImplementationA.cs:17:5:19:5 | {...} |
| MultiImplementationA.cs:16:17:16:18 | M1 | MultiImplementationB.cs:15:5:17:5 | {...} |
| MultiImplementationA.cs:14:31:14:31 | get_Item | MultiImplementationA.cs:14:25:14:25 | i |
| MultiImplementationA.cs:15:36:15:38 | get_Item | MultiImplementationA.cs:15:31:15:31 | s |
| MultiImplementationA.cs:15:54:15:56 | set_Item | MultiImplementationA.cs:15:31:15:31 | s |
| MultiImplementationA.cs:16:17:16:18 | M1 | MultiImplementationA.cs:16:24:16:24 | i |
| MultiImplementationA.cs:18:9:18:22 | M2 | MultiImplementationA.cs:18:21:18:21 | 0 |
| MultiImplementationA.cs:20:12:20:13 | C2 | MultiImplementationA.cs:20:19:20:19 | i |
| MultiImplementationA.cs:22:6:22:7 | ~C2 | MultiImplementationA.cs:22:11:22:13 | {...} |
| MultiImplementationA.cs:22:6:22:7 | ~C2 | MultiImplementationB.cs:20:11:20:25 | {...} |
| MultiImplementationA.cs:23:28:23:35 | implicit conversion | MultiImplementationA.cs:23:50:23:53 | null |
| MultiImplementationA.cs:23:28:23:35 | implicit conversion | MultiImplementationA.cs:23:44:23:44 | i |
| MultiImplementationA.cs:36:9:36:10 | M1 | MultiImplementationA.cs:36:14:36:28 | {...} |
| MultiImplementationA.cs:36:9:36:10 | M1 | MultiImplementationB.cs:32:17:32:17 | 0 |
| MultiImplementationA.cs:37:9:37:10 | M2 | MultiImplementationA.cs:37:14:37:28 | {...} |
| 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:13:10:13:11 | M6 | NullCoalescing.cs:14:5:18:5 | {...} |
| NullCoalescing.cs:3:9:3:10 | M1 | NullCoalescing.cs:3:17:3:17 | i |
| NullCoalescing.cs:5:9:5:10 | M2 | NullCoalescing.cs:5:18:5:18 | b |
| NullCoalescing.cs:7:12:7:13 | M3 | NullCoalescing.cs:7:22:7:23 | s1 |
| NullCoalescing.cs:9:12:9:13 | M4 | NullCoalescing.cs:9:20:9:20 | b |
| NullCoalescing.cs:11:9:11:10 | M5 | NullCoalescing.cs:11:18:11:19 | b1 |
| NullCoalescing.cs:13:10:13:11 | M6 | NullCoalescing.cs:13:17:13:17 | i |
| PartialImplementationA.cs:3:12:3:18 | Partial | PartialImplementationA.cs:3:24:3:24 | i |
| Patterns.cs:5:10:5:11 | M1 | Patterns.cs:6:5:43:5 | {...} |
| Patterns.cs:50:24:50:25 | M3 | Patterns.cs:51:9:51:39 | ... ? ... : ... |
| Patterns.cs:56:26:56:27 | M5 | Patterns.cs:57:5:63:5 | {...} |
| Patterns.cs:47:24:47:25 | M2 | Patterns.cs:47:32:47:32 | c |
| Patterns.cs:50:24:50:25 | M3 | Patterns.cs:50:34:50:34 | c |
| Patterns.cs:53:24:53:25 | M4 | Patterns.cs:53:34:53:34 | c |
| Patterns.cs:56:26:56:27 | M5 | Patterns.cs:56:33:56:33 | i |
| Patterns.cs:65:26:65:27 | M6 | Patterns.cs:66:5:72:5 | {...} |
| Patterns.cs:74:26:74:27 | M7 | Patterns.cs:75:5:83:5 | {...} |
| Patterns.cs:85:26:85:27 | M8 | Patterns.cs:85:39:85:69 | ... ? ... : ... |
| Patterns.cs:87:26:87:27 | M9 | Patterns.cs:87:39:87:70 | ... ? ... : ... |
| Patterns.cs:74:26:74:27 | M7 | Patterns.cs:74:33:74:33 | i |
| Patterns.cs:85:26:85:27 | M8 | Patterns.cs:85:33:85:33 | i |
| Patterns.cs:87:26:87:27 | M9 | Patterns.cs:87:33:87:33 | i |
| Patterns.cs:93:17:93:19 | M10 | Patterns.cs:94:5:99:5 | {...} |
| PostDominance.cs:5:10:5:11 | M1 | PostDominance.cs:6:5:8:5 | {...} |
| PostDominance.cs:10:10:10:11 | M2 | PostDominance.cs:11:5:15:5 | {...} |
| PostDominance.cs:17:10:17:11 | M3 | PostDominance.cs:18:5:22:5 | {...} |
| PostDominance.cs:5:10:5:11 | M1 | PostDominance.cs:5:20:5:20 | s |
| PostDominance.cs:10:10:10:11 | M2 | PostDominance.cs:10:20:10:20 | s |
| PostDominance.cs:17:10:17:11 | M3 | PostDominance.cs:17:20:17:20 | s |
| Qualifiers.cs:7:16:7:21 | Method | Qualifiers.cs:7:28:7:31 | null |
| Qualifiers.cs:8:23:8:34 | StaticMethod | Qualifiers.cs:8:41:8:44 | null |
| Qualifiers.cs:10:10:10:10 | M | Qualifiers.cs:11:5:31:5 | {...} |
| Switch.cs:5:10:5:11 | M1 | Switch.cs:6:5:8:5 | {...} |
| Switch.cs:10:10:10:11 | M2 | Switch.cs:11:5:33:5 | {...} |
| Switch.cs:5:10:5:11 | M1 | Switch.cs:5:20:5:20 | o |
| Switch.cs:10:10:10:11 | M2 | Switch.cs:10:20:10:20 | o |
| Switch.cs:35:10:35:11 | M3 | Switch.cs:36:5:42:5 | {...} |
| Switch.cs:44:10:44:11 | M4 | Switch.cs:45:5:53:5 | {...} |
| Switch.cs:44:10:44:11 | M4 | Switch.cs:44:20:44:20 | o |
| Switch.cs:55:10:55:11 | M5 | Switch.cs:56:5:64:5 | {...} |
| Switch.cs:66:10:66:11 | M6 | Switch.cs:67:5:75:5 | {...} |
| Switch.cs:77:10:77:11 | M7 | Switch.cs:78:5:89:5 | {...} |
| Switch.cs:91:10:91:11 | M8 | Switch.cs:92:5:99:5 | {...} |
| Switch.cs:101:9:101:10 | M9 | Switch.cs:102:5:109:5 | {...} |
| Switch.cs:113:9:113:11 | M10 | Switch.cs:114:5:121:5 | {...} |
| Switch.cs:123:10:123:12 | M11 | Switch.cs:124:5:127:5 | {...} |
| Switch.cs:129:12:129:14 | M12 | Switch.cs:130:5:132:5 | {...} |
| Switch.cs:134:9:134:11 | M13 | Switch.cs:135:5:142:5 | {...} |
| Switch.cs:144:9:144:11 | M14 | Switch.cs:145:5:152:5 | {...} |
| Switch.cs:154:10:154:12 | M15 | Switch.cs:155:5:161:5 | {...} |
| Switch.cs:163:10:163:12 | M16 | Switch.cs:164:5:178:5 | {...} |
| TypeAccesses.cs:3:10:3:10 | M | TypeAccesses.cs:4:5:9:5 | {...} |
| VarDecls.cs:5:18:5:19 | M1 | VarDecls.cs:6:5:11:5 | {...} |
| VarDecls.cs:13:12:13:13 | M2 | VarDecls.cs:14:5:17:5 | {...} |
| VarDecls.cs:19:7:19:8 | M3 | VarDecls.cs:20:5:26:5 | {...} |
| Switch.cs:66:10:66:11 | M6 | Switch.cs:66:20:66:20 | s |
| Switch.cs:77:10:77:11 | M7 | Switch.cs:77:17:77:17 | i |
| Switch.cs:91:10:91:11 | M8 | Switch.cs:91:20:91:20 | o |
| Switch.cs:101:9:101:10 | M9 | Switch.cs:101:19:101:19 | s |
| Switch.cs:113:9:113:11 | M10 | Switch.cs:113:20:113:20 | s |
| Switch.cs:123:10:123:12 | M11 | Switch.cs:123:21:123:21 | o |
| Switch.cs:129:12:129:14 | M12 | Switch.cs:129:23:129:23 | o |
| Switch.cs:134:9:134:11 | M13 | Switch.cs:134:17:134:17 | i |
| Switch.cs:144:9:144:11 | M14 | Switch.cs:144:17:144:17 | i |
| Switch.cs:154:10:154:12 | M15 | Switch.cs:154:19:154:19 | b |
| Switch.cs:163:10:163:12 | M16 | Switch.cs:163:18:163:18 | i |
| TypeAccesses.cs:3:10:3:10 | M | TypeAccesses.cs:3:19:3:19 | o |
| VarDecls.cs:5:18:5:19 | M1 | VarDecls.cs:5:30:5:36 | strings |
| VarDecls.cs:13:12:13:13 | M2 | VarDecls.cs:13:22:13:22 | s |
| VarDecls.cs:19:7:19:8 | M3 | VarDecls.cs:19:15:19:15 | b |
| VarDecls.cs:28:41:28:47 | Dispose | VarDecls.cs:28:51:28:53 | {...} |
| cflow.cs:5:17:5:20 | Main | cflow.cs:6:5:35:5 | {...} |
| cflow.cs:37:17:37:22 | Switch | cflow.cs:38:5:68:5 | {...} |
| cflow.cs:70:18:70:18 | M | cflow.cs:71:5:82:5 | {...} |
| cflow.cs:84:18:84:19 | M2 | cflow.cs:85:5:88:5 | {...} |
| cflow.cs:90:18:90:19 | M3 | cflow.cs:91:5:104:5 | {...} |
| cflow.cs:106:18:106:19 | M4 | cflow.cs:107:5:117:5 | {...} |
| cflow.cs:119:20:119:21 | M5 | cflow.cs:120:5:124:5 | {...} |
| cflow.cs:5:17:5:20 | Main | cflow.cs:5:31:5:34 | args |
| cflow.cs:37:17:37:22 | Switch | cflow.cs:37:28:37:28 | a |
| cflow.cs:70:18:70:18 | M | cflow.cs:70:27:70:27 | s |
| cflow.cs:84:18:84:19 | M2 | cflow.cs:84:28:84:28 | s |
| cflow.cs:90:18:90:19 | M3 | cflow.cs:90:28:90:28 | s |
| cflow.cs:106:18:106:19 | M4 | cflow.cs:106:28:106:28 | s |
| cflow.cs:119:20:119:21 | M5 | cflow.cs:119:30:119:30 | s |
| cflow.cs:127:19:127:21 | get_Prop | cflow.cs:127:23:127:60 | {...} |
| cflow.cs:127:62:127:64 | set_Prop | cflow.cs:127:66:127:83 | {...} |
| cflow.cs:138:40:138:40 | + | cflow.cs:139:5:142:5 | {...} |
| cflow.cs:144:33:144:35 | get_Item | cflow.cs:144:37:144:54 | {...} |
| cflow.cs:144:56:144:58 | set_Item | cflow.cs:144:60:144:62 | {...} |
| cflow.cs:127:62:127:64 | set_Prop | cflow.cs:127:62:127:64 | value |
| cflow.cs:129:5:129:15 | ControlFlow | cflow.cs:129:24:129:24 | s |
| cflow.cs:134:5:134:15 | ControlFlow | cflow.cs:134:21:134:21 | i |
| cflow.cs:138:40:138:40 | + | cflow.cs:138:54:138:54 | x |
| cflow.cs:144:33:144:35 | get_Item | cflow.cs:144:28:144:28 | i |
| cflow.cs:144:56:144:58 | set_Item | cflow.cs:144:28:144:28 | i |
| cflow.cs:146:10:146:12 | For | cflow.cs:147:5:177:5 | {...} |
| cflow.cs:179:10:179:16 | Lambdas | cflow.cs:180:5:183:5 | {...} |
| cflow.cs:182:28:182:61 | delegate(...) { ... } | cflow.cs:182:45:182:61 | {...} |
| cflow.cs:181:28:181:37 | (...) => ... | cflow.cs:181:28:181:28 | x |
| cflow.cs:182:28:182:61 | delegate(...) { ... } | cflow.cs:182:42:182:42 | x |
| cflow.cs:185:10:185:18 | LogicalOr | cflow.cs:186:5:191:5 | {...} |
| cflow.cs:193:10:193:17 | Booleans | cflow.cs:194:5:206:5 | {...} |
| cflow.cs:208:10:208:11 | Do | cflow.cs:209:5:222:5 | {...} |
| cflow.cs:224:10:224:16 | Foreach | cflow.cs:225:5:238:5 | {...} |
| cflow.cs:240:10:240:13 | Goto | cflow.cs:241:5:259:5 | {...} |
| cflow.cs:261:49:261:53 | Yield | cflow.cs:262:5:277:5 | {...} |
| cflow.cs:298:10:298:10 | M | cflow.cs:299:5:301:5 | {...} |
| cflow.cs:306:60:310:5 | (...) => ... | cflow.cs:307:5:310:5 | {...} |
| cflow.cs:284:5:284:18 | ControlFlowSub | cflow.cs:284:27:284:27 | s |
| cflow.cs:286:5:286:18 | ControlFlowSub | cflow.cs:286:24:286:24 | i |
| cflow.cs:291:12:291:12 | M | cflow.cs:291:32:291:32 | f |
| cflow.cs:296:5:296:25 | NegationInConstructor | cflow.cs:296:32:296:32 | b |
| cflow.cs:298:10:298:10 | M | cflow.cs:298:16:298:16 | i |
| cflow.cs:306:60:310:5 | (...) => ... | cflow.cs:306:61:306:61 | o |
| cflow.cs:306:60:310:5 | get__getter | cflow.cs:306:60:310:5 | (...) => ... |

View File

@@ -1,5 +1,6 @@
| patterns.cs:98:10:98:20 | Entry | patterns.cs:99:5:121:5 | {...} | semmle.label | successor |
| patterns.cs:98:10:98:20 | Entry | patterns.cs:98:26:98:26 | x | semmle.label | successor |
| patterns.cs:98:10:98:20 | Normal Exit | patterns.cs:98:10:98:20 | Exit | semmle.label | successor |
| patterns.cs:98:26:98:26 | x | patterns.cs:99:5:121:5 | {...} | semmle.label | successor |
| patterns.cs:99:5:121:5 | After {...} | patterns.cs:98:10:98:20 | Normal Exit | 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:13:103:9 | Before String size = ... | semmle.label | successor |
@@ -159,9 +160,10 @@
| patterns.cs:119:33:119:38 | Before (..., ...) | patterns.cs:119:34:119:34 | 0 | 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 | Entry | patterns.cs:124:5:149:5 | {...} | semmle.label | successor |
| patterns.cs:123:10:123:21 | Entry | patterns.cs:123:30:123:30 | o | semmle.label | successor |
| patterns.cs:123:10:123:21 | Exceptional Exit | patterns.cs:123:10:123:21 | Exit | semmle.label | successor |
| patterns.cs:123:10:123:21 | Normal Exit | patterns.cs:123:10:123:21 | Exit | semmle.label | successor |
| patterns.cs:123:30:123:30 | o | patterns.cs:124:5:149:5 | {...} | semmle.label | successor |
| patterns.cs:124:5:149:5 | After {...} | patterns.cs:123:10:123:21 | Normal Exit | semmle.label | successor |
| patterns.cs:124:5:149:5 | {...} | patterns.cs:125:9:125:39 | ... ...; | semmle.label | successor |
| patterns.cs:125:9:125:39 | ... ...; | patterns.cs:125:13:125:38 | Before MyStruct s = ... | semmle.label | successor |

View File

@@ -5,7 +5,12 @@ private import semmle.code.csharp.dataflow.internal.BaseSSA
predicate defReaches(
AssignableDefinition def, BaseSsa::SimpleLocalScopeVariable v, ControlFlowNode cfn
) {
def.getTarget() = v and cfn = def.getExpr().getControlFlowNode().getASuccessor()
def.getTarget() = v and
cfn =
[
def.getExpr().getControlFlowNode(),
def.(AssignableDefinitions::ImplicitParameterDefinition).getParameter().getControlFlowNode()
].getASuccessor()
or
exists(ControlFlowNode mid | defReaches(def, v, mid) |
not mid =

View File

@@ -34,23 +34,26 @@ cfg
| obinit.cs:7:16:7:16 | A | obinit.cs:7:16:7:16 | call to method <object initializer> | obinit.cs:7:16:7:16 | After call to method <object initializer> | successor | 3 |
| obinit.cs:7:16:7:16 | A | obinit.cs:7:16:7:16 | this access | obinit.cs:7:16:7:16 | call to method <object initializer> | successor | 2 |
| obinit.cs:7:16:7:16 | A | obinit.cs:7:20:7:22 | {...} | obinit.cs:7:16:7:16 | Normal Exit | successor | 8 |
| obinit.cs:9:16:9:16 | A | obinit.cs:9:16:9:16 | After call to constructor Object | obinit.cs:9:25:9:27 | {...} | successor | 7 |
| obinit.cs:9:16:9:16 | A | obinit.cs:9:16:9:16 | After call to method <object initializer> | obinit.cs:9:16:9:16 | Before call to constructor Object | successor | 4 |
| obinit.cs:9:16:9:16 | A | obinit.cs:9:16:9:16 | Before call to constructor Object | obinit.cs:9:16:9:16 | call to constructor Object | successor | 5 |
| obinit.cs:9:16:9:16 | A | obinit.cs:9:16:9:16 | Before call to method <object initializer> | obinit.cs:9:16:9:16 | this access | successor | 1 |
| obinit.cs:9:16:9:16 | A | obinit.cs:9:16:9:16 | Entry | obinit.cs:9:16:9:16 | Before call to method <object initializer> | successor | 0 |
| obinit.cs:9:16:9:16 | A | obinit.cs:9:16:9:16 | Normal Exit | obinit.cs:9:16:9:16 | Exit | successor | 9 |
| obinit.cs:9:16:9:16 | A | obinit.cs:9:16:9:16 | call to constructor Object | obinit.cs:9:16:9:16 | After call to constructor Object | successor | 6 |
| obinit.cs:9:16:9:16 | A | obinit.cs:9:16:9:16 | call to method <object initializer> | obinit.cs:9:16:9:16 | After call to method <object initializer> | successor | 3 |
| obinit.cs:9:16:9:16 | A | obinit.cs:9:16:9:16 | this access | obinit.cs:9:16:9:16 | call to method <object initializer> | successor | 2 |
| obinit.cs:9:16:9:16 | A | obinit.cs:9:25:9:27 | {...} | obinit.cs:9:16:9:16 | Normal Exit | successor | 8 |
| obinit.cs:11:16:11:16 | A | obinit.cs:11:16:11:16 | Entry | obinit.cs:11:34:11:37 | Before call to constructor A | successor | 0 |
| obinit.cs:11:16:11:16 | A | obinit.cs:11:16:11:16 | Normal Exit | obinit.cs:11:16:11:16 | Exit | successor | 6 |
| obinit.cs:11:16:11:16 | A | obinit.cs:11:34:11:37 | After call to constructor A | obinit.cs:11:42:11:44 | {...} | successor | 4 |
| obinit.cs:11:16:11:16 | A | obinit.cs:11:34:11:37 | Before call to constructor A | obinit.cs:11:39:11:39 | access to parameter y | successor | 1 |
| obinit.cs:11:16:11:16 | A | obinit.cs:11:34:11:37 | call to constructor A | obinit.cs:11:34:11:37 | After call to constructor A | successor | 3 |
| obinit.cs:11:16:11:16 | A | obinit.cs:11:39:11:39 | access to parameter y | obinit.cs:11:34:11:37 | call to constructor A | successor | 2 |
| obinit.cs:11:16:11:16 | A | obinit.cs:11:42:11:44 | {...} | obinit.cs:11:16:11:16 | Normal Exit | successor | 5 |
| obinit.cs:9:16:9:16 | A | obinit.cs:9:16:9:16 | After call to constructor Object | obinit.cs:9:25:9:27 | {...} | successor | 8 |
| obinit.cs:9:16:9:16 | A | obinit.cs:9:16:9:16 | After call to method <object initializer> | obinit.cs:9:16:9:16 | Before call to constructor Object | successor | 5 |
| obinit.cs:9:16:9:16 | A | obinit.cs:9:16:9:16 | Before call to constructor Object | obinit.cs:9:16:9:16 | call to constructor Object | successor | 6 |
| obinit.cs:9:16:9:16 | A | obinit.cs:9:16:9:16 | Before call to method <object initializer> | obinit.cs:9:16:9:16 | this access | successor | 2 |
| obinit.cs:9:16:9:16 | A | obinit.cs:9:16:9:16 | Entry | obinit.cs:9:22:9:22 | y | successor | 0 |
| obinit.cs:9:16:9:16 | A | obinit.cs:9:16:9:16 | Normal Exit | obinit.cs:9:16:9:16 | Exit | successor | 10 |
| obinit.cs:9:16:9:16 | A | obinit.cs:9:16:9:16 | call to constructor Object | obinit.cs:9:16:9:16 | After call to constructor Object | successor | 7 |
| obinit.cs:9:16:9:16 | A | obinit.cs:9:16:9:16 | call to method <object initializer> | obinit.cs:9:16:9:16 | After call to method <object initializer> | successor | 4 |
| obinit.cs:9:16:9:16 | A | obinit.cs:9:16:9:16 | this access | obinit.cs:9:16:9:16 | call to method <object initializer> | successor | 3 |
| obinit.cs:9:16:9:16 | A | obinit.cs:9:22:9:22 | y | obinit.cs:9:16:9:16 | Before call to method <object initializer> | successor | 1 |
| obinit.cs:9:16:9:16 | A | obinit.cs:9:25:9:27 | {...} | obinit.cs:9:16:9:16 | Normal Exit | successor | 9 |
| obinit.cs:11:16:11:16 | A | obinit.cs:11:16:11:16 | Entry | obinit.cs:11:22:11:22 | y | successor | 0 |
| obinit.cs:11:16:11:16 | A | obinit.cs:11:16:11:16 | Normal Exit | obinit.cs:11:16:11:16 | Exit | successor | 8 |
| obinit.cs:11:16:11:16 | A | obinit.cs:11:22:11:22 | y | obinit.cs:11:29:11:29 | z | successor | 1 |
| obinit.cs:11:16:11:16 | A | obinit.cs:11:29:11:29 | z | obinit.cs:11:34:11:37 | Before call to constructor A | successor | 2 |
| obinit.cs:11:16:11:16 | A | obinit.cs:11:34:11:37 | After call to constructor A | obinit.cs:11:42:11:44 | {...} | successor | 6 |
| obinit.cs:11:16:11:16 | A | obinit.cs:11:34:11:37 | Before call to constructor A | obinit.cs:11:39:11:39 | access to parameter y | successor | 3 |
| obinit.cs:11:16:11:16 | A | obinit.cs:11:34:11:37 | call to constructor A | obinit.cs:11:34:11:37 | After call to constructor A | successor | 5 |
| obinit.cs:11:16:11:16 | A | obinit.cs:11:39:11:39 | access to parameter y | obinit.cs:11:34:11:37 | call to constructor A | successor | 4 |
| obinit.cs:11:16:11:16 | A | obinit.cs:11:42:11:44 | {...} | obinit.cs:11:16:11:16 | Normal Exit | successor | 7 |
| obinit.cs:15:16:15:16 | B | obinit.cs:15:16:15:16 | After call to method <object initializer> | obinit.cs:15:22:15:25 | Before call to constructor A | successor | 4 |
| obinit.cs:15:16:15:16 | B | obinit.cs:15:16:15:16 | Before call to method <object initializer> | obinit.cs:15:16:15:16 | this access | successor | 1 |
| obinit.cs:15:16:15:16 | B | obinit.cs:15:16:15:16 | Entry | obinit.cs:15:16:15:16 | Before call to method <object initializer> | successor | 0 |

View File

@@ -50,6 +50,15 @@ signature module AstSig<LocationSig Location> {
/** Gets the body of callable `c`, if any. */
AstNode callableGetBody(Callable c);
/** A parameter of a callable. */
class Parameter extends AstNode {
/** Gets the default value of this parameter, if any. */
Expr getDefaultValue();
}
/** Gets the `index`th parameter of callable `c`. */
Parameter callableGetParameter(Callable c, int index);
/** A statement. */
class Stmt extends AstNode;
@@ -456,11 +465,11 @@ module Make0<LocationSig Location, AstSig<Location> Ast> {
}
/**
* An additional context needed to identify the body parts of a callable.
* An additional context needed to identify the parameters or body parts of a callable.
*
* When not used, instantiate with the `Void` type.
*/
class CallableBodyPartContext {
class CallableContext {
/** Gets a textual representation of this context. */
string toString();
}
@@ -473,9 +482,13 @@ module Make0<LocationSig Location, AstSig<Location> Ast> {
* of the body parts, in case a singleton `callableGetBody(c)` is inadequate
* to describe the child nodes of `c`.
*/
default AstNode callableGetBodyPart(Callable c, CallableBodyPartContext ctx, int index) {
none()
}
default AstNode callableGetBodyPart(Callable c, CallableContext ctx, int index) { none() }
/**
* Gets the `index`th parameter of `c` in context `ctx`. The indices do not
* need to be consecutive nor start from a specific index.
*/
default Parameter callableGetParameter(Callable c, CallableContext ctx, int index) { none() }
}
/**
@@ -484,6 +497,7 @@ module Make0<LocationSig Location, AstSig<Location> Ast> {
*/
module Make1<InputSig1 Input1> {
private import codeql.util.DenseRank
private import codeql.util.Option
/**
* Holds if `n` is executed in post-order or in-order. This means that an
@@ -592,9 +606,14 @@ module Make0<LocationSig Location, AstSig<Location> Ast> {
or
any(ForeachStmt foreachstmt).getCollection() = n and kind.isEmptiness()
or
n instanceof CatchClause and kind.isMatching()
or
n instanceof Case and kind.isMatching()
kind.isMatching() and
(
n instanceof CatchClause
or
n instanceof Case
or
exists(n.(Parameter).getDefaultValue())
)
}
/**
@@ -692,7 +711,7 @@ module Make0<LocationSig Location, AstSig<Location> Ast> {
private module BodyPartDenseRankInput implements DenseRankInputSig2 {
class C1 = Callable;
class C2 = Input1::CallableBodyPartContext;
class C2 = Input1::CallableContext;
class Ranked = AstNode;
@@ -703,23 +722,56 @@ module Make0<LocationSig Location, AstSig<Location> Ast> {
private predicate getRankedBodyPart = DenseRank2<BodyPartDenseRankInput>::denseRank/3;
private AstNode getBodyEntry(Callable c) {
private class CallableContextOption = Option<Input1::CallableContext>::Option;
private AstNode getBodyEntry(Callable c, CallableContextOption ctx) {
result = callableGetBody(c) and
not exists(getRankedBodyPart(c, _, _))
not exists(getRankedBodyPart(c, _, _)) and
ctx.isNone()
or
result = getRankedBodyPart(c, _, 1)
result = getRankedBodyPart(c, ctx.asSome(), 1)
}
private AstNode getBodyExit(Callable c) {
result = callableGetBody(c) and
not exists(getRankedBodyPart(c, _, _))
or
exists(Input1::CallableBodyPartContext ctx, int last |
exists(Input1::CallableContext ctx, int last |
result = getRankedBodyPart(c, ctx, last) and
not exists(getRankedBodyPart(c, ctx, last + 1))
)
}
private module ParameterDenseRankInput implements DenseRankInputSig1 {
class C = Callable;
class Ranked = Parameter;
int getRank(C c, Ranked child) {
child = callableGetParameter(c, result) and
not exists(Input1::callableGetParameter(c, _, _))
}
}
private module ParameterCtxDenseRankInput implements DenseRankInputSig2 {
class C1 = Callable;
class C2 = Input1::CallableContext;
class Ranked = AstNode;
int getRank(C1 c, C2 ctx, Ranked child) {
child = Input1::callableGetParameter(c, ctx, result)
}
}
private Parameter getRankedParameter(Callable c, CallableContextOption ctx, int rnk) {
result = DenseRank1<ParameterDenseRankInput>::denseRank(c, rnk) and
ctx.isNone()
or
result = DenseRank2<ParameterCtxDenseRankInput>::denseRank(c, ctx.asSome(), rnk)
}
cached
private newtype TNode =
TBeforeNode(AstNode n) { Input1::cfgCachedStageRef() and exists(getEnclosingCallable(n)) } or
@@ -1320,15 +1372,45 @@ module Make0<LocationSig Location, AstSig<Location> Ast> {
)
}
pragma[nomagic]
private AstNode getParameterOrBodyEntry(Callable c, CallableContextOption ctx, int i) {
result = getRankedParameter(c, ctx, i)
or
(
not exists(getRankedParameter(c, _, _)) and
i = 1
or
exists(getRankedParameter(c, ctx, i - 1)) and
not exists(getRankedParameter(c, ctx, i))
) and
result = getBodyEntry(c, ctx)
}
/** Holds if there is a local non-abrupt step from `n1` to `n2`. */
private predicate explicitStep(PreControlFlowNode n1, PreControlFlowNode n2) {
Input2::step(n1, n2)
or
exists(Callable c |
n1.(EntryNodeImpl).getEnclosingCallable() = c and
n2.isBefore(getBodyEntry(c))
n2.isBefore(getParameterOrBodyEntry(c, _, 1))
or
exists(Input1::CallableBodyPartContext ctx, int i |
exists(CallableContextOption ctx, Parameter p, int i | p = getRankedParameter(c, ctx, i) |
exists(ConditionalSuccessor t |
n1.isAfterValue(p, t) and
t.getKind().isMatching()
|
t.getValue() = true and
n2.isBefore(getParameterOrBodyEntry(c, ctx, i + 1))
or
t.getValue() = false and
n2.isBefore(p.getDefaultValue())
)
or
n1.isAfter(p.getDefaultValue()) and
n2.isBefore(getParameterOrBodyEntry(c, ctx, i + 1))
)
or
exists(Input1::CallableContext ctx, int i |
n1.isAfter(getRankedBodyPart(c, ctx, i)) and
n2.isBefore(getRankedBodyPart(c, ctx, i + 1))
)
@@ -2154,7 +2236,10 @@ module Make0<LocationSig Location, AstSig<Location> Ast> {
any(MatchingSuccessor m | m.getValue() = true))
) and
// allow for functions with multiple bodies
not (t instanceof DirectSuccessor and node instanceof ControlFlow::EntryNode)
not exists(Callable c |
successor.getAstNode() = getBodyEntry(c, _) and
strictcount(getBodyEntry(c, _)) > 1
)
}
/**
@@ -2203,11 +2288,29 @@ module Make0<LocationSig Location, AstSig<Location> Ast> {
/**
* Holds if `c` does not include `callableGetBody` in a non-empty `callableGetBodyPart`.
*/
query predicate bodyPartOverlap(Callable c) {
query predicate bodyPartNonOverlap(Callable c) {
exists(callableGetBody(c)) and
exists(Input1::callableGetBodyPart(c, _, _)) and
not Input1::callableGetBodyPart(c, _, _) = callableGetBody(c)
}
/**
* Holds if `c` does not include `p` in `callableGetParameter` but does in
* `Input1::callableGetParameter`.
*/
query predicate parameterNonOverlap(Callable c, Parameter p) {
p = Input1::callableGetParameter(c, _, _) and
not p = callableGetParameter(c, _)
}
/**
* Holds if a parameter `p` of a callable `c` does not have `c` as its
* enclosing callable.
*/
query predicate parameterEnclosingCallable(Parameter p, Callable c) {
p = callableGetParameter(c, _) and
not c = getEnclosingCallable(p)
}
}
}
}