mirror of
https://github.com/github/codeql.git
synced 2025-12-16 16:53:25 +01:00
C#: Improve CFG for exception handlers
Use generic CFG splitting to add a new type of split for exception handlers, `ExceptionHandlerSplit`, which tags eachs node belonging to a `catch` clause with the type of exception being caught. This allows for a more accurate CFG for `try-catch` statements, where exception filters are handled properly.
This commit is contained in:
@@ -971,6 +971,8 @@ class TryStmt extends Stmt, @try_stmt {
|
||||
* general `catch` clause (`GeneralCatchClause`).
|
||||
*/
|
||||
class CatchClause extends Stmt, @catch {
|
||||
/** Gets the `try` statement that this `catch` clause belongs to. */
|
||||
TryStmt getTryStmt() { result.getACatchClause() = this }
|
||||
|
||||
/** Gets the block of this `catch` clause. */
|
||||
BlockStmt getBlock() { result.getParent() = this }
|
||||
@@ -1007,6 +1009,15 @@ class CatchClause extends Stmt, @catch {
|
||||
|
||||
/** Holds if this `catch` clause has a filter. */
|
||||
predicate hasFilterClause() { exists(getFilterClause()) }
|
||||
|
||||
/** Holds if this is the last `catch` clause in the `try` statement that it belongs to. */
|
||||
predicate isLast() {
|
||||
exists(TryStmt ts, int last |
|
||||
ts = this.getTryStmt() and
|
||||
last = max(int i | exists(ts.getCatchClause(i))) and
|
||||
this = ts.getCatchClause(last)
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -101,7 +101,7 @@ class Completion extends TCompletion {
|
||||
or
|
||||
not isNullnessConstant(cfe, _) and
|
||||
this = TNullnessCompletion(_)
|
||||
else if mustHaveMatchingCompletion(_, cfe) then
|
||||
else if mustHaveMatchingCompletion(cfe) then
|
||||
exists(boolean value |
|
||||
isMatchingConstant(cfe, value) |
|
||||
this = TMatchingCompletion(value)
|
||||
@@ -314,6 +314,11 @@ private predicate inBooleanContext(Expr e, boolean isBooleanCompletionForParent)
|
||||
isBooleanCompletionForParent = false
|
||||
)
|
||||
or
|
||||
exists(SpecificCatchClause scc |
|
||||
scc.getFilterClause() = e |
|
||||
isBooleanCompletionForParent = false
|
||||
)
|
||||
or
|
||||
exists(LogicalNotExpr lne |
|
||||
lne.getAnOperand() = e |
|
||||
inBooleanContext(lne, _) and
|
||||
@@ -396,14 +401,20 @@ private predicate inNullnessContext(Expr e, boolean isNullnessCompletionForParen
|
||||
)
|
||||
}
|
||||
|
||||
/**
|
||||
* Holds if a normal completion of `e` must be a matching completion. Thats is,
|
||||
* whether `e` determines a match in a `switch` statement.
|
||||
*/
|
||||
private predicate mustHaveMatchingCompletion(SwitchStmt ss, Expr e) {
|
||||
e = ss.getAConstCase().getExpr()
|
||||
private predicate mustHaveMatchingCompletion(SwitchStmt ss, ControlFlowElement cfe) {
|
||||
cfe = ss.getAConstCase().getExpr()
|
||||
or
|
||||
e = ss.getATypeCase().getTypeAccess() // use type access to represent the type test
|
||||
cfe = ss.getATypeCase().getTypeAccess() // use type access to represent the type test
|
||||
}
|
||||
|
||||
/**
|
||||
* Holds if a normal completion of `cfe` must be a matching completion. Thats is,
|
||||
* whether `cfe` determines a match in a `switch` statement or `catch` clause.
|
||||
*/
|
||||
private predicate mustHaveMatchingCompletion(ControlFlowElement cfe) {
|
||||
mustHaveMatchingCompletion(_, cfe)
|
||||
or
|
||||
cfe instanceof SpecificCatchClause
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -352,8 +352,8 @@ class ControlFlowElementNode extends ControlFlowNode, TNode {
|
||||
}
|
||||
|
||||
class Split = SplitImpl;
|
||||
|
||||
class FinallySplit = FinallySplitting::FinallySplitImpl;
|
||||
class ExceptionHandlerSplit = ExceptionHandlerSplitting::ExceptionHandlerSplitImpl;
|
||||
|
||||
/**
|
||||
* DEPRECATED: Use `ControlFlowElementNode` instead.
|
||||
@@ -882,11 +882,11 @@ module Internal {
|
||||
not this instanceof TypeCase and
|
||||
not this instanceof LoopStmt and
|
||||
not this instanceof TryStmt and
|
||||
not this instanceof SpecificCatchClause and
|
||||
not this instanceof JumpStmt
|
||||
}
|
||||
|
||||
override ControlFlowElement getChildElement(int i) {
|
||||
not this instanceof CatchClause and
|
||||
not this instanceof FixedStmt and
|
||||
not this instanceof UsingStmt and
|
||||
result = this.getChild(i)
|
||||
@@ -895,13 +895,6 @@ module Internal {
|
||||
i = 0 and result = gcc.getBlock()
|
||||
)
|
||||
or
|
||||
this = any(SpecificCatchClause scc |
|
||||
exists(int j |
|
||||
j = rank[i + 1](int k | exists(getSpecificCatchClauseChild(scc, k)) | k) |
|
||||
result = getSpecificCatchClauseChild(scc, j)
|
||||
)
|
||||
)
|
||||
or
|
||||
this = any(FixedStmt fs |
|
||||
result = fs.getVariableDeclExpr(i)
|
||||
or
|
||||
@@ -926,14 +919,6 @@ module Internal {
|
||||
}
|
||||
}
|
||||
|
||||
private ControlFlowElement getSpecificCatchClauseChild(SpecificCatchClause scc, int i) {
|
||||
i = 0 and result = scc.getVariableDeclExpr()
|
||||
or
|
||||
i = 1 and result = scc.getFilterClause()
|
||||
or
|
||||
i = 2 and result = scc.getBlock()
|
||||
}
|
||||
|
||||
/**
|
||||
* An assignment operation that has an expanded version. We use the expanded
|
||||
* version in the control flow graph in order to get better data flow / taint
|
||||
@@ -1085,6 +1070,7 @@ module Internal {
|
||||
this instanceof ConstCase or
|
||||
this instanceof TypeCase or
|
||||
this instanceof TryStmt or
|
||||
this instanceof SpecificCatchClause or
|
||||
(this instanceof LoopStmt and not this instanceof ForeachStmt) or
|
||||
this instanceof LogicalNotExpr or
|
||||
this instanceof LogicalAndExpr or
|
||||
@@ -1394,12 +1380,40 @@ module Internal {
|
||||
result = lastTryStmtFinally(ts, c) and
|
||||
not c instanceof NormalCompletion
|
||||
or
|
||||
// If there is no `finally` block, last elements are from the body or
|
||||
// any of the `catch` clauses
|
||||
// If there is no `finally` block, last elements are from the body, from
|
||||
// the blocks of one of the `catch` clauses, or from the last `catch` clause
|
||||
not ts.hasFinally() and
|
||||
result = getBlockOrCatchFinallyPred(ts, c)
|
||||
)
|
||||
or
|
||||
cfe = any(SpecificCatchClause scc |
|
||||
// Last element of `catch` block
|
||||
result = lastCatchClauseBlock(cfe, c)
|
||||
or
|
||||
(
|
||||
if scc.isLast() then (
|
||||
// Last `catch` clause inherits throw completions from the `try` block,
|
||||
// when the clause does not match
|
||||
throwMayBeUncaught(scc, c) and
|
||||
(
|
||||
// Incompatible exception type: clause itself
|
||||
result = scc
|
||||
or
|
||||
// Incompatible filter
|
||||
result = lastSpecificCatchClauseFilterClause(scc, _)
|
||||
)
|
||||
) else (
|
||||
// Incompatible exception type: clause itself
|
||||
result = scc and
|
||||
c = any(MatchingCompletion mc | not mc.isMatch())
|
||||
or
|
||||
// Incompatible filter
|
||||
result = lastSpecificCatchClauseFilterClause(scc, c) and
|
||||
c instanceof FalseCompletion
|
||||
)
|
||||
)
|
||||
)
|
||||
or
|
||||
cfe = any(JumpStmt js |
|
||||
// Post-order: element itself
|
||||
result = js and
|
||||
@@ -1632,8 +1646,18 @@ module Internal {
|
||||
}
|
||||
|
||||
pragma [nomagic]
|
||||
private ControlFlowElement lastTryStmtCatchClause(TryStmt ts, Completion c) {
|
||||
result = last(ts.getACatchClause(), c)
|
||||
ControlFlowElement lastTryStmtCatchClause(TryStmt ts, int i, Completion c) {
|
||||
result = last(ts.getCatchClause(i), c)
|
||||
}
|
||||
|
||||
pragma [nomagic]
|
||||
private ControlFlowElement lastSpecificCatchClauseFilterClause(SpecificCatchClause scc, Completion c) {
|
||||
result = last(scc.getFilterClause(), c)
|
||||
}
|
||||
|
||||
pragma [nomagic]
|
||||
private ControlFlowElement lastCatchClauseBlock(CatchClause cc, Completion c) {
|
||||
result = last(cc.getBlock(), c)
|
||||
}
|
||||
|
||||
pragma [nomagic]
|
||||
@@ -1651,36 +1675,48 @@ module Internal {
|
||||
result = last(fs.getInitializer(i), c)
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets a last element from the `try` block of this `try` statement that may
|
||||
* finish with completion `c`, such that control may be transferred to the
|
||||
* `finally` block (if it exists).
|
||||
*/
|
||||
private ControlFlowElement getBlockFinallyPred(TryStmt ts, Completion c) {
|
||||
result = lastTryStmtBlock(ts, c)
|
||||
and
|
||||
(
|
||||
// Any non-throw completion will always continue to the `finally` block
|
||||
not c instanceof ThrowCompletion
|
||||
or
|
||||
// A throw completion will only continue to the `finally` block if it is
|
||||
// definitely not handled by a `catch` clause
|
||||
exists(ExceptionClass ec |
|
||||
ec = c.(ThrowCompletion).getExceptionClass() and
|
||||
not ts.definitelyHandles(ec, _)
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets a last element from a `try` or `catch` block of this `try` statement
|
||||
* that may finish with completion `c`, such that control may be transferred
|
||||
* to the `finally` block (if it exists).
|
||||
*/
|
||||
pragma [noinline]
|
||||
pragma [nomagic]
|
||||
private ControlFlowElement getBlockOrCatchFinallyPred(TryStmt ts, Completion c) {
|
||||
result = getBlockFinallyPred(ts, c) or
|
||||
result = lastTryStmtCatchClause(ts, c)
|
||||
result = lastTryStmtBlock(ts, c) and
|
||||
(
|
||||
// Any non-throw completion from the `try` block will always continue directly
|
||||
// to the `finally` block
|
||||
not c instanceof ThrowCompletion
|
||||
or
|
||||
// Any completion from the `try` block will continue to the `finally` block
|
||||
// when there are no catch clauses
|
||||
not exists(ts.getACatchClause())
|
||||
)
|
||||
or
|
||||
// Last element from any of the `catch` clause blocks continues to the `finally` block
|
||||
result = lastCatchClauseBlock(ts.getACatchClause(), c)
|
||||
or
|
||||
// Last element of last `catch` clause continues to the `finally` block
|
||||
exists(int last |
|
||||
ts.getCatchClause(last).isLast() |
|
||||
result = lastTryStmtCatchClause(ts, last, c)
|
||||
)
|
||||
}
|
||||
|
||||
/**
|
||||
* Holds if the `try` block that catch clause `scc` belongs to may throw an
|
||||
* exception of type `c`, where no `catch` clause is guaranteed to catch it.
|
||||
* The catch clause `last` is the last catch clause in the `try` statement
|
||||
* that it belongs to.
|
||||
*/
|
||||
pragma [nomagic]
|
||||
private predicate throwMayBeUncaught(SpecificCatchClause last, ThrowCompletion c) {
|
||||
exists(TryStmt ts |
|
||||
ts = last.getTryStmt() and
|
||||
exists(lastTryStmtBlock(ts, c)) and
|
||||
not ts.definitelyHandles(c.getExceptionClass(), _) and
|
||||
last.isLast()
|
||||
)
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -2197,16 +2233,83 @@ module Internal {
|
||||
result = first(ts.getBlock()) and
|
||||
c instanceof SimpleCompletion
|
||||
or
|
||||
// Flow from last element of body to first element of a relevant `catch` clause
|
||||
exists(ExceptionClass ec |
|
||||
cfe = lastTryStmtBlock(ts, c) and
|
||||
ec = c.(ThrowCompletion).getExceptionClass() and
|
||||
result = first(ts.getAnExceptionHandler(ec))
|
||||
// Flow from last element of body to first `catch` clause
|
||||
exists(getAThrownException(ts, cfe, c)) and
|
||||
result = first(ts.getCatchClause(0))
|
||||
or
|
||||
exists(SpecificCatchClause scc, int i |
|
||||
scc = ts.getCatchClause(i) |
|
||||
cfe = scc and
|
||||
scc = lastTryStmtCatchClause(ts, i, c) and
|
||||
(
|
||||
// Flow from one `catch` clause to the next
|
||||
result = first(ts.getCatchClause(i + 1)) and
|
||||
c = any(MatchingCompletion mc | not mc.isMatch())
|
||||
or
|
||||
// Flow from last `catch` clause to first element of `finally` block
|
||||
ts.getCatchClause(i).isLast() and
|
||||
result = first(ts.getFinally()) and
|
||||
c instanceof ThrowCompletion // inherited from `try` block
|
||||
)
|
||||
or
|
||||
cfe = lastTryStmtCatchClause(ts, i, c) and
|
||||
cfe = lastSpecificCatchClauseFilterClause(scc, _) and
|
||||
(
|
||||
// Flow from last element of `catch` clause filter to next `catch` clause
|
||||
result = first(ts.getCatchClause(i + 1)) and
|
||||
c instanceof FalseCompletion
|
||||
or
|
||||
// Flow from last element of `catch` clause filter, of last clause, to first
|
||||
// element of `finally` block
|
||||
ts.getCatchClause(i).isLast() and
|
||||
result = first(ts.getFinally()) and
|
||||
c instanceof ThrowCompletion // inherited from `try` block
|
||||
)
|
||||
or
|
||||
// Flow from last element of a `catch` block to first element of `finally` block
|
||||
cfe = lastCatchClauseBlock(scc, c) and
|
||||
result = first(ts.getFinally())
|
||||
)
|
||||
or
|
||||
// Flow into the `finally` block
|
||||
cfe = getBlockOrCatchFinallyPred(ts, c) and
|
||||
result = first(ts.getFinally())
|
||||
// Flow from last element of `try` block to first element of `finally` block
|
||||
cfe = lastTryStmtBlock(ts, c) and
|
||||
result = first(ts.getFinally()) and
|
||||
(
|
||||
c instanceof ThrowCompletion
|
||||
implies
|
||||
not exists(ts.getACatchClause())
|
||||
)
|
||||
)
|
||||
or
|
||||
exists(SpecificCatchClause scc |
|
||||
// Flow from catch clause to variable declaration/filter clause/block
|
||||
cfe = scc and
|
||||
c.(MatchingCompletion).isMatch() and
|
||||
exists(ControlFlowElement next |
|
||||
result = first(next) |
|
||||
if exists(scc.getVariableDeclExpr()) then
|
||||
next = scc.getVariableDeclExpr()
|
||||
else if exists(scc.getFilterClause()) then
|
||||
next = scc.getFilterClause()
|
||||
else
|
||||
next = scc.getBlock()
|
||||
)
|
||||
or
|
||||
// Flow from variable declaration to filter clause/block
|
||||
cfe = last(scc.getVariableDeclExpr(), c) and
|
||||
c instanceof SimpleCompletion and
|
||||
exists(ControlFlowElement next |
|
||||
result = first(next) |
|
||||
if exists(scc.getFilterClause()) then
|
||||
next = scc.getFilterClause()
|
||||
else
|
||||
next = scc.getBlock()
|
||||
)
|
||||
or
|
||||
// Flow from filter to block
|
||||
cfe = last(scc.getFilterClause(), c) and
|
||||
c instanceof TrueCompletion and
|
||||
result = first(scc.getBlock())
|
||||
)
|
||||
or
|
||||
// Post-order: flow from last element of child to statement itself
|
||||
@@ -2231,6 +2334,15 @@ module Internal {
|
||||
)
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets an exception type that is thrown by `cfe` in the block of `try` statement
|
||||
* `ts`. Throw completion `c` matches the exception type.
|
||||
*/
|
||||
ExceptionClass getAThrownException(TryStmt ts, ControlFlowElement cfe, ThrowCompletion c) {
|
||||
cfe = lastTryStmtBlock(ts, c) and
|
||||
result = c.getExceptionClass()
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the condition of `for` loop `fs` if it exists, otherwise the body.
|
||||
*/
|
||||
@@ -2274,7 +2386,7 @@ module Internal {
|
||||
class SplitImpl extends TSplit {
|
||||
/** Gets a textual representation of this split. */
|
||||
string toString() { none() }
|
||||
|
||||
|
||||
/**
|
||||
* INTERNAL: Do not use.
|
||||
*
|
||||
@@ -2288,7 +2400,7 @@ module Internal {
|
||||
this.hasSuccessor(pred, cfe, _)
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* INTERNAL: Do not use.
|
||||
*
|
||||
@@ -2299,7 +2411,7 @@ module Internal {
|
||||
predicate hasEntry(ControlFlowElement pred, ControlFlowElement succ, Completion c) {
|
||||
none()
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* INTERNAL: Do not use.
|
||||
*
|
||||
@@ -2310,7 +2422,7 @@ module Internal {
|
||||
predicate hasExit(ControlFlowElement pred, ControlFlowElement succ, Completion c) {
|
||||
none()
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* INTERNAL: Do not use.
|
||||
*
|
||||
@@ -2321,7 +2433,7 @@ module Internal {
|
||||
predicate hasExit(ControlFlowElement pred, Completion c) {
|
||||
none()
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* INTERNAL: Do not use.
|
||||
*
|
||||
@@ -2534,12 +2646,173 @@ module Internal {
|
||||
}
|
||||
}
|
||||
|
||||
module ExceptionHandlerSplitting {
|
||||
private newtype TMatch = TAlways() or TMaybe() or TNever()
|
||||
|
||||
/**
|
||||
* A split for elements belonging to a `catch` clause, which determines the type of
|
||||
* exception to handle. For example, in
|
||||
*
|
||||
* ```
|
||||
* try
|
||||
* {
|
||||
* if (M() > 0)
|
||||
* throw new ArgumentException();
|
||||
* else if (M() < 0)
|
||||
* throw new ArithmeticException("negative");
|
||||
* else
|
||||
* return;
|
||||
* }
|
||||
* catch (ArgumentException e)
|
||||
* {
|
||||
* Log.Write("M() positive");
|
||||
* }
|
||||
* catch (ArithmeticException e) when (e.Message != null)
|
||||
* {
|
||||
* Log.Write($"M() {e.Message}");
|
||||
* }
|
||||
* ```
|
||||
*
|
||||
* all control flow nodes in
|
||||
* ```
|
||||
* catch (ArgumentException e)
|
||||
* ```
|
||||
* and
|
||||
* ```
|
||||
* catch (ArithmeticException e) when (e.Message != null)
|
||||
* ```
|
||||
* have two splits: one representing the `try` block throwing an `ArgumentException`,
|
||||
* and one representing the `try` block throwing an `ArithmeticException`.
|
||||
*/
|
||||
class ExceptionHandlerSplitImpl extends Split, TExceptionHandlerSplit {
|
||||
private ExceptionClass ec;
|
||||
|
||||
ExceptionHandlerSplitImpl() {
|
||||
this = TExceptionHandlerSplit(ec)
|
||||
}
|
||||
|
||||
override string toString() {
|
||||
result = "exception: " + ec.toString()
|
||||
}
|
||||
|
||||
override predicate hasEntry(ControlFlowElement pred, ControlFlowElement succ, Completion c) {
|
||||
// Entry into first catch clause
|
||||
exists(TryStmt ts |
|
||||
ec = getAThrownException(ts, pred, c) |
|
||||
succ = succ(pred, c) and
|
||||
succ = ts.getCatchClause(0).(SpecificCatchClause)
|
||||
)
|
||||
}
|
||||
|
||||
/**
|
||||
* Holds if this split applies to catch clause `scc`. The parameter `match`
|
||||
* indicates whether the catch clause `scc` may match the exception type of
|
||||
* this split.
|
||||
*/
|
||||
private predicate appliesToCatchClause(SpecificCatchClause scc, TMatch match) {
|
||||
exists(TryStmt ts |
|
||||
ec = getAThrownException(ts, _, _) and
|
||||
scc = ts.getACatchClause() |
|
||||
if scc.getCaughtExceptionType() = ec.getABaseType*() then
|
||||
match = TAlways()
|
||||
else if scc.getCaughtExceptionType() = ec.getASubType+() then
|
||||
match = TMaybe()
|
||||
else
|
||||
match = TNever()
|
||||
)
|
||||
}
|
||||
|
||||
/**
|
||||
* Holds if this split applies to control flow element `pred`, where `pred`
|
||||
* is a valid predecessor with completion `c`.
|
||||
*/
|
||||
private predicate appliesToPredecessor(ControlFlowElement pred, Completion c) {
|
||||
this.appliesTo(pred) and
|
||||
(exists(succ(pred, c)) or exists(succExit(pred, c))) and
|
||||
(
|
||||
pred instanceof SpecificCatchClause
|
||||
implies
|
||||
pred = any(SpecificCatchClause scc |
|
||||
if c instanceof MatchingCompletion then
|
||||
exists(TMatch match |
|
||||
this.appliesToCatchClause(scc, match) |
|
||||
c = any(MatchingCompletion mc |
|
||||
if mc.isMatch() then
|
||||
match != TNever()
|
||||
else
|
||||
match != TAlways()
|
||||
)
|
||||
)
|
||||
else (
|
||||
(scc.isLast() and c instanceof ThrowCompletion)
|
||||
implies
|
||||
exists(TMatch match |
|
||||
this.appliesToCatchClause(scc, match) |
|
||||
match != TAlways()
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
/**
|
||||
* Holds if this split applies to `pred`, and `pred` may exit this split
|
||||
* with throw completion `c`, because it belongs to the last `catch` clause
|
||||
* in a `try` statement.
|
||||
*/
|
||||
private predicate hasLastExit(ControlFlowElement pred, ThrowCompletion c) {
|
||||
this.appliesToPredecessor(pred, c) and
|
||||
exists(TryStmt ts, SpecificCatchClause scc, int last |
|
||||
pred = lastTryStmtCatchClause(ts, last, c) |
|
||||
ts.getCatchClause(last) = scc and
|
||||
scc.isLast() and
|
||||
c.getExceptionClass() = ec
|
||||
)
|
||||
}
|
||||
|
||||
override predicate hasExit(ControlFlowElement pred, ControlFlowElement succ, Completion c) {
|
||||
this.appliesToPredecessor(pred, c) and
|
||||
succ = succ(pred, c) and
|
||||
(
|
||||
// Exit out to `catch` clause block
|
||||
succ = first(any(SpecificCatchClause scc).getBlock())
|
||||
or
|
||||
// Exit out to a general `catch` clause
|
||||
succ instanceof GeneralCatchClause
|
||||
or
|
||||
// Exit out from last `catch` clause (no catch clauses match)
|
||||
this.hasLastExit(pred, c)
|
||||
)
|
||||
}
|
||||
|
||||
override predicate hasExit(ControlFlowElement pred, Completion c) {
|
||||
// Exit out from last `catch` clause (no catch clauses match)
|
||||
this.hasLastExit(pred, c) and
|
||||
exists(succExit(pred, c))
|
||||
}
|
||||
|
||||
override predicate hasSuccessor(ControlFlowElement pred, ControlFlowElement succ, Completion c) {
|
||||
this.appliesToPredecessor(pred, c) and
|
||||
succ = succ(pred, c) and
|
||||
not succ = first(any(SpecificCatchClause scc).getBlock()) and
|
||||
not succ instanceof GeneralCatchClause and
|
||||
not exists(TryStmt ts, SpecificCatchClause scc, int last |
|
||||
pred = lastTryStmtCatchClause(ts, last, c) |
|
||||
ts.getCatchClause(last) = scc and
|
||||
scc.isLast()
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets an integer representing the kind of split `s`. The kind is used
|
||||
* to make an arbitrary order on splits.
|
||||
*/
|
||||
private int getSplitKind(Split s) {
|
||||
s = TFinallySplit(_) and result = 0
|
||||
or
|
||||
s = TExceptionHandlerSplit(_) and result = 1
|
||||
}
|
||||
|
||||
/** Gets the rank of `split` among all the splits that apply to `cfe`. */
|
||||
@@ -2757,6 +3030,8 @@ module Internal {
|
||||
cached
|
||||
newtype TSplit =
|
||||
TFinallySplit(FinallySplitting::FinallySplitType type)
|
||||
or
|
||||
TExceptionHandlerSplit(ExceptionClass ec)
|
||||
|
||||
cached
|
||||
newtype TSplits =
|
||||
|
||||
@@ -79,8 +79,10 @@
|
||||
| ExitMethods.cs:30:10:30:11 | enter M5 | ExitMethods.cs:30:10:30:11 | exit M5 | 6 |
|
||||
| ExitMethods.cs:36:10:36:11 | enter M6 | ExitMethods.cs:40:13:40:30 | call to method ErrorAlways | 7 |
|
||||
| ExitMethods.cs:36:10:36:11 | exit M6 | ExitMethods.cs:36:10:36:11 | exit M6 | 1 |
|
||||
| ExitMethods.cs:42:9:45:9 | catch (...) {...} | ExitMethods.cs:44:13:44:19 | return ...; | 3 |
|
||||
| ExitMethods.cs:46:9:49:9 | catch (...) {...} | ExitMethods.cs:48:13:48:19 | return ...; | 3 |
|
||||
| ExitMethods.cs:42:9:45:9 | [exception: ArgumentException] catch (...) {...} | ExitMethods.cs:42:9:45:9 | [exception: ArgumentException] catch (...) {...} | 1 |
|
||||
| ExitMethods.cs:42:9:45:9 | [exception: Exception] catch (...) {...} | ExitMethods.cs:42:9:45:9 | [exception: Exception] catch (...) {...} | 1 |
|
||||
| ExitMethods.cs:43:9:45:9 | {...} | ExitMethods.cs:44:13:44:19 | return ...; | 2 |
|
||||
| ExitMethods.cs:46:9:49:9 | [exception: Exception] catch (...) {...} | ExitMethods.cs:48:13:48:19 | return ...; | 3 |
|
||||
| ExitMethods.cs:52:17:52:26 | enter ErrorMaybe | ExitMethods.cs:54:13:54:13 | access to parameter b | 4 |
|
||||
| ExitMethods.cs:52:17:52:26 | exit ErrorMaybe | ExitMethods.cs:52:17:52:26 | exit ErrorMaybe | 1 |
|
||||
| ExitMethods.cs:55:19:55:33 | object creation of type Exception | ExitMethods.cs:55:13:55:34 | throw ...; | 2 |
|
||||
@@ -303,13 +305,20 @@
|
||||
| cflow.cs:153:9:155:9 | {...} | cflow.cs:159:31:159:36 | "Try2" | 8 |
|
||||
| cflow.cs:159:13:159:37 | call to method WriteLine | cflow.cs:159:13:159:37 | call to method WriteLine | 1 |
|
||||
| cflow.cs:160:13:160:19 | return ...; | cflow.cs:186:13:186:40 | [finally: return] call to method WriteLine | 5 |
|
||||
| cflow.cs:162:9:165:9 | catch (...) {...} | cflow.cs:186:13:186:40 | [finally: exception(IOException)] call to method WriteLine | 9 |
|
||||
| cflow.cs:166:9:176:9 | catch (...) {...} | cflow.cs:186:13:186:40 | [finally: exception(Exception)] call to method WriteLine | 16 |
|
||||
| cflow.cs:177:9:179:9 | catch (...) {...} | cflow.cs:191:31:191:36 | "Try3" | 10 |
|
||||
| cflow.cs:162:9:165:9 | [exception: Exception] catch (...) {...} | cflow.cs:162:9:165:9 | [exception: Exception] catch (...) {...} | 1 |
|
||||
| cflow.cs:162:9:165:9 | [exception: OutOfMemoryException] catch (...) {...} | cflow.cs:177:9:179:9 | [exception: OutOfMemoryException] catch (...) {...} | 3 |
|
||||
| cflow.cs:162:38:162:39 | [exception: Exception] IOException ex | cflow.cs:186:13:186:40 | [finally: exception(IOException)] call to method WriteLine | 8 |
|
||||
| cflow.cs:166:9:176:9 | [exception: Exception] catch (...) {...} | cflow.cs:166:9:176:9 | [exception: Exception] catch (...) {...} | 1 |
|
||||
| cflow.cs:166:41:166:42 | [exception: Exception] ArgumentException ex | cflow.cs:186:13:186:40 | [finally: exception(Exception)] call to method WriteLine | 15 |
|
||||
| cflow.cs:177:9:179:9 | [exception: Exception] catch (...) {...} | cflow.cs:177:9:179:9 | [exception: Exception] catch (...) {...} | 1 |
|
||||
| cflow.cs:178:9:179:9 | {...} | cflow.cs:191:31:191:36 | "Try3" | 9 |
|
||||
| cflow.cs:191:13:191:37 | call to method WriteLine | cflow.cs:191:13:191:37 | call to method WriteLine | 1 |
|
||||
| cflow.cs:192:13:192:19 | return ...; | cflow.cs:203:13:203:40 | [finally: return] call to method WriteLine | 5 |
|
||||
| cflow.cs:194:9:197:9 | catch (...) {...} | cflow.cs:203:13:203:40 | [finally: exception(IOException)] call to method WriteLine | 9 |
|
||||
| cflow.cs:198:9:200:9 | catch (...) {...} | cflow.cs:207:9:230:9 | while (...) ... | 16 |
|
||||
| cflow.cs:194:9:197:9 | [exception: Exception] catch (...) {...} | cflow.cs:194:9:197:9 | [exception: Exception] catch (...) {...} | 1 |
|
||||
| cflow.cs:194:9:197:9 | [exception: OutOfMemoryException] catch (...) {...} | cflow.cs:198:35:198:51 | [exception: OutOfMemoryException] ... != ... | 7 |
|
||||
| cflow.cs:194:38:194:39 | [exception: Exception] IOException ex | cflow.cs:203:13:203:40 | [finally: exception(IOException)] call to method WriteLine | 8 |
|
||||
| cflow.cs:198:9:200:9 | [exception: Exception] catch (...) {...} | cflow.cs:198:35:198:51 | [exception: Exception] ... != ... | 6 |
|
||||
| cflow.cs:199:9:200:9 | {...} | cflow.cs:207:9:230:9 | while (...) ... | 10 |
|
||||
| cflow.cs:202:9:204:9 | [finally: exception(Exception)] {...} | cflow.cs:203:13:203:40 | [finally: exception(Exception)] call to method WriteLine | 4 |
|
||||
| cflow.cs:202:9:204:9 | [finally: exception(OutOfMemoryException)] {...} | cflow.cs:203:13:203:40 | [finally: exception(OutOfMemoryException)] call to method WriteLine | 4 |
|
||||
| cflow.cs:207:16:207:16 | access to local variable i | cflow.cs:207:16:207:20 | ... > ... | 3 |
|
||||
|
||||
@@ -148,10 +148,15 @@
|
||||
| post | ExitMethods.cs:36:10:36:11 | enter M6 | ExitMethods.cs:36:10:36:11 | enter M6 |
|
||||
| post | ExitMethods.cs:36:10:36:11 | exit M6 | ExitMethods.cs:36:10:36:11 | enter M6 |
|
||||
| post | ExitMethods.cs:36:10:36:11 | exit M6 | ExitMethods.cs:36:10:36:11 | exit M6 |
|
||||
| post | ExitMethods.cs:36:10:36:11 | exit M6 | ExitMethods.cs:42:9:45:9 | catch (...) {...} |
|
||||
| post | ExitMethods.cs:36:10:36:11 | exit M6 | ExitMethods.cs:46:9:49:9 | catch (...) {...} |
|
||||
| post | ExitMethods.cs:42:9:45:9 | catch (...) {...} | ExitMethods.cs:42:9:45:9 | catch (...) {...} |
|
||||
| post | ExitMethods.cs:46:9:49:9 | catch (...) {...} | ExitMethods.cs:46:9:49:9 | catch (...) {...} |
|
||||
| post | ExitMethods.cs:36:10:36:11 | exit M6 | ExitMethods.cs:42:9:45:9 | [exception: ArgumentException] catch (...) {...} |
|
||||
| post | ExitMethods.cs:36:10:36:11 | exit M6 | ExitMethods.cs:42:9:45:9 | [exception: Exception] catch (...) {...} |
|
||||
| post | ExitMethods.cs:36:10:36:11 | exit M6 | ExitMethods.cs:43:9:45:9 | {...} |
|
||||
| post | ExitMethods.cs:36:10:36:11 | exit M6 | ExitMethods.cs:46:9:49:9 | [exception: Exception] catch (...) {...} |
|
||||
| post | ExitMethods.cs:42:9:45:9 | [exception: ArgumentException] catch (...) {...} | ExitMethods.cs:42:9:45:9 | [exception: ArgumentException] catch (...) {...} |
|
||||
| post | ExitMethods.cs:42:9:45:9 | [exception: Exception] catch (...) {...} | ExitMethods.cs:42:9:45:9 | [exception: Exception] catch (...) {...} |
|
||||
| post | ExitMethods.cs:43:9:45:9 | {...} | ExitMethods.cs:42:9:45:9 | [exception: ArgumentException] catch (...) {...} |
|
||||
| post | ExitMethods.cs:43:9:45:9 | {...} | ExitMethods.cs:43:9:45:9 | {...} |
|
||||
| post | ExitMethods.cs:46:9:49:9 | [exception: Exception] catch (...) {...} | ExitMethods.cs:46:9:49:9 | [exception: Exception] catch (...) {...} |
|
||||
| post | ExitMethods.cs:52:17:52:26 | enter ErrorMaybe | ExitMethods.cs:52:17:52:26 | enter ErrorMaybe |
|
||||
| post | ExitMethods.cs:52:17:52:26 | exit ErrorMaybe | ExitMethods.cs:52:17:52:26 | enter ErrorMaybe |
|
||||
| post | ExitMethods.cs:52:17:52:26 | exit ErrorMaybe | ExitMethods.cs:52:17:52:26 | exit ErrorMaybe |
|
||||
@@ -619,13 +624,20 @@
|
||||
| post | cflow.cs:146:10:146:19 | exit TryFinally | cflow.cs:153:9:155:9 | {...} |
|
||||
| post | cflow.cs:146:10:146:19 | exit TryFinally | cflow.cs:159:13:159:37 | call to method WriteLine |
|
||||
| post | cflow.cs:146:10:146:19 | exit TryFinally | cflow.cs:160:13:160:19 | return ...; |
|
||||
| post | cflow.cs:146:10:146:19 | exit TryFinally | cflow.cs:162:9:165:9 | catch (...) {...} |
|
||||
| post | cflow.cs:146:10:146:19 | exit TryFinally | cflow.cs:166:9:176:9 | catch (...) {...} |
|
||||
| post | cflow.cs:146:10:146:19 | exit TryFinally | cflow.cs:177:9:179:9 | catch (...) {...} |
|
||||
| post | cflow.cs:146:10:146:19 | exit TryFinally | cflow.cs:162:9:165:9 | [exception: Exception] catch (...) {...} |
|
||||
| post | cflow.cs:146:10:146:19 | exit TryFinally | cflow.cs:162:9:165:9 | [exception: OutOfMemoryException] catch (...) {...} |
|
||||
| post | cflow.cs:146:10:146:19 | exit TryFinally | cflow.cs:162:38:162:39 | [exception: Exception] IOException ex |
|
||||
| post | cflow.cs:146:10:146:19 | exit TryFinally | cflow.cs:166:9:176:9 | [exception: Exception] catch (...) {...} |
|
||||
| post | cflow.cs:146:10:146:19 | exit TryFinally | cflow.cs:166:41:166:42 | [exception: Exception] ArgumentException ex |
|
||||
| post | cflow.cs:146:10:146:19 | exit TryFinally | cflow.cs:177:9:179:9 | [exception: Exception] catch (...) {...} |
|
||||
| post | cflow.cs:146:10:146:19 | exit TryFinally | cflow.cs:178:9:179:9 | {...} |
|
||||
| post | cflow.cs:146:10:146:19 | exit TryFinally | cflow.cs:191:13:191:37 | call to method WriteLine |
|
||||
| post | cflow.cs:146:10:146:19 | exit TryFinally | cflow.cs:192:13:192:19 | return ...; |
|
||||
| post | cflow.cs:146:10:146:19 | exit TryFinally | cflow.cs:194:9:197:9 | catch (...) {...} |
|
||||
| post | cflow.cs:146:10:146:19 | exit TryFinally | cflow.cs:198:9:200:9 | catch (...) {...} |
|
||||
| post | cflow.cs:146:10:146:19 | exit TryFinally | cflow.cs:194:9:197:9 | [exception: Exception] catch (...) {...} |
|
||||
| post | cflow.cs:146:10:146:19 | exit TryFinally | cflow.cs:194:9:197:9 | [exception: OutOfMemoryException] catch (...) {...} |
|
||||
| post | cflow.cs:146:10:146:19 | exit TryFinally | cflow.cs:194:38:194:39 | [exception: Exception] IOException ex |
|
||||
| post | cflow.cs:146:10:146:19 | exit TryFinally | cflow.cs:198:9:200:9 | [exception: Exception] catch (...) {...} |
|
||||
| post | cflow.cs:146:10:146:19 | exit TryFinally | cflow.cs:199:9:200:9 | {...} |
|
||||
| post | cflow.cs:146:10:146:19 | exit TryFinally | cflow.cs:202:9:204:9 | [finally: exception(Exception)] {...} |
|
||||
| post | cflow.cs:146:10:146:19 | exit TryFinally | cflow.cs:202:9:204:9 | [finally: exception(OutOfMemoryException)] {...} |
|
||||
| post | cflow.cs:146:10:146:19 | exit TryFinally | cflow.cs:207:16:207:16 | access to local variable i |
|
||||
@@ -682,16 +694,25 @@
|
||||
| post | cflow.cs:153:9:155:9 | {...} | cflow.cs:153:9:155:9 | {...} |
|
||||
| post | cflow.cs:159:13:159:37 | call to method WriteLine | cflow.cs:159:13:159:37 | call to method WriteLine |
|
||||
| post | cflow.cs:160:13:160:19 | return ...; | cflow.cs:160:13:160:19 | return ...; |
|
||||
| post | cflow.cs:162:9:165:9 | catch (...) {...} | cflow.cs:162:9:165:9 | catch (...) {...} |
|
||||
| post | cflow.cs:166:9:176:9 | catch (...) {...} | cflow.cs:166:9:176:9 | catch (...) {...} |
|
||||
| post | cflow.cs:177:9:179:9 | catch (...) {...} | cflow.cs:177:9:179:9 | catch (...) {...} |
|
||||
| post | cflow.cs:162:9:165:9 | [exception: Exception] catch (...) {...} | cflow.cs:162:9:165:9 | [exception: Exception] catch (...) {...} |
|
||||
| post | cflow.cs:162:9:165:9 | [exception: OutOfMemoryException] catch (...) {...} | cflow.cs:162:9:165:9 | [exception: OutOfMemoryException] catch (...) {...} |
|
||||
| post | cflow.cs:162:38:162:39 | [exception: Exception] IOException ex | cflow.cs:162:38:162:39 | [exception: Exception] IOException ex |
|
||||
| post | cflow.cs:166:9:176:9 | [exception: Exception] catch (...) {...} | cflow.cs:166:9:176:9 | [exception: Exception] catch (...) {...} |
|
||||
| post | cflow.cs:166:41:166:42 | [exception: Exception] ArgumentException ex | cflow.cs:166:41:166:42 | [exception: Exception] ArgumentException ex |
|
||||
| post | cflow.cs:177:9:179:9 | [exception: Exception] catch (...) {...} | cflow.cs:177:9:179:9 | [exception: Exception] catch (...) {...} |
|
||||
| post | cflow.cs:178:9:179:9 | {...} | cflow.cs:162:9:165:9 | [exception: OutOfMemoryException] catch (...) {...} |
|
||||
| post | cflow.cs:178:9:179:9 | {...} | cflow.cs:177:9:179:9 | [exception: Exception] catch (...) {...} |
|
||||
| post | cflow.cs:178:9:179:9 | {...} | cflow.cs:178:9:179:9 | {...} |
|
||||
| post | cflow.cs:191:13:191:37 | call to method WriteLine | cflow.cs:191:13:191:37 | call to method WriteLine |
|
||||
| post | cflow.cs:192:13:192:19 | return ...; | cflow.cs:192:13:192:19 | return ...; |
|
||||
| post | cflow.cs:194:9:197:9 | catch (...) {...} | cflow.cs:194:9:197:9 | catch (...) {...} |
|
||||
| post | cflow.cs:198:9:200:9 | catch (...) {...} | cflow.cs:198:9:200:9 | catch (...) {...} |
|
||||
| post | cflow.cs:194:9:197:9 | [exception: Exception] catch (...) {...} | cflow.cs:194:9:197:9 | [exception: Exception] catch (...) {...} |
|
||||
| post | cflow.cs:194:9:197:9 | [exception: OutOfMemoryException] catch (...) {...} | cflow.cs:194:9:197:9 | [exception: OutOfMemoryException] catch (...) {...} |
|
||||
| post | cflow.cs:194:38:194:39 | [exception: Exception] IOException ex | cflow.cs:194:38:194:39 | [exception: Exception] IOException ex |
|
||||
| post | cflow.cs:198:9:200:9 | [exception: Exception] catch (...) {...} | cflow.cs:198:9:200:9 | [exception: Exception] catch (...) {...} |
|
||||
| post | cflow.cs:199:9:200:9 | {...} | cflow.cs:199:9:200:9 | {...} |
|
||||
| post | cflow.cs:202:9:204:9 | [finally: exception(Exception)] {...} | cflow.cs:202:9:204:9 | [finally: exception(Exception)] {...} |
|
||||
| post | cflow.cs:202:9:204:9 | [finally: exception(OutOfMemoryException)] {...} | cflow.cs:202:9:204:9 | [finally: exception(OutOfMemoryException)] {...} |
|
||||
| post | cflow.cs:207:16:207:16 | access to local variable i | cflow.cs:198:9:200:9 | catch (...) {...} |
|
||||
| post | cflow.cs:207:16:207:16 | access to local variable i | cflow.cs:199:9:200:9 | {...} |
|
||||
| post | cflow.cs:207:16:207:16 | access to local variable i | cflow.cs:207:16:207:16 | access to local variable i |
|
||||
| post | cflow.cs:207:16:207:16 | access to local variable i | cflow.cs:226:17:228:17 | [finally: continue] {...} |
|
||||
| post | cflow.cs:207:16:207:16 | access to local variable i | cflow.cs:226:17:228:17 | {...} |
|
||||
@@ -1178,11 +1199,16 @@
|
||||
| pre | ExitMethods.cs:30:10:30:11 | enter M5 | ExitMethods.cs:30:10:30:11 | enter M5 |
|
||||
| pre | ExitMethods.cs:36:10:36:11 | enter M6 | ExitMethods.cs:36:10:36:11 | enter M6 |
|
||||
| pre | ExitMethods.cs:36:10:36:11 | enter M6 | ExitMethods.cs:36:10:36:11 | exit M6 |
|
||||
| pre | ExitMethods.cs:36:10:36:11 | enter M6 | ExitMethods.cs:42:9:45:9 | catch (...) {...} |
|
||||
| pre | ExitMethods.cs:36:10:36:11 | enter M6 | ExitMethods.cs:46:9:49:9 | catch (...) {...} |
|
||||
| pre | ExitMethods.cs:36:10:36:11 | enter M6 | ExitMethods.cs:42:9:45:9 | [exception: ArgumentException] catch (...) {...} |
|
||||
| pre | ExitMethods.cs:36:10:36:11 | enter M6 | ExitMethods.cs:42:9:45:9 | [exception: Exception] catch (...) {...} |
|
||||
| pre | ExitMethods.cs:36:10:36:11 | enter M6 | ExitMethods.cs:43:9:45:9 | {...} |
|
||||
| pre | ExitMethods.cs:36:10:36:11 | enter M6 | ExitMethods.cs:46:9:49:9 | [exception: Exception] catch (...) {...} |
|
||||
| pre | ExitMethods.cs:36:10:36:11 | exit M6 | ExitMethods.cs:36:10:36:11 | exit M6 |
|
||||
| pre | ExitMethods.cs:42:9:45:9 | catch (...) {...} | ExitMethods.cs:42:9:45:9 | catch (...) {...} |
|
||||
| pre | ExitMethods.cs:46:9:49:9 | catch (...) {...} | ExitMethods.cs:46:9:49:9 | catch (...) {...} |
|
||||
| pre | ExitMethods.cs:42:9:45:9 | [exception: ArgumentException] catch (...) {...} | ExitMethods.cs:42:9:45:9 | [exception: ArgumentException] catch (...) {...} |
|
||||
| pre | ExitMethods.cs:42:9:45:9 | [exception: Exception] catch (...) {...} | ExitMethods.cs:42:9:45:9 | [exception: Exception] catch (...) {...} |
|
||||
| pre | ExitMethods.cs:42:9:45:9 | [exception: Exception] catch (...) {...} | ExitMethods.cs:46:9:49:9 | [exception: Exception] catch (...) {...} |
|
||||
| pre | ExitMethods.cs:43:9:45:9 | {...} | ExitMethods.cs:43:9:45:9 | {...} |
|
||||
| pre | ExitMethods.cs:46:9:49:9 | [exception: Exception] catch (...) {...} | ExitMethods.cs:46:9:49:9 | [exception: Exception] catch (...) {...} |
|
||||
| pre | ExitMethods.cs:52:17:52:26 | enter ErrorMaybe | ExitMethods.cs:52:17:52:26 | enter ErrorMaybe |
|
||||
| pre | ExitMethods.cs:52:17:52:26 | enter ErrorMaybe | ExitMethods.cs:52:17:52:26 | exit ErrorMaybe |
|
||||
| pre | ExitMethods.cs:52:17:52:26 | enter ErrorMaybe | ExitMethods.cs:55:19:55:33 | object creation of type Exception |
|
||||
@@ -1812,13 +1838,20 @@
|
||||
| pre | cflow.cs:146:10:146:19 | enter TryFinally | cflow.cs:153:9:155:9 | {...} |
|
||||
| pre | cflow.cs:146:10:146:19 | enter TryFinally | cflow.cs:159:13:159:37 | call to method WriteLine |
|
||||
| pre | cflow.cs:146:10:146:19 | enter TryFinally | cflow.cs:160:13:160:19 | return ...; |
|
||||
| pre | cflow.cs:146:10:146:19 | enter TryFinally | cflow.cs:162:9:165:9 | catch (...) {...} |
|
||||
| pre | cflow.cs:146:10:146:19 | enter TryFinally | cflow.cs:166:9:176:9 | catch (...) {...} |
|
||||
| pre | cflow.cs:146:10:146:19 | enter TryFinally | cflow.cs:177:9:179:9 | catch (...) {...} |
|
||||
| pre | cflow.cs:146:10:146:19 | enter TryFinally | cflow.cs:162:9:165:9 | [exception: Exception] catch (...) {...} |
|
||||
| pre | cflow.cs:146:10:146:19 | enter TryFinally | cflow.cs:162:9:165:9 | [exception: OutOfMemoryException] catch (...) {...} |
|
||||
| pre | cflow.cs:146:10:146:19 | enter TryFinally | cflow.cs:162:38:162:39 | [exception: Exception] IOException ex |
|
||||
| pre | cflow.cs:146:10:146:19 | enter TryFinally | cflow.cs:166:9:176:9 | [exception: Exception] catch (...) {...} |
|
||||
| pre | cflow.cs:146:10:146:19 | enter TryFinally | cflow.cs:166:41:166:42 | [exception: Exception] ArgumentException ex |
|
||||
| pre | cflow.cs:146:10:146:19 | enter TryFinally | cflow.cs:177:9:179:9 | [exception: Exception] catch (...) {...} |
|
||||
| pre | cflow.cs:146:10:146:19 | enter TryFinally | cflow.cs:178:9:179:9 | {...} |
|
||||
| pre | cflow.cs:146:10:146:19 | enter TryFinally | cflow.cs:191:13:191:37 | call to method WriteLine |
|
||||
| pre | cflow.cs:146:10:146:19 | enter TryFinally | cflow.cs:192:13:192:19 | return ...; |
|
||||
| pre | cflow.cs:146:10:146:19 | enter TryFinally | cflow.cs:194:9:197:9 | catch (...) {...} |
|
||||
| pre | cflow.cs:146:10:146:19 | enter TryFinally | cflow.cs:198:9:200:9 | catch (...) {...} |
|
||||
| pre | cflow.cs:146:10:146:19 | enter TryFinally | cflow.cs:194:9:197:9 | [exception: Exception] catch (...) {...} |
|
||||
| pre | cflow.cs:146:10:146:19 | enter TryFinally | cflow.cs:194:9:197:9 | [exception: OutOfMemoryException] catch (...) {...} |
|
||||
| pre | cflow.cs:146:10:146:19 | enter TryFinally | cflow.cs:194:38:194:39 | [exception: Exception] IOException ex |
|
||||
| pre | cflow.cs:146:10:146:19 | enter TryFinally | cflow.cs:198:9:200:9 | [exception: Exception] catch (...) {...} |
|
||||
| pre | cflow.cs:146:10:146:19 | enter TryFinally | cflow.cs:199:9:200:9 | {...} |
|
||||
| pre | cflow.cs:146:10:146:19 | enter TryFinally | cflow.cs:202:9:204:9 | [finally: exception(Exception)] {...} |
|
||||
| pre | cflow.cs:146:10:146:19 | enter TryFinally | cflow.cs:202:9:204:9 | [finally: exception(OutOfMemoryException)] {...} |
|
||||
| pre | cflow.cs:146:10:146:19 | enter TryFinally | cflow.cs:207:16:207:16 | access to local variable i |
|
||||
@@ -1875,13 +1908,20 @@
|
||||
| pre | cflow.cs:150:13:150:37 | call to method WriteLine | cflow.cs:153:9:155:9 | {...} |
|
||||
| pre | cflow.cs:150:13:150:37 | call to method WriteLine | cflow.cs:159:13:159:37 | call to method WriteLine |
|
||||
| pre | cflow.cs:150:13:150:37 | call to method WriteLine | cflow.cs:160:13:160:19 | return ...; |
|
||||
| pre | cflow.cs:150:13:150:37 | call to method WriteLine | cflow.cs:162:9:165:9 | catch (...) {...} |
|
||||
| pre | cflow.cs:150:13:150:37 | call to method WriteLine | cflow.cs:166:9:176:9 | catch (...) {...} |
|
||||
| pre | cflow.cs:150:13:150:37 | call to method WriteLine | cflow.cs:177:9:179:9 | catch (...) {...} |
|
||||
| pre | cflow.cs:150:13:150:37 | call to method WriteLine | cflow.cs:162:9:165:9 | [exception: Exception] catch (...) {...} |
|
||||
| pre | cflow.cs:150:13:150:37 | call to method WriteLine | cflow.cs:162:9:165:9 | [exception: OutOfMemoryException] catch (...) {...} |
|
||||
| pre | cflow.cs:150:13:150:37 | call to method WriteLine | cflow.cs:162:38:162:39 | [exception: Exception] IOException ex |
|
||||
| pre | cflow.cs:150:13:150:37 | call to method WriteLine | cflow.cs:166:9:176:9 | [exception: Exception] catch (...) {...} |
|
||||
| pre | cflow.cs:150:13:150:37 | call to method WriteLine | cflow.cs:166:41:166:42 | [exception: Exception] ArgumentException ex |
|
||||
| pre | cflow.cs:150:13:150:37 | call to method WriteLine | cflow.cs:177:9:179:9 | [exception: Exception] catch (...) {...} |
|
||||
| pre | cflow.cs:150:13:150:37 | call to method WriteLine | cflow.cs:178:9:179:9 | {...} |
|
||||
| pre | cflow.cs:150:13:150:37 | call to method WriteLine | cflow.cs:191:13:191:37 | call to method WriteLine |
|
||||
| pre | cflow.cs:150:13:150:37 | call to method WriteLine | cflow.cs:192:13:192:19 | return ...; |
|
||||
| pre | cflow.cs:150:13:150:37 | call to method WriteLine | cflow.cs:194:9:197:9 | catch (...) {...} |
|
||||
| pre | cflow.cs:150:13:150:37 | call to method WriteLine | cflow.cs:198:9:200:9 | catch (...) {...} |
|
||||
| pre | cflow.cs:150:13:150:37 | call to method WriteLine | cflow.cs:194:9:197:9 | [exception: Exception] catch (...) {...} |
|
||||
| pre | cflow.cs:150:13:150:37 | call to method WriteLine | cflow.cs:194:9:197:9 | [exception: OutOfMemoryException] catch (...) {...} |
|
||||
| pre | cflow.cs:150:13:150:37 | call to method WriteLine | cflow.cs:194:38:194:39 | [exception: Exception] IOException ex |
|
||||
| pre | cflow.cs:150:13:150:37 | call to method WriteLine | cflow.cs:198:9:200:9 | [exception: Exception] catch (...) {...} |
|
||||
| pre | cflow.cs:150:13:150:37 | call to method WriteLine | cflow.cs:199:9:200:9 | {...} |
|
||||
| pre | cflow.cs:150:13:150:37 | call to method WriteLine | cflow.cs:202:9:204:9 | [finally: exception(Exception)] {...} |
|
||||
| pre | cflow.cs:150:13:150:37 | call to method WriteLine | cflow.cs:202:9:204:9 | [finally: exception(OutOfMemoryException)] {...} |
|
||||
| pre | cflow.cs:150:13:150:37 | call to method WriteLine | cflow.cs:207:16:207:16 | access to local variable i |
|
||||
@@ -1937,13 +1977,20 @@
|
||||
| pre | cflow.cs:153:9:155:9 | {...} | cflow.cs:153:9:155:9 | {...} |
|
||||
| pre | cflow.cs:153:9:155:9 | {...} | cflow.cs:159:13:159:37 | call to method WriteLine |
|
||||
| pre | cflow.cs:153:9:155:9 | {...} | cflow.cs:160:13:160:19 | return ...; |
|
||||
| pre | cflow.cs:153:9:155:9 | {...} | cflow.cs:162:9:165:9 | catch (...) {...} |
|
||||
| pre | cflow.cs:153:9:155:9 | {...} | cflow.cs:166:9:176:9 | catch (...) {...} |
|
||||
| pre | cflow.cs:153:9:155:9 | {...} | cflow.cs:177:9:179:9 | catch (...) {...} |
|
||||
| pre | cflow.cs:153:9:155:9 | {...} | cflow.cs:162:9:165:9 | [exception: Exception] catch (...) {...} |
|
||||
| pre | cflow.cs:153:9:155:9 | {...} | cflow.cs:162:9:165:9 | [exception: OutOfMemoryException] catch (...) {...} |
|
||||
| pre | cflow.cs:153:9:155:9 | {...} | cflow.cs:162:38:162:39 | [exception: Exception] IOException ex |
|
||||
| pre | cflow.cs:153:9:155:9 | {...} | cflow.cs:166:9:176:9 | [exception: Exception] catch (...) {...} |
|
||||
| pre | cflow.cs:153:9:155:9 | {...} | cflow.cs:166:41:166:42 | [exception: Exception] ArgumentException ex |
|
||||
| pre | cflow.cs:153:9:155:9 | {...} | cflow.cs:177:9:179:9 | [exception: Exception] catch (...) {...} |
|
||||
| pre | cflow.cs:153:9:155:9 | {...} | cflow.cs:178:9:179:9 | {...} |
|
||||
| pre | cflow.cs:153:9:155:9 | {...} | cflow.cs:191:13:191:37 | call to method WriteLine |
|
||||
| pre | cflow.cs:153:9:155:9 | {...} | cflow.cs:192:13:192:19 | return ...; |
|
||||
| pre | cflow.cs:153:9:155:9 | {...} | cflow.cs:194:9:197:9 | catch (...) {...} |
|
||||
| pre | cflow.cs:153:9:155:9 | {...} | cflow.cs:198:9:200:9 | catch (...) {...} |
|
||||
| pre | cflow.cs:153:9:155:9 | {...} | cflow.cs:194:9:197:9 | [exception: Exception] catch (...) {...} |
|
||||
| pre | cflow.cs:153:9:155:9 | {...} | cflow.cs:194:9:197:9 | [exception: OutOfMemoryException] catch (...) {...} |
|
||||
| pre | cflow.cs:153:9:155:9 | {...} | cflow.cs:194:38:194:39 | [exception: Exception] IOException ex |
|
||||
| pre | cflow.cs:153:9:155:9 | {...} | cflow.cs:198:9:200:9 | [exception: Exception] catch (...) {...} |
|
||||
| pre | cflow.cs:153:9:155:9 | {...} | cflow.cs:199:9:200:9 | {...} |
|
||||
| pre | cflow.cs:153:9:155:9 | {...} | cflow.cs:202:9:204:9 | [finally: exception(Exception)] {...} |
|
||||
| pre | cflow.cs:153:9:155:9 | {...} | cflow.cs:202:9:204:9 | [finally: exception(OutOfMemoryException)] {...} |
|
||||
| pre | cflow.cs:153:9:155:9 | {...} | cflow.cs:207:16:207:16 | access to local variable i |
|
||||
@@ -1996,170 +2043,147 @@
|
||||
| pre | cflow.cs:153:9:155:9 | {...} | cflow.cs:244:17:244:37 | [finally: return] ...; |
|
||||
| pre | cflow.cs:159:13:159:37 | call to method WriteLine | cflow.cs:159:13:159:37 | call to method WriteLine |
|
||||
| pre | cflow.cs:159:13:159:37 | call to method WriteLine | cflow.cs:160:13:160:19 | return ...; |
|
||||
| pre | cflow.cs:159:13:159:37 | call to method WriteLine | cflow.cs:162:9:165:9 | catch (...) {...} |
|
||||
| pre | cflow.cs:159:13:159:37 | call to method WriteLine | cflow.cs:166:9:176:9 | catch (...) {...} |
|
||||
| pre | cflow.cs:159:13:159:37 | call to method WriteLine | cflow.cs:162:9:165:9 | [exception: Exception] catch (...) {...} |
|
||||
| pre | cflow.cs:159:13:159:37 | call to method WriteLine | cflow.cs:162:38:162:39 | [exception: Exception] IOException ex |
|
||||
| pre | cflow.cs:159:13:159:37 | call to method WriteLine | cflow.cs:166:9:176:9 | [exception: Exception] catch (...) {...} |
|
||||
| pre | cflow.cs:159:13:159:37 | call to method WriteLine | cflow.cs:166:41:166:42 | [exception: Exception] ArgumentException ex |
|
||||
| pre | cflow.cs:159:13:159:37 | call to method WriteLine | cflow.cs:177:9:179:9 | [exception: Exception] catch (...) {...} |
|
||||
| pre | cflow.cs:160:13:160:19 | return ...; | cflow.cs:160:13:160:19 | return ...; |
|
||||
| pre | cflow.cs:162:9:165:9 | catch (...) {...} | cflow.cs:162:9:165:9 | catch (...) {...} |
|
||||
| pre | cflow.cs:166:9:176:9 | catch (...) {...} | cflow.cs:166:9:176:9 | catch (...) {...} |
|
||||
| pre | cflow.cs:177:9:179:9 | catch (...) {...} | cflow.cs:177:9:179:9 | catch (...) {...} |
|
||||
| pre | cflow.cs:177:9:179:9 | catch (...) {...} | cflow.cs:191:13:191:37 | call to method WriteLine |
|
||||
| pre | cflow.cs:177:9:179:9 | catch (...) {...} | cflow.cs:192:13:192:19 | return ...; |
|
||||
| pre | cflow.cs:177:9:179:9 | catch (...) {...} | cflow.cs:194:9:197:9 | catch (...) {...} |
|
||||
| pre | cflow.cs:177:9:179:9 | catch (...) {...} | cflow.cs:198:9:200:9 | catch (...) {...} |
|
||||
| pre | cflow.cs:177:9:179:9 | catch (...) {...} | cflow.cs:202:9:204:9 | [finally: exception(Exception)] {...} |
|
||||
| pre | cflow.cs:177:9:179:9 | catch (...) {...} | cflow.cs:202:9:204:9 | [finally: exception(OutOfMemoryException)] {...} |
|
||||
| pre | cflow.cs:177:9:179:9 | catch (...) {...} | cflow.cs:207:16:207:16 | access to local variable i |
|
||||
| pre | cflow.cs:177:9:179:9 | catch (...) {...} | cflow.cs:208:9:230:9 | {...} |
|
||||
| pre | cflow.cs:177:9:179:9 | catch (...) {...} | cflow.cs:212:21:212:27 | return ...; |
|
||||
| pre | cflow.cs:177:9:179:9 | catch (...) {...} | cflow.cs:213:17:214:29 | if (...) ... |
|
||||
| pre | cflow.cs:177:9:179:9 | catch (...) {...} | cflow.cs:214:21:214:29 | continue; |
|
||||
| pre | cflow.cs:177:9:179:9 | catch (...) {...} | cflow.cs:215:17:216:26 | if (...) ... |
|
||||
| pre | cflow.cs:177:9:179:9 | catch (...) {...} | cflow.cs:216:21:216:26 | break; |
|
||||
| pre | cflow.cs:177:9:179:9 | catch (...) {...} | cflow.cs:219:13:229:13 | {...} |
|
||||
| pre | cflow.cs:177:9:179:9 | catch (...) {...} | cflow.cs:223:25:223:46 | [finally: break] throw ...; |
|
||||
| pre | cflow.cs:177:9:179:9 | catch (...) {...} | cflow.cs:223:25:223:46 | [finally: continue] throw ...; |
|
||||
| pre | cflow.cs:177:9:179:9 | catch (...) {...} | cflow.cs:223:25:223:46 | [finally: return] throw ...; |
|
||||
| pre | cflow.cs:177:9:179:9 | catch (...) {...} | cflow.cs:223:25:223:46 | throw ...; |
|
||||
| pre | cflow.cs:177:9:179:9 | catch (...) {...} | cflow.cs:223:31:223:45 | [finally: break] object creation of type Exception |
|
||||
| pre | cflow.cs:177:9:179:9 | catch (...) {...} | cflow.cs:223:31:223:45 | [finally: continue] object creation of type Exception |
|
||||
| pre | cflow.cs:177:9:179:9 | catch (...) {...} | cflow.cs:223:31:223:45 | [finally: return] object creation of type Exception |
|
||||
| pre | cflow.cs:177:9:179:9 | catch (...) {...} | cflow.cs:223:31:223:45 | object creation of type Exception |
|
||||
| pre | cflow.cs:177:9:179:9 | catch (...) {...} | cflow.cs:226:17:228:17 | [finally: break] {...} |
|
||||
| pre | cflow.cs:177:9:179:9 | catch (...) {...} | cflow.cs:226:17:228:17 | [finally: continue] {...} |
|
||||
| pre | cflow.cs:177:9:179:9 | catch (...) {...} | cflow.cs:226:17:228:17 | [finally: exception(Exception)] {...} |
|
||||
| pre | cflow.cs:177:9:179:9 | catch (...) {...} | cflow.cs:226:17:228:17 | [finally: return] {...} |
|
||||
| pre | cflow.cs:177:9:179:9 | catch (...) {...} | cflow.cs:226:17:228:17 | {...} |
|
||||
| pre | cflow.cs:177:9:179:9 | catch (...) {...} | cflow.cs:232:9:245:9 | try {...} ... |
|
||||
| pre | cflow.cs:177:9:179:9 | catch (...) {...} | cflow.cs:234:17:234:28 | access to property Length |
|
||||
| pre | cflow.cs:177:9:179:9 | catch (...) {...} | cflow.cs:234:33:234:33 | 0 |
|
||||
| pre | cflow.cs:177:9:179:9 | catch (...) {...} | cflow.cs:235:17:235:23 | return ...; |
|
||||
| pre | cflow.cs:177:9:179:9 | catch (...) {...} | cflow.cs:236:13:237:49 | if (...) ... |
|
||||
| pre | cflow.cs:177:9:179:9 | catch (...) {...} | cflow.cs:236:17:236:28 | access to property Length |
|
||||
| pre | cflow.cs:177:9:179:9 | catch (...) {...} | cflow.cs:236:33:236:33 | 1 |
|
||||
| pre | cflow.cs:177:9:179:9 | catch (...) {...} | cflow.cs:237:17:237:49 | throw ...; |
|
||||
| pre | cflow.cs:177:9:179:9 | catch (...) {...} | cflow.cs:237:23:237:48 | object creation of type OutOfMemoryException |
|
||||
| pre | cflow.cs:177:9:179:9 | catch (...) {...} | cflow.cs:240:9:245:9 | [finally: exception(Exception)] {...} |
|
||||
| pre | cflow.cs:177:9:179:9 | catch (...) {...} | cflow.cs:240:9:245:9 | [finally: exception(NullReferenceException)] {...} |
|
||||
| pre | cflow.cs:177:9:179:9 | catch (...) {...} | cflow.cs:240:9:245:9 | {...} |
|
||||
| pre | cflow.cs:177:9:179:9 | catch (...) {...} | cflow.cs:242:17:242:41 | ...; |
|
||||
| pre | cflow.cs:177:9:179:9 | catch (...) {...} | cflow.cs:242:17:242:41 | [finally: exception(Exception)] ...; |
|
||||
| pre | cflow.cs:177:9:179:9 | catch (...) {...} | cflow.cs:242:17:242:41 | [finally: exception(NullReferenceException)] ...; |
|
||||
| pre | cflow.cs:177:9:179:9 | catch (...) {...} | cflow.cs:242:17:242:41 | [finally: exception(OutOfMemoryException)] ...; |
|
||||
| pre | cflow.cs:177:9:179:9 | catch (...) {...} | cflow.cs:242:17:242:41 | [finally: return] ...; |
|
||||
| pre | cflow.cs:177:9:179:9 | catch (...) {...} | cflow.cs:243:13:244:37 | [finally: exception(Exception)] if (...) ... |
|
||||
| pre | cflow.cs:177:9:179:9 | catch (...) {...} | cflow.cs:243:13:244:37 | [finally: exception(NullReferenceException)] if (...) ... |
|
||||
| pre | cflow.cs:177:9:179:9 | catch (...) {...} | cflow.cs:243:13:244:37 | [finally: exception(OutOfMemoryException)] if (...) ... |
|
||||
| pre | cflow.cs:177:9:179:9 | catch (...) {...} | cflow.cs:243:13:244:37 | [finally: return] if (...) ... |
|
||||
| pre | cflow.cs:177:9:179:9 | catch (...) {...} | cflow.cs:243:13:244:37 | if (...) ... |
|
||||
| pre | cflow.cs:177:9:179:9 | catch (...) {...} | cflow.cs:244:17:244:37 | ...; |
|
||||
| pre | cflow.cs:177:9:179:9 | catch (...) {...} | cflow.cs:244:17:244:37 | [finally: exception(Exception)] ...; |
|
||||
| pre | cflow.cs:177:9:179:9 | catch (...) {...} | cflow.cs:244:17:244:37 | [finally: exception(NullReferenceException)] ...; |
|
||||
| pre | cflow.cs:177:9:179:9 | catch (...) {...} | cflow.cs:244:17:244:37 | [finally: exception(OutOfMemoryException)] ...; |
|
||||
| pre | cflow.cs:177:9:179:9 | catch (...) {...} | cflow.cs:244:17:244:37 | [finally: return] ...; |
|
||||
| pre | cflow.cs:162:9:165:9 | [exception: Exception] catch (...) {...} | cflow.cs:162:9:165:9 | [exception: Exception] catch (...) {...} |
|
||||
| pre | cflow.cs:162:9:165:9 | [exception: Exception] catch (...) {...} | cflow.cs:162:38:162:39 | [exception: Exception] IOException ex |
|
||||
| pre | cflow.cs:162:9:165:9 | [exception: Exception] catch (...) {...} | cflow.cs:166:9:176:9 | [exception: Exception] catch (...) {...} |
|
||||
| pre | cflow.cs:162:9:165:9 | [exception: Exception] catch (...) {...} | cflow.cs:166:41:166:42 | [exception: Exception] ArgumentException ex |
|
||||
| pre | cflow.cs:162:9:165:9 | [exception: Exception] catch (...) {...} | cflow.cs:177:9:179:9 | [exception: Exception] catch (...) {...} |
|
||||
| pre | cflow.cs:162:9:165:9 | [exception: OutOfMemoryException] catch (...) {...} | cflow.cs:162:9:165:9 | [exception: OutOfMemoryException] catch (...) {...} |
|
||||
| pre | cflow.cs:162:38:162:39 | [exception: Exception] IOException ex | cflow.cs:162:38:162:39 | [exception: Exception] IOException ex |
|
||||
| pre | cflow.cs:166:9:176:9 | [exception: Exception] catch (...) {...} | cflow.cs:166:9:176:9 | [exception: Exception] catch (...) {...} |
|
||||
| pre | cflow.cs:166:9:176:9 | [exception: Exception] catch (...) {...} | cflow.cs:166:41:166:42 | [exception: Exception] ArgumentException ex |
|
||||
| pre | cflow.cs:166:9:176:9 | [exception: Exception] catch (...) {...} | cflow.cs:177:9:179:9 | [exception: Exception] catch (...) {...} |
|
||||
| pre | cflow.cs:166:41:166:42 | [exception: Exception] ArgumentException ex | cflow.cs:166:41:166:42 | [exception: Exception] ArgumentException ex |
|
||||
| pre | cflow.cs:177:9:179:9 | [exception: Exception] catch (...) {...} | cflow.cs:177:9:179:9 | [exception: Exception] catch (...) {...} |
|
||||
| pre | cflow.cs:178:9:179:9 | {...} | cflow.cs:178:9:179:9 | {...} |
|
||||
| pre | cflow.cs:178:9:179:9 | {...} | cflow.cs:191:13:191:37 | call to method WriteLine |
|
||||
| pre | cflow.cs:178:9:179:9 | {...} | cflow.cs:192:13:192:19 | return ...; |
|
||||
| pre | cflow.cs:178:9:179:9 | {...} | cflow.cs:194:9:197:9 | [exception: Exception] catch (...) {...} |
|
||||
| pre | cflow.cs:178:9:179:9 | {...} | cflow.cs:194:9:197:9 | [exception: OutOfMemoryException] catch (...) {...} |
|
||||
| pre | cflow.cs:178:9:179:9 | {...} | cflow.cs:194:38:194:39 | [exception: Exception] IOException ex |
|
||||
| pre | cflow.cs:178:9:179:9 | {...} | cflow.cs:198:9:200:9 | [exception: Exception] catch (...) {...} |
|
||||
| pre | cflow.cs:178:9:179:9 | {...} | cflow.cs:199:9:200:9 | {...} |
|
||||
| pre | cflow.cs:178:9:179:9 | {...} | cflow.cs:202:9:204:9 | [finally: exception(Exception)] {...} |
|
||||
| pre | cflow.cs:178:9:179:9 | {...} | cflow.cs:202:9:204:9 | [finally: exception(OutOfMemoryException)] {...} |
|
||||
| pre | cflow.cs:178:9:179:9 | {...} | cflow.cs:207:16:207:16 | access to local variable i |
|
||||
| pre | cflow.cs:178:9:179:9 | {...} | cflow.cs:208:9:230:9 | {...} |
|
||||
| pre | cflow.cs:178:9:179:9 | {...} | cflow.cs:212:21:212:27 | return ...; |
|
||||
| pre | cflow.cs:178:9:179:9 | {...} | cflow.cs:213:17:214:29 | if (...) ... |
|
||||
| pre | cflow.cs:178:9:179:9 | {...} | cflow.cs:214:21:214:29 | continue; |
|
||||
| pre | cflow.cs:178:9:179:9 | {...} | cflow.cs:215:17:216:26 | if (...) ... |
|
||||
| pre | cflow.cs:178:9:179:9 | {...} | cflow.cs:216:21:216:26 | break; |
|
||||
| pre | cflow.cs:178:9:179:9 | {...} | cflow.cs:219:13:229:13 | {...} |
|
||||
| pre | cflow.cs:178:9:179:9 | {...} | cflow.cs:223:25:223:46 | [finally: break] throw ...; |
|
||||
| pre | cflow.cs:178:9:179:9 | {...} | cflow.cs:223:25:223:46 | [finally: continue] throw ...; |
|
||||
| pre | cflow.cs:178:9:179:9 | {...} | cflow.cs:223:25:223:46 | [finally: return] throw ...; |
|
||||
| pre | cflow.cs:178:9:179:9 | {...} | cflow.cs:223:25:223:46 | throw ...; |
|
||||
| pre | cflow.cs:178:9:179:9 | {...} | cflow.cs:223:31:223:45 | [finally: break] object creation of type Exception |
|
||||
| pre | cflow.cs:178:9:179:9 | {...} | cflow.cs:223:31:223:45 | [finally: continue] object creation of type Exception |
|
||||
| pre | cflow.cs:178:9:179:9 | {...} | cflow.cs:223:31:223:45 | [finally: return] object creation of type Exception |
|
||||
| pre | cflow.cs:178:9:179:9 | {...} | cflow.cs:223:31:223:45 | object creation of type Exception |
|
||||
| pre | cflow.cs:178:9:179:9 | {...} | cflow.cs:226:17:228:17 | [finally: break] {...} |
|
||||
| pre | cflow.cs:178:9:179:9 | {...} | cflow.cs:226:17:228:17 | [finally: continue] {...} |
|
||||
| pre | cflow.cs:178:9:179:9 | {...} | cflow.cs:226:17:228:17 | [finally: exception(Exception)] {...} |
|
||||
| pre | cflow.cs:178:9:179:9 | {...} | cflow.cs:226:17:228:17 | [finally: return] {...} |
|
||||
| pre | cflow.cs:178:9:179:9 | {...} | cflow.cs:226:17:228:17 | {...} |
|
||||
| pre | cflow.cs:178:9:179:9 | {...} | cflow.cs:232:9:245:9 | try {...} ... |
|
||||
| pre | cflow.cs:178:9:179:9 | {...} | cflow.cs:234:17:234:28 | access to property Length |
|
||||
| pre | cflow.cs:178:9:179:9 | {...} | cflow.cs:234:33:234:33 | 0 |
|
||||
| pre | cflow.cs:178:9:179:9 | {...} | cflow.cs:235:17:235:23 | return ...; |
|
||||
| pre | cflow.cs:178:9:179:9 | {...} | cflow.cs:236:13:237:49 | if (...) ... |
|
||||
| pre | cflow.cs:178:9:179:9 | {...} | cflow.cs:236:17:236:28 | access to property Length |
|
||||
| pre | cflow.cs:178:9:179:9 | {...} | cflow.cs:236:33:236:33 | 1 |
|
||||
| pre | cflow.cs:178:9:179:9 | {...} | cflow.cs:237:17:237:49 | throw ...; |
|
||||
| pre | cflow.cs:178:9:179:9 | {...} | cflow.cs:237:23:237:48 | object creation of type OutOfMemoryException |
|
||||
| pre | cflow.cs:178:9:179:9 | {...} | cflow.cs:240:9:245:9 | [finally: exception(Exception)] {...} |
|
||||
| pre | cflow.cs:178:9:179:9 | {...} | cflow.cs:240:9:245:9 | [finally: exception(NullReferenceException)] {...} |
|
||||
| pre | cflow.cs:178:9:179:9 | {...} | cflow.cs:240:9:245:9 | {...} |
|
||||
| pre | cflow.cs:178:9:179:9 | {...} | cflow.cs:242:17:242:41 | ...; |
|
||||
| pre | cflow.cs:178:9:179:9 | {...} | cflow.cs:242:17:242:41 | [finally: exception(Exception)] ...; |
|
||||
| pre | cflow.cs:178:9:179:9 | {...} | cflow.cs:242:17:242:41 | [finally: exception(NullReferenceException)] ...; |
|
||||
| pre | cflow.cs:178:9:179:9 | {...} | cflow.cs:242:17:242:41 | [finally: exception(OutOfMemoryException)] ...; |
|
||||
| pre | cflow.cs:178:9:179:9 | {...} | cflow.cs:242:17:242:41 | [finally: return] ...; |
|
||||
| pre | cflow.cs:178:9:179:9 | {...} | cflow.cs:243:13:244:37 | [finally: exception(Exception)] if (...) ... |
|
||||
| pre | cflow.cs:178:9:179:9 | {...} | cflow.cs:243:13:244:37 | [finally: exception(NullReferenceException)] if (...) ... |
|
||||
| pre | cflow.cs:178:9:179:9 | {...} | cflow.cs:243:13:244:37 | [finally: exception(OutOfMemoryException)] if (...) ... |
|
||||
| pre | cflow.cs:178:9:179:9 | {...} | cflow.cs:243:13:244:37 | [finally: return] if (...) ... |
|
||||
| pre | cflow.cs:178:9:179:9 | {...} | cflow.cs:243:13:244:37 | if (...) ... |
|
||||
| pre | cflow.cs:178:9:179:9 | {...} | cflow.cs:244:17:244:37 | ...; |
|
||||
| pre | cflow.cs:178:9:179:9 | {...} | cflow.cs:244:17:244:37 | [finally: exception(Exception)] ...; |
|
||||
| pre | cflow.cs:178:9:179:9 | {...} | cflow.cs:244:17:244:37 | [finally: exception(NullReferenceException)] ...; |
|
||||
| pre | cflow.cs:178:9:179:9 | {...} | cflow.cs:244:17:244:37 | [finally: exception(OutOfMemoryException)] ...; |
|
||||
| pre | cflow.cs:178:9:179:9 | {...} | cflow.cs:244:17:244:37 | [finally: return] ...; |
|
||||
| pre | cflow.cs:191:13:191:37 | call to method WriteLine | cflow.cs:191:13:191:37 | call to method WriteLine |
|
||||
| pre | cflow.cs:191:13:191:37 | call to method WriteLine | cflow.cs:192:13:192:19 | return ...; |
|
||||
| pre | cflow.cs:191:13:191:37 | call to method WriteLine | cflow.cs:194:9:197:9 | catch (...) {...} |
|
||||
| pre | cflow.cs:191:13:191:37 | call to method WriteLine | cflow.cs:198:9:200:9 | catch (...) {...} |
|
||||
| pre | cflow.cs:191:13:191:37 | call to method WriteLine | cflow.cs:194:9:197:9 | [exception: Exception] catch (...) {...} |
|
||||
| pre | cflow.cs:191:13:191:37 | call to method WriteLine | cflow.cs:194:38:194:39 | [exception: Exception] IOException ex |
|
||||
| pre | cflow.cs:191:13:191:37 | call to method WriteLine | cflow.cs:198:9:200:9 | [exception: Exception] catch (...) {...} |
|
||||
| pre | cflow.cs:191:13:191:37 | call to method WriteLine | cflow.cs:202:9:204:9 | [finally: exception(Exception)] {...} |
|
||||
| pre | cflow.cs:191:13:191:37 | call to method WriteLine | cflow.cs:207:16:207:16 | access to local variable i |
|
||||
| pre | cflow.cs:191:13:191:37 | call to method WriteLine | cflow.cs:208:9:230:9 | {...} |
|
||||
| pre | cflow.cs:191:13:191:37 | call to method WriteLine | cflow.cs:212:21:212:27 | return ...; |
|
||||
| pre | cflow.cs:191:13:191:37 | call to method WriteLine | cflow.cs:213:17:214:29 | if (...) ... |
|
||||
| pre | cflow.cs:191:13:191:37 | call to method WriteLine | cflow.cs:214:21:214:29 | continue; |
|
||||
| pre | cflow.cs:191:13:191:37 | call to method WriteLine | cflow.cs:215:17:216:26 | if (...) ... |
|
||||
| pre | cflow.cs:191:13:191:37 | call to method WriteLine | cflow.cs:216:21:216:26 | break; |
|
||||
| pre | cflow.cs:191:13:191:37 | call to method WriteLine | cflow.cs:219:13:229:13 | {...} |
|
||||
| pre | cflow.cs:191:13:191:37 | call to method WriteLine | cflow.cs:223:25:223:46 | [finally: break] throw ...; |
|
||||
| pre | cflow.cs:191:13:191:37 | call to method WriteLine | cflow.cs:223:25:223:46 | [finally: continue] throw ...; |
|
||||
| pre | cflow.cs:191:13:191:37 | call to method WriteLine | cflow.cs:223:25:223:46 | [finally: return] throw ...; |
|
||||
| pre | cflow.cs:191:13:191:37 | call to method WriteLine | cflow.cs:223:25:223:46 | throw ...; |
|
||||
| pre | cflow.cs:191:13:191:37 | call to method WriteLine | cflow.cs:223:31:223:45 | [finally: break] object creation of type Exception |
|
||||
| pre | cflow.cs:191:13:191:37 | call to method WriteLine | cflow.cs:223:31:223:45 | [finally: continue] object creation of type Exception |
|
||||
| pre | cflow.cs:191:13:191:37 | call to method WriteLine | cflow.cs:223:31:223:45 | [finally: return] object creation of type Exception |
|
||||
| pre | cflow.cs:191:13:191:37 | call to method WriteLine | cflow.cs:223:31:223:45 | object creation of type Exception |
|
||||
| pre | cflow.cs:191:13:191:37 | call to method WriteLine | cflow.cs:226:17:228:17 | [finally: break] {...} |
|
||||
| pre | cflow.cs:191:13:191:37 | call to method WriteLine | cflow.cs:226:17:228:17 | [finally: continue] {...} |
|
||||
| pre | cflow.cs:191:13:191:37 | call to method WriteLine | cflow.cs:226:17:228:17 | [finally: exception(Exception)] {...} |
|
||||
| pre | cflow.cs:191:13:191:37 | call to method WriteLine | cflow.cs:226:17:228:17 | [finally: return] {...} |
|
||||
| pre | cflow.cs:191:13:191:37 | call to method WriteLine | cflow.cs:226:17:228:17 | {...} |
|
||||
| pre | cflow.cs:191:13:191:37 | call to method WriteLine | cflow.cs:232:9:245:9 | try {...} ... |
|
||||
| pre | cflow.cs:191:13:191:37 | call to method WriteLine | cflow.cs:234:17:234:28 | access to property Length |
|
||||
| pre | cflow.cs:191:13:191:37 | call to method WriteLine | cflow.cs:234:33:234:33 | 0 |
|
||||
| pre | cflow.cs:191:13:191:37 | call to method WriteLine | cflow.cs:235:17:235:23 | return ...; |
|
||||
| pre | cflow.cs:191:13:191:37 | call to method WriteLine | cflow.cs:236:13:237:49 | if (...) ... |
|
||||
| pre | cflow.cs:191:13:191:37 | call to method WriteLine | cflow.cs:236:17:236:28 | access to property Length |
|
||||
| pre | cflow.cs:191:13:191:37 | call to method WriteLine | cflow.cs:236:33:236:33 | 1 |
|
||||
| pre | cflow.cs:191:13:191:37 | call to method WriteLine | cflow.cs:237:17:237:49 | throw ...; |
|
||||
| pre | cflow.cs:191:13:191:37 | call to method WriteLine | cflow.cs:237:23:237:48 | object creation of type OutOfMemoryException |
|
||||
| pre | cflow.cs:191:13:191:37 | call to method WriteLine | cflow.cs:240:9:245:9 | [finally: exception(Exception)] {...} |
|
||||
| pre | cflow.cs:191:13:191:37 | call to method WriteLine | cflow.cs:240:9:245:9 | [finally: exception(NullReferenceException)] {...} |
|
||||
| pre | cflow.cs:191:13:191:37 | call to method WriteLine | cflow.cs:240:9:245:9 | {...} |
|
||||
| pre | cflow.cs:191:13:191:37 | call to method WriteLine | cflow.cs:242:17:242:41 | ...; |
|
||||
| pre | cflow.cs:191:13:191:37 | call to method WriteLine | cflow.cs:242:17:242:41 | [finally: exception(Exception)] ...; |
|
||||
| pre | cflow.cs:191:13:191:37 | call to method WriteLine | cflow.cs:242:17:242:41 | [finally: exception(NullReferenceException)] ...; |
|
||||
| pre | cflow.cs:191:13:191:37 | call to method WriteLine | cflow.cs:242:17:242:41 | [finally: exception(OutOfMemoryException)] ...; |
|
||||
| pre | cflow.cs:191:13:191:37 | call to method WriteLine | cflow.cs:242:17:242:41 | [finally: return] ...; |
|
||||
| pre | cflow.cs:191:13:191:37 | call to method WriteLine | cflow.cs:243:13:244:37 | [finally: exception(Exception)] if (...) ... |
|
||||
| pre | cflow.cs:191:13:191:37 | call to method WriteLine | cflow.cs:243:13:244:37 | [finally: exception(NullReferenceException)] if (...) ... |
|
||||
| pre | cflow.cs:191:13:191:37 | call to method WriteLine | cflow.cs:243:13:244:37 | [finally: exception(OutOfMemoryException)] if (...) ... |
|
||||
| pre | cflow.cs:191:13:191:37 | call to method WriteLine | cflow.cs:243:13:244:37 | [finally: return] if (...) ... |
|
||||
| pre | cflow.cs:191:13:191:37 | call to method WriteLine | cflow.cs:243:13:244:37 | if (...) ... |
|
||||
| pre | cflow.cs:191:13:191:37 | call to method WriteLine | cflow.cs:244:17:244:37 | ...; |
|
||||
| pre | cflow.cs:191:13:191:37 | call to method WriteLine | cflow.cs:244:17:244:37 | [finally: exception(Exception)] ...; |
|
||||
| pre | cflow.cs:191:13:191:37 | call to method WriteLine | cflow.cs:244:17:244:37 | [finally: exception(NullReferenceException)] ...; |
|
||||
| pre | cflow.cs:191:13:191:37 | call to method WriteLine | cflow.cs:244:17:244:37 | [finally: exception(OutOfMemoryException)] ...; |
|
||||
| pre | cflow.cs:191:13:191:37 | call to method WriteLine | cflow.cs:244:17:244:37 | [finally: return] ...; |
|
||||
| pre | cflow.cs:192:13:192:19 | return ...; | cflow.cs:192:13:192:19 | return ...; |
|
||||
| pre | cflow.cs:194:9:197:9 | catch (...) {...} | cflow.cs:194:9:197:9 | catch (...) {...} |
|
||||
| pre | cflow.cs:198:9:200:9 | catch (...) {...} | cflow.cs:198:9:200:9 | catch (...) {...} |
|
||||
| pre | cflow.cs:198:9:200:9 | catch (...) {...} | cflow.cs:207:16:207:16 | access to local variable i |
|
||||
| pre | cflow.cs:198:9:200:9 | catch (...) {...} | cflow.cs:208:9:230:9 | {...} |
|
||||
| pre | cflow.cs:198:9:200:9 | catch (...) {...} | cflow.cs:212:21:212:27 | return ...; |
|
||||
| pre | cflow.cs:198:9:200:9 | catch (...) {...} | cflow.cs:213:17:214:29 | if (...) ... |
|
||||
| pre | cflow.cs:198:9:200:9 | catch (...) {...} | cflow.cs:214:21:214:29 | continue; |
|
||||
| pre | cflow.cs:198:9:200:9 | catch (...) {...} | cflow.cs:215:17:216:26 | if (...) ... |
|
||||
| pre | cflow.cs:198:9:200:9 | catch (...) {...} | cflow.cs:216:21:216:26 | break; |
|
||||
| pre | cflow.cs:198:9:200:9 | catch (...) {...} | cflow.cs:219:13:229:13 | {...} |
|
||||
| pre | cflow.cs:198:9:200:9 | catch (...) {...} | cflow.cs:223:25:223:46 | [finally: break] throw ...; |
|
||||
| pre | cflow.cs:198:9:200:9 | catch (...) {...} | cflow.cs:223:25:223:46 | [finally: continue] throw ...; |
|
||||
| pre | cflow.cs:198:9:200:9 | catch (...) {...} | cflow.cs:223:25:223:46 | [finally: return] throw ...; |
|
||||
| pre | cflow.cs:198:9:200:9 | catch (...) {...} | cflow.cs:223:25:223:46 | throw ...; |
|
||||
| pre | cflow.cs:198:9:200:9 | catch (...) {...} | cflow.cs:223:31:223:45 | [finally: break] object creation of type Exception |
|
||||
| pre | cflow.cs:198:9:200:9 | catch (...) {...} | cflow.cs:223:31:223:45 | [finally: continue] object creation of type Exception |
|
||||
| pre | cflow.cs:198:9:200:9 | catch (...) {...} | cflow.cs:223:31:223:45 | [finally: return] object creation of type Exception |
|
||||
| pre | cflow.cs:198:9:200:9 | catch (...) {...} | cflow.cs:223:31:223:45 | object creation of type Exception |
|
||||
| pre | cflow.cs:198:9:200:9 | catch (...) {...} | cflow.cs:226:17:228:17 | [finally: break] {...} |
|
||||
| pre | cflow.cs:198:9:200:9 | catch (...) {...} | cflow.cs:226:17:228:17 | [finally: continue] {...} |
|
||||
| pre | cflow.cs:198:9:200:9 | catch (...) {...} | cflow.cs:226:17:228:17 | [finally: exception(Exception)] {...} |
|
||||
| pre | cflow.cs:198:9:200:9 | catch (...) {...} | cflow.cs:226:17:228:17 | [finally: return] {...} |
|
||||
| pre | cflow.cs:198:9:200:9 | catch (...) {...} | cflow.cs:226:17:228:17 | {...} |
|
||||
| pre | cflow.cs:198:9:200:9 | catch (...) {...} | cflow.cs:232:9:245:9 | try {...} ... |
|
||||
| pre | cflow.cs:198:9:200:9 | catch (...) {...} | cflow.cs:234:17:234:28 | access to property Length |
|
||||
| pre | cflow.cs:198:9:200:9 | catch (...) {...} | cflow.cs:234:33:234:33 | 0 |
|
||||
| pre | cflow.cs:198:9:200:9 | catch (...) {...} | cflow.cs:235:17:235:23 | return ...; |
|
||||
| pre | cflow.cs:198:9:200:9 | catch (...) {...} | cflow.cs:236:13:237:49 | if (...) ... |
|
||||
| pre | cflow.cs:198:9:200:9 | catch (...) {...} | cflow.cs:236:17:236:28 | access to property Length |
|
||||
| pre | cflow.cs:198:9:200:9 | catch (...) {...} | cflow.cs:236:33:236:33 | 1 |
|
||||
| pre | cflow.cs:198:9:200:9 | catch (...) {...} | cflow.cs:237:17:237:49 | throw ...; |
|
||||
| pre | cflow.cs:198:9:200:9 | catch (...) {...} | cflow.cs:237:23:237:48 | object creation of type OutOfMemoryException |
|
||||
| pre | cflow.cs:198:9:200:9 | catch (...) {...} | cflow.cs:240:9:245:9 | [finally: exception(Exception)] {...} |
|
||||
| pre | cflow.cs:198:9:200:9 | catch (...) {...} | cflow.cs:240:9:245:9 | [finally: exception(NullReferenceException)] {...} |
|
||||
| pre | cflow.cs:198:9:200:9 | catch (...) {...} | cflow.cs:240:9:245:9 | {...} |
|
||||
| pre | cflow.cs:198:9:200:9 | catch (...) {...} | cflow.cs:242:17:242:41 | ...; |
|
||||
| pre | cflow.cs:198:9:200:9 | catch (...) {...} | cflow.cs:242:17:242:41 | [finally: exception(Exception)] ...; |
|
||||
| pre | cflow.cs:198:9:200:9 | catch (...) {...} | cflow.cs:242:17:242:41 | [finally: exception(NullReferenceException)] ...; |
|
||||
| pre | cflow.cs:198:9:200:9 | catch (...) {...} | cflow.cs:242:17:242:41 | [finally: exception(OutOfMemoryException)] ...; |
|
||||
| pre | cflow.cs:198:9:200:9 | catch (...) {...} | cflow.cs:242:17:242:41 | [finally: return] ...; |
|
||||
| pre | cflow.cs:198:9:200:9 | catch (...) {...} | cflow.cs:243:13:244:37 | [finally: exception(Exception)] if (...) ... |
|
||||
| pre | cflow.cs:198:9:200:9 | catch (...) {...} | cflow.cs:243:13:244:37 | [finally: exception(NullReferenceException)] if (...) ... |
|
||||
| pre | cflow.cs:198:9:200:9 | catch (...) {...} | cflow.cs:243:13:244:37 | [finally: exception(OutOfMemoryException)] if (...) ... |
|
||||
| pre | cflow.cs:198:9:200:9 | catch (...) {...} | cflow.cs:243:13:244:37 | [finally: return] if (...) ... |
|
||||
| pre | cflow.cs:198:9:200:9 | catch (...) {...} | cflow.cs:243:13:244:37 | if (...) ... |
|
||||
| pre | cflow.cs:198:9:200:9 | catch (...) {...} | cflow.cs:244:17:244:37 | ...; |
|
||||
| pre | cflow.cs:198:9:200:9 | catch (...) {...} | cflow.cs:244:17:244:37 | [finally: exception(Exception)] ...; |
|
||||
| pre | cflow.cs:198:9:200:9 | catch (...) {...} | cflow.cs:244:17:244:37 | [finally: exception(NullReferenceException)] ...; |
|
||||
| pre | cflow.cs:198:9:200:9 | catch (...) {...} | cflow.cs:244:17:244:37 | [finally: exception(OutOfMemoryException)] ...; |
|
||||
| pre | cflow.cs:198:9:200:9 | catch (...) {...} | cflow.cs:244:17:244:37 | [finally: return] ...; |
|
||||
| pre | cflow.cs:194:9:197:9 | [exception: Exception] catch (...) {...} | cflow.cs:194:9:197:9 | [exception: Exception] catch (...) {...} |
|
||||
| pre | cflow.cs:194:9:197:9 | [exception: Exception] catch (...) {...} | cflow.cs:194:38:194:39 | [exception: Exception] IOException ex |
|
||||
| pre | cflow.cs:194:9:197:9 | [exception: Exception] catch (...) {...} | cflow.cs:198:9:200:9 | [exception: Exception] catch (...) {...} |
|
||||
| pre | cflow.cs:194:9:197:9 | [exception: Exception] catch (...) {...} | cflow.cs:202:9:204:9 | [finally: exception(Exception)] {...} |
|
||||
| pre | cflow.cs:194:9:197:9 | [exception: OutOfMemoryException] catch (...) {...} | cflow.cs:194:9:197:9 | [exception: OutOfMemoryException] catch (...) {...} |
|
||||
| pre | cflow.cs:194:9:197:9 | [exception: OutOfMemoryException] catch (...) {...} | cflow.cs:202:9:204:9 | [finally: exception(OutOfMemoryException)] {...} |
|
||||
| pre | cflow.cs:194:38:194:39 | [exception: Exception] IOException ex | cflow.cs:194:38:194:39 | [exception: Exception] IOException ex |
|
||||
| pre | cflow.cs:198:9:200:9 | [exception: Exception] catch (...) {...} | cflow.cs:198:9:200:9 | [exception: Exception] catch (...) {...} |
|
||||
| pre | cflow.cs:198:9:200:9 | [exception: Exception] catch (...) {...} | cflow.cs:202:9:204:9 | [finally: exception(Exception)] {...} |
|
||||
| pre | cflow.cs:199:9:200:9 | {...} | cflow.cs:199:9:200:9 | {...} |
|
||||
| pre | cflow.cs:199:9:200:9 | {...} | cflow.cs:207:16:207:16 | access to local variable i |
|
||||
| pre | cflow.cs:199:9:200:9 | {...} | cflow.cs:208:9:230:9 | {...} |
|
||||
| pre | cflow.cs:199:9:200:9 | {...} | cflow.cs:212:21:212:27 | return ...; |
|
||||
| pre | cflow.cs:199:9:200:9 | {...} | cflow.cs:213:17:214:29 | if (...) ... |
|
||||
| pre | cflow.cs:199:9:200:9 | {...} | cflow.cs:214:21:214:29 | continue; |
|
||||
| pre | cflow.cs:199:9:200:9 | {...} | cflow.cs:215:17:216:26 | if (...) ... |
|
||||
| pre | cflow.cs:199:9:200:9 | {...} | cflow.cs:216:21:216:26 | break; |
|
||||
| pre | cflow.cs:199:9:200:9 | {...} | cflow.cs:219:13:229:13 | {...} |
|
||||
| pre | cflow.cs:199:9:200:9 | {...} | cflow.cs:223:25:223:46 | [finally: break] throw ...; |
|
||||
| pre | cflow.cs:199:9:200:9 | {...} | cflow.cs:223:25:223:46 | [finally: continue] throw ...; |
|
||||
| pre | cflow.cs:199:9:200:9 | {...} | cflow.cs:223:25:223:46 | [finally: return] throw ...; |
|
||||
| pre | cflow.cs:199:9:200:9 | {...} | cflow.cs:223:25:223:46 | throw ...; |
|
||||
| pre | cflow.cs:199:9:200:9 | {...} | cflow.cs:223:31:223:45 | [finally: break] object creation of type Exception |
|
||||
| pre | cflow.cs:199:9:200:9 | {...} | cflow.cs:223:31:223:45 | [finally: continue] object creation of type Exception |
|
||||
| pre | cflow.cs:199:9:200:9 | {...} | cflow.cs:223:31:223:45 | [finally: return] object creation of type Exception |
|
||||
| pre | cflow.cs:199:9:200:9 | {...} | cflow.cs:223:31:223:45 | object creation of type Exception |
|
||||
| pre | cflow.cs:199:9:200:9 | {...} | cflow.cs:226:17:228:17 | [finally: break] {...} |
|
||||
| pre | cflow.cs:199:9:200:9 | {...} | cflow.cs:226:17:228:17 | [finally: continue] {...} |
|
||||
| pre | cflow.cs:199:9:200:9 | {...} | cflow.cs:226:17:228:17 | [finally: exception(Exception)] {...} |
|
||||
| pre | cflow.cs:199:9:200:9 | {...} | cflow.cs:226:17:228:17 | [finally: return] {...} |
|
||||
| pre | cflow.cs:199:9:200:9 | {...} | cflow.cs:226:17:228:17 | {...} |
|
||||
| pre | cflow.cs:199:9:200:9 | {...} | cflow.cs:232:9:245:9 | try {...} ... |
|
||||
| pre | cflow.cs:199:9:200:9 | {...} | cflow.cs:234:17:234:28 | access to property Length |
|
||||
| pre | cflow.cs:199:9:200:9 | {...} | cflow.cs:234:33:234:33 | 0 |
|
||||
| pre | cflow.cs:199:9:200:9 | {...} | cflow.cs:235:17:235:23 | return ...; |
|
||||
| pre | cflow.cs:199:9:200:9 | {...} | cflow.cs:236:13:237:49 | if (...) ... |
|
||||
| pre | cflow.cs:199:9:200:9 | {...} | cflow.cs:236:17:236:28 | access to property Length |
|
||||
| pre | cflow.cs:199:9:200:9 | {...} | cflow.cs:236:33:236:33 | 1 |
|
||||
| pre | cflow.cs:199:9:200:9 | {...} | cflow.cs:237:17:237:49 | throw ...; |
|
||||
| pre | cflow.cs:199:9:200:9 | {...} | cflow.cs:237:23:237:48 | object creation of type OutOfMemoryException |
|
||||
| pre | cflow.cs:199:9:200:9 | {...} | cflow.cs:240:9:245:9 | [finally: exception(Exception)] {...} |
|
||||
| pre | cflow.cs:199:9:200:9 | {...} | cflow.cs:240:9:245:9 | [finally: exception(NullReferenceException)] {...} |
|
||||
| pre | cflow.cs:199:9:200:9 | {...} | cflow.cs:240:9:245:9 | {...} |
|
||||
| pre | cflow.cs:199:9:200:9 | {...} | cflow.cs:242:17:242:41 | ...; |
|
||||
| pre | cflow.cs:199:9:200:9 | {...} | cflow.cs:242:17:242:41 | [finally: exception(Exception)] ...; |
|
||||
| pre | cflow.cs:199:9:200:9 | {...} | cflow.cs:242:17:242:41 | [finally: exception(NullReferenceException)] ...; |
|
||||
| pre | cflow.cs:199:9:200:9 | {...} | cflow.cs:242:17:242:41 | [finally: exception(OutOfMemoryException)] ...; |
|
||||
| pre | cflow.cs:199:9:200:9 | {...} | cflow.cs:242:17:242:41 | [finally: return] ...; |
|
||||
| pre | cflow.cs:199:9:200:9 | {...} | cflow.cs:243:13:244:37 | [finally: exception(Exception)] if (...) ... |
|
||||
| pre | cflow.cs:199:9:200:9 | {...} | cflow.cs:243:13:244:37 | [finally: exception(NullReferenceException)] if (...) ... |
|
||||
| pre | cflow.cs:199:9:200:9 | {...} | cflow.cs:243:13:244:37 | [finally: exception(OutOfMemoryException)] if (...) ... |
|
||||
| pre | cflow.cs:199:9:200:9 | {...} | cflow.cs:243:13:244:37 | [finally: return] if (...) ... |
|
||||
| pre | cflow.cs:199:9:200:9 | {...} | cflow.cs:243:13:244:37 | if (...) ... |
|
||||
| pre | cflow.cs:199:9:200:9 | {...} | cflow.cs:244:17:244:37 | ...; |
|
||||
| pre | cflow.cs:199:9:200:9 | {...} | cflow.cs:244:17:244:37 | [finally: exception(Exception)] ...; |
|
||||
| pre | cflow.cs:199:9:200:9 | {...} | cflow.cs:244:17:244:37 | [finally: exception(NullReferenceException)] ...; |
|
||||
| pre | cflow.cs:199:9:200:9 | {...} | cflow.cs:244:17:244:37 | [finally: exception(OutOfMemoryException)] ...; |
|
||||
| pre | cflow.cs:199:9:200:9 | {...} | cflow.cs:244:17:244:37 | [finally: return] ...; |
|
||||
| pre | cflow.cs:202:9:204:9 | [finally: exception(Exception)] {...} | cflow.cs:202:9:204:9 | [finally: exception(Exception)] {...} |
|
||||
| pre | cflow.cs:202:9:204:9 | [finally: exception(OutOfMemoryException)] {...} | cflow.cs:202:9:204:9 | [finally: exception(OutOfMemoryException)] {...} |
|
||||
| pre | cflow.cs:207:16:207:16 | access to local variable i | cflow.cs:207:16:207:16 | access to local variable i |
|
||||
|
||||
@@ -101,7 +101,11 @@
|
||||
| 110 | 20 | cflow.cs:110:20:110:23 | true | true | 111 | 13 | cflow.cs:111:13:113:13 | {...} |
|
||||
| 127 | 32 | cflow.cs:127:32:127:44 | ... == ... | false | 127 | 53 | cflow.cs:127:53:127:57 | this access |
|
||||
| 127 | 32 | cflow.cs:127:32:127:44 | ... == ... | true | 127 | 48 | cflow.cs:127:48:127:49 | "" |
|
||||
| 162 | 48 | cflow.cs:162:48:162:51 | [exception: Exception] true | true | 163 | 9 | cflow.cs:163:9:165:9 | {...} |
|
||||
| 170 | 21 | cflow.cs:170:21:170:24 | true | true | 170 | 27 | cflow.cs:170:27:170:32 | throw ...; |
|
||||
| 194 | 48 | cflow.cs:194:48:194:51 | [exception: Exception] true | true | 195 | 9 | cflow.cs:195:9:197:9 | {...} |
|
||||
| 198 | 35 | cflow.cs:198:35:198:51 | [exception: Exception] ... != ... | true | 199 | 9 | cflow.cs:199:9:200:9 | {...} |
|
||||
| 198 | 35 | cflow.cs:198:35:198:51 | [exception: OutOfMemoryException] ... != ... | true | 199 | 9 | cflow.cs:199:9:200:9 | {...} |
|
||||
| 207 | 16 | cflow.cs:207:16:207:20 | ... > ... | false | 232 | 9 | cflow.cs:232:9:245:9 | try {...} ... |
|
||||
| 207 | 16 | cflow.cs:207:16:207:20 | ... > ... | true | 208 | 9 | cflow.cs:208:9:230:9 | {...} |
|
||||
| 211 | 21 | cflow.cs:211:21:211:26 | ... == ... | false | 213 | 17 | cflow.cs:213:17:214:29 | if (...) ... |
|
||||
|
||||
@@ -278,9 +278,9 @@
|
||||
| post | ExitMethods.cs:40:13:40:30 | call to method ErrorAlways | ExitMethods.cs:40:25:40:29 | false |
|
||||
| post | ExitMethods.cs:40:13:40:31 | ...; | ExitMethods.cs:39:9:41:9 | {...} |
|
||||
| post | ExitMethods.cs:40:25:40:29 | false | ExitMethods.cs:40:13:40:31 | ...; |
|
||||
| post | ExitMethods.cs:43:9:45:9 | {...} | ExitMethods.cs:42:9:45:9 | catch (...) {...} |
|
||||
| post | ExitMethods.cs:43:9:45:9 | {...} | ExitMethods.cs:42:9:45:9 | [exception: ArgumentException] catch (...) {...} |
|
||||
| post | ExitMethods.cs:44:13:44:19 | return ...; | ExitMethods.cs:43:9:45:9 | {...} |
|
||||
| post | ExitMethods.cs:47:9:49:9 | {...} | ExitMethods.cs:46:9:49:9 | catch (...) {...} |
|
||||
| post | ExitMethods.cs:47:9:49:9 | {...} | ExitMethods.cs:46:9:49:9 | [exception: Exception] catch (...) {...} |
|
||||
| post | ExitMethods.cs:48:13:48:19 | return ...; | ExitMethods.cs:47:9:49:9 | {...} |
|
||||
| post | ExitMethods.cs:52:17:52:26 | exit ErrorMaybe | ExitMethods.cs:54:13:54:13 | access to parameter b |
|
||||
| post | ExitMethods.cs:52:17:52:26 | exit ErrorMaybe | ExitMethods.cs:55:13:55:34 | throw ...; |
|
||||
@@ -1109,12 +1109,11 @@
|
||||
| post | cflow.cs:158:9:161:9 | {...} | cflow.cs:157:9:187:9 | try {...} ... |
|
||||
| post | cflow.cs:159:13:159:38 | ...; | cflow.cs:158:9:161:9 | {...} |
|
||||
| post | cflow.cs:159:31:159:36 | "Try2" | cflow.cs:159:13:159:38 | ...; |
|
||||
| post | cflow.cs:162:38:162:39 | IOException ex | cflow.cs:162:9:165:9 | catch (...) {...} |
|
||||
| post | cflow.cs:162:48:162:51 | true | cflow.cs:162:38:162:39 | IOException ex |
|
||||
| post | cflow.cs:163:9:165:9 | {...} | cflow.cs:162:48:162:51 | true |
|
||||
| post | cflow.cs:162:48:162:51 | [exception: Exception] true | cflow.cs:162:38:162:39 | [exception: Exception] IOException ex |
|
||||
| post | cflow.cs:163:9:165:9 | {...} | cflow.cs:162:48:162:51 | [exception: Exception] true |
|
||||
| post | cflow.cs:164:13:164:18 | throw ...; | cflow.cs:163:9:165:9 | {...} |
|
||||
| post | cflow.cs:166:41:166:42 | ArgumentException ex | cflow.cs:166:9:176:9 | catch (...) {...} |
|
||||
| post | cflow.cs:167:9:176:9 | {...} | cflow.cs:166:41:166:42 | ArgumentException ex |
|
||||
| post | cflow.cs:166:9:176:9 | [exception: OutOfMemoryException] catch (...) {...} | cflow.cs:162:9:165:9 | [exception: OutOfMemoryException] catch (...) {...} |
|
||||
| post | cflow.cs:167:9:176:9 | {...} | cflow.cs:166:41:166:42 | [exception: Exception] ArgumentException ex |
|
||||
| post | cflow.cs:168:13:175:13 | try {...} ... | cflow.cs:167:9:176:9 | {...} |
|
||||
| post | cflow.cs:169:13:171:13 | {...} | cflow.cs:168:13:175:13 | try {...} ... |
|
||||
| post | cflow.cs:170:17:170:32 | if (...) ... | cflow.cs:169:13:171:13 | {...} |
|
||||
@@ -1124,7 +1123,9 @@
|
||||
| post | cflow.cs:174:17:174:44 | [finally: exception(ArgumentException)] throw ...; | cflow.cs:174:23:174:43 | [finally: exception(ArgumentException)] object creation of type Exception |
|
||||
| post | cflow.cs:174:23:174:43 | [finally: exception(ArgumentException)] object creation of type Exception | cflow.cs:174:37:174:42 | [finally: exception(ArgumentException)] "Boo!" |
|
||||
| post | cflow.cs:174:37:174:42 | [finally: exception(ArgumentException)] "Boo!" | cflow.cs:173:13:175:13 | [finally: exception(ArgumentException)] {...} |
|
||||
| post | cflow.cs:178:9:179:9 | {...} | cflow.cs:177:9:179:9 | catch (...) {...} |
|
||||
| post | cflow.cs:177:9:179:9 | [exception: OutOfMemoryException] catch (...) {...} | cflow.cs:166:9:176:9 | [exception: OutOfMemoryException] catch (...) {...} |
|
||||
| post | cflow.cs:178:9:179:9 | {...} | cflow.cs:177:9:179:9 | [exception: Exception] catch (...) {...} |
|
||||
| post | cflow.cs:178:9:179:9 | {...} | cflow.cs:177:9:179:9 | [exception: OutOfMemoryException] catch (...) {...} |
|
||||
| post | cflow.cs:185:9:187:9 | [finally: exception(Exception)] {...} | cflow.cs:174:17:174:44 | [finally: exception(ArgumentException)] throw ...; |
|
||||
| post | cflow.cs:185:9:187:9 | [finally: exception(IOException)] {...} | cflow.cs:164:13:164:18 | throw ...; |
|
||||
| post | cflow.cs:185:9:187:9 | [finally: return] {...} | cflow.cs:160:13:160:19 | return ...; |
|
||||
@@ -1145,16 +1146,20 @@
|
||||
| post | cflow.cs:190:9:193:9 | {...} | cflow.cs:189:9:204:9 | try {...} ... |
|
||||
| post | cflow.cs:191:13:191:38 | ...; | cflow.cs:190:9:193:9 | {...} |
|
||||
| post | cflow.cs:191:31:191:36 | "Try3" | cflow.cs:191:13:191:38 | ...; |
|
||||
| post | cflow.cs:194:38:194:39 | IOException ex | cflow.cs:194:9:197:9 | catch (...) {...} |
|
||||
| post | cflow.cs:194:48:194:51 | true | cflow.cs:194:38:194:39 | IOException ex |
|
||||
| post | cflow.cs:195:9:197:9 | {...} | cflow.cs:194:48:194:51 | true |
|
||||
| post | cflow.cs:194:48:194:51 | [exception: Exception] true | cflow.cs:194:38:194:39 | [exception: Exception] IOException ex |
|
||||
| post | cflow.cs:195:9:197:9 | {...} | cflow.cs:194:48:194:51 | [exception: Exception] true |
|
||||
| post | cflow.cs:196:13:196:18 | throw ...; | cflow.cs:195:9:197:9 | {...} |
|
||||
| post | cflow.cs:198:26:198:26 | Exception e | cflow.cs:198:9:200:9 | catch (...) {...} |
|
||||
| post | cflow.cs:198:35:198:35 | access to local variable e | cflow.cs:198:26:198:26 | Exception e |
|
||||
| post | cflow.cs:198:35:198:43 | access to property Message | cflow.cs:198:35:198:35 | access to local variable e |
|
||||
| post | cflow.cs:198:35:198:51 | ... != ... | cflow.cs:198:48:198:51 | null |
|
||||
| post | cflow.cs:198:48:198:51 | null | cflow.cs:198:35:198:43 | access to property Message |
|
||||
| post | cflow.cs:199:9:200:9 | {...} | cflow.cs:198:35:198:51 | ... != ... |
|
||||
| post | cflow.cs:198:9:200:9 | [exception: OutOfMemoryException] catch (...) {...} | cflow.cs:194:9:197:9 | [exception: OutOfMemoryException] catch (...) {...} |
|
||||
| post | cflow.cs:198:26:198:26 | [exception: Exception] Exception e | cflow.cs:198:9:200:9 | [exception: Exception] catch (...) {...} |
|
||||
| post | cflow.cs:198:26:198:26 | [exception: OutOfMemoryException] Exception e | cflow.cs:198:9:200:9 | [exception: OutOfMemoryException] catch (...) {...} |
|
||||
| post | cflow.cs:198:35:198:35 | [exception: Exception] access to local variable e | cflow.cs:198:26:198:26 | [exception: Exception] Exception e |
|
||||
| post | cflow.cs:198:35:198:35 | [exception: OutOfMemoryException] access to local variable e | cflow.cs:198:26:198:26 | [exception: OutOfMemoryException] Exception e |
|
||||
| post | cflow.cs:198:35:198:43 | [exception: Exception] access to property Message | cflow.cs:198:35:198:35 | [exception: Exception] access to local variable e |
|
||||
| post | cflow.cs:198:35:198:43 | [exception: OutOfMemoryException] access to property Message | cflow.cs:198:35:198:35 | [exception: OutOfMemoryException] access to local variable e |
|
||||
| post | cflow.cs:198:35:198:51 | [exception: Exception] ... != ... | cflow.cs:198:48:198:51 | [exception: Exception] null |
|
||||
| post | cflow.cs:198:35:198:51 | [exception: OutOfMemoryException] ... != ... | cflow.cs:198:48:198:51 | [exception: OutOfMemoryException] null |
|
||||
| post | cflow.cs:198:48:198:51 | [exception: Exception] null | cflow.cs:198:35:198:43 | [exception: Exception] access to property Message |
|
||||
| post | cflow.cs:198:48:198:51 | [exception: OutOfMemoryException] null | cflow.cs:198:35:198:43 | [exception: OutOfMemoryException] access to property Message |
|
||||
| post | cflow.cs:202:9:204:9 | [finally: exception(IOException)] {...} | cflow.cs:196:13:196:18 | throw ...; |
|
||||
| post | cflow.cs:202:9:204:9 | [finally: return] {...} | cflow.cs:192:13:192:19 | return ...; |
|
||||
| post | cflow.cs:202:9:204:9 | {...} | cflow.cs:199:9:200:9 | {...} |
|
||||
@@ -1971,13 +1976,13 @@
|
||||
| pre | ExitMethods.cs:37:5:50:5 | {...} | ExitMethods.cs:38:9:49:9 | try {...} ... |
|
||||
| pre | ExitMethods.cs:38:9:49:9 | try {...} ... | ExitMethods.cs:39:9:41:9 | {...} |
|
||||
| pre | ExitMethods.cs:39:9:41:9 | {...} | ExitMethods.cs:40:13:40:31 | ...; |
|
||||
| pre | ExitMethods.cs:40:13:40:30 | call to method ErrorAlways | ExitMethods.cs:42:9:45:9 | catch (...) {...} |
|
||||
| pre | ExitMethods.cs:40:13:40:30 | call to method ErrorAlways | ExitMethods.cs:46:9:49:9 | catch (...) {...} |
|
||||
| pre | ExitMethods.cs:40:13:40:30 | call to method ErrorAlways | ExitMethods.cs:42:9:45:9 | [exception: ArgumentException] catch (...) {...} |
|
||||
| pre | ExitMethods.cs:40:13:40:30 | call to method ErrorAlways | ExitMethods.cs:42:9:45:9 | [exception: Exception] catch (...) {...} |
|
||||
| pre | ExitMethods.cs:40:13:40:31 | ...; | ExitMethods.cs:40:25:40:29 | false |
|
||||
| pre | ExitMethods.cs:40:25:40:29 | false | ExitMethods.cs:40:13:40:30 | call to method ErrorAlways |
|
||||
| pre | ExitMethods.cs:42:9:45:9 | catch (...) {...} | ExitMethods.cs:43:9:45:9 | {...} |
|
||||
| pre | ExitMethods.cs:42:9:45:9 | [exception: Exception] catch (...) {...} | ExitMethods.cs:46:9:49:9 | [exception: Exception] catch (...) {...} |
|
||||
| pre | ExitMethods.cs:43:9:45:9 | {...} | ExitMethods.cs:44:13:44:19 | return ...; |
|
||||
| pre | ExitMethods.cs:46:9:49:9 | catch (...) {...} | ExitMethods.cs:47:9:49:9 | {...} |
|
||||
| pre | ExitMethods.cs:46:9:49:9 | [exception: Exception] catch (...) {...} | ExitMethods.cs:47:9:49:9 | {...} |
|
||||
| pre | ExitMethods.cs:47:9:49:9 | {...} | ExitMethods.cs:48:13:48:19 | return ...; |
|
||||
| pre | ExitMethods.cs:52:17:52:26 | enter ErrorMaybe | ExitMethods.cs:53:5:56:5 | {...} |
|
||||
| pre | ExitMethods.cs:53:5:56:5 | {...} | ExitMethods.cs:54:9:55:34 | if (...) ... |
|
||||
@@ -2814,19 +2819,22 @@
|
||||
| pre | cflow.cs:157:9:187:9 | try {...} ... | cflow.cs:158:9:161:9 | {...} |
|
||||
| pre | cflow.cs:158:9:161:9 | {...} | cflow.cs:159:13:159:38 | ...; |
|
||||
| pre | cflow.cs:159:13:159:37 | call to method WriteLine | cflow.cs:160:13:160:19 | return ...; |
|
||||
| pre | cflow.cs:159:13:159:37 | call to method WriteLine | cflow.cs:162:9:165:9 | catch (...) {...} |
|
||||
| pre | cflow.cs:159:13:159:37 | call to method WriteLine | cflow.cs:166:9:176:9 | catch (...) {...} |
|
||||
| pre | cflow.cs:159:13:159:37 | call to method WriteLine | cflow.cs:162:9:165:9 | [exception: Exception] catch (...) {...} |
|
||||
| pre | cflow.cs:159:13:159:38 | ...; | cflow.cs:159:31:159:36 | "Try2" |
|
||||
| pre | cflow.cs:159:31:159:36 | "Try2" | cflow.cs:159:13:159:37 | call to method WriteLine |
|
||||
| pre | cflow.cs:159:31:159:36 | "Try2" | cflow.cs:177:9:179:9 | catch (...) {...} |
|
||||
| pre | cflow.cs:159:31:159:36 | "Try2" | cflow.cs:162:9:165:9 | [exception: OutOfMemoryException] catch (...) {...} |
|
||||
| pre | cflow.cs:160:13:160:19 | return ...; | cflow.cs:185:9:187:9 | [finally: return] {...} |
|
||||
| pre | cflow.cs:162:9:165:9 | catch (...) {...} | cflow.cs:162:38:162:39 | IOException ex |
|
||||
| pre | cflow.cs:162:38:162:39 | IOException ex | cflow.cs:162:48:162:51 | true |
|
||||
| pre | cflow.cs:162:48:162:51 | true | cflow.cs:163:9:165:9 | {...} |
|
||||
| pre | cflow.cs:162:9:165:9 | [exception: Exception] catch (...) {...} | cflow.cs:162:38:162:39 | [exception: Exception] IOException ex |
|
||||
| pre | cflow.cs:162:9:165:9 | [exception: Exception] catch (...) {...} | cflow.cs:166:9:176:9 | [exception: Exception] catch (...) {...} |
|
||||
| pre | cflow.cs:162:9:165:9 | [exception: OutOfMemoryException] catch (...) {...} | cflow.cs:166:9:176:9 | [exception: OutOfMemoryException] catch (...) {...} |
|
||||
| pre | cflow.cs:162:38:162:39 | [exception: Exception] IOException ex | cflow.cs:162:48:162:51 | [exception: Exception] true |
|
||||
| pre | cflow.cs:162:48:162:51 | [exception: Exception] true | cflow.cs:163:9:165:9 | {...} |
|
||||
| pre | cflow.cs:163:9:165:9 | {...} | cflow.cs:164:13:164:18 | throw ...; |
|
||||
| pre | cflow.cs:164:13:164:18 | throw ...; | cflow.cs:185:9:187:9 | [finally: exception(IOException)] {...} |
|
||||
| pre | cflow.cs:166:9:176:9 | catch (...) {...} | cflow.cs:166:41:166:42 | ArgumentException ex |
|
||||
| pre | cflow.cs:166:41:166:42 | ArgumentException ex | cflow.cs:167:9:176:9 | {...} |
|
||||
| pre | cflow.cs:166:9:176:9 | [exception: Exception] catch (...) {...} | cflow.cs:166:41:166:42 | [exception: Exception] ArgumentException ex |
|
||||
| pre | cflow.cs:166:9:176:9 | [exception: Exception] catch (...) {...} | cflow.cs:177:9:179:9 | [exception: Exception] catch (...) {...} |
|
||||
| pre | cflow.cs:166:9:176:9 | [exception: OutOfMemoryException] catch (...) {...} | cflow.cs:177:9:179:9 | [exception: OutOfMemoryException] catch (...) {...} |
|
||||
| pre | cflow.cs:166:41:166:42 | [exception: Exception] ArgumentException ex | cflow.cs:167:9:176:9 | {...} |
|
||||
| pre | cflow.cs:167:9:176:9 | {...} | cflow.cs:168:13:175:13 | try {...} ... |
|
||||
| pre | cflow.cs:168:13:175:13 | try {...} ... | cflow.cs:169:13:171:13 | {...} |
|
||||
| pre | cflow.cs:169:13:171:13 | {...} | cflow.cs:170:17:170:32 | if (...) ... |
|
||||
@@ -2837,7 +2845,6 @@
|
||||
| pre | cflow.cs:174:17:174:44 | [finally: exception(ArgumentException)] throw ...; | cflow.cs:185:9:187:9 | [finally: exception(Exception)] {...} |
|
||||
| pre | cflow.cs:174:23:174:43 | [finally: exception(ArgumentException)] object creation of type Exception | cflow.cs:174:17:174:44 | [finally: exception(ArgumentException)] throw ...; |
|
||||
| pre | cflow.cs:174:37:174:42 | [finally: exception(ArgumentException)] "Boo!" | cflow.cs:174:23:174:43 | [finally: exception(ArgumentException)] object creation of type Exception |
|
||||
| pre | cflow.cs:177:9:179:9 | catch (...) {...} | cflow.cs:178:9:179:9 | {...} |
|
||||
| pre | cflow.cs:178:9:179:9 | {...} | cflow.cs:185:9:187:9 | {...} |
|
||||
| pre | cflow.cs:185:9:187:9 | [finally: exception(Exception)] {...} | cflow.cs:186:13:186:41 | [finally: exception(Exception)] ...; |
|
||||
| pre | cflow.cs:185:9:187:9 | [finally: exception(IOException)] {...} | cflow.cs:186:13:186:41 | [finally: exception(IOException)] ...; |
|
||||
@@ -2855,24 +2862,30 @@
|
||||
| pre | cflow.cs:189:9:204:9 | try {...} ... | cflow.cs:190:9:193:9 | {...} |
|
||||
| pre | cflow.cs:190:9:193:9 | {...} | cflow.cs:191:13:191:38 | ...; |
|
||||
| pre | cflow.cs:191:13:191:37 | call to method WriteLine | cflow.cs:192:13:192:19 | return ...; |
|
||||
| pre | cflow.cs:191:13:191:37 | call to method WriteLine | cflow.cs:194:9:197:9 | catch (...) {...} |
|
||||
| pre | cflow.cs:191:13:191:37 | call to method WriteLine | cflow.cs:198:9:200:9 | catch (...) {...} |
|
||||
| pre | cflow.cs:191:13:191:37 | call to method WriteLine | cflow.cs:202:9:204:9 | [finally: exception(Exception)] {...} |
|
||||
| pre | cflow.cs:191:13:191:37 | call to method WriteLine | cflow.cs:194:9:197:9 | [exception: Exception] catch (...) {...} |
|
||||
| pre | cflow.cs:191:13:191:38 | ...; | cflow.cs:191:31:191:36 | "Try3" |
|
||||
| pre | cflow.cs:191:31:191:36 | "Try3" | cflow.cs:191:13:191:37 | call to method WriteLine |
|
||||
| pre | cflow.cs:191:31:191:36 | "Try3" | cflow.cs:202:9:204:9 | [finally: exception(OutOfMemoryException)] {...} |
|
||||
| pre | cflow.cs:191:31:191:36 | "Try3" | cflow.cs:194:9:197:9 | [exception: OutOfMemoryException] catch (...) {...} |
|
||||
| pre | cflow.cs:192:13:192:19 | return ...; | cflow.cs:202:9:204:9 | [finally: return] {...} |
|
||||
| pre | cflow.cs:194:9:197:9 | catch (...) {...} | cflow.cs:194:38:194:39 | IOException ex |
|
||||
| pre | cflow.cs:194:38:194:39 | IOException ex | cflow.cs:194:48:194:51 | true |
|
||||
| pre | cflow.cs:194:48:194:51 | true | cflow.cs:195:9:197:9 | {...} |
|
||||
| pre | cflow.cs:194:9:197:9 | [exception: Exception] catch (...) {...} | cflow.cs:194:38:194:39 | [exception: Exception] IOException ex |
|
||||
| pre | cflow.cs:194:9:197:9 | [exception: Exception] catch (...) {...} | cflow.cs:198:9:200:9 | [exception: Exception] catch (...) {...} |
|
||||
| pre | cflow.cs:194:9:197:9 | [exception: OutOfMemoryException] catch (...) {...} | cflow.cs:198:9:200:9 | [exception: OutOfMemoryException] catch (...) {...} |
|
||||
| pre | cflow.cs:194:38:194:39 | [exception: Exception] IOException ex | cflow.cs:194:48:194:51 | [exception: Exception] true |
|
||||
| pre | cflow.cs:194:48:194:51 | [exception: Exception] true | cflow.cs:195:9:197:9 | {...} |
|
||||
| pre | cflow.cs:195:9:197:9 | {...} | cflow.cs:196:13:196:18 | throw ...; |
|
||||
| pre | cflow.cs:196:13:196:18 | throw ...; | cflow.cs:202:9:204:9 | [finally: exception(IOException)] {...} |
|
||||
| pre | cflow.cs:198:9:200:9 | catch (...) {...} | cflow.cs:198:26:198:26 | Exception e |
|
||||
| pre | cflow.cs:198:26:198:26 | Exception e | cflow.cs:198:35:198:35 | access to local variable e |
|
||||
| pre | cflow.cs:198:35:198:35 | access to local variable e | cflow.cs:198:35:198:43 | access to property Message |
|
||||
| pre | cflow.cs:198:35:198:43 | access to property Message | cflow.cs:198:48:198:51 | null |
|
||||
| pre | cflow.cs:198:35:198:51 | ... != ... | cflow.cs:199:9:200:9 | {...} |
|
||||
| pre | cflow.cs:198:48:198:51 | null | cflow.cs:198:35:198:51 | ... != ... |
|
||||
| pre | cflow.cs:198:9:200:9 | [exception: Exception] catch (...) {...} | cflow.cs:198:26:198:26 | [exception: Exception] Exception e |
|
||||
| pre | cflow.cs:198:9:200:9 | [exception: OutOfMemoryException] catch (...) {...} | cflow.cs:198:26:198:26 | [exception: OutOfMemoryException] Exception e |
|
||||
| pre | cflow.cs:198:26:198:26 | [exception: Exception] Exception e | cflow.cs:198:35:198:35 | [exception: Exception] access to local variable e |
|
||||
| pre | cflow.cs:198:26:198:26 | [exception: OutOfMemoryException] Exception e | cflow.cs:198:35:198:35 | [exception: OutOfMemoryException] access to local variable e |
|
||||
| pre | cflow.cs:198:35:198:35 | [exception: Exception] access to local variable e | cflow.cs:198:35:198:43 | [exception: Exception] access to property Message |
|
||||
| pre | cflow.cs:198:35:198:35 | [exception: OutOfMemoryException] access to local variable e | cflow.cs:198:35:198:43 | [exception: OutOfMemoryException] access to property Message |
|
||||
| pre | cflow.cs:198:35:198:43 | [exception: Exception] access to property Message | cflow.cs:198:48:198:51 | [exception: Exception] null |
|
||||
| pre | cflow.cs:198:35:198:43 | [exception: OutOfMemoryException] access to property Message | cflow.cs:198:48:198:51 | [exception: OutOfMemoryException] null |
|
||||
| pre | cflow.cs:198:35:198:51 | [exception: Exception] ... != ... | cflow.cs:202:9:204:9 | [finally: exception(Exception)] {...} |
|
||||
| pre | cflow.cs:198:35:198:51 | [exception: OutOfMemoryException] ... != ... | cflow.cs:202:9:204:9 | [finally: exception(OutOfMemoryException)] {...} |
|
||||
| pre | cflow.cs:198:48:198:51 | [exception: Exception] null | cflow.cs:198:35:198:51 | [exception: Exception] ... != ... |
|
||||
| pre | cflow.cs:198:48:198:51 | [exception: OutOfMemoryException] null | cflow.cs:198:35:198:51 | [exception: OutOfMemoryException] ... != ... |
|
||||
| pre | cflow.cs:199:9:200:9 | {...} | cflow.cs:202:9:204:9 | {...} |
|
||||
| pre | cflow.cs:202:9:204:9 | [finally: exception(Exception)] {...} | cflow.cs:203:13:203:41 | [finally: exception(Exception)] ...; |
|
||||
| pre | cflow.cs:202:9:204:9 | [finally: exception(IOException)] {...} | cflow.cs:203:13:203:41 | [finally: exception(IOException)] ...; |
|
||||
|
||||
@@ -217,12 +217,12 @@
|
||||
| ExitMethods.cs:39:9:41:9 | {...} | ExitMethods.cs:40:13:40:31 | ...; | semmle.label | successor |
|
||||
| ExitMethods.cs:40:13:40:30 | call to method ErrorAlways | ExitMethods.cs:42:9:45:9 | catch (...) {...} | semmle.label | exception(ArgumentException) |
|
||||
| ExitMethods.cs:40:13:40:30 | call to method ErrorAlways | ExitMethods.cs:42:9:45:9 | catch (...) {...} | semmle.label | exception(Exception) |
|
||||
| ExitMethods.cs:40:13:40:30 | call to method ErrorAlways | ExitMethods.cs:46:9:49:9 | catch (...) {...} | semmle.label | exception(Exception) |
|
||||
| ExitMethods.cs:40:13:40:31 | ...; | ExitMethods.cs:40:25:40:29 | false | semmle.label | successor |
|
||||
| ExitMethods.cs:40:25:40:29 | false | ExitMethods.cs:40:13:40:30 | call to method ErrorAlways | semmle.label | successor |
|
||||
| ExitMethods.cs:42:9:45:9 | catch (...) {...} | ExitMethods.cs:43:9:45:9 | {...} | semmle.label | successor |
|
||||
| ExitMethods.cs:42:9:45:9 | catch (...) {...} | ExitMethods.cs:43:9:45:9 | {...} | semmle.label | match |
|
||||
| ExitMethods.cs:42:9:45:9 | catch (...) {...} | ExitMethods.cs:46:9:49:9 | catch (...) {...} | semmle.label | no-match |
|
||||
| ExitMethods.cs:43:9:45:9 | {...} | ExitMethods.cs:44:13:44:19 | return ...; | semmle.label | successor |
|
||||
| ExitMethods.cs:46:9:49:9 | catch (...) {...} | ExitMethods.cs:47:9:49:9 | {...} | semmle.label | successor |
|
||||
| ExitMethods.cs:46:9:49:9 | catch (...) {...} | ExitMethods.cs:47:9:49:9 | {...} | semmle.label | match |
|
||||
| ExitMethods.cs:47:9:49:9 | {...} | ExitMethods.cs:48:13:48:19 | return ...; | semmle.label | successor |
|
||||
| ExitMethods.cs:53:5:56:5 | {...} | ExitMethods.cs:54:9:55:34 | if (...) ... | semmle.label | successor |
|
||||
| ExitMethods.cs:54:9:55:34 | if (...) ... | ExitMethods.cs:54:13:54:13 | access to parameter b | semmle.label | successor |
|
||||
@@ -1010,18 +1010,18 @@
|
||||
| cflow.cs:158:9:161:9 | {...} | cflow.cs:159:13:159:38 | ...; | semmle.label | successor |
|
||||
| cflow.cs:159:13:159:37 | call to method WriteLine | cflow.cs:160:13:160:19 | return ...; | semmle.label | successor |
|
||||
| cflow.cs:159:13:159:37 | call to method WriteLine | cflow.cs:162:9:165:9 | catch (...) {...} | semmle.label | exception(Exception) |
|
||||
| cflow.cs:159:13:159:37 | call to method WriteLine | cflow.cs:166:9:176:9 | catch (...) {...} | semmle.label | exception(Exception) |
|
||||
| cflow.cs:159:13:159:37 | call to method WriteLine | cflow.cs:177:9:179:9 | catch (...) {...} | semmle.label | exception(Exception) |
|
||||
| cflow.cs:159:13:159:38 | ...; | cflow.cs:159:31:159:36 | "Try2" | semmle.label | successor |
|
||||
| cflow.cs:159:31:159:36 | "Try2" | cflow.cs:159:13:159:37 | call to method WriteLine | semmle.label | successor |
|
||||
| cflow.cs:159:31:159:36 | "Try2" | cflow.cs:177:9:179:9 | catch (...) {...} | semmle.label | exception(OutOfMemoryException) |
|
||||
| cflow.cs:159:31:159:36 | "Try2" | cflow.cs:162:9:165:9 | catch (...) {...} | semmle.label | exception(OutOfMemoryException) |
|
||||
| cflow.cs:160:13:160:19 | return ...; | cflow.cs:185:9:187:9 | {...} | semmle.label | return |
|
||||
| cflow.cs:162:9:165:9 | catch (...) {...} | cflow.cs:162:38:162:39 | IOException ex | semmle.label | successor |
|
||||
| cflow.cs:162:9:165:9 | catch (...) {...} | cflow.cs:162:38:162:39 | IOException ex | semmle.label | match |
|
||||
| cflow.cs:162:9:165:9 | catch (...) {...} | cflow.cs:166:9:176:9 | catch (...) {...} | semmle.label | no-match |
|
||||
| cflow.cs:162:38:162:39 | IOException ex | cflow.cs:162:48:162:51 | true | semmle.label | successor |
|
||||
| cflow.cs:162:48:162:51 | true | cflow.cs:163:9:165:9 | {...} | semmle.label | successor |
|
||||
| cflow.cs:162:48:162:51 | true | cflow.cs:163:9:165:9 | {...} | semmle.label | true |
|
||||
| cflow.cs:163:9:165:9 | {...} | cflow.cs:164:13:164:18 | throw ...; | semmle.label | successor |
|
||||
| cflow.cs:164:13:164:18 | throw ...; | cflow.cs:185:9:187:9 | {...} | semmle.label | exception(IOException) |
|
||||
| cflow.cs:166:9:176:9 | catch (...) {...} | cflow.cs:166:41:166:42 | ArgumentException ex | semmle.label | successor |
|
||||
| cflow.cs:166:9:176:9 | catch (...) {...} | cflow.cs:166:41:166:42 | ArgumentException ex | semmle.label | match |
|
||||
| cflow.cs:166:9:176:9 | catch (...) {...} | cflow.cs:177:9:179:9 | catch (...) {...} | semmle.label | no-match |
|
||||
| cflow.cs:166:41:166:42 | ArgumentException ex | cflow.cs:167:9:176:9 | {...} | semmle.label | successor |
|
||||
| cflow.cs:167:9:176:9 | {...} | cflow.cs:168:13:175:13 | try {...} ... | semmle.label | successor |
|
||||
| cflow.cs:168:13:175:13 | try {...} ... | cflow.cs:169:13:171:13 | {...} | semmle.label | successor |
|
||||
@@ -1033,7 +1033,7 @@
|
||||
| cflow.cs:174:17:174:44 | throw ...; | cflow.cs:185:9:187:9 | {...} | semmle.label | exception(Exception) |
|
||||
| cflow.cs:174:23:174:43 | object creation of type Exception | cflow.cs:174:17:174:44 | throw ...; | semmle.label | successor |
|
||||
| cflow.cs:174:37:174:42 | "Boo!" | cflow.cs:174:23:174:43 | object creation of type Exception | semmle.label | successor |
|
||||
| cflow.cs:177:9:179:9 | catch (...) {...} | cflow.cs:178:9:179:9 | {...} | semmle.label | successor |
|
||||
| cflow.cs:177:9:179:9 | catch (...) {...} | cflow.cs:178:9:179:9 | {...} | semmle.label | match |
|
||||
| cflow.cs:178:9:179:9 | {...} | cflow.cs:185:9:187:9 | {...} | semmle.label | successor |
|
||||
| cflow.cs:185:9:187:9 | {...} | cflow.cs:186:13:186:41 | ...; | semmle.label | successor |
|
||||
| cflow.cs:186:13:186:40 | call to method WriteLine | cflow.cs:189:9:204:9 | try {...} ... | semmle.label | successor |
|
||||
@@ -1043,22 +1043,23 @@
|
||||
| cflow.cs:190:9:193:9 | {...} | cflow.cs:191:13:191:38 | ...; | semmle.label | successor |
|
||||
| cflow.cs:191:13:191:37 | call to method WriteLine | cflow.cs:192:13:192:19 | return ...; | semmle.label | successor |
|
||||
| cflow.cs:191:13:191:37 | call to method WriteLine | cflow.cs:194:9:197:9 | catch (...) {...} | semmle.label | exception(Exception) |
|
||||
| cflow.cs:191:13:191:37 | call to method WriteLine | cflow.cs:198:9:200:9 | catch (...) {...} | semmle.label | exception(Exception) |
|
||||
| cflow.cs:191:13:191:37 | call to method WriteLine | cflow.cs:202:9:204:9 | {...} | semmle.label | exception(Exception) |
|
||||
| cflow.cs:191:13:191:38 | ...; | cflow.cs:191:31:191:36 | "Try3" | semmle.label | successor |
|
||||
| cflow.cs:191:31:191:36 | "Try3" | cflow.cs:191:13:191:37 | call to method WriteLine | semmle.label | successor |
|
||||
| cflow.cs:191:31:191:36 | "Try3" | cflow.cs:202:9:204:9 | {...} | semmle.label | exception(OutOfMemoryException) |
|
||||
| cflow.cs:191:31:191:36 | "Try3" | cflow.cs:194:9:197:9 | catch (...) {...} | semmle.label | exception(OutOfMemoryException) |
|
||||
| cflow.cs:192:13:192:19 | return ...; | cflow.cs:202:9:204:9 | {...} | semmle.label | return |
|
||||
| cflow.cs:194:9:197:9 | catch (...) {...} | cflow.cs:194:38:194:39 | IOException ex | semmle.label | successor |
|
||||
| cflow.cs:194:9:197:9 | catch (...) {...} | cflow.cs:194:38:194:39 | IOException ex | semmle.label | match |
|
||||
| cflow.cs:194:9:197:9 | catch (...) {...} | cflow.cs:198:9:200:9 | catch (...) {...} | semmle.label | no-match |
|
||||
| cflow.cs:194:38:194:39 | IOException ex | cflow.cs:194:48:194:51 | true | semmle.label | successor |
|
||||
| cflow.cs:194:48:194:51 | true | cflow.cs:195:9:197:9 | {...} | semmle.label | successor |
|
||||
| cflow.cs:194:48:194:51 | true | cflow.cs:195:9:197:9 | {...} | semmle.label | true |
|
||||
| cflow.cs:195:9:197:9 | {...} | cflow.cs:196:13:196:18 | throw ...; | semmle.label | successor |
|
||||
| cflow.cs:196:13:196:18 | throw ...; | cflow.cs:202:9:204:9 | {...} | semmle.label | exception(IOException) |
|
||||
| cflow.cs:198:9:200:9 | catch (...) {...} | cflow.cs:198:26:198:26 | Exception e | semmle.label | successor |
|
||||
| cflow.cs:198:9:200:9 | catch (...) {...} | cflow.cs:198:26:198:26 | Exception e | semmle.label | match |
|
||||
| cflow.cs:198:26:198:26 | Exception e | cflow.cs:198:35:198:35 | access to local variable e | semmle.label | successor |
|
||||
| cflow.cs:198:35:198:35 | access to local variable e | cflow.cs:198:35:198:43 | access to property Message | semmle.label | successor |
|
||||
| cflow.cs:198:35:198:43 | access to property Message | cflow.cs:198:48:198:51 | null | semmle.label | successor |
|
||||
| cflow.cs:198:35:198:51 | ... != ... | cflow.cs:199:9:200:9 | {...} | semmle.label | successor |
|
||||
| cflow.cs:198:35:198:51 | ... != ... | cflow.cs:199:9:200:9 | {...} | semmle.label | true |
|
||||
| cflow.cs:198:35:198:51 | ... != ... | cflow.cs:202:9:204:9 | {...} | semmle.label | exception(Exception) |
|
||||
| cflow.cs:198:35:198:51 | ... != ... | cflow.cs:202:9:204:9 | {...} | semmle.label | exception(OutOfMemoryException) |
|
||||
| cflow.cs:198:48:198:51 | null | cflow.cs:198:35:198:51 | ... != ... | semmle.label | successor |
|
||||
| cflow.cs:199:9:200:9 | {...} | cflow.cs:202:9:204:9 | {...} | semmle.label | successor |
|
||||
| cflow.cs:202:9:204:9 | {...} | cflow.cs:203:13:203:41 | ...; | semmle.label | successor |
|
||||
|
||||
@@ -349,6 +349,7 @@
|
||||
| ExitMethods.cs:40:13:40:31 | ...; | ExitMethods.cs:40:13:40:30 | call to method ErrorAlways | throw(ArgumentException) |
|
||||
| ExitMethods.cs:40:13:40:31 | ...; | ExitMethods.cs:40:13:40:30 | call to method ErrorAlways | throw(Exception) |
|
||||
| ExitMethods.cs:40:25:40:29 | false | ExitMethods.cs:40:25:40:29 | false | normal |
|
||||
| ExitMethods.cs:42:9:45:9 | catch (...) {...} | ExitMethods.cs:42:9:45:9 | catch (...) {...} | no-match |
|
||||
| ExitMethods.cs:42:9:45:9 | catch (...) {...} | ExitMethods.cs:44:13:44:19 | return ...; | return |
|
||||
| ExitMethods.cs:43:9:45:9 | {...} | ExitMethods.cs:44:13:44:19 | return ...; | return |
|
||||
| ExitMethods.cs:44:13:44:19 | return ...; | ExitMethods.cs:44:13:44:19 | return ...; | return |
|
||||
@@ -1412,11 +1413,13 @@
|
||||
| cflow.cs:159:31:159:36 | "Try2" | cflow.cs:159:31:159:36 | "Try2" | normal |
|
||||
| cflow.cs:159:31:159:36 | "Try2" | cflow.cs:159:31:159:36 | "Try2" | throw(OutOfMemoryException) |
|
||||
| cflow.cs:160:13:160:19 | return ...; | cflow.cs:160:13:160:19 | return ...; | return |
|
||||
| cflow.cs:162:9:165:9 | catch (...) {...} | cflow.cs:162:9:165:9 | catch (...) {...} | no-match |
|
||||
| cflow.cs:162:9:165:9 | catch (...) {...} | cflow.cs:164:13:164:18 | throw ...; | throw(IOException) |
|
||||
| cflow.cs:162:38:162:39 | IOException ex | cflow.cs:162:38:162:39 | IOException ex | normal |
|
||||
| cflow.cs:162:48:162:51 | true | cflow.cs:162:48:162:51 | true | normal |
|
||||
| cflow.cs:162:48:162:51 | true | cflow.cs:162:48:162:51 | true | true/true |
|
||||
| cflow.cs:163:9:165:9 | {...} | cflow.cs:164:13:164:18 | throw ...; | throw(IOException) |
|
||||
| cflow.cs:164:13:164:18 | throw ...; | cflow.cs:164:13:164:18 | throw ...; | throw(IOException) |
|
||||
| cflow.cs:166:9:176:9 | catch (...) {...} | cflow.cs:166:9:176:9 | catch (...) {...} | no-match |
|
||||
| cflow.cs:166:9:176:9 | catch (...) {...} | cflow.cs:174:17:174:44 | throw ...; | throw(Exception) |
|
||||
| cflow.cs:166:41:166:42 | ArgumentException ex | cflow.cs:166:41:166:42 | ArgumentException ex | normal |
|
||||
| cflow.cs:167:9:176:9 | {...} | cflow.cs:174:17:174:44 | throw ...; | throw(Exception) |
|
||||
@@ -1429,6 +1432,7 @@
|
||||
| cflow.cs:174:17:174:44 | throw ...; | cflow.cs:174:17:174:44 | throw ...; | throw(Exception) |
|
||||
| cflow.cs:174:23:174:43 | object creation of type Exception | cflow.cs:174:23:174:43 | object creation of type Exception | normal |
|
||||
| cflow.cs:174:37:174:42 | "Boo!" | cflow.cs:174:37:174:42 | "Boo!" | normal |
|
||||
| cflow.cs:177:9:179:9 | catch (...) {...} | cflow.cs:177:9:179:9 | catch (...) {...} | no-match |
|
||||
| cflow.cs:177:9:179:9 | catch (...) {...} | cflow.cs:178:9:179:9 | {...} | normal |
|
||||
| cflow.cs:178:9:179:9 | {...} | cflow.cs:178:9:179:9 | {...} | normal |
|
||||
| cflow.cs:180:9:183:9 | catch {...} | cflow.cs:182:13:182:19 | return ...; | return |
|
||||
@@ -1455,16 +1459,22 @@
|
||||
| cflow.cs:191:31:191:36 | "Try3" | cflow.cs:191:31:191:36 | "Try3" | normal |
|
||||
| cflow.cs:191:31:191:36 | "Try3" | cflow.cs:191:31:191:36 | "Try3" | throw(OutOfMemoryException) |
|
||||
| cflow.cs:192:13:192:19 | return ...; | cflow.cs:192:13:192:19 | return ...; | return |
|
||||
| cflow.cs:194:9:197:9 | catch (...) {...} | cflow.cs:194:9:197:9 | catch (...) {...} | no-match |
|
||||
| cflow.cs:194:9:197:9 | catch (...) {...} | cflow.cs:196:13:196:18 | throw ...; | throw(IOException) |
|
||||
| cflow.cs:194:38:194:39 | IOException ex | cflow.cs:194:38:194:39 | IOException ex | normal |
|
||||
| cflow.cs:194:48:194:51 | true | cflow.cs:194:48:194:51 | true | normal |
|
||||
| cflow.cs:194:48:194:51 | true | cflow.cs:194:48:194:51 | true | true/true |
|
||||
| cflow.cs:195:9:197:9 | {...} | cflow.cs:196:13:196:18 | throw ...; | throw(IOException) |
|
||||
| cflow.cs:196:13:196:18 | throw ...; | cflow.cs:196:13:196:18 | throw ...; | throw(IOException) |
|
||||
| cflow.cs:198:9:200:9 | catch (...) {...} | cflow.cs:198:9:200:9 | catch (...) {...} | throw(Exception) |
|
||||
| cflow.cs:198:9:200:9 | catch (...) {...} | cflow.cs:198:9:200:9 | catch (...) {...} | throw(OutOfMemoryException) |
|
||||
| cflow.cs:198:9:200:9 | catch (...) {...} | cflow.cs:198:35:198:51 | ... != ... | throw(Exception) |
|
||||
| cflow.cs:198:9:200:9 | catch (...) {...} | cflow.cs:198:35:198:51 | ... != ... | throw(OutOfMemoryException) |
|
||||
| cflow.cs:198:9:200:9 | catch (...) {...} | cflow.cs:199:9:200:9 | {...} | normal |
|
||||
| cflow.cs:198:26:198:26 | Exception e | cflow.cs:198:26:198:26 | Exception e | normal |
|
||||
| cflow.cs:198:35:198:35 | access to local variable e | cflow.cs:198:35:198:35 | access to local variable e | normal |
|
||||
| cflow.cs:198:35:198:43 | access to property Message | cflow.cs:198:35:198:43 | access to property Message | normal |
|
||||
| cflow.cs:198:35:198:51 | ... != ... | cflow.cs:198:35:198:51 | ... != ... | normal |
|
||||
| cflow.cs:198:35:198:51 | ... != ... | cflow.cs:198:35:198:51 | ... != ... | false/false |
|
||||
| cflow.cs:198:35:198:51 | ... != ... | cflow.cs:198:35:198:51 | ... != ... | true/true |
|
||||
| cflow.cs:198:48:198:51 | null | cflow.cs:198:48:198:51 | null | normal |
|
||||
| cflow.cs:199:9:200:9 | {...} | cflow.cs:199:9:200:9 | {...} | normal |
|
||||
| cflow.cs:202:9:204:9 | {...} | cflow.cs:203:13:203:40 | call to method WriteLine | normal |
|
||||
|
||||
@@ -313,15 +313,16 @@
|
||||
| ExitMethods.cs:37:5:50:5 | {...} | ExitMethods.cs:38:9:49:9 | try {...} ... | semmle.label | successor |
|
||||
| ExitMethods.cs:38:9:49:9 | try {...} ... | ExitMethods.cs:39:9:41:9 | {...} | semmle.label | successor |
|
||||
| ExitMethods.cs:39:9:41:9 | {...} | ExitMethods.cs:40:13:40:31 | ...; | semmle.label | successor |
|
||||
| ExitMethods.cs:40:13:40:30 | call to method ErrorAlways | ExitMethods.cs:42:9:45:9 | catch (...) {...} | semmle.label | exception(ArgumentException) |
|
||||
| ExitMethods.cs:40:13:40:30 | call to method ErrorAlways | ExitMethods.cs:42:9:45:9 | catch (...) {...} | semmle.label | exception(Exception) |
|
||||
| ExitMethods.cs:40:13:40:30 | call to method ErrorAlways | ExitMethods.cs:46:9:49:9 | catch (...) {...} | semmle.label | exception(Exception) |
|
||||
| ExitMethods.cs:40:13:40:30 | call to method ErrorAlways | ExitMethods.cs:42:9:45:9 | [exception: ArgumentException] catch (...) {...} | semmle.label | exception(ArgumentException) |
|
||||
| ExitMethods.cs:40:13:40:30 | call to method ErrorAlways | ExitMethods.cs:42:9:45:9 | [exception: Exception] catch (...) {...} | semmle.label | exception(Exception) |
|
||||
| ExitMethods.cs:40:13:40:31 | ...; | ExitMethods.cs:40:25:40:29 | false | semmle.label | successor |
|
||||
| ExitMethods.cs:40:25:40:29 | false | ExitMethods.cs:40:13:40:30 | call to method ErrorAlways | semmle.label | successor |
|
||||
| ExitMethods.cs:42:9:45:9 | catch (...) {...} | ExitMethods.cs:43:9:45:9 | {...} | semmle.label | successor |
|
||||
| ExitMethods.cs:42:9:45:9 | [exception: ArgumentException] catch (...) {...} | ExitMethods.cs:43:9:45:9 | {...} | semmle.label | match |
|
||||
| ExitMethods.cs:42:9:45:9 | [exception: Exception] catch (...) {...} | ExitMethods.cs:43:9:45:9 | {...} | semmle.label | match |
|
||||
| ExitMethods.cs:42:9:45:9 | [exception: Exception] catch (...) {...} | ExitMethods.cs:46:9:49:9 | [exception: Exception] catch (...) {...} | semmle.label | no-match |
|
||||
| ExitMethods.cs:43:9:45:9 | {...} | ExitMethods.cs:44:13:44:19 | return ...; | semmle.label | successor |
|
||||
| ExitMethods.cs:44:13:44:19 | return ...; | ExitMethods.cs:36:10:36:11 | exit M6 | semmle.label | return |
|
||||
| ExitMethods.cs:46:9:49:9 | catch (...) {...} | ExitMethods.cs:47:9:49:9 | {...} | semmle.label | successor |
|
||||
| ExitMethods.cs:46:9:49:9 | [exception: Exception] catch (...) {...} | ExitMethods.cs:47:9:49:9 | {...} | semmle.label | match |
|
||||
| ExitMethods.cs:47:9:49:9 | {...} | ExitMethods.cs:48:13:48:19 | return ...; | semmle.label | successor |
|
||||
| ExitMethods.cs:48:13:48:19 | return ...; | ExitMethods.cs:36:10:36:11 | exit M6 | semmle.label | return |
|
||||
| ExitMethods.cs:52:17:52:26 | enter ErrorMaybe | ExitMethods.cs:53:5:56:5 | {...} | semmle.label | successor |
|
||||
@@ -1261,20 +1262,22 @@
|
||||
| cflow.cs:157:9:187:9 | try {...} ... | cflow.cs:158:9:161:9 | {...} | semmle.label | successor |
|
||||
| cflow.cs:158:9:161:9 | {...} | cflow.cs:159:13:159:38 | ...; | semmle.label | successor |
|
||||
| cflow.cs:159:13:159:37 | call to method WriteLine | cflow.cs:160:13:160:19 | return ...; | semmle.label | successor |
|
||||
| cflow.cs:159:13:159:37 | call to method WriteLine | cflow.cs:162:9:165:9 | catch (...) {...} | semmle.label | exception(Exception) |
|
||||
| cflow.cs:159:13:159:37 | call to method WriteLine | cflow.cs:166:9:176:9 | catch (...) {...} | semmle.label | exception(Exception) |
|
||||
| cflow.cs:159:13:159:37 | call to method WriteLine | cflow.cs:177:9:179:9 | catch (...) {...} | semmle.label | exception(Exception) |
|
||||
| cflow.cs:159:13:159:37 | call to method WriteLine | cflow.cs:162:9:165:9 | [exception: Exception] catch (...) {...} | semmle.label | exception(Exception) |
|
||||
| cflow.cs:159:13:159:38 | ...; | cflow.cs:159:31:159:36 | "Try2" | semmle.label | successor |
|
||||
| cflow.cs:159:31:159:36 | "Try2" | cflow.cs:159:13:159:37 | call to method WriteLine | semmle.label | successor |
|
||||
| cflow.cs:159:31:159:36 | "Try2" | cflow.cs:177:9:179:9 | catch (...) {...} | semmle.label | exception(OutOfMemoryException) |
|
||||
| cflow.cs:159:31:159:36 | "Try2" | cflow.cs:162:9:165:9 | [exception: OutOfMemoryException] catch (...) {...} | semmle.label | exception(OutOfMemoryException) |
|
||||
| cflow.cs:160:13:160:19 | return ...; | cflow.cs:185:9:187:9 | [finally: return] {...} | semmle.label | return |
|
||||
| cflow.cs:162:9:165:9 | catch (...) {...} | cflow.cs:162:38:162:39 | IOException ex | semmle.label | successor |
|
||||
| cflow.cs:162:38:162:39 | IOException ex | cflow.cs:162:48:162:51 | true | semmle.label | successor |
|
||||
| cflow.cs:162:48:162:51 | true | cflow.cs:163:9:165:9 | {...} | semmle.label | successor |
|
||||
| cflow.cs:162:9:165:9 | [exception: Exception] catch (...) {...} | cflow.cs:162:38:162:39 | [exception: Exception] IOException ex | semmle.label | match |
|
||||
| cflow.cs:162:9:165:9 | [exception: Exception] catch (...) {...} | cflow.cs:166:9:176:9 | [exception: Exception] catch (...) {...} | semmle.label | no-match |
|
||||
| cflow.cs:162:9:165:9 | [exception: OutOfMemoryException] catch (...) {...} | cflow.cs:166:9:176:9 | [exception: OutOfMemoryException] catch (...) {...} | semmle.label | no-match |
|
||||
| cflow.cs:162:38:162:39 | [exception: Exception] IOException ex | cflow.cs:162:48:162:51 | [exception: Exception] true | semmle.label | successor |
|
||||
| cflow.cs:162:48:162:51 | [exception: Exception] true | cflow.cs:163:9:165:9 | {...} | semmle.label | true |
|
||||
| cflow.cs:163:9:165:9 | {...} | cflow.cs:164:13:164:18 | throw ...; | semmle.label | successor |
|
||||
| cflow.cs:164:13:164:18 | throw ...; | cflow.cs:185:9:187:9 | [finally: exception(IOException)] {...} | semmle.label | exception(IOException) |
|
||||
| cflow.cs:166:9:176:9 | catch (...) {...} | cflow.cs:166:41:166:42 | ArgumentException ex | semmle.label | successor |
|
||||
| cflow.cs:166:41:166:42 | ArgumentException ex | cflow.cs:167:9:176:9 | {...} | semmle.label | successor |
|
||||
| cflow.cs:166:9:176:9 | [exception: Exception] catch (...) {...} | cflow.cs:166:41:166:42 | [exception: Exception] ArgumentException ex | semmle.label | match |
|
||||
| cflow.cs:166:9:176:9 | [exception: Exception] catch (...) {...} | cflow.cs:177:9:179:9 | [exception: Exception] catch (...) {...} | semmle.label | no-match |
|
||||
| cflow.cs:166:9:176:9 | [exception: OutOfMemoryException] catch (...) {...} | cflow.cs:177:9:179:9 | [exception: OutOfMemoryException] catch (...) {...} | semmle.label | no-match |
|
||||
| cflow.cs:166:41:166:42 | [exception: Exception] ArgumentException ex | cflow.cs:167:9:176:9 | {...} | semmle.label | successor |
|
||||
| cflow.cs:167:9:176:9 | {...} | cflow.cs:168:13:175:13 | try {...} ... | semmle.label | successor |
|
||||
| cflow.cs:168:13:175:13 | try {...} ... | cflow.cs:169:13:171:13 | {...} | semmle.label | successor |
|
||||
| cflow.cs:169:13:171:13 | {...} | cflow.cs:170:17:170:32 | if (...) ... | semmle.label | successor |
|
||||
@@ -1285,7 +1288,8 @@
|
||||
| cflow.cs:174:17:174:44 | [finally: exception(ArgumentException)] throw ...; | cflow.cs:185:9:187:9 | [finally: exception(Exception)] {...} | semmle.label | exception(Exception) |
|
||||
| cflow.cs:174:23:174:43 | [finally: exception(ArgumentException)] object creation of type Exception | cflow.cs:174:17:174:44 | [finally: exception(ArgumentException)] throw ...; | semmle.label | successor |
|
||||
| cflow.cs:174:37:174:42 | [finally: exception(ArgumentException)] "Boo!" | cflow.cs:174:23:174:43 | [finally: exception(ArgumentException)] object creation of type Exception | semmle.label | successor |
|
||||
| cflow.cs:177:9:179:9 | catch (...) {...} | cflow.cs:178:9:179:9 | {...} | semmle.label | successor |
|
||||
| cflow.cs:177:9:179:9 | [exception: Exception] catch (...) {...} | cflow.cs:178:9:179:9 | {...} | semmle.label | match |
|
||||
| cflow.cs:177:9:179:9 | [exception: OutOfMemoryException] catch (...) {...} | cflow.cs:178:9:179:9 | {...} | semmle.label | match |
|
||||
| cflow.cs:178:9:179:9 | {...} | cflow.cs:185:9:187:9 | {...} | semmle.label | successor |
|
||||
| cflow.cs:185:9:187:9 | [finally: exception(Exception)] {...} | cflow.cs:186:13:186:41 | [finally: exception(Exception)] ...; | semmle.label | successor |
|
||||
| cflow.cs:185:9:187:9 | [finally: exception(IOException)] {...} | cflow.cs:186:13:186:41 | [finally: exception(IOException)] ...; | semmle.label | successor |
|
||||
@@ -1306,24 +1310,32 @@
|
||||
| cflow.cs:189:9:204:9 | try {...} ... | cflow.cs:190:9:193:9 | {...} | semmle.label | successor |
|
||||
| cflow.cs:190:9:193:9 | {...} | cflow.cs:191:13:191:38 | ...; | semmle.label | successor |
|
||||
| cflow.cs:191:13:191:37 | call to method WriteLine | cflow.cs:192:13:192:19 | return ...; | semmle.label | successor |
|
||||
| cflow.cs:191:13:191:37 | call to method WriteLine | cflow.cs:194:9:197:9 | catch (...) {...} | semmle.label | exception(Exception) |
|
||||
| cflow.cs:191:13:191:37 | call to method WriteLine | cflow.cs:198:9:200:9 | catch (...) {...} | semmle.label | exception(Exception) |
|
||||
| cflow.cs:191:13:191:37 | call to method WriteLine | cflow.cs:202:9:204:9 | [finally: exception(Exception)] {...} | semmle.label | exception(Exception) |
|
||||
| cflow.cs:191:13:191:37 | call to method WriteLine | cflow.cs:194:9:197:9 | [exception: Exception] catch (...) {...} | semmle.label | exception(Exception) |
|
||||
| cflow.cs:191:13:191:38 | ...; | cflow.cs:191:31:191:36 | "Try3" | semmle.label | successor |
|
||||
| cflow.cs:191:31:191:36 | "Try3" | cflow.cs:191:13:191:37 | call to method WriteLine | semmle.label | successor |
|
||||
| cflow.cs:191:31:191:36 | "Try3" | cflow.cs:202:9:204:9 | [finally: exception(OutOfMemoryException)] {...} | semmle.label | exception(OutOfMemoryException) |
|
||||
| cflow.cs:191:31:191:36 | "Try3" | cflow.cs:194:9:197:9 | [exception: OutOfMemoryException] catch (...) {...} | semmle.label | exception(OutOfMemoryException) |
|
||||
| cflow.cs:192:13:192:19 | return ...; | cflow.cs:202:9:204:9 | [finally: return] {...} | semmle.label | return |
|
||||
| cflow.cs:194:9:197:9 | catch (...) {...} | cflow.cs:194:38:194:39 | IOException ex | semmle.label | successor |
|
||||
| cflow.cs:194:38:194:39 | IOException ex | cflow.cs:194:48:194:51 | true | semmle.label | successor |
|
||||
| cflow.cs:194:48:194:51 | true | cflow.cs:195:9:197:9 | {...} | semmle.label | successor |
|
||||
| cflow.cs:194:9:197:9 | [exception: Exception] catch (...) {...} | cflow.cs:194:38:194:39 | [exception: Exception] IOException ex | semmle.label | match |
|
||||
| cflow.cs:194:9:197:9 | [exception: Exception] catch (...) {...} | cflow.cs:198:9:200:9 | [exception: Exception] catch (...) {...} | semmle.label | no-match |
|
||||
| cflow.cs:194:9:197:9 | [exception: OutOfMemoryException] catch (...) {...} | cflow.cs:198:9:200:9 | [exception: OutOfMemoryException] catch (...) {...} | semmle.label | no-match |
|
||||
| cflow.cs:194:38:194:39 | [exception: Exception] IOException ex | cflow.cs:194:48:194:51 | [exception: Exception] true | semmle.label | successor |
|
||||
| cflow.cs:194:48:194:51 | [exception: Exception] true | cflow.cs:195:9:197:9 | {...} | semmle.label | true |
|
||||
| cflow.cs:195:9:197:9 | {...} | cflow.cs:196:13:196:18 | throw ...; | semmle.label | successor |
|
||||
| cflow.cs:196:13:196:18 | throw ...; | cflow.cs:202:9:204:9 | [finally: exception(IOException)] {...} | semmle.label | exception(IOException) |
|
||||
| cflow.cs:198:9:200:9 | catch (...) {...} | cflow.cs:198:26:198:26 | Exception e | semmle.label | successor |
|
||||
| cflow.cs:198:26:198:26 | Exception e | cflow.cs:198:35:198:35 | access to local variable e | semmle.label | successor |
|
||||
| cflow.cs:198:35:198:35 | access to local variable e | cflow.cs:198:35:198:43 | access to property Message | semmle.label | successor |
|
||||
| cflow.cs:198:35:198:43 | access to property Message | cflow.cs:198:48:198:51 | null | semmle.label | successor |
|
||||
| cflow.cs:198:35:198:51 | ... != ... | cflow.cs:199:9:200:9 | {...} | semmle.label | successor |
|
||||
| cflow.cs:198:48:198:51 | null | cflow.cs:198:35:198:51 | ... != ... | semmle.label | successor |
|
||||
| cflow.cs:198:9:200:9 | [exception: Exception] catch (...) {...} | cflow.cs:198:26:198:26 | [exception: Exception] Exception e | semmle.label | match |
|
||||
| cflow.cs:198:9:200:9 | [exception: OutOfMemoryException] catch (...) {...} | cflow.cs:198:26:198:26 | [exception: OutOfMemoryException] Exception e | semmle.label | match |
|
||||
| cflow.cs:198:26:198:26 | [exception: Exception] Exception e | cflow.cs:198:35:198:35 | [exception: Exception] access to local variable e | semmle.label | successor |
|
||||
| cflow.cs:198:26:198:26 | [exception: OutOfMemoryException] Exception e | cflow.cs:198:35:198:35 | [exception: OutOfMemoryException] access to local variable e | semmle.label | successor |
|
||||
| cflow.cs:198:35:198:35 | [exception: Exception] access to local variable e | cflow.cs:198:35:198:43 | [exception: Exception] access to property Message | semmle.label | successor |
|
||||
| cflow.cs:198:35:198:35 | [exception: OutOfMemoryException] access to local variable e | cflow.cs:198:35:198:43 | [exception: OutOfMemoryException] access to property Message | semmle.label | successor |
|
||||
| cflow.cs:198:35:198:43 | [exception: Exception] access to property Message | cflow.cs:198:48:198:51 | [exception: Exception] null | semmle.label | successor |
|
||||
| cflow.cs:198:35:198:43 | [exception: OutOfMemoryException] access to property Message | cflow.cs:198:48:198:51 | [exception: OutOfMemoryException] null | semmle.label | successor |
|
||||
| cflow.cs:198:35:198:51 | [exception: Exception] ... != ... | cflow.cs:199:9:200:9 | {...} | semmle.label | true |
|
||||
| cflow.cs:198:35:198:51 | [exception: Exception] ... != ... | cflow.cs:202:9:204:9 | [finally: exception(Exception)] {...} | semmle.label | exception(Exception) |
|
||||
| cflow.cs:198:35:198:51 | [exception: OutOfMemoryException] ... != ... | cflow.cs:199:9:200:9 | {...} | semmle.label | true |
|
||||
| cflow.cs:198:35:198:51 | [exception: OutOfMemoryException] ... != ... | cflow.cs:202:9:204:9 | [finally: exception(OutOfMemoryException)] {...} | semmle.label | exception(OutOfMemoryException) |
|
||||
| cflow.cs:198:48:198:51 | [exception: Exception] null | cflow.cs:198:35:198:51 | [exception: Exception] ... != ... | semmle.label | successor |
|
||||
| cflow.cs:198:48:198:51 | [exception: OutOfMemoryException] null | cflow.cs:198:35:198:51 | [exception: OutOfMemoryException] ... != ... | semmle.label | successor |
|
||||
| cflow.cs:199:9:200:9 | {...} | cflow.cs:202:9:204:9 | {...} | semmle.label | successor |
|
||||
| cflow.cs:202:9:204:9 | [finally: exception(Exception)] {...} | cflow.cs:203:13:203:41 | [finally: exception(Exception)] ...; | semmle.label | successor |
|
||||
| cflow.cs:202:9:204:9 | [finally: exception(IOException)] {...} | cflow.cs:203:13:203:41 | [finally: exception(IOException)] ...; | semmle.label | successor |
|
||||
|
||||
Reference in New Issue
Block a user