mirror of
https://github.com/github/codeql.git
synced 2026-03-30 20:28:15 +02:00
Merge pull request #21290 from aschackmull/cfg/new-shared
Java/Cfg: Introduce new shared CFG library and replace the Java CFG.
This commit is contained in:
2
java/ql/consistency-queries/CfgConsistency.ql
Normal file
2
java/ql/consistency-queries/CfgConsistency.ql
Normal file
@@ -0,0 +1,2 @@
|
||||
import java
|
||||
import ControlFlow::Consistency
|
||||
16
java/ql/lib/change-notes/2026-02-18-cfg.md
Normal file
16
java/ql/lib/change-notes/2026-02-18-cfg.md
Normal file
@@ -0,0 +1,16 @@
|
||||
---
|
||||
category: breaking
|
||||
---
|
||||
* The Java control flow graph (CFG) implementation has been completely
|
||||
rewritten. The CFG now includes additional nodes to more accurately represent
|
||||
certain constructs. This also means that any existing code that implicitly
|
||||
relies on very specific details about the CFG may need to be updated.
|
||||
The CFG now only includes the nodes that are reachable from the entry point.
|
||||
Additionally, the following breaking changes have been made:
|
||||
- `ControlFlowNode.asCall` has been removed - use `Call.getControlFlowNode` instead.
|
||||
- `ControlFlowNode.getEnclosingStmt` has been removed.
|
||||
- `ControlFlow::ExprNode` has been removed.
|
||||
- `ControlFlow::StmtNode` has been removed.
|
||||
- `ControlFlow::Node` has been removed - this was merely an alias of
|
||||
`ControlFlowNode`, which is still available.
|
||||
- Previously deprecated predicates on `BasicBlock` have been removed.
|
||||
@@ -21,7 +21,7 @@ external int selectedSourceColumn();
|
||||
|
||||
private predicate selectedSourceColumnAlias = selectedSourceColumn/0;
|
||||
|
||||
module ViewCfgQueryInput implements ViewCfgQueryInputSig<File> {
|
||||
module ViewCfgQueryInput implements ControlFlow::ViewCfgQueryInputSig<File> {
|
||||
predicate selectedSourceFile = selectedSourceFileAlias/0;
|
||||
|
||||
predicate selectedSourceLine = selectedSourceLineAlias/0;
|
||||
@@ -42,4 +42,4 @@ module ViewCfgQueryInput implements ViewCfgQueryInputSig<File> {
|
||||
}
|
||||
}
|
||||
|
||||
import ViewCfgQuery<File, ViewCfgQueryInput>
|
||||
import ControlFlow::ViewCfgQuery<File, ViewCfgQueryInput>
|
||||
|
||||
@@ -1,96 +0,0 @@
|
||||
/**
|
||||
* Provides classes and predicates for representing completions.
|
||||
*/
|
||||
overlay[local?]
|
||||
module;
|
||||
|
||||
/*
|
||||
* A completion represents how a statement or expression terminates.
|
||||
*
|
||||
* There are five kinds of completions: normal completion,
|
||||
* `return` completion, `break` completion,
|
||||
* `continue` completion, and `throw` completion.
|
||||
*
|
||||
* Normal completions are further subdivided into boolean completions and all
|
||||
* other normal completions. A boolean completion adds the information that the
|
||||
* cfg node terminated with the given boolean value due to a subexpression
|
||||
* terminating with the other given boolean value. This is only
|
||||
* relevant for conditional contexts in which the value controls the
|
||||
* control-flow successor.
|
||||
*/
|
||||
|
||||
import java
|
||||
|
||||
/**
|
||||
* A label of a `LabeledStmt`.
|
||||
*/
|
||||
newtype Label = MkLabel(string l) { exists(LabeledStmt lbl | l = lbl.getLabel()) }
|
||||
|
||||
/**
|
||||
* Either a `Label` or nothing.
|
||||
*/
|
||||
newtype MaybeLabel =
|
||||
JustLabel(Label l) or
|
||||
NoLabel()
|
||||
|
||||
/**
|
||||
* A completion of a statement or an expression.
|
||||
*/
|
||||
newtype Completion =
|
||||
/**
|
||||
* The statement or expression completes normally and continues to the next statement.
|
||||
*/
|
||||
NormalCompletion() or
|
||||
/**
|
||||
* The statement or expression completes by returning from the function.
|
||||
*/
|
||||
ReturnCompletion() or
|
||||
/**
|
||||
* The expression completes with value `outerValue` overall and with the last control
|
||||
* flow node having value `innerValue`.
|
||||
*/
|
||||
BooleanCompletion(boolean outerValue, boolean innerValue) {
|
||||
(outerValue = true or outerValue = false) and
|
||||
(innerValue = true or innerValue = false)
|
||||
} or
|
||||
/**
|
||||
* The expression or statement completes via a `break` statement.
|
||||
*/
|
||||
BreakCompletion(MaybeLabel l) or
|
||||
/**
|
||||
* The expression or statement completes via a `yield` statement.
|
||||
*/
|
||||
YieldCompletion(NormalOrBooleanCompletion c) or
|
||||
/**
|
||||
* The expression or statement completes via a `continue` statement.
|
||||
*/
|
||||
ContinueCompletion(MaybeLabel l) or
|
||||
/**
|
||||
* The expression or statement completes by throwing a `ThrowableType`.
|
||||
*/
|
||||
ThrowCompletion(ThrowableType tt)
|
||||
|
||||
/** A completion that is either a `NormalCompletion` or a `BooleanCompletion`. */
|
||||
class NormalOrBooleanCompletion extends Completion {
|
||||
NormalOrBooleanCompletion() {
|
||||
this instanceof NormalCompletion or this instanceof BooleanCompletion
|
||||
}
|
||||
|
||||
/** Gets a textual representation of this completion. */
|
||||
string toString() { result = "completion" }
|
||||
}
|
||||
|
||||
/** Gets the completion `ContinueCompletion(NoLabel())`. */
|
||||
ContinueCompletion anonymousContinueCompletion() { result = ContinueCompletion(NoLabel()) }
|
||||
|
||||
/** Gets the completion `ContinueCompletion(JustLabel(l))`. */
|
||||
ContinueCompletion labelledContinueCompletion(Label l) { result = ContinueCompletion(JustLabel(l)) }
|
||||
|
||||
/** Gets the completion `BreakCompletion(NoLabel())`. */
|
||||
BreakCompletion anonymousBreakCompletion() { result = BreakCompletion(NoLabel()) }
|
||||
|
||||
/** Gets the completion `BreakCompletion(JustLabel(l))`. */
|
||||
BreakCompletion labelledBreakCompletion(Label l) { result = BreakCompletion(JustLabel(l)) }
|
||||
|
||||
/** Gets the completion `BooleanCompletion(value, value)`. */
|
||||
Completion basicBooleanCompletion(boolean value) { result = BooleanCompletion(value, value) }
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1245,6 +1245,9 @@ class ClassInstanceExpr extends Expr, ConstructorCall, @classinstancexpr {
|
||||
/** Gets the immediately enclosing statement of this class instance creation expression. */
|
||||
override Stmt getEnclosingStmt() { result = Expr.super.getEnclosingStmt() }
|
||||
|
||||
/** Gets the `ControlFlowNode` corresponding to this call. */
|
||||
override ControlFlowNode getControlFlowNode() { result = Expr.super.getControlFlowNode() }
|
||||
|
||||
/** Gets a printable representation of this expression. */
|
||||
override string toString() {
|
||||
result = "new " + this.getConstructor().getName() + "(...)"
|
||||
@@ -2113,6 +2116,9 @@ class MethodCall extends Expr, Call, @methodaccess {
|
||||
/** Gets the immediately enclosing statement that contains this method access. */
|
||||
override Stmt getEnclosingStmt() { result = Expr.super.getEnclosingStmt() }
|
||||
|
||||
/** Gets the `ControlFlowNode` corresponding to this call. */
|
||||
override ControlFlowNode getControlFlowNode() { result = Expr.super.getControlFlowNode() }
|
||||
|
||||
/** Gets a printable representation of this expression. */
|
||||
override string toString() {
|
||||
if exists(this.getMethod())
|
||||
@@ -2305,6 +2311,9 @@ class Call extends ExprParent, @caller {
|
||||
/** Gets the enclosing statement of this call. */
|
||||
/*abstract*/ Stmt getEnclosingStmt() { none() }
|
||||
|
||||
/** Gets the `ControlFlowNode` corresponding to this call. */
|
||||
/*abstract*/ ControlFlowNode getControlFlowNode() { none() }
|
||||
|
||||
/** Gets the number of arguments provided in this call. */
|
||||
int getNumArgument() { count(this.getAnArgument()) = result }
|
||||
|
||||
|
||||
@@ -61,7 +61,7 @@ class Stmt extends StmtParent, ExprParent, @stmt {
|
||||
}
|
||||
|
||||
/** A statement parent is any element that can have a statement as its child. */
|
||||
class StmtParent extends @stmtparent, Top { }
|
||||
class StmtParent extends @stmtparent, ExprParent { }
|
||||
|
||||
/**
|
||||
* An error statement.
|
||||
@@ -960,6 +960,9 @@ class ThisConstructorInvocationStmt extends Stmt, ConstructorCall, @constructori
|
||||
/** Gets the immediately enclosing statement of this constructor invocation. */
|
||||
override Stmt getEnclosingStmt() { result = this }
|
||||
|
||||
/** Gets the `ControlFlowNode` corresponding to this call. */
|
||||
override ControlFlowNode getControlFlowNode() { result = Stmt.super.getControlFlowNode() }
|
||||
|
||||
override string pp() { result = "this(...)" }
|
||||
|
||||
override string toString() { result = "this(...)" }
|
||||
@@ -1001,6 +1004,9 @@ class SuperConstructorInvocationStmt extends Stmt, ConstructorCall, @superconstr
|
||||
/** Gets the immediately enclosing statement of this constructor invocation. */
|
||||
override Stmt getEnclosingStmt() { result = this }
|
||||
|
||||
/** Gets the `ControlFlowNode` corresponding to this call. */
|
||||
override ControlFlowNode getControlFlowNode() { result = Stmt.super.getControlFlowNode() }
|
||||
|
||||
override string pp() { result = "super(...)" }
|
||||
|
||||
override string toString() { result = "super(...)" }
|
||||
|
||||
@@ -6,151 +6,8 @@ module;
|
||||
|
||||
import java
|
||||
import Dominance
|
||||
private import codeql.controlflow.BasicBlock as BB
|
||||
private import codeql.controlflow.SuccessorType
|
||||
|
||||
private module Input implements BB::InputSig<Location> {
|
||||
/** Hold if `t` represents a conditional successor type. */
|
||||
predicate successorTypeIsCondition(SuccessorType t) { none() }
|
||||
|
||||
/** A delineated part of the AST with its own CFG. */
|
||||
class CfgScope = Callable;
|
||||
|
||||
/** The class of control flow nodes. */
|
||||
class Node = ControlFlowNode;
|
||||
|
||||
/** Gets the CFG scope in which this node occurs. */
|
||||
CfgScope nodeGetCfgScope(Node node) { node.getEnclosingCallable() = result }
|
||||
|
||||
/** Gets an immediate successor of this node. */
|
||||
Node nodeGetASuccessor(Node node, SuccessorType t) { result = node.getASuccessor(t) }
|
||||
|
||||
/**
|
||||
* Holds if `node` represents an entry node to be used when calculating
|
||||
* dominance.
|
||||
*/
|
||||
predicate nodeIsDominanceEntry(Node node) {
|
||||
exists(Stmt entrystmt | entrystmt = node.asStmt() |
|
||||
exists(Callable c | entrystmt = c.getBody())
|
||||
or
|
||||
// This disjunct is technically superfluous, but safeguards against extractor problems.
|
||||
entrystmt instanceof BlockStmt and
|
||||
not exists(entrystmt.getEnclosingCallable()) and
|
||||
not entrystmt.getParent() instanceof Stmt
|
||||
)
|
||||
}
|
||||
|
||||
/**
|
||||
* Holds if `node` represents an exit node to be used when calculating
|
||||
* post dominance.
|
||||
*/
|
||||
predicate nodeIsPostDominanceExit(Node node) { node instanceof ControlFlow::NormalExitNode }
|
||||
}
|
||||
|
||||
private module BbImpl = BB::Make<Location, Input>;
|
||||
|
||||
import BbImpl
|
||||
|
||||
/** Holds if the dominance relation is calculated for `bb`. */
|
||||
predicate hasDominanceInformation(BasicBlock bb) {
|
||||
exists(BasicBlock entry |
|
||||
Input::nodeIsDominanceEntry(entry.getFirstNode()) and entry.getASuccessor*() = bb
|
||||
)
|
||||
}
|
||||
|
||||
/**
|
||||
* A basic block, that is, a maximal straight-line sequence of control flow nodes
|
||||
* without branches or joins.
|
||||
*/
|
||||
class BasicBlock extends BbImpl::BasicBlock {
|
||||
/** Gets the immediately enclosing callable whose body contains this node. */
|
||||
Callable getEnclosingCallable() { result = this.getScope() }
|
||||
|
||||
/**
|
||||
* Holds if this basic block dominates basic block `bb`.
|
||||
*
|
||||
* That is, all paths reaching `bb` from the entry point basic block must
|
||||
* go through this basic block.
|
||||
*/
|
||||
predicate dominates(BasicBlock bb) { super.dominates(bb) }
|
||||
|
||||
/**
|
||||
* Holds if this basic block strictly dominates basic block `bb`.
|
||||
*
|
||||
* That is, all paths reaching `bb` from the entry point basic block must
|
||||
* go through this basic block and this basic block is different from `bb`.
|
||||
*/
|
||||
predicate strictlyDominates(BasicBlock bb) { super.strictlyDominates(bb) }
|
||||
|
||||
/** Gets an immediate successor of this basic block of a given type, if any. */
|
||||
BasicBlock getASuccessor(SuccessorType t) { result = super.getASuccessor(t) }
|
||||
|
||||
BasicBlock getASuccessor() { result = super.getASuccessor() }
|
||||
|
||||
BasicBlock getImmediateDominator() { result = super.getImmediateDominator() }
|
||||
|
||||
predicate inDominanceFrontier(BasicBlock df) { super.inDominanceFrontier(df) }
|
||||
|
||||
predicate strictlyPostDominates(BasicBlock bb) { super.strictlyPostDominates(bb) }
|
||||
|
||||
predicate postDominates(BasicBlock bb) { super.postDominates(bb) }
|
||||
|
||||
/**
|
||||
* DEPRECATED: Use `getASuccessor` instead.
|
||||
*
|
||||
* Gets an immediate successor of this basic block.
|
||||
*/
|
||||
deprecated BasicBlock getABBSuccessor() { result = this.getASuccessor() }
|
||||
|
||||
/**
|
||||
* DEPRECATED: Use `getAPredecessor` instead.
|
||||
*
|
||||
* Gets an immediate predecessor of this basic block.
|
||||
*/
|
||||
deprecated BasicBlock getABBPredecessor() { result.getASuccessor() = this }
|
||||
|
||||
/**
|
||||
* DEPRECATED: Use `strictlyDominates` instead.
|
||||
*
|
||||
* Holds if this basic block strictly dominates `node`.
|
||||
*/
|
||||
deprecated predicate bbStrictlyDominates(BasicBlock node) { this.strictlyDominates(node) }
|
||||
|
||||
/**
|
||||
* DEPRECATED: Use `dominates` instead.
|
||||
*
|
||||
* Holds if this basic block dominates `node`. (This is reflexive.)
|
||||
*/
|
||||
deprecated predicate bbDominates(BasicBlock node) { this.dominates(node) }
|
||||
|
||||
/**
|
||||
* DEPRECATED: Use `strictlyPostDominates` instead.
|
||||
*
|
||||
* Holds if this basic block strictly post-dominates `node`.
|
||||
*/
|
||||
deprecated predicate bbStrictlyPostDominates(BasicBlock node) { this.strictlyPostDominates(node) }
|
||||
|
||||
/**
|
||||
* DEPRECATED: Use `postDominates` instead.
|
||||
*
|
||||
* Holds if this basic block post-dominates `node`. (This is reflexive.)
|
||||
*/
|
||||
deprecated predicate bbPostDominates(BasicBlock node) { this.postDominates(node) }
|
||||
}
|
||||
|
||||
/** A basic block that ends in an exit node. */
|
||||
class ExitBlock extends BasicBlock {
|
||||
ExitBlock() { this.getLastNode() instanceof ControlFlow::ExitNode }
|
||||
}
|
||||
|
||||
private class BasicBlockAlias = BasicBlock;
|
||||
|
||||
module Cfg implements BB::CfgSig<Location> {
|
||||
class ControlFlowNode = BbImpl::ControlFlowNode;
|
||||
|
||||
class BasicBlock = BasicBlockAlias;
|
||||
|
||||
class EntryBasicBlock extends BasicBlock instanceof BbImpl::EntryBasicBlock { }
|
||||
|
||||
predicate dominatingEdge(BasicBlock bb1, BasicBlock bb2) { BbImpl::dominatingEdge(bb1, bb2) }
|
||||
}
|
||||
|
||||
@@ -10,6 +10,7 @@ private import semmle.code.java.controlflow.Dominance
|
||||
private import semmle.code.java.controlflow.internal.Preconditions
|
||||
private import semmle.code.java.controlflow.internal.SwitchCases
|
||||
private import codeql.controlflow.Guards as SharedGuards
|
||||
private import codeql.controlflow.SuccessorType
|
||||
|
||||
/**
|
||||
* A basic block that terminates in a condition, splitting the subsequent control flow.
|
||||
@@ -75,70 +76,6 @@ class ConditionBlock extends BasicBlock {
|
||||
}
|
||||
}
|
||||
|
||||
// Join order engineering -- first determine the switch block and the case indices required, then retrieve them.
|
||||
bindingset[switch, i]
|
||||
pragma[inline_late]
|
||||
private predicate isNthCaseOf(SwitchBlock switch, SwitchCase c, int i) { c.isNthCaseOf(switch, i) }
|
||||
|
||||
/**
|
||||
* Gets a switch case >= pred, up to but not including `pred`'s successor pattern case,
|
||||
* where `pred` is declared on `switch`.
|
||||
*/
|
||||
private SwitchCase getACaseUpToNextPattern(PatternCase pred, SwitchBlock switch) {
|
||||
// Note we do include `case null, default` (as well as plain old `default`) here.
|
||||
not result.(ConstCase).getValue(_) instanceof NullLiteral and
|
||||
exists(int maxCaseIndex |
|
||||
switch = pred.getParent() and
|
||||
if exists(getNextPatternCase(pred))
|
||||
then maxCaseIndex = getNextPatternCase(pred).getCaseIndex() - 1
|
||||
else maxCaseIndex = lastCaseIndex(switch)
|
||||
|
|
||||
isNthCaseOf(switch, result, [pred.getCaseIndex() .. maxCaseIndex])
|
||||
)
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the closest pattern case preceding `case`, including `case` itself, if any.
|
||||
*/
|
||||
private PatternCase getClosestPrecedingPatternCase(SwitchCase case) {
|
||||
case = getACaseUpToNextPattern(result, _)
|
||||
}
|
||||
|
||||
/**
|
||||
* Holds if `pred` is a control-flow predecessor of switch case `sc` that is not a
|
||||
* fall-through from a previous case.
|
||||
*
|
||||
* For classic switches that means flow from the selector expression; for switches
|
||||
* involving pattern cases it can also mean flow from a previous pattern case's type
|
||||
* test or guard failing and proceeding to then consider subsequent cases.
|
||||
*/
|
||||
private predicate isNonFallThroughPredecessor(SwitchCase sc, ControlFlowNode pred) {
|
||||
pred = sc.getControlFlowNode().getAPredecessor() and
|
||||
(
|
||||
pred.asExpr().getParent*() = sc.getSelectorExpr()
|
||||
or
|
||||
// Ambiguous: in the case of `case String _ when x: case "SomeConstant":`, the guard `x`
|
||||
// passing edge will fall through into the constant case, and the guard failing edge
|
||||
// will test if the selector equals `"SomeConstant"` and if so branch to the same
|
||||
// case statement. Therefore don't label this a non-fall-through predecessor.
|
||||
exists(PatternCase previousPatternCase |
|
||||
previousPatternCase = getClosestPrecedingPatternCase(sc)
|
||||
|
|
||||
pred.asExpr().getParent*() = previousPatternCase.getGuard() and
|
||||
// Check there is any statement in between the previous pattern case and this one,
|
||||
// or the case is a rule, so there is no chance of a fall-through.
|
||||
(
|
||||
previousPatternCase.isRule() or
|
||||
not previousPatternCase.getIndex() = sc.getIndex() - 1
|
||||
)
|
||||
)
|
||||
or
|
||||
// Unambigious: on the test-passing edge there must be at least one intervening
|
||||
// declaration node, including anonymous `_` declarations.
|
||||
pred.asStmt() = getClosestPrecedingPatternCase(sc)
|
||||
)
|
||||
}
|
||||
|
||||
private module GuardsInput implements SharedGuards::InputSig<Location, ControlFlowNode, BasicBlock> {
|
||||
private import java as J
|
||||
private import semmle.code.java.dataflow.internal.BaseSSA as Base
|
||||
@@ -231,29 +168,14 @@ private module GuardsInput implements SharedGuards::InputSig<Location, ControlFl
|
||||
)
|
||||
}
|
||||
|
||||
private predicate hasPatternCaseMatchEdge(BasicBlock bb1, BasicBlock bb2, boolean isMatch) {
|
||||
exists(ConditionNode patterncase |
|
||||
this instanceof PatternCase and
|
||||
patterncase = super.getControlFlowNode() and
|
||||
bb1.getLastNode() = patterncase and
|
||||
bb2.getFirstNode() = patterncase.getABranchSuccessor(isMatch)
|
||||
)
|
||||
}
|
||||
|
||||
predicate matchEdge(BasicBlock bb1, BasicBlock bb2) {
|
||||
exists(ControlFlowNode pred |
|
||||
// Pattern cases are handled as ConditionBlocks.
|
||||
not this instanceof PatternCase and
|
||||
bb2.getFirstNode() = super.getControlFlowNode() and
|
||||
isNonFallThroughPredecessor(this, pred) and
|
||||
bb1 = pred.getBasicBlock()
|
||||
)
|
||||
or
|
||||
this.hasPatternCaseMatchEdge(bb1, bb2, true)
|
||||
bb1.getASuccessor(any(MatchingSuccessor s | s.getValue() = true)) = bb2 and
|
||||
bb1.getLastNode() = super.getControlFlowNode()
|
||||
}
|
||||
|
||||
predicate nonMatchEdge(BasicBlock bb1, BasicBlock bb2) {
|
||||
this.hasPatternCaseMatchEdge(bb1, bb2, false)
|
||||
bb1.getASuccessor(any(MatchingSuccessor s | s.getValue() = false)) = bb2 and
|
||||
bb1.getLastNode() = super.getControlFlowNode()
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -34,7 +34,7 @@ abstract class ActionConfiguration extends string {
|
||||
private BasicBlock actionBlock(ActionConfiguration conf) {
|
||||
exists(ControlFlowNode node | result = node.getBasicBlock() |
|
||||
conf.isAction(node) or
|
||||
callAlwaysPerformsAction(node.asCall(), conf)
|
||||
callAlwaysPerformsAction(any(Call call | call.getControlFlowNode() = node), conf)
|
||||
)
|
||||
}
|
||||
|
||||
@@ -66,10 +66,6 @@ private class JoinBlock extends BasicBlock {
|
||||
JoinBlock() { 2 <= strictcount(this.getAPredecessor()) }
|
||||
}
|
||||
|
||||
private class ReachableBlock extends BasicBlock {
|
||||
ReachableBlock() { hasDominanceInformation(this) }
|
||||
}
|
||||
|
||||
/**
|
||||
* Holds if `bb` is a block that is collectively dominated by a set of one or
|
||||
* more actions that individually does not dominate the exit.
|
||||
@@ -78,7 +74,7 @@ private predicate postActionBlock(BasicBlock bb, ActionConfiguration conf) {
|
||||
bb = nonDominatingActionBlock(conf)
|
||||
or
|
||||
if bb instanceof JoinBlock
|
||||
then forall(ReachableBlock pred | pred = bb.getAPredecessor() | postActionBlock(pred, conf))
|
||||
then forall(BasicBlock pred | pred = bb.getAPredecessor() | postActionBlock(pred, conf))
|
||||
else postActionBlock(bb.getAPredecessor(), conf)
|
||||
}
|
||||
|
||||
|
||||
@@ -229,7 +229,7 @@ class InstanceAccessExt extends TInstanceAccessExt {
|
||||
/** Gets the control flow node associated with this instance access. */
|
||||
ControlFlowNode getCfgNode() {
|
||||
exists(ExprParent e | e = this.getAssociatedExprOrStmt() |
|
||||
result.asCall() = e
|
||||
result = e.(Call).getControlFlowNode()
|
||||
or
|
||||
e.(InstanceAccess).getControlFlowNode() = result
|
||||
or
|
||||
|
||||
@@ -17,6 +17,7 @@ private import NullGuards
|
||||
private import semmle.code.java.Collections
|
||||
private import semmle.code.java.controlflow.internal.Preconditions
|
||||
private import semmle.code.java.controlflow.ControlFlowReachability
|
||||
private import codeql.controlflow.SuccessorType
|
||||
|
||||
/** Gets an expression that may be `null`. */
|
||||
Expr nullExpr() { result = nullExpr(_) }
|
||||
@@ -230,14 +231,8 @@ private Expr nonEmptyExpr() {
|
||||
|
||||
/** The control flow edge that exits an enhanced for loop if the `Iterable` is empty. */
|
||||
private predicate enhancedForEarlyExit(EnhancedForStmt for, ControlFlowNode n1, ControlFlowNode n2) {
|
||||
exists(Expr forExpr |
|
||||
n1.getANormalSuccessor() = n2 and
|
||||
for.getExpr() = forExpr and
|
||||
forExpr.getAChildExpr*() = n1.asExpr() and
|
||||
not forExpr.getAChildExpr*() = n2.asExpr() and
|
||||
n1.getANormalSuccessor().asExpr() = for.getVariable() and
|
||||
not n2.asExpr() = for.getVariable()
|
||||
)
|
||||
n1.getASuccessor(any(EmptinessSuccessor t | t.isEmpty())) = n2 and
|
||||
for.getExpr().getControlFlowNode() = n1
|
||||
}
|
||||
|
||||
/** A control flow edge that cannot be taken. */
|
||||
|
||||
@@ -220,6 +220,8 @@ module Sem implements Semantic<Location> {
|
||||
|
||||
int getBlockId1(BasicBlock bb) { idOf(bb, result) }
|
||||
|
||||
string getBlockId2(BasicBlock bb) { bb.getFirstNode().getIdTag() = result }
|
||||
|
||||
class Guard extends G::Guards_v2::Guard {
|
||||
Expr asExpr() { result = this }
|
||||
}
|
||||
|
||||
@@ -326,20 +326,45 @@ private module Input implements TypeFlowInput<Location> {
|
||||
)
|
||||
}
|
||||
|
||||
/**
|
||||
* Holds if `ioe` checks `v`, its true-successor is `bb`, and `bb` has multiple
|
||||
* predecessors.
|
||||
*/
|
||||
private predicate instanceofDisjunct(InstanceOfExpr ioe, BasicBlock bb, Base::SsaDefinition v) {
|
||||
/** Holds if `ioe` checks `v` and its true-successor is `bb`. */
|
||||
private predicate instanceofTrueSuccessor(InstanceOfExpr ioe, BasicBlock bb, Base::SsaDefinition v) {
|
||||
ioe.getExpr() = v.getARead() and
|
||||
strictcount(bb.getAPredecessor()) > 1 and
|
||||
exists(ConditionBlock cb | cb.getCondition() = ioe and cb.getTestSuccessor(true) = bb)
|
||||
}
|
||||
|
||||
/** Holds if `bb` is disjunctively guarded by multiple `instanceof` tests on `v`. */
|
||||
private predicate instanceofDisjunction(BasicBlock bb, Base::SsaDefinition v) {
|
||||
strictcount(InstanceOfExpr ioe | instanceofDisjunct(ioe, bb, v)) =
|
||||
strictcount(bb.getAPredecessor())
|
||||
/**
|
||||
* Holds if `bb` is disjunctively guarded by one (`trivial = true`) or more
|
||||
* (`trivial = false`) `instanceof` tests on `v`.
|
||||
*/
|
||||
private predicate instanceofDisjunction(BasicBlock bb, Base::SsaDefinition v, boolean trivial) {
|
||||
exists(int preds |
|
||||
strictcount(bb.getAPredecessor()) = preds and
|
||||
strictcount(InstanceOfExpr ioe | instanceofTrueSuccessor(ioe, bb, v)) = preds and
|
||||
if preds > 1 then trivial = false else trivial = true
|
||||
)
|
||||
or
|
||||
strictcount(bb.getAPredecessor()) = 2 and
|
||||
exists(BasicBlock pred1, BasicBlock pred2 |
|
||||
pred1 != pred2 and
|
||||
pred1 = bb.getAPredecessor() and
|
||||
pred2 = bb.getAPredecessor() and
|
||||
instanceofDisjunction(pred1, v, _) and
|
||||
instanceofDisjunction(pred2, v, _) and
|
||||
trivial = false
|
||||
)
|
||||
}
|
||||
|
||||
/**
|
||||
* Holds if `bb` is disjunctively guarded by one or more `instanceof` tests
|
||||
* on `v`, and `ioe` is one of those tests.
|
||||
*/
|
||||
private predicate instanceofDisjunct(InstanceOfExpr ioe, BasicBlock bb, Base::SsaDefinition v) {
|
||||
instanceofDisjunction(bb, v, _) and
|
||||
(
|
||||
instanceofTrueSuccessor(ioe, bb, v)
|
||||
or
|
||||
exists(BasicBlock pred | pred = bb.getAPredecessor() and instanceofDisjunct(ioe, pred, v))
|
||||
)
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -348,7 +373,7 @@ private module Input implements TypeFlowInput<Location> {
|
||||
*/
|
||||
predicate instanceofDisjunctionGuarded(TypeFlowNode n, RefType t) {
|
||||
exists(BasicBlock bb, InstanceOfExpr ioe, Base::SsaDefinition v, VarAccess va |
|
||||
instanceofDisjunction(bb, v) and
|
||||
instanceofDisjunction(bb, v, false) and
|
||||
bb.dominates(va.getBasicBlock()) and
|
||||
va = v.getARead() and
|
||||
instanceofDisjunct(ioe, bb, v) and
|
||||
|
||||
@@ -93,8 +93,7 @@ private module BaseSsaImpl {
|
||||
/** Holds if `n` updates the local variable `v`. */
|
||||
predicate variableUpdate(BaseSsaSourceVariable v, ControlFlowNode n, BasicBlock b, int i) {
|
||||
exists(VariableUpdate a | a.getControlFlowNode() = n | getDestVar(a) = v) and
|
||||
b.getNode(i) = n and
|
||||
hasDominanceInformation(b)
|
||||
b.getNode(i) = n
|
||||
}
|
||||
|
||||
/** Gets the definition point of a nested class in the parent scope. */
|
||||
@@ -132,7 +131,7 @@ private module BaseSsaImpl {
|
||||
inner != outer and
|
||||
inner.getDeclaringType() = innerclass and
|
||||
result = parentDef(desugaredGetEnclosingType*(innerclass)) and
|
||||
result.getEnclosingStmt().getEnclosingCallable() = outer and
|
||||
result.getEnclosingCallable() = outer and
|
||||
capturedvar = TLocalVar(outer, v) and
|
||||
closurevar = TLocalVar(inner, v)
|
||||
)
|
||||
@@ -178,15 +177,12 @@ private module SsaImplInput implements SsaImplCommon::InputSig<Location, BasicBl
|
||||
* Holds if the `i`th of basic block `bb` reads source variable `v`.
|
||||
*/
|
||||
predicate variableRead(BasicBlock bb, int i, SourceVariable v, boolean certain) {
|
||||
hasDominanceInformation(bb) and
|
||||
(
|
||||
exists(VarRead use |
|
||||
v.getAnAccess() = use and bb.getNode(i) = use.getControlFlowNode() and certain = true
|
||||
)
|
||||
or
|
||||
variableCapture(v, _, bb, i) and
|
||||
certain = false
|
||||
exists(VarRead use |
|
||||
v.getAnAccess() = use and bb.getNode(i) = use.getControlFlowNode() and certain = true
|
||||
)
|
||||
or
|
||||
variableCapture(v, _, bb, i) and
|
||||
certain = false
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -115,7 +115,7 @@ private ControlFlowNode captureNode(TrackedVar capturedvar, TrackedVar closureva
|
||||
inner != outer and
|
||||
inner.getDeclaringType() = innerclass and
|
||||
result = parentDef(desugaredGetEnclosingType*(innerclass)) and
|
||||
result.getEnclosingStmt().getEnclosingCallable() = outer and
|
||||
result.getEnclosingCallable() = outer and
|
||||
capturedvar = TLocalVar(outer, v) and
|
||||
closurevar = TLocalVar(inner, v)
|
||||
)
|
||||
@@ -130,8 +130,7 @@ private predicate variableCapture(TrackedVar capturedvar, TrackedVar closurevar,
|
||||
pragma[nomagic]
|
||||
private predicate certainVariableUpdate(TrackedVar v, ControlFlowNode n, BasicBlock b, int i) {
|
||||
exists(VariableUpdate a | a.getControlFlowNode() = n | getDestVar(a) = v) and
|
||||
b.getNode(i) = n and
|
||||
hasDominanceInformation(b)
|
||||
b.getNode(i) = n
|
||||
or
|
||||
certainVariableUpdate(v.getQualifier(), n, b, i)
|
||||
}
|
||||
@@ -153,9 +152,8 @@ private predicate hasEntryDef(TrackedVar v, BasicBlock b) {
|
||||
overlay[global]
|
||||
pragma[nomagic]
|
||||
private predicate uncertainVariableUpdateImpl(TrackedVar v, ControlFlowNode n, BasicBlock b, int i) {
|
||||
exists(Call c | c = n.asCall() | updatesNamedField(c, v, _)) and
|
||||
b.getNode(i) = n and
|
||||
hasDominanceInformation(b)
|
||||
exists(Call c | c.getControlFlowNode() = n | updatesNamedField(c, v, _)) and
|
||||
b.getNode(i) = n
|
||||
or
|
||||
uncertainVariableUpdateImpl(v.getQualifier(), n, b, i)
|
||||
}
|
||||
@@ -191,18 +189,15 @@ private module SsaImplInput implements SsaImplCommon::InputSig<Location, BasicBl
|
||||
* This includes implicit reads via calls.
|
||||
*/
|
||||
predicate variableRead(BasicBlock bb, int i, SourceVariable v, boolean certain) {
|
||||
hasDominanceInformation(bb) and
|
||||
(
|
||||
exists(VarRead use |
|
||||
v instanceof TrackedVar and
|
||||
v.getAnAccess() = use and
|
||||
bb.getNode(i) = use.getControlFlowNode() and
|
||||
certain = true
|
||||
)
|
||||
or
|
||||
variableCapture(v, _, bb, i) and
|
||||
certain = false
|
||||
exists(VarRead use |
|
||||
v instanceof TrackedVar and
|
||||
v.getAnAccess() = use and
|
||||
bb.getNode(i) = use.getControlFlowNode() and
|
||||
certain = true
|
||||
)
|
||||
or
|
||||
variableCapture(v, _, bb, i) and
|
||||
certain = false
|
||||
}
|
||||
}
|
||||
|
||||
@@ -525,8 +520,11 @@ private module Cached {
|
||||
overlay[global]
|
||||
cached
|
||||
predicate defUpdatesNamedField(SsaImplicitWrite calldef, TrackedField f, Callable setter) {
|
||||
f = calldef.getSourceVariable() and
|
||||
updatesNamedField0(calldef.getControlFlowNode().asCall(), f, setter)
|
||||
exists(Call call |
|
||||
f = calldef.getSourceVariable() and
|
||||
call.getControlFlowNode() = calldef.getControlFlowNode() and
|
||||
updatesNamedField0(call, f, setter)
|
||||
)
|
||||
}
|
||||
|
||||
/** Holds if `init` is a closure variable that captures the value of `capturedvar`. */
|
||||
|
||||
@@ -23,7 +23,9 @@ private predicate idOfAst(BB::ExprParent x, int y) = equivalenceRelation(id/2)(x
|
||||
|
||||
private predicate idOf(BasicBlock x, int y) { idOfAst(x.getFirstNode().getAstNode(), y) }
|
||||
|
||||
private int getId(BasicBlock bb) { idOf(bb, result) }
|
||||
private int getId1(BasicBlock bb) { idOf(bb, result) }
|
||||
|
||||
private string getId2(BasicBlock bb) { bb.getFirstNode().getIdTag() = result }
|
||||
|
||||
/**
|
||||
* Declarations to be exposed to users of SsaReadPositionCommon
|
||||
@@ -39,7 +41,7 @@ module Public {
|
||||
rank[r](SsaReadPositionPhiInputEdge e |
|
||||
e.phiInput(phi, _)
|
||||
|
|
||||
e order by getId(e.getOrigBlock())
|
||||
e order by getId1(e.getOrigBlock()), getId2(e.getOrigBlock())
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -71,18 +71,28 @@ class MetricCallable extends Callable {
|
||||
}
|
||||
}
|
||||
|
||||
private predicate fallthroughSwitchCase(SwitchCase sc1, SwitchCase sc2) {
|
||||
exists(SwitchStmt switch, int n | switch.getStmt(n) = sc1 and switch.getStmt(n + 1) = sc2)
|
||||
or
|
||||
exists(SwitchExpr switch, int n | switch.getStmt(n) = sc1 and switch.getStmt(n + 1) = sc2)
|
||||
}
|
||||
|
||||
// Branching points in the sense of cyclomatic complexity are binary,
|
||||
// so there should be a branching point for each non-default switch
|
||||
// case (ignoring those that just fall through to the next case).
|
||||
private predicate branchingSwitchCase(ConstCase sc) {
|
||||
not sc.getControlFlowNode().getASuccessor().asStmt() instanceof SwitchCase and
|
||||
not defaultFallThrough(sc)
|
||||
if sc.isRule()
|
||||
then any()
|
||||
else (
|
||||
not fallthroughSwitchCase(sc, _) and
|
||||
not defaultFallThrough(sc)
|
||||
)
|
||||
}
|
||||
|
||||
private predicate defaultFallThrough(ConstCase sc) {
|
||||
exists(DefaultCase default | default.getControlFlowNode().getASuccessor().asStmt() = sc)
|
||||
exists(DefaultCase default | fallthroughSwitchCase(default, sc))
|
||||
or
|
||||
defaultFallThrough(sc.getControlFlowNode().getAPredecessor().asStmt())
|
||||
exists(ConstCase mid | defaultFallThrough(mid) and fallthroughSwitchCase(mid, sc))
|
||||
}
|
||||
|
||||
/** Holds if `stmt` is a branching statement used for the computation of cyclomatic complexity. */
|
||||
|
||||
28
java/ql/lib/utils/test/AstCfg.qll
Normal file
28
java/ql/lib/utils/test/AstCfg.qll
Normal file
@@ -0,0 +1,28 @@
|
||||
/**
|
||||
* Provides utilities for getting an AST-based control flow graph in tests.
|
||||
*/
|
||||
overlay[local?]
|
||||
module;
|
||||
|
||||
import java
|
||||
|
||||
private predicate isAstNode(ControlFlowNode n) {
|
||||
n.injects(_) or
|
||||
n instanceof ControlFlow::EntryNode or
|
||||
n instanceof ControlFlow::AnnotatedExitNode or
|
||||
n instanceof ControlFlow::ExitNode
|
||||
}
|
||||
|
||||
private predicate succToAst(ControlFlowNode n1, ControlFlowNode n2) {
|
||||
n2 = n1.getASuccessor() and
|
||||
isAstNode(n2)
|
||||
or
|
||||
exists(ControlFlowNode mid |
|
||||
mid = n1.getASuccessor() and
|
||||
not isAstNode(mid) and
|
||||
succToAst(mid, n2)
|
||||
)
|
||||
}
|
||||
|
||||
/** Gets a control flow successor of `n` that skips over non-AST nodes. */
|
||||
ControlFlowNode getAnAstSuccessor(ControlFlowNode n) { isAstNode(n) and succToAst(n, result) }
|
||||
40
java/ql/lib/utils/test/BasicBlock.qll
Normal file
40
java/ql/lib/utils/test/BasicBlock.qll
Normal file
@@ -0,0 +1,40 @@
|
||||
/**
|
||||
* Provides utilities for working with basic blocks in tests.
|
||||
*/
|
||||
overlay[local?]
|
||||
module;
|
||||
|
||||
import java
|
||||
import codeql.util.Boolean
|
||||
|
||||
private predicate entryOrExit(ControlFlowNode n) {
|
||||
n instanceof ControlFlow::EntryNode or
|
||||
n instanceof ControlFlow::AnnotatedExitNode or
|
||||
n instanceof ControlFlow::ExitNode
|
||||
}
|
||||
|
||||
/** Gets the first AST node in the basic block `bb`, if any. */
|
||||
ControlFlowNode getFirstAstNode(BasicBlock bb) { result = getFirstAstNode(bb, false) }
|
||||
|
||||
/**
|
||||
* Gets the first AST node in the basic block `bb`, if any. Otherwise, gets
|
||||
* the first synthetic node.
|
||||
*/
|
||||
ControlFlowNode getFirstAstNodeOrSynth(BasicBlock bb) { result = getFirstAstNode(bb, true) }
|
||||
|
||||
private ControlFlowNode getFirstAstNode(BasicBlock bb, Boolean allowSynthetic) {
|
||||
result =
|
||||
min(ControlFlowNode n, int i, int astOrder |
|
||||
bb.getNode(i) = n and
|
||||
if n.injects(_)
|
||||
then astOrder = 0
|
||||
else
|
||||
if entryOrExit(n)
|
||||
then astOrder = 1
|
||||
else (
|
||||
allowSynthetic = true and astOrder = 2
|
||||
)
|
||||
|
|
||||
n order by astOrder, i
|
||||
)
|
||||
}
|
||||
@@ -57,13 +57,15 @@ predicate loopExitGuard(LoopStmt loop, Expr cond) {
|
||||
*/
|
||||
predicate mainLoopCondition(LoopStmt loop, Expr cond) {
|
||||
loop.getCondition() = cond and
|
||||
exists(Expr loopReentry, ControlFlowNode last |
|
||||
if exists(loop.(ForStmt).getAnUpdate())
|
||||
then loopReentry = loop.(ForStmt).getUpdate(0)
|
||||
else loopReentry = cond
|
||||
|
|
||||
last.getEnclosingStmt().getEnclosingStmt*() = loop.getBody() and
|
||||
last.getASuccessor().asExpr().getParent*() = loopReentry
|
||||
exists(BasicBlock condBlock | condBlock.getANode().isBefore(cond) |
|
||||
1 < strictcount(condBlock.getAPredecessor()) or loop instanceof DoStmt
|
||||
)
|
||||
}
|
||||
|
||||
predicate ssaDefinitionInLoop(LoopStmt loop, SsaDefinition ssa) {
|
||||
exists(ControlFlowNode node | node = ssa.getControlFlowNode() |
|
||||
node.getAstNode().(Stmt).getEnclosingStmt*() = loop or
|
||||
node.getAstNode().(Expr).getEnclosingStmt().getEnclosingStmt*() = loop
|
||||
)
|
||||
}
|
||||
|
||||
@@ -76,7 +78,7 @@ where
|
||||
) and
|
||||
// None of the ssa variables in `cond` are updated inside the loop.
|
||||
forex(SsaDefinition ssa, VarRead use | ssa.getARead() = use and use.getParent*() = cond |
|
||||
not ssa.getControlFlowNode().getEnclosingStmt().getEnclosingStmt*() = loop or
|
||||
not ssaDefinitionInLoop(loop, ssa) or
|
||||
ssa.getControlFlowNode().asExpr().getParent*() = loop.(ForStmt).getAnInit()
|
||||
) and
|
||||
// And `cond` does not use method calls, field reads, or array reads.
|
||||
|
||||
@@ -1,41 +1,15 @@
|
||||
import java
|
||||
|
||||
private Stmt getASwitchChild(SwitchStmt s) {
|
||||
result = s.getAChild()
|
||||
or
|
||||
exists(Stmt mid |
|
||||
mid = getASwitchChild(s) and not mid instanceof SwitchStmt and result = mid.getAChild()
|
||||
)
|
||||
}
|
||||
|
||||
private predicate blockInSwitch(SwitchStmt s, BasicBlock b) {
|
||||
b.getFirstNode().getEnclosingStmt() = getASwitchChild(s)
|
||||
}
|
||||
|
||||
private predicate switchCaseControlFlow(SwitchStmt switch, BasicBlock b1, BasicBlock b2) {
|
||||
blockInSwitch(switch, b1) and
|
||||
b1.getASuccessor() = b2 and
|
||||
blockInSwitch(switch, b2)
|
||||
}
|
||||
|
||||
predicate switchCaseControlFlowPlus(SwitchStmt switch, BasicBlock b1, BasicBlock b2) {
|
||||
switchCaseControlFlow(switch, b1, b2)
|
||||
or
|
||||
exists(BasicBlock mid |
|
||||
switchCaseControlFlowPlus(switch, mid, b2) and
|
||||
switchCaseControlFlow(switch, b1, mid) and
|
||||
not mid.getFirstNode().asStmt() = switch.getACase()
|
||||
)
|
||||
}
|
||||
|
||||
predicate mayDropThroughWithoutComment(SwitchStmt switch, Stmt switchCase) {
|
||||
switchCase = switch.getACase() and
|
||||
exists(Stmt other, BasicBlock b1, BasicBlock b2 |
|
||||
b1.getFirstNode().asStmt() = switchCase and
|
||||
b2.getFirstNode().asStmt() = other and
|
||||
switchCaseControlFlowPlus(switch, b1, b2) and
|
||||
other = switch.getACase() and
|
||||
not fallThroughCommented(other)
|
||||
exists(int caseIx, SwitchCase next, int nextCaseStmtIx, Stmt lastInCase, ControlFlowNode node |
|
||||
switch.getCase(caseIx) = switchCase and
|
||||
switch.getCase(caseIx + 1) = next and
|
||||
switch.getStmt(nextCaseStmtIx) = next and
|
||||
switch.getStmt(nextCaseStmtIx - 1) = lastInCase and
|
||||
lastInCase != switchCase and
|
||||
node.isAfter(lastInCase) and
|
||||
node.getANormalSuccessor().asStmt() = switch.getAStmt() and
|
||||
not fallThroughCommented(next)
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
@@ -42,7 +42,7 @@ private DataFlow::Node getGeneratingWrapperSet(Crypto::NonceArtifactNode a) {
|
||||
}
|
||||
|
||||
private predicate ancestorOfArtifact(
|
||||
Crypto::ArtifactNode a, Callable enclosingCallable, ControlFlow::Node midOrTarget
|
||||
Crypto::ArtifactNode a, Callable enclosingCallable, ControlFlowNode midOrTarget
|
||||
) {
|
||||
a.asElement().(Expr).getEnclosingCallable() = enclosingCallable and
|
||||
(
|
||||
@@ -87,7 +87,7 @@ predicate isArtifactReuse(Crypto::ArtifactNode a, Crypto::ArtifactNode b) {
|
||||
ancestorOfArtifact(b, commonParent, _)
|
||||
)
|
||||
implies
|
||||
exists(Callable commonParent, ControlFlow::Node aMid, ControlFlow::Node bMid |
|
||||
exists(Callable commonParent, ControlFlowNode aMid, ControlFlowNode bMid |
|
||||
ancestorOfArtifact(a, commonParent, aMid) and
|
||||
ancestorOfArtifact(b, commonParent, bMid) and
|
||||
a instanceof Crypto::NonceArtifactNode and
|
||||
|
||||
@@ -1,205 +1,386 @@
|
||||
| Test.kt:3:8:80:1 | Exceptional Exit | 0 | Test.kt:3:8:80:1 | Exceptional Exit |
|
||||
| Test.kt:3:8:80:1 | Exit | 0 | Test.kt:3:8:80:1 | Exit |
|
||||
| Test.kt:3:8:80:1 | { ... } | 0 | Test.kt:3:8:80:1 | { ... } |
|
||||
| Test.kt:3:8:80:1 | { ... } | 1 | Test.kt:3:1:80:1 | super(...) |
|
||||
| Test.kt:3:8:80:1 | { ... } | 2 | Test.kt:3:8:80:1 | { ... } |
|
||||
| Test.kt:3:8:80:1 | { ... } | 3 | Test.kt:3:8:80:1 | Normal Exit |
|
||||
| Test.kt:4:2:79:2 | Exceptional Exit | 0 | Test.kt:4:2:79:2 | Exceptional Exit |
|
||||
| Test.kt:4:2:79:2 | Exit | 0 | Test.kt:4:2:79:2 | Exit |
|
||||
| Test.kt:3:8:80:1 | Entry | 0 | Test.kt:3:8:80:1 | Entry |
|
||||
| Test.kt:3:8:80:1 | Entry | 1 | Test.kt:3:8:80:1 | { ... } |
|
||||
| Test.kt:3:8:80:1 | Entry | 2 | Test.kt:3:1:80:1 | Before super(...) |
|
||||
| Test.kt:3:8:80:1 | Entry | 3 | Test.kt:3:1:80:1 | super(...) |
|
||||
| Test.kt:3:8:80:1 | Entry | 4 | Test.kt:3:1:80:1 | After super(...) |
|
||||
| Test.kt:3:8:80:1 | Entry | 5 | Test.kt:3:8:80:1 | { ... } |
|
||||
| Test.kt:3:8:80:1 | Entry | 6 | Test.kt:3:8:80:1 | After { ... } |
|
||||
| Test.kt:3:8:80:1 | Entry | 7 | Test.kt:3:8:80:1 | Normal Exit |
|
||||
| Test.kt:3:8:80:1 | Entry | 8 | Test.kt:3:8:80:1 | Exit |
|
||||
| Test.kt:4:2:79:2 | Entry | 0 | Test.kt:4:2:79:2 | Entry |
|
||||
| Test.kt:4:2:79:2 | Entry | 1 | Test.kt:4:13:79:2 | { ... } |
|
||||
| Test.kt:4:2:79:2 | Entry | 2 | Test.kt:5:7:5:7 | var ...; |
|
||||
| Test.kt:4:2:79:2 | Entry | 3 | Test.kt:5:7:5:7 | Before x |
|
||||
| Test.kt:4:2:79:2 | Entry | 4 | Test.kt:5:16:5:16 | 0 |
|
||||
| Test.kt:4:2:79:2 | Entry | 5 | Test.kt:5:7:5:7 | x |
|
||||
| Test.kt:4:2:79:2 | Entry | 6 | Test.kt:5:7:5:7 | After x |
|
||||
| Test.kt:4:2:79:2 | Entry | 7 | Test.kt:5:7:5:7 | After var ...; |
|
||||
| Test.kt:4:2:79:2 | Entry | 8 | Test.kt:6:7:6:7 | var ...; |
|
||||
| Test.kt:4:2:79:2 | Entry | 9 | Test.kt:6:7:6:7 | Before y |
|
||||
| Test.kt:4:2:79:2 | Entry | 10 | Test.kt:6:17:6:18 | 50 |
|
||||
| Test.kt:4:2:79:2 | Entry | 11 | Test.kt:6:7:6:7 | y |
|
||||
| Test.kt:4:2:79:2 | Entry | 12 | Test.kt:6:7:6:7 | After y |
|
||||
| Test.kt:4:2:79:2 | Entry | 13 | Test.kt:6:7:6:7 | After var ...; |
|
||||
| Test.kt:4:2:79:2 | Entry | 14 | Test.kt:7:7:7:7 | var ...; |
|
||||
| Test.kt:4:2:79:2 | Entry | 15 | Test.kt:7:7:7:7 | Before z |
|
||||
| Test.kt:4:2:79:2 | Entry | 16 | Test.kt:7:16:7:16 | 0 |
|
||||
| Test.kt:4:2:79:2 | Entry | 17 | Test.kt:7:7:7:7 | z |
|
||||
| Test.kt:4:2:79:2 | Entry | 18 | Test.kt:7:7:7:7 | After z |
|
||||
| Test.kt:4:2:79:2 | Entry | 19 | Test.kt:7:7:7:7 | After var ...; |
|
||||
| Test.kt:4:2:79:2 | Entry | 20 | Test.kt:8:7:8:7 | var ...; |
|
||||
| Test.kt:4:2:79:2 | Entry | 21 | Test.kt:8:7:8:7 | Before w |
|
||||
| Test.kt:4:2:79:2 | Entry | 22 | Test.kt:8:16:8:16 | 0 |
|
||||
| Test.kt:4:2:79:2 | Entry | 23 | Test.kt:8:7:8:7 | w |
|
||||
| Test.kt:4:2:79:2 | Entry | 24 | Test.kt:8:7:8:7 | After w |
|
||||
| Test.kt:4:2:79:2 | Entry | 25 | Test.kt:8:7:8:7 | After var ...; |
|
||||
| Test.kt:4:2:79:2 | Entry | 26 | Test.kt:11:3:16:3 | <Expr>; |
|
||||
| Test.kt:4:2:79:2 | Entry | 27 | Test.kt:11:3:16:3 | when ... |
|
||||
| Test.kt:4:2:79:2 | Entry | 28 | Test.kt:11:3:16:3 | ... -> ... |
|
||||
| Test.kt:4:2:79:2 | Entry | 29 | Test.kt:11:7:11:11 | Before ... > ... |
|
||||
| Test.kt:4:2:79:2 | Entry | 30 | Test.kt:11:7:11:7 | x |
|
||||
| Test.kt:4:2:79:2 | Entry | 31 | Test.kt:11:11:11:11 | 0 |
|
||||
| Test.kt:4:2:79:2 | Entry | 32 | Test.kt:11:7:11:11 | ... > ... |
|
||||
| Test.kt:4:2:79:2 | Normal Exit | 0 | Test.kt:4:2:79:2 | Normal Exit |
|
||||
| Test.kt:4:13:79:2 | { ... } | 0 | Test.kt:4:13:79:2 | { ... } |
|
||||
| Test.kt:4:13:79:2 | { ... } | 1 | Test.kt:5:7:5:7 | var ...; |
|
||||
| Test.kt:4:13:79:2 | { ... } | 2 | Test.kt:5:16:5:16 | 0 |
|
||||
| Test.kt:4:13:79:2 | { ... } | 3 | Test.kt:5:7:5:7 | x |
|
||||
| Test.kt:4:13:79:2 | { ... } | 4 | Test.kt:6:7:6:7 | var ...; |
|
||||
| Test.kt:4:13:79:2 | { ... } | 5 | Test.kt:6:17:6:18 | 50 |
|
||||
| Test.kt:4:13:79:2 | { ... } | 6 | Test.kt:6:7:6:7 | y |
|
||||
| Test.kt:4:13:79:2 | { ... } | 7 | Test.kt:7:7:7:7 | var ...; |
|
||||
| Test.kt:4:13:79:2 | { ... } | 8 | Test.kt:7:16:7:16 | 0 |
|
||||
| Test.kt:4:13:79:2 | { ... } | 9 | Test.kt:7:7:7:7 | z |
|
||||
| Test.kt:4:13:79:2 | { ... } | 10 | Test.kt:8:7:8:7 | var ...; |
|
||||
| Test.kt:4:13:79:2 | { ... } | 11 | Test.kt:8:16:8:16 | 0 |
|
||||
| Test.kt:4:13:79:2 | { ... } | 12 | Test.kt:8:7:8:7 | w |
|
||||
| Test.kt:4:13:79:2 | { ... } | 13 | Test.kt:11:3:16:3 | <Expr>; |
|
||||
| Test.kt:4:13:79:2 | { ... } | 14 | Test.kt:11:3:16:3 | when ... |
|
||||
| Test.kt:4:13:79:2 | { ... } | 15 | Test.kt:11:3:16:3 | ... -> ... |
|
||||
| Test.kt:4:13:79:2 | { ... } | 16 | Test.kt:11:7:11:7 | x |
|
||||
| Test.kt:4:13:79:2 | { ... } | 17 | Test.kt:11:11:11:11 | 0 |
|
||||
| Test.kt:4:13:79:2 | { ... } | 18 | Test.kt:11:7:11:11 | ... > ... |
|
||||
| Test.kt:11:3:16:3 | ... -> ... | 0 | Test.kt:11:3:16:3 | ... -> ... |
|
||||
| Test.kt:11:3:16:3 | ... -> ... | 1 | Test.kt:11:3:16:3 | true |
|
||||
| Test.kt:11:3:16:3 | ... -> ... | 2 | Test.kt:14:10:16:3 | { ... } |
|
||||
| Test.kt:11:3:16:3 | ... -> ... | 3 | Test.kt:15:4:15:4 | <Expr>; |
|
||||
| Test.kt:11:3:16:3 | ... -> ... | 4 | Test.kt:15:8:15:9 | 30 |
|
||||
| Test.kt:11:3:16:3 | ... -> ... | 5 | Test.kt:15:4:15:9 | ...=... |
|
||||
| Test.kt:11:14:14:3 | { ... } | 0 | Test.kt:11:14:14:3 | { ... } |
|
||||
| Test.kt:11:14:14:3 | { ... } | 1 | Test.kt:12:4:12:4 | <Expr>; |
|
||||
| Test.kt:11:14:14:3 | { ... } | 2 | Test.kt:12:8:12:9 | 20 |
|
||||
| Test.kt:11:14:14:3 | { ... } | 3 | Test.kt:12:4:12:9 | ...=... |
|
||||
| Test.kt:11:14:14:3 | { ... } | 4 | Test.kt:13:4:13:4 | <Expr>; |
|
||||
| Test.kt:11:14:14:3 | { ... } | 5 | Test.kt:13:8:13:9 | 10 |
|
||||
| Test.kt:11:14:14:3 | { ... } | 6 | Test.kt:13:4:13:9 | ...=... |
|
||||
| Test.kt:18:3:18:3 | <Expr>; | 0 | Test.kt:18:3:18:3 | <Expr>; |
|
||||
| Test.kt:18:3:18:3 | <Expr>; | 1 | Test.kt:18:7:18:7 | 0 |
|
||||
| Test.kt:18:3:18:3 | <Expr>; | 2 | Test.kt:18:3:18:7 | ...=... |
|
||||
| Test.kt:18:3:18:3 | <Expr>; | 3 | Test.kt:21:3:24:9 | <Expr>; |
|
||||
| Test.kt:18:3:18:3 | <Expr>; | 4 | Test.kt:21:3:24:9 | when ... |
|
||||
| Test.kt:18:3:18:3 | <Expr>; | 5 | Test.kt:21:3:24:9 | ... -> ... |
|
||||
| Test.kt:18:3:18:3 | <Expr>; | 6 | Test.kt:21:6:21:6 | x |
|
||||
| Test.kt:18:3:18:3 | <Expr>; | 7 | Test.kt:21:10:21:10 | 0 |
|
||||
| Test.kt:18:3:18:3 | <Expr>; | 8 | Test.kt:21:6:21:10 | ... < ... |
|
||||
| Test.kt:21:3:24:9 | ... -> ... | 0 | Test.kt:21:3:24:9 | ... -> ... |
|
||||
| Test.kt:21:3:24:9 | ... -> ... | 1 | Test.kt:21:3:24:9 | true |
|
||||
| Test.kt:21:3:24:9 | ... -> ... | 2 | Test.kt:24:4:24:9 | INSTANCE |
|
||||
| Test.kt:21:3:24:9 | ... -> ... | 3 | Test.kt:24:4:24:9 | return ... |
|
||||
| Test.kt:22:4:22:4 | <Expr>; | 0 | Test.kt:22:4:22:4 | <Expr>; |
|
||||
| Test.kt:22:4:22:4 | <Expr>; | 1 | Test.kt:22:8:22:9 | 40 |
|
||||
| Test.kt:22:4:22:4 | <Expr>; | 2 | Test.kt:22:4:22:9 | ...=... |
|
||||
| Test.kt:22:4:22:4 | <Expr>; | 3 | Test.kt:27:3:27:3 | <Expr>; |
|
||||
| Test.kt:22:4:22:4 | <Expr>; | 4 | Test.kt:27:7:27:8 | 10 |
|
||||
| Test.kt:22:4:22:4 | <Expr>; | 5 | Test.kt:27:3:27:8 | ...=... |
|
||||
| Test.kt:22:4:22:4 | <Expr>; | 6 | Test.kt:30:3:33:3 | <Expr>; |
|
||||
| Test.kt:22:4:22:4 | <Expr>; | 7 | Test.kt:30:3:33:3 | when ... |
|
||||
| Test.kt:22:4:22:4 | <Expr>; | 8 | Test.kt:30:3:33:3 | ... -> ... |
|
||||
| Test.kt:22:4:22:4 | <Expr>; | 9 | Test.kt:30:7:30:7 | x |
|
||||
| Test.kt:22:4:22:4 | <Expr>; | 10 | Test.kt:30:12:30:12 | 0 |
|
||||
| Test.kt:22:4:22:4 | <Expr>; | 11 | Test.kt:30:7:30:12 | ... (value equals) ... |
|
||||
| Test.kt:30:15:33:3 | { ... } | 0 | Test.kt:30:15:33:3 | { ... } |
|
||||
| Test.kt:30:15:33:3 | { ... } | 1 | Test.kt:31:4:31:4 | <Expr>; |
|
||||
| Test.kt:30:15:33:3 | { ... } | 2 | Test.kt:31:8:31:9 | 60 |
|
||||
| Test.kt:30:15:33:3 | { ... } | 3 | Test.kt:31:4:31:9 | ...=... |
|
||||
| Test.kt:30:15:33:3 | { ... } | 4 | Test.kt:32:4:32:4 | <Expr>; |
|
||||
| Test.kt:30:15:33:3 | { ... } | 5 | Test.kt:32:8:32:9 | 10 |
|
||||
| Test.kt:30:15:33:3 | { ... } | 6 | Test.kt:32:4:32:9 | ...=... |
|
||||
| Test.kt:35:3:35:3 | <Expr>; | 0 | Test.kt:35:3:35:3 | <Expr>; |
|
||||
| Test.kt:35:3:35:3 | <Expr>; | 1 | Test.kt:35:7:35:8 | 20 |
|
||||
| Test.kt:35:3:35:3 | <Expr>; | 2 | Test.kt:35:3:35:8 | ...=... |
|
||||
| Test.kt:35:3:35:3 | <Expr>; | 3 | Test.kt:38:3:41:3 | while (...) |
|
||||
| Test.kt:38:9:38:9 | x | 0 | Test.kt:38:9:38:9 | x |
|
||||
| Test.kt:38:9:38:9 | x | 1 | Test.kt:38:13:38:13 | 0 |
|
||||
| Test.kt:38:9:38:9 | x | 2 | Test.kt:38:9:38:13 | ... > ... |
|
||||
| Test.kt:38:16:41:3 | { ... } | 0 | Test.kt:38:16:41:3 | { ... } |
|
||||
| Test.kt:38:16:41:3 | { ... } | 1 | Test.kt:39:4:39:4 | <Expr>; |
|
||||
| Test.kt:38:16:41:3 | { ... } | 2 | Test.kt:39:8:39:9 | 10 |
|
||||
| Test.kt:38:16:41:3 | { ... } | 3 | Test.kt:39:4:39:9 | ...=... |
|
||||
| Test.kt:38:16:41:3 | { ... } | 4 | Test.kt:40:4:40:6 | <Expr>; |
|
||||
| Test.kt:38:16:41:3 | { ... } | 5 | Test.kt:40:4:40:6 | <Stmt> |
|
||||
| Test.kt:38:16:41:3 | { ... } | 6 | Test.kt:40:4:40:6 | { ... } |
|
||||
| Test.kt:38:16:41:3 | { ... } | 7 | Test.kt:40:4:40:6 | var ...; |
|
||||
| Test.kt:38:16:41:3 | { ... } | 8 | Test.kt:40:4:40:4 | x |
|
||||
| Test.kt:38:16:41:3 | { ... } | 9 | Test.kt:40:4:40:6 | tmp0 |
|
||||
| Test.kt:38:16:41:3 | { ... } | 10 | Test.kt:40:4:40:4 | <Expr>; |
|
||||
| Test.kt:38:16:41:3 | { ... } | 11 | Test.kt:40:4:40:6 | tmp0 |
|
||||
| Test.kt:38:16:41:3 | { ... } | 12 | Test.kt:40:4:40:6 | dec(...) |
|
||||
| Test.kt:38:16:41:3 | { ... } | 13 | Test.kt:40:4:40:6 | ...=... |
|
||||
| Test.kt:38:16:41:3 | { ... } | 14 | Test.kt:40:4:40:6 | <Expr>; |
|
||||
| Test.kt:38:16:41:3 | { ... } | 15 | Test.kt:40:4:40:6 | tmp0 |
|
||||
| Test.kt:38:16:41:3 | { ... } | 16 | Test.kt:40:4:40:6 | <implicit coercion to unit> |
|
||||
| Test.kt:43:3:43:3 | <Expr>; | 0 | Test.kt:43:3:43:3 | <Expr>; |
|
||||
| Test.kt:43:3:43:3 | <Expr>; | 1 | Test.kt:43:7:43:8 | 30 |
|
||||
| Test.kt:43:3:43:3 | <Expr>; | 2 | Test.kt:43:3:43:8 | ...=... |
|
||||
| Test.kt:43:3:43:3 | <Expr>; | 3 | Test.kt:73:3:73:3 | <Expr>; |
|
||||
| Test.kt:43:3:43:3 | <Expr>; | 4 | Test.kt:73:7:73:8 | 50 |
|
||||
| Test.kt:43:3:43:3 | <Expr>; | 5 | Test.kt:73:3:73:8 | ...=... |
|
||||
| Test.kt:43:3:43:3 | <Expr>; | 6 | Test.kt:77:3:77:3 | <Expr>; |
|
||||
| Test.kt:43:3:43:3 | <Expr>; | 7 | Test.kt:77:7:77:8 | 40 |
|
||||
| Test.kt:43:3:43:3 | <Expr>; | 8 | Test.kt:77:3:77:8 | ...=... |
|
||||
| Test.kt:43:3:43:3 | <Expr>; | 9 | Test.kt:78:3:78:8 | INSTANCE |
|
||||
| Test.kt:43:3:43:3 | <Expr>; | 10 | Test.kt:78:3:78:8 | return ... |
|
||||
| Test.kt:82:1:89:1 | Exceptional Exit | 0 | Test.kt:82:1:89:1 | Exceptional Exit |
|
||||
| Test.kt:4:2:79:2 | Normal Exit | 1 | Test.kt:4:2:79:2 | Exit |
|
||||
| Test.kt:11:3:16:3 | After when ... | 0 | Test.kt:11:3:16:3 | After when ... |
|
||||
| Test.kt:11:3:16:3 | After when ... | 1 | Test.kt:11:3:16:3 | After <Expr>; |
|
||||
| Test.kt:11:3:16:3 | After when ... | 2 | Test.kt:18:3:18:3 | <Expr>; |
|
||||
| Test.kt:11:3:16:3 | After when ... | 3 | Test.kt:18:3:18:7 | Before ...=... |
|
||||
| Test.kt:11:3:16:3 | After when ... | 4 | Test.kt:18:3:18:3 | z |
|
||||
| Test.kt:11:3:16:3 | After when ... | 5 | Test.kt:18:7:18:7 | 0 |
|
||||
| Test.kt:11:3:16:3 | After when ... | 6 | Test.kt:18:3:18:7 | ...=... |
|
||||
| Test.kt:11:3:16:3 | After when ... | 7 | Test.kt:18:3:18:7 | After ...=... |
|
||||
| Test.kt:11:3:16:3 | After when ... | 8 | Test.kt:18:3:18:3 | After <Expr>; |
|
||||
| Test.kt:11:3:16:3 | After when ... | 9 | Test.kt:21:3:24:9 | <Expr>; |
|
||||
| Test.kt:11:3:16:3 | After when ... | 10 | Test.kt:21:3:24:9 | when ... |
|
||||
| Test.kt:11:3:16:3 | After when ... | 11 | Test.kt:21:3:24:9 | ... -> ... |
|
||||
| Test.kt:11:3:16:3 | After when ... | 12 | Test.kt:21:6:21:10 | Before ... < ... |
|
||||
| Test.kt:11:3:16:3 | After when ... | 13 | Test.kt:21:6:21:6 | x |
|
||||
| Test.kt:11:3:16:3 | After when ... | 14 | Test.kt:21:10:21:10 | 0 |
|
||||
| Test.kt:11:3:16:3 | After when ... | 15 | Test.kt:21:6:21:10 | ... < ... |
|
||||
| Test.kt:11:7:11:11 | After ... > ... [false] | 0 | Test.kt:11:7:11:11 | After ... > ... [false] |
|
||||
| Test.kt:11:7:11:11 | After ... > ... [false] | 1 | Test.kt:11:3:16:3 | ... -> ... |
|
||||
| Test.kt:11:7:11:11 | After ... > ... [false] | 2 | Test.kt:11:3:16:3 | true |
|
||||
| Test.kt:11:7:11:11 | After ... > ... [false] | 3 | Test.kt:11:3:16:3 | After true [true] |
|
||||
| Test.kt:11:7:11:11 | After ... > ... [false] | 4 | Test.kt:14:10:16:3 | { ... } |
|
||||
| Test.kt:11:7:11:11 | After ... > ... [false] | 5 | Test.kt:15:4:15:4 | <Expr>; |
|
||||
| Test.kt:11:7:11:11 | After ... > ... [false] | 6 | Test.kt:15:4:15:9 | Before ...=... |
|
||||
| Test.kt:11:7:11:11 | After ... > ... [false] | 7 | Test.kt:15:4:15:4 | y |
|
||||
| Test.kt:11:7:11:11 | After ... > ... [false] | 8 | Test.kt:15:8:15:9 | 30 |
|
||||
| Test.kt:11:7:11:11 | After ... > ... [false] | 9 | Test.kt:15:4:15:9 | ...=... |
|
||||
| Test.kt:11:7:11:11 | After ... > ... [false] | 10 | Test.kt:15:4:15:9 | After ...=... |
|
||||
| Test.kt:11:7:11:11 | After ... > ... [false] | 11 | Test.kt:15:4:15:4 | After <Expr>; |
|
||||
| Test.kt:11:7:11:11 | After ... > ... [false] | 12 | Test.kt:14:10:16:3 | After { ... } |
|
||||
| Test.kt:11:7:11:11 | After ... > ... [true] | 0 | Test.kt:11:7:11:11 | After ... > ... [true] |
|
||||
| Test.kt:11:7:11:11 | After ... > ... [true] | 1 | Test.kt:11:14:14:3 | { ... } |
|
||||
| Test.kt:11:7:11:11 | After ... > ... [true] | 2 | Test.kt:12:4:12:4 | <Expr>; |
|
||||
| Test.kt:11:7:11:11 | After ... > ... [true] | 3 | Test.kt:12:4:12:9 | Before ...=... |
|
||||
| Test.kt:11:7:11:11 | After ... > ... [true] | 4 | Test.kt:12:4:12:4 | y |
|
||||
| Test.kt:11:7:11:11 | After ... > ... [true] | 5 | Test.kt:12:8:12:9 | 20 |
|
||||
| Test.kt:11:7:11:11 | After ... > ... [true] | 6 | Test.kt:12:4:12:9 | ...=... |
|
||||
| Test.kt:11:7:11:11 | After ... > ... [true] | 7 | Test.kt:12:4:12:9 | After ...=... |
|
||||
| Test.kt:11:7:11:11 | After ... > ... [true] | 8 | Test.kt:12:4:12:4 | After <Expr>; |
|
||||
| Test.kt:11:7:11:11 | After ... > ... [true] | 9 | Test.kt:13:4:13:4 | <Expr>; |
|
||||
| Test.kt:11:7:11:11 | After ... > ... [true] | 10 | Test.kt:13:4:13:9 | Before ...=... |
|
||||
| Test.kt:11:7:11:11 | After ... > ... [true] | 11 | Test.kt:13:4:13:4 | z |
|
||||
| Test.kt:11:7:11:11 | After ... > ... [true] | 12 | Test.kt:13:8:13:9 | 10 |
|
||||
| Test.kt:11:7:11:11 | After ... > ... [true] | 13 | Test.kt:13:4:13:9 | ...=... |
|
||||
| Test.kt:11:7:11:11 | After ... > ... [true] | 14 | Test.kt:13:4:13:9 | After ...=... |
|
||||
| Test.kt:11:7:11:11 | After ... > ... [true] | 15 | Test.kt:13:4:13:4 | After <Expr>; |
|
||||
| Test.kt:11:7:11:11 | After ... > ... [true] | 16 | Test.kt:11:14:14:3 | After { ... } |
|
||||
| Test.kt:21:6:21:10 | After ... < ... [false] | 0 | Test.kt:21:6:21:10 | After ... < ... [false] |
|
||||
| Test.kt:21:6:21:10 | After ... < ... [false] | 1 | Test.kt:21:3:24:9 | ... -> ... |
|
||||
| Test.kt:21:6:21:10 | After ... < ... [false] | 2 | Test.kt:21:3:24:9 | true |
|
||||
| Test.kt:21:6:21:10 | After ... < ... [false] | 3 | Test.kt:21:3:24:9 | After true [true] |
|
||||
| Test.kt:21:6:21:10 | After ... < ... [false] | 4 | Test.kt:24:4:24:9 | Before return ... |
|
||||
| Test.kt:21:6:21:10 | After ... < ... [false] | 5 | Test.kt:24:4:24:9 | INSTANCE |
|
||||
| Test.kt:21:6:21:10 | After ... < ... [false] | 6 | Test.kt:24:4:24:9 | return ... |
|
||||
| Test.kt:21:6:21:10 | After ... < ... [true] | 0 | Test.kt:21:6:21:10 | After ... < ... [true] |
|
||||
| Test.kt:21:6:21:10 | After ... < ... [true] | 1 | Test.kt:22:4:22:4 | <Expr>; |
|
||||
| Test.kt:21:6:21:10 | After ... < ... [true] | 2 | Test.kt:22:4:22:9 | Before ...=... |
|
||||
| Test.kt:21:6:21:10 | After ... < ... [true] | 3 | Test.kt:22:4:22:4 | y |
|
||||
| Test.kt:21:6:21:10 | After ... < ... [true] | 4 | Test.kt:22:8:22:9 | 40 |
|
||||
| Test.kt:21:6:21:10 | After ... < ... [true] | 5 | Test.kt:22:4:22:9 | ...=... |
|
||||
| Test.kt:21:6:21:10 | After ... < ... [true] | 6 | Test.kt:22:4:22:9 | After ...=... |
|
||||
| Test.kt:21:6:21:10 | After ... < ... [true] | 7 | Test.kt:22:4:22:4 | After <Expr>; |
|
||||
| Test.kt:21:6:21:10 | After ... < ... [true] | 8 | Test.kt:21:3:24:9 | After when ... |
|
||||
| Test.kt:21:6:21:10 | After ... < ... [true] | 9 | Test.kt:21:3:24:9 | After <Expr>; |
|
||||
| Test.kt:21:6:21:10 | After ... < ... [true] | 10 | Test.kt:27:3:27:3 | <Expr>; |
|
||||
| Test.kt:21:6:21:10 | After ... < ... [true] | 11 | Test.kt:27:3:27:8 | Before ...=... |
|
||||
| Test.kt:21:6:21:10 | After ... < ... [true] | 12 | Test.kt:27:3:27:3 | z |
|
||||
| Test.kt:21:6:21:10 | After ... < ... [true] | 13 | Test.kt:27:7:27:8 | 10 |
|
||||
| Test.kt:21:6:21:10 | After ... < ... [true] | 14 | Test.kt:27:3:27:8 | ...=... |
|
||||
| Test.kt:21:6:21:10 | After ... < ... [true] | 15 | Test.kt:27:3:27:8 | After ...=... |
|
||||
| Test.kt:21:6:21:10 | After ... < ... [true] | 16 | Test.kt:27:3:27:3 | After <Expr>; |
|
||||
| Test.kt:21:6:21:10 | After ... < ... [true] | 17 | Test.kt:30:3:33:3 | <Expr>; |
|
||||
| Test.kt:21:6:21:10 | After ... < ... [true] | 18 | Test.kt:30:3:33:3 | when ... |
|
||||
| Test.kt:21:6:21:10 | After ... < ... [true] | 19 | Test.kt:30:3:33:3 | ... -> ... |
|
||||
| Test.kt:21:6:21:10 | After ... < ... [true] | 20 | Test.kt:30:7:30:12 | Before ... (value equals) ... |
|
||||
| Test.kt:21:6:21:10 | After ... < ... [true] | 21 | Test.kt:30:7:30:7 | x |
|
||||
| Test.kt:21:6:21:10 | After ... < ... [true] | 22 | Test.kt:30:12:30:12 | 0 |
|
||||
| Test.kt:21:6:21:10 | After ... < ... [true] | 23 | Test.kt:30:7:30:12 | ... (value equals) ... |
|
||||
| Test.kt:30:3:33:3 | After when ... | 0 | Test.kt:30:3:33:3 | After when ... |
|
||||
| Test.kt:30:3:33:3 | After when ... | 1 | Test.kt:30:3:33:3 | After <Expr>; |
|
||||
| Test.kt:30:3:33:3 | After when ... | 2 | Test.kt:35:3:35:3 | <Expr>; |
|
||||
| Test.kt:30:3:33:3 | After when ... | 3 | Test.kt:35:3:35:8 | Before ...=... |
|
||||
| Test.kt:30:3:33:3 | After when ... | 4 | Test.kt:35:3:35:3 | z |
|
||||
| Test.kt:30:3:33:3 | After when ... | 5 | Test.kt:35:7:35:8 | 20 |
|
||||
| Test.kt:30:3:33:3 | After when ... | 6 | Test.kt:35:3:35:8 | ...=... |
|
||||
| Test.kt:30:3:33:3 | After when ... | 7 | Test.kt:35:3:35:8 | After ...=... |
|
||||
| Test.kt:30:3:33:3 | After when ... | 8 | Test.kt:35:3:35:3 | After <Expr>; |
|
||||
| Test.kt:30:3:33:3 | After when ... | 9 | Test.kt:38:3:41:3 | while (...) |
|
||||
| Test.kt:30:7:30:12 | After ... (value equals) ... [false] | 0 | Test.kt:30:7:30:12 | After ... (value equals) ... [false] |
|
||||
| Test.kt:30:7:30:12 | After ... (value equals) ... [true] | 0 | Test.kt:30:7:30:12 | After ... (value equals) ... [true] |
|
||||
| Test.kt:30:7:30:12 | After ... (value equals) ... [true] | 1 | Test.kt:30:15:33:3 | { ... } |
|
||||
| Test.kt:30:7:30:12 | After ... (value equals) ... [true] | 2 | Test.kt:31:4:31:4 | <Expr>; |
|
||||
| Test.kt:30:7:30:12 | After ... (value equals) ... [true] | 3 | Test.kt:31:4:31:9 | Before ...=... |
|
||||
| Test.kt:30:7:30:12 | After ... (value equals) ... [true] | 4 | Test.kt:31:4:31:4 | y |
|
||||
| Test.kt:30:7:30:12 | After ... (value equals) ... [true] | 5 | Test.kt:31:8:31:9 | 60 |
|
||||
| Test.kt:30:7:30:12 | After ... (value equals) ... [true] | 6 | Test.kt:31:4:31:9 | ...=... |
|
||||
| Test.kt:30:7:30:12 | After ... (value equals) ... [true] | 7 | Test.kt:31:4:31:9 | After ...=... |
|
||||
| Test.kt:30:7:30:12 | After ... (value equals) ... [true] | 8 | Test.kt:31:4:31:4 | After <Expr>; |
|
||||
| Test.kt:30:7:30:12 | After ... (value equals) ... [true] | 9 | Test.kt:32:4:32:4 | <Expr>; |
|
||||
| Test.kt:30:7:30:12 | After ... (value equals) ... [true] | 10 | Test.kt:32:4:32:9 | Before ...=... |
|
||||
| Test.kt:30:7:30:12 | After ... (value equals) ... [true] | 11 | Test.kt:32:4:32:4 | z |
|
||||
| Test.kt:30:7:30:12 | After ... (value equals) ... [true] | 12 | Test.kt:32:8:32:9 | 10 |
|
||||
| Test.kt:30:7:30:12 | After ... (value equals) ... [true] | 13 | Test.kt:32:4:32:9 | ...=... |
|
||||
| Test.kt:30:7:30:12 | After ... (value equals) ... [true] | 14 | Test.kt:32:4:32:9 | After ...=... |
|
||||
| Test.kt:30:7:30:12 | After ... (value equals) ... [true] | 15 | Test.kt:32:4:32:4 | After <Expr>; |
|
||||
| Test.kt:30:7:30:12 | After ... (value equals) ... [true] | 16 | Test.kt:30:15:33:3 | After { ... } |
|
||||
| Test.kt:38:3:41:3 | [LoopHeader] while (...) | 0 | Test.kt:38:3:41:3 | [LoopHeader] while (...) |
|
||||
| Test.kt:38:3:41:3 | [LoopHeader] while (...) | 1 | Test.kt:38:9:38:13 | Before ... > ... |
|
||||
| Test.kt:38:3:41:3 | [LoopHeader] while (...) | 2 | Test.kt:38:9:38:9 | x |
|
||||
| Test.kt:38:3:41:3 | [LoopHeader] while (...) | 3 | Test.kt:38:13:38:13 | 0 |
|
||||
| Test.kt:38:3:41:3 | [LoopHeader] while (...) | 4 | Test.kt:38:9:38:13 | ... > ... |
|
||||
| Test.kt:38:9:38:13 | After ... > ... [false] | 0 | Test.kt:38:9:38:13 | After ... > ... [false] |
|
||||
| Test.kt:38:9:38:13 | After ... > ... [false] | 1 | Test.kt:38:3:41:3 | After while (...) |
|
||||
| Test.kt:38:9:38:13 | After ... > ... [false] | 2 | Test.kt:43:3:43:3 | <Expr>; |
|
||||
| Test.kt:38:9:38:13 | After ... > ... [false] | 3 | Test.kt:43:3:43:8 | Before ...=... |
|
||||
| Test.kt:38:9:38:13 | After ... > ... [false] | 4 | Test.kt:43:3:43:3 | z |
|
||||
| Test.kt:38:9:38:13 | After ... > ... [false] | 5 | Test.kt:43:7:43:8 | 30 |
|
||||
| Test.kt:38:9:38:13 | After ... > ... [false] | 6 | Test.kt:43:3:43:8 | ...=... |
|
||||
| Test.kt:38:9:38:13 | After ... > ... [false] | 7 | Test.kt:43:3:43:8 | After ...=... |
|
||||
| Test.kt:38:9:38:13 | After ... > ... [false] | 8 | Test.kt:43:3:43:3 | After <Expr>; |
|
||||
| Test.kt:38:9:38:13 | After ... > ... [false] | 9 | Test.kt:73:3:73:3 | <Expr>; |
|
||||
| Test.kt:38:9:38:13 | After ... > ... [false] | 10 | Test.kt:73:3:73:8 | Before ...=... |
|
||||
| Test.kt:38:9:38:13 | After ... > ... [false] | 11 | Test.kt:73:3:73:3 | z |
|
||||
| Test.kt:38:9:38:13 | After ... > ... [false] | 12 | Test.kt:73:7:73:8 | 50 |
|
||||
| Test.kt:38:9:38:13 | After ... > ... [false] | 13 | Test.kt:73:3:73:8 | ...=... |
|
||||
| Test.kt:38:9:38:13 | After ... > ... [false] | 14 | Test.kt:73:3:73:8 | After ...=... |
|
||||
| Test.kt:38:9:38:13 | After ... > ... [false] | 15 | Test.kt:73:3:73:3 | After <Expr>; |
|
||||
| Test.kt:38:9:38:13 | After ... > ... [false] | 16 | Test.kt:77:3:77:3 | <Expr>; |
|
||||
| Test.kt:38:9:38:13 | After ... > ... [false] | 17 | Test.kt:77:3:77:8 | Before ...=... |
|
||||
| Test.kt:38:9:38:13 | After ... > ... [false] | 18 | Test.kt:77:3:77:3 | w |
|
||||
| Test.kt:38:9:38:13 | After ... > ... [false] | 19 | Test.kt:77:7:77:8 | 40 |
|
||||
| Test.kt:38:9:38:13 | After ... > ... [false] | 20 | Test.kt:77:3:77:8 | ...=... |
|
||||
| Test.kt:38:9:38:13 | After ... > ... [false] | 21 | Test.kt:77:3:77:8 | After ...=... |
|
||||
| Test.kt:38:9:38:13 | After ... > ... [false] | 22 | Test.kt:77:3:77:3 | After <Expr>; |
|
||||
| Test.kt:38:9:38:13 | After ... > ... [false] | 23 | Test.kt:78:3:78:8 | Before return ... |
|
||||
| Test.kt:38:9:38:13 | After ... > ... [false] | 24 | Test.kt:78:3:78:8 | INSTANCE |
|
||||
| Test.kt:38:9:38:13 | After ... > ... [false] | 25 | Test.kt:78:3:78:8 | return ... |
|
||||
| Test.kt:38:9:38:13 | After ... > ... [true] | 0 | Test.kt:38:9:38:13 | After ... > ... [true] |
|
||||
| Test.kt:38:9:38:13 | After ... > ... [true] | 1 | Test.kt:38:16:41:3 | { ... } |
|
||||
| Test.kt:38:9:38:13 | After ... > ... [true] | 2 | Test.kt:39:4:39:4 | <Expr>; |
|
||||
| Test.kt:38:9:38:13 | After ... > ... [true] | 3 | Test.kt:39:4:39:9 | Before ...=... |
|
||||
| Test.kt:38:9:38:13 | After ... > ... [true] | 4 | Test.kt:39:4:39:4 | y |
|
||||
| Test.kt:38:9:38:13 | After ... > ... [true] | 5 | Test.kt:39:8:39:9 | 10 |
|
||||
| Test.kt:38:9:38:13 | After ... > ... [true] | 6 | Test.kt:39:4:39:9 | ...=... |
|
||||
| Test.kt:38:9:38:13 | After ... > ... [true] | 7 | Test.kt:39:4:39:9 | After ...=... |
|
||||
| Test.kt:38:9:38:13 | After ... > ... [true] | 8 | Test.kt:39:4:39:4 | After <Expr>; |
|
||||
| Test.kt:38:9:38:13 | After ... > ... [true] | 9 | Test.kt:40:4:40:6 | <Expr>; |
|
||||
| Test.kt:38:9:38:13 | After ... > ... [true] | 10 | Test.kt:40:4:40:6 | Before <implicit coercion to unit> |
|
||||
| Test.kt:38:9:38:13 | After ... > ... [true] | 11 | Test.kt:40:4:40:6 | Before <Stmt> |
|
||||
| Test.kt:38:9:38:13 | After ... > ... [true] | 12 | Test.kt:40:4:40:6 | { ... } |
|
||||
| Test.kt:38:9:38:13 | After ... > ... [true] | 13 | Test.kt:40:4:40:6 | var ...; |
|
||||
| Test.kt:38:9:38:13 | After ... > ... [true] | 14 | Test.kt:40:4:40:6 | Before tmp0 |
|
||||
| Test.kt:38:9:38:13 | After ... > ... [true] | 15 | Test.kt:40:4:40:4 | x |
|
||||
| Test.kt:38:9:38:13 | After ... > ... [true] | 16 | Test.kt:40:4:40:6 | tmp0 |
|
||||
| Test.kt:38:9:38:13 | After ... > ... [true] | 17 | Test.kt:40:4:40:6 | After tmp0 |
|
||||
| Test.kt:38:9:38:13 | After ... > ... [true] | 18 | Test.kt:40:4:40:6 | After var ...; |
|
||||
| Test.kt:38:9:38:13 | After ... > ... [true] | 19 | Test.kt:40:4:40:4 | <Expr>; |
|
||||
| Test.kt:38:9:38:13 | After ... > ... [true] | 20 | Test.kt:40:4:40:6 | Before ...=... |
|
||||
| Test.kt:38:9:38:13 | After ... > ... [true] | 21 | Test.kt:40:4:40:4 | x |
|
||||
| Test.kt:38:9:38:13 | After ... > ... [true] | 22 | Test.kt:40:4:40:6 | Before dec(...) |
|
||||
| Test.kt:38:9:38:13 | After ... > ... [true] | 23 | Test.kt:40:4:40:6 | tmp0 |
|
||||
| Test.kt:38:9:38:13 | After ... > ... [true] | 24 | Test.kt:40:4:40:6 | dec(...) |
|
||||
| Test.kt:38:9:38:13 | After ... > ... [true] | 25 | Test.kt:40:4:40:6 | After dec(...) |
|
||||
| Test.kt:38:9:38:13 | After ... > ... [true] | 26 | Test.kt:40:4:40:6 | ...=... |
|
||||
| Test.kt:38:9:38:13 | After ... > ... [true] | 27 | Test.kt:40:4:40:6 | After ...=... |
|
||||
| Test.kt:38:9:38:13 | After ... > ... [true] | 28 | Test.kt:40:4:40:4 | After <Expr>; |
|
||||
| Test.kt:38:9:38:13 | After ... > ... [true] | 29 | Test.kt:40:4:40:6 | <Expr>; |
|
||||
| Test.kt:38:9:38:13 | After ... > ... [true] | 30 | Test.kt:40:4:40:6 | tmp0 |
|
||||
| Test.kt:38:9:38:13 | After ... > ... [true] | 31 | Test.kt:40:4:40:6 | After <Expr>; |
|
||||
| Test.kt:38:9:38:13 | After ... > ... [true] | 32 | Test.kt:40:4:40:6 | After { ... } |
|
||||
| Test.kt:38:9:38:13 | After ... > ... [true] | 33 | Test.kt:40:4:40:6 | <Stmt> |
|
||||
| Test.kt:38:9:38:13 | After ... > ... [true] | 34 | Test.kt:40:4:40:6 | After <Stmt> |
|
||||
| Test.kt:38:9:38:13 | After ... > ... [true] | 35 | Test.kt:40:4:40:6 | <implicit coercion to unit> |
|
||||
| Test.kt:38:9:38:13 | After ... > ... [true] | 36 | Test.kt:40:4:40:6 | After <implicit coercion to unit> |
|
||||
| Test.kt:38:9:38:13 | After ... > ... [true] | 37 | Test.kt:40:4:40:6 | After <Expr>; |
|
||||
| Test.kt:38:9:38:13 | After ... > ... [true] | 38 | Test.kt:38:16:41:3 | After { ... } |
|
||||
| Test.kt:82:1:89:1 | Entry | 0 | Test.kt:82:1:89:1 | Entry |
|
||||
| Test.kt:82:1:89:1 | Entry | 1 | Test.kt:82:21:89:1 | { ... } |
|
||||
| Test.kt:82:1:89:1 | Entry | 2 | Test.kt:83:2:88:2 | try ... |
|
||||
| Test.kt:82:1:89:1 | Entry | 3 | Test.kt:83:6:86:2 | { ... } |
|
||||
| Test.kt:82:1:89:1 | Entry | 4 | Test.kt:84:7:84:7 | var ...; |
|
||||
| Test.kt:82:1:89:1 | Entry | 5 | Test.kt:84:7:84:7 | Before x |
|
||||
| Test.kt:82:1:89:1 | Entry | 6 | Test.kt:84:11:84:18 | Before (...)... |
|
||||
| Test.kt:82:1:89:1 | Entry | 7 | Test.kt:84:11:84:11 | o |
|
||||
| Test.kt:82:1:89:1 | Entry | 8 | Test.kt:84:11:84:18 | (...)... |
|
||||
| Test.kt:82:1:89:1 | Exit | 0 | Test.kt:82:1:89:1 | Exit |
|
||||
| Test.kt:82:1:89:1 | Normal Exit | 0 | Test.kt:82:1:89:1 | Normal Exit |
|
||||
| Test.kt:82:21:89:1 | { ... } | 0 | Test.kt:82:21:89:1 | { ... } |
|
||||
| Test.kt:82:21:89:1 | { ... } | 1 | Test.kt:83:2:88:2 | try ... |
|
||||
| Test.kt:82:21:89:1 | { ... } | 2 | Test.kt:83:6:86:2 | { ... } |
|
||||
| Test.kt:82:21:89:1 | { ... } | 3 | Test.kt:84:7:84:7 | var ...; |
|
||||
| Test.kt:82:21:89:1 | { ... } | 4 | Test.kt:84:11:84:11 | o |
|
||||
| Test.kt:82:21:89:1 | { ... } | 5 | Test.kt:84:11:84:18 | (...)... |
|
||||
| Test.kt:84:7:84:7 | x | 0 | Test.kt:84:7:84:7 | x |
|
||||
| Test.kt:84:7:84:7 | x | 1 | Test.kt:85:10:85:10 | 1 |
|
||||
| Test.kt:84:7:84:7 | x | 2 | Test.kt:85:3:85:10 | return ... |
|
||||
| Test.kt:84:11:84:18 | After (...)... | 0 | Test.kt:84:11:84:18 | After (...)... |
|
||||
| Test.kt:84:11:84:18 | After (...)... | 1 | Test.kt:84:7:84:7 | x |
|
||||
| Test.kt:84:11:84:18 | After (...)... | 2 | Test.kt:84:7:84:7 | After x |
|
||||
| Test.kt:84:11:84:18 | After (...)... | 3 | Test.kt:84:7:84:7 | After var ...; |
|
||||
| Test.kt:84:11:84:18 | After (...)... | 4 | Test.kt:85:3:85:10 | Before return ... |
|
||||
| Test.kt:84:11:84:18 | After (...)... | 5 | Test.kt:85:10:85:10 | 1 |
|
||||
| Test.kt:84:11:84:18 | After (...)... | 6 | Test.kt:85:3:85:10 | return ... |
|
||||
| Test.kt:86:4:88:2 | After catch (...) [match] | 0 | Test.kt:86:4:88:2 | After catch (...) [match] |
|
||||
| Test.kt:86:4:88:2 | After catch (...) [match] | 1 | Test.kt:86:11:86:31 | e |
|
||||
| Test.kt:86:4:88:2 | After catch (...) [match] | 2 | Test.kt:86:34:88:2 | { ... } |
|
||||
| Test.kt:86:4:88:2 | After catch (...) [match] | 3 | Test.kt:87:3:87:10 | Before return ... |
|
||||
| Test.kt:86:4:88:2 | After catch (...) [match] | 4 | Test.kt:87:10:87:10 | 2 |
|
||||
| Test.kt:86:4:88:2 | After catch (...) [match] | 5 | Test.kt:87:3:87:10 | return ... |
|
||||
| Test.kt:86:4:88:2 | After catch (...) [no-match] | 0 | Test.kt:86:4:88:2 | After catch (...) [no-match] |
|
||||
| Test.kt:86:4:88:2 | After catch (...) [no-match] | 1 | Test.kt:82:1:89:1 | Exceptional Exit |
|
||||
| Test.kt:86:4:88:2 | catch (...) | 0 | Test.kt:86:4:88:2 | catch (...) |
|
||||
| Test.kt:86:4:88:2 | catch (...) | 1 | Test.kt:86:11:86:31 | e |
|
||||
| Test.kt:86:4:88:2 | catch (...) | 2 | Test.kt:86:34:88:2 | { ... } |
|
||||
| Test.kt:86:4:88:2 | catch (...) | 3 | Test.kt:87:10:87:10 | 2 |
|
||||
| Test.kt:86:4:88:2 | catch (...) | 4 | Test.kt:87:3:87:10 | return ... |
|
||||
| Test.kt:91:1:98:1 | Exceptional Exit | 0 | Test.kt:91:1:98:1 | Exceptional Exit |
|
||||
| Test.kt:91:1:98:1 | Entry | 0 | Test.kt:91:1:98:1 | Entry |
|
||||
| Test.kt:91:1:98:1 | Entry | 1 | Test.kt:91:22:98:1 | { ... } |
|
||||
| Test.kt:91:1:98:1 | Entry | 2 | Test.kt:92:2:97:2 | try ... |
|
||||
| Test.kt:91:1:98:1 | Entry | 3 | Test.kt:92:6:95:2 | { ... } |
|
||||
| Test.kt:91:1:98:1 | Entry | 4 | Test.kt:93:7:93:7 | var ...; |
|
||||
| Test.kt:91:1:98:1 | Entry | 5 | Test.kt:93:7:93:7 | Before x |
|
||||
| Test.kt:91:1:98:1 | Entry | 6 | Test.kt:93:12:93:13 | Before ...!! |
|
||||
| Test.kt:91:1:98:1 | Entry | 7 | Test.kt:93:11:93:11 | o |
|
||||
| Test.kt:91:1:98:1 | Entry | 8 | Test.kt:93:12:93:13 | ...!! |
|
||||
| Test.kt:91:1:98:1 | Exit | 0 | Test.kt:91:1:98:1 | Exit |
|
||||
| Test.kt:91:1:98:1 | Normal Exit | 0 | Test.kt:91:1:98:1 | Normal Exit |
|
||||
| Test.kt:91:22:98:1 | { ... } | 0 | Test.kt:91:22:98:1 | { ... } |
|
||||
| Test.kt:91:22:98:1 | { ... } | 1 | Test.kt:92:2:97:2 | try ... |
|
||||
| Test.kt:91:22:98:1 | { ... } | 2 | Test.kt:92:6:95:2 | { ... } |
|
||||
| Test.kt:91:22:98:1 | { ... } | 3 | Test.kt:93:7:93:7 | var ...; |
|
||||
| Test.kt:91:22:98:1 | { ... } | 4 | Test.kt:93:11:93:11 | o |
|
||||
| Test.kt:91:22:98:1 | { ... } | 5 | Test.kt:93:12:93:13 | ...!! |
|
||||
| Test.kt:93:7:93:7 | x | 0 | Test.kt:93:7:93:7 | x |
|
||||
| Test.kt:93:7:93:7 | x | 1 | Test.kt:94:10:94:10 | 1 |
|
||||
| Test.kt:93:7:93:7 | x | 2 | Test.kt:94:3:94:10 | return ... |
|
||||
| Test.kt:93:12:93:13 | After ...!! | 0 | Test.kt:93:12:93:13 | After ...!! |
|
||||
| Test.kt:93:12:93:13 | After ...!! | 1 | Test.kt:93:7:93:7 | x |
|
||||
| Test.kt:93:12:93:13 | After ...!! | 2 | Test.kt:93:7:93:7 | After x |
|
||||
| Test.kt:93:12:93:13 | After ...!! | 3 | Test.kt:93:7:93:7 | After var ...; |
|
||||
| Test.kt:93:12:93:13 | After ...!! | 4 | Test.kt:94:3:94:10 | Before return ... |
|
||||
| Test.kt:93:12:93:13 | After ...!! | 5 | Test.kt:94:10:94:10 | 1 |
|
||||
| Test.kt:93:12:93:13 | After ...!! | 6 | Test.kt:94:3:94:10 | return ... |
|
||||
| Test.kt:95:4:97:2 | After catch (...) [match] | 0 | Test.kt:95:4:97:2 | After catch (...) [match] |
|
||||
| Test.kt:95:4:97:2 | After catch (...) [match] | 1 | Test.kt:95:11:95:33 | e |
|
||||
| Test.kt:95:4:97:2 | After catch (...) [match] | 2 | Test.kt:95:36:97:2 | { ... } |
|
||||
| Test.kt:95:4:97:2 | After catch (...) [match] | 3 | Test.kt:96:3:96:10 | Before return ... |
|
||||
| Test.kt:95:4:97:2 | After catch (...) [match] | 4 | Test.kt:96:10:96:10 | 2 |
|
||||
| Test.kt:95:4:97:2 | After catch (...) [match] | 5 | Test.kt:96:3:96:10 | return ... |
|
||||
| Test.kt:95:4:97:2 | After catch (...) [no-match] | 0 | Test.kt:95:4:97:2 | After catch (...) [no-match] |
|
||||
| Test.kt:95:4:97:2 | After catch (...) [no-match] | 1 | Test.kt:91:1:98:1 | Exceptional Exit |
|
||||
| Test.kt:95:4:97:2 | catch (...) | 0 | Test.kt:95:4:97:2 | catch (...) |
|
||||
| Test.kt:95:4:97:2 | catch (...) | 1 | Test.kt:95:11:95:33 | e |
|
||||
| Test.kt:95:4:97:2 | catch (...) | 2 | Test.kt:95:36:97:2 | { ... } |
|
||||
| Test.kt:95:4:97:2 | catch (...) | 3 | Test.kt:96:10:96:10 | 2 |
|
||||
| Test.kt:95:4:97:2 | catch (...) | 4 | Test.kt:96:3:96:10 | return ... |
|
||||
| Test.kt:100:1:110:1 | Entry | 0 | Test.kt:100:1:110:1 | Entry |
|
||||
| Test.kt:100:1:110:1 | Entry | 1 | Test.kt:100:25:110:1 | { ... } |
|
||||
| Test.kt:100:1:110:1 | Entry | 2 | Test.kt:101:5:103:5 | <Expr>; |
|
||||
| Test.kt:100:1:110:1 | Entry | 3 | Test.kt:101:5:103:5 | when ... |
|
||||
| Test.kt:100:1:110:1 | Entry | 4 | Test.kt:101:5:103:5 | ... -> ... |
|
||||
| Test.kt:100:1:110:1 | Entry | 5 | Test.kt:101:9:101:30 | ... && ... |
|
||||
| Test.kt:100:1:110:1 | Entry | 6 | Test.kt:101:9:101:17 | Before ... (value equals) ... |
|
||||
| Test.kt:100:1:110:1 | Entry | 7 | Test.kt:101:9:101:9 | x |
|
||||
| Test.kt:100:1:110:1 | Entry | 8 | Test.kt:101:14:101:17 | null |
|
||||
| Test.kt:100:1:110:1 | Entry | 9 | Test.kt:101:9:101:17 | ... (value equals) ... |
|
||||
| Test.kt:100:1:110:1 | Exit | 0 | Test.kt:100:1:110:1 | Exit |
|
||||
| Test.kt:100:1:110:1 | Normal Exit | 0 | Test.kt:100:1:110:1 | Normal Exit |
|
||||
| Test.kt:100:25:110:1 | { ... } | 0 | Test.kt:100:25:110:1 | { ... } |
|
||||
| Test.kt:100:25:110:1 | { ... } | 1 | Test.kt:101:5:103:5 | <Expr>; |
|
||||
| Test.kt:100:25:110:1 | { ... } | 2 | Test.kt:101:5:103:5 | when ... |
|
||||
| Test.kt:100:25:110:1 | { ... } | 3 | Test.kt:101:5:103:5 | ... -> ... |
|
||||
| Test.kt:100:25:110:1 | { ... } | 4 | Test.kt:101:9:101:30 | ... && ... |
|
||||
| Test.kt:100:25:110:1 | { ... } | 5 | Test.kt:101:9:101:9 | x |
|
||||
| Test.kt:100:25:110:1 | { ... } | 6 | Test.kt:101:14:101:17 | null |
|
||||
| Test.kt:100:25:110:1 | { ... } | 7 | Test.kt:101:9:101:17 | ... (value equals) ... |
|
||||
| Test.kt:101:22:101:22 | y | 0 | Test.kt:101:22:101:22 | y |
|
||||
| Test.kt:101:22:101:22 | y | 1 | Test.kt:101:27:101:30 | null |
|
||||
| Test.kt:101:22:101:22 | y | 2 | Test.kt:101:22:101:30 | ... (value equals) ... |
|
||||
| Test.kt:101:33:103:5 | { ... } | 0 | Test.kt:101:33:103:5 | { ... } |
|
||||
| Test.kt:101:33:103:5 | { ... } | 1 | Test.kt:102:15:102:25 | new Exception(...) |
|
||||
| Test.kt:101:33:103:5 | { ... } | 2 | Test.kt:102:9:102:25 | throw ... |
|
||||
| Test.kt:101:33:103:5 | { ... } | 3 | Test.kt:100:1:110:1 | Exceptional Exit |
|
||||
| Test.kt:105:5:109:5 | <Expr>; | 0 | Test.kt:105:5:109:5 | <Expr>; |
|
||||
| Test.kt:105:5:109:5 | <Expr>; | 1 | Test.kt:105:5:109:5 | when ... |
|
||||
| Test.kt:105:5:109:5 | <Expr>; | 2 | Test.kt:105:9:107:5 | ... -> ... |
|
||||
| Test.kt:105:5:109:5 | <Expr>; | 3 | Test.kt:105:9:105:9 | x |
|
||||
| Test.kt:105:5:109:5 | <Expr>; | 4 | Test.kt:105:14:105:17 | null |
|
||||
| Test.kt:105:5:109:5 | <Expr>; | 5 | Test.kt:105:9:105:17 | ... (value not-equals) ... |
|
||||
| Test.kt:105:20:107:5 | { ... } | 0 | Test.kt:105:20:107:5 | { ... } |
|
||||
| Test.kt:105:20:107:5 | { ... } | 1 | Test.kt:106:9:106:29 | <Expr>; |
|
||||
| Test.kt:105:20:107:5 | { ... } | 2 | Test.kt:106:17:106:28 | "x not null" |
|
||||
| Test.kt:105:20:107:5 | { ... } | 3 | Test.kt:106:9:106:29 | println(...) |
|
||||
| Test.kt:107:16:109:5 | ... -> ... | 0 | Test.kt:107:16:109:5 | ... -> ... |
|
||||
| Test.kt:107:16:109:5 | ... -> ... | 1 | Test.kt:107:16:107:16 | y |
|
||||
| Test.kt:107:16:109:5 | ... -> ... | 2 | Test.kt:107:21:107:24 | null |
|
||||
| Test.kt:107:16:109:5 | ... -> ... | 3 | Test.kt:107:16:107:24 | ... (value not-equals) ... |
|
||||
| Test.kt:107:27:109:5 | { ... } | 0 | Test.kt:107:27:109:5 | { ... } |
|
||||
| Test.kt:107:27:109:5 | { ... } | 1 | Test.kt:108:9:108:29 | <Expr>; |
|
||||
| Test.kt:107:27:109:5 | { ... } | 2 | Test.kt:108:17:108:28 | "y not null" |
|
||||
| Test.kt:107:27:109:5 | { ... } | 3 | Test.kt:108:9:108:29 | println(...) |
|
||||
| Test.kt:112:1:116:1 | Exceptional Exit | 0 | Test.kt:112:1:116:1 | Exceptional Exit |
|
||||
| Test.kt:112:1:116:1 | Exit | 0 | Test.kt:112:1:116:1 | Exit |
|
||||
| Test.kt:112:1:116:1 | Normal Exit | 0 | Test.kt:112:1:116:1 | Normal Exit |
|
||||
| Test.kt:112:32:116:1 | { ... } | 0 | Test.kt:112:32:116:1 | { ... } |
|
||||
| Test.kt:112:32:116:1 | { ... } | 1 | Test.kt:113:5:115:5 | <Expr>; |
|
||||
| Test.kt:112:32:116:1 | { ... } | 2 | Test.kt:113:5:115:5 | when ... |
|
||||
| Test.kt:112:32:116:1 | { ... } | 3 | Test.kt:113:5:115:5 | ... -> ... |
|
||||
| Test.kt:112:32:116:1 | { ... } | 4 | Test.kt:113:9:113:14 | ... && ... |
|
||||
| Test.kt:112:32:116:1 | { ... } | 5 | Test.kt:113:9:113:9 | x |
|
||||
| Test.kt:113:14:113:14 | y | 0 | Test.kt:113:14:113:14 | y |
|
||||
| Test.kt:113:17:115:5 | { ... } | 0 | Test.kt:113:17:115:5 | { ... } |
|
||||
| Test.kt:118:1:124:1 | Exceptional Exit | 0 | Test.kt:118:1:124:1 | Exceptional Exit |
|
||||
| Test.kt:118:1:124:1 | Exit | 0 | Test.kt:118:1:124:1 | Exit |
|
||||
| Test.kt:118:1:124:1 | Normal Exit | 0 | Test.kt:118:1:124:1 | Normal Exit |
|
||||
| Test.kt:118:37:124:1 | { ... } | 0 | Test.kt:118:37:124:1 | { ... } |
|
||||
| Test.kt:118:37:124:1 | { ... } | 1 | Test.kt:119:2:123:12 | <Expr>; |
|
||||
| Test.kt:118:37:124:1 | { ... } | 2 | Test.kt:119:2:123:12 | when ... |
|
||||
| Test.kt:118:37:124:1 | { ... } | 3 | Test.kt:120:3:123:10 | ... -> ... |
|
||||
| Test.kt:118:37:124:1 | { ... } | 4 | Test.kt:120:3:123:3 | when ... |
|
||||
| Test.kt:118:37:124:1 | { ... } | 5 | Test.kt:121:4:121:9 | ... -> ... |
|
||||
| Test.kt:118:37:124:1 | { ... } | 6 | Test.kt:121:4:121:4 | x |
|
||||
| Test.kt:121:9:121:9 | <Expr>; | 0 | Test.kt:121:9:121:9 | <Expr>; |
|
||||
| Test.kt:121:9:121:9 | <Expr>; | 1 | Test.kt:121:9:121:9 | y |
|
||||
| Test.kt:122:12:122:16 | ... -> ... | 0 | Test.kt:122:12:122:16 | ... -> ... |
|
||||
| Test.kt:122:12:122:16 | ... -> ... | 1 | Test.kt:122:12:122:16 | true |
|
||||
| Test.kt:122:12:122:16 | ... -> ... | 2 | Test.kt:122:12:122:16 | <Expr>; |
|
||||
| Test.kt:122:12:122:16 | ... -> ... | 3 | Test.kt:122:12:122:16 | false |
|
||||
| Test.kt:123:8:123:10 | { ... } | 0 | Test.kt:123:8:123:10 | { ... } |
|
||||
| Test.kt:101:9:101:17 | After ... (value equals) ... [false] | 0 | Test.kt:101:9:101:17 | After ... (value equals) ... [false] |
|
||||
| Test.kt:101:9:101:17 | After ... (value equals) ... [true] | 0 | Test.kt:101:9:101:17 | After ... (value equals) ... [true] |
|
||||
| Test.kt:101:9:101:17 | After ... (value equals) ... [true] | 1 | Test.kt:101:22:101:30 | Before ... (value equals) ... |
|
||||
| Test.kt:101:9:101:17 | After ... (value equals) ... [true] | 2 | Test.kt:101:22:101:22 | y |
|
||||
| Test.kt:101:9:101:17 | After ... (value equals) ... [true] | 3 | Test.kt:101:27:101:30 | null |
|
||||
| Test.kt:101:9:101:17 | After ... (value equals) ... [true] | 4 | Test.kt:101:22:101:30 | ... (value equals) ... |
|
||||
| Test.kt:101:9:101:30 | After ... && ... [false] | 0 | Test.kt:101:9:101:30 | After ... && ... [false] |
|
||||
| Test.kt:101:9:101:30 | After ... && ... [false] | 1 | Test.kt:101:5:103:5 | After when ... |
|
||||
| Test.kt:101:9:101:30 | After ... && ... [false] | 2 | Test.kt:101:5:103:5 | After <Expr>; |
|
||||
| Test.kt:101:9:101:30 | After ... && ... [false] | 3 | Test.kt:105:5:109:5 | <Expr>; |
|
||||
| Test.kt:101:9:101:30 | After ... && ... [false] | 4 | Test.kt:105:5:109:5 | when ... |
|
||||
| Test.kt:101:9:101:30 | After ... && ... [false] | 5 | Test.kt:105:9:107:5 | ... -> ... |
|
||||
| Test.kt:101:9:101:30 | After ... && ... [false] | 6 | Test.kt:105:9:105:17 | Before ... (value not-equals) ... |
|
||||
| Test.kt:101:9:101:30 | After ... && ... [false] | 7 | Test.kt:105:9:105:9 | x |
|
||||
| Test.kt:101:9:101:30 | After ... && ... [false] | 8 | Test.kt:105:14:105:17 | null |
|
||||
| Test.kt:101:9:101:30 | After ... && ... [false] | 9 | Test.kt:105:9:105:17 | ... (value not-equals) ... |
|
||||
| Test.kt:101:22:101:30 | After ... (value equals) ... [false] | 0 | Test.kt:101:22:101:30 | After ... (value equals) ... [false] |
|
||||
| Test.kt:101:22:101:30 | After ... (value equals) ... [true] | 0 | Test.kt:101:22:101:30 | After ... (value equals) ... [true] |
|
||||
| Test.kt:101:22:101:30 | After ... (value equals) ... [true] | 1 | Test.kt:101:9:101:30 | After ... && ... [true] |
|
||||
| Test.kt:101:22:101:30 | After ... (value equals) ... [true] | 2 | Test.kt:101:33:103:5 | { ... } |
|
||||
| Test.kt:101:22:101:30 | After ... (value equals) ... [true] | 3 | Test.kt:102:9:102:25 | Before throw ... |
|
||||
| Test.kt:101:22:101:30 | After ... (value equals) ... [true] | 4 | Test.kt:102:15:102:25 | Before new Exception(...) |
|
||||
| Test.kt:101:22:101:30 | After ... (value equals) ... [true] | 5 | Test.kt:102:15:102:25 | new Exception(...) |
|
||||
| Test.kt:101:22:101:30 | After ... (value equals) ... [true] | 6 | Test.kt:102:15:102:25 | After new Exception(...) |
|
||||
| Test.kt:101:22:101:30 | After ... (value equals) ... [true] | 7 | Test.kt:102:9:102:25 | throw ... |
|
||||
| Test.kt:101:22:101:30 | After ... (value equals) ... [true] | 8 | Test.kt:100:1:110:1 | Exceptional Exit |
|
||||
| Test.kt:105:5:109:5 | After when ... | 0 | Test.kt:105:5:109:5 | After when ... |
|
||||
| Test.kt:105:5:109:5 | After when ... | 1 | Test.kt:105:5:109:5 | After <Expr>; |
|
||||
| Test.kt:105:5:109:5 | After when ... | 2 | Test.kt:100:25:110:1 | After { ... } |
|
||||
| Test.kt:105:5:109:5 | After when ... | 3 | Test.kt:100:1:110:1 | Normal Exit |
|
||||
| Test.kt:105:9:105:17 | After ... (value not-equals) ... [false] | 0 | Test.kt:105:9:105:17 | After ... (value not-equals) ... [false] |
|
||||
| Test.kt:105:9:105:17 | After ... (value not-equals) ... [false] | 1 | Test.kt:107:16:109:5 | ... -> ... |
|
||||
| Test.kt:105:9:105:17 | After ... (value not-equals) ... [false] | 2 | Test.kt:107:16:107:24 | Before ... (value not-equals) ... |
|
||||
| Test.kt:105:9:105:17 | After ... (value not-equals) ... [false] | 3 | Test.kt:107:16:107:16 | y |
|
||||
| Test.kt:105:9:105:17 | After ... (value not-equals) ... [false] | 4 | Test.kt:107:21:107:24 | null |
|
||||
| Test.kt:105:9:105:17 | After ... (value not-equals) ... [false] | 5 | Test.kt:107:16:107:24 | ... (value not-equals) ... |
|
||||
| Test.kt:105:9:105:17 | After ... (value not-equals) ... [true] | 0 | Test.kt:105:9:105:17 | After ... (value not-equals) ... [true] |
|
||||
| Test.kt:105:9:105:17 | After ... (value not-equals) ... [true] | 1 | Test.kt:105:20:107:5 | { ... } |
|
||||
| Test.kt:105:9:105:17 | After ... (value not-equals) ... [true] | 2 | Test.kt:106:9:106:29 | <Expr>; |
|
||||
| Test.kt:105:9:105:17 | After ... (value not-equals) ... [true] | 3 | Test.kt:106:9:106:29 | Before println(...) |
|
||||
| Test.kt:105:9:105:17 | After ... (value not-equals) ... [true] | 4 | Test.kt:106:17:106:28 | "x not null" |
|
||||
| Test.kt:105:9:105:17 | After ... (value not-equals) ... [true] | 5 | Test.kt:106:9:106:29 | println(...) |
|
||||
| Test.kt:105:9:105:17 | After ... (value not-equals) ... [true] | 6 | Test.kt:106:9:106:29 | After println(...) |
|
||||
| Test.kt:105:9:105:17 | After ... (value not-equals) ... [true] | 7 | Test.kt:106:9:106:29 | After <Expr>; |
|
||||
| Test.kt:105:9:105:17 | After ... (value not-equals) ... [true] | 8 | Test.kt:105:20:107:5 | After { ... } |
|
||||
| Test.kt:107:16:107:24 | After ... (value not-equals) ... [false] | 0 | Test.kt:107:16:107:24 | After ... (value not-equals) ... [false] |
|
||||
| Test.kt:107:16:107:24 | After ... (value not-equals) ... [true] | 0 | Test.kt:107:16:107:24 | After ... (value not-equals) ... [true] |
|
||||
| Test.kt:107:16:107:24 | After ... (value not-equals) ... [true] | 1 | Test.kt:107:27:109:5 | { ... } |
|
||||
| Test.kt:107:16:107:24 | After ... (value not-equals) ... [true] | 2 | Test.kt:108:9:108:29 | <Expr>; |
|
||||
| Test.kt:107:16:107:24 | After ... (value not-equals) ... [true] | 3 | Test.kt:108:9:108:29 | Before println(...) |
|
||||
| Test.kt:107:16:107:24 | After ... (value not-equals) ... [true] | 4 | Test.kt:108:17:108:28 | "y not null" |
|
||||
| Test.kt:107:16:107:24 | After ... (value not-equals) ... [true] | 5 | Test.kt:108:9:108:29 | println(...) |
|
||||
| Test.kt:107:16:107:24 | After ... (value not-equals) ... [true] | 6 | Test.kt:108:9:108:29 | After println(...) |
|
||||
| Test.kt:107:16:107:24 | After ... (value not-equals) ... [true] | 7 | Test.kt:108:9:108:29 | After <Expr>; |
|
||||
| Test.kt:107:16:107:24 | After ... (value not-equals) ... [true] | 8 | Test.kt:107:27:109:5 | After { ... } |
|
||||
| Test.kt:112:1:116:1 | Entry | 0 | Test.kt:112:1:116:1 | Entry |
|
||||
| Test.kt:112:1:116:1 | Entry | 1 | Test.kt:112:32:116:1 | { ... } |
|
||||
| Test.kt:112:1:116:1 | Entry | 2 | Test.kt:113:5:115:5 | <Expr>; |
|
||||
| Test.kt:112:1:116:1 | Entry | 3 | Test.kt:113:5:115:5 | when ... |
|
||||
| Test.kt:112:1:116:1 | Entry | 4 | Test.kt:113:5:115:5 | ... -> ... |
|
||||
| Test.kt:112:1:116:1 | Entry | 5 | Test.kt:113:9:113:14 | ... && ... |
|
||||
| Test.kt:112:1:116:1 | Entry | 6 | Test.kt:113:9:113:9 | x |
|
||||
| Test.kt:113:5:115:5 | After when ... | 0 | Test.kt:113:5:115:5 | After when ... |
|
||||
| Test.kt:113:5:115:5 | After when ... | 1 | Test.kt:113:5:115:5 | After <Expr>; |
|
||||
| Test.kt:113:5:115:5 | After when ... | 2 | Test.kt:112:32:116:1 | After { ... } |
|
||||
| Test.kt:113:5:115:5 | After when ... | 3 | Test.kt:112:1:116:1 | Normal Exit |
|
||||
| Test.kt:113:5:115:5 | After when ... | 4 | Test.kt:112:1:116:1 | Exit |
|
||||
| Test.kt:113:9:113:9 | After x [false] | 0 | Test.kt:113:9:113:9 | After x [false] |
|
||||
| Test.kt:113:9:113:9 | After x [true] | 0 | Test.kt:113:9:113:9 | After x [true] |
|
||||
| Test.kt:113:9:113:9 | After x [true] | 1 | Test.kt:113:14:113:14 | y |
|
||||
| Test.kt:113:9:113:14 | After ... && ... [false] | 0 | Test.kt:113:9:113:14 | After ... && ... [false] |
|
||||
| Test.kt:113:14:113:14 | After y [false] | 0 | Test.kt:113:14:113:14 | After y [false] |
|
||||
| Test.kt:113:14:113:14 | After y [true] | 0 | Test.kt:113:14:113:14 | After y [true] |
|
||||
| Test.kt:113:14:113:14 | After y [true] | 1 | Test.kt:113:9:113:14 | After ... && ... [true] |
|
||||
| Test.kt:113:14:113:14 | After y [true] | 2 | Test.kt:113:17:115:5 | { ... } |
|
||||
| Test.kt:118:1:124:1 | Entry | 0 | Test.kt:118:1:124:1 | Entry |
|
||||
| Test.kt:118:1:124:1 | Entry | 1 | Test.kt:118:37:124:1 | { ... } |
|
||||
| Test.kt:118:1:124:1 | Entry | 2 | Test.kt:119:2:123:12 | <Expr>; |
|
||||
| Test.kt:118:1:124:1 | Entry | 3 | Test.kt:119:2:123:12 | when ... |
|
||||
| Test.kt:118:1:124:1 | Entry | 4 | Test.kt:120:3:123:10 | ... -> ... |
|
||||
| Test.kt:118:1:124:1 | Entry | 5 | Test.kt:120:3:123:3 | when ... |
|
||||
| Test.kt:118:1:124:1 | Entry | 6 | Test.kt:121:4:121:9 | ... -> ... |
|
||||
| Test.kt:118:1:124:1 | Entry | 7 | Test.kt:121:4:121:4 | x |
|
||||
| Test.kt:119:2:123:12 | After when ... | 0 | Test.kt:119:2:123:12 | After when ... |
|
||||
| Test.kt:119:2:123:12 | After when ... | 1 | Test.kt:119:2:123:12 | After <Expr>; |
|
||||
| Test.kt:119:2:123:12 | After when ... | 2 | Test.kt:118:37:124:1 | After { ... } |
|
||||
| Test.kt:119:2:123:12 | After when ... | 3 | Test.kt:118:1:124:1 | Normal Exit |
|
||||
| Test.kt:119:2:123:12 | After when ... | 4 | Test.kt:118:1:124:1 | Exit |
|
||||
| Test.kt:120:3:123:3 | After when ... [false] | 0 | Test.kt:120:3:123:3 | After when ... [false] |
|
||||
| Test.kt:120:3:123:3 | After when ... [true] | 0 | Test.kt:120:3:123:3 | After when ... [true] |
|
||||
| Test.kt:120:3:123:3 | After when ... [true] | 1 | Test.kt:123:8:123:10 | { ... } |
|
||||
| Test.kt:121:4:121:4 | After x [false] | 0 | Test.kt:121:4:121:4 | After x [false] |
|
||||
| Test.kt:121:4:121:4 | After x [false] | 1 | Test.kt:122:12:122:16 | ... -> ... |
|
||||
| Test.kt:121:4:121:4 | After x [false] | 2 | Test.kt:122:12:122:16 | true |
|
||||
| Test.kt:121:4:121:4 | After x [false] | 3 | Test.kt:122:12:122:16 | After true [true] |
|
||||
| Test.kt:121:4:121:4 | After x [false] | 4 | Test.kt:122:12:122:16 | <Expr>; |
|
||||
| Test.kt:121:4:121:4 | After x [false] | 5 | Test.kt:122:12:122:16 | false |
|
||||
| Test.kt:121:4:121:4 | After x [false] | 6 | Test.kt:122:12:122:16 | After <Expr>; |
|
||||
| Test.kt:121:4:121:4 | After x [true] | 0 | Test.kt:121:4:121:4 | After x [true] |
|
||||
| Test.kt:121:4:121:4 | After x [true] | 1 | Test.kt:121:9:121:9 | <Expr>; |
|
||||
| Test.kt:121:4:121:4 | After x [true] | 2 | Test.kt:121:9:121:9 | y |
|
||||
| Test.kt:121:4:121:4 | After x [true] | 3 | Test.kt:121:9:121:9 | After <Expr>; |
|
||||
|
||||
@@ -1,6 +1,3 @@
|
||||
| Test.kt:3:8:80:1 | { ... } | Test.kt:3:8:80:1 | Exit |
|
||||
| Test.kt:4:2:79:2 | Normal Exit | Test.kt:4:2:79:2 | Exit |
|
||||
| Test.kt:4:13:79:2 | { ... } | Test.kt:4:2:79:2 | Exit |
|
||||
| Test.kt:4:13:79:2 | { ... } | Test.kt:4:2:79:2 | Normal Exit |
|
||||
| Test.kt:4:13:79:2 | { ... } | Test.kt:11:3:16:3 | ... -> ... |
|
||||
| Test.kt:4:13:79:2 | { ... } | Test.kt:11:14:14:3 | { ... } |
|
||||
@@ -12,7 +9,6 @@
|
||||
| Test.kt:4:13:79:2 | { ... } | Test.kt:38:9:38:9 | x |
|
||||
| Test.kt:4:13:79:2 | { ... } | Test.kt:38:16:41:3 | { ... } |
|
||||
| Test.kt:4:13:79:2 | { ... } | Test.kt:43:3:43:3 | <Expr>; |
|
||||
| Test.kt:18:3:18:3 | <Expr>; | Test.kt:4:2:79:2 | Exit |
|
||||
| Test.kt:18:3:18:3 | <Expr>; | Test.kt:4:2:79:2 | Normal Exit |
|
||||
| Test.kt:18:3:18:3 | <Expr>; | Test.kt:21:3:24:9 | ... -> ... |
|
||||
| Test.kt:18:3:18:3 | <Expr>; | Test.kt:22:4:22:4 | <Expr>; |
|
||||
@@ -31,16 +27,22 @@
|
||||
| Test.kt:35:3:35:3 | <Expr>; | Test.kt:43:3:43:3 | <Expr>; |
|
||||
| Test.kt:38:9:38:9 | x | Test.kt:38:16:41:3 | { ... } |
|
||||
| Test.kt:38:9:38:9 | x | Test.kt:43:3:43:3 | <Expr>; |
|
||||
| Test.kt:82:1:89:1 | Normal Exit | Test.kt:82:1:89:1 | Exit |
|
||||
| Test.kt:82:21:89:1 | { ... } | Test.kt:82:1:89:1 | Exceptional Exit |
|
||||
| Test.kt:82:21:89:1 | { ... } | Test.kt:82:1:89:1 | Exit |
|
||||
| Test.kt:82:21:89:1 | { ... } | Test.kt:82:1:89:1 | Normal Exit |
|
||||
| Test.kt:82:21:89:1 | { ... } | Test.kt:84:7:84:7 | x |
|
||||
| Test.kt:82:21:89:1 | { ... } | Test.kt:86:4:88:2 | catch (...) |
|
||||
| Test.kt:91:1:98:1 | Normal Exit | Test.kt:91:1:98:1 | Exit |
|
||||
| Test.kt:82:21:89:1 | { ... } | Test.kt:86:11:86:31 | e |
|
||||
| Test.kt:86:4:88:2 | catch (...) | Test.kt:82:1:89:1 | Exceptional Exit |
|
||||
| Test.kt:86:4:88:2 | catch (...) | Test.kt:86:11:86:31 | e |
|
||||
| Test.kt:91:22:98:1 | { ... } | Test.kt:91:1:98:1 | Exceptional Exit |
|
||||
| Test.kt:91:22:98:1 | { ... } | Test.kt:91:1:98:1 | Exit |
|
||||
| Test.kt:91:22:98:1 | { ... } | Test.kt:91:1:98:1 | Normal Exit |
|
||||
| Test.kt:91:22:98:1 | { ... } | Test.kt:93:7:93:7 | x |
|
||||
| Test.kt:91:22:98:1 | { ... } | Test.kt:95:4:97:2 | catch (...) |
|
||||
| Test.kt:91:22:98:1 | { ... } | Test.kt:95:11:95:33 | e |
|
||||
| Test.kt:95:4:97:2 | catch (...) | Test.kt:91:1:98:1 | Exceptional Exit |
|
||||
| Test.kt:95:4:97:2 | catch (...) | Test.kt:95:11:95:33 | e |
|
||||
| Test.kt:100:25:110:1 | { ... } | Test.kt:100:1:110:1 | Exit |
|
||||
| Test.kt:100:25:110:1 | { ... } | Test.kt:100:1:110:1 | Normal Exit |
|
||||
| Test.kt:100:25:110:1 | { ... } | Test.kt:101:22:101:22 | y |
|
||||
@@ -55,16 +57,11 @@
|
||||
| Test.kt:105:5:109:5 | <Expr>; | Test.kt:107:16:109:5 | ... -> ... |
|
||||
| Test.kt:105:5:109:5 | <Expr>; | Test.kt:107:27:109:5 | { ... } |
|
||||
| Test.kt:107:16:109:5 | ... -> ... | Test.kt:107:27:109:5 | { ... } |
|
||||
| Test.kt:112:1:116:1 | Normal Exit | Test.kt:112:1:116:1 | Exit |
|
||||
| Test.kt:112:32:116:1 | { ... } | Test.kt:112:1:116:1 | Exit |
|
||||
| Test.kt:112:32:116:1 | { ... } | Test.kt:112:1:116:1 | Normal Exit |
|
||||
| Test.kt:112:32:116:1 | { ... } | Test.kt:113:14:113:14 | y |
|
||||
| Test.kt:112:32:116:1 | { ... } | Test.kt:113:17:115:5 | { ... } |
|
||||
| Test.kt:113:14:113:14 | y | Test.kt:113:17:115:5 | { ... } |
|
||||
| Test.kt:118:1:124:1 | Normal Exit | Test.kt:118:1:124:1 | Exit |
|
||||
| Test.kt:118:37:124:1 | { ... } | Test.kt:118:1:124:1 | Exit |
|
||||
| Test.kt:118:37:124:1 | { ... } | Test.kt:118:1:124:1 | Normal Exit |
|
||||
| Test.kt:118:37:124:1 | { ... } | Test.kt:121:9:121:9 | <Expr>; |
|
||||
| Test.kt:118:37:124:1 | { ... } | Test.kt:122:12:122:16 | ... -> ... |
|
||||
| Test.kt:118:37:124:1 | { ... } | Test.kt:123:8:123:10 | { ... } |
|
||||
| Test.kt:121:9:121:9 | <Expr>; | Test.kt:123:8:123:10 | { ... } |
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
import java
|
||||
import semmle.code.java.controlflow.Dominance
|
||||
import utils.test.BasicBlock
|
||||
|
||||
from BasicBlock b, BasicBlock b2
|
||||
where b.strictlyDominates(b2)
|
||||
select b, b2
|
||||
select getFirstAstNode(b), getFirstAstNode(b2)
|
||||
|
||||
@@ -1,7 +1,3 @@
|
||||
| Test.kt:3:8:80:1 | Exceptional Exit | Test.kt:3:8:80:1 | Exit |
|
||||
| Test.kt:3:8:80:1 | { ... } | Test.kt:3:8:80:1 | Exit |
|
||||
| Test.kt:4:2:79:2 | Exceptional Exit | Test.kt:4:2:79:2 | Exit |
|
||||
| Test.kt:4:2:79:2 | Normal Exit | Test.kt:4:2:79:2 | Exit |
|
||||
| Test.kt:4:13:79:2 | { ... } | Test.kt:11:3:16:3 | ... -> ... |
|
||||
| Test.kt:4:13:79:2 | { ... } | Test.kt:11:14:14:3 | { ... } |
|
||||
| Test.kt:11:3:16:3 | ... -> ... | Test.kt:18:3:18:3 | <Expr>; |
|
||||
@@ -9,8 +5,9 @@
|
||||
| Test.kt:18:3:18:3 | <Expr>; | Test.kt:21:3:24:9 | ... -> ... |
|
||||
| Test.kt:18:3:18:3 | <Expr>; | Test.kt:22:4:22:4 | <Expr>; |
|
||||
| Test.kt:21:3:24:9 | ... -> ... | Test.kt:4:2:79:2 | Normal Exit |
|
||||
| Test.kt:22:4:22:4 | <Expr>; | Test.kt:30:7:30:12 | After ... (value equals) ... [false] |
|
||||
| Test.kt:22:4:22:4 | <Expr>; | Test.kt:30:15:33:3 | { ... } |
|
||||
| Test.kt:22:4:22:4 | <Expr>; | Test.kt:35:3:35:3 | <Expr>; |
|
||||
| Test.kt:30:7:30:12 | After ... (value equals) ... [false] | Test.kt:35:3:35:3 | <Expr>; |
|
||||
| Test.kt:30:15:33:3 | { ... } | Test.kt:35:3:35:3 | <Expr>; |
|
||||
| Test.kt:35:3:35:3 | <Expr>; | Test.kt:38:9:38:9 | x |
|
||||
| Test.kt:38:9:38:9 | x | Test.kt:38:16:41:3 | { ... } |
|
||||
@@ -22,37 +19,45 @@
|
||||
| Test.kt:82:21:89:1 | { ... } | Test.kt:84:7:84:7 | x |
|
||||
| Test.kt:82:21:89:1 | { ... } | Test.kt:86:4:88:2 | catch (...) |
|
||||
| Test.kt:84:7:84:7 | x | Test.kt:82:1:89:1 | Normal Exit |
|
||||
| Test.kt:86:4:88:2 | catch (...) | Test.kt:82:1:89:1 | Normal Exit |
|
||||
| Test.kt:86:4:88:2 | catch (...) | Test.kt:82:1:89:1 | Exceptional Exit |
|
||||
| Test.kt:86:4:88:2 | catch (...) | Test.kt:86:11:86:31 | e |
|
||||
| Test.kt:86:11:86:31 | e | Test.kt:82:1:89:1 | Normal Exit |
|
||||
| Test.kt:91:1:98:1 | Exceptional Exit | Test.kt:91:1:98:1 | Exit |
|
||||
| Test.kt:91:1:98:1 | Normal Exit | Test.kt:91:1:98:1 | Exit |
|
||||
| Test.kt:91:22:98:1 | { ... } | Test.kt:93:7:93:7 | x |
|
||||
| Test.kt:91:22:98:1 | { ... } | Test.kt:95:4:97:2 | catch (...) |
|
||||
| Test.kt:93:7:93:7 | x | Test.kt:91:1:98:1 | Normal Exit |
|
||||
| Test.kt:95:4:97:2 | catch (...) | Test.kt:91:1:98:1 | Normal Exit |
|
||||
| Test.kt:95:4:97:2 | catch (...) | Test.kt:91:1:98:1 | Exceptional Exit |
|
||||
| Test.kt:95:4:97:2 | catch (...) | Test.kt:95:11:95:33 | e |
|
||||
| Test.kt:95:11:95:33 | e | Test.kt:91:1:98:1 | Normal Exit |
|
||||
| Test.kt:100:1:110:1 | Normal Exit | Test.kt:100:1:110:1 | Exit |
|
||||
| Test.kt:100:25:110:1 | { ... } | Test.kt:101:9:101:17 | After ... (value equals) ... [false] |
|
||||
| Test.kt:100:25:110:1 | { ... } | Test.kt:101:22:101:22 | y |
|
||||
| Test.kt:100:25:110:1 | { ... } | Test.kt:105:5:109:5 | <Expr>; |
|
||||
| Test.kt:101:9:101:17 | After ... (value equals) ... [false] | Test.kt:105:5:109:5 | <Expr>; |
|
||||
| Test.kt:101:22:101:22 | y | Test.kt:101:22:101:30 | After ... (value equals) ... [false] |
|
||||
| Test.kt:101:22:101:22 | y | Test.kt:101:33:103:5 | { ... } |
|
||||
| Test.kt:101:22:101:22 | y | Test.kt:105:5:109:5 | <Expr>; |
|
||||
| Test.kt:101:22:101:30 | After ... (value equals) ... [false] | Test.kt:105:5:109:5 | <Expr>; |
|
||||
| Test.kt:101:33:103:5 | { ... } | Test.kt:100:1:110:1 | Exit |
|
||||
| Test.kt:105:5:109:5 | <Expr>; | Test.kt:105:20:107:5 | { ... } |
|
||||
| Test.kt:105:5:109:5 | <Expr>; | Test.kt:107:16:109:5 | ... -> ... |
|
||||
| Test.kt:105:20:107:5 | { ... } | Test.kt:100:1:110:1 | Normal Exit |
|
||||
| Test.kt:107:16:109:5 | ... -> ... | Test.kt:100:1:110:1 | Normal Exit |
|
||||
| Test.kt:107:16:107:24 | After ... (value not-equals) ... [false] | Test.kt:100:1:110:1 | Normal Exit |
|
||||
| Test.kt:107:16:109:5 | ... -> ... | Test.kt:107:16:107:24 | After ... (value not-equals) ... [false] |
|
||||
| Test.kt:107:16:109:5 | ... -> ... | Test.kt:107:27:109:5 | { ... } |
|
||||
| Test.kt:107:27:109:5 | { ... } | Test.kt:100:1:110:1 | Normal Exit |
|
||||
| Test.kt:112:1:116:1 | Exceptional Exit | Test.kt:112:1:116:1 | Exit |
|
||||
| Test.kt:112:1:116:1 | Normal Exit | Test.kt:112:1:116:1 | Exit |
|
||||
| Test.kt:112:32:116:1 | { ... } | Test.kt:112:1:116:1 | Normal Exit |
|
||||
| Test.kt:112:32:116:1 | { ... } | Test.kt:113:9:113:9 | After x [false] |
|
||||
| Test.kt:112:32:116:1 | { ... } | Test.kt:113:14:113:14 | y |
|
||||
| Test.kt:113:14:113:14 | y | Test.kt:112:1:116:1 | Normal Exit |
|
||||
| Test.kt:113:9:113:9 | After x [false] | Test.kt:113:9:113:14 | After ... && ... [false] |
|
||||
| Test.kt:113:9:113:14 | After ... && ... [false] | Test.kt:112:1:116:1 | Normal Exit |
|
||||
| Test.kt:113:14:113:14 | After y [false] | Test.kt:113:9:113:14 | After ... && ... [false] |
|
||||
| Test.kt:113:14:113:14 | y | Test.kt:113:14:113:14 | After y [false] |
|
||||
| Test.kt:113:14:113:14 | y | Test.kt:113:17:115:5 | { ... } |
|
||||
| Test.kt:113:17:115:5 | { ... } | Test.kt:112:1:116:1 | Normal Exit |
|
||||
| Test.kt:118:1:124:1 | Exceptional Exit | Test.kt:118:1:124:1 | Exit |
|
||||
| Test.kt:118:1:124:1 | Normal Exit | Test.kt:118:1:124:1 | Exit |
|
||||
| Test.kt:118:37:124:1 | { ... } | Test.kt:121:9:121:9 | <Expr>; |
|
||||
| Test.kt:118:37:124:1 | { ... } | Test.kt:122:12:122:16 | ... -> ... |
|
||||
| Test.kt:121:9:121:9 | <Expr>; | Test.kt:118:1:124:1 | Normal Exit |
|
||||
| Test.kt:120:3:123:3 | After when ... [false] | Test.kt:118:1:124:1 | Normal Exit |
|
||||
| Test.kt:121:9:121:9 | <Expr>; | Test.kt:120:3:123:3 | After when ... [false] |
|
||||
| Test.kt:121:9:121:9 | <Expr>; | Test.kt:123:8:123:10 | { ... } |
|
||||
| Test.kt:122:12:122:16 | ... -> ... | Test.kt:118:1:124:1 | Normal Exit |
|
||||
| Test.kt:122:12:122:16 | ... -> ... | Test.kt:120:3:123:3 | After when ... [false] |
|
||||
| Test.kt:122:12:122:16 | ... -> ... | Test.kt:123:8:123:10 | { ... } |
|
||||
| Test.kt:123:8:123:10 | { ... } | Test.kt:118:1:124:1 | Normal Exit |
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
import java
|
||||
import utils.test.BasicBlock
|
||||
|
||||
from BasicBlock b, BasicBlock b2
|
||||
where b.getASuccessor() = b2
|
||||
select b, b2
|
||||
select getFirstAstNodeOrSynth(b), getFirstAstNodeOrSynth(b2)
|
||||
|
||||
@@ -1,12 +1,10 @@
|
||||
#select
|
||||
| Test.kt:3:1:80:1 | super(...) | SuperConstructorInvocationStmt | Test.kt:3:8:80:1 | { ... } | BlockStmt |
|
||||
| Test.kt:3:8:80:1 | Exceptional Exit | Constructor | Test.kt:3:8:80:1 | Exit | Constructor |
|
||||
| Test.kt:3:8:80:1 | Exit | Constructor | file://:0:0:0:0 | <none> | <none> |
|
||||
| Test.kt:3:8:80:1 | Entry | Constructor | Test.kt:3:8:80:1 | { ... } | BlockStmt |
|
||||
| Test.kt:3:8:80:1 | Normal Exit | Constructor | Test.kt:3:8:80:1 | Exit | Constructor |
|
||||
| Test.kt:3:8:80:1 | { ... } | BlockStmt | Test.kt:3:1:80:1 | super(...) | SuperConstructorInvocationStmt |
|
||||
| Test.kt:3:8:80:1 | { ... } | BlockStmt | Test.kt:3:8:80:1 | Normal Exit | Constructor |
|
||||
| Test.kt:4:2:79:2 | Exceptional Exit | Method | Test.kt:4:2:79:2 | Exit | Method |
|
||||
| Test.kt:4:2:79:2 | Exit | Method | file://:0:0:0:0 | <none> | <none> |
|
||||
| Test.kt:4:2:79:2 | Entry | Method | Test.kt:4:13:79:2 | { ... } | BlockStmt |
|
||||
| Test.kt:4:2:79:2 | Normal Exit | Method | Test.kt:4:2:79:2 | Exit | Method |
|
||||
| Test.kt:4:13:79:2 | { ... } | BlockStmt | Test.kt:5:7:5:7 | var ...; | LocalVariableDeclStmt |
|
||||
| Test.kt:5:7:5:7 | var ...; | LocalVariableDeclStmt | Test.kt:5:16:5:16 | 0 | IntegerLiteral |
|
||||
@@ -31,17 +29,21 @@
|
||||
| Test.kt:11:7:11:11 | ... > ... | GTExpr | Test.kt:11:14:14:3 | { ... } | BlockStmt |
|
||||
| Test.kt:11:11:11:11 | 0 | IntegerLiteral | Test.kt:11:7:11:11 | ... > ... | GTExpr |
|
||||
| Test.kt:11:14:14:3 | { ... } | BlockStmt | Test.kt:12:4:12:4 | <Expr>; | ExprStmt |
|
||||
| Test.kt:12:4:12:4 | <Expr>; | ExprStmt | Test.kt:12:8:12:9 | 20 | LongLiteral |
|
||||
| Test.kt:12:4:12:4 | <Expr>; | ExprStmt | Test.kt:12:4:12:4 | y | VarAccess |
|
||||
| Test.kt:12:4:12:4 | y | VarAccess | Test.kt:12:8:12:9 | 20 | LongLiteral |
|
||||
| Test.kt:12:4:12:9 | ...=... | AssignExpr | Test.kt:13:4:13:4 | <Expr>; | ExprStmt |
|
||||
| Test.kt:12:8:12:9 | 20 | LongLiteral | Test.kt:12:4:12:9 | ...=... | AssignExpr |
|
||||
| Test.kt:13:4:13:4 | <Expr>; | ExprStmt | Test.kt:13:8:13:9 | 10 | IntegerLiteral |
|
||||
| Test.kt:13:4:13:4 | <Expr>; | ExprStmt | Test.kt:13:4:13:4 | z | VarAccess |
|
||||
| Test.kt:13:4:13:4 | z | VarAccess | Test.kt:13:8:13:9 | 10 | IntegerLiteral |
|
||||
| Test.kt:13:4:13:9 | ...=... | AssignExpr | Test.kt:18:3:18:3 | <Expr>; | ExprStmt |
|
||||
| Test.kt:13:8:13:9 | 10 | IntegerLiteral | Test.kt:13:4:13:9 | ...=... | AssignExpr |
|
||||
| Test.kt:14:10:16:3 | { ... } | BlockStmt | Test.kt:15:4:15:4 | <Expr>; | ExprStmt |
|
||||
| Test.kt:15:4:15:4 | <Expr>; | ExprStmt | Test.kt:15:8:15:9 | 30 | LongLiteral |
|
||||
| Test.kt:15:4:15:4 | <Expr>; | ExprStmt | Test.kt:15:4:15:4 | y | VarAccess |
|
||||
| Test.kt:15:4:15:4 | y | VarAccess | Test.kt:15:8:15:9 | 30 | LongLiteral |
|
||||
| Test.kt:15:4:15:9 | ...=... | AssignExpr | Test.kt:18:3:18:3 | <Expr>; | ExprStmt |
|
||||
| Test.kt:15:8:15:9 | 30 | LongLiteral | Test.kt:15:4:15:9 | ...=... | AssignExpr |
|
||||
| Test.kt:18:3:18:3 | <Expr>; | ExprStmt | Test.kt:18:7:18:7 | 0 | IntegerLiteral |
|
||||
| Test.kt:18:3:18:3 | <Expr>; | ExprStmt | Test.kt:18:3:18:3 | z | VarAccess |
|
||||
| Test.kt:18:3:18:3 | z | VarAccess | Test.kt:18:7:18:7 | 0 | IntegerLiteral |
|
||||
| Test.kt:18:3:18:7 | ...=... | AssignExpr | Test.kt:21:3:24:9 | <Expr>; | ExprStmt |
|
||||
| Test.kt:18:7:18:7 | 0 | IntegerLiteral | Test.kt:18:3:18:7 | ...=... | AssignExpr |
|
||||
| Test.kt:21:3:24:9 | ... -> ... | WhenBranch | Test.kt:21:3:24:9 | true | BooleanLiteral |
|
||||
@@ -53,12 +55,14 @@
|
||||
| Test.kt:21:6:21:10 | ... < ... | LTExpr | Test.kt:21:3:24:9 | ... -> ... | WhenBranch |
|
||||
| Test.kt:21:6:21:10 | ... < ... | LTExpr | Test.kt:22:4:22:4 | <Expr>; | ExprStmt |
|
||||
| Test.kt:21:10:21:10 | 0 | IntegerLiteral | Test.kt:21:6:21:10 | ... < ... | LTExpr |
|
||||
| Test.kt:22:4:22:4 | <Expr>; | ExprStmt | Test.kt:22:8:22:9 | 40 | LongLiteral |
|
||||
| Test.kt:22:4:22:4 | <Expr>; | ExprStmt | Test.kt:22:4:22:4 | y | VarAccess |
|
||||
| Test.kt:22:4:22:4 | y | VarAccess | Test.kt:22:8:22:9 | 40 | LongLiteral |
|
||||
| Test.kt:22:4:22:9 | ...=... | AssignExpr | Test.kt:27:3:27:3 | <Expr>; | ExprStmt |
|
||||
| Test.kt:22:8:22:9 | 40 | LongLiteral | Test.kt:22:4:22:9 | ...=... | AssignExpr |
|
||||
| Test.kt:24:4:24:9 | INSTANCE | VarAccess | Test.kt:24:4:24:9 | return ... | ReturnStmt |
|
||||
| Test.kt:24:4:24:9 | return ... | ReturnStmt | Test.kt:4:2:79:2 | Normal Exit | Method |
|
||||
| Test.kt:27:3:27:3 | <Expr>; | ExprStmt | Test.kt:27:7:27:8 | 10 | IntegerLiteral |
|
||||
| Test.kt:27:3:27:3 | <Expr>; | ExprStmt | Test.kt:27:3:27:3 | z | VarAccess |
|
||||
| Test.kt:27:3:27:3 | z | VarAccess | Test.kt:27:7:27:8 | 10 | IntegerLiteral |
|
||||
| Test.kt:27:3:27:8 | ...=... | AssignExpr | Test.kt:30:3:33:3 | <Expr>; | ExprStmt |
|
||||
| Test.kt:27:7:27:8 | 10 | IntegerLiteral | Test.kt:27:3:27:8 | ...=... | AssignExpr |
|
||||
| Test.kt:30:3:33:3 | ... -> ... | WhenBranch | Test.kt:30:7:30:7 | x | VarAccess |
|
||||
@@ -69,13 +73,16 @@
|
||||
| Test.kt:30:7:30:12 | ... (value equals) ... | ValueEQExpr | Test.kt:35:3:35:3 | <Expr>; | ExprStmt |
|
||||
| Test.kt:30:12:30:12 | 0 | IntegerLiteral | Test.kt:30:7:30:12 | ... (value equals) ... | ValueEQExpr |
|
||||
| Test.kt:30:15:33:3 | { ... } | BlockStmt | Test.kt:31:4:31:4 | <Expr>; | ExprStmt |
|
||||
| Test.kt:31:4:31:4 | <Expr>; | ExprStmt | Test.kt:31:8:31:9 | 60 | LongLiteral |
|
||||
| Test.kt:31:4:31:4 | <Expr>; | ExprStmt | Test.kt:31:4:31:4 | y | VarAccess |
|
||||
| Test.kt:31:4:31:4 | y | VarAccess | Test.kt:31:8:31:9 | 60 | LongLiteral |
|
||||
| Test.kt:31:4:31:9 | ...=... | AssignExpr | Test.kt:32:4:32:4 | <Expr>; | ExprStmt |
|
||||
| Test.kt:31:8:31:9 | 60 | LongLiteral | Test.kt:31:4:31:9 | ...=... | AssignExpr |
|
||||
| Test.kt:32:4:32:4 | <Expr>; | ExprStmt | Test.kt:32:8:32:9 | 10 | IntegerLiteral |
|
||||
| Test.kt:32:4:32:4 | <Expr>; | ExprStmt | Test.kt:32:4:32:4 | z | VarAccess |
|
||||
| Test.kt:32:4:32:4 | z | VarAccess | Test.kt:32:8:32:9 | 10 | IntegerLiteral |
|
||||
| Test.kt:32:4:32:9 | ...=... | AssignExpr | Test.kt:35:3:35:3 | <Expr>; | ExprStmt |
|
||||
| Test.kt:32:8:32:9 | 10 | IntegerLiteral | Test.kt:32:4:32:9 | ...=... | AssignExpr |
|
||||
| Test.kt:35:3:35:3 | <Expr>; | ExprStmt | Test.kt:35:7:35:8 | 20 | IntegerLiteral |
|
||||
| Test.kt:35:3:35:3 | <Expr>; | ExprStmt | Test.kt:35:3:35:3 | z | VarAccess |
|
||||
| Test.kt:35:3:35:3 | z | VarAccess | Test.kt:35:7:35:8 | 20 | IntegerLiteral |
|
||||
| Test.kt:35:3:35:8 | ...=... | AssignExpr | Test.kt:38:3:41:3 | while (...) | WhileStmt |
|
||||
| Test.kt:35:7:35:8 | 20 | IntegerLiteral | Test.kt:35:3:35:8 | ...=... | AssignExpr |
|
||||
| Test.kt:38:3:41:3 | while (...) | WhileStmt | Test.kt:38:9:38:9 | x | VarAccess |
|
||||
@@ -84,35 +91,40 @@
|
||||
| Test.kt:38:9:38:13 | ... > ... | GTExpr | Test.kt:43:3:43:3 | <Expr>; | ExprStmt |
|
||||
| Test.kt:38:13:38:13 | 0 | IntegerLiteral | Test.kt:38:9:38:13 | ... > ... | GTExpr |
|
||||
| Test.kt:38:16:41:3 | { ... } | BlockStmt | Test.kt:39:4:39:4 | <Expr>; | ExprStmt |
|
||||
| Test.kt:39:4:39:4 | <Expr>; | ExprStmt | Test.kt:39:8:39:9 | 10 | LongLiteral |
|
||||
| Test.kt:39:4:39:4 | <Expr>; | ExprStmt | Test.kt:39:4:39:4 | y | VarAccess |
|
||||
| Test.kt:39:4:39:4 | y | VarAccess | Test.kt:39:8:39:9 | 10 | LongLiteral |
|
||||
| Test.kt:39:4:39:9 | ...=... | AssignExpr | Test.kt:40:4:40:6 | <Expr>; | ExprStmt |
|
||||
| Test.kt:39:8:39:9 | 10 | LongLiteral | Test.kt:39:4:39:9 | ...=... | AssignExpr |
|
||||
| Test.kt:40:4:40:4 | <Expr>; | ExprStmt | Test.kt:40:4:40:6 | tmp0 | VarAccess |
|
||||
| Test.kt:40:4:40:4 | <Expr>; | ExprStmt | Test.kt:40:4:40:4 | x | VarAccess |
|
||||
| Test.kt:40:4:40:4 | x | VarAccess | Test.kt:40:4:40:6 | tmp0 | LocalVariableDeclExpr |
|
||||
| Test.kt:40:4:40:4 | x | VarAccess | Test.kt:40:4:40:6 | tmp0 | VarAccess |
|
||||
| Test.kt:40:4:40:6 | ...=... | AssignExpr | Test.kt:40:4:40:6 | <Expr>; | ExprStmt |
|
||||
| Test.kt:40:4:40:6 | <Expr>; | ExprStmt | Test.kt:40:4:40:6 | <Stmt> | StmtExpr |
|
||||
| Test.kt:40:4:40:6 | <Expr>; | ExprStmt | Test.kt:40:4:40:6 | tmp0 | VarAccess |
|
||||
| Test.kt:40:4:40:6 | <Stmt> | StmtExpr | Test.kt:40:4:40:6 | { ... } | BlockStmt |
|
||||
| Test.kt:40:4:40:6 | <Expr>; | ExprStmt | Test.kt:40:4:40:6 | { ... } | BlockStmt |
|
||||
| Test.kt:40:4:40:6 | <Stmt> | StmtExpr | Test.kt:40:4:40:6 | <implicit coercion to unit> | ImplicitCoercionToUnitExpr |
|
||||
| Test.kt:40:4:40:6 | <implicit coercion to unit> | ImplicitCoercionToUnitExpr | Test.kt:38:9:38:9 | x | VarAccess |
|
||||
| Test.kt:40:4:40:6 | dec(...) | MethodCall | Test.kt:40:4:40:6 | ...=... | AssignExpr |
|
||||
| Test.kt:40:4:40:6 | tmp0 | LocalVariableDeclExpr | Test.kt:40:4:40:4 | <Expr>; | ExprStmt |
|
||||
| Test.kt:40:4:40:6 | tmp0 | VarAccess | Test.kt:40:4:40:6 | <implicit coercion to unit> | ImplicitCoercionToUnitExpr |
|
||||
| Test.kt:40:4:40:6 | tmp0 | VarAccess | Test.kt:40:4:40:6 | <Stmt> | StmtExpr |
|
||||
| Test.kt:40:4:40:6 | tmp0 | VarAccess | Test.kt:40:4:40:6 | dec(...) | MethodCall |
|
||||
| Test.kt:40:4:40:6 | var ...; | LocalVariableDeclStmt | Test.kt:40:4:40:4 | x | VarAccess |
|
||||
| Test.kt:40:4:40:6 | { ... } | BlockStmt | Test.kt:40:4:40:6 | var ...; | LocalVariableDeclStmt |
|
||||
| Test.kt:43:3:43:3 | <Expr>; | ExprStmt | Test.kt:43:7:43:8 | 30 | IntegerLiteral |
|
||||
| Test.kt:43:3:43:3 | <Expr>; | ExprStmt | Test.kt:43:3:43:3 | z | VarAccess |
|
||||
| Test.kt:43:3:43:3 | z | VarAccess | Test.kt:43:7:43:8 | 30 | IntegerLiteral |
|
||||
| Test.kt:43:3:43:8 | ...=... | AssignExpr | Test.kt:73:3:73:3 | <Expr>; | ExprStmt |
|
||||
| Test.kt:43:7:43:8 | 30 | IntegerLiteral | Test.kt:43:3:43:8 | ...=... | AssignExpr |
|
||||
| Test.kt:73:3:73:3 | <Expr>; | ExprStmt | Test.kt:73:7:73:8 | 50 | IntegerLiteral |
|
||||
| Test.kt:73:3:73:3 | <Expr>; | ExprStmt | Test.kt:73:3:73:3 | z | VarAccess |
|
||||
| Test.kt:73:3:73:3 | z | VarAccess | Test.kt:73:7:73:8 | 50 | IntegerLiteral |
|
||||
| Test.kt:73:3:73:8 | ...=... | AssignExpr | Test.kt:77:3:77:3 | <Expr>; | ExprStmt |
|
||||
| Test.kt:73:7:73:8 | 50 | IntegerLiteral | Test.kt:73:3:73:8 | ...=... | AssignExpr |
|
||||
| Test.kt:77:3:77:3 | <Expr>; | ExprStmt | Test.kt:77:7:77:8 | 40 | IntegerLiteral |
|
||||
| Test.kt:77:3:77:3 | <Expr>; | ExprStmt | Test.kt:77:3:77:3 | w | VarAccess |
|
||||
| Test.kt:77:3:77:3 | w | VarAccess | Test.kt:77:7:77:8 | 40 | IntegerLiteral |
|
||||
| Test.kt:77:3:77:8 | ...=... | AssignExpr | Test.kt:78:3:78:8 | INSTANCE | VarAccess |
|
||||
| Test.kt:77:7:77:8 | 40 | IntegerLiteral | Test.kt:77:3:77:8 | ...=... | AssignExpr |
|
||||
| Test.kt:78:3:78:8 | INSTANCE | VarAccess | Test.kt:78:3:78:8 | return ... | ReturnStmt |
|
||||
| Test.kt:78:3:78:8 | return ... | ReturnStmt | Test.kt:4:2:79:2 | Normal Exit | Method |
|
||||
| Test.kt:82:1:89:1 | Entry | Method | Test.kt:82:21:89:1 | { ... } | BlockStmt |
|
||||
| Test.kt:82:1:89:1 | Exceptional Exit | Method | Test.kt:82:1:89:1 | Exit | Method |
|
||||
| Test.kt:82:1:89:1 | Exit | Method | file://:0:0:0:0 | <none> | <none> |
|
||||
| Test.kt:82:1:89:1 | Normal Exit | Method | Test.kt:82:1:89:1 | Exit | Method |
|
||||
| Test.kt:82:21:89:1 | { ... } | BlockStmt | Test.kt:83:2:88:2 | try ... | TryStmt |
|
||||
| Test.kt:83:2:88:2 | try ... | TryStmt | Test.kt:83:6:86:2 | { ... } | BlockStmt |
|
||||
@@ -124,13 +136,14 @@
|
||||
| Test.kt:84:11:84:18 | (...)... | CastExpr | Test.kt:86:4:88:2 | catch (...) | CatchClause |
|
||||
| Test.kt:85:3:85:10 | return ... | ReturnStmt | Test.kt:82:1:89:1 | Normal Exit | Method |
|
||||
| Test.kt:85:10:85:10 | 1 | IntegerLiteral | Test.kt:85:3:85:10 | return ... | ReturnStmt |
|
||||
| Test.kt:86:4:88:2 | catch (...) | CatchClause | Test.kt:82:1:89:1 | Exceptional Exit | Method |
|
||||
| Test.kt:86:4:88:2 | catch (...) | CatchClause | Test.kt:86:11:86:31 | e | LocalVariableDeclExpr |
|
||||
| Test.kt:86:11:86:31 | e | LocalVariableDeclExpr | Test.kt:86:34:88:2 | { ... } | BlockStmt |
|
||||
| Test.kt:86:34:88:2 | { ... } | BlockStmt | Test.kt:87:10:87:10 | 2 | IntegerLiteral |
|
||||
| Test.kt:87:3:87:10 | return ... | ReturnStmt | Test.kt:82:1:89:1 | Normal Exit | Method |
|
||||
| Test.kt:87:10:87:10 | 2 | IntegerLiteral | Test.kt:87:3:87:10 | return ... | ReturnStmt |
|
||||
| Test.kt:91:1:98:1 | Entry | Method | Test.kt:91:22:98:1 | { ... } | BlockStmt |
|
||||
| Test.kt:91:1:98:1 | Exceptional Exit | Method | Test.kt:91:1:98:1 | Exit | Method |
|
||||
| Test.kt:91:1:98:1 | Exit | Method | file://:0:0:0:0 | <none> | <none> |
|
||||
| Test.kt:91:1:98:1 | Normal Exit | Method | Test.kt:91:1:98:1 | Exit | Method |
|
||||
| Test.kt:91:22:98:1 | { ... } | BlockStmt | Test.kt:92:2:97:2 | try ... | TryStmt |
|
||||
| Test.kt:92:2:97:2 | try ... | TryStmt | Test.kt:92:6:95:2 | { ... } | BlockStmt |
|
||||
@@ -142,13 +155,14 @@
|
||||
| Test.kt:93:12:93:13 | ...!! | NotNullExpr | Test.kt:95:4:97:2 | catch (...) | CatchClause |
|
||||
| Test.kt:94:3:94:10 | return ... | ReturnStmt | Test.kt:91:1:98:1 | Normal Exit | Method |
|
||||
| Test.kt:94:10:94:10 | 1 | IntegerLiteral | Test.kt:94:3:94:10 | return ... | ReturnStmt |
|
||||
| Test.kt:95:4:97:2 | catch (...) | CatchClause | Test.kt:91:1:98:1 | Exceptional Exit | Method |
|
||||
| Test.kt:95:4:97:2 | catch (...) | CatchClause | Test.kt:95:11:95:33 | e | LocalVariableDeclExpr |
|
||||
| Test.kt:95:11:95:33 | e | LocalVariableDeclExpr | Test.kt:95:36:97:2 | { ... } | BlockStmt |
|
||||
| Test.kt:95:36:97:2 | { ... } | BlockStmt | Test.kt:96:10:96:10 | 2 | IntegerLiteral |
|
||||
| Test.kt:96:3:96:10 | return ... | ReturnStmt | Test.kt:91:1:98:1 | Normal Exit | Method |
|
||||
| Test.kt:96:10:96:10 | 2 | IntegerLiteral | Test.kt:96:3:96:10 | return ... | ReturnStmt |
|
||||
| Test.kt:100:1:110:1 | Entry | Method | Test.kt:100:25:110:1 | { ... } | BlockStmt |
|
||||
| Test.kt:100:1:110:1 | Exceptional Exit | Method | Test.kt:100:1:110:1 | Exit | Method |
|
||||
| Test.kt:100:1:110:1 | Exit | Method | file://:0:0:0:0 | <none> | <none> |
|
||||
| Test.kt:100:1:110:1 | Normal Exit | Method | Test.kt:100:1:110:1 | Exit | Method |
|
||||
| Test.kt:100:25:110:1 | { ... } | BlockStmt | Test.kt:101:5:103:5 | <Expr>; | ExprStmt |
|
||||
| Test.kt:101:5:103:5 | ... -> ... | WhenBranch | Test.kt:101:9:101:30 | ... && ... | AndLogicalExpr |
|
||||
@@ -186,8 +200,7 @@
|
||||
| Test.kt:108:9:108:29 | <Expr>; | ExprStmt | Test.kt:108:17:108:28 | "y not null" | StringLiteral |
|
||||
| Test.kt:108:9:108:29 | println(...) | MethodCall | Test.kt:100:1:110:1 | Normal Exit | Method |
|
||||
| Test.kt:108:17:108:28 | "y not null" | StringLiteral | Test.kt:108:9:108:29 | println(...) | MethodCall |
|
||||
| Test.kt:112:1:116:1 | Exceptional Exit | Method | Test.kt:112:1:116:1 | Exit | Method |
|
||||
| Test.kt:112:1:116:1 | Exit | Method | file://:0:0:0:0 | <none> | <none> |
|
||||
| Test.kt:112:1:116:1 | Entry | Method | Test.kt:112:32:116:1 | { ... } | BlockStmt |
|
||||
| Test.kt:112:1:116:1 | Normal Exit | Method | Test.kt:112:1:116:1 | Exit | Method |
|
||||
| Test.kt:112:32:116:1 | { ... } | BlockStmt | Test.kt:113:5:115:5 | <Expr>; | ExprStmt |
|
||||
| Test.kt:113:5:115:5 | ... -> ... | WhenBranch | Test.kt:113:9:113:14 | ... && ... | AndLogicalExpr |
|
||||
@@ -199,8 +212,7 @@
|
||||
| Test.kt:113:14:113:14 | y | VarAccess | Test.kt:112:1:116:1 | Normal Exit | Method |
|
||||
| Test.kt:113:14:113:14 | y | VarAccess | Test.kt:113:17:115:5 | { ... } | BlockStmt |
|
||||
| Test.kt:113:17:115:5 | { ... } | BlockStmt | Test.kt:112:1:116:1 | Normal Exit | Method |
|
||||
| Test.kt:118:1:124:1 | Exceptional Exit | Method | Test.kt:118:1:124:1 | Exit | Method |
|
||||
| Test.kt:118:1:124:1 | Exit | Method | file://:0:0:0:0 | <none> | <none> |
|
||||
| Test.kt:118:1:124:1 | Entry | Method | Test.kt:118:37:124:1 | { ... } | BlockStmt |
|
||||
| Test.kt:118:1:124:1 | Normal Exit | Method | Test.kt:118:1:124:1 | Exit | Method |
|
||||
| Test.kt:118:37:124:1 | { ... } | BlockStmt | Test.kt:119:2:123:12 | <Expr>; | ExprStmt |
|
||||
| Test.kt:119:2:123:12 | <Expr>; | ExprStmt | Test.kt:119:2:123:12 | when ... | WhenExpr |
|
||||
@@ -216,6 +228,7 @@
|
||||
| Test.kt:122:12:122:16 | ... -> ... | WhenBranch | Test.kt:122:12:122:16 | true | BooleanLiteral |
|
||||
| Test.kt:122:12:122:16 | <Expr>; | ExprStmt | Test.kt:122:12:122:16 | false | BooleanLiteral |
|
||||
| Test.kt:122:12:122:16 | false | BooleanLiteral | Test.kt:118:1:124:1 | Normal Exit | Method |
|
||||
| Test.kt:122:12:122:16 | false | BooleanLiteral | Test.kt:123:8:123:10 | { ... } | BlockStmt |
|
||||
| Test.kt:122:12:122:16 | true | BooleanLiteral | Test.kt:122:12:122:16 | <Expr>; | ExprStmt |
|
||||
| Test.kt:123:8:123:10 | { ... } | BlockStmt | Test.kt:118:1:124:1 | Normal Exit | Method |
|
||||
missingSuccessor
|
||||
|
||||
@@ -1,53 +1,14 @@
|
||||
import java
|
||||
import utils.test.AstCfg
|
||||
|
||||
newtype TMaybeControlFlowNode =
|
||||
TControlFlowNode(ControlFlowNode c) or
|
||||
TNoControlFlowNode()
|
||||
|
||||
class MaybeControlFlowNode extends TMaybeControlFlowNode {
|
||||
abstract string toString();
|
||||
|
||||
abstract Location getLocation();
|
||||
|
||||
abstract string getPrimaryQlClasses();
|
||||
}
|
||||
|
||||
class YesMaybeControlFlowNode extends MaybeControlFlowNode {
|
||||
ControlFlowNode c;
|
||||
|
||||
YesMaybeControlFlowNode() { this = TControlFlowNode(c) }
|
||||
|
||||
override string toString() { result = c.toString() }
|
||||
|
||||
override Location getLocation() { result = c.getLocation() }
|
||||
|
||||
override string getPrimaryQlClasses() { result = c.getAstNode().getPrimaryQlClasses() }
|
||||
}
|
||||
|
||||
class NoMaybeControlFlowNode extends MaybeControlFlowNode {
|
||||
NoMaybeControlFlowNode() { this = TNoControlFlowNode() }
|
||||
|
||||
override string toString() { result = "<none>" }
|
||||
|
||||
override Location getLocation() { result.toString() = "file://:0:0:0:0" }
|
||||
|
||||
override string getPrimaryQlClasses() { result = "<none>" }
|
||||
}
|
||||
|
||||
MaybeControlFlowNode maybeSuccessor(ControlFlowNode n) {
|
||||
if exists(n.getASuccessor())
|
||||
then result = TControlFlowNode(n.getASuccessor())
|
||||
else result = TNoControlFlowNode()
|
||||
}
|
||||
|
||||
from ControlFlowNode n, MaybeControlFlowNode m
|
||||
from ControlFlowNode n, ControlFlowNode m
|
||||
where
|
||||
m = maybeSuccessor(n) and
|
||||
m = getAnAstSuccessor(n) and
|
||||
n.getLocation().getFile().(CompilationUnit).fromSource()
|
||||
select n, n.getAstNode().getPrimaryQlClasses(), m, m.getPrimaryQlClasses()
|
||||
select n, n.getAstNode().getPrimaryQlClasses(), m, m.getAstNode().getPrimaryQlClasses()
|
||||
|
||||
query predicate missingSuccessor(Expr e) {
|
||||
maybeSuccessor(e.getControlFlowNode()) instanceof NoMaybeControlFlowNode and
|
||||
exists(ControlFlowNode n | n = e.getControlFlowNode() and not exists(n.getASuccessor())) and
|
||||
e.getFile().(CompilationUnit).fromSource() and
|
||||
not e instanceof TypeAccess and
|
||||
not e instanceof VarWrite
|
||||
|
||||
@@ -562,5 +562,4 @@
|
||||
| Test.kt:121:4:121:9 | ... -> ... | Test.kt:122:12:122:16 | ... -> ... |
|
||||
| Test.kt:121:4:121:9 | ... -> ... | Test.kt:122:12:122:16 | <Expr>; |
|
||||
| Test.kt:121:4:121:9 | ... -> ... | Test.kt:123:8:123:10 | { ... } |
|
||||
| Test.kt:121:9:121:9 | <Expr>; | Test.kt:123:8:123:10 | { ... } |
|
||||
| Test.kt:122:12:122:16 | ... -> ... | Test.kt:122:12:122:16 | <Expr>; |
|
||||
|
||||
@@ -17,5 +17,6 @@ predicate dominanceCounterExample(ControlFlowNode entry, ControlFlowNode dom, Co
|
||||
from Callable c, ControlFlowNode dom, ControlFlowNode node
|
||||
where
|
||||
strictlyDominates(dom, node) and
|
||||
dominanceCounterExample(c.getBody().getControlFlowNode(), dom, node)
|
||||
dominanceCounterExample(any(ControlFlow::EntryNode entry | entry.getEnclosingCallable() = c), dom,
|
||||
node)
|
||||
select c, dom, node
|
||||
|
||||
@@ -1,157 +1,21 @@
|
||||
| Test.kt:2:43:79:2 | { ... } | Test.kt:3:13:3:13 | var ...; |
|
||||
| Test.kt:3:13:3:13 | var ...; | Test.kt:3:17:3:18 | px |
|
||||
| Test.kt:3:13:3:13 | x | Test.kt:4:13:4:13 | var ...; |
|
||||
| Test.kt:3:17:3:18 | px | Test.kt:3:13:3:13 | x |
|
||||
| Test.kt:4:13:4:13 | var ...; | Test.kt:4:17:4:18 | pw |
|
||||
| Test.kt:4:13:4:13 | w | Test.kt:5:13:5:13 | var ...; |
|
||||
| Test.kt:4:17:4:18 | pw | Test.kt:4:13:4:13 | w |
|
||||
| Test.kt:5:13:5:13 | var ...; | Test.kt:5:17:5:18 | pz |
|
||||
| Test.kt:5:13:5:13 | z | Test.kt:7:7:7:7 | var ...; |
|
||||
| Test.kt:5:17:5:18 | pz | Test.kt:5:13:5:13 | z |
|
||||
| Test.kt:7:7:7:7 | j | Test.kt:8:7:8:7 | var ...; |
|
||||
| Test.kt:7:7:7:7 | var ...; | Test.kt:7:7:7:7 | j |
|
||||
| Test.kt:8:7:8:7 | var ...; | Test.kt:8:17:8:18 | 50 |
|
||||
| Test.kt:8:7:8:7 | y | Test.kt:11:3:16:3 | <Expr>; |
|
||||
| Test.kt:8:17:8:18 | 50 | Test.kt:8:7:8:7 | y |
|
||||
| Test.kt:11:3:16:3 | ... -> ... | Test.kt:11:3:16:3 | true |
|
||||
| Test.kt:11:3:16:3 | ... -> ... | Test.kt:11:7:11:7 | x |
|
||||
| Test.kt:11:3:16:3 | <Expr>; | Test.kt:11:3:16:3 | when ... |
|
||||
| Test.kt:11:3:16:3 | true | Test.kt:14:10:16:3 | { ... } |
|
||||
| Test.kt:11:3:16:3 | when ... | Test.kt:11:3:16:3 | ... -> ... |
|
||||
| Test.kt:11:7:11:7 | x | Test.kt:11:11:11:11 | 0 |
|
||||
| Test.kt:11:7:11:11 | ... > ... | Test.kt:11:3:16:3 | ... -> ... |
|
||||
| Test.kt:11:7:11:11 | ... > ... | Test.kt:11:14:14:3 | { ... } |
|
||||
| Test.kt:11:7:11:11 | ... > ... | Test.kt:18:3:18:3 | <Expr>; |
|
||||
| Test.kt:11:11:11:11 | 0 | Test.kt:11:7:11:11 | ... > ... |
|
||||
| Test.kt:11:14:14:3 | { ... } | Test.kt:12:4:12:4 | <Expr>; |
|
||||
| Test.kt:12:4:12:4 | <Expr>; | Test.kt:12:8:12:9 | 20 |
|
||||
| Test.kt:12:4:12:9 | ...=... | Test.kt:13:4:13:4 | <Expr>; |
|
||||
| Test.kt:12:8:12:9 | 20 | Test.kt:12:4:12:9 | ...=... |
|
||||
| Test.kt:13:4:13:4 | <Expr>; | Test.kt:13:8:13:9 | 10 |
|
||||
| Test.kt:13:8:13:9 | 10 | Test.kt:13:4:13:9 | ...=... |
|
||||
| Test.kt:14:10:16:3 | { ... } | Test.kt:15:4:15:4 | <Expr>; |
|
||||
| Test.kt:15:4:15:4 | <Expr>; | Test.kt:15:8:15:9 | 30 |
|
||||
| Test.kt:15:8:15:9 | 30 | Test.kt:15:4:15:9 | ...=... |
|
||||
| Test.kt:18:3:18:3 | <Expr>; | Test.kt:18:8:18:8 | x |
|
||||
| Test.kt:18:3:18:20 | ...=... | Test.kt:21:3:24:11 | <Expr>; |
|
||||
| Test.kt:18:7:18:20 | (...)... | Test.kt:18:3:18:20 | ...=... |
|
||||
| Test.kt:18:8:18:8 | x | Test.kt:18:12:18:12 | y |
|
||||
| Test.kt:18:8:18:12 | ... + ... | Test.kt:18:7:18:20 | (...)... |
|
||||
| Test.kt:18:12:18:12 | y | Test.kt:18:8:18:12 | ... + ... |
|
||||
| Test.kt:21:3:24:11 | ... -> ... | Test.kt:21:3:24:11 | true |
|
||||
| Test.kt:21:3:24:11 | ... -> ... | Test.kt:21:7:21:7 | x |
|
||||
| Test.kt:21:3:24:11 | <Expr>; | Test.kt:21:3:24:11 | when ... |
|
||||
| Test.kt:21:3:24:11 | true | Test.kt:24:11:24:11 | z |
|
||||
| Test.kt:21:3:24:11 | when ... | Test.kt:21:3:24:11 | ... -> ... |
|
||||
| Test.kt:21:7:21:7 | x | Test.kt:21:11:21:11 | 0 |
|
||||
| Test.kt:21:7:21:11 | ... < ... | Test.kt:2:2:79:2 | Normal Exit |
|
||||
| Test.kt:21:7:21:11 | ... < ... | Test.kt:21:3:24:11 | ... -> ... |
|
||||
| Test.kt:21:7:21:11 | ... < ... | Test.kt:22:4:22:4 | <Expr>; |
|
||||
| Test.kt:21:11:21:11 | 0 | Test.kt:21:7:21:11 | ... < ... |
|
||||
| Test.kt:22:4:22:4 | <Expr>; | Test.kt:22:8:22:9 | 40 |
|
||||
| Test.kt:22:4:22:9 | ...=... | Test.kt:27:3:27:3 | <Expr>; |
|
||||
| Test.kt:22:8:22:9 | 40 | Test.kt:22:4:22:9 | ...=... |
|
||||
| Test.kt:24:11:24:11 | z | Test.kt:24:4:24:11 | return ... |
|
||||
| Test.kt:27:3:27:3 | <Expr>; | Test.kt:27:7:27:8 | 10 |
|
||||
| Test.kt:27:3:27:8 | ...=... | Test.kt:30:3:33:3 | <Expr>; |
|
||||
| Test.kt:27:7:27:8 | 10 | Test.kt:27:3:27:8 | ...=... |
|
||||
| Test.kt:30:3:33:3 | ... -> ... | Test.kt:30:7:30:7 | x |
|
||||
| Test.kt:30:3:33:3 | <Expr>; | Test.kt:30:3:33:3 | when ... |
|
||||
| Test.kt:30:3:33:3 | when ... | Test.kt:30:3:33:3 | ... -> ... |
|
||||
| Test.kt:30:7:30:7 | x | Test.kt:30:12:30:12 | 0 |
|
||||
| Test.kt:30:7:30:12 | ... (value equals) ... | Test.kt:30:15:33:3 | { ... } |
|
||||
| Test.kt:30:7:30:12 | ... (value equals) ... | Test.kt:35:3:35:3 | <Expr>; |
|
||||
| Test.kt:30:12:30:12 | 0 | Test.kt:30:7:30:12 | ... (value equals) ... |
|
||||
| Test.kt:30:15:33:3 | { ... } | Test.kt:31:4:31:4 | <Expr>; |
|
||||
| Test.kt:31:4:31:4 | <Expr>; | Test.kt:31:8:31:9 | 60 |
|
||||
| Test.kt:31:4:31:9 | ...=... | Test.kt:32:4:32:4 | <Expr>; |
|
||||
| Test.kt:31:8:31:9 | 60 | Test.kt:31:4:31:9 | ...=... |
|
||||
| Test.kt:32:4:32:4 | <Expr>; | Test.kt:32:8:32:9 | 10 |
|
||||
| Test.kt:32:8:32:9 | 10 | Test.kt:32:4:32:9 | ...=... |
|
||||
| Test.kt:35:3:35:3 | <Expr>; | Test.kt:35:3:35:3 | z |
|
||||
| Test.kt:35:3:35:3 | z | Test.kt:35:8:35:8 | x |
|
||||
| Test.kt:35:3:35:8 | ...+=... | Test.kt:38:3:41:3 | while (...) |
|
||||
| Test.kt:35:8:35:8 | x | Test.kt:35:3:35:8 | ...+=... |
|
||||
| Test.kt:38:3:41:3 | while (...) | Test.kt:38:10:38:10 | x |
|
||||
| Test.kt:38:10:38:10 | x | Test.kt:38:14:38:14 | 0 |
|
||||
| Test.kt:38:10:38:14 | ... > ... | Test.kt:38:17:41:3 | { ... } |
|
||||
| Test.kt:38:10:38:14 | ... > ... | Test.kt:43:3:43:3 | <Expr>; |
|
||||
| Test.kt:38:14:38:14 | 0 | Test.kt:38:10:38:14 | ... > ... |
|
||||
| Test.kt:38:17:41:3 | { ... } | Test.kt:39:4:39:4 | <Expr>; |
|
||||
| Test.kt:39:4:39:4 | <Expr>; | Test.kt:39:8:39:9 | 10 |
|
||||
| Test.kt:39:4:39:9 | ...=... | Test.kt:40:4:40:6 | <Expr>; |
|
||||
| Test.kt:39:8:39:9 | 10 | Test.kt:39:4:39:9 | ...=... |
|
||||
| Test.kt:40:4:40:4 | <Expr>; | Test.kt:40:4:40:6 | tmp0 |
|
||||
| Test.kt:40:4:40:4 | x | Test.kt:40:4:40:6 | tmp0 |
|
||||
| Test.kt:40:4:40:6 | ...=... | Test.kt:40:4:40:6 | <Expr>; |
|
||||
| Test.kt:40:4:40:6 | <Expr>; | Test.kt:40:4:40:6 | <Stmt> |
|
||||
| Test.kt:40:4:40:6 | <Expr>; | Test.kt:40:4:40:6 | tmp0 |
|
||||
| Test.kt:40:4:40:6 | <Stmt> | Test.kt:40:4:40:6 | { ... } |
|
||||
| Test.kt:40:4:40:6 | dec(...) | Test.kt:40:4:40:6 | ...=... |
|
||||
| Test.kt:40:4:40:6 | tmp0 | Test.kt:40:4:40:4 | <Expr>; |
|
||||
| Test.kt:40:4:40:6 | tmp0 | Test.kt:40:4:40:6 | <implicit coercion to unit> |
|
||||
| Test.kt:40:4:40:6 | tmp0 | Test.kt:40:4:40:6 | dec(...) |
|
||||
| Test.kt:40:4:40:6 | var ...; | Test.kt:40:4:40:4 | x |
|
||||
| Test.kt:40:4:40:6 | { ... } | Test.kt:40:4:40:6 | var ...; |
|
||||
| Test.kt:43:3:43:3 | <Expr>; | Test.kt:43:3:43:3 | z |
|
||||
| Test.kt:43:3:43:3 | z | Test.kt:43:8:43:8 | y |
|
||||
| Test.kt:43:3:43:15 | ...+=... | Test.kt:73:3:73:3 | <Expr>; |
|
||||
| Test.kt:43:8:43:8 | y | Test.kt:43:8:43:15 | (...)... |
|
||||
| Test.kt:43:8:43:15 | (...)... | Test.kt:43:3:43:15 | ...+=... |
|
||||
| Test.kt:73:3:73:3 | <Expr>; | Test.kt:73:3:73:3 | z |
|
||||
| Test.kt:73:3:73:3 | z | Test.kt:73:8:73:8 | x |
|
||||
| Test.kt:73:3:73:16 | ...+=... | Test.kt:77:3:77:3 | <Expr>; |
|
||||
| Test.kt:73:8:73:8 | x | Test.kt:73:12:73:12 | y |
|
||||
| Test.kt:73:8:73:12 | ... + ... | Test.kt:73:16:73:16 | w |
|
||||
| Test.kt:73:8:73:16 | ... + ... | Test.kt:73:3:73:16 | ...+=... |
|
||||
| Test.kt:73:12:73:12 | <implicit cast> | Test.kt:73:8:73:12 | ... + ... |
|
||||
| Test.kt:73:12:73:12 | y | Test.kt:73:12:73:12 | <implicit cast> |
|
||||
| Test.kt:73:16:73:16 | w | Test.kt:73:8:73:16 | ... + ... |
|
||||
| Test.kt:77:3:77:3 | <Expr>; | Test.kt:77:7:77:8 | 40 |
|
||||
| Test.kt:77:3:77:8 | ...=... | Test.kt:78:10:78:10 | w |
|
||||
| Test.kt:77:7:77:8 | 40 | Test.kt:77:3:77:8 | ...=... |
|
||||
| Test.kt:78:10:78:10 | w | Test.kt:78:3:78:10 | return ... |
|
||||
| Test.kt:81:25:98:2 | { ... } | Test.kt:83:7:83:7 | var ...; |
|
||||
| Test.kt:83:7:83:7 | b | Test.kt:84:7:84:7 | var ...; |
|
||||
| Test.kt:83:7:83:7 | var ...; | Test.kt:83:7:83:7 | b |
|
||||
| Test.kt:84:7:84:7 | c | Test.kt:85:3:85:3 | <Expr>; |
|
||||
| Test.kt:84:7:84:7 | var ...; | Test.kt:84:7:84:7 | c |
|
||||
| Test.kt:85:3:85:3 | <Expr>; | Test.kt:85:7:85:7 | 0 |
|
||||
| Test.kt:85:3:85:7 | ...=... | Test.kt:86:3:96:3 | while (...) |
|
||||
| Test.kt:85:7:85:7 | 0 | Test.kt:85:3:85:7 | ...=... |
|
||||
| Test.kt:86:3:96:3 | while (...) | Test.kt:86:9:86:12 | true |
|
||||
| Test.kt:86:9:86:12 | true | Test.kt:86:15:96:3 | { ... } |
|
||||
| Test.kt:86:15:96:3 | { ... } | Test.kt:87:4:87:4 | <Expr>; |
|
||||
| Test.kt:87:4:87:4 | <Expr>; | Test.kt:87:8:87:9 | 10 |
|
||||
| Test.kt:87:4:87:9 | ...=... | Test.kt:88:4:91:4 | <Expr>; |
|
||||
| Test.kt:87:8:87:9 | 10 | Test.kt:87:4:87:9 | ...=... |
|
||||
| Test.kt:88:4:91:4 | ... -> ... | Test.kt:88:8:88:8 | a |
|
||||
| Test.kt:88:4:91:4 | <Expr>; | Test.kt:88:4:91:4 | when ... |
|
||||
| Test.kt:88:4:91:4 | when ... | Test.kt:88:4:91:4 | ... -> ... |
|
||||
| Test.kt:88:8:88:8 | a | Test.kt:88:12:88:14 | 100 |
|
||||
| Test.kt:88:8:88:14 | ... > ... | Test.kt:88:17:91:4 | { ... } |
|
||||
| Test.kt:88:8:88:14 | ... > ... | Test.kt:92:4:93:9 | <Expr>; |
|
||||
| Test.kt:88:12:88:14 | 100 | Test.kt:88:8:88:14 | ... > ... |
|
||||
| Test.kt:88:17:91:4 | { ... } | Test.kt:89:5:89:5 | <Expr>; |
|
||||
| Test.kt:89:5:89:5 | <Expr>; | Test.kt:89:9:89:10 | 10 |
|
||||
| Test.kt:89:5:89:10 | ...=... | Test.kt:90:5:90:5 | <Expr>; |
|
||||
| Test.kt:89:9:89:10 | 10 | Test.kt:89:5:89:10 | ...=... |
|
||||
| Test.kt:90:5:90:5 | <Expr>; | Test.kt:90:9:90:9 | c |
|
||||
| Test.kt:90:9:90:9 | c | Test.kt:90:5:90:9 | ...=... |
|
||||
| Test.kt:92:4:93:9 | ... -> ... | Test.kt:92:8:92:8 | a |
|
||||
| Test.kt:92:4:93:9 | <Expr>; | Test.kt:92:4:93:9 | when ... |
|
||||
| Test.kt:92:4:93:9 | when ... | Test.kt:92:4:93:9 | ... -> ... |
|
||||
| Test.kt:92:8:92:8 | a | Test.kt:92:13:92:14 | 10 |
|
||||
| Test.kt:92:8:92:14 | ... (value equals) ... | Test.kt:81:2:98:2 | Normal Exit |
|
||||
| Test.kt:92:8:92:14 | ... (value equals) ... | Test.kt:93:5:93:9 | break |
|
||||
| Test.kt:92:8:92:14 | ... (value equals) ... | Test.kt:94:4:95:12 | <Expr>; |
|
||||
| Test.kt:92:13:92:14 | 10 | Test.kt:92:8:92:14 | ... (value equals) ... |
|
||||
| Test.kt:93:5:93:9 | break | Test.kt:97:10:97:10 | b |
|
||||
| Test.kt:94:4:95:12 | ... -> ... | Test.kt:94:8:94:8 | a |
|
||||
| Test.kt:94:4:95:12 | <Expr>; | Test.kt:94:4:95:12 | when ... |
|
||||
| Test.kt:94:4:95:12 | when ... | Test.kt:94:4:95:12 | ... -> ... |
|
||||
| Test.kt:94:8:94:8 | a | Test.kt:94:13:94:14 | 20 |
|
||||
| Test.kt:94:8:94:14 | ... (value equals) ... | Test.kt:95:12:95:12 | c |
|
||||
| Test.kt:94:13:94:14 | 20 | Test.kt:94:8:94:14 | ... (value equals) ... |
|
||||
| Test.kt:95:12:95:12 | c | Test.kt:95:5:95:12 | return ... |
|
||||
| Test.kt:97:10:97:10 | b | Test.kt:97:3:97:10 | return ... |
|
||||
| Test.kt:2:43:79:2 | { ... } | Test.kt:11:3:16:3 | ... -> ... |
|
||||
| Test.kt:2:43:79:2 | { ... } | Test.kt:11:14:14:3 | { ... } |
|
||||
| Test.kt:2:43:79:2 | { ... } | Test.kt:18:3:18:3 | <Expr>; |
|
||||
| Test.kt:18:3:18:3 | <Expr>; | Test.kt:2:2:79:2 | Normal Exit |
|
||||
| Test.kt:18:3:18:3 | <Expr>; | Test.kt:21:3:24:11 | ... -> ... |
|
||||
| Test.kt:18:3:18:3 | <Expr>; | Test.kt:22:4:22:4 | <Expr>; |
|
||||
| Test.kt:22:4:22:4 | <Expr>; | Test.kt:30:7:30:12 | After ... (value equals) ... [false] |
|
||||
| Test.kt:22:4:22:4 | <Expr>; | Test.kt:30:15:33:3 | { ... } |
|
||||
| Test.kt:22:4:22:4 | <Expr>; | Test.kt:35:3:35:3 | <Expr>; |
|
||||
| Test.kt:35:3:35:3 | <Expr>; | Test.kt:38:10:38:10 | x |
|
||||
| Test.kt:38:10:38:10 | x | Test.kt:38:17:41:3 | { ... } |
|
||||
| Test.kt:38:10:38:10 | x | Test.kt:43:3:43:3 | <Expr>; |
|
||||
| Test.kt:81:25:98:2 | { ... } | Test.kt:86:9:86:12 | true |
|
||||
| Test.kt:86:9:86:12 | true | Test.kt:88:8:88:14 | After ... > ... [false] |
|
||||
| Test.kt:86:9:86:12 | true | Test.kt:88:17:91:4 | { ... } |
|
||||
| Test.kt:86:9:86:12 | true | Test.kt:92:4:93:9 | <Expr>; |
|
||||
| Test.kt:92:4:93:9 | <Expr>; | Test.kt:81:2:98:2 | Normal Exit |
|
||||
| Test.kt:92:4:93:9 | <Expr>; | Test.kt:93:5:93:9 | break |
|
||||
| Test.kt:92:4:93:9 | <Expr>; | Test.kt:94:4:95:12 | <Expr>; |
|
||||
| Test.kt:94:4:95:12 | <Expr>; | Test.kt:94:8:94:14 | After ... (value equals) ... [false] |
|
||||
| Test.kt:94:4:95:12 | <Expr>; | Test.kt:95:12:95:12 | c |
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
import default
|
||||
import semmle.code.java.controlflow.Dominance
|
||||
import java
|
||||
import utils.test.BasicBlock
|
||||
|
||||
from Method func, ControlFlowNode dominator, ControlFlowNode node
|
||||
from Method func, BasicBlock dominator, BasicBlock bb
|
||||
where
|
||||
iDominates(dominator, node) and
|
||||
dominator.getEnclosingStmt().getEnclosingCallable() = func and
|
||||
dominator.immediatelyDominates(bb) and
|
||||
dominator.getEnclosingCallable() = func and
|
||||
func.getDeclaringType().hasName("Test")
|
||||
select dominator, node
|
||||
select getFirstAstNodeOrSynth(dominator), getFirstAstNodeOrSynth(bb)
|
||||
|
||||
@@ -7,5 +7,5 @@ where
|
||||
iDominates(dom1, node) and
|
||||
iDominates(dom2, node) and
|
||||
dom1 != dom2 and
|
||||
func = node.getEnclosingStmt().getEnclosingCallable()
|
||||
func = node.getEnclosingCallable()
|
||||
select func, node, dom1, dom2
|
||||
|
||||
@@ -1,205 +1,386 @@
|
||||
| Test.kt:3:1:80:1 | Exceptional Exit | 0 | Test.kt:3:1:80:1 | Exceptional Exit |
|
||||
| Test.kt:3:1:80:1 | Exit | 0 | Test.kt:3:1:80:1 | Exit |
|
||||
| Test.kt:3:1:80:1 | { ... } | 0 | Test.kt:3:1:80:1 | { ... } |
|
||||
| Test.kt:3:1:80:1 | { ... } | 1 | Test.kt:3:1:80:1 | super(...) |
|
||||
| Test.kt:3:1:80:1 | { ... } | 2 | Test.kt:3:1:80:1 | { ... } |
|
||||
| Test.kt:3:1:80:1 | { ... } | 3 | Test.kt:3:1:80:1 | Normal Exit |
|
||||
| Test.kt:4:2:79:2 | Exceptional Exit | 0 | Test.kt:4:2:79:2 | Exceptional Exit |
|
||||
| Test.kt:4:2:79:2 | Exit | 0 | Test.kt:4:2:79:2 | Exit |
|
||||
| Test.kt:3:1:80:1 | Entry | 0 | Test.kt:3:1:80:1 | Entry |
|
||||
| Test.kt:3:1:80:1 | Entry | 1 | Test.kt:3:1:80:1 | { ... } |
|
||||
| Test.kt:3:1:80:1 | Entry | 2 | Test.kt:3:1:80:1 | Before super(...) |
|
||||
| Test.kt:3:1:80:1 | Entry | 3 | Test.kt:3:1:80:1 | super(...) |
|
||||
| Test.kt:3:1:80:1 | Entry | 4 | Test.kt:3:1:80:1 | After super(...) |
|
||||
| Test.kt:3:1:80:1 | Entry | 5 | Test.kt:3:1:80:1 | { ... } |
|
||||
| Test.kt:3:1:80:1 | Entry | 6 | Test.kt:3:1:80:1 | After { ... } |
|
||||
| Test.kt:3:1:80:1 | Entry | 7 | Test.kt:3:1:80:1 | Normal Exit |
|
||||
| Test.kt:3:1:80:1 | Entry | 8 | Test.kt:3:1:80:1 | Exit |
|
||||
| Test.kt:4:2:79:2 | Entry | 0 | Test.kt:4:2:79:2 | Entry |
|
||||
| Test.kt:4:2:79:2 | Entry | 1 | Test.kt:4:13:79:2 | { ... } |
|
||||
| Test.kt:4:2:79:2 | Entry | 2 | Test.kt:5:3:5:16 | var ...; |
|
||||
| Test.kt:4:2:79:2 | Entry | 3 | Test.kt:5:3:5:16 | Before x |
|
||||
| Test.kt:4:2:79:2 | Entry | 4 | Test.kt:5:16:5:16 | 0 |
|
||||
| Test.kt:4:2:79:2 | Entry | 5 | Test.kt:5:3:5:16 | x |
|
||||
| Test.kt:4:2:79:2 | Entry | 6 | Test.kt:5:3:5:16 | After x |
|
||||
| Test.kt:4:2:79:2 | Entry | 7 | Test.kt:5:3:5:16 | After var ...; |
|
||||
| Test.kt:4:2:79:2 | Entry | 8 | Test.kt:6:3:6:18 | var ...; |
|
||||
| Test.kt:4:2:79:2 | Entry | 9 | Test.kt:6:3:6:18 | Before y |
|
||||
| Test.kt:4:2:79:2 | Entry | 10 | Test.kt:6:17:6:18 | 50 |
|
||||
| Test.kt:4:2:79:2 | Entry | 11 | Test.kt:6:3:6:18 | y |
|
||||
| Test.kt:4:2:79:2 | Entry | 12 | Test.kt:6:3:6:18 | After y |
|
||||
| Test.kt:4:2:79:2 | Entry | 13 | Test.kt:6:3:6:18 | After var ...; |
|
||||
| Test.kt:4:2:79:2 | Entry | 14 | Test.kt:7:3:7:16 | var ...; |
|
||||
| Test.kt:4:2:79:2 | Entry | 15 | Test.kt:7:3:7:16 | Before z |
|
||||
| Test.kt:4:2:79:2 | Entry | 16 | Test.kt:7:16:7:16 | 0 |
|
||||
| Test.kt:4:2:79:2 | Entry | 17 | Test.kt:7:3:7:16 | z |
|
||||
| Test.kt:4:2:79:2 | Entry | 18 | Test.kt:7:3:7:16 | After z |
|
||||
| Test.kt:4:2:79:2 | Entry | 19 | Test.kt:7:3:7:16 | After var ...; |
|
||||
| Test.kt:4:2:79:2 | Entry | 20 | Test.kt:8:3:8:16 | var ...; |
|
||||
| Test.kt:4:2:79:2 | Entry | 21 | Test.kt:8:3:8:16 | Before w |
|
||||
| Test.kt:4:2:79:2 | Entry | 22 | Test.kt:8:16:8:16 | 0 |
|
||||
| Test.kt:4:2:79:2 | Entry | 23 | Test.kt:8:3:8:16 | w |
|
||||
| Test.kt:4:2:79:2 | Entry | 24 | Test.kt:8:3:8:16 | After w |
|
||||
| Test.kt:4:2:79:2 | Entry | 25 | Test.kt:8:3:8:16 | After var ...; |
|
||||
| Test.kt:4:2:79:2 | Entry | 26 | Test.kt:11:3:16:3 | <Expr>; |
|
||||
| Test.kt:4:2:79:2 | Entry | 27 | Test.kt:11:3:16:3 | when ... |
|
||||
| Test.kt:4:2:79:2 | Entry | 28 | Test.kt:11:7:14:3 | ... -> ... |
|
||||
| Test.kt:4:2:79:2 | Entry | 29 | Test.kt:11:7:11:11 | Before ... > ... |
|
||||
| Test.kt:4:2:79:2 | Entry | 30 | Test.kt:11:7:11:7 | x |
|
||||
| Test.kt:4:2:79:2 | Entry | 31 | Test.kt:11:11:11:11 | 0 |
|
||||
| Test.kt:4:2:79:2 | Entry | 32 | Test.kt:11:7:11:11 | ... > ... |
|
||||
| Test.kt:4:2:79:2 | Normal Exit | 0 | Test.kt:4:2:79:2 | Normal Exit |
|
||||
| Test.kt:4:13:79:2 | { ... } | 0 | Test.kt:4:13:79:2 | { ... } |
|
||||
| Test.kt:4:13:79:2 | { ... } | 1 | Test.kt:5:3:5:16 | var ...; |
|
||||
| Test.kt:4:13:79:2 | { ... } | 2 | Test.kt:5:16:5:16 | 0 |
|
||||
| Test.kt:4:13:79:2 | { ... } | 3 | Test.kt:5:3:5:16 | x |
|
||||
| Test.kt:4:13:79:2 | { ... } | 4 | Test.kt:6:3:6:18 | var ...; |
|
||||
| Test.kt:4:13:79:2 | { ... } | 5 | Test.kt:6:17:6:18 | 50 |
|
||||
| Test.kt:4:13:79:2 | { ... } | 6 | Test.kt:6:3:6:18 | y |
|
||||
| Test.kt:4:13:79:2 | { ... } | 7 | Test.kt:7:3:7:16 | var ...; |
|
||||
| Test.kt:4:13:79:2 | { ... } | 8 | Test.kt:7:16:7:16 | 0 |
|
||||
| Test.kt:4:13:79:2 | { ... } | 9 | Test.kt:7:3:7:16 | z |
|
||||
| Test.kt:4:13:79:2 | { ... } | 10 | Test.kt:8:3:8:16 | var ...; |
|
||||
| Test.kt:4:13:79:2 | { ... } | 11 | Test.kt:8:16:8:16 | 0 |
|
||||
| Test.kt:4:13:79:2 | { ... } | 12 | Test.kt:8:3:8:16 | w |
|
||||
| Test.kt:4:13:79:2 | { ... } | 13 | Test.kt:11:3:16:3 | <Expr>; |
|
||||
| Test.kt:4:13:79:2 | { ... } | 14 | Test.kt:11:3:16:3 | when ... |
|
||||
| Test.kt:4:13:79:2 | { ... } | 15 | Test.kt:11:7:14:3 | ... -> ... |
|
||||
| Test.kt:4:13:79:2 | { ... } | 16 | Test.kt:11:7:11:7 | x |
|
||||
| Test.kt:4:13:79:2 | { ... } | 17 | Test.kt:11:11:11:11 | 0 |
|
||||
| Test.kt:4:13:79:2 | { ... } | 18 | Test.kt:11:7:11:11 | ... > ... |
|
||||
| Test.kt:11:14:14:3 | { ... } | 0 | Test.kt:11:14:14:3 | { ... } |
|
||||
| Test.kt:11:14:14:3 | { ... } | 1 | Test.kt:12:4:12:9 | <Expr>; |
|
||||
| Test.kt:11:14:14:3 | { ... } | 2 | Test.kt:12:8:12:9 | 20 |
|
||||
| Test.kt:11:14:14:3 | { ... } | 3 | Test.kt:12:4:12:9 | ...=... |
|
||||
| Test.kt:11:14:14:3 | { ... } | 4 | Test.kt:13:4:13:9 | <Expr>; |
|
||||
| Test.kt:11:14:14:3 | { ... } | 5 | Test.kt:13:8:13:9 | 10 |
|
||||
| Test.kt:11:14:14:3 | { ... } | 6 | Test.kt:13:4:13:9 | ...=... |
|
||||
| Test.kt:14:10:16:3 | ... -> ... | 0 | Test.kt:14:10:16:3 | ... -> ... |
|
||||
| Test.kt:14:10:16:3 | ... -> ... | 1 | Test.kt:14:10:16:3 | true |
|
||||
| Test.kt:14:10:16:3 | ... -> ... | 2 | Test.kt:14:10:16:3 | { ... } |
|
||||
| Test.kt:14:10:16:3 | ... -> ... | 3 | Test.kt:15:4:15:9 | <Expr>; |
|
||||
| Test.kt:14:10:16:3 | ... -> ... | 4 | Test.kt:15:8:15:9 | 30 |
|
||||
| Test.kt:14:10:16:3 | ... -> ... | 5 | Test.kt:15:4:15:9 | ...=... |
|
||||
| Test.kt:18:3:18:7 | <Expr>; | 0 | Test.kt:18:3:18:7 | <Expr>; |
|
||||
| Test.kt:18:3:18:7 | <Expr>; | 1 | Test.kt:18:7:18:7 | 0 |
|
||||
| Test.kt:18:3:18:7 | <Expr>; | 2 | Test.kt:18:3:18:7 | ...=... |
|
||||
| Test.kt:18:3:18:7 | <Expr>; | 3 | Test.kt:21:3:24:9 | <Expr>; |
|
||||
| Test.kt:18:3:18:7 | <Expr>; | 4 | Test.kt:21:3:24:9 | when ... |
|
||||
| Test.kt:18:3:18:7 | <Expr>; | 5 | Test.kt:21:6:22:9 | ... -> ... |
|
||||
| Test.kt:18:3:18:7 | <Expr>; | 6 | Test.kt:21:6:21:6 | x |
|
||||
| Test.kt:18:3:18:7 | <Expr>; | 7 | Test.kt:21:10:21:10 | 0 |
|
||||
| Test.kt:18:3:18:7 | <Expr>; | 8 | Test.kt:21:6:21:10 | ... < ... |
|
||||
| Test.kt:22:4:22:9 | <Expr>; | 0 | Test.kt:22:4:22:9 | <Expr>; |
|
||||
| Test.kt:22:4:22:9 | <Expr>; | 1 | Test.kt:22:8:22:9 | 40 |
|
||||
| Test.kt:22:4:22:9 | <Expr>; | 2 | Test.kt:22:4:22:9 | ...=... |
|
||||
| Test.kt:22:4:22:9 | <Expr>; | 3 | Test.kt:27:3:27:8 | <Expr>; |
|
||||
| Test.kt:22:4:22:9 | <Expr>; | 4 | Test.kt:27:7:27:8 | 10 |
|
||||
| Test.kt:22:4:22:9 | <Expr>; | 5 | Test.kt:27:3:27:8 | ...=... |
|
||||
| Test.kt:22:4:22:9 | <Expr>; | 6 | Test.kt:30:3:33:3 | <Expr>; |
|
||||
| Test.kt:22:4:22:9 | <Expr>; | 7 | Test.kt:30:3:33:3 | when ... |
|
||||
| Test.kt:22:4:22:9 | <Expr>; | 8 | Test.kt:30:7:33:3 | ... -> ... |
|
||||
| Test.kt:22:4:22:9 | <Expr>; | 9 | Test.kt:30:7:30:7 | x |
|
||||
| Test.kt:22:4:22:9 | <Expr>; | 10 | Test.kt:30:12:30:12 | 0 |
|
||||
| Test.kt:22:4:22:9 | <Expr>; | 11 | Test.kt:30:7:30:12 | ... (value equals) ... |
|
||||
| Test.kt:24:4:24:9 | ... -> ... | 0 | Test.kt:24:4:24:9 | ... -> ... |
|
||||
| Test.kt:24:4:24:9 | ... -> ... | 1 | Test.kt:24:4:24:9 | true |
|
||||
| Test.kt:24:4:24:9 | ... -> ... | 2 | Test.kt:24:10:24:10 | INSTANCE |
|
||||
| Test.kt:24:4:24:9 | ... -> ... | 3 | Test.kt:24:4:24:9 | return ... |
|
||||
| Test.kt:30:15:33:3 | { ... } | 0 | Test.kt:30:15:33:3 | { ... } |
|
||||
| Test.kt:30:15:33:3 | { ... } | 1 | Test.kt:31:4:31:9 | <Expr>; |
|
||||
| Test.kt:30:15:33:3 | { ... } | 2 | Test.kt:31:8:31:9 | 60 |
|
||||
| Test.kt:30:15:33:3 | { ... } | 3 | Test.kt:31:4:31:9 | ...=... |
|
||||
| Test.kt:30:15:33:3 | { ... } | 4 | Test.kt:32:4:32:9 | <Expr>; |
|
||||
| Test.kt:30:15:33:3 | { ... } | 5 | Test.kt:32:8:32:9 | 10 |
|
||||
| Test.kt:30:15:33:3 | { ... } | 6 | Test.kt:32:4:32:9 | ...=... |
|
||||
| Test.kt:35:3:35:8 | <Expr>; | 0 | Test.kt:35:3:35:8 | <Expr>; |
|
||||
| Test.kt:35:3:35:8 | <Expr>; | 1 | Test.kt:35:7:35:8 | 20 |
|
||||
| Test.kt:35:3:35:8 | <Expr>; | 2 | Test.kt:35:3:35:8 | ...=... |
|
||||
| Test.kt:35:3:35:8 | <Expr>; | 3 | Test.kt:38:3:41:3 | while (...) |
|
||||
| Test.kt:38:9:38:9 | x | 0 | Test.kt:38:9:38:9 | x |
|
||||
| Test.kt:38:9:38:9 | x | 1 | Test.kt:38:13:38:13 | 0 |
|
||||
| Test.kt:38:9:38:9 | x | 2 | Test.kt:38:9:38:13 | ... > ... |
|
||||
| Test.kt:38:16:41:3 | { ... } | 0 | Test.kt:38:16:41:3 | { ... } |
|
||||
| Test.kt:38:16:41:3 | { ... } | 1 | Test.kt:39:4:39:9 | <Expr>; |
|
||||
| Test.kt:38:16:41:3 | { ... } | 2 | Test.kt:39:8:39:9 | 10 |
|
||||
| Test.kt:38:16:41:3 | { ... } | 3 | Test.kt:39:4:39:9 | ...=... |
|
||||
| Test.kt:38:16:41:3 | { ... } | 4 | Test.kt:40:4:40:6 | <Expr>; |
|
||||
| Test.kt:38:16:41:3 | { ... } | 5 | Test.kt:40:4:40:6 | <Stmt> |
|
||||
| Test.kt:38:16:41:3 | { ... } | 6 | Test.kt:40:4:40:6 | { ... } |
|
||||
| Test.kt:38:16:41:3 | { ... } | 7 | Test.kt:40:4:40:6 | var ...; |
|
||||
| Test.kt:38:16:41:3 | { ... } | 8 | Test.kt:40:4:40:4 | x |
|
||||
| Test.kt:38:16:41:3 | { ... } | 9 | Test.kt:40:4:40:6 | <unary> |
|
||||
| Test.kt:38:16:41:3 | { ... } | 10 | Test.kt:40:4:40:6 | <Expr>; |
|
||||
| Test.kt:38:16:41:3 | { ... } | 11 | Test.kt:40:4:40:6 | <unary> |
|
||||
| Test.kt:38:16:41:3 | { ... } | 12 | Test.kt:40:4:40:6 | dec(...) |
|
||||
| Test.kt:38:16:41:3 | { ... } | 13 | Test.kt:40:4:40:6 | ...=... |
|
||||
| Test.kt:38:16:41:3 | { ... } | 14 | Test.kt:40:4:40:6 | <Expr>; |
|
||||
| Test.kt:38:16:41:3 | { ... } | 15 | Test.kt:40:4:40:6 | <unary> |
|
||||
| Test.kt:38:16:41:3 | { ... } | 16 | Test.kt:40:4:40:6 | <implicit coercion to unit> |
|
||||
| Test.kt:43:3:43:8 | <Expr>; | 0 | Test.kt:43:3:43:8 | <Expr>; |
|
||||
| Test.kt:43:3:43:8 | <Expr>; | 1 | Test.kt:43:7:43:8 | 30 |
|
||||
| Test.kt:43:3:43:8 | <Expr>; | 2 | Test.kt:43:3:43:8 | ...=... |
|
||||
| Test.kt:43:3:43:8 | <Expr>; | 3 | Test.kt:73:3:73:8 | <Expr>; |
|
||||
| Test.kt:43:3:43:8 | <Expr>; | 4 | Test.kt:73:7:73:8 | 50 |
|
||||
| Test.kt:43:3:43:8 | <Expr>; | 5 | Test.kt:73:3:73:8 | ...=... |
|
||||
| Test.kt:43:3:43:8 | <Expr>; | 6 | Test.kt:77:3:77:8 | <Expr>; |
|
||||
| Test.kt:43:3:43:8 | <Expr>; | 7 | Test.kt:77:7:77:8 | 40 |
|
||||
| Test.kt:43:3:43:8 | <Expr>; | 8 | Test.kt:77:3:77:8 | ...=... |
|
||||
| Test.kt:43:3:43:8 | <Expr>; | 9 | Test.kt:78:9:78:9 | INSTANCE |
|
||||
| Test.kt:43:3:43:8 | <Expr>; | 10 | Test.kt:78:3:78:8 | return ... |
|
||||
| Test.kt:82:1:89:1 | Exceptional Exit | 0 | Test.kt:82:1:89:1 | Exceptional Exit |
|
||||
| Test.kt:4:2:79:2 | Normal Exit | 1 | Test.kt:4:2:79:2 | Exit |
|
||||
| Test.kt:11:3:16:3 | After when ... | 0 | Test.kt:11:3:16:3 | After when ... |
|
||||
| Test.kt:11:3:16:3 | After when ... | 1 | Test.kt:11:3:16:3 | After <Expr>; |
|
||||
| Test.kt:11:3:16:3 | After when ... | 2 | Test.kt:18:3:18:7 | <Expr>; |
|
||||
| Test.kt:11:3:16:3 | After when ... | 3 | Test.kt:18:3:18:7 | Before ...=... |
|
||||
| Test.kt:11:3:16:3 | After when ... | 4 | Test.kt:18:3:18:7 | z |
|
||||
| Test.kt:11:3:16:3 | After when ... | 5 | Test.kt:18:7:18:7 | 0 |
|
||||
| Test.kt:11:3:16:3 | After when ... | 6 | Test.kt:18:3:18:7 | ...=... |
|
||||
| Test.kt:11:3:16:3 | After when ... | 7 | Test.kt:18:3:18:7 | After ...=... |
|
||||
| Test.kt:11:3:16:3 | After when ... | 8 | Test.kt:18:3:18:7 | After <Expr>; |
|
||||
| Test.kt:11:3:16:3 | After when ... | 9 | Test.kt:21:3:24:9 | <Expr>; |
|
||||
| Test.kt:11:3:16:3 | After when ... | 10 | Test.kt:21:3:24:9 | when ... |
|
||||
| Test.kt:11:3:16:3 | After when ... | 11 | Test.kt:21:6:22:9 | ... -> ... |
|
||||
| Test.kt:11:3:16:3 | After when ... | 12 | Test.kt:21:6:21:10 | Before ... < ... |
|
||||
| Test.kt:11:3:16:3 | After when ... | 13 | Test.kt:21:6:21:6 | x |
|
||||
| Test.kt:11:3:16:3 | After when ... | 14 | Test.kt:21:10:21:10 | 0 |
|
||||
| Test.kt:11:3:16:3 | After when ... | 15 | Test.kt:21:6:21:10 | ... < ... |
|
||||
| Test.kt:11:7:11:11 | After ... > ... [false] | 0 | Test.kt:11:7:11:11 | After ... > ... [false] |
|
||||
| Test.kt:11:7:11:11 | After ... > ... [false] | 1 | Test.kt:14:10:16:3 | ... -> ... |
|
||||
| Test.kt:11:7:11:11 | After ... > ... [false] | 2 | Test.kt:14:10:16:3 | true |
|
||||
| Test.kt:11:7:11:11 | After ... > ... [false] | 3 | Test.kt:14:10:16:3 | After true [true] |
|
||||
| Test.kt:11:7:11:11 | After ... > ... [false] | 4 | Test.kt:14:10:16:3 | { ... } |
|
||||
| Test.kt:11:7:11:11 | After ... > ... [false] | 5 | Test.kt:15:4:15:9 | <Expr>; |
|
||||
| Test.kt:11:7:11:11 | After ... > ... [false] | 6 | Test.kt:15:4:15:9 | Before ...=... |
|
||||
| Test.kt:11:7:11:11 | After ... > ... [false] | 7 | Test.kt:15:4:15:9 | y |
|
||||
| Test.kt:11:7:11:11 | After ... > ... [false] | 8 | Test.kt:15:8:15:9 | 30 |
|
||||
| Test.kt:11:7:11:11 | After ... > ... [false] | 9 | Test.kt:15:4:15:9 | ...=... |
|
||||
| Test.kt:11:7:11:11 | After ... > ... [false] | 10 | Test.kt:15:4:15:9 | After ...=... |
|
||||
| Test.kt:11:7:11:11 | After ... > ... [false] | 11 | Test.kt:15:4:15:9 | After <Expr>; |
|
||||
| Test.kt:11:7:11:11 | After ... > ... [false] | 12 | Test.kt:14:10:16:3 | After { ... } |
|
||||
| Test.kt:11:7:11:11 | After ... > ... [true] | 0 | Test.kt:11:7:11:11 | After ... > ... [true] |
|
||||
| Test.kt:11:7:11:11 | After ... > ... [true] | 1 | Test.kt:11:14:14:3 | { ... } |
|
||||
| Test.kt:11:7:11:11 | After ... > ... [true] | 2 | Test.kt:12:4:12:9 | <Expr>; |
|
||||
| Test.kt:11:7:11:11 | After ... > ... [true] | 3 | Test.kt:12:4:12:9 | Before ...=... |
|
||||
| Test.kt:11:7:11:11 | After ... > ... [true] | 4 | Test.kt:12:4:12:9 | y |
|
||||
| Test.kt:11:7:11:11 | After ... > ... [true] | 5 | Test.kt:12:8:12:9 | 20 |
|
||||
| Test.kt:11:7:11:11 | After ... > ... [true] | 6 | Test.kt:12:4:12:9 | ...=... |
|
||||
| Test.kt:11:7:11:11 | After ... > ... [true] | 7 | Test.kt:12:4:12:9 | After ...=... |
|
||||
| Test.kt:11:7:11:11 | After ... > ... [true] | 8 | Test.kt:12:4:12:9 | After <Expr>; |
|
||||
| Test.kt:11:7:11:11 | After ... > ... [true] | 9 | Test.kt:13:4:13:9 | <Expr>; |
|
||||
| Test.kt:11:7:11:11 | After ... > ... [true] | 10 | Test.kt:13:4:13:9 | Before ...=... |
|
||||
| Test.kt:11:7:11:11 | After ... > ... [true] | 11 | Test.kt:13:4:13:9 | z |
|
||||
| Test.kt:11:7:11:11 | After ... > ... [true] | 12 | Test.kt:13:8:13:9 | 10 |
|
||||
| Test.kt:11:7:11:11 | After ... > ... [true] | 13 | Test.kt:13:4:13:9 | ...=... |
|
||||
| Test.kt:11:7:11:11 | After ... > ... [true] | 14 | Test.kt:13:4:13:9 | After ...=... |
|
||||
| Test.kt:11:7:11:11 | After ... > ... [true] | 15 | Test.kt:13:4:13:9 | After <Expr>; |
|
||||
| Test.kt:11:7:11:11 | After ... > ... [true] | 16 | Test.kt:11:14:14:3 | After { ... } |
|
||||
| Test.kt:21:6:21:10 | After ... < ... [false] | 0 | Test.kt:21:6:21:10 | After ... < ... [false] |
|
||||
| Test.kt:21:6:21:10 | After ... < ... [false] | 1 | Test.kt:24:4:24:9 | ... -> ... |
|
||||
| Test.kt:21:6:21:10 | After ... < ... [false] | 2 | Test.kt:24:4:24:9 | true |
|
||||
| Test.kt:21:6:21:10 | After ... < ... [false] | 3 | Test.kt:24:4:24:9 | After true [true] |
|
||||
| Test.kt:21:6:21:10 | After ... < ... [false] | 4 | Test.kt:24:4:24:9 | Before return ... |
|
||||
| Test.kt:21:6:21:10 | After ... < ... [false] | 5 | Test.kt:24:10:24:10 | INSTANCE |
|
||||
| Test.kt:21:6:21:10 | After ... < ... [false] | 6 | Test.kt:24:4:24:9 | return ... |
|
||||
| Test.kt:21:6:21:10 | After ... < ... [true] | 0 | Test.kt:21:6:21:10 | After ... < ... [true] |
|
||||
| Test.kt:21:6:21:10 | After ... < ... [true] | 1 | Test.kt:22:4:22:9 | <Expr>; |
|
||||
| Test.kt:21:6:21:10 | After ... < ... [true] | 2 | Test.kt:22:4:22:9 | Before ...=... |
|
||||
| Test.kt:21:6:21:10 | After ... < ... [true] | 3 | Test.kt:22:4:22:9 | y |
|
||||
| Test.kt:21:6:21:10 | After ... < ... [true] | 4 | Test.kt:22:8:22:9 | 40 |
|
||||
| Test.kt:21:6:21:10 | After ... < ... [true] | 5 | Test.kt:22:4:22:9 | ...=... |
|
||||
| Test.kt:21:6:21:10 | After ... < ... [true] | 6 | Test.kt:22:4:22:9 | After ...=... |
|
||||
| Test.kt:21:6:21:10 | After ... < ... [true] | 7 | Test.kt:22:4:22:9 | After <Expr>; |
|
||||
| Test.kt:21:6:21:10 | After ... < ... [true] | 8 | Test.kt:21:3:24:9 | After when ... |
|
||||
| Test.kt:21:6:21:10 | After ... < ... [true] | 9 | Test.kt:21:3:24:9 | After <Expr>; |
|
||||
| Test.kt:21:6:21:10 | After ... < ... [true] | 10 | Test.kt:27:3:27:8 | <Expr>; |
|
||||
| Test.kt:21:6:21:10 | After ... < ... [true] | 11 | Test.kt:27:3:27:8 | Before ...=... |
|
||||
| Test.kt:21:6:21:10 | After ... < ... [true] | 12 | Test.kt:27:3:27:8 | z |
|
||||
| Test.kt:21:6:21:10 | After ... < ... [true] | 13 | Test.kt:27:7:27:8 | 10 |
|
||||
| Test.kt:21:6:21:10 | After ... < ... [true] | 14 | Test.kt:27:3:27:8 | ...=... |
|
||||
| Test.kt:21:6:21:10 | After ... < ... [true] | 15 | Test.kt:27:3:27:8 | After ...=... |
|
||||
| Test.kt:21:6:21:10 | After ... < ... [true] | 16 | Test.kt:27:3:27:8 | After <Expr>; |
|
||||
| Test.kt:21:6:21:10 | After ... < ... [true] | 17 | Test.kt:30:3:33:3 | <Expr>; |
|
||||
| Test.kt:21:6:21:10 | After ... < ... [true] | 18 | Test.kt:30:3:33:3 | when ... |
|
||||
| Test.kt:21:6:21:10 | After ... < ... [true] | 19 | Test.kt:30:7:33:3 | ... -> ... |
|
||||
| Test.kt:21:6:21:10 | After ... < ... [true] | 20 | Test.kt:30:7:30:12 | Before ... (value equals) ... |
|
||||
| Test.kt:21:6:21:10 | After ... < ... [true] | 21 | Test.kt:30:7:30:7 | x |
|
||||
| Test.kt:21:6:21:10 | After ... < ... [true] | 22 | Test.kt:30:12:30:12 | 0 |
|
||||
| Test.kt:21:6:21:10 | After ... < ... [true] | 23 | Test.kt:30:7:30:12 | ... (value equals) ... |
|
||||
| Test.kt:30:3:33:3 | After when ... | 0 | Test.kt:30:3:33:3 | After when ... |
|
||||
| Test.kt:30:3:33:3 | After when ... | 1 | Test.kt:30:3:33:3 | After <Expr>; |
|
||||
| Test.kt:30:3:33:3 | After when ... | 2 | Test.kt:35:3:35:8 | <Expr>; |
|
||||
| Test.kt:30:3:33:3 | After when ... | 3 | Test.kt:35:3:35:8 | Before ...=... |
|
||||
| Test.kt:30:3:33:3 | After when ... | 4 | Test.kt:35:3:35:8 | z |
|
||||
| Test.kt:30:3:33:3 | After when ... | 5 | Test.kt:35:7:35:8 | 20 |
|
||||
| Test.kt:30:3:33:3 | After when ... | 6 | Test.kt:35:3:35:8 | ...=... |
|
||||
| Test.kt:30:3:33:3 | After when ... | 7 | Test.kt:35:3:35:8 | After ...=... |
|
||||
| Test.kt:30:3:33:3 | After when ... | 8 | Test.kt:35:3:35:8 | After <Expr>; |
|
||||
| Test.kt:30:3:33:3 | After when ... | 9 | Test.kt:38:3:41:3 | while (...) |
|
||||
| Test.kt:30:7:30:12 | After ... (value equals) ... [false] | 0 | Test.kt:30:7:30:12 | After ... (value equals) ... [false] |
|
||||
| Test.kt:30:7:30:12 | After ... (value equals) ... [true] | 0 | Test.kt:30:7:30:12 | After ... (value equals) ... [true] |
|
||||
| Test.kt:30:7:30:12 | After ... (value equals) ... [true] | 1 | Test.kt:30:15:33:3 | { ... } |
|
||||
| Test.kt:30:7:30:12 | After ... (value equals) ... [true] | 2 | Test.kt:31:4:31:9 | <Expr>; |
|
||||
| Test.kt:30:7:30:12 | After ... (value equals) ... [true] | 3 | Test.kt:31:4:31:9 | Before ...=... |
|
||||
| Test.kt:30:7:30:12 | After ... (value equals) ... [true] | 4 | Test.kt:31:4:31:9 | y |
|
||||
| Test.kt:30:7:30:12 | After ... (value equals) ... [true] | 5 | Test.kt:31:8:31:9 | 60 |
|
||||
| Test.kt:30:7:30:12 | After ... (value equals) ... [true] | 6 | Test.kt:31:4:31:9 | ...=... |
|
||||
| Test.kt:30:7:30:12 | After ... (value equals) ... [true] | 7 | Test.kt:31:4:31:9 | After ...=... |
|
||||
| Test.kt:30:7:30:12 | After ... (value equals) ... [true] | 8 | Test.kt:31:4:31:9 | After <Expr>; |
|
||||
| Test.kt:30:7:30:12 | After ... (value equals) ... [true] | 9 | Test.kt:32:4:32:9 | <Expr>; |
|
||||
| Test.kt:30:7:30:12 | After ... (value equals) ... [true] | 10 | Test.kt:32:4:32:9 | Before ...=... |
|
||||
| Test.kt:30:7:30:12 | After ... (value equals) ... [true] | 11 | Test.kt:32:4:32:9 | z |
|
||||
| Test.kt:30:7:30:12 | After ... (value equals) ... [true] | 12 | Test.kt:32:8:32:9 | 10 |
|
||||
| Test.kt:30:7:30:12 | After ... (value equals) ... [true] | 13 | Test.kt:32:4:32:9 | ...=... |
|
||||
| Test.kt:30:7:30:12 | After ... (value equals) ... [true] | 14 | Test.kt:32:4:32:9 | After ...=... |
|
||||
| Test.kt:30:7:30:12 | After ... (value equals) ... [true] | 15 | Test.kt:32:4:32:9 | After <Expr>; |
|
||||
| Test.kt:30:7:30:12 | After ... (value equals) ... [true] | 16 | Test.kt:30:15:33:3 | After { ... } |
|
||||
| Test.kt:38:3:41:3 | [LoopHeader] while (...) | 0 | Test.kt:38:3:41:3 | [LoopHeader] while (...) |
|
||||
| Test.kt:38:3:41:3 | [LoopHeader] while (...) | 1 | Test.kt:38:9:38:13 | Before ... > ... |
|
||||
| Test.kt:38:3:41:3 | [LoopHeader] while (...) | 2 | Test.kt:38:9:38:9 | x |
|
||||
| Test.kt:38:3:41:3 | [LoopHeader] while (...) | 3 | Test.kt:38:13:38:13 | 0 |
|
||||
| Test.kt:38:3:41:3 | [LoopHeader] while (...) | 4 | Test.kt:38:9:38:13 | ... > ... |
|
||||
| Test.kt:38:9:38:13 | After ... > ... [false] | 0 | Test.kt:38:9:38:13 | After ... > ... [false] |
|
||||
| Test.kt:38:9:38:13 | After ... > ... [false] | 1 | Test.kt:38:3:41:3 | After while (...) |
|
||||
| Test.kt:38:9:38:13 | After ... > ... [false] | 2 | Test.kt:43:3:43:8 | <Expr>; |
|
||||
| Test.kt:38:9:38:13 | After ... > ... [false] | 3 | Test.kt:43:3:43:8 | Before ...=... |
|
||||
| Test.kt:38:9:38:13 | After ... > ... [false] | 4 | Test.kt:43:3:43:8 | z |
|
||||
| Test.kt:38:9:38:13 | After ... > ... [false] | 5 | Test.kt:43:7:43:8 | 30 |
|
||||
| Test.kt:38:9:38:13 | After ... > ... [false] | 6 | Test.kt:43:3:43:8 | ...=... |
|
||||
| Test.kt:38:9:38:13 | After ... > ... [false] | 7 | Test.kt:43:3:43:8 | After ...=... |
|
||||
| Test.kt:38:9:38:13 | After ... > ... [false] | 8 | Test.kt:43:3:43:8 | After <Expr>; |
|
||||
| Test.kt:38:9:38:13 | After ... > ... [false] | 9 | Test.kt:73:3:73:8 | <Expr>; |
|
||||
| Test.kt:38:9:38:13 | After ... > ... [false] | 10 | Test.kt:73:3:73:8 | Before ...=... |
|
||||
| Test.kt:38:9:38:13 | After ... > ... [false] | 11 | Test.kt:73:3:73:8 | z |
|
||||
| Test.kt:38:9:38:13 | After ... > ... [false] | 12 | Test.kt:73:7:73:8 | 50 |
|
||||
| Test.kt:38:9:38:13 | After ... > ... [false] | 13 | Test.kt:73:3:73:8 | ...=... |
|
||||
| Test.kt:38:9:38:13 | After ... > ... [false] | 14 | Test.kt:73:3:73:8 | After ...=... |
|
||||
| Test.kt:38:9:38:13 | After ... > ... [false] | 15 | Test.kt:73:3:73:8 | After <Expr>; |
|
||||
| Test.kt:38:9:38:13 | After ... > ... [false] | 16 | Test.kt:77:3:77:8 | <Expr>; |
|
||||
| Test.kt:38:9:38:13 | After ... > ... [false] | 17 | Test.kt:77:3:77:8 | Before ...=... |
|
||||
| Test.kt:38:9:38:13 | After ... > ... [false] | 18 | Test.kt:77:3:77:8 | w |
|
||||
| Test.kt:38:9:38:13 | After ... > ... [false] | 19 | Test.kt:77:7:77:8 | 40 |
|
||||
| Test.kt:38:9:38:13 | After ... > ... [false] | 20 | Test.kt:77:3:77:8 | ...=... |
|
||||
| Test.kt:38:9:38:13 | After ... > ... [false] | 21 | Test.kt:77:3:77:8 | After ...=... |
|
||||
| Test.kt:38:9:38:13 | After ... > ... [false] | 22 | Test.kt:77:3:77:8 | After <Expr>; |
|
||||
| Test.kt:38:9:38:13 | After ... > ... [false] | 23 | Test.kt:78:3:78:8 | Before return ... |
|
||||
| Test.kt:38:9:38:13 | After ... > ... [false] | 24 | Test.kt:78:9:78:9 | INSTANCE |
|
||||
| Test.kt:38:9:38:13 | After ... > ... [false] | 25 | Test.kt:78:3:78:8 | return ... |
|
||||
| Test.kt:38:9:38:13 | After ... > ... [true] | 0 | Test.kt:38:9:38:13 | After ... > ... [true] |
|
||||
| Test.kt:38:9:38:13 | After ... > ... [true] | 1 | Test.kt:38:16:41:3 | { ... } |
|
||||
| Test.kt:38:9:38:13 | After ... > ... [true] | 2 | Test.kt:39:4:39:9 | <Expr>; |
|
||||
| Test.kt:38:9:38:13 | After ... > ... [true] | 3 | Test.kt:39:4:39:9 | Before ...=... |
|
||||
| Test.kt:38:9:38:13 | After ... > ... [true] | 4 | Test.kt:39:4:39:9 | y |
|
||||
| Test.kt:38:9:38:13 | After ... > ... [true] | 5 | Test.kt:39:8:39:9 | 10 |
|
||||
| Test.kt:38:9:38:13 | After ... > ... [true] | 6 | Test.kt:39:4:39:9 | ...=... |
|
||||
| Test.kt:38:9:38:13 | After ... > ... [true] | 7 | Test.kt:39:4:39:9 | After ...=... |
|
||||
| Test.kt:38:9:38:13 | After ... > ... [true] | 8 | Test.kt:39:4:39:9 | After <Expr>; |
|
||||
| Test.kt:38:9:38:13 | After ... > ... [true] | 9 | Test.kt:40:4:40:6 | <Expr>; |
|
||||
| Test.kt:38:9:38:13 | After ... > ... [true] | 10 | Test.kt:40:4:40:6 | Before <implicit coercion to unit> |
|
||||
| Test.kt:38:9:38:13 | After ... > ... [true] | 11 | Test.kt:40:4:40:6 | Before <Stmt> |
|
||||
| Test.kt:38:9:38:13 | After ... > ... [true] | 12 | Test.kt:40:4:40:6 | { ... } |
|
||||
| Test.kt:38:9:38:13 | After ... > ... [true] | 13 | Test.kt:40:4:40:6 | var ...; |
|
||||
| Test.kt:38:9:38:13 | After ... > ... [true] | 14 | Test.kt:40:4:40:6 | Before <unary> |
|
||||
| Test.kt:38:9:38:13 | After ... > ... [true] | 15 | Test.kt:40:4:40:4 | x |
|
||||
| Test.kt:38:9:38:13 | After ... > ... [true] | 16 | Test.kt:40:4:40:6 | <unary> |
|
||||
| Test.kt:38:9:38:13 | After ... > ... [true] | 17 | Test.kt:40:4:40:6 | After <unary> |
|
||||
| Test.kt:38:9:38:13 | After ... > ... [true] | 18 | Test.kt:40:4:40:6 | After var ...; |
|
||||
| Test.kt:38:9:38:13 | After ... > ... [true] | 19 | Test.kt:40:4:40:6 | <Expr>; |
|
||||
| Test.kt:38:9:38:13 | After ... > ... [true] | 20 | Test.kt:40:4:40:6 | Before ...=... |
|
||||
| Test.kt:38:9:38:13 | After ... > ... [true] | 21 | Test.kt:40:4:40:6 | x |
|
||||
| Test.kt:38:9:38:13 | After ... > ... [true] | 22 | Test.kt:40:4:40:6 | Before dec(...) |
|
||||
| Test.kt:38:9:38:13 | After ... > ... [true] | 23 | Test.kt:40:4:40:6 | <unary> |
|
||||
| Test.kt:38:9:38:13 | After ... > ... [true] | 24 | Test.kt:40:4:40:6 | dec(...) |
|
||||
| Test.kt:38:9:38:13 | After ... > ... [true] | 25 | Test.kt:40:4:40:6 | After dec(...) |
|
||||
| Test.kt:38:9:38:13 | After ... > ... [true] | 26 | Test.kt:40:4:40:6 | ...=... |
|
||||
| Test.kt:38:9:38:13 | After ... > ... [true] | 27 | Test.kt:40:4:40:6 | After ...=... |
|
||||
| Test.kt:38:9:38:13 | After ... > ... [true] | 28 | Test.kt:40:4:40:6 | After <Expr>; |
|
||||
| Test.kt:38:9:38:13 | After ... > ... [true] | 29 | Test.kt:40:4:40:6 | <Expr>; |
|
||||
| Test.kt:38:9:38:13 | After ... > ... [true] | 30 | Test.kt:40:4:40:6 | <unary> |
|
||||
| Test.kt:38:9:38:13 | After ... > ... [true] | 31 | Test.kt:40:4:40:6 | After <Expr>; |
|
||||
| Test.kt:38:9:38:13 | After ... > ... [true] | 32 | Test.kt:40:4:40:6 | After { ... } |
|
||||
| Test.kt:38:9:38:13 | After ... > ... [true] | 33 | Test.kt:40:4:40:6 | <Stmt> |
|
||||
| Test.kt:38:9:38:13 | After ... > ... [true] | 34 | Test.kt:40:4:40:6 | After <Stmt> |
|
||||
| Test.kt:38:9:38:13 | After ... > ... [true] | 35 | Test.kt:40:4:40:6 | <implicit coercion to unit> |
|
||||
| Test.kt:38:9:38:13 | After ... > ... [true] | 36 | Test.kt:40:4:40:6 | After <implicit coercion to unit> |
|
||||
| Test.kt:38:9:38:13 | After ... > ... [true] | 37 | Test.kt:40:4:40:6 | After <Expr>; |
|
||||
| Test.kt:38:9:38:13 | After ... > ... [true] | 38 | Test.kt:38:16:41:3 | After { ... } |
|
||||
| Test.kt:82:1:89:1 | Entry | 0 | Test.kt:82:1:89:1 | Entry |
|
||||
| Test.kt:82:1:89:1 | Entry | 1 | Test.kt:82:21:89:1 | { ... } |
|
||||
| Test.kt:82:1:89:1 | Entry | 2 | Test.kt:83:2:88:2 | try ... |
|
||||
| Test.kt:82:1:89:1 | Entry | 3 | Test.kt:83:6:86:2 | { ... } |
|
||||
| Test.kt:82:1:89:1 | Entry | 4 | Test.kt:84:3:84:18 | var ...; |
|
||||
| Test.kt:82:1:89:1 | Entry | 5 | Test.kt:84:3:84:18 | Before x |
|
||||
| Test.kt:82:1:89:1 | Entry | 6 | Test.kt:84:11:84:18 | Before (...)... |
|
||||
| Test.kt:82:1:89:1 | Entry | 7 | Test.kt:84:11:84:11 | o |
|
||||
| Test.kt:82:1:89:1 | Entry | 8 | Test.kt:84:11:84:18 | (...)... |
|
||||
| Test.kt:82:1:89:1 | Exit | 0 | Test.kt:82:1:89:1 | Exit |
|
||||
| Test.kt:82:1:89:1 | Normal Exit | 0 | Test.kt:82:1:89:1 | Normal Exit |
|
||||
| Test.kt:82:21:89:1 | { ... } | 0 | Test.kt:82:21:89:1 | { ... } |
|
||||
| Test.kt:82:21:89:1 | { ... } | 1 | Test.kt:83:2:88:2 | try ... |
|
||||
| Test.kt:82:21:89:1 | { ... } | 2 | Test.kt:83:6:86:2 | { ... } |
|
||||
| Test.kt:82:21:89:1 | { ... } | 3 | Test.kt:84:3:84:18 | var ...; |
|
||||
| Test.kt:82:21:89:1 | { ... } | 4 | Test.kt:84:11:84:11 | o |
|
||||
| Test.kt:82:21:89:1 | { ... } | 5 | Test.kt:84:11:84:18 | (...)... |
|
||||
| Test.kt:84:3:84:18 | x | 0 | Test.kt:84:3:84:18 | x |
|
||||
| Test.kt:84:3:84:18 | x | 1 | Test.kt:85:10:85:10 | 1 |
|
||||
| Test.kt:84:3:84:18 | x | 2 | Test.kt:85:3:85:10 | return ... |
|
||||
| Test.kt:84:11:84:18 | After (...)... | 0 | Test.kt:84:11:84:18 | After (...)... |
|
||||
| Test.kt:84:11:84:18 | After (...)... | 1 | Test.kt:84:3:84:18 | x |
|
||||
| Test.kt:84:11:84:18 | After (...)... | 2 | Test.kt:84:3:84:18 | After x |
|
||||
| Test.kt:84:11:84:18 | After (...)... | 3 | Test.kt:84:3:84:18 | After var ...; |
|
||||
| Test.kt:84:11:84:18 | After (...)... | 4 | Test.kt:85:3:85:10 | Before return ... |
|
||||
| Test.kt:84:11:84:18 | After (...)... | 5 | Test.kt:85:10:85:10 | 1 |
|
||||
| Test.kt:84:11:84:18 | After (...)... | 6 | Test.kt:85:3:85:10 | return ... |
|
||||
| Test.kt:86:4:88:2 | After catch (...) [match] | 0 | Test.kt:86:4:88:2 | After catch (...) [match] |
|
||||
| Test.kt:86:4:88:2 | After catch (...) [match] | 1 | Test.kt:86:11:86:31 | e |
|
||||
| Test.kt:86:4:88:2 | After catch (...) [match] | 2 | Test.kt:86:34:88:2 | { ... } |
|
||||
| Test.kt:86:4:88:2 | After catch (...) [match] | 3 | Test.kt:87:3:87:10 | Before return ... |
|
||||
| Test.kt:86:4:88:2 | After catch (...) [match] | 4 | Test.kt:87:10:87:10 | 2 |
|
||||
| Test.kt:86:4:88:2 | After catch (...) [match] | 5 | Test.kt:87:3:87:10 | return ... |
|
||||
| Test.kt:86:4:88:2 | After catch (...) [no-match] | 0 | Test.kt:86:4:88:2 | After catch (...) [no-match] |
|
||||
| Test.kt:86:4:88:2 | After catch (...) [no-match] | 1 | Test.kt:82:1:89:1 | Exceptional Exit |
|
||||
| Test.kt:86:4:88:2 | catch (...) | 0 | Test.kt:86:4:88:2 | catch (...) |
|
||||
| Test.kt:86:4:88:2 | catch (...) | 1 | Test.kt:86:11:86:31 | e |
|
||||
| Test.kt:86:4:88:2 | catch (...) | 2 | Test.kt:86:34:88:2 | { ... } |
|
||||
| Test.kt:86:4:88:2 | catch (...) | 3 | Test.kt:87:10:87:10 | 2 |
|
||||
| Test.kt:86:4:88:2 | catch (...) | 4 | Test.kt:87:3:87:10 | return ... |
|
||||
| Test.kt:91:1:98:1 | Exceptional Exit | 0 | Test.kt:91:1:98:1 | Exceptional Exit |
|
||||
| Test.kt:91:1:98:1 | Entry | 0 | Test.kt:91:1:98:1 | Entry |
|
||||
| Test.kt:91:1:98:1 | Entry | 1 | Test.kt:91:22:98:1 | { ... } |
|
||||
| Test.kt:91:1:98:1 | Entry | 2 | Test.kt:92:2:97:2 | try ... |
|
||||
| Test.kt:91:1:98:1 | Entry | 3 | Test.kt:92:6:95:2 | { ... } |
|
||||
| Test.kt:91:1:98:1 | Entry | 4 | Test.kt:93:3:93:13 | var ...; |
|
||||
| Test.kt:91:1:98:1 | Entry | 5 | Test.kt:93:3:93:13 | Before x |
|
||||
| Test.kt:91:1:98:1 | Entry | 6 | Test.kt:93:11:93:13 | Before ...!! |
|
||||
| Test.kt:91:1:98:1 | Entry | 7 | Test.kt:93:11:93:11 | o |
|
||||
| Test.kt:91:1:98:1 | Entry | 8 | Test.kt:93:11:93:13 | ...!! |
|
||||
| Test.kt:91:1:98:1 | Exit | 0 | Test.kt:91:1:98:1 | Exit |
|
||||
| Test.kt:91:1:98:1 | Normal Exit | 0 | Test.kt:91:1:98:1 | Normal Exit |
|
||||
| Test.kt:91:22:98:1 | { ... } | 0 | Test.kt:91:22:98:1 | { ... } |
|
||||
| Test.kt:91:22:98:1 | { ... } | 1 | Test.kt:92:2:97:2 | try ... |
|
||||
| Test.kt:91:22:98:1 | { ... } | 2 | Test.kt:92:6:95:2 | { ... } |
|
||||
| Test.kt:91:22:98:1 | { ... } | 3 | Test.kt:93:3:93:13 | var ...; |
|
||||
| Test.kt:91:22:98:1 | { ... } | 4 | Test.kt:93:11:93:11 | o |
|
||||
| Test.kt:91:22:98:1 | { ... } | 5 | Test.kt:93:11:93:13 | ...!! |
|
||||
| Test.kt:93:3:93:13 | x | 0 | Test.kt:93:3:93:13 | x |
|
||||
| Test.kt:93:3:93:13 | x | 1 | Test.kt:94:10:94:10 | 1 |
|
||||
| Test.kt:93:3:93:13 | x | 2 | Test.kt:94:3:94:10 | return ... |
|
||||
| Test.kt:93:11:93:13 | After ...!! | 0 | Test.kt:93:11:93:13 | After ...!! |
|
||||
| Test.kt:93:11:93:13 | After ...!! | 1 | Test.kt:93:3:93:13 | x |
|
||||
| Test.kt:93:11:93:13 | After ...!! | 2 | Test.kt:93:3:93:13 | After x |
|
||||
| Test.kt:93:11:93:13 | After ...!! | 3 | Test.kt:93:3:93:13 | After var ...; |
|
||||
| Test.kt:93:11:93:13 | After ...!! | 4 | Test.kt:94:3:94:10 | Before return ... |
|
||||
| Test.kt:93:11:93:13 | After ...!! | 5 | Test.kt:94:10:94:10 | 1 |
|
||||
| Test.kt:93:11:93:13 | After ...!! | 6 | Test.kt:94:3:94:10 | return ... |
|
||||
| Test.kt:95:4:97:2 | After catch (...) [match] | 0 | Test.kt:95:4:97:2 | After catch (...) [match] |
|
||||
| Test.kt:95:4:97:2 | After catch (...) [match] | 1 | Test.kt:95:11:95:33 | e |
|
||||
| Test.kt:95:4:97:2 | After catch (...) [match] | 2 | Test.kt:95:36:97:2 | { ... } |
|
||||
| Test.kt:95:4:97:2 | After catch (...) [match] | 3 | Test.kt:96:3:96:10 | Before return ... |
|
||||
| Test.kt:95:4:97:2 | After catch (...) [match] | 4 | Test.kt:96:10:96:10 | 2 |
|
||||
| Test.kt:95:4:97:2 | After catch (...) [match] | 5 | Test.kt:96:3:96:10 | return ... |
|
||||
| Test.kt:95:4:97:2 | After catch (...) [no-match] | 0 | Test.kt:95:4:97:2 | After catch (...) [no-match] |
|
||||
| Test.kt:95:4:97:2 | After catch (...) [no-match] | 1 | Test.kt:91:1:98:1 | Exceptional Exit |
|
||||
| Test.kt:95:4:97:2 | catch (...) | 0 | Test.kt:95:4:97:2 | catch (...) |
|
||||
| Test.kt:95:4:97:2 | catch (...) | 1 | Test.kt:95:11:95:33 | e |
|
||||
| Test.kt:95:4:97:2 | catch (...) | 2 | Test.kt:95:36:97:2 | { ... } |
|
||||
| Test.kt:95:4:97:2 | catch (...) | 3 | Test.kt:96:10:96:10 | 2 |
|
||||
| Test.kt:95:4:97:2 | catch (...) | 4 | Test.kt:96:3:96:10 | return ... |
|
||||
| Test.kt:100:1:110:1 | Entry | 0 | Test.kt:100:1:110:1 | Entry |
|
||||
| Test.kt:100:1:110:1 | Entry | 1 | Test.kt:100:25:110:1 | { ... } |
|
||||
| Test.kt:100:1:110:1 | Entry | 2 | Test.kt:101:5:103:5 | <Expr>; |
|
||||
| Test.kt:100:1:110:1 | Entry | 3 | Test.kt:101:5:103:5 | when ... |
|
||||
| Test.kt:100:1:110:1 | Entry | 4 | Test.kt:101:9:103:5 | ... -> ... |
|
||||
| Test.kt:100:1:110:1 | Entry | 5 | Test.kt:101:9:101:30 | ... && ... |
|
||||
| Test.kt:100:1:110:1 | Entry | 6 | Test.kt:101:9:101:17 | Before ... (value equals) ... |
|
||||
| Test.kt:100:1:110:1 | Entry | 7 | Test.kt:101:9:101:9 | x |
|
||||
| Test.kt:100:1:110:1 | Entry | 8 | Test.kt:101:14:101:17 | null |
|
||||
| Test.kt:100:1:110:1 | Entry | 9 | Test.kt:101:9:101:17 | ... (value equals) ... |
|
||||
| Test.kt:100:1:110:1 | Exit | 0 | Test.kt:100:1:110:1 | Exit |
|
||||
| Test.kt:100:1:110:1 | Normal Exit | 0 | Test.kt:100:1:110:1 | Normal Exit |
|
||||
| Test.kt:100:25:110:1 | { ... } | 0 | Test.kt:100:25:110:1 | { ... } |
|
||||
| Test.kt:100:25:110:1 | { ... } | 1 | Test.kt:101:5:103:5 | <Expr>; |
|
||||
| Test.kt:100:25:110:1 | { ... } | 2 | Test.kt:101:5:103:5 | when ... |
|
||||
| Test.kt:100:25:110:1 | { ... } | 3 | Test.kt:101:9:103:5 | ... -> ... |
|
||||
| Test.kt:100:25:110:1 | { ... } | 4 | Test.kt:101:9:101:30 | ... && ... |
|
||||
| Test.kt:100:25:110:1 | { ... } | 5 | Test.kt:101:9:101:9 | x |
|
||||
| Test.kt:100:25:110:1 | { ... } | 6 | Test.kt:101:14:101:17 | null |
|
||||
| Test.kt:100:25:110:1 | { ... } | 7 | Test.kt:101:9:101:17 | ... (value equals) ... |
|
||||
| Test.kt:101:22:101:22 | y | 0 | Test.kt:101:22:101:22 | y |
|
||||
| Test.kt:101:22:101:22 | y | 1 | Test.kt:101:27:101:30 | null |
|
||||
| Test.kt:101:22:101:22 | y | 2 | Test.kt:101:22:101:30 | ... (value equals) ... |
|
||||
| Test.kt:101:33:103:5 | { ... } | 0 | Test.kt:101:33:103:5 | { ... } |
|
||||
| Test.kt:101:33:103:5 | { ... } | 1 | Test.kt:102:15:102:25 | new Exception(...) |
|
||||
| Test.kt:101:33:103:5 | { ... } | 2 | Test.kt:102:9:102:25 | throw ... |
|
||||
| Test.kt:101:33:103:5 | { ... } | 3 | Test.kt:100:1:110:1 | Exceptional Exit |
|
||||
| Test.kt:105:5:109:5 | <Expr>; | 0 | Test.kt:105:5:109:5 | <Expr>; |
|
||||
| Test.kt:105:5:109:5 | <Expr>; | 1 | Test.kt:105:5:109:5 | when ... |
|
||||
| Test.kt:105:5:109:5 | <Expr>; | 2 | Test.kt:105:9:107:5 | ... -> ... |
|
||||
| Test.kt:105:5:109:5 | <Expr>; | 3 | Test.kt:105:9:105:9 | x |
|
||||
| Test.kt:105:5:109:5 | <Expr>; | 4 | Test.kt:105:14:105:17 | null |
|
||||
| Test.kt:105:5:109:5 | <Expr>; | 5 | Test.kt:105:9:105:17 | ... (value not-equals) ... |
|
||||
| Test.kt:105:20:107:5 | { ... } | 0 | Test.kt:105:20:107:5 | { ... } |
|
||||
| Test.kt:105:20:107:5 | { ... } | 1 | Test.kt:106:9:106:29 | <Expr>; |
|
||||
| Test.kt:105:20:107:5 | { ... } | 2 | Test.kt:106:17:106:28 | "x not null" |
|
||||
| Test.kt:105:20:107:5 | { ... } | 3 | Test.kt:106:9:106:29 | println(...) |
|
||||
| Test.kt:107:16:109:5 | ... -> ... | 0 | Test.kt:107:16:109:5 | ... -> ... |
|
||||
| Test.kt:107:16:109:5 | ... -> ... | 1 | Test.kt:107:16:107:16 | y |
|
||||
| Test.kt:107:16:109:5 | ... -> ... | 2 | Test.kt:107:21:107:24 | null |
|
||||
| Test.kt:107:16:109:5 | ... -> ... | 3 | Test.kt:107:16:107:24 | ... (value not-equals) ... |
|
||||
| Test.kt:107:27:109:5 | { ... } | 0 | Test.kt:107:27:109:5 | { ... } |
|
||||
| Test.kt:107:27:109:5 | { ... } | 1 | Test.kt:108:9:108:29 | <Expr>; |
|
||||
| Test.kt:107:27:109:5 | { ... } | 2 | Test.kt:108:17:108:28 | "y not null" |
|
||||
| Test.kt:107:27:109:5 | { ... } | 3 | Test.kt:108:9:108:29 | println(...) |
|
||||
| Test.kt:112:1:116:1 | Exceptional Exit | 0 | Test.kt:112:1:116:1 | Exceptional Exit |
|
||||
| Test.kt:112:1:116:1 | Exit | 0 | Test.kt:112:1:116:1 | Exit |
|
||||
| Test.kt:112:1:116:1 | Normal Exit | 0 | Test.kt:112:1:116:1 | Normal Exit |
|
||||
| Test.kt:112:32:116:1 | { ... } | 0 | Test.kt:112:32:116:1 | { ... } |
|
||||
| Test.kt:112:32:116:1 | { ... } | 1 | Test.kt:113:5:115:5 | <Expr>; |
|
||||
| Test.kt:112:32:116:1 | { ... } | 2 | Test.kt:113:5:115:5 | when ... |
|
||||
| Test.kt:112:32:116:1 | { ... } | 3 | Test.kt:113:9:115:5 | ... -> ... |
|
||||
| Test.kt:112:32:116:1 | { ... } | 4 | Test.kt:113:9:113:14 | ... && ... |
|
||||
| Test.kt:112:32:116:1 | { ... } | 5 | Test.kt:113:9:113:9 | x |
|
||||
| Test.kt:113:14:113:14 | y | 0 | Test.kt:113:14:113:14 | y |
|
||||
| Test.kt:113:17:115:5 | { ... } | 0 | Test.kt:113:17:115:5 | { ... } |
|
||||
| Test.kt:118:1:124:1 | Exceptional Exit | 0 | Test.kt:118:1:124:1 | Exceptional Exit |
|
||||
| Test.kt:118:1:124:1 | Exit | 0 | Test.kt:118:1:124:1 | Exit |
|
||||
| Test.kt:118:1:124:1 | Normal Exit | 0 | Test.kt:118:1:124:1 | Normal Exit |
|
||||
| Test.kt:118:37:124:1 | { ... } | 0 | Test.kt:118:37:124:1 | { ... } |
|
||||
| Test.kt:118:37:124:1 | { ... } | 1 | Test.kt:119:2:123:12 | <Expr>; |
|
||||
| Test.kt:118:37:124:1 | { ... } | 2 | Test.kt:119:2:123:12 | when ... |
|
||||
| Test.kt:118:37:124:1 | { ... } | 3 | Test.kt:120:3:123:10 | ... -> ... |
|
||||
| Test.kt:118:37:124:1 | { ... } | 4 | Test.kt:120:3:123:3 | when ... |
|
||||
| Test.kt:118:37:124:1 | { ... } | 5 | Test.kt:121:4:121:9 | ... -> ... |
|
||||
| Test.kt:118:37:124:1 | { ... } | 6 | Test.kt:121:4:121:4 | x |
|
||||
| Test.kt:121:9:121:9 | <Expr>; | 0 | Test.kt:121:9:121:9 | <Expr>; |
|
||||
| Test.kt:121:9:121:9 | <Expr>; | 1 | Test.kt:121:9:121:9 | y |
|
||||
| Test.kt:122:12:122:16 | ... -> ... | 0 | Test.kt:122:12:122:16 | ... -> ... |
|
||||
| Test.kt:122:12:122:16 | ... -> ... | 1 | Test.kt:122:12:122:16 | true |
|
||||
| Test.kt:122:12:122:16 | ... -> ... | 2 | Test.kt:122:12:122:16 | <Expr>; |
|
||||
| Test.kt:122:12:122:16 | ... -> ... | 3 | Test.kt:122:12:122:16 | false |
|
||||
| Test.kt:123:8:123:10 | { ... } | 0 | Test.kt:123:8:123:10 | { ... } |
|
||||
| Test.kt:101:9:101:17 | After ... (value equals) ... [false] | 0 | Test.kt:101:9:101:17 | After ... (value equals) ... [false] |
|
||||
| Test.kt:101:9:101:17 | After ... (value equals) ... [true] | 0 | Test.kt:101:9:101:17 | After ... (value equals) ... [true] |
|
||||
| Test.kt:101:9:101:17 | After ... (value equals) ... [true] | 1 | Test.kt:101:22:101:30 | Before ... (value equals) ... |
|
||||
| Test.kt:101:9:101:17 | After ... (value equals) ... [true] | 2 | Test.kt:101:22:101:22 | y |
|
||||
| Test.kt:101:9:101:17 | After ... (value equals) ... [true] | 3 | Test.kt:101:27:101:30 | null |
|
||||
| Test.kt:101:9:101:17 | After ... (value equals) ... [true] | 4 | Test.kt:101:22:101:30 | ... (value equals) ... |
|
||||
| Test.kt:101:9:101:30 | After ... && ... [false] | 0 | Test.kt:101:9:101:30 | After ... && ... [false] |
|
||||
| Test.kt:101:9:101:30 | After ... && ... [false] | 1 | Test.kt:101:5:103:5 | After when ... |
|
||||
| Test.kt:101:9:101:30 | After ... && ... [false] | 2 | Test.kt:101:5:103:5 | After <Expr>; |
|
||||
| Test.kt:101:9:101:30 | After ... && ... [false] | 3 | Test.kt:105:5:109:5 | <Expr>; |
|
||||
| Test.kt:101:9:101:30 | After ... && ... [false] | 4 | Test.kt:105:5:109:5 | when ... |
|
||||
| Test.kt:101:9:101:30 | After ... && ... [false] | 5 | Test.kt:105:9:107:5 | ... -> ... |
|
||||
| Test.kt:101:9:101:30 | After ... && ... [false] | 6 | Test.kt:105:9:105:17 | Before ... (value not-equals) ... |
|
||||
| Test.kt:101:9:101:30 | After ... && ... [false] | 7 | Test.kt:105:9:105:9 | x |
|
||||
| Test.kt:101:9:101:30 | After ... && ... [false] | 8 | Test.kt:105:14:105:17 | null |
|
||||
| Test.kt:101:9:101:30 | After ... && ... [false] | 9 | Test.kt:105:9:105:17 | ... (value not-equals) ... |
|
||||
| Test.kt:101:22:101:30 | After ... (value equals) ... [false] | 0 | Test.kt:101:22:101:30 | After ... (value equals) ... [false] |
|
||||
| Test.kt:101:22:101:30 | After ... (value equals) ... [true] | 0 | Test.kt:101:22:101:30 | After ... (value equals) ... [true] |
|
||||
| Test.kt:101:22:101:30 | After ... (value equals) ... [true] | 1 | Test.kt:101:9:101:30 | After ... && ... [true] |
|
||||
| Test.kt:101:22:101:30 | After ... (value equals) ... [true] | 2 | Test.kt:101:33:103:5 | { ... } |
|
||||
| Test.kt:101:22:101:30 | After ... (value equals) ... [true] | 3 | Test.kt:102:9:102:25 | Before throw ... |
|
||||
| Test.kt:101:22:101:30 | After ... (value equals) ... [true] | 4 | Test.kt:102:15:102:25 | Before new Exception(...) |
|
||||
| Test.kt:101:22:101:30 | After ... (value equals) ... [true] | 5 | Test.kt:102:15:102:25 | new Exception(...) |
|
||||
| Test.kt:101:22:101:30 | After ... (value equals) ... [true] | 6 | Test.kt:102:15:102:25 | After new Exception(...) |
|
||||
| Test.kt:101:22:101:30 | After ... (value equals) ... [true] | 7 | Test.kt:102:9:102:25 | throw ... |
|
||||
| Test.kt:101:22:101:30 | After ... (value equals) ... [true] | 8 | Test.kt:100:1:110:1 | Exceptional Exit |
|
||||
| Test.kt:105:5:109:5 | After when ... | 0 | Test.kt:105:5:109:5 | After when ... |
|
||||
| Test.kt:105:5:109:5 | After when ... | 1 | Test.kt:105:5:109:5 | After <Expr>; |
|
||||
| Test.kt:105:5:109:5 | After when ... | 2 | Test.kt:100:25:110:1 | After { ... } |
|
||||
| Test.kt:105:5:109:5 | After when ... | 3 | Test.kt:100:1:110:1 | Normal Exit |
|
||||
| Test.kt:105:9:105:17 | After ... (value not-equals) ... [false] | 0 | Test.kt:105:9:105:17 | After ... (value not-equals) ... [false] |
|
||||
| Test.kt:105:9:105:17 | After ... (value not-equals) ... [false] | 1 | Test.kt:107:16:109:5 | ... -> ... |
|
||||
| Test.kt:105:9:105:17 | After ... (value not-equals) ... [false] | 2 | Test.kt:107:16:107:24 | Before ... (value not-equals) ... |
|
||||
| Test.kt:105:9:105:17 | After ... (value not-equals) ... [false] | 3 | Test.kt:107:16:107:16 | y |
|
||||
| Test.kt:105:9:105:17 | After ... (value not-equals) ... [false] | 4 | Test.kt:107:21:107:24 | null |
|
||||
| Test.kt:105:9:105:17 | After ... (value not-equals) ... [false] | 5 | Test.kt:107:16:107:24 | ... (value not-equals) ... |
|
||||
| Test.kt:105:9:105:17 | After ... (value not-equals) ... [true] | 0 | Test.kt:105:9:105:17 | After ... (value not-equals) ... [true] |
|
||||
| Test.kt:105:9:105:17 | After ... (value not-equals) ... [true] | 1 | Test.kt:105:20:107:5 | { ... } |
|
||||
| Test.kt:105:9:105:17 | After ... (value not-equals) ... [true] | 2 | Test.kt:106:9:106:29 | <Expr>; |
|
||||
| Test.kt:105:9:105:17 | After ... (value not-equals) ... [true] | 3 | Test.kt:106:9:106:29 | Before println(...) |
|
||||
| Test.kt:105:9:105:17 | After ... (value not-equals) ... [true] | 4 | Test.kt:106:17:106:28 | "x not null" |
|
||||
| Test.kt:105:9:105:17 | After ... (value not-equals) ... [true] | 5 | Test.kt:106:9:106:29 | println(...) |
|
||||
| Test.kt:105:9:105:17 | After ... (value not-equals) ... [true] | 6 | Test.kt:106:9:106:29 | After println(...) |
|
||||
| Test.kt:105:9:105:17 | After ... (value not-equals) ... [true] | 7 | Test.kt:106:9:106:29 | After <Expr>; |
|
||||
| Test.kt:105:9:105:17 | After ... (value not-equals) ... [true] | 8 | Test.kt:105:20:107:5 | After { ... } |
|
||||
| Test.kt:107:16:107:24 | After ... (value not-equals) ... [false] | 0 | Test.kt:107:16:107:24 | After ... (value not-equals) ... [false] |
|
||||
| Test.kt:107:16:107:24 | After ... (value not-equals) ... [true] | 0 | Test.kt:107:16:107:24 | After ... (value not-equals) ... [true] |
|
||||
| Test.kt:107:16:107:24 | After ... (value not-equals) ... [true] | 1 | Test.kt:107:27:109:5 | { ... } |
|
||||
| Test.kt:107:16:107:24 | After ... (value not-equals) ... [true] | 2 | Test.kt:108:9:108:29 | <Expr>; |
|
||||
| Test.kt:107:16:107:24 | After ... (value not-equals) ... [true] | 3 | Test.kt:108:9:108:29 | Before println(...) |
|
||||
| Test.kt:107:16:107:24 | After ... (value not-equals) ... [true] | 4 | Test.kt:108:17:108:28 | "y not null" |
|
||||
| Test.kt:107:16:107:24 | After ... (value not-equals) ... [true] | 5 | Test.kt:108:9:108:29 | println(...) |
|
||||
| Test.kt:107:16:107:24 | After ... (value not-equals) ... [true] | 6 | Test.kt:108:9:108:29 | After println(...) |
|
||||
| Test.kt:107:16:107:24 | After ... (value not-equals) ... [true] | 7 | Test.kt:108:9:108:29 | After <Expr>; |
|
||||
| Test.kt:107:16:107:24 | After ... (value not-equals) ... [true] | 8 | Test.kt:107:27:109:5 | After { ... } |
|
||||
| Test.kt:112:1:116:1 | Entry | 0 | Test.kt:112:1:116:1 | Entry |
|
||||
| Test.kt:112:1:116:1 | Entry | 1 | Test.kt:112:32:116:1 | { ... } |
|
||||
| Test.kt:112:1:116:1 | Entry | 2 | Test.kt:113:5:115:5 | <Expr>; |
|
||||
| Test.kt:112:1:116:1 | Entry | 3 | Test.kt:113:5:115:5 | when ... |
|
||||
| Test.kt:112:1:116:1 | Entry | 4 | Test.kt:113:9:115:5 | ... -> ... |
|
||||
| Test.kt:112:1:116:1 | Entry | 5 | Test.kt:113:9:113:14 | ... && ... |
|
||||
| Test.kt:112:1:116:1 | Entry | 6 | Test.kt:113:9:113:9 | x |
|
||||
| Test.kt:113:5:115:5 | After when ... | 0 | Test.kt:113:5:115:5 | After when ... |
|
||||
| Test.kt:113:5:115:5 | After when ... | 1 | Test.kt:113:5:115:5 | After <Expr>; |
|
||||
| Test.kt:113:5:115:5 | After when ... | 2 | Test.kt:112:32:116:1 | After { ... } |
|
||||
| Test.kt:113:5:115:5 | After when ... | 3 | Test.kt:112:1:116:1 | Normal Exit |
|
||||
| Test.kt:113:5:115:5 | After when ... | 4 | Test.kt:112:1:116:1 | Exit |
|
||||
| Test.kt:113:9:113:9 | After x [false] | 0 | Test.kt:113:9:113:9 | After x [false] |
|
||||
| Test.kt:113:9:113:9 | After x [true] | 0 | Test.kt:113:9:113:9 | After x [true] |
|
||||
| Test.kt:113:9:113:9 | After x [true] | 1 | Test.kt:113:14:113:14 | y |
|
||||
| Test.kt:113:9:113:14 | After ... && ... [false] | 0 | Test.kt:113:9:113:14 | After ... && ... [false] |
|
||||
| Test.kt:113:14:113:14 | After y [false] | 0 | Test.kt:113:14:113:14 | After y [false] |
|
||||
| Test.kt:113:14:113:14 | After y [true] | 0 | Test.kt:113:14:113:14 | After y [true] |
|
||||
| Test.kt:113:14:113:14 | After y [true] | 1 | Test.kt:113:9:113:14 | After ... && ... [true] |
|
||||
| Test.kt:113:14:113:14 | After y [true] | 2 | Test.kt:113:17:115:5 | { ... } |
|
||||
| Test.kt:118:1:124:1 | Entry | 0 | Test.kt:118:1:124:1 | Entry |
|
||||
| Test.kt:118:1:124:1 | Entry | 1 | Test.kt:118:37:124:1 | { ... } |
|
||||
| Test.kt:118:1:124:1 | Entry | 2 | Test.kt:119:2:123:12 | <Expr>; |
|
||||
| Test.kt:118:1:124:1 | Entry | 3 | Test.kt:119:2:123:12 | when ... |
|
||||
| Test.kt:118:1:124:1 | Entry | 4 | Test.kt:120:3:123:10 | ... -> ... |
|
||||
| Test.kt:118:1:124:1 | Entry | 5 | Test.kt:120:3:123:3 | when ... |
|
||||
| Test.kt:118:1:124:1 | Entry | 6 | Test.kt:121:4:121:9 | ... -> ... |
|
||||
| Test.kt:118:1:124:1 | Entry | 7 | Test.kt:121:4:121:4 | x |
|
||||
| Test.kt:119:2:123:12 | After when ... | 0 | Test.kt:119:2:123:12 | After when ... |
|
||||
| Test.kt:119:2:123:12 | After when ... | 1 | Test.kt:119:2:123:12 | After <Expr>; |
|
||||
| Test.kt:119:2:123:12 | After when ... | 2 | Test.kt:118:37:124:1 | After { ... } |
|
||||
| Test.kt:119:2:123:12 | After when ... | 3 | Test.kt:118:1:124:1 | Normal Exit |
|
||||
| Test.kt:119:2:123:12 | After when ... | 4 | Test.kt:118:1:124:1 | Exit |
|
||||
| Test.kt:120:3:123:3 | After when ... [false] | 0 | Test.kt:120:3:123:3 | After when ... [false] |
|
||||
| Test.kt:120:3:123:3 | After when ... [true] | 0 | Test.kt:120:3:123:3 | After when ... [true] |
|
||||
| Test.kt:120:3:123:3 | After when ... [true] | 1 | Test.kt:123:8:123:10 | { ... } |
|
||||
| Test.kt:121:4:121:4 | After x [false] | 0 | Test.kt:121:4:121:4 | After x [false] |
|
||||
| Test.kt:121:4:121:4 | After x [false] | 1 | Test.kt:122:12:122:16 | ... -> ... |
|
||||
| Test.kt:121:4:121:4 | After x [false] | 2 | Test.kt:122:12:122:16 | true |
|
||||
| Test.kt:121:4:121:4 | After x [false] | 3 | Test.kt:122:12:122:16 | After true [true] |
|
||||
| Test.kt:121:4:121:4 | After x [false] | 4 | Test.kt:122:12:122:16 | <Expr>; |
|
||||
| Test.kt:121:4:121:4 | After x [false] | 5 | Test.kt:122:12:122:16 | false |
|
||||
| Test.kt:121:4:121:4 | After x [false] | 6 | Test.kt:122:12:122:16 | After <Expr>; |
|
||||
| Test.kt:121:4:121:4 | After x [true] | 0 | Test.kt:121:4:121:4 | After x [true] |
|
||||
| Test.kt:121:4:121:4 | After x [true] | 1 | Test.kt:121:9:121:9 | <Expr>; |
|
||||
| Test.kt:121:4:121:4 | After x [true] | 2 | Test.kt:121:9:121:9 | y |
|
||||
| Test.kt:121:4:121:4 | After x [true] | 3 | Test.kt:121:9:121:9 | After <Expr>; |
|
||||
|
||||
@@ -1,6 +1,3 @@
|
||||
| Test.kt:3:1:80:1 | { ... } | Test.kt:3:1:80:1 | Exit |
|
||||
| Test.kt:4:2:79:2 | Normal Exit | Test.kt:4:2:79:2 | Exit |
|
||||
| Test.kt:4:13:79:2 | { ... } | Test.kt:4:2:79:2 | Exit |
|
||||
| Test.kt:4:13:79:2 | { ... } | Test.kt:4:2:79:2 | Normal Exit |
|
||||
| Test.kt:4:13:79:2 | { ... } | Test.kt:11:14:14:3 | { ... } |
|
||||
| Test.kt:4:13:79:2 | { ... } | Test.kt:14:10:16:3 | ... -> ... |
|
||||
@@ -12,7 +9,6 @@
|
||||
| Test.kt:4:13:79:2 | { ... } | Test.kt:38:9:38:9 | x |
|
||||
| Test.kt:4:13:79:2 | { ... } | Test.kt:38:16:41:3 | { ... } |
|
||||
| Test.kt:4:13:79:2 | { ... } | Test.kt:43:3:43:8 | <Expr>; |
|
||||
| Test.kt:18:3:18:7 | <Expr>; | Test.kt:4:2:79:2 | Exit |
|
||||
| Test.kt:18:3:18:7 | <Expr>; | Test.kt:4:2:79:2 | Normal Exit |
|
||||
| Test.kt:18:3:18:7 | <Expr>; | Test.kt:22:4:22:9 | <Expr>; |
|
||||
| Test.kt:18:3:18:7 | <Expr>; | Test.kt:24:4:24:9 | ... -> ... |
|
||||
@@ -31,16 +27,22 @@
|
||||
| Test.kt:35:3:35:8 | <Expr>; | Test.kt:43:3:43:8 | <Expr>; |
|
||||
| Test.kt:38:9:38:9 | x | Test.kt:38:16:41:3 | { ... } |
|
||||
| Test.kt:38:9:38:9 | x | Test.kt:43:3:43:8 | <Expr>; |
|
||||
| Test.kt:82:1:89:1 | Normal Exit | Test.kt:82:1:89:1 | Exit |
|
||||
| Test.kt:82:21:89:1 | { ... } | Test.kt:82:1:89:1 | Exceptional Exit |
|
||||
| Test.kt:82:21:89:1 | { ... } | Test.kt:82:1:89:1 | Exit |
|
||||
| Test.kt:82:21:89:1 | { ... } | Test.kt:82:1:89:1 | Normal Exit |
|
||||
| Test.kt:82:21:89:1 | { ... } | Test.kt:84:3:84:18 | x |
|
||||
| Test.kt:82:21:89:1 | { ... } | Test.kt:86:4:88:2 | catch (...) |
|
||||
| Test.kt:91:1:98:1 | Normal Exit | Test.kt:91:1:98:1 | Exit |
|
||||
| Test.kt:82:21:89:1 | { ... } | Test.kt:86:11:86:31 | e |
|
||||
| Test.kt:86:4:88:2 | catch (...) | Test.kt:82:1:89:1 | Exceptional Exit |
|
||||
| Test.kt:86:4:88:2 | catch (...) | Test.kt:86:11:86:31 | e |
|
||||
| Test.kt:91:22:98:1 | { ... } | Test.kt:91:1:98:1 | Exceptional Exit |
|
||||
| Test.kt:91:22:98:1 | { ... } | Test.kt:91:1:98:1 | Exit |
|
||||
| Test.kt:91:22:98:1 | { ... } | Test.kt:91:1:98:1 | Normal Exit |
|
||||
| Test.kt:91:22:98:1 | { ... } | Test.kt:93:3:93:13 | x |
|
||||
| Test.kt:91:22:98:1 | { ... } | Test.kt:95:4:97:2 | catch (...) |
|
||||
| Test.kt:91:22:98:1 | { ... } | Test.kt:95:11:95:33 | e |
|
||||
| Test.kt:95:4:97:2 | catch (...) | Test.kt:91:1:98:1 | Exceptional Exit |
|
||||
| Test.kt:95:4:97:2 | catch (...) | Test.kt:95:11:95:33 | e |
|
||||
| Test.kt:100:25:110:1 | { ... } | Test.kt:100:1:110:1 | Exit |
|
||||
| Test.kt:100:25:110:1 | { ... } | Test.kt:100:1:110:1 | Normal Exit |
|
||||
| Test.kt:100:25:110:1 | { ... } | Test.kt:101:22:101:22 | y |
|
||||
@@ -55,16 +57,11 @@
|
||||
| Test.kt:105:5:109:5 | <Expr>; | Test.kt:107:16:109:5 | ... -> ... |
|
||||
| Test.kt:105:5:109:5 | <Expr>; | Test.kt:107:27:109:5 | { ... } |
|
||||
| Test.kt:107:16:109:5 | ... -> ... | Test.kt:107:27:109:5 | { ... } |
|
||||
| Test.kt:112:1:116:1 | Normal Exit | Test.kt:112:1:116:1 | Exit |
|
||||
| Test.kt:112:32:116:1 | { ... } | Test.kt:112:1:116:1 | Exit |
|
||||
| Test.kt:112:32:116:1 | { ... } | Test.kt:112:1:116:1 | Normal Exit |
|
||||
| Test.kt:112:32:116:1 | { ... } | Test.kt:113:14:113:14 | y |
|
||||
| Test.kt:112:32:116:1 | { ... } | Test.kt:113:17:115:5 | { ... } |
|
||||
| Test.kt:113:14:113:14 | y | Test.kt:113:17:115:5 | { ... } |
|
||||
| Test.kt:118:1:124:1 | Normal Exit | Test.kt:118:1:124:1 | Exit |
|
||||
| Test.kt:118:37:124:1 | { ... } | Test.kt:118:1:124:1 | Exit |
|
||||
| Test.kt:118:37:124:1 | { ... } | Test.kt:118:1:124:1 | Normal Exit |
|
||||
| Test.kt:118:37:124:1 | { ... } | Test.kt:121:9:121:9 | <Expr>; |
|
||||
| Test.kt:118:37:124:1 | { ... } | Test.kt:122:12:122:16 | ... -> ... |
|
||||
| Test.kt:118:37:124:1 | { ... } | Test.kt:123:8:123:10 | { ... } |
|
||||
| Test.kt:121:9:121:9 | <Expr>; | Test.kt:123:8:123:10 | { ... } |
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
import java
|
||||
import semmle.code.java.controlflow.Dominance
|
||||
import utils.test.BasicBlock
|
||||
|
||||
from BasicBlock b, BasicBlock b2
|
||||
where b.strictlyDominates(b2)
|
||||
select b, b2
|
||||
select getFirstAstNode(b), getFirstAstNode(b2)
|
||||
|
||||
@@ -1,16 +1,13 @@
|
||||
| Test.kt:3:1:80:1 | Exceptional Exit | Test.kt:3:1:80:1 | Exit |
|
||||
| Test.kt:3:1:80:1 | { ... } | Test.kt:3:1:80:1 | Exit |
|
||||
| Test.kt:4:2:79:2 | Exceptional Exit | Test.kt:4:2:79:2 | Exit |
|
||||
| Test.kt:4:2:79:2 | Normal Exit | Test.kt:4:2:79:2 | Exit |
|
||||
| Test.kt:4:13:79:2 | { ... } | Test.kt:11:14:14:3 | { ... } |
|
||||
| Test.kt:4:13:79:2 | { ... } | Test.kt:14:10:16:3 | ... -> ... |
|
||||
| Test.kt:11:14:14:3 | { ... } | Test.kt:18:3:18:7 | <Expr>; |
|
||||
| Test.kt:14:10:16:3 | ... -> ... | Test.kt:18:3:18:7 | <Expr>; |
|
||||
| Test.kt:18:3:18:7 | <Expr>; | Test.kt:22:4:22:9 | <Expr>; |
|
||||
| Test.kt:18:3:18:7 | <Expr>; | Test.kt:24:4:24:9 | ... -> ... |
|
||||
| Test.kt:22:4:22:9 | <Expr>; | Test.kt:30:7:30:12 | After ... (value equals) ... [false] |
|
||||
| Test.kt:22:4:22:9 | <Expr>; | Test.kt:30:15:33:3 | { ... } |
|
||||
| Test.kt:22:4:22:9 | <Expr>; | Test.kt:35:3:35:8 | <Expr>; |
|
||||
| Test.kt:24:4:24:9 | ... -> ... | Test.kt:4:2:79:2 | Normal Exit |
|
||||
| Test.kt:30:7:30:12 | After ... (value equals) ... [false] | Test.kt:35:3:35:8 | <Expr>; |
|
||||
| Test.kt:30:15:33:3 | { ... } | Test.kt:35:3:35:8 | <Expr>; |
|
||||
| Test.kt:35:3:35:8 | <Expr>; | Test.kt:38:9:38:9 | x |
|
||||
| Test.kt:38:9:38:9 | x | Test.kt:38:16:41:3 | { ... } |
|
||||
@@ -22,37 +19,45 @@
|
||||
| Test.kt:82:21:89:1 | { ... } | Test.kt:84:3:84:18 | x |
|
||||
| Test.kt:82:21:89:1 | { ... } | Test.kt:86:4:88:2 | catch (...) |
|
||||
| Test.kt:84:3:84:18 | x | Test.kt:82:1:89:1 | Normal Exit |
|
||||
| Test.kt:86:4:88:2 | catch (...) | Test.kt:82:1:89:1 | Normal Exit |
|
||||
| Test.kt:86:4:88:2 | catch (...) | Test.kt:82:1:89:1 | Exceptional Exit |
|
||||
| Test.kt:86:4:88:2 | catch (...) | Test.kt:86:11:86:31 | e |
|
||||
| Test.kt:86:11:86:31 | e | Test.kt:82:1:89:1 | Normal Exit |
|
||||
| Test.kt:91:1:98:1 | Exceptional Exit | Test.kt:91:1:98:1 | Exit |
|
||||
| Test.kt:91:1:98:1 | Normal Exit | Test.kt:91:1:98:1 | Exit |
|
||||
| Test.kt:91:22:98:1 | { ... } | Test.kt:93:3:93:13 | x |
|
||||
| Test.kt:91:22:98:1 | { ... } | Test.kt:95:4:97:2 | catch (...) |
|
||||
| Test.kt:93:3:93:13 | x | Test.kt:91:1:98:1 | Normal Exit |
|
||||
| Test.kt:95:4:97:2 | catch (...) | Test.kt:91:1:98:1 | Normal Exit |
|
||||
| Test.kt:95:4:97:2 | catch (...) | Test.kt:91:1:98:1 | Exceptional Exit |
|
||||
| Test.kt:95:4:97:2 | catch (...) | Test.kt:95:11:95:33 | e |
|
||||
| Test.kt:95:11:95:33 | e | Test.kt:91:1:98:1 | Normal Exit |
|
||||
| Test.kt:100:1:110:1 | Normal Exit | Test.kt:100:1:110:1 | Exit |
|
||||
| Test.kt:100:25:110:1 | { ... } | Test.kt:101:9:101:17 | After ... (value equals) ... [false] |
|
||||
| Test.kt:100:25:110:1 | { ... } | Test.kt:101:22:101:22 | y |
|
||||
| Test.kt:100:25:110:1 | { ... } | Test.kt:105:5:109:5 | <Expr>; |
|
||||
| Test.kt:101:9:101:17 | After ... (value equals) ... [false] | Test.kt:105:5:109:5 | <Expr>; |
|
||||
| Test.kt:101:22:101:22 | y | Test.kt:101:22:101:30 | After ... (value equals) ... [false] |
|
||||
| Test.kt:101:22:101:22 | y | Test.kt:101:33:103:5 | { ... } |
|
||||
| Test.kt:101:22:101:22 | y | Test.kt:105:5:109:5 | <Expr>; |
|
||||
| Test.kt:101:22:101:30 | After ... (value equals) ... [false] | Test.kt:105:5:109:5 | <Expr>; |
|
||||
| Test.kt:101:33:103:5 | { ... } | Test.kt:100:1:110:1 | Exit |
|
||||
| Test.kt:105:5:109:5 | <Expr>; | Test.kt:105:20:107:5 | { ... } |
|
||||
| Test.kt:105:5:109:5 | <Expr>; | Test.kt:107:16:109:5 | ... -> ... |
|
||||
| Test.kt:105:20:107:5 | { ... } | Test.kt:100:1:110:1 | Normal Exit |
|
||||
| Test.kt:107:16:109:5 | ... -> ... | Test.kt:100:1:110:1 | Normal Exit |
|
||||
| Test.kt:107:16:107:24 | After ... (value not-equals) ... [false] | Test.kt:100:1:110:1 | Normal Exit |
|
||||
| Test.kt:107:16:109:5 | ... -> ... | Test.kt:107:16:107:24 | After ... (value not-equals) ... [false] |
|
||||
| Test.kt:107:16:109:5 | ... -> ... | Test.kt:107:27:109:5 | { ... } |
|
||||
| Test.kt:107:27:109:5 | { ... } | Test.kt:100:1:110:1 | Normal Exit |
|
||||
| Test.kt:112:1:116:1 | Exceptional Exit | Test.kt:112:1:116:1 | Exit |
|
||||
| Test.kt:112:1:116:1 | Normal Exit | Test.kt:112:1:116:1 | Exit |
|
||||
| Test.kt:112:32:116:1 | { ... } | Test.kt:112:1:116:1 | Normal Exit |
|
||||
| Test.kt:112:32:116:1 | { ... } | Test.kt:113:9:113:9 | After x [false] |
|
||||
| Test.kt:112:32:116:1 | { ... } | Test.kt:113:14:113:14 | y |
|
||||
| Test.kt:113:14:113:14 | y | Test.kt:112:1:116:1 | Normal Exit |
|
||||
| Test.kt:113:9:113:9 | After x [false] | Test.kt:113:9:113:14 | After ... && ... [false] |
|
||||
| Test.kt:113:9:113:14 | After ... && ... [false] | Test.kt:112:1:116:1 | Normal Exit |
|
||||
| Test.kt:113:14:113:14 | After y [false] | Test.kt:113:9:113:14 | After ... && ... [false] |
|
||||
| Test.kt:113:14:113:14 | y | Test.kt:113:14:113:14 | After y [false] |
|
||||
| Test.kt:113:14:113:14 | y | Test.kt:113:17:115:5 | { ... } |
|
||||
| Test.kt:113:17:115:5 | { ... } | Test.kt:112:1:116:1 | Normal Exit |
|
||||
| Test.kt:118:1:124:1 | Exceptional Exit | Test.kt:118:1:124:1 | Exit |
|
||||
| Test.kt:118:1:124:1 | Normal Exit | Test.kt:118:1:124:1 | Exit |
|
||||
| Test.kt:118:37:124:1 | { ... } | Test.kt:121:9:121:9 | <Expr>; |
|
||||
| Test.kt:118:37:124:1 | { ... } | Test.kt:122:12:122:16 | ... -> ... |
|
||||
| Test.kt:121:9:121:9 | <Expr>; | Test.kt:118:1:124:1 | Normal Exit |
|
||||
| Test.kt:120:3:123:3 | After when ... [false] | Test.kt:118:1:124:1 | Normal Exit |
|
||||
| Test.kt:121:9:121:9 | <Expr>; | Test.kt:120:3:123:3 | After when ... [false] |
|
||||
| Test.kt:121:9:121:9 | <Expr>; | Test.kt:123:8:123:10 | { ... } |
|
||||
| Test.kt:122:12:122:16 | ... -> ... | Test.kt:118:1:124:1 | Normal Exit |
|
||||
| Test.kt:122:12:122:16 | ... -> ... | Test.kt:120:3:123:3 | After when ... [false] |
|
||||
| Test.kt:122:12:122:16 | ... -> ... | Test.kt:123:8:123:10 | { ... } |
|
||||
| Test.kt:123:8:123:10 | { ... } | Test.kt:118:1:124:1 | Normal Exit |
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
import java
|
||||
import utils.test.BasicBlock
|
||||
|
||||
from BasicBlock b, BasicBlock b2
|
||||
where b.getASuccessor() = b2
|
||||
select b, b2
|
||||
select getFirstAstNodeOrSynth(b), getFirstAstNodeOrSynth(b2)
|
||||
|
||||
@@ -1,12 +1,10 @@
|
||||
#select
|
||||
| Test.kt:3:1:80:1 | Exceptional Exit | Constructor | Test.kt:3:1:80:1 | Exit | Constructor |
|
||||
| Test.kt:3:1:80:1 | Exit | Constructor | file://:0:0:0:0 | <none> | <none> |
|
||||
| Test.kt:3:1:80:1 | Entry | Constructor | Test.kt:3:1:80:1 | { ... } | BlockStmt |
|
||||
| Test.kt:3:1:80:1 | Normal Exit | Constructor | Test.kt:3:1:80:1 | Exit | Constructor |
|
||||
| Test.kt:3:1:80:1 | super(...) | SuperConstructorInvocationStmt | Test.kt:3:1:80:1 | { ... } | BlockStmt |
|
||||
| Test.kt:3:1:80:1 | { ... } | BlockStmt | Test.kt:3:1:80:1 | Normal Exit | Constructor |
|
||||
| Test.kt:3:1:80:1 | { ... } | BlockStmt | Test.kt:3:1:80:1 | super(...) | SuperConstructorInvocationStmt |
|
||||
| Test.kt:4:2:79:2 | Exceptional Exit | Method | Test.kt:4:2:79:2 | Exit | Method |
|
||||
| Test.kt:4:2:79:2 | Exit | Method | file://:0:0:0:0 | <none> | <none> |
|
||||
| Test.kt:4:2:79:2 | Entry | Method | Test.kt:4:13:79:2 | { ... } | BlockStmt |
|
||||
| Test.kt:4:2:79:2 | Normal Exit | Method | Test.kt:4:2:79:2 | Exit | Method |
|
||||
| Test.kt:4:13:79:2 | { ... } | BlockStmt | Test.kt:5:3:5:16 | var ...; | LocalVariableDeclStmt |
|
||||
| Test.kt:5:3:5:16 | var ...; | LocalVariableDeclStmt | Test.kt:5:16:5:16 | 0 | IntegerLiteral |
|
||||
@@ -30,19 +28,23 @@
|
||||
| Test.kt:11:11:11:11 | 0 | IntegerLiteral | Test.kt:11:7:11:11 | ... > ... | GTExpr |
|
||||
| Test.kt:11:14:14:3 | { ... } | BlockStmt | Test.kt:12:4:12:9 | <Expr>; | ExprStmt |
|
||||
| Test.kt:12:4:12:9 | ...=... | AssignExpr | Test.kt:13:4:13:9 | <Expr>; | ExprStmt |
|
||||
| Test.kt:12:4:12:9 | <Expr>; | ExprStmt | Test.kt:12:8:12:9 | 20 | LongLiteral |
|
||||
| Test.kt:12:4:12:9 | <Expr>; | ExprStmt | Test.kt:12:4:12:9 | y | VarAccess |
|
||||
| Test.kt:12:4:12:9 | y | VarAccess | Test.kt:12:8:12:9 | 20 | LongLiteral |
|
||||
| Test.kt:12:8:12:9 | 20 | LongLiteral | Test.kt:12:4:12:9 | ...=... | AssignExpr |
|
||||
| Test.kt:13:4:13:9 | ...=... | AssignExpr | Test.kt:18:3:18:7 | <Expr>; | ExprStmt |
|
||||
| Test.kt:13:4:13:9 | <Expr>; | ExprStmt | Test.kt:13:8:13:9 | 10 | IntegerLiteral |
|
||||
| Test.kt:13:4:13:9 | <Expr>; | ExprStmt | Test.kt:13:4:13:9 | z | VarAccess |
|
||||
| Test.kt:13:4:13:9 | z | VarAccess | Test.kt:13:8:13:9 | 10 | IntegerLiteral |
|
||||
| Test.kt:13:8:13:9 | 10 | IntegerLiteral | Test.kt:13:4:13:9 | ...=... | AssignExpr |
|
||||
| Test.kt:14:10:16:3 | ... -> ... | WhenBranch | Test.kt:14:10:16:3 | true | BooleanLiteral |
|
||||
| Test.kt:14:10:16:3 | true | BooleanLiteral | Test.kt:14:10:16:3 | { ... } | BlockStmt |
|
||||
| Test.kt:14:10:16:3 | { ... } | BlockStmt | Test.kt:15:4:15:9 | <Expr>; | ExprStmt |
|
||||
| Test.kt:15:4:15:9 | ...=... | AssignExpr | Test.kt:18:3:18:7 | <Expr>; | ExprStmt |
|
||||
| Test.kt:15:4:15:9 | <Expr>; | ExprStmt | Test.kt:15:8:15:9 | 30 | LongLiteral |
|
||||
| Test.kt:15:4:15:9 | <Expr>; | ExprStmt | Test.kt:15:4:15:9 | y | VarAccess |
|
||||
| Test.kt:15:4:15:9 | y | VarAccess | Test.kt:15:8:15:9 | 30 | LongLiteral |
|
||||
| Test.kt:15:8:15:9 | 30 | LongLiteral | Test.kt:15:4:15:9 | ...=... | AssignExpr |
|
||||
| Test.kt:18:3:18:7 | ...=... | AssignExpr | Test.kt:21:3:24:9 | <Expr>; | ExprStmt |
|
||||
| Test.kt:18:3:18:7 | <Expr>; | ExprStmt | Test.kt:18:7:18:7 | 0 | IntegerLiteral |
|
||||
| Test.kt:18:3:18:7 | <Expr>; | ExprStmt | Test.kt:18:3:18:7 | z | VarAccess |
|
||||
| Test.kt:18:3:18:7 | z | VarAccess | Test.kt:18:7:18:7 | 0 | IntegerLiteral |
|
||||
| Test.kt:18:7:18:7 | 0 | IntegerLiteral | Test.kt:18:3:18:7 | ...=... | AssignExpr |
|
||||
| Test.kt:21:3:24:9 | <Expr>; | ExprStmt | Test.kt:21:3:24:9 | when ... | WhenExpr |
|
||||
| Test.kt:21:3:24:9 | when ... | WhenExpr | Test.kt:21:6:22:9 | ... -> ... | WhenBranch |
|
||||
@@ -52,14 +54,16 @@
|
||||
| Test.kt:21:6:22:9 | ... -> ... | WhenBranch | Test.kt:21:6:21:6 | x | VarAccess |
|
||||
| Test.kt:21:10:21:10 | 0 | IntegerLiteral | Test.kt:21:6:21:10 | ... < ... | LTExpr |
|
||||
| Test.kt:22:4:22:9 | ...=... | AssignExpr | Test.kt:27:3:27:8 | <Expr>; | ExprStmt |
|
||||
| Test.kt:22:4:22:9 | <Expr>; | ExprStmt | Test.kt:22:8:22:9 | 40 | LongLiteral |
|
||||
| Test.kt:22:4:22:9 | <Expr>; | ExprStmt | Test.kt:22:4:22:9 | y | VarAccess |
|
||||
| Test.kt:22:4:22:9 | y | VarAccess | Test.kt:22:8:22:9 | 40 | LongLiteral |
|
||||
| Test.kt:22:8:22:9 | 40 | LongLiteral | Test.kt:22:4:22:9 | ...=... | AssignExpr |
|
||||
| Test.kt:24:4:24:9 | ... -> ... | WhenBranch | Test.kt:24:4:24:9 | true | BooleanLiteral |
|
||||
| Test.kt:24:4:24:9 | return ... | ReturnStmt | Test.kt:4:2:79:2 | Normal Exit | Method |
|
||||
| Test.kt:24:4:24:9 | true | BooleanLiteral | Test.kt:24:10:24:10 | INSTANCE | VarAccess |
|
||||
| Test.kt:24:10:24:10 | INSTANCE | VarAccess | Test.kt:24:4:24:9 | return ... | ReturnStmt |
|
||||
| Test.kt:27:3:27:8 | ...=... | AssignExpr | Test.kt:30:3:33:3 | <Expr>; | ExprStmt |
|
||||
| Test.kt:27:3:27:8 | <Expr>; | ExprStmt | Test.kt:27:7:27:8 | 10 | IntegerLiteral |
|
||||
| Test.kt:27:3:27:8 | <Expr>; | ExprStmt | Test.kt:27:3:27:8 | z | VarAccess |
|
||||
| Test.kt:27:3:27:8 | z | VarAccess | Test.kt:27:7:27:8 | 10 | IntegerLiteral |
|
||||
| Test.kt:27:7:27:8 | 10 | IntegerLiteral | Test.kt:27:3:27:8 | ...=... | AssignExpr |
|
||||
| Test.kt:30:3:33:3 | <Expr>; | ExprStmt | Test.kt:30:3:33:3 | when ... | WhenExpr |
|
||||
| Test.kt:30:3:33:3 | when ... | WhenExpr | Test.kt:30:7:33:3 | ... -> ... | WhenBranch |
|
||||
@@ -70,13 +74,16 @@
|
||||
| Test.kt:30:12:30:12 | 0 | IntegerLiteral | Test.kt:30:7:30:12 | ... (value equals) ... | ValueEQExpr |
|
||||
| Test.kt:30:15:33:3 | { ... } | BlockStmt | Test.kt:31:4:31:9 | <Expr>; | ExprStmt |
|
||||
| Test.kt:31:4:31:9 | ...=... | AssignExpr | Test.kt:32:4:32:9 | <Expr>; | ExprStmt |
|
||||
| Test.kt:31:4:31:9 | <Expr>; | ExprStmt | Test.kt:31:8:31:9 | 60 | LongLiteral |
|
||||
| Test.kt:31:4:31:9 | <Expr>; | ExprStmt | Test.kt:31:4:31:9 | y | VarAccess |
|
||||
| Test.kt:31:4:31:9 | y | VarAccess | Test.kt:31:8:31:9 | 60 | LongLiteral |
|
||||
| Test.kt:31:8:31:9 | 60 | LongLiteral | Test.kt:31:4:31:9 | ...=... | AssignExpr |
|
||||
| Test.kt:32:4:32:9 | ...=... | AssignExpr | Test.kt:35:3:35:8 | <Expr>; | ExprStmt |
|
||||
| Test.kt:32:4:32:9 | <Expr>; | ExprStmt | Test.kt:32:8:32:9 | 10 | IntegerLiteral |
|
||||
| Test.kt:32:4:32:9 | <Expr>; | ExprStmt | Test.kt:32:4:32:9 | z | VarAccess |
|
||||
| Test.kt:32:4:32:9 | z | VarAccess | Test.kt:32:8:32:9 | 10 | IntegerLiteral |
|
||||
| Test.kt:32:8:32:9 | 10 | IntegerLiteral | Test.kt:32:4:32:9 | ...=... | AssignExpr |
|
||||
| Test.kt:35:3:35:8 | ...=... | AssignExpr | Test.kt:38:3:41:3 | while (...) | WhileStmt |
|
||||
| Test.kt:35:3:35:8 | <Expr>; | ExprStmt | Test.kt:35:7:35:8 | 20 | IntegerLiteral |
|
||||
| Test.kt:35:3:35:8 | <Expr>; | ExprStmt | Test.kt:35:3:35:8 | z | VarAccess |
|
||||
| Test.kt:35:3:35:8 | z | VarAccess | Test.kt:35:7:35:8 | 20 | IntegerLiteral |
|
||||
| Test.kt:35:7:35:8 | 20 | IntegerLiteral | Test.kt:35:3:35:8 | ...=... | AssignExpr |
|
||||
| Test.kt:38:3:41:3 | while (...) | WhileStmt | Test.kt:38:9:38:9 | x | VarAccess |
|
||||
| Test.kt:38:9:38:9 | x | VarAccess | Test.kt:38:13:38:13 | 0 | IntegerLiteral |
|
||||
@@ -85,34 +92,39 @@
|
||||
| Test.kt:38:13:38:13 | 0 | IntegerLiteral | Test.kt:38:9:38:13 | ... > ... | GTExpr |
|
||||
| Test.kt:38:16:41:3 | { ... } | BlockStmt | Test.kt:39:4:39:9 | <Expr>; | ExprStmt |
|
||||
| Test.kt:39:4:39:9 | ...=... | AssignExpr | Test.kt:40:4:40:6 | <Expr>; | ExprStmt |
|
||||
| Test.kt:39:4:39:9 | <Expr>; | ExprStmt | Test.kt:39:8:39:9 | 10 | LongLiteral |
|
||||
| Test.kt:39:4:39:9 | <Expr>; | ExprStmt | Test.kt:39:4:39:9 | y | VarAccess |
|
||||
| Test.kt:39:4:39:9 | y | VarAccess | Test.kt:39:8:39:9 | 10 | LongLiteral |
|
||||
| Test.kt:39:8:39:9 | 10 | LongLiteral | Test.kt:39:4:39:9 | ...=... | AssignExpr |
|
||||
| Test.kt:40:4:40:4 | x | VarAccess | Test.kt:40:4:40:6 | <unary> | LocalVariableDeclExpr |
|
||||
| Test.kt:40:4:40:6 | ...=... | AssignExpr | Test.kt:40:4:40:6 | <Expr>; | ExprStmt |
|
||||
| Test.kt:40:4:40:6 | <Expr>; | ExprStmt | Test.kt:40:4:40:6 | <Stmt> | StmtExpr |
|
||||
| Test.kt:40:4:40:6 | <Expr>; | ExprStmt | Test.kt:40:4:40:6 | <unary> | VarAccess |
|
||||
| Test.kt:40:4:40:6 | <Expr>; | ExprStmt | Test.kt:40:4:40:6 | <unary> | VarAccess |
|
||||
| Test.kt:40:4:40:6 | <Stmt> | StmtExpr | Test.kt:40:4:40:6 | { ... } | BlockStmt |
|
||||
| Test.kt:40:4:40:6 | <Expr>; | ExprStmt | Test.kt:40:4:40:6 | x | VarAccess |
|
||||
| Test.kt:40:4:40:6 | <Expr>; | ExprStmt | Test.kt:40:4:40:6 | { ... } | BlockStmt |
|
||||
| Test.kt:40:4:40:6 | <Stmt> | StmtExpr | Test.kt:40:4:40:6 | <implicit coercion to unit> | ImplicitCoercionToUnitExpr |
|
||||
| Test.kt:40:4:40:6 | <implicit coercion to unit> | ImplicitCoercionToUnitExpr | Test.kt:38:9:38:9 | x | VarAccess |
|
||||
| Test.kt:40:4:40:6 | <unary> | LocalVariableDeclExpr | Test.kt:40:4:40:6 | <Expr>; | ExprStmt |
|
||||
| Test.kt:40:4:40:6 | <unary> | VarAccess | Test.kt:40:4:40:6 | <implicit coercion to unit> | ImplicitCoercionToUnitExpr |
|
||||
| Test.kt:40:4:40:6 | <unary> | VarAccess | Test.kt:40:4:40:6 | <Stmt> | StmtExpr |
|
||||
| Test.kt:40:4:40:6 | <unary> | VarAccess | Test.kt:40:4:40:6 | dec(...) | MethodCall |
|
||||
| Test.kt:40:4:40:6 | dec(...) | MethodCall | Test.kt:40:4:40:6 | ...=... | AssignExpr |
|
||||
| Test.kt:40:4:40:6 | var ...; | LocalVariableDeclStmt | Test.kt:40:4:40:4 | x | VarAccess |
|
||||
| Test.kt:40:4:40:6 | x | VarAccess | Test.kt:40:4:40:6 | <unary> | VarAccess |
|
||||
| Test.kt:40:4:40:6 | { ... } | BlockStmt | Test.kt:40:4:40:6 | var ...; | LocalVariableDeclStmt |
|
||||
| Test.kt:43:3:43:8 | ...=... | AssignExpr | Test.kt:73:3:73:8 | <Expr>; | ExprStmt |
|
||||
| Test.kt:43:3:43:8 | <Expr>; | ExprStmt | Test.kt:43:7:43:8 | 30 | IntegerLiteral |
|
||||
| Test.kt:43:3:43:8 | <Expr>; | ExprStmt | Test.kt:43:3:43:8 | z | VarAccess |
|
||||
| Test.kt:43:3:43:8 | z | VarAccess | Test.kt:43:7:43:8 | 30 | IntegerLiteral |
|
||||
| Test.kt:43:7:43:8 | 30 | IntegerLiteral | Test.kt:43:3:43:8 | ...=... | AssignExpr |
|
||||
| Test.kt:73:3:73:8 | ...=... | AssignExpr | Test.kt:77:3:77:8 | <Expr>; | ExprStmt |
|
||||
| Test.kt:73:3:73:8 | <Expr>; | ExprStmt | Test.kt:73:7:73:8 | 50 | IntegerLiteral |
|
||||
| Test.kt:73:3:73:8 | <Expr>; | ExprStmt | Test.kt:73:3:73:8 | z | VarAccess |
|
||||
| Test.kt:73:3:73:8 | z | VarAccess | Test.kt:73:7:73:8 | 50 | IntegerLiteral |
|
||||
| Test.kt:73:7:73:8 | 50 | IntegerLiteral | Test.kt:73:3:73:8 | ...=... | AssignExpr |
|
||||
| Test.kt:77:3:77:8 | ...=... | AssignExpr | Test.kt:78:9:78:9 | INSTANCE | VarAccess |
|
||||
| Test.kt:77:3:77:8 | <Expr>; | ExprStmt | Test.kt:77:7:77:8 | 40 | IntegerLiteral |
|
||||
| Test.kt:77:3:77:8 | <Expr>; | ExprStmt | Test.kt:77:3:77:8 | w | VarAccess |
|
||||
| Test.kt:77:3:77:8 | w | VarAccess | Test.kt:77:7:77:8 | 40 | IntegerLiteral |
|
||||
| Test.kt:77:7:77:8 | 40 | IntegerLiteral | Test.kt:77:3:77:8 | ...=... | AssignExpr |
|
||||
| Test.kt:78:3:78:8 | return ... | ReturnStmt | Test.kt:4:2:79:2 | Normal Exit | Method |
|
||||
| Test.kt:78:9:78:9 | INSTANCE | VarAccess | Test.kt:78:3:78:8 | return ... | ReturnStmt |
|
||||
| Test.kt:82:1:89:1 | Entry | Method | Test.kt:82:21:89:1 | { ... } | BlockStmt |
|
||||
| Test.kt:82:1:89:1 | Exceptional Exit | Method | Test.kt:82:1:89:1 | Exit | Method |
|
||||
| Test.kt:82:1:89:1 | Exit | Method | file://:0:0:0:0 | <none> | <none> |
|
||||
| Test.kt:82:1:89:1 | Normal Exit | Method | Test.kt:82:1:89:1 | Exit | Method |
|
||||
| Test.kt:82:21:89:1 | { ... } | BlockStmt | Test.kt:83:2:88:2 | try ... | TryStmt |
|
||||
| Test.kt:83:2:88:2 | try ... | TryStmt | Test.kt:83:6:86:2 | { ... } | BlockStmt |
|
||||
@@ -124,13 +136,14 @@
|
||||
| Test.kt:84:11:84:18 | (...)... | CastExpr | Test.kt:86:4:88:2 | catch (...) | CatchClause |
|
||||
| Test.kt:85:3:85:10 | return ... | ReturnStmt | Test.kt:82:1:89:1 | Normal Exit | Method |
|
||||
| Test.kt:85:10:85:10 | 1 | IntegerLiteral | Test.kt:85:3:85:10 | return ... | ReturnStmt |
|
||||
| Test.kt:86:4:88:2 | catch (...) | CatchClause | Test.kt:82:1:89:1 | Exceptional Exit | Method |
|
||||
| Test.kt:86:4:88:2 | catch (...) | CatchClause | Test.kt:86:11:86:31 | e | LocalVariableDeclExpr |
|
||||
| Test.kt:86:11:86:31 | e | LocalVariableDeclExpr | Test.kt:86:34:88:2 | { ... } | BlockStmt |
|
||||
| Test.kt:86:34:88:2 | { ... } | BlockStmt | Test.kt:87:10:87:10 | 2 | IntegerLiteral |
|
||||
| Test.kt:87:3:87:10 | return ... | ReturnStmt | Test.kt:82:1:89:1 | Normal Exit | Method |
|
||||
| Test.kt:87:10:87:10 | 2 | IntegerLiteral | Test.kt:87:3:87:10 | return ... | ReturnStmt |
|
||||
| Test.kt:91:1:98:1 | Entry | Method | Test.kt:91:22:98:1 | { ... } | BlockStmt |
|
||||
| Test.kt:91:1:98:1 | Exceptional Exit | Method | Test.kt:91:1:98:1 | Exit | Method |
|
||||
| Test.kt:91:1:98:1 | Exit | Method | file://:0:0:0:0 | <none> | <none> |
|
||||
| Test.kt:91:1:98:1 | Normal Exit | Method | Test.kt:91:1:98:1 | Exit | Method |
|
||||
| Test.kt:91:22:98:1 | { ... } | BlockStmt | Test.kt:92:2:97:2 | try ... | TryStmt |
|
||||
| Test.kt:92:2:97:2 | try ... | TryStmt | Test.kt:92:6:95:2 | { ... } | BlockStmt |
|
||||
@@ -142,13 +155,14 @@
|
||||
| Test.kt:93:11:93:13 | ...!! | NotNullExpr | Test.kt:95:4:97:2 | catch (...) | CatchClause |
|
||||
| Test.kt:94:3:94:10 | return ... | ReturnStmt | Test.kt:91:1:98:1 | Normal Exit | Method |
|
||||
| Test.kt:94:10:94:10 | 1 | IntegerLiteral | Test.kt:94:3:94:10 | return ... | ReturnStmt |
|
||||
| Test.kt:95:4:97:2 | catch (...) | CatchClause | Test.kt:91:1:98:1 | Exceptional Exit | Method |
|
||||
| Test.kt:95:4:97:2 | catch (...) | CatchClause | Test.kt:95:11:95:33 | e | LocalVariableDeclExpr |
|
||||
| Test.kt:95:11:95:33 | e | LocalVariableDeclExpr | Test.kt:95:36:97:2 | { ... } | BlockStmt |
|
||||
| Test.kt:95:36:97:2 | { ... } | BlockStmt | Test.kt:96:10:96:10 | 2 | IntegerLiteral |
|
||||
| Test.kt:96:3:96:10 | return ... | ReturnStmt | Test.kt:91:1:98:1 | Normal Exit | Method |
|
||||
| Test.kt:96:10:96:10 | 2 | IntegerLiteral | Test.kt:96:3:96:10 | return ... | ReturnStmt |
|
||||
| Test.kt:100:1:110:1 | Entry | Method | Test.kt:100:25:110:1 | { ... } | BlockStmt |
|
||||
| Test.kt:100:1:110:1 | Exceptional Exit | Method | Test.kt:100:1:110:1 | Exit | Method |
|
||||
| Test.kt:100:1:110:1 | Exit | Method | file://:0:0:0:0 | <none> | <none> |
|
||||
| Test.kt:100:1:110:1 | Normal Exit | Method | Test.kt:100:1:110:1 | Exit | Method |
|
||||
| Test.kt:100:25:110:1 | { ... } | BlockStmt | Test.kt:101:5:103:5 | <Expr>; | ExprStmt |
|
||||
| Test.kt:101:5:103:5 | <Expr>; | ExprStmt | Test.kt:101:5:103:5 | when ... | WhenExpr |
|
||||
@@ -186,8 +200,7 @@
|
||||
| Test.kt:108:9:108:29 | <Expr>; | ExprStmt | Test.kt:108:17:108:28 | "y not null" | StringLiteral |
|
||||
| Test.kt:108:9:108:29 | println(...) | MethodCall | Test.kt:100:1:110:1 | Normal Exit | Method |
|
||||
| Test.kt:108:17:108:28 | "y not null" | StringLiteral | Test.kt:108:9:108:29 | println(...) | MethodCall |
|
||||
| Test.kt:112:1:116:1 | Exceptional Exit | Method | Test.kt:112:1:116:1 | Exit | Method |
|
||||
| Test.kt:112:1:116:1 | Exit | Method | file://:0:0:0:0 | <none> | <none> |
|
||||
| Test.kt:112:1:116:1 | Entry | Method | Test.kt:112:32:116:1 | { ... } | BlockStmt |
|
||||
| Test.kt:112:1:116:1 | Normal Exit | Method | Test.kt:112:1:116:1 | Exit | Method |
|
||||
| Test.kt:112:32:116:1 | { ... } | BlockStmt | Test.kt:113:5:115:5 | <Expr>; | ExprStmt |
|
||||
| Test.kt:113:5:115:5 | <Expr>; | ExprStmt | Test.kt:113:5:115:5 | when ... | WhenExpr |
|
||||
@@ -199,8 +212,7 @@
|
||||
| Test.kt:113:14:113:14 | y | VarAccess | Test.kt:112:1:116:1 | Normal Exit | Method |
|
||||
| Test.kt:113:14:113:14 | y | VarAccess | Test.kt:113:17:115:5 | { ... } | BlockStmt |
|
||||
| Test.kt:113:17:115:5 | { ... } | BlockStmt | Test.kt:112:1:116:1 | Normal Exit | Method |
|
||||
| Test.kt:118:1:124:1 | Exceptional Exit | Method | Test.kt:118:1:124:1 | Exit | Method |
|
||||
| Test.kt:118:1:124:1 | Exit | Method | file://:0:0:0:0 | <none> | <none> |
|
||||
| Test.kt:118:1:124:1 | Entry | Method | Test.kt:118:37:124:1 | { ... } | BlockStmt |
|
||||
| Test.kt:118:1:124:1 | Normal Exit | Method | Test.kt:118:1:124:1 | Exit | Method |
|
||||
| Test.kt:118:37:124:1 | { ... } | BlockStmt | Test.kt:119:2:123:12 | <Expr>; | ExprStmt |
|
||||
| Test.kt:119:2:123:12 | <Expr>; | ExprStmt | Test.kt:119:2:123:12 | when ... | WhenExpr |
|
||||
@@ -216,6 +228,7 @@
|
||||
| Test.kt:122:12:122:16 | ... -> ... | WhenBranch | Test.kt:122:12:122:16 | true | BooleanLiteral |
|
||||
| Test.kt:122:12:122:16 | <Expr>; | ExprStmt | Test.kt:122:12:122:16 | false | BooleanLiteral |
|
||||
| Test.kt:122:12:122:16 | false | BooleanLiteral | Test.kt:118:1:124:1 | Normal Exit | Method |
|
||||
| Test.kt:122:12:122:16 | false | BooleanLiteral | Test.kt:123:8:123:10 | { ... } | BlockStmt |
|
||||
| Test.kt:122:12:122:16 | true | BooleanLiteral | Test.kt:122:12:122:16 | <Expr>; | ExprStmt |
|
||||
| Test.kt:123:8:123:10 | { ... } | BlockStmt | Test.kt:118:1:124:1 | Normal Exit | Method |
|
||||
missingSuccessor
|
||||
|
||||
@@ -1,54 +1,15 @@
|
||||
import java
|
||||
import utils.test.AstCfg
|
||||
|
||||
newtype TMaybeControlFlowNode =
|
||||
TControlFlowNode(ControlFlowNode c) or
|
||||
TNoControlFlowNode()
|
||||
|
||||
class MaybeControlFlowNode extends TMaybeControlFlowNode {
|
||||
abstract string toString();
|
||||
|
||||
abstract Location getLocation();
|
||||
|
||||
abstract string getPrimaryQlClasses();
|
||||
}
|
||||
|
||||
class YesMaybeControlFlowNode extends MaybeControlFlowNode {
|
||||
ControlFlowNode c;
|
||||
|
||||
YesMaybeControlFlowNode() { this = TControlFlowNode(c) }
|
||||
|
||||
override string toString() { result = c.toString() }
|
||||
|
||||
override Location getLocation() { result = c.getLocation() }
|
||||
|
||||
override string getPrimaryQlClasses() { result = c.getAstNode().getPrimaryQlClasses() }
|
||||
}
|
||||
|
||||
class NoMaybeControlFlowNode extends MaybeControlFlowNode {
|
||||
NoMaybeControlFlowNode() { this = TNoControlFlowNode() }
|
||||
|
||||
override string toString() { result = "<none>" }
|
||||
|
||||
override Location getLocation() { result.toString() = "file://:0:0:0:0" }
|
||||
|
||||
override string getPrimaryQlClasses() { result = "<none>" }
|
||||
}
|
||||
|
||||
MaybeControlFlowNode maybeSuccessor(ControlFlowNode n) {
|
||||
if exists(n.getASuccessor())
|
||||
then result = TControlFlowNode(n.getASuccessor())
|
||||
else result = TNoControlFlowNode()
|
||||
}
|
||||
|
||||
from ControlFlowNode n, MaybeControlFlowNode m
|
||||
from ControlFlowNode n, ControlFlowNode m
|
||||
where
|
||||
m = maybeSuccessor(n) and
|
||||
m = getAnAstSuccessor(n) and
|
||||
n.getLocation().getFile().(CompilationUnit).fromSource()
|
||||
select n, n.getAstNode().getPrimaryQlClasses(), m, m.getPrimaryQlClasses()
|
||||
select n, n.getAstNode().getPrimaryQlClasses(), m, m.getAstNode().getPrimaryQlClasses()
|
||||
|
||||
query predicate missingSuccessor(Expr n) {
|
||||
maybeSuccessor(n.getControlFlowNode()) instanceof NoMaybeControlFlowNode and
|
||||
n.getFile().(CompilationUnit).fromSource() and
|
||||
not n instanceof TypeAccess and
|
||||
not n instanceof VarWrite
|
||||
query predicate missingSuccessor(Expr e) {
|
||||
exists(ControlFlowNode n | n = e.getControlFlowNode() and not exists(n.getASuccessor())) and
|
||||
e.getFile().(CompilationUnit).fromSource() and
|
||||
not e instanceof TypeAccess and
|
||||
not e instanceof VarWrite
|
||||
}
|
||||
|
||||
@@ -562,5 +562,4 @@
|
||||
| Test.kt:121:4:121:9 | ... -> ... | Test.kt:122:12:122:16 | ... -> ... |
|
||||
| Test.kt:121:4:121:9 | ... -> ... | Test.kt:122:12:122:16 | <Expr>; |
|
||||
| Test.kt:121:4:121:9 | ... -> ... | Test.kt:123:8:123:10 | { ... } |
|
||||
| Test.kt:121:9:121:9 | <Expr>; | Test.kt:123:8:123:10 | { ... } |
|
||||
| Test.kt:122:12:122:16 | ... -> ... | Test.kt:122:12:122:16 | <Expr>; |
|
||||
|
||||
@@ -17,5 +17,6 @@ predicate dominanceCounterExample(ControlFlowNode entry, ControlFlowNode dom, Co
|
||||
from Callable c, ControlFlowNode dom, ControlFlowNode node
|
||||
where
|
||||
strictlyDominates(dom, node) and
|
||||
dominanceCounterExample(c.getBody().getControlFlowNode(), dom, node)
|
||||
dominanceCounterExample(any(ControlFlow::EntryNode entry | entry.getEnclosingCallable() = c), dom,
|
||||
node)
|
||||
select c, dom, node
|
||||
|
||||
@@ -1,157 +1,21 @@
|
||||
| Test.kt:2:43:79:2 | { ... } | Test.kt:3:9:3:18 | var ...; |
|
||||
| Test.kt:3:9:3:18 | var ...; | Test.kt:3:17:3:18 | px |
|
||||
| Test.kt:3:9:3:18 | x | Test.kt:4:9:4:18 | var ...; |
|
||||
| Test.kt:3:17:3:18 | px | Test.kt:3:9:3:18 | x |
|
||||
| Test.kt:4:9:4:18 | var ...; | Test.kt:4:17:4:18 | pw |
|
||||
| Test.kt:4:9:4:18 | w | Test.kt:5:9:5:18 | var ...; |
|
||||
| Test.kt:4:17:4:18 | pw | Test.kt:4:9:4:18 | w |
|
||||
| Test.kt:5:9:5:18 | var ...; | Test.kt:5:17:5:18 | pz |
|
||||
| Test.kt:5:9:5:18 | z | Test.kt:7:3:7:12 | var ...; |
|
||||
| Test.kt:5:17:5:18 | pz | Test.kt:5:9:5:18 | z |
|
||||
| Test.kt:7:3:7:12 | j | Test.kt:8:3:8:18 | var ...; |
|
||||
| Test.kt:7:3:7:12 | var ...; | Test.kt:7:3:7:12 | j |
|
||||
| Test.kt:8:3:8:18 | var ...; | Test.kt:8:17:8:18 | 50 |
|
||||
| Test.kt:8:3:8:18 | y | Test.kt:11:3:16:3 | <Expr>; |
|
||||
| Test.kt:8:17:8:18 | 50 | Test.kt:8:3:8:18 | y |
|
||||
| Test.kt:11:3:16:3 | <Expr>; | Test.kt:11:3:16:3 | when ... |
|
||||
| Test.kt:11:3:16:3 | when ... | Test.kt:11:7:14:3 | ... -> ... |
|
||||
| Test.kt:11:7:11:7 | x | Test.kt:11:11:11:11 | 0 |
|
||||
| Test.kt:11:7:11:11 | ... > ... | Test.kt:11:14:14:3 | { ... } |
|
||||
| Test.kt:11:7:11:11 | ... > ... | Test.kt:14:10:16:3 | ... -> ... |
|
||||
| Test.kt:11:7:11:11 | ... > ... | Test.kt:18:3:18:20 | <Expr>; |
|
||||
| Test.kt:11:7:14:3 | ... -> ... | Test.kt:11:7:11:7 | x |
|
||||
| Test.kt:11:11:11:11 | 0 | Test.kt:11:7:11:11 | ... > ... |
|
||||
| Test.kt:11:14:14:3 | { ... } | Test.kt:12:4:12:9 | <Expr>; |
|
||||
| Test.kt:12:4:12:9 | ...=... | Test.kt:13:4:13:9 | <Expr>; |
|
||||
| Test.kt:12:4:12:9 | <Expr>; | Test.kt:12:8:12:9 | 20 |
|
||||
| Test.kt:12:8:12:9 | 20 | Test.kt:12:4:12:9 | ...=... |
|
||||
| Test.kt:13:4:13:9 | <Expr>; | Test.kt:13:8:13:9 | 10 |
|
||||
| Test.kt:13:8:13:9 | 10 | Test.kt:13:4:13:9 | ...=... |
|
||||
| Test.kt:14:10:16:3 | ... -> ... | Test.kt:14:10:16:3 | true |
|
||||
| Test.kt:14:10:16:3 | true | Test.kt:14:10:16:3 | { ... } |
|
||||
| Test.kt:14:10:16:3 | { ... } | Test.kt:15:4:15:9 | <Expr>; |
|
||||
| Test.kt:15:4:15:9 | <Expr>; | Test.kt:15:8:15:9 | 30 |
|
||||
| Test.kt:15:8:15:9 | 30 | Test.kt:15:4:15:9 | ...=... |
|
||||
| Test.kt:18:3:18:20 | ...=... | Test.kt:21:3:24:11 | <Expr>; |
|
||||
| Test.kt:18:3:18:20 | <Expr>; | Test.kt:18:8:18:8 | x |
|
||||
| Test.kt:18:7:18:20 | (...)... | Test.kt:18:3:18:20 | ...=... |
|
||||
| Test.kt:18:8:18:8 | x | Test.kt:18:12:18:12 | y |
|
||||
| Test.kt:18:8:18:12 | ... + ... | Test.kt:18:7:18:20 | (...)... |
|
||||
| Test.kt:18:12:18:12 | y | Test.kt:18:8:18:12 | ... + ... |
|
||||
| Test.kt:21:3:24:11 | <Expr>; | Test.kt:21:3:24:11 | when ... |
|
||||
| Test.kt:21:3:24:11 | when ... | Test.kt:21:7:22:9 | ... -> ... |
|
||||
| Test.kt:21:7:21:7 | x | Test.kt:21:11:21:11 | 0 |
|
||||
| Test.kt:21:7:21:11 | ... < ... | Test.kt:2:2:79:2 | Normal Exit |
|
||||
| Test.kt:21:7:21:11 | ... < ... | Test.kt:22:4:22:9 | <Expr>; |
|
||||
| Test.kt:21:7:21:11 | ... < ... | Test.kt:24:4:24:11 | ... -> ... |
|
||||
| Test.kt:21:7:22:9 | ... -> ... | Test.kt:21:7:21:7 | x |
|
||||
| Test.kt:21:11:21:11 | 0 | Test.kt:21:7:21:11 | ... < ... |
|
||||
| Test.kt:22:4:22:9 | ...=... | Test.kt:27:3:27:8 | <Expr>; |
|
||||
| Test.kt:22:4:22:9 | <Expr>; | Test.kt:22:8:22:9 | 40 |
|
||||
| Test.kt:22:8:22:9 | 40 | Test.kt:22:4:22:9 | ...=... |
|
||||
| Test.kt:24:4:24:11 | ... -> ... | Test.kt:24:4:24:11 | true |
|
||||
| Test.kt:24:4:24:11 | true | Test.kt:24:11:24:11 | z |
|
||||
| Test.kt:24:11:24:11 | z | Test.kt:24:4:24:11 | return ... |
|
||||
| Test.kt:27:3:27:8 | ...=... | Test.kt:30:3:33:3 | <Expr>; |
|
||||
| Test.kt:27:3:27:8 | <Expr>; | Test.kt:27:7:27:8 | 10 |
|
||||
| Test.kt:27:7:27:8 | 10 | Test.kt:27:3:27:8 | ...=... |
|
||||
| Test.kt:30:3:33:3 | <Expr>; | Test.kt:30:3:33:3 | when ... |
|
||||
| Test.kt:30:3:33:3 | when ... | Test.kt:30:7:33:3 | ... -> ... |
|
||||
| Test.kt:30:7:30:7 | x | Test.kt:30:12:30:12 | 0 |
|
||||
| Test.kt:30:7:30:12 | ... (value equals) ... | Test.kt:30:15:33:3 | { ... } |
|
||||
| Test.kt:30:7:30:12 | ... (value equals) ... | Test.kt:35:3:35:8 | <Expr>; |
|
||||
| Test.kt:30:7:33:3 | ... -> ... | Test.kt:30:7:30:7 | x |
|
||||
| Test.kt:30:12:30:12 | 0 | Test.kt:30:7:30:12 | ... (value equals) ... |
|
||||
| Test.kt:30:15:33:3 | { ... } | Test.kt:31:4:31:9 | <Expr>; |
|
||||
| Test.kt:31:4:31:9 | ...=... | Test.kt:32:4:32:9 | <Expr>; |
|
||||
| Test.kt:31:4:31:9 | <Expr>; | Test.kt:31:8:31:9 | 60 |
|
||||
| Test.kt:31:8:31:9 | 60 | Test.kt:31:4:31:9 | ...=... |
|
||||
| Test.kt:32:4:32:9 | <Expr>; | Test.kt:32:8:32:9 | 10 |
|
||||
| Test.kt:32:8:32:9 | 10 | Test.kt:32:4:32:9 | ...=... |
|
||||
| Test.kt:35:3:35:8 | ...+=... | Test.kt:38:3:41:3 | while (...) |
|
||||
| Test.kt:35:3:35:8 | <Expr>; | Test.kt:35:3:35:8 | z |
|
||||
| Test.kt:35:3:35:8 | z | Test.kt:35:8:35:8 | x |
|
||||
| Test.kt:35:8:35:8 | x | Test.kt:35:3:35:8 | ...+=... |
|
||||
| Test.kt:38:3:41:3 | while (...) | Test.kt:38:10:38:10 | x |
|
||||
| Test.kt:38:10:38:10 | x | Test.kt:38:14:38:14 | 0 |
|
||||
| Test.kt:38:10:38:14 | ... > ... | Test.kt:38:17:41:3 | { ... } |
|
||||
| Test.kt:38:10:38:14 | ... > ... | Test.kt:43:3:43:15 | <Expr>; |
|
||||
| Test.kt:38:14:38:14 | 0 | Test.kt:38:10:38:14 | ... > ... |
|
||||
| Test.kt:38:17:41:3 | { ... } | Test.kt:39:4:39:9 | <Expr>; |
|
||||
| Test.kt:39:4:39:9 | ...=... | Test.kt:40:4:40:6 | <Expr>; |
|
||||
| Test.kt:39:4:39:9 | <Expr>; | Test.kt:39:8:39:9 | 10 |
|
||||
| Test.kt:39:8:39:9 | 10 | Test.kt:39:4:39:9 | ...=... |
|
||||
| Test.kt:40:4:40:4 | x | Test.kt:40:4:40:6 | <unary> |
|
||||
| Test.kt:40:4:40:6 | ...=... | Test.kt:40:4:40:6 | <Expr>; |
|
||||
| Test.kt:40:4:40:6 | <Expr>; | Test.kt:40:4:40:6 | <Stmt> |
|
||||
| Test.kt:40:4:40:6 | <Expr>; | Test.kt:40:4:40:6 | <unary> |
|
||||
| Test.kt:40:4:40:6 | <Expr>; | Test.kt:40:4:40:6 | <unary> |
|
||||
| Test.kt:40:4:40:6 | <Stmt> | Test.kt:40:4:40:6 | { ... } |
|
||||
| Test.kt:40:4:40:6 | <unary> | Test.kt:40:4:40:6 | <Expr>; |
|
||||
| Test.kt:40:4:40:6 | <unary> | Test.kt:40:4:40:6 | <implicit coercion to unit> |
|
||||
| Test.kt:40:4:40:6 | <unary> | Test.kt:40:4:40:6 | dec(...) |
|
||||
| Test.kt:40:4:40:6 | dec(...) | Test.kt:40:4:40:6 | ...=... |
|
||||
| Test.kt:40:4:40:6 | var ...; | Test.kt:40:4:40:4 | x |
|
||||
| Test.kt:40:4:40:6 | { ... } | Test.kt:40:4:40:6 | var ...; |
|
||||
| Test.kt:43:3:43:15 | ...+=... | Test.kt:73:3:73:16 | <Expr>; |
|
||||
| Test.kt:43:3:43:15 | <Expr>; | Test.kt:43:3:43:15 | z |
|
||||
| Test.kt:43:3:43:15 | z | Test.kt:43:8:43:8 | y |
|
||||
| Test.kt:43:8:43:8 | y | Test.kt:43:8:43:15 | (...)... |
|
||||
| Test.kt:43:8:43:15 | (...)... | Test.kt:43:3:43:15 | ...+=... |
|
||||
| Test.kt:73:3:73:16 | ...+=... | Test.kt:77:3:77:8 | <Expr>; |
|
||||
| Test.kt:73:3:73:16 | <Expr>; | Test.kt:73:3:73:16 | z |
|
||||
| Test.kt:73:3:73:16 | z | Test.kt:73:8:73:8 | x |
|
||||
| Test.kt:73:8:73:8 | x | Test.kt:73:12:73:12 | y |
|
||||
| Test.kt:73:8:73:12 | ... + ... | Test.kt:73:16:73:16 | w |
|
||||
| Test.kt:73:8:73:16 | ... + ... | Test.kt:73:3:73:16 | ...+=... |
|
||||
| Test.kt:73:12:73:12 | <implicit cast> | Test.kt:73:8:73:12 | ... + ... |
|
||||
| Test.kt:73:12:73:12 | y | Test.kt:73:12:73:12 | <implicit cast> |
|
||||
| Test.kt:73:16:73:16 | w | Test.kt:73:8:73:16 | ... + ... |
|
||||
| Test.kt:77:3:77:8 | ...=... | Test.kt:78:10:78:10 | w |
|
||||
| Test.kt:77:3:77:8 | <Expr>; | Test.kt:77:7:77:8 | 40 |
|
||||
| Test.kt:77:7:77:8 | 40 | Test.kt:77:3:77:8 | ...=... |
|
||||
| Test.kt:78:10:78:10 | w | Test.kt:78:3:78:10 | return ... |
|
||||
| Test.kt:81:25:98:2 | { ... } | Test.kt:83:3:83:12 | var ...; |
|
||||
| Test.kt:83:3:83:12 | b | Test.kt:84:3:84:12 | var ...; |
|
||||
| Test.kt:83:3:83:12 | var ...; | Test.kt:83:3:83:12 | b |
|
||||
| Test.kt:84:3:84:12 | c | Test.kt:85:3:85:7 | <Expr>; |
|
||||
| Test.kt:84:3:84:12 | var ...; | Test.kt:84:3:84:12 | c |
|
||||
| Test.kt:85:3:85:7 | ...=... | Test.kt:86:3:96:3 | while (...) |
|
||||
| Test.kt:85:3:85:7 | <Expr>; | Test.kt:85:7:85:7 | 0 |
|
||||
| Test.kt:85:7:85:7 | 0 | Test.kt:85:3:85:7 | ...=... |
|
||||
| Test.kt:86:3:96:3 | while (...) | Test.kt:86:9:86:12 | true |
|
||||
| Test.kt:86:9:86:12 | true | Test.kt:86:15:96:3 | { ... } |
|
||||
| Test.kt:86:15:96:3 | { ... } | Test.kt:87:4:87:9 | <Expr>; |
|
||||
| Test.kt:87:4:87:9 | ...=... | Test.kt:88:4:91:4 | <Expr>; |
|
||||
| Test.kt:87:4:87:9 | <Expr>; | Test.kt:87:8:87:9 | 10 |
|
||||
| Test.kt:87:8:87:9 | 10 | Test.kt:87:4:87:9 | ...=... |
|
||||
| Test.kt:88:4:91:4 | <Expr>; | Test.kt:88:4:91:4 | when ... |
|
||||
| Test.kt:88:4:91:4 | when ... | Test.kt:88:8:91:4 | ... -> ... |
|
||||
| Test.kt:88:8:88:8 | a | Test.kt:88:12:88:14 | 100 |
|
||||
| Test.kt:88:8:88:14 | ... > ... | Test.kt:88:17:91:4 | { ... } |
|
||||
| Test.kt:88:8:88:14 | ... > ... | Test.kt:92:4:93:9 | <Expr>; |
|
||||
| Test.kt:88:8:91:4 | ... -> ... | Test.kt:88:8:88:8 | a |
|
||||
| Test.kt:88:12:88:14 | 100 | Test.kt:88:8:88:14 | ... > ... |
|
||||
| Test.kt:88:17:91:4 | { ... } | Test.kt:89:5:89:10 | <Expr>; |
|
||||
| Test.kt:89:5:89:10 | ...=... | Test.kt:90:5:90:9 | <Expr>; |
|
||||
| Test.kt:89:5:89:10 | <Expr>; | Test.kt:89:9:89:10 | 10 |
|
||||
| Test.kt:89:9:89:10 | 10 | Test.kt:89:5:89:10 | ...=... |
|
||||
| Test.kt:90:5:90:9 | <Expr>; | Test.kt:90:9:90:9 | c |
|
||||
| Test.kt:90:9:90:9 | c | Test.kt:90:5:90:9 | ...=... |
|
||||
| Test.kt:92:4:93:9 | <Expr>; | Test.kt:92:4:93:9 | when ... |
|
||||
| Test.kt:92:4:93:9 | when ... | Test.kt:92:8:93:9 | ... -> ... |
|
||||
| Test.kt:92:8:92:8 | a | Test.kt:92:13:92:14 | 10 |
|
||||
| Test.kt:92:8:92:14 | ... (value equals) ... | Test.kt:81:2:98:2 | Normal Exit |
|
||||
| Test.kt:92:8:92:14 | ... (value equals) ... | Test.kt:93:5:93:9 | break |
|
||||
| Test.kt:92:8:92:14 | ... (value equals) ... | Test.kt:94:4:95:12 | <Expr>; |
|
||||
| Test.kt:92:8:93:9 | ... -> ... | Test.kt:92:8:92:8 | a |
|
||||
| Test.kt:92:13:92:14 | 10 | Test.kt:92:8:92:14 | ... (value equals) ... |
|
||||
| Test.kt:93:5:93:9 | break | Test.kt:97:10:97:10 | b |
|
||||
| Test.kt:94:4:95:12 | <Expr>; | Test.kt:94:4:95:12 | when ... |
|
||||
| Test.kt:94:4:95:12 | when ... | Test.kt:94:8:95:12 | ... -> ... |
|
||||
| Test.kt:94:8:94:8 | a | Test.kt:94:13:94:14 | 20 |
|
||||
| Test.kt:94:8:94:14 | ... (value equals) ... | Test.kt:95:12:95:12 | c |
|
||||
| Test.kt:94:8:95:12 | ... -> ... | Test.kt:94:8:94:8 | a |
|
||||
| Test.kt:94:13:94:14 | 20 | Test.kt:94:8:94:14 | ... (value equals) ... |
|
||||
| Test.kt:95:12:95:12 | c | Test.kt:95:5:95:12 | return ... |
|
||||
| Test.kt:97:10:97:10 | b | Test.kt:97:3:97:10 | return ... |
|
||||
| Test.kt:2:43:79:2 | { ... } | Test.kt:11:14:14:3 | { ... } |
|
||||
| Test.kt:2:43:79:2 | { ... } | Test.kt:14:10:16:3 | ... -> ... |
|
||||
| Test.kt:2:43:79:2 | { ... } | Test.kt:18:3:18:20 | <Expr>; |
|
||||
| Test.kt:18:3:18:20 | <Expr>; | Test.kt:2:2:79:2 | Normal Exit |
|
||||
| Test.kt:18:3:18:20 | <Expr>; | Test.kt:22:4:22:9 | <Expr>; |
|
||||
| Test.kt:18:3:18:20 | <Expr>; | Test.kt:24:4:24:11 | ... -> ... |
|
||||
| Test.kt:22:4:22:9 | <Expr>; | Test.kt:30:7:30:12 | After ... (value equals) ... [false] |
|
||||
| Test.kt:22:4:22:9 | <Expr>; | Test.kt:30:15:33:3 | { ... } |
|
||||
| Test.kt:22:4:22:9 | <Expr>; | Test.kt:35:3:35:8 | <Expr>; |
|
||||
| Test.kt:35:3:35:8 | <Expr>; | Test.kt:38:10:38:10 | x |
|
||||
| Test.kt:38:10:38:10 | x | Test.kt:38:17:41:3 | { ... } |
|
||||
| Test.kt:38:10:38:10 | x | Test.kt:43:3:43:15 | <Expr>; |
|
||||
| Test.kt:81:25:98:2 | { ... } | Test.kt:86:9:86:12 | true |
|
||||
| Test.kt:86:9:86:12 | true | Test.kt:88:8:88:14 | After ... > ... [false] |
|
||||
| Test.kt:86:9:86:12 | true | Test.kt:88:17:91:4 | { ... } |
|
||||
| Test.kt:86:9:86:12 | true | Test.kt:92:4:93:9 | <Expr>; |
|
||||
| Test.kt:92:4:93:9 | <Expr>; | Test.kt:81:2:98:2 | Normal Exit |
|
||||
| Test.kt:92:4:93:9 | <Expr>; | Test.kt:93:5:93:9 | break |
|
||||
| Test.kt:92:4:93:9 | <Expr>; | Test.kt:94:4:95:12 | <Expr>; |
|
||||
| Test.kt:94:4:95:12 | <Expr>; | Test.kt:94:8:94:14 | After ... (value equals) ... [false] |
|
||||
| Test.kt:94:4:95:12 | <Expr>; | Test.kt:95:12:95:12 | c |
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
import default
|
||||
import semmle.code.java.controlflow.Dominance
|
||||
import java
|
||||
import utils.test.BasicBlock
|
||||
|
||||
from Method func, ControlFlowNode dominator, ControlFlowNode node
|
||||
from Method func, BasicBlock dominator, BasicBlock bb
|
||||
where
|
||||
iDominates(dominator, node) and
|
||||
dominator.getEnclosingStmt().getEnclosingCallable() = func and
|
||||
dominator.immediatelyDominates(bb) and
|
||||
dominator.getEnclosingCallable() = func and
|
||||
func.getDeclaringType().hasName("Test")
|
||||
select dominator, node
|
||||
select getFirstAstNodeOrSynth(dominator), getFirstAstNodeOrSynth(bb)
|
||||
|
||||
@@ -7,5 +7,5 @@ where
|
||||
iDominates(dom1, node) and
|
||||
iDominates(dom2, node) and
|
||||
dom1 != dom2 and
|
||||
func = node.getEnclosingStmt().getEnclosingCallable()
|
||||
func = node.getEnclosingCallable()
|
||||
select func, node, dom1, dom2
|
||||
|
||||
@@ -1,140 +1,296 @@
|
||||
| Test.java:3:14:3:17 | Exceptional Exit | 0 | Test.java:3:14:3:17 | Exceptional Exit |
|
||||
| Test.java:3:14:3:17 | Exit | 0 | Test.java:3:14:3:17 | Exit |
|
||||
| Test.java:3:14:3:17 | { ... } | 0 | Test.java:3:14:3:17 | { ... } |
|
||||
| Test.java:3:14:3:17 | { ... } | 1 | Test.java:3:14:3:17 | super(...) |
|
||||
| Test.java:3:14:3:17 | { ... } | 2 | Test.java:3:14:3:17 | Normal Exit |
|
||||
| Test.java:4:14:4:17 | Exceptional Exit | 0 | Test.java:4:14:4:17 | Exceptional Exit |
|
||||
| Test.java:4:14:4:17 | Exit | 0 | Test.java:4:14:4:17 | Exit |
|
||||
| Test.java:3:14:3:17 | Entry | 0 | Test.java:3:14:3:17 | Entry |
|
||||
| Test.java:3:14:3:17 | Entry | 1 | Test.java:3:14:3:17 | { ... } |
|
||||
| Test.java:3:14:3:17 | Entry | 2 | Test.java:3:14:3:17 | Before super(...) |
|
||||
| Test.java:3:14:3:17 | Entry | 3 | Test.java:3:14:3:17 | super(...) |
|
||||
| Test.java:3:14:3:17 | Entry | 4 | Test.java:3:14:3:17 | After super(...) |
|
||||
| Test.java:3:14:3:17 | Entry | 5 | Test.java:3:14:3:17 | After { ... } |
|
||||
| Test.java:3:14:3:17 | Entry | 6 | Test.java:3:14:3:17 | Normal Exit |
|
||||
| Test.java:3:14:3:17 | Entry | 7 | Test.java:3:14:3:17 | Exit |
|
||||
| Test.java:4:14:4:17 | Entry | 0 | Test.java:4:14:4:17 | Entry |
|
||||
| Test.java:4:14:4:17 | Entry | 1 | Test.java:4:21:76:2 | { ... } |
|
||||
| Test.java:4:14:4:17 | Entry | 2 | Test.java:5:3:5:12 | var ...; |
|
||||
| Test.java:4:14:4:17 | Entry | 3 | Test.java:5:7:5:11 | Before x |
|
||||
| Test.java:4:14:4:17 | Entry | 4 | Test.java:5:11:5:11 | 0 |
|
||||
| Test.java:4:14:4:17 | Entry | 5 | Test.java:5:7:5:11 | x |
|
||||
| Test.java:4:14:4:17 | Entry | 6 | Test.java:5:7:5:11 | After x |
|
||||
| Test.java:4:14:4:17 | Entry | 7 | Test.java:5:3:5:12 | After var ...; |
|
||||
| Test.java:4:14:4:17 | Entry | 8 | Test.java:6:3:6:14 | var ...; |
|
||||
| Test.java:4:14:4:17 | Entry | 9 | Test.java:6:8:6:13 | Before y |
|
||||
| Test.java:4:14:4:17 | Entry | 10 | Test.java:6:12:6:13 | 50 |
|
||||
| Test.java:4:14:4:17 | Entry | 11 | Test.java:6:8:6:13 | y |
|
||||
| Test.java:4:14:4:17 | Entry | 12 | Test.java:6:8:6:13 | After y |
|
||||
| Test.java:4:14:4:17 | Entry | 13 | Test.java:6:3:6:14 | After var ...; |
|
||||
| Test.java:4:14:4:17 | Entry | 14 | Test.java:7:3:7:12 | var ...; |
|
||||
| Test.java:4:14:4:17 | Entry | 15 | Test.java:7:7:7:11 | Before z |
|
||||
| Test.java:4:14:4:17 | Entry | 16 | Test.java:7:11:7:11 | 0 |
|
||||
| Test.java:4:14:4:17 | Entry | 17 | Test.java:7:7:7:11 | z |
|
||||
| Test.java:4:14:4:17 | Entry | 18 | Test.java:7:7:7:11 | After z |
|
||||
| Test.java:4:14:4:17 | Entry | 19 | Test.java:7:3:7:12 | After var ...; |
|
||||
| Test.java:4:14:4:17 | Entry | 20 | Test.java:8:3:8:12 | var ...; |
|
||||
| Test.java:4:14:4:17 | Entry | 21 | Test.java:8:7:8:11 | Before w |
|
||||
| Test.java:4:14:4:17 | Entry | 22 | Test.java:8:11:8:11 | 0 |
|
||||
| Test.java:4:14:4:17 | Entry | 23 | Test.java:8:7:8:11 | w |
|
||||
| Test.java:4:14:4:17 | Entry | 24 | Test.java:8:7:8:11 | After w |
|
||||
| Test.java:4:14:4:17 | Entry | 25 | Test.java:8:3:8:12 | After var ...; |
|
||||
| Test.java:4:14:4:17 | Entry | 26 | Test.java:11:3:11:12 | if (...) |
|
||||
| Test.java:4:14:4:17 | Entry | 27 | Test.java:11:7:11:11 | Before ... > ... |
|
||||
| Test.java:4:14:4:17 | Entry | 28 | Test.java:11:7:11:7 | x |
|
||||
| Test.java:4:14:4:17 | Entry | 29 | Test.java:11:11:11:11 | 0 |
|
||||
| Test.java:4:14:4:17 | Entry | 30 | Test.java:11:7:11:11 | ... > ... |
|
||||
| Test.java:4:14:4:17 | Normal Exit | 0 | Test.java:4:14:4:17 | Normal Exit |
|
||||
| Test.java:4:21:76:2 | { ... } | 0 | Test.java:4:21:76:2 | { ... } |
|
||||
| Test.java:4:21:76:2 | { ... } | 1 | Test.java:5:3:5:12 | var ...; |
|
||||
| Test.java:4:21:76:2 | { ... } | 2 | Test.java:5:11:5:11 | 0 |
|
||||
| Test.java:4:21:76:2 | { ... } | 3 | Test.java:5:7:5:11 | x |
|
||||
| Test.java:4:21:76:2 | { ... } | 4 | Test.java:6:3:6:14 | var ...; |
|
||||
| Test.java:4:21:76:2 | { ... } | 5 | Test.java:6:12:6:13 | 50 |
|
||||
| Test.java:4:21:76:2 | { ... } | 6 | Test.java:6:8:6:13 | y |
|
||||
| Test.java:4:21:76:2 | { ... } | 7 | Test.java:7:3:7:12 | var ...; |
|
||||
| Test.java:4:21:76:2 | { ... } | 8 | Test.java:7:11:7:11 | 0 |
|
||||
| Test.java:4:21:76:2 | { ... } | 9 | Test.java:7:7:7:11 | z |
|
||||
| Test.java:4:21:76:2 | { ... } | 10 | Test.java:8:3:8:12 | var ...; |
|
||||
| Test.java:4:21:76:2 | { ... } | 11 | Test.java:8:11:8:11 | 0 |
|
||||
| Test.java:4:21:76:2 | { ... } | 12 | Test.java:8:7:8:11 | w |
|
||||
| Test.java:4:21:76:2 | { ... } | 13 | Test.java:11:3:11:12 | if (...) |
|
||||
| Test.java:4:21:76:2 | { ... } | 14 | Test.java:11:7:11:7 | x |
|
||||
| Test.java:4:21:76:2 | { ... } | 15 | Test.java:11:11:11:11 | 0 |
|
||||
| Test.java:4:21:76:2 | { ... } | 16 | Test.java:11:7:11:11 | ... > ... |
|
||||
| Test.java:11:14:14:3 | { ... } | 0 | Test.java:11:14:14:3 | { ... } |
|
||||
| Test.java:11:14:14:3 | { ... } | 1 | Test.java:12:4:12:10 | <Expr>; |
|
||||
| Test.java:11:14:14:3 | { ... } | 2 | Test.java:12:8:12:9 | 20 |
|
||||
| Test.java:11:14:14:3 | { ... } | 3 | Test.java:12:4:12:9 | ...=... |
|
||||
| Test.java:11:14:14:3 | { ... } | 4 | Test.java:13:4:13:10 | <Expr>; |
|
||||
| Test.java:11:14:14:3 | { ... } | 5 | Test.java:13:8:13:9 | 10 |
|
||||
| Test.java:11:14:14:3 | { ... } | 6 | Test.java:13:4:13:9 | ...=... |
|
||||
| Test.java:14:10:16:3 | { ... } | 0 | Test.java:14:10:16:3 | { ... } |
|
||||
| Test.java:14:10:16:3 | { ... } | 1 | Test.java:15:4:15:10 | <Expr>; |
|
||||
| Test.java:14:10:16:3 | { ... } | 2 | Test.java:15:8:15:9 | 30 |
|
||||
| Test.java:14:10:16:3 | { ... } | 3 | Test.java:15:4:15:9 | ...=... |
|
||||
| Test.java:18:3:18:8 | <Expr>; | 0 | Test.java:18:3:18:8 | <Expr>; |
|
||||
| Test.java:18:3:18:8 | <Expr>; | 1 | Test.java:18:7:18:7 | 0 |
|
||||
| Test.java:18:3:18:8 | <Expr>; | 2 | Test.java:18:3:18:7 | ...=... |
|
||||
| Test.java:18:3:18:8 | <Expr>; | 3 | Test.java:21:3:21:11 | if (...) |
|
||||
| Test.java:18:3:18:8 | <Expr>; | 4 | Test.java:21:6:21:6 | x |
|
||||
| Test.java:18:3:18:8 | <Expr>; | 5 | Test.java:21:10:21:10 | 0 |
|
||||
| Test.java:18:3:18:8 | <Expr>; | 6 | Test.java:21:6:21:10 | ... < ... |
|
||||
| Test.java:22:4:22:10 | <Expr>; | 0 | Test.java:22:4:22:10 | <Expr>; |
|
||||
| Test.java:22:4:22:10 | <Expr>; | 1 | Test.java:22:8:22:9 | 40 |
|
||||
| Test.java:22:4:22:10 | <Expr>; | 2 | Test.java:22:4:22:9 | ...=... |
|
||||
| Test.java:22:4:22:10 | <Expr>; | 3 | Test.java:27:3:27:9 | <Expr>; |
|
||||
| Test.java:22:4:22:10 | <Expr>; | 4 | Test.java:27:7:27:8 | 10 |
|
||||
| Test.java:22:4:22:10 | <Expr>; | 5 | Test.java:27:3:27:8 | ...=... |
|
||||
| Test.java:22:4:22:10 | <Expr>; | 6 | Test.java:30:3:30:13 | if (...) |
|
||||
| Test.java:22:4:22:10 | <Expr>; | 7 | Test.java:30:7:30:7 | x |
|
||||
| Test.java:22:4:22:10 | <Expr>; | 8 | Test.java:30:12:30:12 | 0 |
|
||||
| Test.java:22:4:22:10 | <Expr>; | 9 | Test.java:30:7:30:12 | ... == ... |
|
||||
| Test.java:24:4:24:10 | return ... | 0 | Test.java:24:4:24:10 | return ... |
|
||||
| Test.java:30:15:33:3 | { ... } | 0 | Test.java:30:15:33:3 | { ... } |
|
||||
| Test.java:30:15:33:3 | { ... } | 1 | Test.java:31:4:31:10 | <Expr>; |
|
||||
| Test.java:30:15:33:3 | { ... } | 2 | Test.java:31:8:31:9 | 60 |
|
||||
| Test.java:30:15:33:3 | { ... } | 3 | Test.java:31:4:31:9 | ...=... |
|
||||
| Test.java:30:15:33:3 | { ... } | 4 | Test.java:32:4:32:10 | <Expr>; |
|
||||
| Test.java:30:15:33:3 | { ... } | 5 | Test.java:32:8:32:9 | 10 |
|
||||
| Test.java:30:15:33:3 | { ... } | 6 | Test.java:32:4:32:9 | ...=... |
|
||||
| Test.java:35:3:35:9 | <Expr>; | 0 | Test.java:35:3:35:9 | <Expr>; |
|
||||
| Test.java:35:3:35:9 | <Expr>; | 1 | Test.java:35:7:35:8 | 20 |
|
||||
| Test.java:35:3:35:9 | <Expr>; | 2 | Test.java:35:3:35:8 | ...=... |
|
||||
| Test.java:35:3:35:9 | <Expr>; | 3 | Test.java:38:3:38:14 | while (...) |
|
||||
| Test.java:38:9:38:9 | x | 0 | Test.java:38:9:38:9 | x |
|
||||
| Test.java:38:9:38:9 | x | 1 | Test.java:38:13:38:13 | 0 |
|
||||
| Test.java:38:9:38:9 | x | 2 | Test.java:38:9:38:13 | ... > ... |
|
||||
| Test.java:38:16:41:3 | { ... } | 0 | Test.java:38:16:41:3 | { ... } |
|
||||
| Test.java:38:16:41:3 | { ... } | 1 | Test.java:39:4:39:10 | <Expr>; |
|
||||
| Test.java:38:16:41:3 | { ... } | 2 | Test.java:39:8:39:9 | 10 |
|
||||
| Test.java:38:16:41:3 | { ... } | 3 | Test.java:39:4:39:9 | ...=... |
|
||||
| Test.java:38:16:41:3 | { ... } | 4 | Test.java:40:4:40:7 | <Expr>; |
|
||||
| Test.java:38:16:41:3 | { ... } | 5 | Test.java:40:4:40:4 | x |
|
||||
| Test.java:38:16:41:3 | { ... } | 6 | Test.java:40:4:40:6 | ...-- |
|
||||
| Test.java:43:3:43:9 | <Expr>; | 0 | Test.java:43:3:43:9 | <Expr>; |
|
||||
| Test.java:43:3:43:9 | <Expr>; | 1 | Test.java:43:7:43:8 | 30 |
|
||||
| Test.java:43:3:43:9 | <Expr>; | 2 | Test.java:43:3:43:8 | ...=... |
|
||||
| Test.java:43:3:43:9 | <Expr>; | 3 | Test.java:46:3:46:29 | for (...;...;...) |
|
||||
| Test.java:43:3:43:9 | <Expr>; | 4 | Test.java:46:15:46:15 | 0 |
|
||||
| Test.java:43:3:43:9 | <Expr>; | 5 | Test.java:46:11:46:15 | j |
|
||||
| Test.java:46:18:46:18 | j | 0 | Test.java:46:18:46:18 | j |
|
||||
| Test.java:46:18:46:18 | j | 1 | Test.java:46:22:46:23 | 10 |
|
||||
| Test.java:46:18:46:18 | j | 2 | Test.java:46:18:46:23 | ... < ... |
|
||||
| Test.java:46:31:49:3 | { ... } | 0 | Test.java:46:31:49:3 | { ... } |
|
||||
| Test.java:46:31:49:3 | { ... } | 1 | Test.java:47:4:47:9 | <Expr>; |
|
||||
| Test.java:46:31:49:3 | { ... } | 2 | Test.java:47:8:47:8 | 0 |
|
||||
| Test.java:46:31:49:3 | { ... } | 3 | Test.java:47:4:47:8 | ...=... |
|
||||
| Test.java:46:31:49:3 | { ... } | 4 | Test.java:48:4:48:10 | <Expr>; |
|
||||
| Test.java:46:31:49:3 | { ... } | 5 | Test.java:48:8:48:9 | 10 |
|
||||
| Test.java:46:31:49:3 | { ... } | 6 | Test.java:48:4:48:9 | ...=... |
|
||||
| Test.java:46:31:49:3 | { ... } | 7 | Test.java:46:26:46:26 | j |
|
||||
| Test.java:46:31:49:3 | { ... } | 8 | Test.java:46:26:46:28 | ...++ |
|
||||
| Test.java:51:3:51:9 | <Expr>; | 0 | Test.java:51:3:51:9 | <Expr>; |
|
||||
| Test.java:51:3:51:9 | <Expr>; | 1 | Test.java:51:7:51:8 | 40 |
|
||||
| Test.java:51:3:51:9 | <Expr>; | 2 | Test.java:51:3:51:8 | ...=... |
|
||||
| Test.java:51:3:51:9 | <Expr>; | 3 | Test.java:54:3:54:29 | for (...;...;...) |
|
||||
| Test.java:51:3:51:9 | <Expr>; | 4 | Test.java:54:15:54:15 | 0 |
|
||||
| Test.java:51:3:51:9 | <Expr>; | 5 | Test.java:54:11:54:15 | j |
|
||||
| Test.java:54:18:54:18 | j | 0 | Test.java:54:18:54:18 | j |
|
||||
| Test.java:54:18:54:18 | j | 1 | Test.java:54:22:54:23 | 10 |
|
||||
| Test.java:54:18:54:18 | j | 2 | Test.java:54:18:54:23 | ... < ... |
|
||||
| Test.java:54:26:54:26 | j | 0 | Test.java:54:26:54:26 | j |
|
||||
| Test.java:54:26:54:26 | j | 1 | Test.java:54:26:54:28 | ...++ |
|
||||
| Test.java:54:31:68:3 | { ... } | 0 | Test.java:54:31:68:3 | { ... } |
|
||||
| Test.java:54:31:68:3 | { ... } | 1 | Test.java:55:4:55:10 | <Expr>; |
|
||||
| Test.java:54:31:68:3 | { ... } | 2 | Test.java:55:8:55:9 | 30 |
|
||||
| Test.java:54:31:68:3 | { ... } | 3 | Test.java:55:4:55:9 | ...=... |
|
||||
| Test.java:54:31:68:3 | { ... } | 4 | Test.java:56:4:56:12 | if (...) |
|
||||
| Test.java:54:31:68:3 | { ... } | 5 | Test.java:56:7:56:7 | z |
|
||||
| Test.java:54:31:68:3 | { ... } | 6 | Test.java:56:11:56:11 | 0 |
|
||||
| Test.java:54:31:68:3 | { ... } | 7 | Test.java:56:7:56:11 | ... > ... |
|
||||
| Test.java:57:5:57:13 | if (...) | 0 | Test.java:57:5:57:13 | if (...) |
|
||||
| Test.java:57:5:57:13 | if (...) | 1 | Test.java:57:8:57:8 | y |
|
||||
| Test.java:57:5:57:13 | if (...) | 2 | Test.java:57:12:57:12 | 0 |
|
||||
| Test.java:57:5:57:13 | if (...) | 3 | Test.java:57:8:57:12 | ... > ... |
|
||||
| Test.java:57:15:60:5 | { ... } | 0 | Test.java:57:15:60:5 | { ... } |
|
||||
| Test.java:57:15:60:5 | { ... } | 1 | Test.java:58:6:58:11 | <Expr>; |
|
||||
| Test.java:57:15:60:5 | { ... } | 2 | Test.java:58:10:58:10 | 0 |
|
||||
| Test.java:57:15:60:5 | { ... } | 3 | Test.java:58:6:58:10 | ...=... |
|
||||
| Test.java:57:15:60:5 | { ... } | 4 | Test.java:59:6:59:11 | break |
|
||||
| Test.java:60:12:62:5 | { ... } | 0 | Test.java:60:12:62:5 | { ... } |
|
||||
| Test.java:60:12:62:5 | { ... } | 1 | Test.java:61:6:61:12 | <Expr>; |
|
||||
| Test.java:60:12:62:5 | { ... } | 2 | Test.java:61:10:61:11 | 20 |
|
||||
| Test.java:60:12:62:5 | { ... } | 3 | Test.java:61:6:61:11 | ...=... |
|
||||
| Test.java:60:12:62:5 | { ... } | 4 | Test.java:67:4:67:9 | <Expr>; |
|
||||
| Test.java:60:12:62:5 | { ... } | 5 | Test.java:67:8:67:8 | 0 |
|
||||
| Test.java:60:12:62:5 | { ... } | 6 | Test.java:67:4:67:8 | ...=... |
|
||||
| Test.java:63:9:66:4 | { ... } | 0 | Test.java:63:9:66:4 | { ... } |
|
||||
| Test.java:63:9:66:4 | { ... } | 1 | Test.java:64:5:64:11 | <Expr>; |
|
||||
| Test.java:63:9:66:4 | { ... } | 2 | Test.java:64:9:64:10 | 10 |
|
||||
| Test.java:63:9:66:4 | { ... } | 3 | Test.java:64:5:64:10 | ...=... |
|
||||
| Test.java:63:9:66:4 | { ... } | 4 | Test.java:65:5:65:13 | continue |
|
||||
| Test.java:70:3:70:9 | <Expr>; | 0 | Test.java:70:3:70:9 | <Expr>; |
|
||||
| Test.java:70:3:70:9 | <Expr>; | 1 | Test.java:70:7:70:8 | 50 |
|
||||
| Test.java:70:3:70:9 | <Expr>; | 2 | Test.java:70:3:70:8 | ...=... |
|
||||
| Test.java:70:3:70:9 | <Expr>; | 3 | Test.java:74:3:74:9 | <Expr>; |
|
||||
| Test.java:70:3:70:9 | <Expr>; | 4 | Test.java:74:7:74:8 | 40 |
|
||||
| Test.java:70:3:70:9 | <Expr>; | 5 | Test.java:74:3:74:8 | ...=... |
|
||||
| Test.java:70:3:70:9 | <Expr>; | 6 | Test.java:75:3:75:9 | return ... |
|
||||
| Test.java:4:14:4:17 | Normal Exit | 1 | Test.java:4:14:4:17 | Exit |
|
||||
| Test.java:11:3:11:12 | After if (...) | 0 | Test.java:11:3:11:12 | After if (...) |
|
||||
| Test.java:11:3:11:12 | After if (...) | 1 | Test.java:18:3:18:8 | <Expr>; |
|
||||
| Test.java:11:3:11:12 | After if (...) | 2 | Test.java:18:3:18:7 | Before ...=... |
|
||||
| Test.java:11:3:11:12 | After if (...) | 3 | Test.java:18:3:18:3 | z |
|
||||
| Test.java:11:3:11:12 | After if (...) | 4 | Test.java:18:7:18:7 | 0 |
|
||||
| Test.java:11:3:11:12 | After if (...) | 5 | Test.java:18:3:18:7 | ...=... |
|
||||
| Test.java:11:3:11:12 | After if (...) | 6 | Test.java:18:3:18:7 | After ...=... |
|
||||
| Test.java:11:3:11:12 | After if (...) | 7 | Test.java:18:3:18:8 | After <Expr>; |
|
||||
| Test.java:11:3:11:12 | After if (...) | 8 | Test.java:21:3:21:11 | if (...) |
|
||||
| Test.java:11:3:11:12 | After if (...) | 9 | Test.java:21:6:21:10 | Before ... < ... |
|
||||
| Test.java:11:3:11:12 | After if (...) | 10 | Test.java:21:6:21:6 | x |
|
||||
| Test.java:11:3:11:12 | After if (...) | 11 | Test.java:21:10:21:10 | 0 |
|
||||
| Test.java:11:3:11:12 | After if (...) | 12 | Test.java:21:6:21:10 | ... < ... |
|
||||
| Test.java:11:7:11:11 | After ... > ... [false] | 0 | Test.java:11:7:11:11 | After ... > ... [false] |
|
||||
| Test.java:11:7:11:11 | After ... > ... [false] | 1 | Test.java:14:10:16:3 | { ... } |
|
||||
| Test.java:11:7:11:11 | After ... > ... [false] | 2 | Test.java:15:4:15:10 | <Expr>; |
|
||||
| Test.java:11:7:11:11 | After ... > ... [false] | 3 | Test.java:15:4:15:9 | Before ...=... |
|
||||
| Test.java:11:7:11:11 | After ... > ... [false] | 4 | Test.java:15:4:15:4 | y |
|
||||
| Test.java:11:7:11:11 | After ... > ... [false] | 5 | Test.java:15:8:15:9 | 30 |
|
||||
| Test.java:11:7:11:11 | After ... > ... [false] | 6 | Test.java:15:4:15:9 | ...=... |
|
||||
| Test.java:11:7:11:11 | After ... > ... [false] | 7 | Test.java:15:4:15:9 | After ...=... |
|
||||
| Test.java:11:7:11:11 | After ... > ... [false] | 8 | Test.java:15:4:15:10 | After <Expr>; |
|
||||
| Test.java:11:7:11:11 | After ... > ... [false] | 9 | Test.java:14:10:16:3 | After { ... } |
|
||||
| Test.java:11:7:11:11 | After ... > ... [true] | 0 | Test.java:11:7:11:11 | After ... > ... [true] |
|
||||
| Test.java:11:7:11:11 | After ... > ... [true] | 1 | Test.java:11:14:14:3 | { ... } |
|
||||
| Test.java:11:7:11:11 | After ... > ... [true] | 2 | Test.java:12:4:12:10 | <Expr>; |
|
||||
| Test.java:11:7:11:11 | After ... > ... [true] | 3 | Test.java:12:4:12:9 | Before ...=... |
|
||||
| Test.java:11:7:11:11 | After ... > ... [true] | 4 | Test.java:12:4:12:4 | y |
|
||||
| Test.java:11:7:11:11 | After ... > ... [true] | 5 | Test.java:12:8:12:9 | 20 |
|
||||
| Test.java:11:7:11:11 | After ... > ... [true] | 6 | Test.java:12:4:12:9 | ...=... |
|
||||
| Test.java:11:7:11:11 | After ... > ... [true] | 7 | Test.java:12:4:12:9 | After ...=... |
|
||||
| Test.java:11:7:11:11 | After ... > ... [true] | 8 | Test.java:12:4:12:10 | After <Expr>; |
|
||||
| Test.java:11:7:11:11 | After ... > ... [true] | 9 | Test.java:13:4:13:10 | <Expr>; |
|
||||
| Test.java:11:7:11:11 | After ... > ... [true] | 10 | Test.java:13:4:13:9 | Before ...=... |
|
||||
| Test.java:11:7:11:11 | After ... > ... [true] | 11 | Test.java:13:4:13:4 | z |
|
||||
| Test.java:11:7:11:11 | After ... > ... [true] | 12 | Test.java:13:8:13:9 | 10 |
|
||||
| Test.java:11:7:11:11 | After ... > ... [true] | 13 | Test.java:13:4:13:9 | ...=... |
|
||||
| Test.java:11:7:11:11 | After ... > ... [true] | 14 | Test.java:13:4:13:9 | After ...=... |
|
||||
| Test.java:11:7:11:11 | After ... > ... [true] | 15 | Test.java:13:4:13:10 | After <Expr>; |
|
||||
| Test.java:11:7:11:11 | After ... > ... [true] | 16 | Test.java:11:14:14:3 | After { ... } |
|
||||
| Test.java:21:6:21:10 | After ... < ... [false] | 0 | Test.java:21:6:21:10 | After ... < ... [false] |
|
||||
| Test.java:21:6:21:10 | After ... < ... [false] | 1 | Test.java:24:4:24:10 | Before return ... |
|
||||
| Test.java:21:6:21:10 | After ... < ... [false] | 2 | Test.java:24:4:24:10 | return ... |
|
||||
| Test.java:21:6:21:10 | After ... < ... [true] | 0 | Test.java:21:6:21:10 | After ... < ... [true] |
|
||||
| Test.java:21:6:21:10 | After ... < ... [true] | 1 | Test.java:22:4:22:10 | <Expr>; |
|
||||
| Test.java:21:6:21:10 | After ... < ... [true] | 2 | Test.java:22:4:22:9 | Before ...=... |
|
||||
| Test.java:21:6:21:10 | After ... < ... [true] | 3 | Test.java:22:4:22:4 | y |
|
||||
| Test.java:21:6:21:10 | After ... < ... [true] | 4 | Test.java:22:8:22:9 | 40 |
|
||||
| Test.java:21:6:21:10 | After ... < ... [true] | 5 | Test.java:22:4:22:9 | ...=... |
|
||||
| Test.java:21:6:21:10 | After ... < ... [true] | 6 | Test.java:22:4:22:9 | After ...=... |
|
||||
| Test.java:21:6:21:10 | After ... < ... [true] | 7 | Test.java:22:4:22:10 | After <Expr>; |
|
||||
| Test.java:21:6:21:10 | After ... < ... [true] | 8 | Test.java:21:3:21:11 | After if (...) |
|
||||
| Test.java:21:6:21:10 | After ... < ... [true] | 9 | Test.java:27:3:27:9 | <Expr>; |
|
||||
| Test.java:21:6:21:10 | After ... < ... [true] | 10 | Test.java:27:3:27:8 | Before ...=... |
|
||||
| Test.java:21:6:21:10 | After ... < ... [true] | 11 | Test.java:27:3:27:3 | z |
|
||||
| Test.java:21:6:21:10 | After ... < ... [true] | 12 | Test.java:27:7:27:8 | 10 |
|
||||
| Test.java:21:6:21:10 | After ... < ... [true] | 13 | Test.java:27:3:27:8 | ...=... |
|
||||
| Test.java:21:6:21:10 | After ... < ... [true] | 14 | Test.java:27:3:27:8 | After ...=... |
|
||||
| Test.java:21:6:21:10 | After ... < ... [true] | 15 | Test.java:27:3:27:9 | After <Expr>; |
|
||||
| Test.java:21:6:21:10 | After ... < ... [true] | 16 | Test.java:30:3:30:13 | if (...) |
|
||||
| Test.java:21:6:21:10 | After ... < ... [true] | 17 | Test.java:30:7:30:12 | Before ... == ... |
|
||||
| Test.java:21:6:21:10 | After ... < ... [true] | 18 | Test.java:30:7:30:7 | x |
|
||||
| Test.java:21:6:21:10 | After ... < ... [true] | 19 | Test.java:30:12:30:12 | 0 |
|
||||
| Test.java:21:6:21:10 | After ... < ... [true] | 20 | Test.java:30:7:30:12 | ... == ... |
|
||||
| Test.java:30:3:30:13 | After if (...) | 0 | Test.java:30:3:30:13 | After if (...) |
|
||||
| Test.java:30:3:30:13 | After if (...) | 1 | Test.java:35:3:35:9 | <Expr>; |
|
||||
| Test.java:30:3:30:13 | After if (...) | 2 | Test.java:35:3:35:8 | Before ...=... |
|
||||
| Test.java:30:3:30:13 | After if (...) | 3 | Test.java:35:3:35:3 | z |
|
||||
| Test.java:30:3:30:13 | After if (...) | 4 | Test.java:35:7:35:8 | 20 |
|
||||
| Test.java:30:3:30:13 | After if (...) | 5 | Test.java:35:3:35:8 | ...=... |
|
||||
| Test.java:30:3:30:13 | After if (...) | 6 | Test.java:35:3:35:8 | After ...=... |
|
||||
| Test.java:30:3:30:13 | After if (...) | 7 | Test.java:35:3:35:9 | After <Expr>; |
|
||||
| Test.java:30:3:30:13 | After if (...) | 8 | Test.java:38:3:38:14 | while (...) |
|
||||
| Test.java:30:7:30:12 | After ... == ... [false] | 0 | Test.java:30:7:30:12 | After ... == ... [false] |
|
||||
| Test.java:30:7:30:12 | After ... == ... [true] | 0 | Test.java:30:7:30:12 | After ... == ... [true] |
|
||||
| Test.java:30:7:30:12 | After ... == ... [true] | 1 | Test.java:30:15:33:3 | { ... } |
|
||||
| Test.java:30:7:30:12 | After ... == ... [true] | 2 | Test.java:31:4:31:10 | <Expr>; |
|
||||
| Test.java:30:7:30:12 | After ... == ... [true] | 3 | Test.java:31:4:31:9 | Before ...=... |
|
||||
| Test.java:30:7:30:12 | After ... == ... [true] | 4 | Test.java:31:4:31:4 | y |
|
||||
| Test.java:30:7:30:12 | After ... == ... [true] | 5 | Test.java:31:8:31:9 | 60 |
|
||||
| Test.java:30:7:30:12 | After ... == ... [true] | 6 | Test.java:31:4:31:9 | ...=... |
|
||||
| Test.java:30:7:30:12 | After ... == ... [true] | 7 | Test.java:31:4:31:9 | After ...=... |
|
||||
| Test.java:30:7:30:12 | After ... == ... [true] | 8 | Test.java:31:4:31:10 | After <Expr>; |
|
||||
| Test.java:30:7:30:12 | After ... == ... [true] | 9 | Test.java:32:4:32:10 | <Expr>; |
|
||||
| Test.java:30:7:30:12 | After ... == ... [true] | 10 | Test.java:32:4:32:9 | Before ...=... |
|
||||
| Test.java:30:7:30:12 | After ... == ... [true] | 11 | Test.java:32:4:32:4 | z |
|
||||
| Test.java:30:7:30:12 | After ... == ... [true] | 12 | Test.java:32:8:32:9 | 10 |
|
||||
| Test.java:30:7:30:12 | After ... == ... [true] | 13 | Test.java:32:4:32:9 | ...=... |
|
||||
| Test.java:30:7:30:12 | After ... == ... [true] | 14 | Test.java:32:4:32:9 | After ...=... |
|
||||
| Test.java:30:7:30:12 | After ... == ... [true] | 15 | Test.java:32:4:32:10 | After <Expr>; |
|
||||
| Test.java:30:7:30:12 | After ... == ... [true] | 16 | Test.java:30:15:33:3 | After { ... } |
|
||||
| Test.java:38:3:38:14 | [LoopHeader] while (...) | 0 | Test.java:38:3:38:14 | [LoopHeader] while (...) |
|
||||
| Test.java:38:3:38:14 | [LoopHeader] while (...) | 1 | Test.java:38:9:38:13 | Before ... > ... |
|
||||
| Test.java:38:3:38:14 | [LoopHeader] while (...) | 2 | Test.java:38:9:38:9 | x |
|
||||
| Test.java:38:3:38:14 | [LoopHeader] while (...) | 3 | Test.java:38:13:38:13 | 0 |
|
||||
| Test.java:38:3:38:14 | [LoopHeader] while (...) | 4 | Test.java:38:9:38:13 | ... > ... |
|
||||
| Test.java:38:9:38:13 | After ... > ... [false] | 0 | Test.java:38:9:38:13 | After ... > ... [false] |
|
||||
| Test.java:38:9:38:13 | After ... > ... [false] | 1 | Test.java:38:3:38:14 | After while (...) |
|
||||
| Test.java:38:9:38:13 | After ... > ... [false] | 2 | Test.java:43:3:43:9 | <Expr>; |
|
||||
| Test.java:38:9:38:13 | After ... > ... [false] | 3 | Test.java:43:3:43:8 | Before ...=... |
|
||||
| Test.java:38:9:38:13 | After ... > ... [false] | 4 | Test.java:43:3:43:3 | z |
|
||||
| Test.java:38:9:38:13 | After ... > ... [false] | 5 | Test.java:43:7:43:8 | 30 |
|
||||
| Test.java:38:9:38:13 | After ... > ... [false] | 6 | Test.java:43:3:43:8 | ...=... |
|
||||
| Test.java:38:9:38:13 | After ... > ... [false] | 7 | Test.java:43:3:43:8 | After ...=... |
|
||||
| Test.java:38:9:38:13 | After ... > ... [false] | 8 | Test.java:43:3:43:9 | After <Expr>; |
|
||||
| Test.java:38:9:38:13 | After ... > ... [false] | 9 | Test.java:46:3:46:29 | for (...;...;...) |
|
||||
| Test.java:38:9:38:13 | After ... > ... [false] | 10 | Test.java:46:11:46:15 | Before j |
|
||||
| Test.java:38:9:38:13 | After ... > ... [false] | 11 | Test.java:46:15:46:15 | 0 |
|
||||
| Test.java:38:9:38:13 | After ... > ... [false] | 12 | Test.java:46:11:46:15 | j |
|
||||
| Test.java:38:9:38:13 | After ... > ... [false] | 13 | Test.java:46:11:46:15 | After j |
|
||||
| Test.java:38:9:38:13 | After ... > ... [true] | 0 | Test.java:38:9:38:13 | After ... > ... [true] |
|
||||
| Test.java:38:9:38:13 | After ... > ... [true] | 1 | Test.java:38:16:41:3 | { ... } |
|
||||
| Test.java:38:9:38:13 | After ... > ... [true] | 2 | Test.java:39:4:39:10 | <Expr>; |
|
||||
| Test.java:38:9:38:13 | After ... > ... [true] | 3 | Test.java:39:4:39:9 | Before ...=... |
|
||||
| Test.java:38:9:38:13 | After ... > ... [true] | 4 | Test.java:39:4:39:4 | y |
|
||||
| Test.java:38:9:38:13 | After ... > ... [true] | 5 | Test.java:39:8:39:9 | 10 |
|
||||
| Test.java:38:9:38:13 | After ... > ... [true] | 6 | Test.java:39:4:39:9 | ...=... |
|
||||
| Test.java:38:9:38:13 | After ... > ... [true] | 7 | Test.java:39:4:39:9 | After ...=... |
|
||||
| Test.java:38:9:38:13 | After ... > ... [true] | 8 | Test.java:39:4:39:10 | After <Expr>; |
|
||||
| Test.java:38:9:38:13 | After ... > ... [true] | 9 | Test.java:40:4:40:7 | <Expr>; |
|
||||
| Test.java:38:9:38:13 | After ... > ... [true] | 10 | Test.java:40:4:40:6 | Before ...-- |
|
||||
| Test.java:38:9:38:13 | After ... > ... [true] | 11 | Test.java:40:4:40:4 | x |
|
||||
| Test.java:38:9:38:13 | After ... > ... [true] | 12 | Test.java:40:4:40:6 | ...-- |
|
||||
| Test.java:38:9:38:13 | After ... > ... [true] | 13 | Test.java:40:4:40:6 | After ...-- |
|
||||
| Test.java:38:9:38:13 | After ... > ... [true] | 14 | Test.java:40:4:40:7 | After <Expr>; |
|
||||
| Test.java:38:9:38:13 | After ... > ... [true] | 15 | Test.java:38:16:41:3 | After { ... } |
|
||||
| Test.java:46:18:46:23 | After ... < ... [false] | 0 | Test.java:46:18:46:23 | After ... < ... [false] |
|
||||
| Test.java:46:18:46:23 | After ... < ... [false] | 1 | Test.java:46:3:46:29 | After for (...;...;...) |
|
||||
| Test.java:46:18:46:23 | After ... < ... [false] | 2 | Test.java:51:3:51:9 | <Expr>; |
|
||||
| Test.java:46:18:46:23 | After ... < ... [false] | 3 | Test.java:51:3:51:8 | Before ...=... |
|
||||
| Test.java:46:18:46:23 | After ... < ... [false] | 4 | Test.java:51:3:51:3 | z |
|
||||
| Test.java:46:18:46:23 | After ... < ... [false] | 5 | Test.java:51:7:51:8 | 40 |
|
||||
| Test.java:46:18:46:23 | After ... < ... [false] | 6 | Test.java:51:3:51:8 | ...=... |
|
||||
| Test.java:46:18:46:23 | After ... < ... [false] | 7 | Test.java:51:3:51:8 | After ...=... |
|
||||
| Test.java:46:18:46:23 | After ... < ... [false] | 8 | Test.java:51:3:51:9 | After <Expr>; |
|
||||
| Test.java:46:18:46:23 | After ... < ... [false] | 9 | Test.java:54:3:54:29 | for (...;...;...) |
|
||||
| Test.java:46:18:46:23 | After ... < ... [false] | 10 | Test.java:54:11:54:15 | Before j |
|
||||
| Test.java:46:18:46:23 | After ... < ... [false] | 11 | Test.java:54:15:54:15 | 0 |
|
||||
| Test.java:46:18:46:23 | After ... < ... [false] | 12 | Test.java:54:11:54:15 | j |
|
||||
| Test.java:46:18:46:23 | After ... < ... [false] | 13 | Test.java:54:11:54:15 | After j |
|
||||
| Test.java:46:18:46:23 | After ... < ... [true] | 0 | Test.java:46:18:46:23 | After ... < ... [true] |
|
||||
| Test.java:46:18:46:23 | After ... < ... [true] | 1 | Test.java:46:31:49:3 | { ... } |
|
||||
| Test.java:46:18:46:23 | After ... < ... [true] | 2 | Test.java:47:4:47:9 | <Expr>; |
|
||||
| Test.java:46:18:46:23 | After ... < ... [true] | 3 | Test.java:47:4:47:8 | Before ...=... |
|
||||
| Test.java:46:18:46:23 | After ... < ... [true] | 4 | Test.java:47:4:47:4 | y |
|
||||
| Test.java:46:18:46:23 | After ... < ... [true] | 5 | Test.java:47:8:47:8 | 0 |
|
||||
| Test.java:46:18:46:23 | After ... < ... [true] | 6 | Test.java:47:4:47:8 | ...=... |
|
||||
| Test.java:46:18:46:23 | After ... < ... [true] | 7 | Test.java:47:4:47:8 | After ...=... |
|
||||
| Test.java:46:18:46:23 | After ... < ... [true] | 8 | Test.java:47:4:47:9 | After <Expr>; |
|
||||
| Test.java:46:18:46:23 | After ... < ... [true] | 9 | Test.java:48:4:48:10 | <Expr>; |
|
||||
| Test.java:46:18:46:23 | After ... < ... [true] | 10 | Test.java:48:4:48:9 | Before ...=... |
|
||||
| Test.java:46:18:46:23 | After ... < ... [true] | 11 | Test.java:48:4:48:4 | w |
|
||||
| Test.java:46:18:46:23 | After ... < ... [true] | 12 | Test.java:48:8:48:9 | 10 |
|
||||
| Test.java:46:18:46:23 | After ... < ... [true] | 13 | Test.java:48:4:48:9 | ...=... |
|
||||
| Test.java:46:18:46:23 | After ... < ... [true] | 14 | Test.java:48:4:48:9 | After ...=... |
|
||||
| Test.java:46:18:46:23 | After ... < ... [true] | 15 | Test.java:48:4:48:10 | After <Expr>; |
|
||||
| Test.java:46:18:46:23 | After ... < ... [true] | 16 | Test.java:46:31:49:3 | After { ... } |
|
||||
| Test.java:46:18:46:23 | After ... < ... [true] | 17 | Test.java:46:3:46:29 | [LoopHeader] for (...;...;...) |
|
||||
| Test.java:46:18:46:23 | After ... < ... [true] | 18 | Test.java:46:26:46:28 | Before ...++ |
|
||||
| Test.java:46:18:46:23 | After ... < ... [true] | 19 | Test.java:46:26:46:26 | j |
|
||||
| Test.java:46:18:46:23 | After ... < ... [true] | 20 | Test.java:46:26:46:28 | ...++ |
|
||||
| Test.java:46:18:46:23 | After ... < ... [true] | 21 | Test.java:46:26:46:28 | After ...++ |
|
||||
| Test.java:46:18:46:23 | Before ... < ... | 0 | Test.java:46:18:46:23 | Before ... < ... |
|
||||
| Test.java:46:18:46:23 | Before ... < ... | 1 | Test.java:46:18:46:18 | j |
|
||||
| Test.java:46:18:46:23 | Before ... < ... | 2 | Test.java:46:22:46:23 | 10 |
|
||||
| Test.java:46:18:46:23 | Before ... < ... | 3 | Test.java:46:18:46:23 | ... < ... |
|
||||
| Test.java:54:3:54:29 | After for (...;...;...) | 0 | Test.java:54:3:54:29 | After for (...;...;...) |
|
||||
| Test.java:54:3:54:29 | After for (...;...;...) | 1 | Test.java:70:3:70:9 | <Expr>; |
|
||||
| Test.java:54:3:54:29 | After for (...;...;...) | 2 | Test.java:70:3:70:8 | Before ...=... |
|
||||
| Test.java:54:3:54:29 | After for (...;...;...) | 3 | Test.java:70:3:70:3 | z |
|
||||
| Test.java:54:3:54:29 | After for (...;...;...) | 4 | Test.java:70:7:70:8 | 50 |
|
||||
| Test.java:54:3:54:29 | After for (...;...;...) | 5 | Test.java:70:3:70:8 | ...=... |
|
||||
| Test.java:54:3:54:29 | After for (...;...;...) | 6 | Test.java:70:3:70:8 | After ...=... |
|
||||
| Test.java:54:3:54:29 | After for (...;...;...) | 7 | Test.java:70:3:70:9 | After <Expr>; |
|
||||
| Test.java:54:3:54:29 | After for (...;...;...) | 8 | Test.java:74:3:74:9 | <Expr>; |
|
||||
| Test.java:54:3:54:29 | After for (...;...;...) | 9 | Test.java:74:3:74:8 | Before ...=... |
|
||||
| Test.java:54:3:54:29 | After for (...;...;...) | 10 | Test.java:74:3:74:3 | w |
|
||||
| Test.java:54:3:54:29 | After for (...;...;...) | 11 | Test.java:74:7:74:8 | 40 |
|
||||
| Test.java:54:3:54:29 | After for (...;...;...) | 12 | Test.java:74:3:74:8 | ...=... |
|
||||
| Test.java:54:3:54:29 | After for (...;...;...) | 13 | Test.java:74:3:74:8 | After ...=... |
|
||||
| Test.java:54:3:54:29 | After for (...;...;...) | 14 | Test.java:74:3:74:9 | After <Expr>; |
|
||||
| Test.java:54:3:54:29 | After for (...;...;...) | 15 | Test.java:75:3:75:9 | Before return ... |
|
||||
| Test.java:54:3:54:29 | After for (...;...;...) | 16 | Test.java:75:3:75:9 | return ... |
|
||||
| Test.java:54:3:54:29 | [LoopHeader] for (...;...;...) | 0 | Test.java:54:3:54:29 | [LoopHeader] for (...;...;...) |
|
||||
| Test.java:54:3:54:29 | [LoopHeader] for (...;...;...) | 1 | Test.java:54:26:54:28 | Before ...++ |
|
||||
| Test.java:54:3:54:29 | [LoopHeader] for (...;...;...) | 2 | Test.java:54:26:54:26 | j |
|
||||
| Test.java:54:3:54:29 | [LoopHeader] for (...;...;...) | 3 | Test.java:54:26:54:28 | ...++ |
|
||||
| Test.java:54:3:54:29 | [LoopHeader] for (...;...;...) | 4 | Test.java:54:26:54:28 | After ...++ |
|
||||
| Test.java:54:18:54:23 | After ... < ... [false] | 0 | Test.java:54:18:54:23 | After ... < ... [false] |
|
||||
| Test.java:54:18:54:23 | After ... < ... [true] | 0 | Test.java:54:18:54:23 | After ... < ... [true] |
|
||||
| Test.java:54:18:54:23 | After ... < ... [true] | 1 | Test.java:54:31:68:3 | { ... } |
|
||||
| Test.java:54:18:54:23 | After ... < ... [true] | 2 | Test.java:55:4:55:10 | <Expr>; |
|
||||
| Test.java:54:18:54:23 | After ... < ... [true] | 3 | Test.java:55:4:55:9 | Before ...=... |
|
||||
| Test.java:54:18:54:23 | After ... < ... [true] | 4 | Test.java:55:4:55:4 | y |
|
||||
| Test.java:54:18:54:23 | After ... < ... [true] | 5 | Test.java:55:8:55:9 | 30 |
|
||||
| Test.java:54:18:54:23 | After ... < ... [true] | 6 | Test.java:55:4:55:9 | ...=... |
|
||||
| Test.java:54:18:54:23 | After ... < ... [true] | 7 | Test.java:55:4:55:9 | After ...=... |
|
||||
| Test.java:54:18:54:23 | After ... < ... [true] | 8 | Test.java:55:4:55:10 | After <Expr>; |
|
||||
| Test.java:54:18:54:23 | After ... < ... [true] | 9 | Test.java:56:4:56:12 | if (...) |
|
||||
| Test.java:54:18:54:23 | After ... < ... [true] | 10 | Test.java:56:7:56:11 | Before ... > ... |
|
||||
| Test.java:54:18:54:23 | After ... < ... [true] | 11 | Test.java:56:7:56:7 | z |
|
||||
| Test.java:54:18:54:23 | After ... < ... [true] | 12 | Test.java:56:11:56:11 | 0 |
|
||||
| Test.java:54:18:54:23 | After ... < ... [true] | 13 | Test.java:56:7:56:11 | ... > ... |
|
||||
| Test.java:54:18:54:23 | Before ... < ... | 0 | Test.java:54:18:54:23 | Before ... < ... |
|
||||
| Test.java:54:18:54:23 | Before ... < ... | 1 | Test.java:54:18:54:18 | j |
|
||||
| Test.java:54:18:54:23 | Before ... < ... | 2 | Test.java:54:22:54:23 | 10 |
|
||||
| Test.java:54:18:54:23 | Before ... < ... | 3 | Test.java:54:18:54:23 | ... < ... |
|
||||
| Test.java:56:7:56:11 | After ... > ... [false] | 0 | Test.java:56:7:56:11 | After ... > ... [false] |
|
||||
| Test.java:56:7:56:11 | After ... > ... [false] | 1 | Test.java:63:9:66:4 | { ... } |
|
||||
| Test.java:56:7:56:11 | After ... > ... [false] | 2 | Test.java:64:5:64:11 | <Expr>; |
|
||||
| Test.java:56:7:56:11 | After ... > ... [false] | 3 | Test.java:64:5:64:10 | Before ...=... |
|
||||
| Test.java:56:7:56:11 | After ... > ... [false] | 4 | Test.java:64:5:64:5 | w |
|
||||
| Test.java:56:7:56:11 | After ... > ... [false] | 5 | Test.java:64:9:64:10 | 10 |
|
||||
| Test.java:56:7:56:11 | After ... > ... [false] | 6 | Test.java:64:5:64:10 | ...=... |
|
||||
| Test.java:56:7:56:11 | After ... > ... [false] | 7 | Test.java:64:5:64:10 | After ...=... |
|
||||
| Test.java:56:7:56:11 | After ... > ... [false] | 8 | Test.java:64:5:64:11 | After <Expr>; |
|
||||
| Test.java:56:7:56:11 | After ... > ... [false] | 9 | Test.java:65:5:65:13 | Before continue |
|
||||
| Test.java:56:7:56:11 | After ... > ... [false] | 10 | Test.java:65:5:65:13 | continue |
|
||||
| Test.java:56:7:56:11 | After ... > ... [true] | 0 | Test.java:56:7:56:11 | After ... > ... [true] |
|
||||
| Test.java:56:7:56:11 | After ... > ... [true] | 1 | Test.java:57:5:57:13 | if (...) |
|
||||
| Test.java:56:7:56:11 | After ... > ... [true] | 2 | Test.java:57:8:57:12 | Before ... > ... |
|
||||
| Test.java:56:7:56:11 | After ... > ... [true] | 3 | Test.java:57:8:57:8 | y |
|
||||
| Test.java:56:7:56:11 | After ... > ... [true] | 4 | Test.java:57:12:57:12 | 0 |
|
||||
| Test.java:56:7:56:11 | After ... > ... [true] | 5 | Test.java:57:8:57:12 | ... > ... |
|
||||
| Test.java:57:8:57:12 | After ... > ... [false] | 0 | Test.java:57:8:57:12 | After ... > ... [false] |
|
||||
| Test.java:57:8:57:12 | After ... > ... [false] | 1 | Test.java:60:12:62:5 | { ... } |
|
||||
| Test.java:57:8:57:12 | After ... > ... [false] | 2 | Test.java:61:6:61:12 | <Expr>; |
|
||||
| Test.java:57:8:57:12 | After ... > ... [false] | 3 | Test.java:61:6:61:11 | Before ...=... |
|
||||
| Test.java:57:8:57:12 | After ... > ... [false] | 4 | Test.java:61:6:61:6 | w |
|
||||
| Test.java:57:8:57:12 | After ... > ... [false] | 5 | Test.java:61:10:61:11 | 20 |
|
||||
| Test.java:57:8:57:12 | After ... > ... [false] | 6 | Test.java:61:6:61:11 | ...=... |
|
||||
| Test.java:57:8:57:12 | After ... > ... [false] | 7 | Test.java:61:6:61:11 | After ...=... |
|
||||
| Test.java:57:8:57:12 | After ... > ... [false] | 8 | Test.java:61:6:61:12 | After <Expr>; |
|
||||
| Test.java:57:8:57:12 | After ... > ... [false] | 9 | Test.java:60:12:62:5 | After { ... } |
|
||||
| Test.java:57:8:57:12 | After ... > ... [false] | 10 | Test.java:57:5:57:13 | After if (...) |
|
||||
| Test.java:57:8:57:12 | After ... > ... [false] | 11 | Test.java:56:4:56:12 | After if (...) |
|
||||
| Test.java:57:8:57:12 | After ... > ... [false] | 12 | Test.java:67:4:67:9 | <Expr>; |
|
||||
| Test.java:57:8:57:12 | After ... > ... [false] | 13 | Test.java:67:4:67:8 | Before ...=... |
|
||||
| Test.java:57:8:57:12 | After ... > ... [false] | 14 | Test.java:67:4:67:4 | x |
|
||||
| Test.java:57:8:57:12 | After ... > ... [false] | 15 | Test.java:67:8:67:8 | 0 |
|
||||
| Test.java:57:8:57:12 | After ... > ... [false] | 16 | Test.java:67:4:67:8 | ...=... |
|
||||
| Test.java:57:8:57:12 | After ... > ... [false] | 17 | Test.java:67:4:67:8 | After ...=... |
|
||||
| Test.java:57:8:57:12 | After ... > ... [false] | 18 | Test.java:67:4:67:9 | After <Expr>; |
|
||||
| Test.java:57:8:57:12 | After ... > ... [false] | 19 | Test.java:54:31:68:3 | After { ... } |
|
||||
| Test.java:57:8:57:12 | After ... > ... [true] | 0 | Test.java:57:8:57:12 | After ... > ... [true] |
|
||||
| Test.java:57:8:57:12 | After ... > ... [true] | 1 | Test.java:57:15:60:5 | { ... } |
|
||||
| Test.java:57:8:57:12 | After ... > ... [true] | 2 | Test.java:58:6:58:11 | <Expr>; |
|
||||
| Test.java:57:8:57:12 | After ... > ... [true] | 3 | Test.java:58:6:58:10 | Before ...=... |
|
||||
| Test.java:57:8:57:12 | After ... > ... [true] | 4 | Test.java:58:6:58:6 | w |
|
||||
| Test.java:57:8:57:12 | After ... > ... [true] | 5 | Test.java:58:10:58:10 | 0 |
|
||||
| Test.java:57:8:57:12 | After ... > ... [true] | 6 | Test.java:58:6:58:10 | ...=... |
|
||||
| Test.java:57:8:57:12 | After ... > ... [true] | 7 | Test.java:58:6:58:10 | After ...=... |
|
||||
| Test.java:57:8:57:12 | After ... > ... [true] | 8 | Test.java:58:6:58:11 | After <Expr>; |
|
||||
| Test.java:57:8:57:12 | After ... > ... [true] | 9 | Test.java:59:6:59:11 | Before break |
|
||||
| Test.java:57:8:57:12 | After ... > ... [true] | 10 | Test.java:59:6:59:11 | break |
|
||||
|
||||
@@ -1,6 +1,3 @@
|
||||
| Test.java:3:14:3:17 | { ... } | Test.java:3:14:3:17 | Exit |
|
||||
| Test.java:4:14:4:17 | Normal Exit | Test.java:4:14:4:17 | Exit |
|
||||
| Test.java:4:21:76:2 | { ... } | Test.java:4:14:4:17 | Exit |
|
||||
| Test.java:4:21:76:2 | { ... } | Test.java:4:14:4:17 | Normal Exit |
|
||||
| Test.java:4:21:76:2 | { ... } | Test.java:11:14:14:3 | { ... } |
|
||||
| Test.java:4:21:76:2 | { ... } | Test.java:14:10:16:3 | { ... } |
|
||||
@@ -23,7 +20,6 @@
|
||||
| Test.java:4:21:76:2 | { ... } | Test.java:60:12:62:5 | { ... } |
|
||||
| Test.java:4:21:76:2 | { ... } | Test.java:63:9:66:4 | { ... } |
|
||||
| Test.java:4:21:76:2 | { ... } | Test.java:70:3:70:9 | <Expr>; |
|
||||
| Test.java:18:3:18:8 | <Expr>; | Test.java:4:14:4:17 | Exit |
|
||||
| Test.java:18:3:18:8 | <Expr>; | Test.java:4:14:4:17 | Normal Exit |
|
||||
| Test.java:18:3:18:8 | <Expr>; | Test.java:22:4:22:10 | <Expr>; |
|
||||
| Test.java:18:3:18:8 | <Expr>; | Test.java:24:4:24:10 | return ... |
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
import java
|
||||
import semmle.code.java.controlflow.Dominance
|
||||
import utils.test.BasicBlock
|
||||
|
||||
from BasicBlock b, BasicBlock b2
|
||||
where b.strictlyDominates(b2)
|
||||
select b, b2
|
||||
select getFirstAstNode(b), getFirstAstNode(b2)
|
||||
|
||||
@@ -1,16 +1,13 @@
|
||||
| Test.java:3:14:3:17 | Exceptional Exit | Test.java:3:14:3:17 | Exit |
|
||||
| Test.java:3:14:3:17 | { ... } | Test.java:3:14:3:17 | Exit |
|
||||
| Test.java:4:14:4:17 | Exceptional Exit | Test.java:4:14:4:17 | Exit |
|
||||
| Test.java:4:14:4:17 | Normal Exit | Test.java:4:14:4:17 | Exit |
|
||||
| Test.java:4:21:76:2 | { ... } | Test.java:11:14:14:3 | { ... } |
|
||||
| Test.java:4:21:76:2 | { ... } | Test.java:14:10:16:3 | { ... } |
|
||||
| Test.java:11:14:14:3 | { ... } | Test.java:18:3:18:8 | <Expr>; |
|
||||
| Test.java:14:10:16:3 | { ... } | Test.java:18:3:18:8 | <Expr>; |
|
||||
| Test.java:18:3:18:8 | <Expr>; | Test.java:22:4:22:10 | <Expr>; |
|
||||
| Test.java:18:3:18:8 | <Expr>; | Test.java:24:4:24:10 | return ... |
|
||||
| Test.java:22:4:22:10 | <Expr>; | Test.java:30:7:30:12 | After ... == ... [false] |
|
||||
| Test.java:22:4:22:10 | <Expr>; | Test.java:30:15:33:3 | { ... } |
|
||||
| Test.java:22:4:22:10 | <Expr>; | Test.java:35:3:35:9 | <Expr>; |
|
||||
| Test.java:24:4:24:10 | return ... | Test.java:4:14:4:17 | Normal Exit |
|
||||
| Test.java:30:7:30:12 | After ... == ... [false] | Test.java:35:3:35:9 | <Expr>; |
|
||||
| Test.java:30:15:33:3 | { ... } | Test.java:35:3:35:9 | <Expr>; |
|
||||
| Test.java:35:3:35:9 | <Expr>; | Test.java:38:9:38:9 | x |
|
||||
| Test.java:38:9:38:9 | x | Test.java:38:16:41:3 | { ... } |
|
||||
@@ -21,8 +18,9 @@
|
||||
| Test.java:46:18:46:18 | j | Test.java:51:3:51:9 | <Expr>; |
|
||||
| Test.java:46:31:49:3 | { ... } | Test.java:46:18:46:18 | j |
|
||||
| Test.java:51:3:51:9 | <Expr>; | Test.java:54:18:54:18 | j |
|
||||
| Test.java:54:18:54:18 | j | Test.java:54:18:54:23 | After ... < ... [false] |
|
||||
| Test.java:54:18:54:18 | j | Test.java:54:31:68:3 | { ... } |
|
||||
| Test.java:54:18:54:18 | j | Test.java:70:3:70:9 | <Expr>; |
|
||||
| Test.java:54:18:54:23 | After ... < ... [false] | Test.java:70:3:70:9 | <Expr>; |
|
||||
| Test.java:54:26:54:26 | j | Test.java:54:18:54:18 | j |
|
||||
| Test.java:54:31:68:3 | { ... } | Test.java:57:5:57:13 | if (...) |
|
||||
| Test.java:54:31:68:3 | { ... } | Test.java:63:9:66:4 | { ... } |
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
import java
|
||||
import utils.test.BasicBlock
|
||||
|
||||
from BasicBlock b, BasicBlock b2
|
||||
where b.getASuccessor() = b2
|
||||
select b, b2
|
||||
select getFirstAstNodeOrSynth(b), getFirstAstNodeOrSynth(b2)
|
||||
|
||||
@@ -17,5 +17,6 @@ predicate dominanceCounterExample(ControlFlowNode entry, ControlFlowNode dom, Co
|
||||
from Callable c, ControlFlowNode dom, ControlFlowNode node
|
||||
where
|
||||
strictlyDominates(dom, node) and
|
||||
dominanceCounterExample(c.getBody().getControlFlowNode(), dom, node)
|
||||
dominanceCounterExample(any(ControlFlow::EntryNode entry | entry.getEnclosingCallable() = c), dom,
|
||||
node)
|
||||
select c, dom, node
|
||||
|
||||
@@ -1,176 +1,33 @@
|
||||
| Test.java:2:32:72:2 | { ... } | Test.java:3:3:3:8 | var ...; |
|
||||
| Test.java:3:3:3:8 | var ...; | Test.java:3:7:3:7 | j |
|
||||
| Test.java:3:7:3:7 | j | Test.java:4:3:4:14 | var ...; |
|
||||
| Test.java:4:3:4:14 | var ...; | Test.java:4:12:4:13 | 50 |
|
||||
| Test.java:4:8:4:13 | y | Test.java:7:3:7:12 | if (...) |
|
||||
| Test.java:4:12:4:13 | 50 | Test.java:4:8:4:13 | y |
|
||||
| Test.java:7:3:7:12 | if (...) | Test.java:7:7:7:7 | x |
|
||||
| Test.java:7:7:7:7 | x | Test.java:7:11:7:11 | 0 |
|
||||
| Test.java:7:7:7:11 | ... > ... | Test.java:7:14:10:3 | { ... } |
|
||||
| Test.java:7:7:7:11 | ... > ... | Test.java:10:10:12:3 | { ... } |
|
||||
| Test.java:7:7:7:11 | ... > ... | Test.java:14:3:14:20 | <Expr>; |
|
||||
| Test.java:7:11:7:11 | 0 | Test.java:7:7:7:11 | ... > ... |
|
||||
| Test.java:7:14:10:3 | { ... } | Test.java:8:4:8:10 | <Expr>; |
|
||||
| Test.java:8:4:8:9 | ...=... | Test.java:9:4:9:10 | <Expr>; |
|
||||
| Test.java:8:4:8:10 | <Expr>; | Test.java:8:8:8:9 | 20 |
|
||||
| Test.java:8:8:8:9 | 20 | Test.java:8:4:8:9 | ...=... |
|
||||
| Test.java:9:4:9:10 | <Expr>; | Test.java:9:8:9:9 | 10 |
|
||||
| Test.java:9:8:9:9 | 10 | Test.java:9:4:9:9 | ...=... |
|
||||
| Test.java:10:10:12:3 | { ... } | Test.java:11:4:11:10 | <Expr>; |
|
||||
| Test.java:11:4:11:10 | <Expr>; | Test.java:11:8:11:9 | 30 |
|
||||
| Test.java:11:8:11:9 | 30 | Test.java:11:4:11:9 | ...=... |
|
||||
| Test.java:14:3:14:19 | ...=... | Test.java:17:3:17:12 | if (...) |
|
||||
| Test.java:14:3:14:20 | <Expr>; | Test.java:14:14:14:14 | x |
|
||||
| Test.java:14:7:14:19 | (...)... | Test.java:14:3:14:19 | ...=... |
|
||||
| Test.java:14:14:14:14 | x | Test.java:14:18:14:18 | y |
|
||||
| Test.java:14:14:14:18 | ... + ... | Test.java:14:7:14:19 | (...)... |
|
||||
| Test.java:14:18:14:18 | y | Test.java:14:14:14:18 | ... + ... |
|
||||
| Test.java:17:3:17:12 | if (...) | Test.java:17:7:17:7 | x |
|
||||
| Test.java:17:7:17:7 | x | Test.java:17:11:17:11 | 0 |
|
||||
| Test.java:17:7:17:11 | ... < ... | Test.java:2:6:2:9 | Normal Exit |
|
||||
| Test.java:17:7:17:11 | ... < ... | Test.java:18:4:18:10 | <Expr>; |
|
||||
| Test.java:17:7:17:11 | ... < ... | Test.java:20:11:20:11 | z |
|
||||
| Test.java:17:11:17:11 | 0 | Test.java:17:7:17:11 | ... < ... |
|
||||
| Test.java:18:4:18:9 | ...=... | Test.java:23:3:23:9 | <Expr>; |
|
||||
| Test.java:18:4:18:10 | <Expr>; | Test.java:18:8:18:9 | 40 |
|
||||
| Test.java:18:8:18:9 | 40 | Test.java:18:4:18:9 | ...=... |
|
||||
| Test.java:20:11:20:11 | z | Test.java:20:4:20:12 | return ... |
|
||||
| Test.java:23:3:23:8 | ...=... | Test.java:26:3:26:13 | if (...) |
|
||||
| Test.java:23:3:23:9 | <Expr>; | Test.java:23:7:23:8 | 10 |
|
||||
| Test.java:23:7:23:8 | 10 | Test.java:23:3:23:8 | ...=... |
|
||||
| Test.java:26:3:26:13 | if (...) | Test.java:26:7:26:7 | x |
|
||||
| Test.java:26:7:26:7 | x | Test.java:26:12:26:12 | 0 |
|
||||
| Test.java:26:7:26:12 | ... == ... | Test.java:26:15:29:3 | { ... } |
|
||||
| Test.java:26:7:26:12 | ... == ... | Test.java:31:3:31:9 | <Expr>; |
|
||||
| Test.java:26:12:26:12 | 0 | Test.java:26:7:26:12 | ... == ... |
|
||||
| Test.java:26:15:29:3 | { ... } | Test.java:27:4:27:10 | <Expr>; |
|
||||
| Test.java:27:4:27:9 | ...=... | Test.java:28:4:28:10 | <Expr>; |
|
||||
| Test.java:27:4:27:10 | <Expr>; | Test.java:27:8:27:9 | 60 |
|
||||
| Test.java:27:8:27:9 | 60 | Test.java:27:4:27:9 | ...=... |
|
||||
| Test.java:28:4:28:10 | <Expr>; | Test.java:28:8:28:9 | 10 |
|
||||
| Test.java:28:8:28:9 | 10 | Test.java:28:4:28:9 | ...=... |
|
||||
| Test.java:31:3:31:3 | z | Test.java:31:8:31:8 | x |
|
||||
| Test.java:31:3:31:8 | ...+=... | Test.java:34:3:34:15 | while (...) |
|
||||
| Test.java:31:3:31:9 | <Expr>; | Test.java:31:3:31:3 | z |
|
||||
| Test.java:31:8:31:8 | x | Test.java:31:3:31:8 | ...+=... |
|
||||
| Test.java:34:3:34:15 | while (...) | Test.java:34:10:34:10 | x |
|
||||
| Test.java:34:10:34:10 | x | Test.java:34:14:34:14 | 0 |
|
||||
| Test.java:34:10:34:14 | ... > ... | Test.java:34:17:37:3 | { ... } |
|
||||
| Test.java:34:10:34:14 | ... > ... | Test.java:39:3:39:9 | <Expr>; |
|
||||
| Test.java:34:14:34:14 | 0 | Test.java:34:10:34:14 | ... > ... |
|
||||
| Test.java:34:17:37:3 | { ... } | Test.java:35:4:35:10 | <Expr>; |
|
||||
| Test.java:35:4:35:9 | ...=... | Test.java:36:4:36:7 | <Expr>; |
|
||||
| Test.java:35:4:35:10 | <Expr>; | Test.java:35:8:35:9 | 10 |
|
||||
| Test.java:35:8:35:9 | 10 | Test.java:35:4:35:9 | ...=... |
|
||||
| Test.java:36:4:36:4 | x | Test.java:36:4:36:6 | ...-- |
|
||||
| Test.java:36:4:36:7 | <Expr>; | Test.java:36:4:36:4 | x |
|
||||
| Test.java:39:3:39:3 | z | Test.java:39:8:39:8 | y |
|
||||
| Test.java:39:3:39:8 | ...+=... | Test.java:42:3:42:26 | for (...;...;...) |
|
||||
| Test.java:39:3:39:9 | <Expr>; | Test.java:39:3:39:3 | z |
|
||||
| Test.java:39:8:39:8 | y | Test.java:39:3:39:8 | ...+=... |
|
||||
| Test.java:42:3:42:26 | for (...;...;...) | Test.java:42:12:42:12 | 0 |
|
||||
| Test.java:42:8:42:12 | ...=... | Test.java:42:15:42:15 | j |
|
||||
| Test.java:42:12:42:12 | 0 | Test.java:42:8:42:12 | ...=... |
|
||||
| Test.java:42:15:42:15 | j | Test.java:42:19:42:20 | 10 |
|
||||
| Test.java:42:15:42:20 | ... < ... | Test.java:42:28:45:3 | { ... } |
|
||||
| Test.java:42:15:42:20 | ... < ... | Test.java:47:3:47:9 | <Expr>; |
|
||||
| Test.java:42:19:42:20 | 10 | Test.java:42:15:42:20 | ... < ... |
|
||||
| Test.java:42:23:42:23 | j | Test.java:42:23:42:25 | ...++ |
|
||||
| Test.java:42:28:45:3 | { ... } | Test.java:43:4:43:9 | <Expr>; |
|
||||
| Test.java:43:4:43:8 | ...=... | Test.java:44:4:44:10 | <Expr>; |
|
||||
| Test.java:43:4:43:9 | <Expr>; | Test.java:43:8:43:8 | 0 |
|
||||
| Test.java:43:8:43:8 | 0 | Test.java:43:4:43:8 | ...=... |
|
||||
| Test.java:44:4:44:9 | ...=... | Test.java:42:23:42:23 | j |
|
||||
| Test.java:44:4:44:10 | <Expr>; | Test.java:44:8:44:9 | 10 |
|
||||
| Test.java:44:8:44:9 | 10 | Test.java:44:4:44:9 | ...=... |
|
||||
| Test.java:47:3:47:3 | z | Test.java:47:8:47:8 | w |
|
||||
| Test.java:47:3:47:8 | ...+=... | Test.java:50:3:50:26 | for (...;...;...) |
|
||||
| Test.java:47:3:47:9 | <Expr>; | Test.java:47:3:47:3 | z |
|
||||
| Test.java:47:8:47:8 | w | Test.java:47:3:47:8 | ...+=... |
|
||||
| Test.java:50:3:50:26 | for (...;...;...) | Test.java:50:12:50:12 | 0 |
|
||||
| Test.java:50:8:50:12 | ...=... | Test.java:50:15:50:15 | j |
|
||||
| Test.java:50:12:50:12 | 0 | Test.java:50:8:50:12 | ...=... |
|
||||
| Test.java:50:15:50:15 | j | Test.java:50:19:50:20 | 10 |
|
||||
| Test.java:50:15:50:20 | ... < ... | Test.java:50:28:64:3 | { ... } |
|
||||
| Test.java:50:15:50:20 | ... < ... | Test.java:66:3:66:17 | <Expr>; |
|
||||
| Test.java:50:19:50:20 | 10 | Test.java:50:15:50:20 | ... < ... |
|
||||
| Test.java:50:23:50:23 | j | Test.java:50:23:50:25 | ...++ |
|
||||
| Test.java:50:28:64:3 | { ... } | Test.java:51:4:51:10 | <Expr>; |
|
||||
| Test.java:51:4:51:9 | ...=... | Test.java:52:4:52:13 | if (...) |
|
||||
| Test.java:51:4:51:10 | <Expr>; | Test.java:51:8:51:9 | 30 |
|
||||
| Test.java:51:8:51:9 | 30 | Test.java:51:4:51:9 | ...=... |
|
||||
| Test.java:52:4:52:13 | if (...) | Test.java:52:8:52:8 | z |
|
||||
| Test.java:52:8:52:8 | z | Test.java:52:12:52:12 | 0 |
|
||||
| Test.java:52:8:52:12 | ... > ... | Test.java:50:23:50:23 | j |
|
||||
| Test.java:52:8:52:12 | ... > ... | Test.java:53:5:53:14 | if (...) |
|
||||
| Test.java:52:8:52:12 | ... > ... | Test.java:59:9:62:4 | { ... } |
|
||||
| Test.java:52:12:52:12 | 0 | Test.java:52:8:52:12 | ... > ... |
|
||||
| Test.java:53:5:53:14 | if (...) | Test.java:53:9:53:9 | y |
|
||||
| Test.java:53:9:53:9 | y | Test.java:53:13:53:13 | 0 |
|
||||
| Test.java:53:9:53:13 | ... > ... | Test.java:53:16:56:5 | { ... } |
|
||||
| Test.java:53:9:53:13 | ... > ... | Test.java:56:12:58:5 | { ... } |
|
||||
| Test.java:53:13:53:13 | 0 | Test.java:53:9:53:13 | ... > ... |
|
||||
| Test.java:53:16:56:5 | { ... } | Test.java:54:6:54:11 | <Expr>; |
|
||||
| Test.java:54:6:54:10 | ...=... | Test.java:55:6:55:11 | break |
|
||||
| Test.java:54:6:54:11 | <Expr>; | Test.java:54:10:54:10 | 0 |
|
||||
| Test.java:54:10:54:10 | 0 | Test.java:54:6:54:10 | ...=... |
|
||||
| Test.java:56:12:58:5 | { ... } | Test.java:57:6:57:12 | <Expr>; |
|
||||
| Test.java:57:6:57:11 | ...=... | Test.java:63:4:63:9 | <Expr>; |
|
||||
| Test.java:57:6:57:12 | <Expr>; | Test.java:57:10:57:11 | 20 |
|
||||
| Test.java:57:10:57:11 | 20 | Test.java:57:6:57:11 | ...=... |
|
||||
| Test.java:59:9:62:4 | { ... } | Test.java:60:5:60:11 | <Expr>; |
|
||||
| Test.java:60:5:60:10 | ...=... | Test.java:61:5:61:13 | continue |
|
||||
| Test.java:60:5:60:11 | <Expr>; | Test.java:60:9:60:10 | 10 |
|
||||
| Test.java:60:9:60:10 | 10 | Test.java:60:5:60:10 | ...=... |
|
||||
| Test.java:63:4:63:9 | <Expr>; | Test.java:63:8:63:8 | 0 |
|
||||
| Test.java:63:8:63:8 | 0 | Test.java:63:4:63:8 | ...=... |
|
||||
| Test.java:66:3:66:3 | z | Test.java:66:8:66:8 | x |
|
||||
| Test.java:66:3:66:16 | ...+=... | Test.java:70:3:70:9 | <Expr>; |
|
||||
| Test.java:66:3:66:17 | <Expr>; | Test.java:66:3:66:3 | z |
|
||||
| Test.java:66:8:66:8 | x | Test.java:66:12:66:12 | y |
|
||||
| Test.java:66:8:66:12 | ... + ... | Test.java:66:16:66:16 | w |
|
||||
| Test.java:66:8:66:16 | ... + ... | Test.java:66:3:66:16 | ...+=... |
|
||||
| Test.java:66:12:66:12 | y | Test.java:66:8:66:12 | ... + ... |
|
||||
| Test.java:66:16:66:16 | w | Test.java:66:8:66:16 | ... + ... |
|
||||
| Test.java:70:3:70:8 | ...=... | Test.java:71:10:71:10 | w |
|
||||
| Test.java:70:3:70:9 | <Expr>; | Test.java:70:7:70:8 | 40 |
|
||||
| Test.java:70:7:70:8 | 40 | Test.java:70:3:70:8 | ...=... |
|
||||
| Test.java:71:10:71:10 | w | Test.java:71:3:71:11 | return ... |
|
||||
| Test.java:74:19:91:2 | { ... } | Test.java:76:3:76:8 | var ...; |
|
||||
| Test.java:76:3:76:8 | var ...; | Test.java:76:7:76:7 | b |
|
||||
| Test.java:76:7:76:7 | b | Test.java:77:3:77:8 | var ...; |
|
||||
| Test.java:77:3:77:8 | var ...; | Test.java:77:7:77:7 | c |
|
||||
| Test.java:77:7:77:7 | c | Test.java:78:3:78:8 | <Expr>; |
|
||||
| Test.java:78:3:78:7 | ...=... | Test.java:79:3:79:13 | while (...) |
|
||||
| Test.java:78:3:78:8 | <Expr>; | Test.java:78:7:78:7 | 0 |
|
||||
| Test.java:78:7:78:7 | 0 | Test.java:78:3:78:7 | ...=... |
|
||||
| Test.java:79:3:79:13 | while (...) | Test.java:79:9:79:12 | true |
|
||||
| Test.java:79:9:79:12 | true | Test.java:79:15:89:3 | { ... } |
|
||||
| Test.java:79:15:89:3 | { ... } | Test.java:80:4:80:10 | <Expr>; |
|
||||
| Test.java:80:4:80:9 | ...=... | Test.java:81:4:81:15 | if (...) |
|
||||
| Test.java:80:4:80:10 | <Expr>; | Test.java:80:8:80:9 | 10 |
|
||||
| Test.java:80:8:80:9 | 10 | Test.java:80:4:80:9 | ...=... |
|
||||
| Test.java:81:4:81:15 | if (...) | Test.java:81:8:81:8 | a |
|
||||
| Test.java:81:8:81:8 | a | Test.java:81:12:81:14 | 100 |
|
||||
| Test.java:81:8:81:14 | ... > ... | Test.java:81:17:84:4 | { ... } |
|
||||
| Test.java:81:8:81:14 | ... > ... | Test.java:85:4:85:15 | if (...) |
|
||||
| Test.java:81:12:81:14 | 100 | Test.java:81:8:81:14 | ... > ... |
|
||||
| Test.java:81:17:84:4 | { ... } | Test.java:82:5:82:11 | <Expr>; |
|
||||
| Test.java:82:5:82:10 | ...=... | Test.java:83:5:83:10 | <Expr>; |
|
||||
| Test.java:82:5:82:11 | <Expr>; | Test.java:82:9:82:10 | 10 |
|
||||
| Test.java:82:9:82:10 | 10 | Test.java:82:5:82:10 | ...=... |
|
||||
| Test.java:83:5:83:10 | <Expr>; | Test.java:83:9:83:9 | c |
|
||||
| Test.java:83:9:83:9 | c | Test.java:83:5:83:9 | ...=... |
|
||||
| Test.java:85:4:85:15 | if (...) | Test.java:85:8:85:8 | a |
|
||||
| Test.java:85:8:85:8 | a | Test.java:85:13:85:14 | 10 |
|
||||
| Test.java:85:8:85:14 | ... == ... | Test.java:74:6:74:10 | Normal Exit |
|
||||
| Test.java:85:8:85:14 | ... == ... | Test.java:86:5:86:10 | break |
|
||||
| Test.java:85:8:85:14 | ... == ... | Test.java:87:4:87:15 | if (...) |
|
||||
| Test.java:85:13:85:14 | 10 | Test.java:85:8:85:14 | ... == ... |
|
||||
| Test.java:86:5:86:10 | break | Test.java:90:10:90:10 | b |
|
||||
| Test.java:87:4:87:15 | if (...) | Test.java:87:8:87:8 | a |
|
||||
| Test.java:87:8:87:8 | a | Test.java:87:13:87:14 | 20 |
|
||||
| Test.java:87:8:87:14 | ... == ... | Test.java:88:12:88:12 | c |
|
||||
| Test.java:87:13:87:14 | 20 | Test.java:87:8:87:14 | ... == ... |
|
||||
| Test.java:88:12:88:12 | c | Test.java:88:5:88:13 | return ... |
|
||||
| Test.java:90:10:90:10 | b | Test.java:90:3:90:11 | return ... |
|
||||
| Test.java:2:32:72:2 | { ... } | Test.java:7:14:10:3 | { ... } |
|
||||
| Test.java:2:32:72:2 | { ... } | Test.java:10:10:12:3 | { ... } |
|
||||
| Test.java:2:32:72:2 | { ... } | Test.java:14:3:14:20 | <Expr>; |
|
||||
| Test.java:14:3:14:20 | <Expr>; | Test.java:2:6:2:9 | Normal Exit |
|
||||
| Test.java:14:3:14:20 | <Expr>; | Test.java:18:4:18:10 | <Expr>; |
|
||||
| Test.java:14:3:14:20 | <Expr>; | Test.java:20:11:20:11 | z |
|
||||
| Test.java:18:4:18:10 | <Expr>; | Test.java:26:7:26:12 | After ... == ... [false] |
|
||||
| Test.java:18:4:18:10 | <Expr>; | Test.java:26:15:29:3 | { ... } |
|
||||
| Test.java:18:4:18:10 | <Expr>; | Test.java:31:3:31:9 | <Expr>; |
|
||||
| Test.java:31:3:31:9 | <Expr>; | Test.java:34:10:34:10 | x |
|
||||
| Test.java:34:10:34:10 | x | Test.java:34:17:37:3 | { ... } |
|
||||
| Test.java:34:10:34:10 | x | Test.java:39:3:39:9 | <Expr>; |
|
||||
| Test.java:39:3:39:9 | <Expr>; | Test.java:42:15:42:15 | j |
|
||||
| Test.java:42:15:42:15 | j | Test.java:42:28:45:3 | { ... } |
|
||||
| Test.java:42:15:42:15 | j | Test.java:47:3:47:9 | <Expr>; |
|
||||
| Test.java:47:3:47:9 | <Expr>; | Test.java:50:15:50:15 | j |
|
||||
| Test.java:50:15:50:15 | j | Test.java:50:15:50:20 | After ... < ... [false] |
|
||||
| Test.java:50:15:50:15 | j | Test.java:50:28:64:3 | { ... } |
|
||||
| Test.java:50:15:50:15 | j | Test.java:66:3:66:17 | <Expr>; |
|
||||
| Test.java:50:28:64:3 | { ... } | Test.java:50:23:50:23 | j |
|
||||
| Test.java:50:28:64:3 | { ... } | Test.java:53:5:53:14 | if (...) |
|
||||
| Test.java:50:28:64:3 | { ... } | Test.java:59:9:62:4 | { ... } |
|
||||
| Test.java:53:5:53:14 | if (...) | Test.java:53:16:56:5 | { ... } |
|
||||
| Test.java:53:5:53:14 | if (...) | Test.java:56:12:58:5 | { ... } |
|
||||
| Test.java:74:19:91:2 | { ... } | Test.java:79:9:79:12 | true |
|
||||
| Test.java:79:9:79:12 | true | Test.java:81:8:81:14 | After ... > ... [false] |
|
||||
| Test.java:79:9:79:12 | true | Test.java:81:17:84:4 | { ... } |
|
||||
| Test.java:79:9:79:12 | true | Test.java:85:4:85:15 | if (...) |
|
||||
| Test.java:85:4:85:15 | if (...) | Test.java:74:6:74:10 | Normal Exit |
|
||||
| Test.java:85:4:85:15 | if (...) | Test.java:86:5:86:10 | break |
|
||||
| Test.java:85:4:85:15 | if (...) | Test.java:87:4:87:15 | if (...) |
|
||||
| Test.java:87:4:87:15 | if (...) | Test.java:87:8:87:14 | After ... == ... [false] |
|
||||
| Test.java:87:4:87:15 | if (...) | Test.java:88:12:88:12 | c |
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
import default
|
||||
import semmle.code.java.controlflow.Dominance
|
||||
import java
|
||||
import utils.test.BasicBlock
|
||||
|
||||
from Method func, ControlFlowNode dominator, ControlFlowNode node
|
||||
from Method func, BasicBlock dominator, BasicBlock bb
|
||||
where
|
||||
iDominates(dominator, node) and
|
||||
dominator.getEnclosingStmt().getEnclosingCallable() = func and
|
||||
dominator.immediatelyDominates(bb) and
|
||||
dominator.getEnclosingCallable() = func and
|
||||
func.getDeclaringType().hasName("Test")
|
||||
select dominator, node
|
||||
select getFirstAstNodeOrSynth(dominator), getFirstAstNodeOrSynth(bb)
|
||||
|
||||
@@ -7,5 +7,5 @@ where
|
||||
iDominates(dom1, node) and
|
||||
iDominates(dom2, node) and
|
||||
dom1 != dom2 and
|
||||
func = node.getEnclosingStmt().getEnclosingCallable()
|
||||
func = node.getEnclosingCallable()
|
||||
select func, node, dom1, dom2
|
||||
|
||||
@@ -16,8 +16,8 @@
|
||||
| A.java:21:11:21:13 | "B" : String | A.java:14:11:14:20 | f2(...) : new A(...) { ... } [String s] |
|
||||
| A.java:21:11:21:13 | "B" : String | A.java:15:16:15:16 | a : new A(...) { ... } [String s] |
|
||||
| A.java:21:11:21:13 | "B" : String | A.java:15:16:15:22 | get(...) : String |
|
||||
| A.java:21:11:21:13 | "B" : String | A.java:20:5:20:15 | SSA phi(s) : String |
|
||||
| A.java:21:11:21:13 | "B" : String | A.java:21:7:21:13 | ...=... : String |
|
||||
| A.java:21:11:21:13 | "B" : String | A.java:25:5:25:26 | SSA phi(s) : String |
|
||||
| A.java:21:11:21:13 | "B" : String | A.java:28:11:38:5 | String s : String |
|
||||
| A.java:21:11:21:13 | "B" : String | A.java:28:11:38:5 | new (...) : new A(...) { ... } [String s] |
|
||||
| A.java:21:11:21:13 | "B" : String | A.java:30:14:30:16 | parameter this : new A(...) { ... } [String s] |
|
||||
@@ -32,8 +32,8 @@
|
||||
| A.java:23:11:23:13 | "C" : String | A.java:14:11:14:20 | f2(...) : new A(...) { ... } [String s] |
|
||||
| A.java:23:11:23:13 | "C" : String | A.java:15:16:15:16 | a : new A(...) { ... } [String s] |
|
||||
| A.java:23:11:23:13 | "C" : String | A.java:15:16:15:22 | get(...) : String |
|
||||
| A.java:23:11:23:13 | "C" : String | A.java:20:5:20:15 | SSA phi(s) : String |
|
||||
| A.java:23:11:23:13 | "C" : String | A.java:23:7:23:13 | ...=... : String |
|
||||
| A.java:23:11:23:13 | "C" : String | A.java:25:5:25:26 | SSA phi(s) : String |
|
||||
| A.java:23:11:23:13 | "C" : String | A.java:28:11:38:5 | String s : String |
|
||||
| A.java:23:11:23:13 | "C" : String | A.java:28:11:38:5 | new (...) : new A(...) { ... } [String s] |
|
||||
| A.java:23:11:23:13 | "C" : String | A.java:30:14:30:16 | parameter this : new A(...) { ... } [String s] |
|
||||
|
||||
@@ -1,7 +0,0 @@
|
||||
| FlexibleConstructors.java:10:15:10:17 | msg | FlexibleConstructors.java:10:9:10:19 | super(...) | predecessor of explicit super() |
|
||||
| FlexibleConstructors.java:18:13:18:17 | ... < ... | FlexibleConstructors.java:19:9:19:16 | super(...) | predecessor of explicit super() |
|
||||
| FlexibleConstructors.java:38:17:38:48 | combined | FlexibleConstructors.java:39:13:39:20 | super(...) | predecessor of explicit super() |
|
||||
| FlexibleConstructors.java:52:9:52:40 | ...=... | FlexibleConstructors.java:53:9:53:16 | super(...) | predecessor of explicit super() |
|
||||
| FlexibleConstructors.java:65:15:65:18 | temp | FlexibleConstructors.java:65:9:65:20 | super(...) | predecessor of explicit super() |
|
||||
| FlexibleConstructors.java:77:9:77:24 | ...=... | FlexibleConstructors.java:78:9:78:16 | super(...) | predecessor of explicit super() |
|
||||
| FlexibleConstructors.java:91:13:91:41 | string | FlexibleConstructors.java:92:9:92:16 | super(...) | predecessor of explicit super() |
|
||||
@@ -1,11 +0,0 @@
|
||||
import java
|
||||
|
||||
from ControlFlowNode pred, ControlFlowNode supNode, SuperConstructorInvocationStmt sc
|
||||
where
|
||||
supNode.asStmt() = sc and
|
||||
pred.getASuccessor() = supNode and
|
||||
pred != supNode and
|
||||
not pred.asStmt() instanceof BlockStmt and
|
||||
exists(sc.getEnclosingCallable().getFile().getRelativePath()) and
|
||||
sc.getLocation().getEndColumn() > sc.getLocation().getStartColumn()
|
||||
select pred, sc, "predecessor of explicit super()"
|
||||
@@ -39,10 +39,10 @@ public class Guards {
|
||||
chk(); // $ guarded='s:match "bar"' guarded='s:bar'
|
||||
break;
|
||||
case "foo":
|
||||
chk(); // $ guarded='s:match "foo"' guarded='s:foo' guarded=g(3):false
|
||||
chk(); // $ guarded='s:non-match "bar"' guarded='s:not bar' guarded='s:match "foo"' guarded='s:foo' guarded=g(3):false
|
||||
break;
|
||||
default:
|
||||
chk(); // $ guarded='s:non-match "bar"' guarded='s:non-match "foo"' guarded='s:not bar' guarded='s:not foo' guarded='s:match default' guarded=g(3):false
|
||||
chk(); // $ guarded='s:non-match "bar"' guarded='s:non-match "foo"' guarded='s:not bar' guarded='s:not foo' guarded=g(3):false
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -92,10 +92,10 @@ public class Guards {
|
||||
chk(); // $ guarded='x:match E1' guarded='x:E1' guarded=g(1):true guarded=g(2):false guarded=g(Alt2):false guarded=g(3):false
|
||||
break;
|
||||
case E2:
|
||||
chk(); // $ guarded='x:match E2' guarded='x:E2' guarded=g(3):false
|
||||
chk(); // $ guarded='x:non-match E1' guarded='x:not E1' guarded='x:match E2' guarded='x:E2' guarded=g(3):false
|
||||
break;
|
||||
case E3:
|
||||
chk(); // $ guarded='x:match E3' guarded='x:E3' guarded=g(3):true
|
||||
chk(); // $ guarded='x:non-match E1' guarded='x:non-match E2' guarded='x:not E1' guarded='x:not E2' guarded='x:match E3' guarded='x:E3' guarded=g(3):true
|
||||
break;
|
||||
}
|
||||
Object o = g(4) ? new Object() : null;
|
||||
@@ -198,7 +198,7 @@ public class Guards {
|
||||
chk(); // $ guarded='testEnumWrapper(...):SUCCESS' guarded='testEnumWrapper(...):match SUCCESS' guarded=g(1):true
|
||||
break;
|
||||
case FAILURE:
|
||||
chk(); // $ guarded='testEnumWrapper(...):FAILURE' guarded='testEnumWrapper(...):match FAILURE' guarded=g(1):false
|
||||
chk(); // $ guarded='testEnumWrapper(...):not SUCCESS' guarded='testEnumWrapper(...):non-match SUCCESS' guarded='testEnumWrapper(...):FAILURE' guarded='testEnumWrapper(...):match FAILURE' guarded=g(1):false
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -18,8 +18,9 @@
|
||||
| Guards.java:39:9:39:13 | chk(...) | 's:match "bar"' |
|
||||
| Guards.java:42:9:42:13 | chk(...) | 's:foo' |
|
||||
| Guards.java:42:9:42:13 | chk(...) | 's:match "foo"' |
|
||||
| Guards.java:42:9:42:13 | chk(...) | 's:non-match "bar"' |
|
||||
| Guards.java:42:9:42:13 | chk(...) | 's:not bar' |
|
||||
| Guards.java:42:9:42:13 | chk(...) | g(3):false |
|
||||
| Guards.java:45:9:45:13 | chk(...) | 's:match default' |
|
||||
| Guards.java:45:9:45:13 | chk(...) | 's:non-match "bar"' |
|
||||
| Guards.java:45:9:45:13 | chk(...) | 's:non-match "foo"' |
|
||||
| Guards.java:45:9:45:13 | chk(...) | 's:not bar' |
|
||||
@@ -61,9 +62,15 @@
|
||||
| Guards.java:92:9:92:13 | chk(...) | g(Alt2):false |
|
||||
| Guards.java:95:9:95:13 | chk(...) | 'x:E2' |
|
||||
| Guards.java:95:9:95:13 | chk(...) | 'x:match E2' |
|
||||
| Guards.java:95:9:95:13 | chk(...) | 'x:non-match E1' |
|
||||
| Guards.java:95:9:95:13 | chk(...) | 'x:not E1' |
|
||||
| Guards.java:95:9:95:13 | chk(...) | g(3):false |
|
||||
| Guards.java:98:9:98:13 | chk(...) | 'x:E3' |
|
||||
| Guards.java:98:9:98:13 | chk(...) | 'x:match E3' |
|
||||
| Guards.java:98:9:98:13 | chk(...) | 'x:non-match E1' |
|
||||
| Guards.java:98:9:98:13 | chk(...) | 'x:non-match E2' |
|
||||
| Guards.java:98:9:98:13 | chk(...) | 'x:not E1' |
|
||||
| Guards.java:98:9:98:13 | chk(...) | 'x:not E2' |
|
||||
| Guards.java:98:9:98:13 | chk(...) | g(3):true |
|
||||
| Guards.java:103:7:103:11 | chk(...) | '...?...:...:null' |
|
||||
| Guards.java:103:7:103:11 | chk(...) | 'o == null:true' |
|
||||
@@ -113,6 +120,8 @@
|
||||
| Guards.java:198:9:198:13 | chk(...) | g(1):true |
|
||||
| Guards.java:201:9:201:13 | chk(...) | 'testEnumWrapper(...):FAILURE' |
|
||||
| Guards.java:201:9:201:13 | chk(...) | 'testEnumWrapper(...):match FAILURE' |
|
||||
| Guards.java:201:9:201:13 | chk(...) | 'testEnumWrapper(...):non-match SUCCESS' |
|
||||
| Guards.java:201:9:201:13 | chk(...) | 'testEnumWrapper(...):not SUCCESS' |
|
||||
| Guards.java:201:9:201:13 | chk(...) | g(1):false |
|
||||
| Guards.java:213:5:213:9 | chk(...) | 'ensureNotNull(...):no exception' |
|
||||
| Guards.java:213:5:213:9 | chk(...) | 's:not null' |
|
||||
|
||||
@@ -1,8 +1,9 @@
|
||||
import java
|
||||
import semmle.code.java.controlflow.Guards
|
||||
import utils.test.BasicBlock
|
||||
|
||||
from ConditionBlock cb, boolean testIsTrue, BasicBlock controlled
|
||||
where
|
||||
cb.controls(controlled, testIsTrue) and
|
||||
cb.getEnclosingCallable().getDeclaringType().hasName("Test")
|
||||
select cb.getCondition(), testIsTrue, controlled
|
||||
select cb.getCondition(), testIsTrue, getFirstAstNode(controlled)
|
||||
|
||||
@@ -19,13 +19,15 @@
|
||||
| Logic.java:17:11:17:15 | ... > ... | false | Logic.java:15:29:15:29 | i |
|
||||
| Logic.java:17:11:17:15 | ... > ... | true | Logic.java:17:18:17:23 | break |
|
||||
| Logic.java:19:9:19:12 | g(...) | false | Logic.java:24:7:24:17 | case ... |
|
||||
| Logic.java:19:9:19:12 | g(...) | false | Logic.java:24:12:24:16 | "foo" |
|
||||
| Logic.java:19:9:19:12 | g(...) | false | Logic.java:26:7:26:14 | default |
|
||||
| Logic.java:19:9:19:12 | g(...) | true | Logic.java:20:7:20:16 | <Expr>; |
|
||||
| Logic.java:22:7:22:17 | case ... | false | Logic.java:24:7:24:17 | case ... |
|
||||
| Logic.java:22:7:22:17 | case ... | false | Logic.java:24:12:24:16 | "foo" |
|
||||
| Logic.java:22:7:22:17 | case ... | false | Logic.java:26:7:26:14 | default |
|
||||
| Logic.java:22:7:22:17 | case ... | true | Logic.java:22:7:22:17 | case ... |
|
||||
| Logic.java:22:7:22:17 | case ... | true | Logic.java:22:12:22:16 | "bar" |
|
||||
| Logic.java:24:7:24:17 | case ... | false | Logic.java:26:7:26:14 | default |
|
||||
| Logic.java:24:7:24:17 | case ... | true | Logic.java:24:7:24:17 | case ... |
|
||||
| Logic.java:26:7:26:14 | default | true | Logic.java:26:7:26:14 | default |
|
||||
| Logic.java:24:7:24:17 | case ... | true | Logic.java:24:12:24:16 | "foo" |
|
||||
| Logic.java:29:16:29:19 | g(...) | false | Logic.java:29:30:29:30 | s |
|
||||
| Logic.java:29:16:29:19 | g(...) | false | Logic.java:30:30:31:5 | { ... } |
|
||||
| Logic.java:29:16:29:19 | g(...) | true | Logic.java:29:23:29:26 | null |
|
||||
|
||||
@@ -1,9 +1,10 @@
|
||||
import java
|
||||
import semmle.code.java.controlflow.Guards
|
||||
import utils.test.BasicBlock
|
||||
|
||||
from Guard g, BasicBlock bb, GuardValue gv
|
||||
where
|
||||
g.valueControls(bb, gv) and
|
||||
g.getEnclosingCallable().getDeclaringType().hasName("Logic") and
|
||||
(exists(gv.asBooleanValue()) or gv.isThrowsException() or gv.getDualValue().isThrowsException())
|
||||
select g, gv, bb
|
||||
select g, gv, getFirstAstNode(bb)
|
||||
|
||||
@@ -1,9 +1,10 @@
|
||||
import java
|
||||
import semmle.code.java.controlflow.Guards
|
||||
import utils.test.BasicBlock
|
||||
|
||||
from Guard g, BasicBlock bb, GuardValue gv
|
||||
where
|
||||
g.valueControls(bb, gv) and
|
||||
g.getEnclosingCallable().getDeclaringType().hasName("Preconditions") and
|
||||
(gv.isThrowsException() or gv.getDualValue().isThrowsException())
|
||||
select g, gv, bb
|
||||
select g, gv, getFirstAstNode(bb)
|
||||
|
||||
@@ -1,55 +1,78 @@
|
||||
hasBranchEdge
|
||||
| Test.java:4:7:4:22 | case ... | Test.java:2:39:36:3 | { ... } | Test.java:4:7:4:22 | case ... | true |
|
||||
| Test.java:5:7:5:17 | case ... | Test.java:2:39:36:3 | { ... } | Test.java:5:7:5:17 | case ... | true |
|
||||
| Test.java:6:7:6:17 | case ... | Test.java:2:39:36:3 | { ... } | Test.java:6:7:6:17 | case ... | true |
|
||||
| Test.java:7:7:7:16 | default | Test.java:2:39:36:3 | { ... } | Test.java:7:7:7:16 | default | true |
|
||||
| Test.java:10:7:10:22 | case ... | Test.java:3:9:3:21 | x | Test.java:10:7:10:22 | case ... | true |
|
||||
| Test.java:11:7:11:17 | case ... | Test.java:3:9:3:21 | x | Test.java:11:7:11:17 | case ... | true |
|
||||
| Test.java:12:7:12:17 | case ... | Test.java:3:9:3:21 | x | Test.java:12:7:12:17 | case ... | true |
|
||||
| Test.java:13:7:13:16 | default | Test.java:3:9:3:21 | x | Test.java:13:7:13:16 | default | true |
|
||||
| Test.java:4:7:4:22 | case ... | Test.java:2:39:36:3 | { ... } | Test.java:4:7:4:22 | After case ... [match] | true |
|
||||
| Test.java:4:7:4:22 | case ... | Test.java:2:39:36:3 | { ... } | Test.java:5:7:5:17 | case ... | false |
|
||||
| Test.java:5:7:5:17 | case ... | Test.java:5:7:5:17 | case ... | Test.java:5:12:5:14 | "c" | true |
|
||||
| Test.java:5:7:5:17 | case ... | Test.java:5:7:5:17 | case ... | Test.java:6:7:6:17 | case ... | false |
|
||||
| Test.java:6:7:6:17 | case ... | Test.java:6:7:6:17 | case ... | Test.java:6:12:6:14 | "d" | true |
|
||||
| Test.java:6:7:6:17 | case ... | Test.java:6:7:6:17 | case ... | Test.java:7:7:7:16 | default | false |
|
||||
| Test.java:10:7:10:22 | case ... | Test.java:3:9:3:21 | x | Test.java:10:7:10:22 | After case ... [match] | true |
|
||||
| Test.java:10:7:10:22 | case ... | Test.java:3:9:3:21 | x | Test.java:11:7:11:17 | case ... | false |
|
||||
| Test.java:11:7:11:17 | case ... | Test.java:11:7:11:17 | case ... | Test.java:11:12:11:14 | "c" | true |
|
||||
| Test.java:11:7:11:17 | case ... | Test.java:11:7:11:17 | case ... | Test.java:12:7:12:17 | case ... | false |
|
||||
| Test.java:12:7:12:17 | case ... | Test.java:12:7:12:17 | case ... | Test.java:12:12:12:14 | "d" | true |
|
||||
| Test.java:12:7:12:17 | case ... | Test.java:12:7:12:17 | case ... | Test.java:13:7:13:16 | default | false |
|
||||
| Test.java:17:7:17:36 | case <Pattern> | Test.java:15:5:15:25 | var ...; | Test.java:17:19:17:19 | <anonymous local variable> | true |
|
||||
| Test.java:17:7:17:36 | case <Pattern> | Test.java:15:5:15:25 | var ...; | Test.java:18:7:18:17 | case ... | false |
|
||||
| Test.java:17:7:17:36 | case <Pattern> | Test.java:15:5:15:25 | var ...; | Test.java:19:7:19:16 | default | false |
|
||||
| Test.java:17:26:17:33 | ... == ... | Test.java:17:19:17:19 | <anonymous local variable> | Test.java:17:26:17:33 | After ... == ... [false] | false |
|
||||
| Test.java:17:26:17:33 | ... == ... | Test.java:17:19:17:19 | <anonymous local variable> | Test.java:17:38:17:40 | { ... } | true |
|
||||
| Test.java:17:26:17:33 | ... == ... | Test.java:17:19:17:19 | <anonymous local variable> | Test.java:18:7:18:17 | case ... | false |
|
||||
| Test.java:17:26:17:33 | ... == ... | Test.java:17:19:17:19 | <anonymous local variable> | Test.java:19:7:19:16 | default | false |
|
||||
| Test.java:18:7:18:17 | case ... | Test.java:15:5:15:25 | var ...; | Test.java:18:7:18:17 | case ... | true |
|
||||
| Test.java:18:7:18:17 | case ... | Test.java:17:19:17:19 | <anonymous local variable> | Test.java:18:7:18:17 | case ... | true |
|
||||
| Test.java:19:7:19:16 | default | Test.java:15:5:15:25 | var ...; | Test.java:19:7:19:16 | default | true |
|
||||
| Test.java:19:7:19:16 | default | Test.java:17:19:17:19 | <anonymous local variable> | Test.java:19:7:19:16 | default | true |
|
||||
| Test.java:18:7:18:17 | case ... | Test.java:18:7:18:17 | case ... | Test.java:18:12:18:14 | "e" | true |
|
||||
| Test.java:18:7:18:17 | case ... | Test.java:18:7:18:17 | case ... | Test.java:19:7:19:16 | default | false |
|
||||
| Test.java:21:13:21:19 | unknown | Test.java:21:5:21:42 | switch (...) | Test.java:21:23:21:23 | s | true |
|
||||
| Test.java:21:13:21:19 | unknown | Test.java:21:5:21:42 | switch (...) | Test.java:21:27:21:27 | s | false |
|
||||
| Test.java:22:7:22:17 | case ... | Test.java:21:23:21:23 | s | Test.java:22:7:22:17 | case ... | true |
|
||||
| Test.java:22:7:22:17 | case ... | Test.java:21:27:21:27 | s | Test.java:22:7:22:17 | case ... | true |
|
||||
| Test.java:22:7:22:17 | case ... | Test.java:22:7:22:17 | case ... | Test.java:22:12:22:14 | "f" | true |
|
||||
| Test.java:22:7:22:17 | case ... | Test.java:22:7:22:17 | case ... | Test.java:23:7:23:37 | case <Pattern> | false |
|
||||
| Test.java:23:7:23:37 | case <Pattern> | Test.java:23:7:23:37 | case <Pattern> | Test.java:23:19:23:20 | s2 | true |
|
||||
| Test.java:23:7:23:37 | case <Pattern> | Test.java:23:7:23:37 | case <Pattern> | Test.java:24:7:24:17 | case ... | false |
|
||||
| Test.java:23:7:23:37 | case <Pattern> | Test.java:23:7:23:37 | case <Pattern> | Test.java:25:7:25:16 | default | false |
|
||||
| Test.java:23:27:23:34 | ... == ... | Test.java:23:19:23:20 | s2 | Test.java:23:27:23:34 | After ... == ... [false] | false |
|
||||
| Test.java:23:27:23:34 | ... == ... | Test.java:23:19:23:20 | s2 | Test.java:23:39:23:41 | { ... } | true |
|
||||
| Test.java:23:27:23:34 | ... == ... | Test.java:23:19:23:20 | s2 | Test.java:24:7:24:17 | case ... | false |
|
||||
| Test.java:23:27:23:34 | ... == ... | Test.java:23:19:23:20 | s2 | Test.java:25:7:25:16 | default | false |
|
||||
| Test.java:24:7:24:17 | case ... | Test.java:23:7:23:37 | case <Pattern> | Test.java:24:7:24:17 | case ... | true |
|
||||
| Test.java:24:7:24:17 | case ... | Test.java:23:19:23:20 | s2 | Test.java:24:7:24:17 | case ... | true |
|
||||
| Test.java:25:7:25:16 | default | Test.java:23:7:23:37 | case <Pattern> | Test.java:25:7:25:16 | default | true |
|
||||
| Test.java:25:7:25:16 | default | Test.java:23:19:23:20 | s2 | Test.java:25:7:25:16 | default | true |
|
||||
| Test.java:28:7:28:15 | case ... | Test.java:27:5:27:14 | switch (...) | Test.java:28:7:28:15 | case ... | true |
|
||||
| Test.java:24:7:24:17 | case ... | Test.java:24:7:24:17 | case ... | Test.java:24:12:24:14 | "g" | true |
|
||||
| Test.java:24:7:24:17 | case ... | Test.java:24:7:24:17 | case ... | Test.java:25:7:25:16 | default | false |
|
||||
| Test.java:28:7:28:15 | case ... | Test.java:27:5:27:14 | switch (...) | Test.java:28:12:28:14 | "h" | true |
|
||||
| Test.java:28:7:28:15 | case ... | Test.java:27:5:27:14 | switch (...) | Test.java:29:7:29:34 | case <Pattern> | false |
|
||||
| Test.java:29:7:29:34 | case <Pattern> | Test.java:29:7:29:34 | case <Pattern> | Test.java:29:19:29:19 | <anonymous local variable> | true |
|
||||
| Test.java:29:7:29:34 | case <Pattern> | Test.java:29:7:29:34 | case <Pattern> | Test.java:30:7:30:15 | case ... | false |
|
||||
| Test.java:29:7:29:34 | case <Pattern> | Test.java:29:7:29:34 | case <Pattern> | Test.java:33:7:33:14 | default | false |
|
||||
| Test.java:29:26:29:33 | ... == ... | Test.java:29:19:29:19 | <anonymous local variable> | Test.java:30:7:30:15 | case ... | false |
|
||||
| Test.java:29:26:29:33 | ... == ... | Test.java:29:19:29:19 | <anonymous local variable> | Test.java:30:7:30:15 | case ... | true |
|
||||
| Test.java:29:26:29:33 | ... == ... | Test.java:29:19:29:19 | <anonymous local variable> | Test.java:33:7:33:14 | default | false |
|
||||
| Test.java:30:7:30:15 | case ... | Test.java:29:7:29:34 | case <Pattern> | Test.java:30:7:30:15 | case ... | true |
|
||||
| Test.java:33:7:33:14 | default | Test.java:29:7:29:34 | case <Pattern> | Test.java:33:7:33:14 | default | true |
|
||||
| Test.java:33:7:33:14 | default | Test.java:29:19:29:19 | <anonymous local variable> | Test.java:33:7:33:14 | default | true |
|
||||
| Test.java:29:26:29:33 | ... == ... | Test.java:29:19:29:19 | <anonymous local variable> | Test.java:29:26:29:33 | After ... == ... [false] | false |
|
||||
| Test.java:29:26:29:33 | ... == ... | Test.java:29:19:29:19 | <anonymous local variable> | Test.java:29:26:29:33 | After ... == ... [true] | true |
|
||||
| Test.java:30:7:30:15 | case ... | Test.java:30:7:30:15 | case ... | Test.java:30:12:30:14 | "i" | true |
|
||||
| Test.java:30:7:30:15 | case ... | Test.java:30:7:30:15 | case ... | Test.java:33:7:33:14 | default | false |
|
||||
#select
|
||||
| Test.java:5:7:5:17 | case ... | Test.java:3:20:3:20 | s | Test.java:5:12:5:14 | "c" | true | false | Test.java:6:7:6:17 | case ... |
|
||||
| Test.java:5:7:5:17 | case ... | Test.java:3:20:3:20 | s | Test.java:5:12:5:14 | "c" | true | false | Test.java:6:12:6:14 | "d" |
|
||||
| Test.java:5:7:5:17 | case ... | Test.java:3:20:3:20 | s | Test.java:5:12:5:14 | "c" | true | false | Test.java:7:7:7:16 | default |
|
||||
| Test.java:5:7:5:17 | case ... | Test.java:3:20:3:20 | s | Test.java:5:12:5:14 | "c" | true | true | Test.java:5:7:5:17 | case ... |
|
||||
| Test.java:5:7:5:17 | case ... | Test.java:3:20:3:20 | s | Test.java:5:12:5:14 | "c" | true | true | Test.java:5:12:5:14 | "c" |
|
||||
| Test.java:6:7:6:17 | case ... | Test.java:3:20:3:20 | s | Test.java:6:12:6:14 | "d" | true | false | Test.java:7:7:7:16 | default |
|
||||
| Test.java:6:7:6:17 | case ... | Test.java:3:20:3:20 | s | Test.java:6:12:6:14 | "d" | true | true | Test.java:6:7:6:17 | case ... |
|
||||
| Test.java:6:7:6:17 | case ... | Test.java:3:20:3:20 | s | Test.java:6:12:6:14 | "d" | true | true | Test.java:6:12:6:14 | "d" |
|
||||
| Test.java:11:7:11:17 | case ... | Test.java:9:13:9:13 | s | Test.java:11:12:11:14 | "c" | true | false | Test.java:12:7:12:17 | case ... |
|
||||
| Test.java:11:7:11:17 | case ... | Test.java:9:13:9:13 | s | Test.java:11:12:11:14 | "c" | true | false | Test.java:12:12:12:14 | "d" |
|
||||
| Test.java:11:7:11:17 | case ... | Test.java:9:13:9:13 | s | Test.java:11:12:11:14 | "c" | true | false | Test.java:13:7:13:16 | default |
|
||||
| Test.java:11:7:11:17 | case ... | Test.java:9:13:9:13 | s | Test.java:11:12:11:14 | "c" | true | true | Test.java:11:7:11:17 | case ... |
|
||||
| Test.java:11:7:11:17 | case ... | Test.java:9:13:9:13 | s | Test.java:11:12:11:14 | "c" | true | true | Test.java:11:12:11:14 | "c" |
|
||||
| Test.java:12:7:12:17 | case ... | Test.java:9:13:9:13 | s | Test.java:12:12:12:14 | "d" | true | false | Test.java:13:7:13:16 | default |
|
||||
| Test.java:12:7:12:17 | case ... | Test.java:9:13:9:13 | s | Test.java:12:12:12:14 | "d" | true | true | Test.java:12:7:12:17 | case ... |
|
||||
| Test.java:12:7:12:17 | case ... | Test.java:9:13:9:13 | s | Test.java:12:12:12:14 | "d" | true | true | Test.java:12:12:12:14 | "d" |
|
||||
| Test.java:17:26:17:33 | ... == ... | Test.java:17:26:17:28 | len | Test.java:17:33:17:33 | 4 | true | false | Test.java:17:26:17:33 | After ... == ... [false] |
|
||||
| Test.java:17:26:17:33 | ... == ... | Test.java:17:26:17:28 | len | Test.java:17:33:17:33 | 4 | true | true | Test.java:17:38:17:40 | { ... } |
|
||||
| Test.java:18:7:18:17 | case ... | Test.java:16:13:16:13 | s | Test.java:18:12:18:14 | "e" | true | false | Test.java:19:7:19:16 | default |
|
||||
| Test.java:18:7:18:17 | case ... | Test.java:16:13:16:13 | s | Test.java:18:12:18:14 | "e" | true | true | Test.java:18:12:18:14 | "e" |
|
||||
| Test.java:22:7:22:17 | case ... | Test.java:21:13:21:41 | ...?...:... | Test.java:22:12:22:14 | "f" | true | false | Test.java:23:7:23:37 | case <Pattern> |
|
||||
| Test.java:22:7:22:17 | case ... | Test.java:21:13:21:41 | ...?...:... | Test.java:22:12:22:14 | "f" | true | false | Test.java:23:19:23:20 | s2 |
|
||||
| Test.java:22:7:22:17 | case ... | Test.java:21:13:21:41 | ...?...:... | Test.java:22:12:22:14 | "f" | true | false | Test.java:23:27:23:34 | After ... == ... [false] |
|
||||
| Test.java:22:7:22:17 | case ... | Test.java:21:13:21:41 | ...?...:... | Test.java:22:12:22:14 | "f" | true | false | Test.java:23:39:23:41 | { ... } |
|
||||
| Test.java:22:7:22:17 | case ... | Test.java:21:13:21:41 | ...?...:... | Test.java:22:12:22:14 | "f" | true | false | Test.java:24:7:24:17 | case ... |
|
||||
| Test.java:22:7:22:17 | case ... | Test.java:21:13:21:41 | ...?...:... | Test.java:22:12:22:14 | "f" | true | false | Test.java:24:12:24:14 | "g" |
|
||||
| Test.java:22:7:22:17 | case ... | Test.java:21:13:21:41 | ...?...:... | Test.java:22:12:22:14 | "f" | true | false | Test.java:25:7:25:16 | default |
|
||||
| Test.java:22:7:22:17 | case ... | Test.java:21:13:21:41 | ...?...:... | Test.java:22:12:22:14 | "f" | true | true | Test.java:22:12:22:14 | "f" |
|
||||
| Test.java:23:27:23:34 | ... == ... | Test.java:23:27:23:29 | len | Test.java:23:34:23:34 | 4 | true | false | Test.java:23:27:23:34 | After ... == ... [false] |
|
||||
| Test.java:23:27:23:34 | ... == ... | Test.java:23:27:23:29 | len | Test.java:23:34:23:34 | 4 | true | true | Test.java:23:39:23:41 | { ... } |
|
||||
| Test.java:28:7:28:15 | case ... | Test.java:27:13:27:13 | s | Test.java:28:12:28:14 | "h" | true | true | Test.java:28:7:28:15 | case ... |
|
||||
| Test.java:24:7:24:17 | case ... | Test.java:21:13:21:41 | ...?...:... | Test.java:24:12:24:14 | "g" | true | false | Test.java:25:7:25:16 | default |
|
||||
| Test.java:24:7:24:17 | case ... | Test.java:21:13:21:41 | ...?...:... | Test.java:24:12:24:14 | "g" | true | true | Test.java:24:12:24:14 | "g" |
|
||||
| Test.java:28:7:28:15 | case ... | Test.java:27:13:27:13 | s | Test.java:28:12:28:14 | "h" | true | false | Test.java:29:7:29:34 | case <Pattern> |
|
||||
| Test.java:28:7:28:15 | case ... | Test.java:27:13:27:13 | s | Test.java:28:12:28:14 | "h" | true | false | Test.java:29:19:29:19 | <anonymous local variable> |
|
||||
| Test.java:28:7:28:15 | case ... | Test.java:27:13:27:13 | s | Test.java:28:12:28:14 | "h" | true | false | Test.java:29:26:29:33 | After ... == ... [false] |
|
||||
| Test.java:28:7:28:15 | case ... | Test.java:27:13:27:13 | s | Test.java:28:12:28:14 | "h" | true | false | Test.java:29:26:29:33 | After ... == ... [true] |
|
||||
| Test.java:28:7:28:15 | case ... | Test.java:27:13:27:13 | s | Test.java:28:12:28:14 | "h" | true | false | Test.java:30:7:30:15 | case ... |
|
||||
| Test.java:28:7:28:15 | case ... | Test.java:27:13:27:13 | s | Test.java:28:12:28:14 | "h" | true | false | Test.java:30:12:30:14 | "i" |
|
||||
| Test.java:28:7:28:15 | case ... | Test.java:27:13:27:13 | s | Test.java:28:12:28:14 | "h" | true | false | Test.java:33:7:33:14 | default |
|
||||
| Test.java:28:7:28:15 | case ... | Test.java:27:13:27:13 | s | Test.java:28:12:28:14 | "h" | true | true | Test.java:28:12:28:14 | "h" |
|
||||
| Test.java:29:26:29:33 | ... == ... | Test.java:29:26:29:28 | len | Test.java:29:33:29:33 | 4 | true | false | Test.java:29:26:29:33 | After ... == ... [false] |
|
||||
| Test.java:29:26:29:33 | ... == ... | Test.java:29:26:29:28 | len | Test.java:29:33:29:33 | 4 | true | true | Test.java:29:26:29:33 | After ... == ... [true] |
|
||||
| Test.java:30:7:30:15 | case ... | Test.java:27:13:27:13 | s | Test.java:30:12:30:14 | "i" | true | false | Test.java:33:7:33:14 | default |
|
||||
| Test.java:30:7:30:15 | case ... | Test.java:27:13:27:13 | s | Test.java:30:12:30:14 | "i" | true | true | Test.java:30:12:30:14 | "i" |
|
||||
|
||||
@@ -1,8 +1,15 @@
|
||||
import java
|
||||
import semmle.code.java.controlflow.Guards
|
||||
import utils.test.BasicBlock
|
||||
|
||||
query predicate hasBranchEdge(Guard g, BasicBlock bb1, BasicBlock bb2, GuardValue branch) {
|
||||
g.hasValueBranchEdge(bb1, bb2, branch)
|
||||
query predicate hasBranchEdge(
|
||||
Guard g, ControlFlowNode bb1ref, ControlFlowNode bb2ref, GuardValue branch
|
||||
) {
|
||||
exists(BasicBlock bb1, BasicBlock bb2 |
|
||||
getFirstAstNodeOrSynth(bb1) = bb1ref and
|
||||
getFirstAstNodeOrSynth(bb2) = bb2ref and
|
||||
g.hasValueBranchEdge(bb1, bb2, branch)
|
||||
)
|
||||
}
|
||||
|
||||
from Guard g, BasicBlock bb, boolean branch, Expr e1, Expr e2, boolean pol
|
||||
@@ -10,4 +17,4 @@ where
|
||||
g.controls(bb, branch) and
|
||||
g.isEquality(e1, e2, pol) and
|
||||
not e1 instanceof Literal
|
||||
select g, e1, e2, pol, branch, bb
|
||||
select g, e1, e2, pol, branch, getFirstAstNodeOrSynth(bb)
|
||||
|
||||
@@ -1,5 +1,9 @@
|
||||
| MultiCatch.java:6:14:6:23 | Entry | MultiCatch.java:6:14:6:23 | { ... } |
|
||||
| MultiCatch.java:6:14:6:23 | Normal Exit | MultiCatch.java:6:14:6:23 | Exit |
|
||||
| MultiCatch.java:6:14:6:23 | super(...) | MultiCatch.java:6:14:6:23 | Normal Exit |
|
||||
| MultiCatch.java:6:14:6:23 | { ... } | MultiCatch.java:6:14:6:23 | super(...) |
|
||||
| MultiCatch.java:7:14:7:23 | Entry | MultiCatch.java:8:2:20:2 | { ... } |
|
||||
| MultiCatch.java:7:14:7:23 | Exceptional Exit | MultiCatch.java:7:14:7:23 | Exit |
|
||||
| MultiCatch.java:8:2:20:2 | { ... } | MultiCatch.java:9:3:19:3 | try ... |
|
||||
| MultiCatch.java:9:3:19:3 | try ... | MultiCatch.java:10:3:15:3 | { ... } |
|
||||
| MultiCatch.java:10:3:15:3 | { ... } | MultiCatch.java:11:4:11:8 | if (...) |
|
||||
@@ -10,6 +14,7 @@
|
||||
| MultiCatch.java:12:11:12:27 | new IOException(...) | MultiCatch.java:12:5:12:28 | throw ... |
|
||||
| MultiCatch.java:14:5:14:29 | throw ... | MultiCatch.java:15:5:15:37 | catch (...) |
|
||||
| MultiCatch.java:14:11:14:28 | new SQLException(...) | MultiCatch.java:14:5:14:29 | throw ... |
|
||||
| MultiCatch.java:15:5:15:37 | catch (...) | MultiCatch.java:7:14:7:23 | Exceptional Exit |
|
||||
| MultiCatch.java:15:5:15:37 | catch (...) | MultiCatch.java:15:36:15:36 | e |
|
||||
| MultiCatch.java:15:36:15:36 | e | MultiCatch.java:16:3:19:3 | { ... } |
|
||||
| MultiCatch.java:16:3:19:3 | { ... } | MultiCatch.java:17:4:17:23 | <Expr>; |
|
||||
@@ -18,6 +23,9 @@
|
||||
| MultiCatch.java:17:4:17:23 | <Expr>; | MultiCatch.java:17:4:17:4 | e |
|
||||
| MultiCatch.java:18:4:18:11 | throw ... | MultiCatch.java:7:14:7:23 | Exceptional Exit |
|
||||
| MultiCatch.java:18:10:18:10 | e | MultiCatch.java:18:4:18:11 | throw ... |
|
||||
| MultiCatch.java:22:14:22:24 | Entry | MultiCatch.java:23:2:33:2 | { ... } |
|
||||
| MultiCatch.java:22:14:22:24 | Exceptional Exit | MultiCatch.java:22:14:22:24 | Exit |
|
||||
| MultiCatch.java:22:14:22:24 | Normal Exit | MultiCatch.java:22:14:22:24 | Exit |
|
||||
| MultiCatch.java:23:2:33:2 | { ... } | MultiCatch.java:24:3:32:4 | try ... |
|
||||
| MultiCatch.java:24:3:32:4 | try ... | MultiCatch.java:25:3:31:3 | { ... } |
|
||||
| MultiCatch.java:25:3:31:3 | { ... } | MultiCatch.java:26:4:26:8 | if (...) |
|
||||
@@ -31,12 +39,14 @@
|
||||
| MultiCatch.java:28:12:28:12 | c | MultiCatch.java:30:10:30:24 | new Exception(...) |
|
||||
| MultiCatch.java:29:5:29:29 | throw ... | MultiCatch.java:31:5:31:37 | catch (...) |
|
||||
| MultiCatch.java:29:11:29:28 | new SQLException(...) | MultiCatch.java:29:5:29:29 | throw ... |
|
||||
| MultiCatch.java:30:4:30:25 | throw ... | MultiCatch.java:22:14:22:24 | Exceptional Exit |
|
||||
| MultiCatch.java:30:4:30:25 | throw ... | MultiCatch.java:31:5:31:37 | catch (...) |
|
||||
| MultiCatch.java:30:10:30:24 | new Exception(...) | MultiCatch.java:30:4:30:25 | throw ... |
|
||||
| MultiCatch.java:31:5:31:37 | catch (...) | MultiCatch.java:22:14:22:24 | Exceptional Exit |
|
||||
| MultiCatch.java:31:5:31:37 | catch (...) | MultiCatch.java:31:36:31:36 | e |
|
||||
| MultiCatch.java:31:36:31:36 | e | MultiCatch.java:32:3:32:4 | { ... } |
|
||||
| MultiCatch.java:32:3:32:4 | { ... } | MultiCatch.java:22:14:22:24 | Normal Exit |
|
||||
| MultiCatch.java:35:14:35:26 | Entry | MultiCatch.java:36:2:42:2 | { ... } |
|
||||
| MultiCatch.java:35:14:35:26 | Normal Exit | MultiCatch.java:35:14:35:26 | Exit |
|
||||
| MultiCatch.java:36:2:42:2 | { ... } | MultiCatch.java:37:3:41:4 | try ... |
|
||||
| MultiCatch.java:37:3:41:4 | try ... | MultiCatch.java:38:3:40:3 | { ... } |
|
||||
| MultiCatch.java:38:3:40:3 | { ... } | MultiCatch.java:39:10:39:26 | new IOException(...) |
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
import default
|
||||
import utils.test.AstCfg
|
||||
|
||||
from ControlFlowNode n
|
||||
where n.getEnclosingStmt().getCompilationUnit().fromSource()
|
||||
select n, n.getASuccessor()
|
||||
where n.getEnclosingCallable().getCompilationUnit().fromSource()
|
||||
select n, getAnAstSuccessor(n)
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
| Test.java:1:14:1:17 | Exceptional Exit | Test.java:1:14:1:17 | Exit |
|
||||
| Test.java:1:14:1:17 | Entry | Test.java:1:14:1:17 | { ... } |
|
||||
| Test.java:1:14:1:17 | Normal Exit | Test.java:1:14:1:17 | Exit |
|
||||
| Test.java:1:14:1:17 | super(...) | Test.java:1:14:1:17 | Normal Exit |
|
||||
| Test.java:1:14:1:17 | { ... } | Test.java:1:14:1:17 | super(...) |
|
||||
| Test.java:3:22:3:25 | Exceptional Exit | Test.java:3:22:3:25 | Exit |
|
||||
| Test.java:3:22:3:25 | Entry | Test.java:3:40:20:3 | { ... } |
|
||||
| Test.java:3:22:3:25 | Normal Exit | Test.java:3:22:3:25 | Exit |
|
||||
| Test.java:3:40:20:3 | { ... } | Test.java:5:5:5:34 | var ...; |
|
||||
| Test.java:5:5:5:34 | var ...; | Test.java:5:26:5:33 | source(...) |
|
||||
@@ -50,35 +50,39 @@
|
||||
| Test.java:17:7:17:26 | sink(...) | Test.java:3:22:3:25 | Normal Exit |
|
||||
| Test.java:17:7:17:27 | <Expr>; | Test.java:17:12:17:25 | alsoNotTainted |
|
||||
| Test.java:17:12:17:25 | alsoNotTainted | Test.java:17:7:17:26 | sink(...) |
|
||||
| Test.java:22:24:22:29 | Exceptional Exit | Test.java:22:24:22:29 | Exit |
|
||||
| Test.java:22:24:22:29 | Entry | Test.java:22:33:22:53 | { ... } |
|
||||
| Test.java:22:24:22:29 | Normal Exit | Test.java:22:24:22:29 | Exit |
|
||||
| Test.java:22:33:22:53 | { ... } | Test.java:22:42:22:50 | "tainted" |
|
||||
| Test.java:22:35:22:51 | return ... | Test.java:22:24:22:29 | Normal Exit |
|
||||
| Test.java:22:42:22:50 | "tainted" | Test.java:22:35:22:51 | return ... |
|
||||
| Test.java:23:22:23:25 | Exceptional Exit | Test.java:23:22:23:25 | Exit |
|
||||
| Test.java:23:22:23:25 | Entry | Test.java:23:40:23:42 | { ... } |
|
||||
| Test.java:23:22:23:25 | Normal Exit | Test.java:23:22:23:25 | Exit |
|
||||
| Test.java:23:40:23:42 | { ... } | Test.java:23:22:23:25 | Normal Exit |
|
||||
| Test.java:27:8:27:12 | ...=... | Test.java:27:8:27:12 | <Expr>; |
|
||||
| Test.java:27:8:27:12 | ...=... | Test.java:27:8:27:12 | Normal Exit |
|
||||
| Test.java:27:8:27:12 | <Expr>; | Test.java:27:8:27:12 | this |
|
||||
| Test.java:27:8:27:12 | <Expr>; | Test.java:27:8:27:12 | this |
|
||||
| Test.java:27:8:27:12 | Exceptional Exit | Test.java:27:8:27:12 | Exit |
|
||||
| Test.java:27:8:27:12 | Entry | Test.java:27:8:27:12 | { ... } |
|
||||
| Test.java:27:8:27:12 | Normal Exit | Test.java:27:8:27:12 | Exit |
|
||||
| Test.java:27:8:27:12 | i | Test.java:27:8:27:12 | ...=... |
|
||||
| Test.java:27:8:27:12 | otherField | Test.java:27:8:27:12 | ...=... |
|
||||
| Test.java:27:8:27:12 | super(...) | Test.java:27:8:27:12 | <Expr>; |
|
||||
| Test.java:27:8:27:12 | this | Test.java:27:8:27:12 | i |
|
||||
| Test.java:27:8:27:12 | this | Test.java:27:8:27:12 | otherField |
|
||||
| Test.java:27:8:27:12 | this | Test.java:27:8:27:12 | this.i |
|
||||
| Test.java:27:8:27:12 | this | Test.java:27:8:27:12 | this.otherField |
|
||||
| Test.java:27:8:27:12 | this.i | Test.java:27:8:27:12 | i |
|
||||
| Test.java:27:8:27:12 | this.otherField | Test.java:27:8:27:12 | otherField |
|
||||
| Test.java:27:8:27:12 | { ... } | Test.java:27:8:27:12 | super(...) |
|
||||
| Test.java:28:8:28:12 | ...=... | Test.java:28:8:28:12 | <Expr>; |
|
||||
| Test.java:28:8:28:12 | ...=... | Test.java:28:8:28:12 | Normal Exit |
|
||||
| Test.java:28:8:28:12 | <Expr>; | Test.java:28:8:28:12 | this |
|
||||
| Test.java:28:8:28:12 | <Expr>; | Test.java:28:8:28:12 | this |
|
||||
| Test.java:28:8:28:12 | Exceptional Exit | Test.java:28:8:28:12 | Exit |
|
||||
| Test.java:28:8:28:12 | Entry | Test.java:28:8:28:12 | { ... } |
|
||||
| Test.java:28:8:28:12 | Normal Exit | Test.java:28:8:28:12 | Exit |
|
||||
| Test.java:28:8:28:12 | nonTaintedField | Test.java:28:8:28:12 | ...=... |
|
||||
| Test.java:28:8:28:12 | super(...) | Test.java:28:8:28:12 | <Expr>; |
|
||||
| Test.java:28:8:28:12 | taintedField | Test.java:28:8:28:12 | ...=... |
|
||||
| Test.java:28:8:28:12 | this | Test.java:28:8:28:12 | nonTaintedField |
|
||||
| Test.java:28:8:28:12 | this | Test.java:28:8:28:12 | taintedField |
|
||||
| Test.java:28:8:28:12 | this | Test.java:28:8:28:12 | this.nonTaintedField |
|
||||
| Test.java:28:8:28:12 | this | Test.java:28:8:28:12 | this.taintedField |
|
||||
| Test.java:28:8:28:12 | this.nonTaintedField | Test.java:28:8:28:12 | nonTaintedField |
|
||||
| Test.java:28:8:28:12 | this.taintedField | Test.java:28:8:28:12 | taintedField |
|
||||
| Test.java:28:8:28:12 | { ... } | Test.java:28:8:28:12 | super(...) |
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
import java
|
||||
import utils.test.AstCfg
|
||||
|
||||
from ControlFlowNode cn
|
||||
where cn.getLocation().getFile().getBaseName() = "Test.java"
|
||||
select cn, cn.getASuccessor()
|
||||
select cn, getAnAstSuccessor(cn)
|
||||
|
||||
@@ -1,32 +1,35 @@
|
||||
| Exhaustive.java:1:14:1:23 | Exceptional Exit | Exhaustive.java:1:14:1:23 | Exit |
|
||||
| Exhaustive.java:1:14:1:23 | Entry | Exhaustive.java:1:14:1:23 | { ... } |
|
||||
| Exhaustive.java:1:14:1:23 | Normal Exit | Exhaustive.java:1:14:1:23 | Exit |
|
||||
| Exhaustive.java:1:14:1:23 | super(...) | Exhaustive.java:1:14:1:23 | Normal Exit |
|
||||
| Exhaustive.java:1:14:1:23 | { ... } | Exhaustive.java:1:14:1:23 | super(...) |
|
||||
| Exhaustive.java:3:8:3:8 | Exceptional Exit | Exhaustive.java:3:8:3:8 | Exit |
|
||||
| Exhaustive.java:3:8:3:8 | Exceptional Exit | Exhaustive.java:3:8:3:8 | Exit |
|
||||
| Exhaustive.java:3:8:3:8 | Entry | Exhaustive.java:3:8:3:8 | { ... } |
|
||||
| Exhaustive.java:3:8:3:8 | Entry | Exhaustive.java:3:8:3:8 | { ... } |
|
||||
| Exhaustive.java:3:8:3:8 | Normal Exit | Exhaustive.java:3:8:3:8 | Exit |
|
||||
| Exhaustive.java:3:8:3:8 | Normal Exit | Exhaustive.java:3:8:3:8 | Exit |
|
||||
| Exhaustive.java:3:8:3:8 | super(...) | Exhaustive.java:3:8:3:8 | Normal Exit |
|
||||
| Exhaustive.java:3:8:3:8 | { ... } | Exhaustive.java:3:8:3:8 | super(...) |
|
||||
| Exhaustive.java:3:8:3:8 | { ... } | Exhaustive.java:3:12:3:12 | <Expr>; |
|
||||
| Exhaustive.java:3:12:3:12 | ...=... | Exhaustive.java:3:15:3:15 | <Expr>; |
|
||||
| Exhaustive.java:3:12:3:12 | <Expr>; | Exhaustive.java:3:12:3:12 | new E(...) |
|
||||
| Exhaustive.java:3:12:3:12 | <Expr>; | Exhaustive.java:3:12:3:12 | A |
|
||||
| Exhaustive.java:3:12:3:12 | A | Exhaustive.java:3:12:3:12 | new E(...) |
|
||||
| Exhaustive.java:3:12:3:12 | new E(...) | Exhaustive.java:3:12:3:12 | ...=... |
|
||||
| Exhaustive.java:3:15:3:15 | ...=... | Exhaustive.java:3:18:3:18 | <Expr>; |
|
||||
| Exhaustive.java:3:15:3:15 | <Expr>; | Exhaustive.java:3:15:3:15 | new E(...) |
|
||||
| Exhaustive.java:3:15:3:15 | <Expr>; | Exhaustive.java:3:15:3:15 | B |
|
||||
| Exhaustive.java:3:15:3:15 | B | Exhaustive.java:3:15:3:15 | new E(...) |
|
||||
| Exhaustive.java:3:15:3:15 | new E(...) | Exhaustive.java:3:15:3:15 | ...=... |
|
||||
| Exhaustive.java:3:18:3:18 | ...=... | Exhaustive.java:3:8:3:8 | Normal Exit |
|
||||
| Exhaustive.java:3:18:3:18 | <Expr>; | Exhaustive.java:3:18:3:18 | new E(...) |
|
||||
| Exhaustive.java:3:18:3:18 | <Expr>; | Exhaustive.java:3:18:3:18 | C |
|
||||
| Exhaustive.java:3:18:3:18 | C | Exhaustive.java:3:18:3:18 | new E(...) |
|
||||
| Exhaustive.java:3:18:3:18 | new E(...) | Exhaustive.java:3:18:3:18 | ...=... |
|
||||
| Exhaustive.java:5:15:5:15 | Exceptional Exit | Exhaustive.java:5:15:5:15 | Exit |
|
||||
| Exhaustive.java:5:15:5:15 | Entry | Exhaustive.java:5:15:5:15 | { ... } |
|
||||
| Exhaustive.java:5:15:5:15 | Normal Exit | Exhaustive.java:5:15:5:15 | Exit |
|
||||
| Exhaustive.java:5:15:5:15 | super(...) | Exhaustive.java:5:15:5:15 | Normal Exit |
|
||||
| Exhaustive.java:5:15:5:15 | { ... } | Exhaustive.java:5:15:5:15 | super(...) |
|
||||
| Exhaustive.java:6:15:6:15 | Exceptional Exit | Exhaustive.java:6:15:6:15 | Exit |
|
||||
| Exhaustive.java:6:15:6:15 | Entry | Exhaustive.java:6:15:6:15 | { ... } |
|
||||
| Exhaustive.java:6:15:6:15 | Normal Exit | Exhaustive.java:6:15:6:15 | Exit |
|
||||
| Exhaustive.java:6:15:6:15 | super(...) | Exhaustive.java:6:15:6:15 | Normal Exit |
|
||||
| Exhaustive.java:6:15:6:15 | { ... } | Exhaustive.java:6:15:6:15 | super(...) |
|
||||
| Exhaustive.java:8:22:8:25 | Exceptional Exit | Exhaustive.java:8:22:8:25 | Exit |
|
||||
| Exhaustive.java:8:22:8:25 | Entry | Exhaustive.java:8:47:35:3 | { ... } |
|
||||
| Exhaustive.java:8:22:8:25 | Normal Exit | Exhaustive.java:8:22:8:25 | Exit |
|
||||
| Exhaustive.java:8:47:35:3 | { ... } | Exhaustive.java:11:5:11:14 | switch (...) |
|
||||
| Exhaustive.java:11:5:11:14 | switch (...) | Exhaustive.java:11:13:11:13 | o |
|
||||
@@ -40,14 +43,17 @@
|
||||
| Exhaustive.java:13:25:13:27 | { ... } | Exhaustive.java:18:5:18:14 | switch (...) |
|
||||
| Exhaustive.java:18:5:18:14 | switch (...) | Exhaustive.java:18:13:18:13 | e |
|
||||
| Exhaustive.java:18:13:18:13 | e | Exhaustive.java:19:7:19:15 | case ... |
|
||||
| Exhaustive.java:18:13:18:13 | e | Exhaustive.java:20:7:20:15 | case ... |
|
||||
| Exhaustive.java:18:13:18:13 | e | Exhaustive.java:21:7:21:15 | case ... |
|
||||
| Exhaustive.java:18:13:18:13 | e | Exhaustive.java:24:5:24:14 | switch (...) |
|
||||
| Exhaustive.java:19:7:19:15 | case ... | Exhaustive.java:19:17:19:19 | { ... } |
|
||||
| Exhaustive.java:19:7:19:15 | case ... | Exhaustive.java:19:12:19:12 | A |
|
||||
| Exhaustive.java:19:7:19:15 | case ... | Exhaustive.java:20:7:20:15 | case ... |
|
||||
| Exhaustive.java:19:12:19:12 | A | Exhaustive.java:19:17:19:19 | { ... } |
|
||||
| Exhaustive.java:19:17:19:19 | { ... } | Exhaustive.java:24:5:24:14 | switch (...) |
|
||||
| Exhaustive.java:20:7:20:15 | case ... | Exhaustive.java:20:17:20:19 | { ... } |
|
||||
| Exhaustive.java:20:7:20:15 | case ... | Exhaustive.java:20:12:20:12 | B |
|
||||
| Exhaustive.java:20:7:20:15 | case ... | Exhaustive.java:21:7:21:15 | case ... |
|
||||
| Exhaustive.java:20:12:20:12 | B | Exhaustive.java:20:17:20:19 | { ... } |
|
||||
| Exhaustive.java:20:17:20:19 | { ... } | Exhaustive.java:24:5:24:14 | switch (...) |
|
||||
| Exhaustive.java:21:7:21:15 | case ... | Exhaustive.java:21:17:21:19 | { ... } |
|
||||
| Exhaustive.java:21:7:21:15 | case ... | Exhaustive.java:21:12:21:12 | C |
|
||||
| Exhaustive.java:21:7:21:15 | case ... | Exhaustive.java:24:5:24:14 | switch (...) |
|
||||
| Exhaustive.java:21:12:21:12 | C | Exhaustive.java:21:17:21:19 | { ... } |
|
||||
| Exhaustive.java:21:17:21:19 | { ... } | Exhaustive.java:24:5:24:14 | switch (...) |
|
||||
| Exhaustive.java:24:5:24:14 | switch (...) | Exhaustive.java:24:13:24:13 | i |
|
||||
| Exhaustive.java:24:13:24:13 | i | Exhaustive.java:25:7:25:17 | case <Pattern> |
|
||||
@@ -65,11 +71,11 @@
|
||||
| Exhaustive.java:31:14:31:14 | <anonymous local variable> | Exhaustive.java:8:22:8:25 | Normal Exit |
|
||||
| Exhaustive.java:32:7:32:15 | case <Pattern> | Exhaustive.java:32:14:32:14 | <anonymous local variable> |
|
||||
| Exhaustive.java:32:14:32:14 | <anonymous local variable> | Exhaustive.java:8:22:8:25 | Normal Exit |
|
||||
| Test.java:1:14:1:17 | Exceptional Exit | Test.java:1:14:1:17 | Exit |
|
||||
| Test.java:1:14:1:17 | Entry | Test.java:1:14:1:17 | { ... } |
|
||||
| Test.java:1:14:1:17 | Normal Exit | Test.java:1:14:1:17 | Exit |
|
||||
| Test.java:1:14:1:17 | super(...) | Test.java:1:14:1:17 | Normal Exit |
|
||||
| Test.java:1:14:1:17 | { ... } | Test.java:1:14:1:17 | super(...) |
|
||||
| Test.java:3:22:3:25 | Exceptional Exit | Test.java:3:22:3:25 | Exit |
|
||||
| Test.java:3:22:3:25 | Entry | Test.java:3:41:134:3 | { ... } |
|
||||
| Test.java:3:22:3:25 | Normal Exit | Test.java:3:22:3:25 | Exit |
|
||||
| Test.java:3:41:134:3 | { ... } | Test.java:5:6:5:19 | switch (...) |
|
||||
| Test.java:5:6:5:19 | switch (...) | Test.java:5:14:5:18 | thing |
|
||||
@@ -79,14 +85,12 @@
|
||||
| Test.java:6:20:6:20 | s | Test.java:6:25:6:34 | System.out |
|
||||
| Test.java:6:25:6:34 | System.out | Test.java:6:44:6:44 | s |
|
||||
| Test.java:6:25:6:45 | println(...) | Test.java:11:6:11:19 | switch (...) |
|
||||
| Test.java:6:25:6:46 | <Expr>; | Test.java:6:25:6:34 | System.out |
|
||||
| Test.java:6:44:6:44 | s | Test.java:6:25:6:45 | println(...) |
|
||||
| Test.java:7:8:7:24 | case <Pattern> | Test.java:7:21:7:21 | i |
|
||||
| Test.java:7:8:7:24 | case <Pattern> | Test.java:8:8:8:17 | default |
|
||||
| Test.java:7:21:7:21 | i | Test.java:7:26:7:35 | System.out |
|
||||
| Test.java:7:26:7:35 | System.out | Test.java:7:45:7:58 | "An integer: " |
|
||||
| Test.java:7:26:7:63 | println(...) | Test.java:11:6:11:19 | switch (...) |
|
||||
| Test.java:7:26:7:64 | <Expr>; | Test.java:7:26:7:35 | System.out |
|
||||
| Test.java:7:45:7:58 | "An integer: " | Test.java:7:62:7:62 | i |
|
||||
| Test.java:7:45:7:62 | ... + ... | Test.java:7:26:7:63 | println(...) |
|
||||
| Test.java:7:62:7:62 | i | Test.java:7:45:7:62 | ... + ... |
|
||||
@@ -136,19 +140,19 @@
|
||||
| Test.java:28:34:28:38 | thing | Test.java:29:8:29:21 | case <Pattern> |
|
||||
| Test.java:29:8:29:21 | case <Pattern> | Test.java:29:20:29:20 | s |
|
||||
| Test.java:29:8:29:21 | case <Pattern> | Test.java:31:8:31:22 | case <Pattern> |
|
||||
| Test.java:29:20:29:20 | s | Test.java:30:10:30:17 | yield ... |
|
||||
| Test.java:30:10:30:17 | yield ... | Test.java:30:16:30:16 | s |
|
||||
| Test.java:30:16:30:16 | s | Test.java:28:10:28:39 | thingAsString2 |
|
||||
| Test.java:29:20:29:20 | s | Test.java:30:16:30:16 | s |
|
||||
| Test.java:30:10:30:17 | yield ... | Test.java:28:10:28:39 | thingAsString2 |
|
||||
| Test.java:30:16:30:16 | s | Test.java:30:10:30:17 | yield ... |
|
||||
| Test.java:31:8:31:22 | case <Pattern> | Test.java:31:21:31:21 | i |
|
||||
| Test.java:31:8:31:22 | case <Pattern> | Test.java:33:8:33:15 | default |
|
||||
| Test.java:31:21:31:21 | i | Test.java:32:10:32:34 | yield ... |
|
||||
| Test.java:32:10:32:34 | yield ... | Test.java:32:16:32:29 | "An integer: " |
|
||||
| Test.java:31:21:31:21 | i | Test.java:32:16:32:29 | "An integer: " |
|
||||
| Test.java:32:10:32:34 | yield ... | Test.java:28:10:28:39 | thingAsString2 |
|
||||
| Test.java:32:16:32:29 | "An integer: " | Test.java:32:33:32:33 | i |
|
||||
| Test.java:32:16:32:33 | ... + ... | Test.java:28:10:28:39 | thingAsString2 |
|
||||
| Test.java:32:16:32:33 | ... + ... | Test.java:32:10:32:34 | yield ... |
|
||||
| Test.java:32:33:32:33 | i | Test.java:32:16:32:33 | ... + ... |
|
||||
| Test.java:33:8:33:15 | default | Test.java:34:10:34:32 | yield ... |
|
||||
| Test.java:34:10:34:32 | yield ... | Test.java:34:16:34:31 | "Something else" |
|
||||
| Test.java:34:16:34:31 | "Something else" | Test.java:28:10:28:39 | thingAsString2 |
|
||||
| Test.java:33:8:33:15 | default | Test.java:34:16:34:31 | "Something else" |
|
||||
| Test.java:34:10:34:32 | yield ... | Test.java:28:10:28:39 | thingAsString2 |
|
||||
| Test.java:34:16:34:31 | "Something else" | Test.java:34:10:34:32 | yield ... |
|
||||
| Test.java:37:6:37:18 | switch (...) | Test.java:37:13:37:17 | thing |
|
||||
| Test.java:37:13:37:17 | thing | Test.java:38:8:38:42 | case <Pattern> |
|
||||
| Test.java:38:8:38:42 | case <Pattern> | Test.java:38:20:38:20 | s |
|
||||
@@ -195,7 +199,6 @@
|
||||
| Test.java:50:41:50:41 | 3 | Test.java:50:27:50:41 | ... == ... |
|
||||
| Test.java:50:46:50:55 | System.out | Test.java:50:65:50:74 | "Length 3" |
|
||||
| Test.java:50:46:50:75 | println(...) | Test.java:55:6:55:26 | switch (...) |
|
||||
| Test.java:50:46:50:76 | <Expr>; | Test.java:50:46:50:55 | System.out |
|
||||
| Test.java:50:65:50:74 | "Length 3" | Test.java:50:46:50:75 | println(...) |
|
||||
| Test.java:51:8:51:44 | case <Pattern> | Test.java:51:20:51:20 | s |
|
||||
| Test.java:51:8:51:44 | case <Pattern> | Test.java:52:8:52:17 | default |
|
||||
@@ -207,22 +210,22 @@
|
||||
| Test.java:51:41:51:41 | 5 | Test.java:51:27:51:41 | ... == ... |
|
||||
| Test.java:51:46:51:55 | System.out | Test.java:51:65:51:74 | "Length 5" |
|
||||
| Test.java:51:46:51:75 | println(...) | Test.java:55:6:55:26 | switch (...) |
|
||||
| Test.java:51:46:51:76 | <Expr>; | Test.java:51:46:51:55 | System.out |
|
||||
| Test.java:51:65:51:74 | "Length 5" | Test.java:51:46:51:75 | println(...) |
|
||||
| Test.java:52:8:52:17 | default | Test.java:52:19:52:21 | { ... } |
|
||||
| Test.java:52:19:52:21 | { ... } | Test.java:55:6:55:26 | switch (...) |
|
||||
| Test.java:55:6:55:26 | switch (...) | Test.java:55:21:55:25 | thing |
|
||||
| Test.java:55:13:55:25 | (...)... | Test.java:56:8:56:21 | case ... |
|
||||
| Test.java:55:13:55:25 | (...)... | Test.java:58:8:58:21 | case ... |
|
||||
| Test.java:55:13:55:25 | (...)... | Test.java:61:8:61:42 | case <Pattern> |
|
||||
| Test.java:55:13:55:25 | (...)... | Test.java:69:8:69:26 | case null, default |
|
||||
| Test.java:55:21:55:25 | thing | Test.java:55:13:55:25 | (...)... |
|
||||
| Test.java:56:8:56:21 | case ... | Test.java:57:10:57:44 | <Expr>; |
|
||||
| Test.java:56:8:56:21 | case ... | Test.java:56:13:56:20 | "Const1" |
|
||||
| Test.java:56:8:56:21 | case ... | Test.java:58:8:58:21 | case ... |
|
||||
| Test.java:56:13:56:20 | "Const1" | Test.java:57:10:57:44 | <Expr>; |
|
||||
| Test.java:57:10:57:19 | System.out | Test.java:57:29:57:42 | "It's Const1!" |
|
||||
| Test.java:57:10:57:43 | println(...) | Test.java:58:8:58:21 | case ... |
|
||||
| Test.java:57:10:57:43 | println(...) | Test.java:59:10:59:54 | <Expr>; |
|
||||
| Test.java:57:10:57:44 | <Expr>; | Test.java:57:10:57:19 | System.out |
|
||||
| Test.java:57:29:57:42 | "It's Const1!" | Test.java:57:10:57:43 | println(...) |
|
||||
| Test.java:58:8:58:21 | case ... | Test.java:59:10:59:54 | <Expr>; |
|
||||
| Test.java:58:8:58:21 | case ... | Test.java:58:13:58:20 | "Const2" |
|
||||
| Test.java:58:8:58:21 | case ... | Test.java:61:8:61:42 | case <Pattern> |
|
||||
| Test.java:58:13:58:20 | "Const2" | Test.java:59:10:59:54 | <Expr>; |
|
||||
| Test.java:59:10:59:19 | System.out | Test.java:59:29:59:52 | "It's Const1 or Const2!" |
|
||||
| Test.java:59:10:59:53 | println(...) | Test.java:60:10:60:15 | break |
|
||||
| Test.java:59:10:59:54 | <Expr>; | Test.java:59:10:59:19 | System.out |
|
||||
@@ -230,27 +233,27 @@
|
||||
| Test.java:60:10:60:15 | break | Test.java:73:6:73:18 | switch (...) |
|
||||
| Test.java:61:8:61:42 | case <Pattern> | Test.java:61:20:61:20 | s |
|
||||
| Test.java:61:8:61:42 | case <Pattern> | Test.java:63:8:63:21 | case ... |
|
||||
| Test.java:61:8:61:42 | case <Pattern> | Test.java:66:8:66:22 | case ... |
|
||||
| Test.java:61:8:61:42 | case <Pattern> | Test.java:69:8:69:26 | case null, default |
|
||||
| Test.java:61:20:61:20 | s | Test.java:61:27:61:27 | s |
|
||||
| Test.java:61:27:61:27 | s | Test.java:61:27:61:36 | length(...) |
|
||||
| Test.java:61:27:61:36 | length(...) | Test.java:61:41:61:41 | 6 |
|
||||
| Test.java:61:27:61:41 | ... <= ... | Test.java:62:10:62:83 | <Expr>; |
|
||||
| Test.java:61:27:61:41 | ... <= ... | Test.java:63:8:63:21 | case ... |
|
||||
| Test.java:61:27:61:41 | ... <= ... | Test.java:66:8:66:22 | case ... |
|
||||
| Test.java:61:27:61:41 | ... <= ... | Test.java:69:8:69:26 | case null, default |
|
||||
| Test.java:61:41:61:41 | 6 | Test.java:61:27:61:41 | ... <= ... |
|
||||
| Test.java:62:10:62:19 | System.out | Test.java:62:29:62:81 | "It's <= 6 chars long, and neither Const1 nor Const2" |
|
||||
| Test.java:62:10:62:82 | println(...) | Test.java:63:8:63:21 | case ... |
|
||||
| Test.java:62:10:62:82 | println(...) | Test.java:64:10:64:96 | <Expr>; |
|
||||
| Test.java:62:10:62:83 | <Expr>; | Test.java:62:10:62:19 | System.out |
|
||||
| Test.java:62:29:62:81 | "It's <= 6 chars long, and neither Const1 nor Const2" | Test.java:62:10:62:82 | println(...) |
|
||||
| Test.java:63:8:63:21 | case ... | Test.java:64:10:64:96 | <Expr>; |
|
||||
| Test.java:63:8:63:21 | case ... | Test.java:63:13:63:20 | "Const3" |
|
||||
| Test.java:63:8:63:21 | case ... | Test.java:66:8:66:22 | case ... |
|
||||
| Test.java:63:13:63:20 | "Const3" | Test.java:64:10:64:96 | <Expr>; |
|
||||
| Test.java:64:10:64:19 | System.out | Test.java:64:29:64:94 | "It's (<= 6 chars long, and neither Const1 nor Const2), or Const3" |
|
||||
| Test.java:64:10:64:95 | println(...) | Test.java:65:10:65:15 | break |
|
||||
| Test.java:64:10:64:96 | <Expr>; | Test.java:64:10:64:19 | System.out |
|
||||
| Test.java:64:29:64:94 | "It's (<= 6 chars long, and neither Const1 nor Const2), or Const3" | Test.java:64:10:64:95 | println(...) |
|
||||
| Test.java:65:10:65:15 | break | Test.java:73:6:73:18 | switch (...) |
|
||||
| Test.java:66:8:66:22 | case ... | Test.java:67:10:67:44 | <Expr>; |
|
||||
| Test.java:66:8:66:22 | case ... | Test.java:66:13:66:21 | "Const30" |
|
||||
| Test.java:66:8:66:22 | case ... | Test.java:69:8:69:26 | case null, default |
|
||||
| Test.java:66:13:66:21 | "Const30" | Test.java:67:10:67:44 | <Expr>; |
|
||||
| Test.java:67:10:67:19 | System.out | Test.java:67:29:67:42 | "It's Const30" |
|
||||
| Test.java:67:10:67:43 | println(...) | Test.java:68:10:68:15 | break |
|
||||
| Test.java:67:10:67:44 | <Expr>; | Test.java:67:10:67:19 | System.out |
|
||||
@@ -263,16 +266,17 @@
|
||||
| Test.java:70:29:70:58 | "It's null, or something else" | Test.java:70:10:70:59 | println(...) |
|
||||
| Test.java:73:6:73:18 | switch (...) | Test.java:73:13:73:17 | thing |
|
||||
| Test.java:73:13:73:17 | thing | Test.java:74:8:74:21 | case <Pattern> |
|
||||
| Test.java:73:13:73:17 | thing | Test.java:77:8:77:17 | case ... |
|
||||
| Test.java:74:8:74:21 | case <Pattern> | Test.java:74:20:74:20 | s |
|
||||
| Test.java:74:8:74:21 | case <Pattern> | Test.java:80:8:80:22 | case <Pattern> |
|
||||
| Test.java:74:8:74:21 | case <Pattern> | Test.java:77:8:77:17 | case ... |
|
||||
| Test.java:74:20:74:20 | s | Test.java:75:10:75:31 | <Expr>; |
|
||||
| Test.java:75:10:75:19 | System.out | Test.java:75:29:75:29 | s |
|
||||
| Test.java:75:10:75:30 | println(...) | Test.java:76:10:76:15 | break |
|
||||
| Test.java:75:10:75:31 | <Expr>; | Test.java:75:10:75:19 | System.out |
|
||||
| Test.java:75:29:75:29 | s | Test.java:75:10:75:30 | println(...) |
|
||||
| Test.java:76:10:76:15 | break | Test.java:87:6:87:18 | switch (...) |
|
||||
| Test.java:77:8:77:17 | case ... | Test.java:78:10:78:41 | <Expr>; |
|
||||
| Test.java:77:8:77:17 | case ... | Test.java:77:13:77:16 | null |
|
||||
| Test.java:77:8:77:17 | case ... | Test.java:80:8:80:22 | case <Pattern> |
|
||||
| Test.java:77:13:77:16 | null | Test.java:78:10:78:41 | <Expr>; |
|
||||
| Test.java:78:10:78:19 | System.out | Test.java:78:29:78:39 | "It's null" |
|
||||
| Test.java:78:10:78:40 | println(...) | Test.java:79:10:79:15 | break |
|
||||
| Test.java:78:10:78:41 | <Expr>; | Test.java:78:10:78:19 | System.out |
|
||||
@@ -347,7 +351,7 @@
|
||||
| Test.java:110:26:110:30 | thing | Test.java:111:8:111:20 | case <Pattern> |
|
||||
| Test.java:111:8:111:20 | case <Pattern> | Test.java:111:15:111:15 | <anonymous local variable> |
|
||||
| Test.java:111:8:111:20 | case <Pattern> | Test.java:112:8:112:77 | case <Pattern> |
|
||||
| Test.java:111:13:111:19 | B(...) | Test.java:114:10:114:17 | yield ... |
|
||||
| Test.java:111:13:111:19 | B(...) | Test.java:114:16:114:16 | 1 |
|
||||
| Test.java:111:15:111:15 | <anonymous local variable> | Test.java:111:18:111:18 | <anonymous local variable> |
|
||||
| Test.java:111:18:111:18 | <anonymous local variable> | Test.java:111:13:111:19 | B(...) |
|
||||
| Test.java:112:8:112:77 | case <Pattern> | Test.java:112:21:112:21 | <anonymous local variable> |
|
||||
@@ -362,32 +366,34 @@
|
||||
| Test.java:112:47:112:51 | thing | Test.java:112:47:112:62 | toString(...) |
|
||||
| Test.java:112:47:112:62 | toString(...) | Test.java:112:71:112:75 | "abc" |
|
||||
| Test.java:112:47:112:76 | equals(...) | Test.java:113:8:113:20 | case <Pattern> |
|
||||
| Test.java:112:47:112:76 | equals(...) | Test.java:114:10:114:17 | yield ... |
|
||||
| Test.java:112:47:112:76 | equals(...) | Test.java:114:16:114:16 | 1 |
|
||||
| Test.java:112:71:112:75 | "abc" | Test.java:112:47:112:76 | equals(...) |
|
||||
| Test.java:113:8:113:20 | case <Pattern> | Test.java:113:19:113:19 | <anonymous local variable> |
|
||||
| Test.java:113:8:113:20 | case <Pattern> | Test.java:115:8:115:15 | default |
|
||||
| Test.java:113:19:113:19 | <anonymous local variable> | Test.java:114:10:114:17 | yield ... |
|
||||
| Test.java:114:10:114:17 | yield ... | Test.java:114:16:114:16 | 1 |
|
||||
| Test.java:114:16:114:16 | 1 | Test.java:110:10:110:31 | result |
|
||||
| Test.java:115:8:115:15 | default | Test.java:116:10:116:17 | yield ... |
|
||||
| Test.java:116:10:116:17 | yield ... | Test.java:116:16:116:16 | 2 |
|
||||
| Test.java:116:16:116:16 | 2 | Test.java:110:10:110:31 | result |
|
||||
| Test.java:113:19:113:19 | <anonymous local variable> | Test.java:114:16:114:16 | 1 |
|
||||
| Test.java:114:10:114:17 | yield ... | Test.java:110:10:110:31 | result |
|
||||
| Test.java:114:16:114:16 | 1 | Test.java:114:10:114:17 | yield ... |
|
||||
| Test.java:115:8:115:15 | default | Test.java:116:16:116:16 | 2 |
|
||||
| Test.java:116:10:116:17 | yield ... | Test.java:110:10:110:31 | result |
|
||||
| Test.java:116:16:116:16 | 2 | Test.java:116:10:116:17 | yield ... |
|
||||
| Test.java:119:6:119:27 | switch (...) | Test.java:119:22:119:26 | thing |
|
||||
| Test.java:119:14:119:26 | (...)... | Test.java:120:8:120:16 | case ... |
|
||||
| Test.java:119:14:119:26 | (...)... | Test.java:121:8:121:56 | case <Pattern> |
|
||||
| Test.java:119:22:119:26 | thing | Test.java:119:14:119:26 | (...)... |
|
||||
| Test.java:120:8:120:16 | case ... | Test.java:122:8:122:16 | case ... |
|
||||
| Test.java:120:8:120:16 | case ... | Test.java:120:13:120:15 | "a" |
|
||||
| Test.java:120:8:120:16 | case ... | Test.java:121:8:121:56 | case <Pattern> |
|
||||
| Test.java:120:13:120:15 | "a" | Test.java:123:10:123:15 | break |
|
||||
| Test.java:121:8:121:56 | case <Pattern> | Test.java:121:20:121:20 | <anonymous local variable> |
|
||||
| Test.java:121:8:121:56 | case <Pattern> | Test.java:122:8:122:16 | case ... |
|
||||
| Test.java:121:8:121:56 | case <Pattern> | Test.java:124:8:124:15 | default |
|
||||
| Test.java:121:20:121:20 | <anonymous local variable> | Test.java:121:36:121:40 | thing |
|
||||
| Test.java:121:27:121:50 | length(...) | Test.java:121:55:121:55 | 5 |
|
||||
| Test.java:121:27:121:55 | ... == ... | Test.java:122:8:122:16 | case ... |
|
||||
| Test.java:121:27:121:55 | ... == ... | Test.java:124:8:124:15 | default |
|
||||
| Test.java:121:27:121:55 | ... == ... | Test.java:123:10:123:15 | break |
|
||||
| Test.java:121:28:121:40 | (...)... | Test.java:121:27:121:50 | length(...) |
|
||||
| Test.java:121:36:121:40 | thing | Test.java:121:28:121:40 | (...)... |
|
||||
| Test.java:121:55:121:55 | 5 | Test.java:121:27:121:55 | ... == ... |
|
||||
| Test.java:122:8:122:16 | case ... | Test.java:123:10:123:15 | break |
|
||||
| Test.java:122:8:122:16 | case ... | Test.java:122:13:122:15 | "b" |
|
||||
| Test.java:122:8:122:16 | case ... | Test.java:124:8:124:15 | default |
|
||||
| Test.java:122:13:122:15 | "b" | Test.java:123:10:123:15 | break |
|
||||
| Test.java:123:10:123:15 | break | Test.java:129:6:129:18 | switch (...) |
|
||||
| Test.java:124:8:124:15 | default | Test.java:125:10:125:15 | break |
|
||||
| Test.java:125:10:125:15 | break | Test.java:129:6:129:18 | switch (...) |
|
||||
@@ -395,29 +401,33 @@
|
||||
| Test.java:129:13:129:17 | thing | Test.java:130:8:130:21 | case <Pattern> |
|
||||
| Test.java:130:8:130:21 | case <Pattern> | Test.java:130:20:130:20 | <anonymous local variable> |
|
||||
| Test.java:130:8:130:21 | case <Pattern> | Test.java:131:8:131:15 | default |
|
||||
| Test.java:130:20:130:20 | <anonymous local variable> | Test.java:131:8:131:15 | default |
|
||||
| Test.java:130:20:130:20 | <anonymous local variable> | Test.java:3:22:3:25 | Normal Exit |
|
||||
| Test.java:131:8:131:15 | default | Test.java:3:22:3:25 | Normal Exit |
|
||||
| Test.java:138:8:138:8 | ...=... | Test.java:138:8:138:8 | <Expr>; |
|
||||
| Test.java:138:8:138:8 | ...=... | Test.java:138:8:138:8 | Normal Exit |
|
||||
| Test.java:138:8:138:8 | <Expr>; | Test.java:138:8:138:8 | this |
|
||||
| Test.java:138:8:138:8 | <Expr>; | Test.java:138:8:138:8 | this |
|
||||
| Test.java:138:8:138:8 | Exceptional Exit | Test.java:138:8:138:8 | Exit |
|
||||
| Test.java:138:8:138:8 | Entry | Test.java:138:8:138:8 | { ... } |
|
||||
| Test.java:138:8:138:8 | Normal Exit | Test.java:138:8:138:8 | Exit |
|
||||
| Test.java:138:8:138:8 | b | Test.java:138:8:138:8 | ...=... |
|
||||
| Test.java:138:8:138:8 | field3 | Test.java:138:8:138:8 | ...=... |
|
||||
| Test.java:138:8:138:8 | super(...) | Test.java:138:8:138:8 | <Expr>; |
|
||||
| Test.java:138:8:138:8 | this | Test.java:138:8:138:8 | b |
|
||||
| Test.java:138:8:138:8 | this | Test.java:138:8:138:8 | field3 |
|
||||
| Test.java:138:8:138:8 | this | Test.java:138:8:138:8 | this.b |
|
||||
| Test.java:138:8:138:8 | this | Test.java:138:8:138:8 | this.field3 |
|
||||
| Test.java:138:8:138:8 | this.b | Test.java:138:8:138:8 | b |
|
||||
| Test.java:138:8:138:8 | this.field3 | Test.java:138:8:138:8 | field3 |
|
||||
| Test.java:138:8:138:8 | { ... } | Test.java:138:8:138:8 | super(...) |
|
||||
| Test.java:139:8:139:8 | ...=... | Test.java:139:8:139:8 | <Expr>; |
|
||||
| Test.java:139:8:139:8 | ...=... | Test.java:139:8:139:8 | Normal Exit |
|
||||
| Test.java:139:8:139:8 | <Expr>; | Test.java:139:8:139:8 | this |
|
||||
| Test.java:139:8:139:8 | <Expr>; | Test.java:139:8:139:8 | this |
|
||||
| Test.java:139:8:139:8 | Exceptional Exit | Test.java:139:8:139:8 | Exit |
|
||||
| Test.java:139:8:139:8 | Entry | Test.java:139:8:139:8 | { ... } |
|
||||
| Test.java:139:8:139:8 | Normal Exit | Test.java:139:8:139:8 | Exit |
|
||||
| Test.java:139:8:139:8 | field1 | Test.java:139:8:139:8 | ...=... |
|
||||
| Test.java:139:8:139:8 | field2 | Test.java:139:8:139:8 | ...=... |
|
||||
| Test.java:139:8:139:8 | super(...) | Test.java:139:8:139:8 | <Expr>; |
|
||||
| Test.java:139:8:139:8 | this | Test.java:139:8:139:8 | field1 |
|
||||
| Test.java:139:8:139:8 | this | Test.java:139:8:139:8 | field2 |
|
||||
| Test.java:139:8:139:8 | this | Test.java:139:8:139:8 | this.field1 |
|
||||
| Test.java:139:8:139:8 | this | Test.java:139:8:139:8 | this.field2 |
|
||||
| Test.java:139:8:139:8 | this.field1 | Test.java:139:8:139:8 | field1 |
|
||||
| Test.java:139:8:139:8 | this.field2 | Test.java:139:8:139:8 | field2 |
|
||||
| Test.java:139:8:139:8 | { ... } | Test.java:139:8:139:8 | super(...) |
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
import java
|
||||
import utils.test.AstCfg
|
||||
|
||||
from ControlFlowNode cn
|
||||
where cn.getLocation().getFile().getBaseName() = ["Test.java", "Exhaustive.java"]
|
||||
select cn, cn.getASuccessor()
|
||||
select cn, getAnAstSuccessor(cn)
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
| Nested.java:8:29:8:57 | SSA capture def(next(..).p1) | Nested.java:4:34:10:3 | SSA param(p1) |
|
||||
| Nested.java:8:29:8:57 | SSA capture def(next(..).x1) | Nested.java:5:9:5:14 | SSA def(x1) |
|
||||
| Nested.java:8:22:8:25 | SSA capture def(next(..).p1) | Nested.java:4:21:4:24 | SSA param(p1) |
|
||||
| Nested.java:8:22:8:25 | SSA capture def(next(..).x1) | Nested.java:5:9:5:14 | SSA def(x1) |
|
||||
| Nested.java:16:22:16:34 | SSA capture def(getInt(..).obj) | Nested.java:15:12:15:29 | SSA def(obj) |
|
||||
| Nested.java:19:27:22:7 | SSA capture def(getInt(..).hash) | Nested.java:16:15:16:34 | SSA def(hash) |
|
||||
| Nested.java:19:27:22:7 | SSA capture def(getInt(..).x2) | Nested.java:17:9:17:15 | SSA def(x2) |
|
||||
| Nested.java:19:18:19:23 | SSA capture def(getInt(..).hash) | Nested.java:16:15:16:34 | SSA def(hash) |
|
||||
| Nested.java:19:18:19:23 | SSA capture def(getInt(..).x2) | Nested.java:17:9:17:15 | SSA def(x2) |
|
||||
| Nested.java:20:27:20:39 | SSA capture def(getInt(..).obj) | Nested.java:15:12:15:29 | SSA def(obj) |
|
||||
| Nested.java:30:23:30:36 | SSA capture def(getInt(..).obj2) | Nested.java:30:5:30:37 | SSA phi(obj2) |
|
||||
| Nested.java:37:20:37:25 | SSA capture def(getInt(..).x3) | Nested.java:36:7:36:12 | SSA def(x3) |
|
||||
| Nested.java:40:20:40:25 | SSA capture def(getInt(..).x3) | Nested.java:39:7:39:12 | SSA def(x3) |
|
||||
| Nested.java:30:23:30:36 | SSA capture def(getInt(..).obj2) | Nested.java:25:5:25:24 | SSA phi(obj2) |
|
||||
| Nested.java:37:14:37:25 | SSA capture def(getInt(..).x3) | Nested.java:36:7:36:12 | SSA def(x3) |
|
||||
| Nested.java:40:14:40:25 | SSA capture def(getInt(..).x3) | Nested.java:39:7:39:12 | SSA def(x3) |
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
| Fields.java:12:19:21:3 | SSA entry def(this.xs) | Fields.java:13:15:13:16 | xs |
|
||||
| Fields.java:12:15:12:15 | SSA entry def(this.xs) | Fields.java:13:15:13:16 | xs |
|
||||
| Fields.java:14:5:14:9 | SSA call def(this.xs) | Fields.java:15:9:15:10 | xs |
|
||||
| Fields.java:15:5:15:10 | SSA def(x) | Fields.java:16:9:16:9 | x |
|
||||
| Fields.java:16:5:16:17 | SSA phi(this.xs) | Fields.java:18:9:18:15 | this.xs |
|
||||
| Fields.java:17:7:17:11 | SSA call def(this.xs) | Fields.java:18:9:18:15 | this.xs |
|
||||
| Fields.java:18:5:18:16 | SSA phi(this.xs) | Fields.java:18:9:18:15 | this.xs |
|
||||
| Fields.java:19:5:19:19 | SSA def(this.xs) | Fields.java:20:9:20:10 | xs |
|
||||
| Fields.java:23:19:49:3 | SSA entry def(Fields.stat) | Fields.java:27:15:27:18 | stat |
|
||||
| Fields.java:23:19:49:3 | SSA entry def(this.xs) | Fields.java:26:15:26:16 | xs |
|
||||
| Fields.java:23:15:23:15 | SSA entry def(Fields.stat) | Fields.java:27:15:27:18 | stat |
|
||||
| Fields.java:23:15:23:15 | SSA entry def(this.xs) | Fields.java:26:15:26:16 | xs |
|
||||
| Fields.java:24:12:24:27 | SSA def(f) | Fields.java:25:15:25:15 | f |
|
||||
| Fields.java:24:12:24:27 | SSA qualifier def(f.xs) | Fields.java:25:15:25:18 | f.xs |
|
||||
| Fields.java:24:16:24:27 | SSA call def(Fields.stat) | Fields.java:27:15:27:18 | stat |
|
||||
@@ -18,52 +18,52 @@
|
||||
| Fields.java:36:5:36:19 | SSA def(this.xs) | Fields.java:38:9:38:10 | xs |
|
||||
| Fields.java:39:5:39:21 | SSA def(f.xs) | Fields.java:40:9:40:12 | f.xs |
|
||||
| Fields.java:41:5:41:10 | SSA def(z) | Fields.java:42:9:42:9 | z |
|
||||
| Fields.java:42:5:42:17 | SSA phi(Fields.stat) | Fields.java:48:9:48:12 | stat |
|
||||
| Fields.java:42:5:42:17 | SSA phi(f) | Fields.java:44:9:44:9 | f |
|
||||
| Fields.java:42:5:42:17 | SSA phi(f.xs) | Fields.java:44:9:44:12 | f.xs |
|
||||
| Fields.java:43:7:43:22 | SSA def(f) | Fields.java:44:9:44:9 | f |
|
||||
| Fields.java:43:7:43:22 | SSA qualifier def(f.xs) | Fields.java:44:9:44:12 | f.xs |
|
||||
| Fields.java:43:11:43:22 | SSA call def(Fields.stat) | Fields.java:48:9:48:12 | stat |
|
||||
| Fields.java:44:5:44:13 | SSA phi(Fields.stat) | Fields.java:48:9:48:12 | stat |
|
||||
| Fields.java:44:5:44:13 | SSA phi(f) | Fields.java:44:9:44:9 | f |
|
||||
| Fields.java:44:5:44:13 | SSA phi(f.xs) | Fields.java:44:9:44:12 | f.xs |
|
||||
| Fields.java:45:5:45:16 | SSA call def(Fields.stat) | Fields.java:48:9:48:12 | stat |
|
||||
| Nested.java:8:29:8:57 | SSA capture def(next(..).p1) | Nested.java:8:38:8:39 | p1 |
|
||||
| Nested.java:8:29:8:57 | SSA capture def(next(..).x1) | Nested.java:8:43:8:44 | x1 |
|
||||
| Nested.java:8:22:8:25 | SSA capture def(next(..).p1) | Nested.java:8:38:8:39 | p1 |
|
||||
| Nested.java:8:22:8:25 | SSA capture def(next(..).x1) | Nested.java:8:43:8:44 | x1 |
|
||||
| Nested.java:16:22:16:34 | SSA capture def(getInt(..).obj) | Nested.java:16:22:16:24 | obj |
|
||||
| Nested.java:18:15:23:5 | SSA def(h2) | Nested.java:25:9:25:10 | h2 |
|
||||
| Nested.java:19:27:22:7 | SSA capture def(getInt(..).hash) | Nested.java:21:21:21:24 | hash |
|
||||
| Nested.java:19:27:22:7 | SSA capture def(getInt(..).x2) | Nested.java:21:16:21:17 | x2 |
|
||||
| Nested.java:19:18:19:23 | SSA capture def(getInt(..).hash) | Nested.java:21:21:21:24 | hash |
|
||||
| Nested.java:19:18:19:23 | SSA capture def(getInt(..).x2) | Nested.java:21:16:21:17 | x2 |
|
||||
| Nested.java:20:19:20:39 | SSA def(hnest) | Nested.java:21:37:21:41 | hnest |
|
||||
| Nested.java:20:27:20:39 | SSA capture def(getInt(..).obj) | Nested.java:20:27:20:29 | obj |
|
||||
| Nested.java:30:23:30:36 | SSA capture def(getInt(..).obj2) | Nested.java:30:23:30:26 | obj2 |
|
||||
| Nested.java:33:29:42:3 | SSA param(p3) | Nested.java:35:9:35:10 | p3 |
|
||||
| Nested.java:37:20:37:25 | SSA capture def(getInt(..).x3) | Nested.java:37:20:37:21 | x3 |
|
||||
| Nested.java:40:20:40:25 | SSA capture def(getInt(..).x3) | Nested.java:40:20:40:21 | x3 |
|
||||
| Test.java:4:19:32:2 | SSA param(param) | Test.java:9:7:9:11 | param |
|
||||
| Nested.java:33:13:33:19 | SSA param(p3) | Nested.java:35:9:35:10 | p3 |
|
||||
| Nested.java:37:14:37:25 | SSA capture def(getInt(..).x3) | Nested.java:37:20:37:21 | x3 |
|
||||
| Nested.java:40:14:40:25 | SSA capture def(getInt(..).x3) | Nested.java:40:20:40:21 | x3 |
|
||||
| Test.java:4:6:4:6 | SSA param(param) | Test.java:9:7:9:11 | param |
|
||||
| Test.java:6:7:6:11 | SSA def(x) | Test.java:10:4:10:4 | x |
|
||||
| Test.java:6:7:6:11 | SSA def(x) | Test.java:20:10:20:10 | x |
|
||||
| Test.java:9:3:9:16 | SSA phi(x) | Test.java:20:10:20:10 | x |
|
||||
| Test.java:9:3:9:16 | SSA phi(y) | Test.java:20:14:20:14 | y |
|
||||
| Test.java:10:4:10:6 | SSA def(x) | Test.java:11:10:11:10 | x |
|
||||
| Test.java:11:4:11:10 | SSA def(y) | Test.java:20:14:20:14 | y |
|
||||
| Test.java:11:8:11:10 | SSA def(x) | Test.java:20:10:20:10 | x |
|
||||
| Test.java:14:4:14:8 | SSA def(y) | Test.java:15:4:15:4 | y |
|
||||
| Test.java:15:4:15:9 | SSA def(y) | Test.java:20:14:20:14 | y |
|
||||
| Test.java:19:3:19:3 | SSA phi(x) | Test.java:20:10:20:10 | x |
|
||||
| Test.java:19:3:19:3 | SSA phi(y) | Test.java:20:14:20:14 | y |
|
||||
| Test.java:20:10:20:10 | SSA phi(param) | Test.java:21:8:21:12 | param |
|
||||
| Test.java:20:10:20:10 | SSA phi(y) | Test.java:20:14:20:14 | y |
|
||||
| Test.java:20:3:20:15 | SSA phi(param) | Test.java:21:8:21:12 | param |
|
||||
| Test.java:20:3:20:15 | SSA phi(y) | Test.java:20:14:20:14 | y |
|
||||
| Test.java:21:8:21:14 | SSA def(param) | Test.java:21:8:21:12 | param |
|
||||
| Test.java:24:4:24:9 | SSA def(y) | Test.java:20:14:20:14 | y |
|
||||
| Test.java:27:12:27:16 | SSA def(i) | Test.java:27:19:27:19 | i |
|
||||
| Test.java:27:19:27:19 | SSA phi(i) | Test.java:27:19:27:19 | i |
|
||||
| Test.java:27:19:27:19 | SSA phi(x) | Test.java:28:4:28:4 | x |
|
||||
| Test.java:27:19:27:19 | SSA phi(x) | Test.java:31:10:31:10 | x |
|
||||
| Test.java:27:19:27:22 | SSA phi(i) | Test.java:27:19:27:19 | i |
|
||||
| Test.java:27:19:27:22 | SSA phi(x) | Test.java:28:4:28:4 | x |
|
||||
| Test.java:27:19:27:22 | SSA phi(x) | Test.java:31:10:31:10 | x |
|
||||
| Test.java:27:25:27:27 | SSA def(i) | Test.java:27:19:27:19 | i |
|
||||
| Test.java:28:4:28:9 | SSA def(x) | Test.java:28:4:28:4 | x |
|
||||
| Test.java:28:4:28:9 | SSA def(x) | Test.java:31:10:31:10 | x |
|
||||
| TestInstanceOfPattern.java:3:24:9:2 | SSA param(obj) | TestInstanceOfPattern.java:4:7:4:9 | obj |
|
||||
| TestInstanceOfPattern.java:3:7:3:10 | SSA param(obj) | TestInstanceOfPattern.java:4:7:4:9 | obj |
|
||||
| TestInstanceOfPattern.java:4:29:4:29 | SSA def(s) | TestInstanceOfPattern.java:5:8:5:8 | s |
|
||||
| TestInstanceOfPattern.java:10:25:16:2 | SSA param(obj) | TestInstanceOfPattern.java:11:9:11:11 | obj |
|
||||
| TestInstanceOfPattern.java:10:7:10:11 | SSA param(obj) | TestInstanceOfPattern.java:11:9:11:11 | obj |
|
||||
| TestInstanceOfPattern.java:11:31:11:31 | SSA def(s) | TestInstanceOfPattern.java:14:8:14:8 | s |
|
||||
| TestInstanceOfPattern.java:17:25:23:2 | SSA param(obj) | TestInstanceOfPattern.java:18:7:18:9 | obj |
|
||||
| TestInstanceOfPattern.java:17:7:17:11 | SSA param(obj) | TestInstanceOfPattern.java:18:7:18:9 | obj |
|
||||
| TestInstanceOfPattern.java:18:29:18:29 | SSA def(s) | TestInstanceOfPattern.java:18:34:18:34 | s |
|
||||
| TestInstanceOfPattern.java:24:25:30:2 | SSA entry def(this.s) | TestInstanceOfPattern.java:25:34:25:34 | s |
|
||||
| TestInstanceOfPattern.java:24:25:30:2 | SSA entry def(this.s) | TestInstanceOfPattern.java:26:8:26:8 | s |
|
||||
| TestInstanceOfPattern.java:24:25:30:2 | SSA param(obj) | TestInstanceOfPattern.java:25:7:25:9 | obj |
|
||||
| TestInstanceOfPattern.java:24:7:24:11 | SSA entry def(this.s) | TestInstanceOfPattern.java:25:34:25:34 | s |
|
||||
| TestInstanceOfPattern.java:24:7:24:11 | SSA entry def(this.s) | TestInstanceOfPattern.java:26:8:26:8 | s |
|
||||
| TestInstanceOfPattern.java:24:7:24:11 | SSA param(obj) | TestInstanceOfPattern.java:25:7:25:9 | obj |
|
||||
|
||||
@@ -1,75 +1,75 @@
|
||||
| Fields.java:13:5:13:17 | x | Fields.java:15:5:15:10 | ...=... | SSA def(x) |
|
||||
| Fields.java:13:15:13:16 | this.xs | Fields.java:12:19:21:3 | { ... } | SSA entry def(this.xs) |
|
||||
| Fields.java:13:15:13:16 | this.xs | Fields.java:12:15:12:15 | Entry | SSA entry def(this.xs) |
|
||||
| Fields.java:13:15:13:16 | this.xs | Fields.java:14:5:14:9 | upd(...) | SSA call def(this.xs) |
|
||||
| Fields.java:13:15:13:16 | this.xs | Fields.java:16:5:16:17 | After if (...) | SSA phi(this.xs) |
|
||||
| Fields.java:13:15:13:16 | this.xs | Fields.java:17:7:17:11 | upd(...) | SSA call def(this.xs) |
|
||||
| Fields.java:13:15:13:16 | this.xs | Fields.java:18:5:18:16 | <Expr>; | SSA phi(this.xs) |
|
||||
| Fields.java:13:15:13:16 | this.xs | Fields.java:19:5:19:19 | ...=... | SSA def(this.xs) |
|
||||
| Fields.java:24:5:24:28 | f | Fields.java:24:12:24:27 | f | SSA def(f) |
|
||||
| Fields.java:24:5:24:28 | f | Fields.java:42:5:42:17 | After if (...) | SSA phi(f) |
|
||||
| Fields.java:24:5:24:28 | f | Fields.java:43:7:43:22 | ...=... | SSA def(f) |
|
||||
| Fields.java:24:5:24:28 | f | Fields.java:44:5:44:13 | <Expr>; | SSA phi(f) |
|
||||
| Fields.java:25:15:25:18 | f.xs | Fields.java:24:12:24:27 | f | SSA qualifier def(f.xs) |
|
||||
| Fields.java:25:15:25:18 | f.xs | Fields.java:28:5:28:12 | f(...) | SSA call def(f.xs) |
|
||||
| Fields.java:25:15:25:18 | f.xs | Fields.java:32:5:32:9 | f(...) | SSA call def(f.xs) |
|
||||
| Fields.java:25:15:25:18 | f.xs | Fields.java:39:5:39:21 | ...=... | SSA def(f.xs) |
|
||||
| Fields.java:25:15:25:18 | f.xs | Fields.java:42:5:42:17 | After if (...) | SSA phi(f.xs) |
|
||||
| Fields.java:25:15:25:18 | f.xs | Fields.java:43:7:43:22 | ...=... | SSA qualifier def(f.xs) |
|
||||
| Fields.java:25:15:25:18 | f.xs | Fields.java:44:5:44:13 | <Expr>; | SSA phi(f.xs) |
|
||||
| Fields.java:26:5:26:17 | z | Fields.java:41:5:41:10 | ...=... | SSA def(z) |
|
||||
| Fields.java:26:15:26:16 | this.xs | Fields.java:23:19:49:3 | { ... } | SSA entry def(this.xs) |
|
||||
| Fields.java:26:15:26:16 | this.xs | Fields.java:23:15:23:15 | Entry | SSA entry def(this.xs) |
|
||||
| Fields.java:26:15:26:16 | this.xs | Fields.java:28:5:28:12 | f(...) | SSA call def(this.xs) |
|
||||
| Fields.java:26:15:26:16 | this.xs | Fields.java:32:5:32:9 | f(...) | SSA call def(this.xs) |
|
||||
| Fields.java:26:15:26:16 | this.xs | Fields.java:36:5:36:19 | ...=... | SSA def(this.xs) |
|
||||
| Fields.java:27:15:27:18 | Fields.stat | Fields.java:23:19:49:3 | { ... } | SSA entry def(Fields.stat) |
|
||||
| Fields.java:27:15:27:18 | Fields.stat | Fields.java:23:15:23:15 | Entry | SSA entry def(Fields.stat) |
|
||||
| Fields.java:27:15:27:18 | Fields.stat | Fields.java:24:16:24:27 | new Fields(...) | SSA call def(Fields.stat) |
|
||||
| Fields.java:27:15:27:18 | Fields.stat | Fields.java:28:5:28:12 | f(...) | SSA call def(Fields.stat) |
|
||||
| Fields.java:27:15:27:18 | Fields.stat | Fields.java:32:5:32:9 | f(...) | SSA call def(Fields.stat) |
|
||||
| Fields.java:27:15:27:18 | Fields.stat | Fields.java:42:5:42:17 | After if (...) | SSA phi(Fields.stat) |
|
||||
| Fields.java:27:15:27:18 | Fields.stat | Fields.java:43:11:43:22 | new Fields(...) | SSA call def(Fields.stat) |
|
||||
| Fields.java:27:15:27:18 | Fields.stat | Fields.java:44:5:44:13 | <Expr>; | SSA phi(Fields.stat) |
|
||||
| Fields.java:27:15:27:18 | Fields.stat | Fields.java:45:5:45:16 | new Fields(...) | SSA call def(Fields.stat) |
|
||||
| Nested.java:4:26:4:31 | next(..).p1 | Nested.java:8:29:8:57 | { ... } | SSA capture def(next(..).p1) |
|
||||
| Nested.java:4:26:4:31 | p1 | Nested.java:4:34:10:3 | { ... } | SSA param(p1) |
|
||||
| Nested.java:5:5:5:15 | next(..).x1 | Nested.java:8:29:8:57 | { ... } | SSA capture def(next(..).x1) |
|
||||
| Nested.java:4:26:4:31 | next(..).p1 | Nested.java:8:22:8:25 | Entry | SSA capture def(next(..).p1) |
|
||||
| Nested.java:4:26:4:31 | p1 | Nested.java:4:21:4:24 | Entry | SSA param(p1) |
|
||||
| Nested.java:5:5:5:15 | next(..).x1 | Nested.java:8:22:8:25 | Entry | SSA capture def(next(..).x1) |
|
||||
| Nested.java:5:5:5:15 | x1 | Nested.java:5:9:5:14 | x1 | SSA def(x1) |
|
||||
| Nested.java:15:5:15:30 | getInt(..).obj | Nested.java:16:22:16:34 | { ... } | SSA capture def(getInt(..).obj) |
|
||||
| Nested.java:15:5:15:30 | getInt(..).obj | Nested.java:20:27:20:39 | { ... } | SSA capture def(getInt(..).obj) |
|
||||
| Nested.java:15:5:15:30 | getInt(..).obj | Nested.java:16:22:16:34 | Entry | SSA capture def(getInt(..).obj) |
|
||||
| Nested.java:15:5:15:30 | getInt(..).obj | Nested.java:20:27:20:39 | Entry | SSA capture def(getInt(..).obj) |
|
||||
| Nested.java:15:5:15:30 | obj | Nested.java:15:12:15:29 | obj | SSA def(obj) |
|
||||
| Nested.java:16:5:16:35 | getInt(..).hash | Nested.java:19:27:22:7 | { ... } | SSA capture def(getInt(..).hash) |
|
||||
| Nested.java:16:5:16:35 | getInt(..).hash | Nested.java:19:18:19:23 | Entry | SSA capture def(getInt(..).hash) |
|
||||
| Nested.java:16:5:16:35 | hash | Nested.java:16:15:16:34 | hash | SSA def(hash) |
|
||||
| Nested.java:17:5:17:16 | getInt(..).x2 | Nested.java:19:27:22:7 | { ... } | SSA capture def(getInt(..).x2) |
|
||||
| Nested.java:17:5:17:16 | getInt(..).x2 | Nested.java:19:18:19:23 | Entry | SSA capture def(getInt(..).x2) |
|
||||
| Nested.java:17:5:17:16 | x2 | Nested.java:17:9:17:15 | x2 | SSA def(x2) |
|
||||
| Nested.java:18:5:23:6 | h2 | Nested.java:18:15:23:5 | h2 | SSA def(h2) |
|
||||
| Nested.java:20:9:20:40 | hnest | Nested.java:20:19:20:39 | hnest | SSA def(hnest) |
|
||||
| Nested.java:24:5:24:31 | getInt(..).obj2 | Nested.java:30:23:30:36 | { ... } | SSA capture def(getInt(..).obj2) |
|
||||
| Nested.java:24:5:24:31 | getInt(..).obj2 | Nested.java:30:23:30:36 | Entry | SSA capture def(getInt(..).obj2) |
|
||||
| Nested.java:24:5:24:31 | obj2 | Nested.java:25:5:25:24 | After if (...) | SSA phi(obj2) |
|
||||
| Nested.java:24:5:24:31 | obj2 | Nested.java:26:7:26:25 | ...=... | SSA def(obj2) |
|
||||
| Nested.java:24:5:24:31 | obj2 | Nested.java:28:7:28:25 | ...=... | SSA def(obj2) |
|
||||
| Nested.java:24:5:24:31 | obj2 | Nested.java:30:5:30:37 | var ...; | SSA phi(obj2) |
|
||||
| Nested.java:33:21:33:26 | p3 | Nested.java:33:29:42:3 | { ... } | SSA param(p3) |
|
||||
| Nested.java:34:5:34:11 | getInt(..).x3 | Nested.java:37:20:37:25 | { ... } | SSA capture def(getInt(..).x3) |
|
||||
| Nested.java:34:5:34:11 | getInt(..).x3 | Nested.java:40:20:40:25 | { ... } | SSA capture def(getInt(..).x3) |
|
||||
| Nested.java:33:21:33:26 | p3 | Nested.java:33:13:33:19 | Entry | SSA param(p3) |
|
||||
| Nested.java:34:5:34:11 | getInt(..).x3 | Nested.java:37:14:37:25 | Entry | SSA capture def(getInt(..).x3) |
|
||||
| Nested.java:34:5:34:11 | getInt(..).x3 | Nested.java:40:14:40:25 | Entry | SSA capture def(getInt(..).x3) |
|
||||
| Nested.java:34:5:34:11 | x3 | Nested.java:36:7:36:12 | ...=... | SSA def(x3) |
|
||||
| Nested.java:34:5:34:11 | x3 | Nested.java:39:7:39:12 | ...=... | SSA def(x3) |
|
||||
| Test.java:4:8:4:16 | param | Test.java:4:19:32:2 | { ... } | SSA param(param) |
|
||||
| Test.java:4:8:4:16 | param | Test.java:20:10:20:10 | x | SSA phi(param) |
|
||||
| Test.java:4:8:4:16 | param | Test.java:4:6:4:6 | Entry | SSA param(param) |
|
||||
| Test.java:4:8:4:16 | param | Test.java:20:3:20:15 | [LoopHeader] while (...) | SSA phi(param) |
|
||||
| Test.java:4:8:4:16 | param | Test.java:21:8:21:14 | ...++ | SSA def(param) |
|
||||
| Test.java:6:3:6:12 | x | Test.java:6:7:6:11 | x | SSA def(x) |
|
||||
| Test.java:6:3:6:12 | x | Test.java:9:3:9:16 | After if (...) | SSA phi(x) |
|
||||
| Test.java:6:3:6:12 | x | Test.java:10:4:10:6 | ...++ | SSA def(x) |
|
||||
| Test.java:6:3:6:12 | x | Test.java:11:8:11:10 | ++... | SSA def(x) |
|
||||
| Test.java:6:3:6:12 | x | Test.java:19:3:19:3 | ; | SSA phi(x) |
|
||||
| Test.java:6:3:6:12 | x | Test.java:27:19:27:19 | i | SSA phi(x) |
|
||||
| Test.java:6:3:6:12 | x | Test.java:27:19:27:22 | Before ... < ... | SSA phi(x) |
|
||||
| Test.java:6:3:6:12 | x | Test.java:28:4:28:9 | ...+=... | SSA def(x) |
|
||||
| Test.java:7:3:7:8 | y | Test.java:9:3:9:16 | After if (...) | SSA phi(y) |
|
||||
| Test.java:7:3:7:8 | y | Test.java:11:4:11:10 | ...=... | SSA def(y) |
|
||||
| Test.java:7:3:7:8 | y | Test.java:14:4:14:8 | ...=... | SSA def(y) |
|
||||
| Test.java:7:3:7:8 | y | Test.java:15:4:15:9 | ...+=... | SSA def(y) |
|
||||
| Test.java:7:3:7:8 | y | Test.java:19:3:19:3 | ; | SSA phi(y) |
|
||||
| Test.java:7:3:7:8 | y | Test.java:20:10:20:10 | x | SSA phi(y) |
|
||||
| Test.java:7:3:7:8 | y | Test.java:20:3:20:15 | [LoopHeader] while (...) | SSA phi(y) |
|
||||
| Test.java:7:3:7:8 | y | Test.java:24:4:24:9 | ...-=... | SSA def(y) |
|
||||
| Test.java:27:8:27:16 | i | Test.java:27:12:27:16 | i | SSA def(i) |
|
||||
| Test.java:27:8:27:16 | i | Test.java:27:19:27:19 | i | SSA phi(i) |
|
||||
| Test.java:27:8:27:16 | i | Test.java:27:19:27:22 | Before ... < ... | SSA phi(i) |
|
||||
| Test.java:27:8:27:16 | i | Test.java:27:25:27:27 | ...++ | SSA def(i) |
|
||||
| TestInstanceOfPattern.java:3:12:3:21 | obj | TestInstanceOfPattern.java:3:24:9:2 | { ... } | SSA param(obj) |
|
||||
| TestInstanceOfPattern.java:3:12:3:21 | obj | TestInstanceOfPattern.java:3:7:3:10 | Entry | SSA param(obj) |
|
||||
| TestInstanceOfPattern.java:4:22:4:29 | s | TestInstanceOfPattern.java:4:29:4:29 | s | SSA def(s) |
|
||||
| TestInstanceOfPattern.java:10:13:10:22 | obj | TestInstanceOfPattern.java:10:25:16:2 | { ... } | SSA param(obj) |
|
||||
| TestInstanceOfPattern.java:10:13:10:22 | obj | TestInstanceOfPattern.java:10:7:10:11 | Entry | SSA param(obj) |
|
||||
| TestInstanceOfPattern.java:11:24:11:31 | s | TestInstanceOfPattern.java:11:31:11:31 | s | SSA def(s) |
|
||||
| TestInstanceOfPattern.java:17:13:17:22 | obj | TestInstanceOfPattern.java:17:25:23:2 | { ... } | SSA param(obj) |
|
||||
| TestInstanceOfPattern.java:17:13:17:22 | obj | TestInstanceOfPattern.java:17:7:17:11 | Entry | SSA param(obj) |
|
||||
| TestInstanceOfPattern.java:18:22:18:29 | s | TestInstanceOfPattern.java:18:29:18:29 | s | SSA def(s) |
|
||||
| TestInstanceOfPattern.java:24:13:24:22 | obj | TestInstanceOfPattern.java:24:25:30:2 | { ... } | SSA param(obj) |
|
||||
| TestInstanceOfPattern.java:25:34:25:34 | this.s | TestInstanceOfPattern.java:24:25:30:2 | { ... } | SSA entry def(this.s) |
|
||||
| TestInstanceOfPattern.java:24:13:24:22 | obj | TestInstanceOfPattern.java:24:7:24:11 | Entry | SSA param(obj) |
|
||||
| TestInstanceOfPattern.java:25:34:25:34 | this.s | TestInstanceOfPattern.java:24:7:24:11 | Entry | SSA entry def(this.s) |
|
||||
|
||||
@@ -1,22 +1,22 @@
|
||||
| Fields.java:13:15:13:16 | this.xs | Fields.java:18:5:18:16 | <Expr>; | Fields.java:14:5:14:9 | upd(...) |
|
||||
| Fields.java:13:15:13:16 | this.xs | Fields.java:18:5:18:16 | <Expr>; | Fields.java:17:7:17:11 | upd(...) |
|
||||
| Fields.java:24:5:24:28 | f | Fields.java:44:5:44:13 | <Expr>; | Fields.java:24:12:24:27 | f |
|
||||
| Fields.java:24:5:24:28 | f | Fields.java:44:5:44:13 | <Expr>; | Fields.java:43:7:43:22 | ...=... |
|
||||
| Fields.java:25:15:25:18 | f.xs | Fields.java:44:5:44:13 | <Expr>; | Fields.java:39:5:39:21 | ...=... |
|
||||
| Fields.java:25:15:25:18 | f.xs | Fields.java:44:5:44:13 | <Expr>; | Fields.java:43:7:43:22 | ...=... |
|
||||
| Fields.java:27:15:27:18 | Fields.stat | Fields.java:44:5:44:13 | <Expr>; | Fields.java:32:5:32:9 | f(...) |
|
||||
| Fields.java:27:15:27:18 | Fields.stat | Fields.java:44:5:44:13 | <Expr>; | Fields.java:43:11:43:22 | new Fields(...) |
|
||||
| Nested.java:24:5:24:31 | obj2 | Nested.java:30:5:30:37 | var ...; | Nested.java:26:7:26:25 | ...=... |
|
||||
| Nested.java:24:5:24:31 | obj2 | Nested.java:30:5:30:37 | var ...; | Nested.java:28:7:28:25 | ...=... |
|
||||
| Test.java:4:8:4:16 | param | Test.java:20:10:20:10 | x | Test.java:4:19:32:2 | { ... } |
|
||||
| Test.java:4:8:4:16 | param | Test.java:20:10:20:10 | x | Test.java:21:8:21:14 | ...++ |
|
||||
| Test.java:6:3:6:12 | x | Test.java:19:3:19:3 | ; | Test.java:6:7:6:11 | x |
|
||||
| Test.java:6:3:6:12 | x | Test.java:19:3:19:3 | ; | Test.java:11:8:11:10 | ++... |
|
||||
| Test.java:6:3:6:12 | x | Test.java:27:19:27:19 | i | Test.java:19:3:19:3 | ; |
|
||||
| Test.java:6:3:6:12 | x | Test.java:27:19:27:19 | i | Test.java:28:4:28:9 | ...+=... |
|
||||
| Test.java:7:3:7:8 | y | Test.java:19:3:19:3 | ; | Test.java:11:4:11:10 | ...=... |
|
||||
| Test.java:7:3:7:8 | y | Test.java:19:3:19:3 | ; | Test.java:15:4:15:9 | ...+=... |
|
||||
| Test.java:7:3:7:8 | y | Test.java:20:10:20:10 | x | Test.java:19:3:19:3 | ; |
|
||||
| Test.java:7:3:7:8 | y | Test.java:20:10:20:10 | x | Test.java:24:4:24:9 | ...-=... |
|
||||
| Test.java:27:8:27:16 | i | Test.java:27:19:27:19 | i | Test.java:27:12:27:16 | i |
|
||||
| Test.java:27:8:27:16 | i | Test.java:27:19:27:19 | i | Test.java:27:25:27:27 | ...++ |
|
||||
| Fields.java:13:15:13:16 | this.xs | Fields.java:16:5:16:17 | After if (...) | Fields.java:14:5:14:9 | upd(...) |
|
||||
| Fields.java:13:15:13:16 | this.xs | Fields.java:16:5:16:17 | After if (...) | Fields.java:17:7:17:11 | upd(...) |
|
||||
| Fields.java:24:5:24:28 | f | Fields.java:42:5:42:17 | After if (...) | Fields.java:24:12:24:27 | f |
|
||||
| Fields.java:24:5:24:28 | f | Fields.java:42:5:42:17 | After if (...) | Fields.java:43:7:43:22 | ...=... |
|
||||
| Fields.java:25:15:25:18 | f.xs | Fields.java:42:5:42:17 | After if (...) | Fields.java:39:5:39:21 | ...=... |
|
||||
| Fields.java:25:15:25:18 | f.xs | Fields.java:42:5:42:17 | After if (...) | Fields.java:43:7:43:22 | ...=... |
|
||||
| Fields.java:27:15:27:18 | Fields.stat | Fields.java:42:5:42:17 | After if (...) | Fields.java:32:5:32:9 | f(...) |
|
||||
| Fields.java:27:15:27:18 | Fields.stat | Fields.java:42:5:42:17 | After if (...) | Fields.java:43:11:43:22 | new Fields(...) |
|
||||
| Nested.java:24:5:24:31 | obj2 | Nested.java:25:5:25:24 | After if (...) | Nested.java:26:7:26:25 | ...=... |
|
||||
| Nested.java:24:5:24:31 | obj2 | Nested.java:25:5:25:24 | After if (...) | Nested.java:28:7:28:25 | ...=... |
|
||||
| Test.java:4:8:4:16 | param | Test.java:20:3:20:15 | [LoopHeader] while (...) | Test.java:4:6:4:6 | Entry |
|
||||
| Test.java:4:8:4:16 | param | Test.java:20:3:20:15 | [LoopHeader] while (...) | Test.java:21:8:21:14 | ...++ |
|
||||
| Test.java:6:3:6:12 | x | Test.java:9:3:9:16 | After if (...) | Test.java:6:7:6:11 | x |
|
||||
| Test.java:6:3:6:12 | x | Test.java:9:3:9:16 | After if (...) | Test.java:11:8:11:10 | ++... |
|
||||
| Test.java:6:3:6:12 | x | Test.java:27:19:27:22 | Before ... < ... | Test.java:9:3:9:16 | After if (...) |
|
||||
| Test.java:6:3:6:12 | x | Test.java:27:19:27:22 | Before ... < ... | Test.java:28:4:28:9 | ...+=... |
|
||||
| Test.java:7:3:7:8 | y | Test.java:9:3:9:16 | After if (...) | Test.java:11:4:11:10 | ...=... |
|
||||
| Test.java:7:3:7:8 | y | Test.java:9:3:9:16 | After if (...) | Test.java:15:4:15:9 | ...+=... |
|
||||
| Test.java:7:3:7:8 | y | Test.java:20:3:20:15 | [LoopHeader] while (...) | Test.java:9:3:9:16 | After if (...) |
|
||||
| Test.java:7:3:7:8 | y | Test.java:20:3:20:15 | [LoopHeader] while (...) | Test.java:24:4:24:9 | ...-=... |
|
||||
| Test.java:27:8:27:16 | i | Test.java:27:19:27:22 | Before ... < ... | Test.java:27:12:27:16 | i |
|
||||
| Test.java:27:8:27:16 | i | Test.java:27:19:27:22 | Before ... < ... | Test.java:27:25:27:27 | ...++ |
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
| Fields.java:13:5:13:17 | x | Fields.java:15:5:15:10 | ...=... | SSA def(x) | Fields.java:16:9:16:9 | x |
|
||||
| Fields.java:13:15:13:16 | this.xs | Fields.java:12:19:21:3 | { ... } | SSA entry def(this.xs) | Fields.java:13:15:13:16 | xs |
|
||||
| Fields.java:13:15:13:16 | this.xs | Fields.java:12:15:12:15 | Entry | SSA entry def(this.xs) | Fields.java:13:15:13:16 | xs |
|
||||
| Fields.java:13:15:13:16 | this.xs | Fields.java:14:5:14:9 | upd(...) | SSA call def(this.xs) | Fields.java:15:9:15:10 | xs |
|
||||
| Fields.java:13:15:13:16 | this.xs | Fields.java:18:5:18:16 | <Expr>; | SSA phi(this.xs) | Fields.java:18:9:18:15 | this.xs |
|
||||
| Fields.java:13:15:13:16 | this.xs | Fields.java:16:5:16:17 | After if (...) | SSA phi(this.xs) | Fields.java:18:9:18:15 | this.xs |
|
||||
| Fields.java:13:15:13:16 | this.xs | Fields.java:19:5:19:19 | ...=... | SSA def(this.xs) | Fields.java:20:9:20:10 | xs |
|
||||
| Fields.java:24:5:24:28 | f | Fields.java:24:12:24:27 | f | SSA def(f) | Fields.java:25:15:25:15 | f |
|
||||
| Fields.java:24:5:24:28 | f | Fields.java:24:12:24:27 | f | SSA def(f) | Fields.java:29:9:29:9 | f |
|
||||
@@ -10,17 +10,17 @@
|
||||
| Fields.java:24:5:24:28 | f | Fields.java:24:12:24:27 | f | SSA def(f) | Fields.java:37:9:37:9 | f |
|
||||
| Fields.java:24:5:24:28 | f | Fields.java:24:12:24:27 | f | SSA def(f) | Fields.java:39:5:39:5 | f |
|
||||
| Fields.java:24:5:24:28 | f | Fields.java:24:12:24:27 | f | SSA def(f) | Fields.java:40:9:40:9 | f |
|
||||
| Fields.java:24:5:24:28 | f | Fields.java:44:5:44:13 | <Expr>; | SSA phi(f) | Fields.java:44:9:44:9 | f |
|
||||
| Fields.java:24:5:24:28 | f | Fields.java:44:5:44:13 | <Expr>; | SSA phi(f) | Fields.java:46:9:46:9 | f |
|
||||
| Fields.java:24:5:24:28 | f | Fields.java:42:5:42:17 | After if (...) | SSA phi(f) | Fields.java:44:9:44:9 | f |
|
||||
| Fields.java:24:5:24:28 | f | Fields.java:42:5:42:17 | After if (...) | SSA phi(f) | Fields.java:46:9:46:9 | f |
|
||||
| Fields.java:25:15:25:18 | f.xs | Fields.java:24:12:24:27 | f | SSA qualifier def(f.xs) | Fields.java:25:15:25:18 | f.xs |
|
||||
| Fields.java:25:15:25:18 | f.xs | Fields.java:28:5:28:12 | f(...) | SSA call def(f.xs) | Fields.java:29:9:29:12 | f.xs |
|
||||
| Fields.java:25:15:25:18 | f.xs | Fields.java:32:5:32:9 | f(...) | SSA call def(f.xs) | Fields.java:33:9:33:12 | f.xs |
|
||||
| Fields.java:25:15:25:18 | f.xs | Fields.java:32:5:32:9 | f(...) | SSA call def(f.xs) | Fields.java:37:9:37:12 | f.xs |
|
||||
| Fields.java:25:15:25:18 | f.xs | Fields.java:39:5:39:21 | ...=... | SSA def(f.xs) | Fields.java:40:9:40:12 | f.xs |
|
||||
| Fields.java:25:15:25:18 | f.xs | Fields.java:44:5:44:13 | <Expr>; | SSA phi(f.xs) | Fields.java:44:9:44:12 | f.xs |
|
||||
| Fields.java:25:15:25:18 | f.xs | Fields.java:44:5:44:13 | <Expr>; | SSA phi(f.xs) | Fields.java:46:9:46:12 | f.xs |
|
||||
| Fields.java:25:15:25:18 | f.xs | Fields.java:42:5:42:17 | After if (...) | SSA phi(f.xs) | Fields.java:44:9:44:12 | f.xs |
|
||||
| Fields.java:25:15:25:18 | f.xs | Fields.java:42:5:42:17 | After if (...) | SSA phi(f.xs) | Fields.java:46:9:46:12 | f.xs |
|
||||
| Fields.java:26:5:26:17 | z | Fields.java:41:5:41:10 | ...=... | SSA def(z) | Fields.java:42:9:42:9 | z |
|
||||
| Fields.java:26:15:26:16 | this.xs | Fields.java:23:19:49:3 | { ... } | SSA entry def(this.xs) | Fields.java:26:15:26:16 | xs |
|
||||
| Fields.java:26:15:26:16 | this.xs | Fields.java:23:15:23:15 | Entry | SSA entry def(this.xs) | Fields.java:26:15:26:16 | xs |
|
||||
| Fields.java:26:15:26:16 | this.xs | Fields.java:28:5:28:12 | f(...) | SSA call def(this.xs) | Fields.java:30:9:30:10 | xs |
|
||||
| Fields.java:26:15:26:16 | this.xs | Fields.java:32:5:32:9 | f(...) | SSA call def(this.xs) | Fields.java:34:9:34:10 | xs |
|
||||
| Fields.java:26:15:26:16 | this.xs | Fields.java:36:5:36:19 | ...=... | SSA def(this.xs) | Fields.java:38:9:38:10 | xs |
|
||||
@@ -30,42 +30,42 @@
|
||||
| Fields.java:27:15:27:18 | Fields.stat | Fields.java:28:5:28:12 | f(...) | SSA call def(Fields.stat) | Fields.java:31:9:31:12 | stat |
|
||||
| Fields.java:27:15:27:18 | Fields.stat | Fields.java:32:5:32:9 | f(...) | SSA call def(Fields.stat) | Fields.java:35:9:35:12 | stat |
|
||||
| Fields.java:27:15:27:18 | Fields.stat | Fields.java:45:5:45:16 | new Fields(...) | SSA call def(Fields.stat) | Fields.java:48:9:48:12 | stat |
|
||||
| Nested.java:4:26:4:31 | next(..).p1 | Nested.java:8:29:8:57 | { ... } | SSA capture def(next(..).p1) | Nested.java:8:38:8:39 | p1 |
|
||||
| Nested.java:5:5:5:15 | next(..).x1 | Nested.java:8:29:8:57 | { ... } | SSA capture def(next(..).x1) | Nested.java:8:43:8:44 | x1 |
|
||||
| Nested.java:5:5:5:15 | next(..).x1 | Nested.java:8:29:8:57 | { ... } | SSA capture def(next(..).x1) | Nested.java:8:48:8:49 | x1 |
|
||||
| Nested.java:5:5:5:15 | next(..).x1 | Nested.java:8:29:8:57 | { ... } | SSA capture def(next(..).x1) | Nested.java:8:53:8:54 | x1 |
|
||||
| Nested.java:15:5:15:30 | getInt(..).obj | Nested.java:16:22:16:34 | { ... } | SSA capture def(getInt(..).obj) | Nested.java:16:22:16:24 | obj |
|
||||
| Nested.java:15:5:15:30 | getInt(..).obj | Nested.java:20:27:20:39 | { ... } | SSA capture def(getInt(..).obj) | Nested.java:20:27:20:29 | obj |
|
||||
| Nested.java:16:5:16:35 | getInt(..).hash | Nested.java:19:27:22:7 | { ... } | SSA capture def(getInt(..).hash) | Nested.java:21:21:21:24 | hash |
|
||||
| Nested.java:17:5:17:16 | getInt(..).x2 | Nested.java:19:27:22:7 | { ... } | SSA capture def(getInt(..).x2) | Nested.java:21:16:21:17 | x2 |
|
||||
| Nested.java:4:26:4:31 | next(..).p1 | Nested.java:8:22:8:25 | Entry | SSA capture def(next(..).p1) | Nested.java:8:38:8:39 | p1 |
|
||||
| Nested.java:5:5:5:15 | next(..).x1 | Nested.java:8:22:8:25 | Entry | SSA capture def(next(..).x1) | Nested.java:8:43:8:44 | x1 |
|
||||
| Nested.java:5:5:5:15 | next(..).x1 | Nested.java:8:22:8:25 | Entry | SSA capture def(next(..).x1) | Nested.java:8:48:8:49 | x1 |
|
||||
| Nested.java:5:5:5:15 | next(..).x1 | Nested.java:8:22:8:25 | Entry | SSA capture def(next(..).x1) | Nested.java:8:53:8:54 | x1 |
|
||||
| Nested.java:15:5:15:30 | getInt(..).obj | Nested.java:16:22:16:34 | Entry | SSA capture def(getInt(..).obj) | Nested.java:16:22:16:24 | obj |
|
||||
| Nested.java:15:5:15:30 | getInt(..).obj | Nested.java:20:27:20:39 | Entry | SSA capture def(getInt(..).obj) | Nested.java:20:27:20:29 | obj |
|
||||
| Nested.java:16:5:16:35 | getInt(..).hash | Nested.java:19:18:19:23 | Entry | SSA capture def(getInt(..).hash) | Nested.java:21:21:21:24 | hash |
|
||||
| Nested.java:17:5:17:16 | getInt(..).x2 | Nested.java:19:18:19:23 | Entry | SSA capture def(getInt(..).x2) | Nested.java:21:16:21:17 | x2 |
|
||||
| Nested.java:18:5:23:6 | h2 | Nested.java:18:15:23:5 | h2 | SSA def(h2) | Nested.java:25:9:25:10 | h2 |
|
||||
| Nested.java:20:9:20:40 | hnest | Nested.java:20:19:20:39 | hnest | SSA def(hnest) | Nested.java:21:37:21:41 | hnest |
|
||||
| Nested.java:24:5:24:31 | getInt(..).obj2 | Nested.java:30:23:30:36 | { ... } | SSA capture def(getInt(..).obj2) | Nested.java:30:23:30:26 | obj2 |
|
||||
| Nested.java:33:21:33:26 | p3 | Nested.java:33:29:42:3 | { ... } | SSA param(p3) | Nested.java:35:9:35:10 | p3 |
|
||||
| Nested.java:34:5:34:11 | getInt(..).x3 | Nested.java:37:20:37:25 | { ... } | SSA capture def(getInt(..).x3) | Nested.java:37:20:37:21 | x3 |
|
||||
| Nested.java:34:5:34:11 | getInt(..).x3 | Nested.java:40:20:40:25 | { ... } | SSA capture def(getInt(..).x3) | Nested.java:40:20:40:21 | x3 |
|
||||
| Test.java:4:8:4:16 | param | Test.java:4:19:32:2 | { ... } | SSA param(param) | Test.java:9:7:9:11 | param |
|
||||
| Test.java:4:8:4:16 | param | Test.java:20:10:20:10 | x | SSA phi(param) | Test.java:21:8:21:12 | param |
|
||||
| Nested.java:24:5:24:31 | getInt(..).obj2 | Nested.java:30:23:30:36 | Entry | SSA capture def(getInt(..).obj2) | Nested.java:30:23:30:26 | obj2 |
|
||||
| Nested.java:33:21:33:26 | p3 | Nested.java:33:13:33:19 | Entry | SSA param(p3) | Nested.java:35:9:35:10 | p3 |
|
||||
| Nested.java:34:5:34:11 | getInt(..).x3 | Nested.java:37:14:37:25 | Entry | SSA capture def(getInt(..).x3) | Nested.java:37:20:37:21 | x3 |
|
||||
| Nested.java:34:5:34:11 | getInt(..).x3 | Nested.java:40:14:40:25 | Entry | SSA capture def(getInt(..).x3) | Nested.java:40:20:40:21 | x3 |
|
||||
| Test.java:4:8:4:16 | param | Test.java:4:6:4:6 | Entry | SSA param(param) | Test.java:9:7:9:11 | param |
|
||||
| Test.java:4:8:4:16 | param | Test.java:20:3:20:15 | [LoopHeader] while (...) | SSA phi(param) | Test.java:21:8:21:12 | param |
|
||||
| Test.java:6:3:6:12 | x | Test.java:6:7:6:11 | x | SSA def(x) | Test.java:10:4:10:4 | x |
|
||||
| Test.java:6:3:6:12 | x | Test.java:9:3:9:16 | After if (...) | SSA phi(x) | Test.java:20:10:20:10 | x |
|
||||
| Test.java:6:3:6:12 | x | Test.java:10:4:10:6 | ...++ | SSA def(x) | Test.java:11:10:11:10 | x |
|
||||
| Test.java:6:3:6:12 | x | Test.java:19:3:19:3 | ; | SSA phi(x) | Test.java:20:10:20:10 | x |
|
||||
| Test.java:6:3:6:12 | x | Test.java:27:19:27:19 | i | SSA phi(x) | Test.java:28:4:28:4 | x |
|
||||
| Test.java:6:3:6:12 | x | Test.java:27:19:27:19 | i | SSA phi(x) | Test.java:31:10:31:10 | x |
|
||||
| Test.java:6:3:6:12 | x | Test.java:27:19:27:22 | Before ... < ... | SSA phi(x) | Test.java:28:4:28:4 | x |
|
||||
| Test.java:6:3:6:12 | x | Test.java:27:19:27:22 | Before ... < ... | SSA phi(x) | Test.java:31:10:31:10 | x |
|
||||
| Test.java:7:3:7:8 | y | Test.java:14:4:14:8 | ...=... | SSA def(y) | Test.java:15:4:15:4 | y |
|
||||
| Test.java:7:3:7:8 | y | Test.java:20:10:20:10 | x | SSA phi(y) | Test.java:20:14:20:14 | y |
|
||||
| Test.java:7:3:7:8 | y | Test.java:20:10:20:10 | x | SSA phi(y) | Test.java:24:4:24:4 | y |
|
||||
| Test.java:7:3:7:8 | y | Test.java:20:10:20:10 | x | SSA phi(y) | Test.java:31:14:31:14 | y |
|
||||
| Test.java:27:8:27:16 | i | Test.java:27:19:27:19 | i | SSA phi(i) | Test.java:27:19:27:19 | i |
|
||||
| Test.java:27:8:27:16 | i | Test.java:27:19:27:19 | i | SSA phi(i) | Test.java:27:25:27:25 | i |
|
||||
| Test.java:27:8:27:16 | i | Test.java:27:19:27:19 | i | SSA phi(i) | Test.java:28:9:28:9 | i |
|
||||
| TestInstanceOfPattern.java:3:12:3:21 | obj | TestInstanceOfPattern.java:3:24:9:2 | { ... } | SSA param(obj) | TestInstanceOfPattern.java:4:7:4:9 | obj |
|
||||
| Test.java:7:3:7:8 | y | Test.java:20:3:20:15 | [LoopHeader] while (...) | SSA phi(y) | Test.java:20:14:20:14 | y |
|
||||
| Test.java:7:3:7:8 | y | Test.java:20:3:20:15 | [LoopHeader] while (...) | SSA phi(y) | Test.java:24:4:24:4 | y |
|
||||
| Test.java:7:3:7:8 | y | Test.java:20:3:20:15 | [LoopHeader] while (...) | SSA phi(y) | Test.java:31:14:31:14 | y |
|
||||
| Test.java:27:8:27:16 | i | Test.java:27:19:27:22 | Before ... < ... | SSA phi(i) | Test.java:27:19:27:19 | i |
|
||||
| Test.java:27:8:27:16 | i | Test.java:27:19:27:22 | Before ... < ... | SSA phi(i) | Test.java:27:25:27:25 | i |
|
||||
| Test.java:27:8:27:16 | i | Test.java:27:19:27:22 | Before ... < ... | SSA phi(i) | Test.java:28:9:28:9 | i |
|
||||
| TestInstanceOfPattern.java:3:12:3:21 | obj | TestInstanceOfPattern.java:3:7:3:10 | Entry | SSA param(obj) | TestInstanceOfPattern.java:4:7:4:9 | obj |
|
||||
| TestInstanceOfPattern.java:4:22:4:29 | s | TestInstanceOfPattern.java:4:29:4:29 | s | SSA def(s) | TestInstanceOfPattern.java:5:8:5:8 | s |
|
||||
| TestInstanceOfPattern.java:10:13:10:22 | obj | TestInstanceOfPattern.java:10:25:16:2 | { ... } | SSA param(obj) | TestInstanceOfPattern.java:11:9:11:11 | obj |
|
||||
| TestInstanceOfPattern.java:10:13:10:22 | obj | TestInstanceOfPattern.java:10:7:10:11 | Entry | SSA param(obj) | TestInstanceOfPattern.java:11:9:11:11 | obj |
|
||||
| TestInstanceOfPattern.java:11:24:11:31 | s | TestInstanceOfPattern.java:11:31:11:31 | s | SSA def(s) | TestInstanceOfPattern.java:14:8:14:8 | s |
|
||||
| TestInstanceOfPattern.java:17:13:17:22 | obj | TestInstanceOfPattern.java:17:25:23:2 | { ... } | SSA param(obj) | TestInstanceOfPattern.java:18:7:18:9 | obj |
|
||||
| TestInstanceOfPattern.java:17:13:17:22 | obj | TestInstanceOfPattern.java:17:7:17:11 | Entry | SSA param(obj) | TestInstanceOfPattern.java:18:7:18:9 | obj |
|
||||
| TestInstanceOfPattern.java:18:22:18:29 | s | TestInstanceOfPattern.java:18:29:18:29 | s | SSA def(s) | TestInstanceOfPattern.java:18:34:18:34 | s |
|
||||
| TestInstanceOfPattern.java:18:22:18:29 | s | TestInstanceOfPattern.java:18:29:18:29 | s | SSA def(s) | TestInstanceOfPattern.java:19:8:19:8 | s |
|
||||
| TestInstanceOfPattern.java:24:13:24:22 | obj | TestInstanceOfPattern.java:24:25:30:2 | { ... } | SSA param(obj) | TestInstanceOfPattern.java:25:7:25:9 | obj |
|
||||
| TestInstanceOfPattern.java:25:34:25:34 | this.s | TestInstanceOfPattern.java:24:25:30:2 | { ... } | SSA entry def(this.s) | TestInstanceOfPattern.java:25:34:25:34 | s |
|
||||
| TestInstanceOfPattern.java:25:34:25:34 | this.s | TestInstanceOfPattern.java:24:25:30:2 | { ... } | SSA entry def(this.s) | TestInstanceOfPattern.java:26:8:26:8 | s |
|
||||
| TestInstanceOfPattern.java:25:34:25:34 | this.s | TestInstanceOfPattern.java:24:25:30:2 | { ... } | SSA entry def(this.s) | TestInstanceOfPattern.java:28:8:28:8 | s |
|
||||
| TestInstanceOfPattern.java:24:13:24:22 | obj | TestInstanceOfPattern.java:24:7:24:11 | Entry | SSA param(obj) | TestInstanceOfPattern.java:25:7:25:9 | obj |
|
||||
| TestInstanceOfPattern.java:25:34:25:34 | this.s | TestInstanceOfPattern.java:24:7:24:11 | Entry | SSA entry def(this.s) | TestInstanceOfPattern.java:25:34:25:34 | s |
|
||||
| TestInstanceOfPattern.java:25:34:25:34 | this.s | TestInstanceOfPattern.java:24:7:24:11 | Entry | SSA entry def(this.s) | TestInstanceOfPattern.java:26:8:26:8 | s |
|
||||
| TestInstanceOfPattern.java:25:34:25:34 | this.s | TestInstanceOfPattern.java:24:7:24:11 | Entry | SSA entry def(this.s) | TestInstanceOfPattern.java:28:8:28:8 | s |
|
||||
|
||||
@@ -1,4 +0,0 @@
|
||||
import java
|
||||
|
||||
from ConditionNode c
|
||||
select c, c.getAFalseSuccessor()
|
||||
@@ -1,7 +1,8 @@
|
||||
| CloseReaderTest.java:8:14:8:28 | Exceptional Exit | CloseReaderTest.java:8:14:8:28 | Exit |
|
||||
| CloseReaderTest.java:8:14:8:28 | Entry | CloseReaderTest.java:8:14:8:28 | { ... } |
|
||||
| CloseReaderTest.java:8:14:8:28 | Normal Exit | CloseReaderTest.java:8:14:8:28 | Exit |
|
||||
| CloseReaderTest.java:8:14:8:28 | super(...) | CloseReaderTest.java:8:14:8:28 | Normal Exit |
|
||||
| CloseReaderTest.java:8:14:8:28 | { ... } | CloseReaderTest.java:8:14:8:28 | super(...) |
|
||||
| CloseReaderTest.java:9:23:9:34 | Entry | CloseReaderTest.java:10:2:24:2 | { ... } |
|
||||
| CloseReaderTest.java:9:23:9:34 | Exceptional Exit | CloseReaderTest.java:9:23:9:34 | Exit |
|
||||
| CloseReaderTest.java:9:23:9:34 | Normal Exit | CloseReaderTest.java:9:23:9:34 | Exit |
|
||||
| CloseReaderTest.java:10:2:24:2 | { ... } | CloseReaderTest.java:12:3:13:42 | <Expr>; |
|
||||
@@ -27,6 +28,7 @@
|
||||
| CloseReaderTest.java:19:11:19:15 | stdin | CloseReaderTest.java:19:11:19:26 | readLine(...) |
|
||||
| CloseReaderTest.java:19:11:19:26 | readLine(...) | CloseReaderTest.java:19:4:19:27 | return ... |
|
||||
| CloseReaderTest.java:19:11:19:26 | readLine(...) | CloseReaderTest.java:20:5:20:26 | catch (...) |
|
||||
| CloseReaderTest.java:20:5:20:26 | catch (...) | CloseReaderTest.java:9:23:9:34 | Exceptional Exit |
|
||||
| CloseReaderTest.java:20:5:20:26 | catch (...) | CloseReaderTest.java:20:24:20:25 | ex |
|
||||
| CloseReaderTest.java:20:24:20:25 | ex | CloseReaderTest.java:21:3:23:3 | { ... } |
|
||||
| CloseReaderTest.java:21:3:23:3 | { ... } | CloseReaderTest.java:22:11:22:14 | null |
|
||||
|
||||
@@ -1,8 +1,9 @@
|
||||
import java
|
||||
import utils.test.AstCfg
|
||||
|
||||
from ControlFlowNode n, ControlFlowNode succ
|
||||
where
|
||||
succ = n.getASuccessor() and
|
||||
succ = getAnAstSuccessor(n) and
|
||||
n.getLocation().getFile().getExtension() = "java" and
|
||||
not n.getLocation().getFile().getStem() = "PopulateRuntimeException"
|
||||
select n, succ
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
| LoopVarReadTest.java:7:19:7:24 | ... < ... | LoopVarReadTest.java:12:3:12:13 | var ...; |
|
||||
@@ -1,4 +0,0 @@
|
||||
import java
|
||||
|
||||
from ConditionNode c
|
||||
select c, c.getAFalseSuccessor()
|
||||
@@ -1,8 +1,8 @@
|
||||
| LoopVarReadTest.java:3:14:3:28 | Exceptional Exit | LoopVarReadTest.java:3:14:3:28 | Exit |
|
||||
| LoopVarReadTest.java:3:14:3:28 | Entry | LoopVarReadTest.java:3:14:3:28 | { ... } |
|
||||
| LoopVarReadTest.java:3:14:3:28 | Normal Exit | LoopVarReadTest.java:3:14:3:28 | Exit |
|
||||
| LoopVarReadTest.java:3:14:3:28 | super(...) | LoopVarReadTest.java:3:14:3:28 | Normal Exit |
|
||||
| LoopVarReadTest.java:3:14:3:28 | { ... } | LoopVarReadTest.java:3:14:3:28 | super(...) |
|
||||
| LoopVarReadTest.java:4:21:4:28 | Exceptional Exit | LoopVarReadTest.java:4:21:4:28 | Exit |
|
||||
| LoopVarReadTest.java:4:21:4:28 | Entry | LoopVarReadTest.java:5:2:15:2 | { ... } |
|
||||
| LoopVarReadTest.java:4:21:4:28 | Normal Exit | LoopVarReadTest.java:4:21:4:28 | Exit |
|
||||
| LoopVarReadTest.java:5:2:15:2 | { ... } | LoopVarReadTest.java:6:3:6:12 | var ...; |
|
||||
| LoopVarReadTest.java:6:3:6:12 | var ...; | LoopVarReadTest.java:6:11:6:11 | 2 |
|
||||
|
||||
@@ -1,8 +1,9 @@
|
||||
import java
|
||||
import utils.test.AstCfg
|
||||
|
||||
from ControlFlowNode n, ControlFlowNode succ
|
||||
where
|
||||
succ = n.getASuccessor() and
|
||||
succ = getAnAstSuccessor(n) and
|
||||
n.getLocation().getFile().getExtension() = "java" and
|
||||
not n.getLocation().getFile().getStem() = "PopulateRuntimeException"
|
||||
select n, succ
|
||||
|
||||
@@ -1,2 +0,0 @@
|
||||
| SaveFileTest.java:18:7:18:26 | startsWith(...) | SaveFileTest.java:24:3:24:33 | var ...; |
|
||||
| SaveFileTest.java:34:11:34:54 | ... != ... | SaveFileTest.java:39:4:40:41 | <Expr>; |
|
||||
@@ -1,4 +0,0 @@
|
||||
import java
|
||||
|
||||
from ConditionNode c
|
||||
select c, c.getAFalseSuccessor()
|
||||
@@ -1,7 +1,8 @@
|
||||
| SaveFileTest.java:11:14:11:25 | Exceptional Exit | SaveFileTest.java:11:14:11:25 | Exit |
|
||||
| SaveFileTest.java:11:14:11:25 | Entry | SaveFileTest.java:11:14:11:25 | { ... } |
|
||||
| SaveFileTest.java:11:14:11:25 | Normal Exit | SaveFileTest.java:11:14:11:25 | Exit |
|
||||
| SaveFileTest.java:11:14:11:25 | super(...) | SaveFileTest.java:11:14:11:25 | Normal Exit |
|
||||
| SaveFileTest.java:11:14:11:25 | { ... } | SaveFileTest.java:11:14:11:25 | super(...) |
|
||||
| SaveFileTest.java:12:14:12:21 | Entry | SaveFileTest.java:15:2:55:2 | { ... } |
|
||||
| SaveFileTest.java:12:14:12:21 | Exceptional Exit | SaveFileTest.java:12:14:12:21 | Exit |
|
||||
| SaveFileTest.java:12:14:12:21 | Normal Exit | SaveFileTest.java:12:14:12:21 | Exit |
|
||||
| SaveFileTest.java:15:2:55:2 | { ... } | SaveFileTest.java:17:3:17:25 | var ...; |
|
||||
@@ -14,8 +15,9 @@
|
||||
| SaveFileTest.java:18:7:18:26 | startsWith(...) | SaveFileTest.java:24:3:24:33 | var ...; |
|
||||
| SaveFileTest.java:18:23:18:25 | "/" | SaveFileTest.java:18:7:18:26 | startsWith(...) |
|
||||
| SaveFileTest.java:19:3:21:3 | { ... } | SaveFileTest.java:20:4:20:32 | <Expr>; |
|
||||
| SaveFileTest.java:20:4:20:11 | savePath | SaveFileTest.java:20:15:20:18 | path |
|
||||
| SaveFileTest.java:20:4:20:31 | ...=... | SaveFileTest.java:24:3:24:33 | var ...; |
|
||||
| SaveFileTest.java:20:4:20:32 | <Expr>; | SaveFileTest.java:20:15:20:18 | path |
|
||||
| SaveFileTest.java:20:4:20:32 | <Expr>; | SaveFileTest.java:20:4:20:11 | savePath |
|
||||
| SaveFileTest.java:20:15:20:18 | path | SaveFileTest.java:20:30:20:30 | 1 |
|
||||
| SaveFileTest.java:20:15:20:31 | substring(...) | SaveFileTest.java:20:4:20:31 | ...=... |
|
||||
| SaveFileTest.java:20:30:20:30 | 1 | SaveFileTest.java:20:15:20:31 | substring(...) |
|
||||
@@ -44,20 +46,20 @@
|
||||
| SaveFileTest.java:30:22:30:25 | null | SaveFileTest.java:30:16:30:25 | bos |
|
||||
| SaveFileTest.java:31:3:53:3 | try ... | SaveFileTest.java:32:3:41:3 | { ... } |
|
||||
| SaveFileTest.java:32:3:41:3 | { ... } | SaveFileTest.java:33:4:33:40 | <Expr>; |
|
||||
| SaveFileTest.java:33:4:33:6 | bos | SaveFileTest.java:33:31:33:38 | saveFile |
|
||||
| SaveFileTest.java:33:4:33:39 | ...=... | SaveFileTest.java:34:4:34:55 | while (...) |
|
||||
| SaveFileTest.java:33:4:33:40 | <Expr>; | SaveFileTest.java:33:31:33:38 | saveFile |
|
||||
| SaveFileTest.java:33:4:33:40 | <Expr>; | SaveFileTest.java:33:4:33:6 | bos |
|
||||
| SaveFileTest.java:33:10:33:39 | new FileOutputStream(...) | SaveFileTest.java:33:4:33:39 | ...=... |
|
||||
| SaveFileTest.java:33:10:33:39 | new FileOutputStream(...) | SaveFileTest.java:41:5:41:23 | catch (...) |
|
||||
| SaveFileTest.java:33:10:33:39 | new FileOutputStream(...) | SaveFileTest.java:45:3:53:3 | { ... } |
|
||||
| SaveFileTest.java:33:31:33:38 | saveFile | SaveFileTest.java:33:10:33:39 | new FileOutputStream(...) |
|
||||
| SaveFileTest.java:34:4:34:55 | while (...) | SaveFileTest.java:34:24:34:25 | is |
|
||||
| SaveFileTest.java:34:4:34:55 | while (...) | SaveFileTest.java:34:12:34:20 | bytesRead |
|
||||
| SaveFileTest.java:34:11:34:54 | ... != ... | SaveFileTest.java:35:4:37:4 | { ... } |
|
||||
| SaveFileTest.java:34:11:34:54 | ... != ... | SaveFileTest.java:39:4:40:41 | <Expr>; |
|
||||
| SaveFileTest.java:34:12:34:20 | bytesRead | SaveFileTest.java:34:24:34:25 | is |
|
||||
| SaveFileTest.java:34:12:34:47 | ...=... | SaveFileTest.java:34:54:34:54 | 1 |
|
||||
| SaveFileTest.java:34:24:34:25 | is | SaveFileTest.java:34:32:34:37 | buffer |
|
||||
| SaveFileTest.java:34:24:34:47 | read(...) | SaveFileTest.java:34:12:34:47 | ...=... |
|
||||
| SaveFileTest.java:34:24:34:47 | read(...) | SaveFileTest.java:41:5:41:23 | catch (...) |
|
||||
| SaveFileTest.java:34:24:34:47 | read(...) | SaveFileTest.java:45:3:53:3 | { ... } |
|
||||
| SaveFileTest.java:34:32:34:37 | buffer | SaveFileTest.java:34:40:34:40 | 0 |
|
||||
| SaveFileTest.java:34:40:34:40 | 0 | SaveFileTest.java:34:43:34:46 | 8192 |
|
||||
| SaveFileTest.java:34:43:34:46 | 8192 | SaveFileTest.java:34:24:34:47 | read(...) |
|
||||
@@ -65,9 +67,8 @@
|
||||
| SaveFileTest.java:34:54:34:54 | 1 | SaveFileTest.java:34:53:34:54 | -... |
|
||||
| SaveFileTest.java:35:4:37:4 | { ... } | SaveFileTest.java:36:5:36:36 | <Expr>; |
|
||||
| SaveFileTest.java:36:5:36:7 | bos | SaveFileTest.java:36:15:36:20 | buffer |
|
||||
| SaveFileTest.java:36:5:36:35 | write(...) | SaveFileTest.java:34:24:34:25 | is |
|
||||
| SaveFileTest.java:36:5:36:35 | write(...) | SaveFileTest.java:34:12:34:20 | bytesRead |
|
||||
| SaveFileTest.java:36:5:36:35 | write(...) | SaveFileTest.java:41:5:41:23 | catch (...) |
|
||||
| SaveFileTest.java:36:5:36:35 | write(...) | SaveFileTest.java:45:3:53:3 | { ... } |
|
||||
| SaveFileTest.java:36:5:36:36 | <Expr>; | SaveFileTest.java:36:5:36:7 | bos |
|
||||
| SaveFileTest.java:36:15:36:20 | buffer | SaveFileTest.java:36:23:36:23 | 0 |
|
||||
| SaveFileTest.java:36:23:36:23 | 0 | SaveFileTest.java:36:26:36:34 | bytesRead |
|
||||
@@ -82,7 +83,6 @@
|
||||
| SaveFileTest.java:40:8:40:15 | saveFile | SaveFileTest.java:40:8:40:33 | getAbsolutePath(...) |
|
||||
| SaveFileTest.java:40:8:40:33 | getAbsolutePath(...) | SaveFileTest.java:39:23:40:33 | ... + ... |
|
||||
| SaveFileTest.java:40:8:40:33 | getAbsolutePath(...) | SaveFileTest.java:41:5:41:23 | catch (...) |
|
||||
| SaveFileTest.java:40:8:40:33 | getAbsolutePath(...) | SaveFileTest.java:45:3:53:3 | { ... } |
|
||||
| SaveFileTest.java:40:37:40:39 | "]" | SaveFileTest.java:39:23:40:39 | ... + ... |
|
||||
| SaveFileTest.java:41:5:41:23 | catch (...) | SaveFileTest.java:41:22:41:22 | e |
|
||||
| SaveFileTest.java:41:22:41:22 | e | SaveFileTest.java:42:3:44:3 | { ... } |
|
||||
|
||||
@@ -1,8 +1,9 @@
|
||||
import java
|
||||
import utils.test.AstCfg
|
||||
|
||||
from ControlFlowNode n, ControlFlowNode succ
|
||||
where
|
||||
succ = n.getASuccessor() and
|
||||
succ = getAnAstSuccessor(n) and
|
||||
n.getLocation().getFile().getExtension() = "java" and
|
||||
not n.getLocation().getFile().getStem() = "PopulateRuntimeException"
|
||||
select n, succ
|
||||
|
||||
@@ -1,6 +0,0 @@
|
||||
| SchackTest.java:8:9:8:12 | ... == ... | SchackTest.java:10:5:10:13 | if (...) |
|
||||
| SchackTest.java:10:9:10:12 | ... == ... | SchackTest.java:12:14:15:4 | { ... } |
|
||||
| SchackTest.java:13:9:13:13 | bar(...) | SchackTest.java:16:4:16:41 | <Expr>; |
|
||||
| SchackTest.java:13:9:13:13 | bar(...) | SchackTest.java:17:5:17:17 | catch (...) |
|
||||
| SchackTest.java:13:9:13:13 | bar(...) | SchackTest.java:21:13:23:3 | { ... } |
|
||||
| SchackTest.java:27:7:27:24 | ... > ... | SchackTest.java:29:10:29:22 | random(...) |
|
||||
@@ -1,4 +0,0 @@
|
||||
import java
|
||||
|
||||
from ConditionNode c
|
||||
select c, c.getAFalseSuccessor()
|
||||
@@ -1,15 +1,16 @@
|
||||
| SchackTest.java:1:14:1:23 | Exceptional Exit | SchackTest.java:1:14:1:23 | Exit |
|
||||
| SchackTest.java:1:14:1:23 | Entry | SchackTest.java:1:14:1:23 | { ... } |
|
||||
| SchackTest.java:1:14:1:23 | Normal Exit | SchackTest.java:1:14:1:23 | Exit |
|
||||
| SchackTest.java:1:14:1:23 | super(...) | SchackTest.java:1:14:1:23 | Normal Exit |
|
||||
| SchackTest.java:1:14:1:23 | { ... } | SchackTest.java:1:14:1:23 | super(...) |
|
||||
| SchackTest.java:2:8:2:10 | Exceptional Exit | SchackTest.java:2:8:2:10 | Exit |
|
||||
| SchackTest.java:2:8:2:10 | Entry | SchackTest.java:2:8:2:10 | { ... } |
|
||||
| SchackTest.java:2:8:2:10 | Normal Exit | SchackTest.java:2:8:2:10 | Exit |
|
||||
| SchackTest.java:2:8:2:10 | super(...) | SchackTest.java:2:8:2:10 | Normal Exit |
|
||||
| SchackTest.java:2:8:2:10 | { ... } | SchackTest.java:2:8:2:10 | super(...) |
|
||||
| SchackTest.java:3:8:3:10 | Exceptional Exit | SchackTest.java:3:8:3:10 | Exit |
|
||||
| SchackTest.java:3:8:3:10 | Entry | SchackTest.java:3:8:3:10 | { ... } |
|
||||
| SchackTest.java:3:8:3:10 | Normal Exit | SchackTest.java:3:8:3:10 | Exit |
|
||||
| SchackTest.java:3:8:3:10 | super(...) | SchackTest.java:3:8:3:10 | Normal Exit |
|
||||
| SchackTest.java:3:8:3:10 | { ... } | SchackTest.java:3:8:3:10 | super(...) |
|
||||
| SchackTest.java:5:7:5:9 | Entry | SchackTest.java:5:18:24:2 | { ... } |
|
||||
| SchackTest.java:5:7:5:9 | Exceptional Exit | SchackTest.java:5:7:5:9 | Exit |
|
||||
| SchackTest.java:5:7:5:9 | Normal Exit | SchackTest.java:5:7:5:9 | Exit |
|
||||
| SchackTest.java:5:18:24:2 | { ... } | SchackTest.java:6:3:23:3 | try ... |
|
||||
@@ -36,7 +37,6 @@
|
||||
| SchackTest.java:13:9:13:13 | bar(...) | SchackTest.java:14:6:14:42 | <Expr>; |
|
||||
| SchackTest.java:13:9:13:13 | bar(...) | SchackTest.java:16:4:16:41 | <Expr>; |
|
||||
| SchackTest.java:13:9:13:13 | bar(...) | SchackTest.java:17:5:17:17 | catch (...) |
|
||||
| SchackTest.java:13:9:13:13 | bar(...) | SchackTest.java:19:5:19:17 | catch (...) |
|
||||
| SchackTest.java:13:9:13:13 | bar(...) | SchackTest.java:21:13:23:3 | { ... } |
|
||||
| SchackTest.java:14:6:14:15 | System.out | SchackTest.java:14:25:14:40 | "true successor" |
|
||||
| SchackTest.java:14:6:14:41 | println(...) | SchackTest.java:16:4:16:41 | <Expr>; |
|
||||
@@ -45,10 +45,12 @@
|
||||
| SchackTest.java:14:6:14:42 | <Expr>; | SchackTest.java:14:6:14:15 | System.out |
|
||||
| SchackTest.java:14:25:14:40 | "true successor" | SchackTest.java:14:6:14:41 | println(...) |
|
||||
| SchackTest.java:16:4:16:13 | System.out | SchackTest.java:16:23:16:39 | "false successor" |
|
||||
| SchackTest.java:16:4:16:40 | println(...) | SchackTest.java:17:5:17:17 | catch (...) |
|
||||
| SchackTest.java:16:4:16:40 | println(...) | SchackTest.java:21:13:23:3 | { ... } |
|
||||
| SchackTest.java:16:4:16:41 | <Expr>; | SchackTest.java:16:4:16:13 | System.out |
|
||||
| SchackTest.java:16:23:16:39 | "false successor" | SchackTest.java:16:4:16:40 | println(...) |
|
||||
| SchackTest.java:17:5:17:17 | catch (...) | SchackTest.java:17:16:17:16 | e |
|
||||
| SchackTest.java:17:5:17:17 | catch (...) | SchackTest.java:19:5:19:17 | catch (...) |
|
||||
| SchackTest.java:17:16:17:16 | e | SchackTest.java:17:19:19:3 | { ... } |
|
||||
| SchackTest.java:17:19:19:3 | { ... } | SchackTest.java:18:4:18:41 | <Expr>; |
|
||||
| SchackTest.java:18:4:18:13 | System.out | SchackTest.java:18:23:18:39 | "false successor" |
|
||||
@@ -56,6 +58,7 @@
|
||||
| SchackTest.java:18:4:18:41 | <Expr>; | SchackTest.java:18:4:18:13 | System.out |
|
||||
| SchackTest.java:18:23:18:39 | "false successor" | SchackTest.java:18:4:18:40 | println(...) |
|
||||
| SchackTest.java:19:5:19:17 | catch (...) | SchackTest.java:19:16:19:16 | e |
|
||||
| SchackTest.java:19:5:19:17 | catch (...) | SchackTest.java:21:13:23:3 | { ... } |
|
||||
| SchackTest.java:19:16:19:16 | e | SchackTest.java:19:19:21:3 | { ... } |
|
||||
| SchackTest.java:19:19:21:3 | { ... } | SchackTest.java:20:4:20:74 | <Expr>; |
|
||||
| SchackTest.java:20:4:20:13 | System.out | SchackTest.java:20:23:20:72 | "successor (but neither true nor false successor)" |
|
||||
@@ -68,6 +71,7 @@
|
||||
| SchackTest.java:22:4:22:40 | println(...) | SchackTest.java:5:7:5:9 | Normal Exit |
|
||||
| SchackTest.java:22:4:22:41 | <Expr>; | SchackTest.java:22:4:22:13 | System.out |
|
||||
| SchackTest.java:22:23:22:39 | "false successor" | SchackTest.java:22:4:22:40 | println(...) |
|
||||
| SchackTest.java:26:18:26:20 | Entry | SchackTest.java:26:35:30:2 | { ... } |
|
||||
| SchackTest.java:26:18:26:20 | Exceptional Exit | SchackTest.java:26:18:26:20 | Exit |
|
||||
| SchackTest.java:26:18:26:20 | Normal Exit | SchackTest.java:26:18:26:20 | Exit |
|
||||
| SchackTest.java:26:35:30:2 | { ... } | SchackTest.java:27:3:27:25 | if (...) |
|
||||
|
||||
@@ -1,8 +1,9 @@
|
||||
import java
|
||||
import utils.test.AstCfg
|
||||
|
||||
from ControlFlowNode n, ControlFlowNode succ
|
||||
where
|
||||
succ = n.getASuccessor() and
|
||||
succ = getAnAstSuccessor(n) and
|
||||
n.getLocation().getFile().getExtension() = "java" and
|
||||
not n.getLocation().getFile().getStem() = "PopulateRuntimeException"
|
||||
select n, succ
|
||||
|
||||
@@ -1,5 +0,0 @@
|
||||
| TestBreak.java:12:9:12:14 | ... == ... | TestBreak.java:16:5:27:5 | { ... } |
|
||||
| TestBreak.java:19:11:19:16 | ... == ... | TestBreak.java:23:7:25:7 | { ... } |
|
||||
| TestBreak.java:32:8:32:13 | ... == ... | TestBreak.java:36:4:46:4 | { ... } |
|
||||
| TestBreak.java:39:10:39:15 | ... == ... | TestBreak.java:43:6:43:15 | <Expr>; |
|
||||
| TestBreak.java:44:14:44:19 | ... == ... | TestBreak.java:45:5:45:11 | <Expr>; |
|
||||
@@ -1,4 +0,0 @@
|
||||
import java
|
||||
|
||||
from ConditionNode c
|
||||
select c, c.getAFalseSuccessor()
|
||||
@@ -1,8 +1,8 @@
|
||||
| TestBreak.java:3:14:3:22 | Exceptional Exit | TestBreak.java:3:14:3:22 | Exit |
|
||||
| TestBreak.java:3:14:3:22 | Entry | TestBreak.java:3:14:3:22 | { ... } |
|
||||
| TestBreak.java:3:14:3:22 | Normal Exit | TestBreak.java:3:14:3:22 | Exit |
|
||||
| TestBreak.java:3:14:3:22 | super(...) | TestBreak.java:3:14:3:22 | Normal Exit |
|
||||
| TestBreak.java:3:14:3:22 | { ... } | TestBreak.java:3:14:3:22 | super(...) |
|
||||
| TestBreak.java:4:14:4:14 | Exceptional Exit | TestBreak.java:4:14:4:14 | Exit |
|
||||
| TestBreak.java:4:14:4:14 | Entry | TestBreak.java:5:2:85:2 | { ... } |
|
||||
| TestBreak.java:4:14:4:14 | Normal Exit | TestBreak.java:4:14:4:14 | Exit |
|
||||
| TestBreak.java:5:2:85:2 | { ... } | TestBreak.java:7:3:8:11 | <Label>: ... |
|
||||
| TestBreak.java:7:3:8:11 | <Label>: ... | TestBreak.java:8:4:8:11 | for (...;...;...) |
|
||||
@@ -11,8 +11,9 @@
|
||||
| TestBreak.java:10:5:10:14 | var ...; | TestBreak.java:10:13:10:13 | 1 |
|
||||
| TestBreak.java:10:9:10:13 | x | TestBreak.java:11:5:11:14 | <Expr>; |
|
||||
| TestBreak.java:10:13:10:13 | 1 | TestBreak.java:10:9:10:13 | x |
|
||||
| TestBreak.java:11:5:11:5 | x | TestBreak.java:11:9:11:9 | x |
|
||||
| TestBreak.java:11:5:11:13 | ...=... | TestBreak.java:12:5:12:15 | if (...) |
|
||||
| TestBreak.java:11:5:11:14 | <Expr>; | TestBreak.java:11:9:11:9 | x |
|
||||
| TestBreak.java:11:5:11:14 | <Expr>; | TestBreak.java:11:5:11:5 | x |
|
||||
| TestBreak.java:11:9:11:9 | x | TestBreak.java:11:13:11:13 | 1 |
|
||||
| TestBreak.java:11:9:11:13 | ... + ... | TestBreak.java:11:5:11:13 | ...=... |
|
||||
| TestBreak.java:11:13:11:13 | 1 | TestBreak.java:11:9:11:13 | ... + ... |
|
||||
@@ -62,8 +63,9 @@
|
||||
| TestBreak.java:39:15:39:15 | 2 | TestBreak.java:39:10:39:15 | ... == ... |
|
||||
| TestBreak.java:40:6:42:6 | { ... } | TestBreak.java:41:7:41:12 | break |
|
||||
| TestBreak.java:41:7:41:12 | break | TestBreak.java:45:5:45:11 | <Expr>; |
|
||||
| TestBreak.java:43:6:43:6 | y | TestBreak.java:43:10:43:10 | y |
|
||||
| TestBreak.java:43:6:43:14 | ...=... | TestBreak.java:44:14:44:14 | y |
|
||||
| TestBreak.java:43:6:43:15 | <Expr>; | TestBreak.java:43:10:43:10 | y |
|
||||
| TestBreak.java:43:6:43:15 | <Expr>; | TestBreak.java:43:6:43:6 | y |
|
||||
| TestBreak.java:43:10:43:10 | y | TestBreak.java:43:14:43:14 | 2 |
|
||||
| TestBreak.java:43:10:43:14 | ... + ... | TestBreak.java:43:6:43:14 | ...=... |
|
||||
| TestBreak.java:43:14:43:14 | 2 | TestBreak.java:43:10:43:14 | ... + ... |
|
||||
@@ -71,89 +73,111 @@
|
||||
| TestBreak.java:44:14:44:19 | ... == ... | TestBreak.java:38:5:44:5 | { ... } |
|
||||
| TestBreak.java:44:14:44:19 | ... == ... | TestBreak.java:45:5:45:11 | <Expr>; |
|
||||
| TestBreak.java:44:19:44:19 | 1 | TestBreak.java:44:14:44:19 | ... == ... |
|
||||
| TestBreak.java:45:5:45:5 | y | TestBreak.java:45:9:45:10 | 12 |
|
||||
| TestBreak.java:45:5:45:10 | ...=... | TestBreak.java:30:10:30:13 | true |
|
||||
| TestBreak.java:45:5:45:11 | <Expr>; | TestBreak.java:45:9:45:10 | 12 |
|
||||
| TestBreak.java:45:5:45:11 | <Expr>; | TestBreak.java:45:5:45:5 | y |
|
||||
| TestBreak.java:45:9:45:10 | 12 | TestBreak.java:45:5:45:10 | ...=... |
|
||||
| TestBreak.java:48:3:48:3 | y | TestBreak.java:48:7:48:8 | 13 |
|
||||
| TestBreak.java:48:3:48:8 | ...=... | TestBreak.java:51:3:51:12 | var ...; |
|
||||
| TestBreak.java:48:3:48:9 | <Expr>; | TestBreak.java:48:7:48:8 | 13 |
|
||||
| TestBreak.java:48:3:48:9 | <Expr>; | TestBreak.java:48:3:48:3 | y |
|
||||
| TestBreak.java:48:7:48:8 | 13 | TestBreak.java:48:3:48:8 | ...=... |
|
||||
| TestBreak.java:51:3:51:12 | var ...; | TestBreak.java:51:10:51:11 | 12 |
|
||||
| TestBreak.java:51:7:51:11 | x | TestBreak.java:52:3:52:12 | switch (...) |
|
||||
| TestBreak.java:51:10:51:11 | 12 | TestBreak.java:51:7:51:11 | x |
|
||||
| TestBreak.java:52:3:52:12 | switch (...) | TestBreak.java:52:11:52:11 | x |
|
||||
| TestBreak.java:52:11:52:11 | x | TestBreak.java:54:3:54:9 | case ... |
|
||||
| TestBreak.java:52:11:52:11 | x | TestBreak.java:57:3:57:9 | case ... |
|
||||
| TestBreak.java:52:11:52:11 | x | TestBreak.java:61:3:61:9 | case ... |
|
||||
| TestBreak.java:52:11:52:11 | x | TestBreak.java:62:3:62:9 | case ... |
|
||||
| TestBreak.java:52:11:52:11 | x | TestBreak.java:66:3:66:9 | case ... |
|
||||
| TestBreak.java:52:11:52:11 | x | TestBreak.java:67:3:67:9 | case ... |
|
||||
| TestBreak.java:52:11:52:11 | x | TestBreak.java:70:3:70:10 | default |
|
||||
| TestBreak.java:54:3:54:9 | case ... | TestBreak.java:55:4:55:13 | <Expr>; |
|
||||
| TestBreak.java:54:3:54:9 | case ... | TestBreak.java:54:8:54:8 | 1 |
|
||||
| TestBreak.java:54:3:54:9 | case ... | TestBreak.java:57:3:57:9 | case ... |
|
||||
| TestBreak.java:54:8:54:8 | 1 | TestBreak.java:55:4:55:13 | <Expr>; |
|
||||
| TestBreak.java:55:4:55:4 | x | TestBreak.java:55:8:55:8 | x |
|
||||
| TestBreak.java:55:4:55:12 | ...=... | TestBreak.java:56:4:56:13 | <Expr>; |
|
||||
| TestBreak.java:55:4:55:13 | <Expr>; | TestBreak.java:55:8:55:8 | x |
|
||||
| TestBreak.java:55:4:55:13 | <Expr>; | TestBreak.java:55:4:55:4 | x |
|
||||
| TestBreak.java:55:8:55:8 | x | TestBreak.java:55:12:55:12 | 1 |
|
||||
| TestBreak.java:55:8:55:12 | ... + ... | TestBreak.java:55:4:55:12 | ...=... |
|
||||
| TestBreak.java:55:12:55:12 | 1 | TestBreak.java:55:8:55:12 | ... + ... |
|
||||
| TestBreak.java:56:4:56:12 | ...=... | TestBreak.java:57:3:57:9 | case ... |
|
||||
| TestBreak.java:56:4:56:13 | <Expr>; | TestBreak.java:56:8:56:8 | y |
|
||||
| TestBreak.java:56:4:56:4 | y | TestBreak.java:56:8:56:8 | y |
|
||||
| TestBreak.java:56:4:56:12 | ...=... | TestBreak.java:58:4:58:13 | <Expr>; |
|
||||
| TestBreak.java:56:4:56:13 | <Expr>; | TestBreak.java:56:4:56:4 | y |
|
||||
| TestBreak.java:56:8:56:8 | y | TestBreak.java:56:12:56:12 | 1 |
|
||||
| TestBreak.java:56:8:56:12 | ... + ... | TestBreak.java:56:4:56:12 | ...=... |
|
||||
| TestBreak.java:56:12:56:12 | 1 | TestBreak.java:56:8:56:12 | ... + ... |
|
||||
| TestBreak.java:57:3:57:9 | case ... | TestBreak.java:58:4:58:13 | <Expr>; |
|
||||
| TestBreak.java:57:3:57:9 | case ... | TestBreak.java:57:8:57:8 | 2 |
|
||||
| TestBreak.java:57:3:57:9 | case ... | TestBreak.java:61:3:61:9 | case ... |
|
||||
| TestBreak.java:57:8:57:8 | 2 | TestBreak.java:58:4:58:13 | <Expr>; |
|
||||
| TestBreak.java:58:4:58:4 | x | TestBreak.java:58:8:58:8 | x |
|
||||
| TestBreak.java:58:4:58:12 | ...=... | TestBreak.java:59:4:59:13 | <Expr>; |
|
||||
| TestBreak.java:58:4:58:13 | <Expr>; | TestBreak.java:58:8:58:8 | x |
|
||||
| TestBreak.java:58:4:58:13 | <Expr>; | TestBreak.java:58:4:58:4 | x |
|
||||
| TestBreak.java:58:8:58:8 | x | TestBreak.java:58:12:58:12 | 2 |
|
||||
| TestBreak.java:58:8:58:12 | ... + ... | TestBreak.java:58:4:58:12 | ...=... |
|
||||
| TestBreak.java:58:12:58:12 | 2 | TestBreak.java:58:8:58:12 | ... + ... |
|
||||
| TestBreak.java:59:4:59:4 | y | TestBreak.java:59:8:59:8 | y |
|
||||
| TestBreak.java:59:4:59:12 | ...=... | TestBreak.java:60:4:60:9 | break |
|
||||
| TestBreak.java:59:4:59:13 | <Expr>; | TestBreak.java:59:8:59:8 | y |
|
||||
| TestBreak.java:59:4:59:13 | <Expr>; | TestBreak.java:59:4:59:4 | y |
|
||||
| TestBreak.java:59:8:59:8 | y | TestBreak.java:59:12:59:12 | 2 |
|
||||
| TestBreak.java:59:8:59:12 | ... + ... | TestBreak.java:59:4:59:12 | ...=... |
|
||||
| TestBreak.java:59:12:59:12 | 2 | TestBreak.java:59:8:59:12 | ... + ... |
|
||||
| TestBreak.java:60:4:60:9 | break | TestBreak.java:76:3:76:11 | switch (...) |
|
||||
| TestBreak.java:61:3:61:9 | case ... | TestBreak.java:61:8:61:8 | 3 |
|
||||
| TestBreak.java:61:3:61:9 | case ... | TestBreak.java:62:3:62:9 | case ... |
|
||||
| TestBreak.java:62:3:62:9 | case ... | TestBreak.java:63:4:63:13 | <Expr>; |
|
||||
| TestBreak.java:61:8:61:8 | 3 | TestBreak.java:63:4:63:13 | <Expr>; |
|
||||
| TestBreak.java:62:3:62:9 | case ... | TestBreak.java:62:8:62:8 | 4 |
|
||||
| TestBreak.java:62:3:62:9 | case ... | TestBreak.java:66:3:66:9 | case ... |
|
||||
| TestBreak.java:62:8:62:8 | 4 | TestBreak.java:63:4:63:13 | <Expr>; |
|
||||
| TestBreak.java:63:4:63:4 | x | TestBreak.java:63:8:63:8 | x |
|
||||
| TestBreak.java:63:4:63:12 | ...=... | TestBreak.java:64:4:64:13 | <Expr>; |
|
||||
| TestBreak.java:63:4:63:13 | <Expr>; | TestBreak.java:63:8:63:8 | x |
|
||||
| TestBreak.java:63:4:63:13 | <Expr>; | TestBreak.java:63:4:63:4 | x |
|
||||
| TestBreak.java:63:8:63:8 | x | TestBreak.java:63:12:63:12 | 3 |
|
||||
| TestBreak.java:63:8:63:12 | ... + ... | TestBreak.java:63:4:63:12 | ...=... |
|
||||
| TestBreak.java:63:12:63:12 | 3 | TestBreak.java:63:8:63:12 | ... + ... |
|
||||
| TestBreak.java:64:4:64:4 | y | TestBreak.java:64:8:64:8 | y |
|
||||
| TestBreak.java:64:4:64:12 | ...=... | TestBreak.java:65:4:65:9 | break |
|
||||
| TestBreak.java:64:4:64:13 | <Expr>; | TestBreak.java:64:8:64:8 | y |
|
||||
| TestBreak.java:64:4:64:13 | <Expr>; | TestBreak.java:64:4:64:4 | y |
|
||||
| TestBreak.java:64:8:64:8 | y | TestBreak.java:64:12:64:12 | 4 |
|
||||
| TestBreak.java:64:8:64:12 | ... + ... | TestBreak.java:64:4:64:12 | ...=... |
|
||||
| TestBreak.java:64:12:64:12 | 4 | TestBreak.java:64:8:64:12 | ... + ... |
|
||||
| TestBreak.java:65:4:65:9 | break | TestBreak.java:76:3:76:11 | switch (...) |
|
||||
| TestBreak.java:66:3:66:9 | case ... | TestBreak.java:66:8:66:8 | 5 |
|
||||
| TestBreak.java:66:3:66:9 | case ... | TestBreak.java:67:3:67:9 | case ... |
|
||||
| TestBreak.java:67:3:67:9 | case ... | TestBreak.java:68:4:68:13 | <Expr>; |
|
||||
| TestBreak.java:66:8:66:8 | 5 | TestBreak.java:68:4:68:13 | <Expr>; |
|
||||
| TestBreak.java:67:3:67:9 | case ... | TestBreak.java:67:8:67:8 | 6 |
|
||||
| TestBreak.java:67:3:67:9 | case ... | TestBreak.java:70:3:70:10 | default |
|
||||
| TestBreak.java:67:8:67:8 | 6 | TestBreak.java:68:4:68:13 | <Expr>; |
|
||||
| TestBreak.java:68:4:68:4 | x | TestBreak.java:68:8:68:8 | x |
|
||||
| TestBreak.java:68:4:68:12 | ...=... | TestBreak.java:69:4:69:13 | <Expr>; |
|
||||
| TestBreak.java:68:4:68:13 | <Expr>; | TestBreak.java:68:8:68:8 | x |
|
||||
| TestBreak.java:68:4:68:13 | <Expr>; | TestBreak.java:68:4:68:4 | x |
|
||||
| TestBreak.java:68:8:68:8 | x | TestBreak.java:68:12:68:12 | 5 |
|
||||
| TestBreak.java:68:8:68:12 | ... + ... | TestBreak.java:68:4:68:12 | ...=... |
|
||||
| TestBreak.java:68:12:68:12 | 5 | TestBreak.java:68:8:68:12 | ... + ... |
|
||||
| TestBreak.java:69:4:69:12 | ...=... | TestBreak.java:70:3:70:10 | default |
|
||||
| TestBreak.java:69:4:69:13 | <Expr>; | TestBreak.java:69:8:69:8 | y |
|
||||
| TestBreak.java:69:4:69:4 | y | TestBreak.java:69:8:69:8 | y |
|
||||
| TestBreak.java:69:4:69:12 | ...=... | TestBreak.java:71:4:71:9 | <Expr>; |
|
||||
| TestBreak.java:69:4:69:13 | <Expr>; | TestBreak.java:69:4:69:4 | y |
|
||||
| TestBreak.java:69:8:69:8 | y | TestBreak.java:69:12:69:12 | 6 |
|
||||
| TestBreak.java:69:8:69:12 | ... + ... | TestBreak.java:69:4:69:12 | ...=... |
|
||||
| TestBreak.java:69:12:69:12 | 6 | TestBreak.java:69:8:69:12 | ... + ... |
|
||||
| TestBreak.java:70:3:70:10 | default | TestBreak.java:71:4:71:9 | <Expr>; |
|
||||
| TestBreak.java:71:4:71:4 | x | TestBreak.java:71:8:71:8 | y |
|
||||
| TestBreak.java:71:4:71:8 | ...=... | TestBreak.java:72:4:72:9 | <Expr>; |
|
||||
| TestBreak.java:71:4:71:9 | <Expr>; | TestBreak.java:71:8:71:8 | y |
|
||||
| TestBreak.java:71:4:71:9 | <Expr>; | TestBreak.java:71:4:71:4 | x |
|
||||
| TestBreak.java:71:8:71:8 | y | TestBreak.java:71:4:71:8 | ...=... |
|
||||
| TestBreak.java:72:4:72:4 | y | TestBreak.java:72:8:72:8 | x |
|
||||
| TestBreak.java:72:4:72:8 | ...=... | TestBreak.java:76:3:76:11 | switch (...) |
|
||||
| TestBreak.java:72:4:72:9 | <Expr>; | TestBreak.java:72:8:72:8 | x |
|
||||
| TestBreak.java:72:4:72:9 | <Expr>; | TestBreak.java:72:4:72:4 | y |
|
||||
| TestBreak.java:72:8:72:8 | x | TestBreak.java:72:4:72:8 | ...=... |
|
||||
| TestBreak.java:76:3:76:11 | switch (...) | TestBreak.java:76:10:76:10 | x |
|
||||
| TestBreak.java:76:10:76:10 | x | TestBreak.java:4:14:4:14 | Normal Exit |
|
||||
| TestBreak.java:76:10:76:10 | x | TestBreak.java:78:3:78:9 | case ... |
|
||||
| TestBreak.java:76:10:76:10 | x | TestBreak.java:81:3:81:9 | case ... |
|
||||
| TestBreak.java:78:3:78:9 | case ... | TestBreak.java:79:4:79:9 | <Expr>; |
|
||||
| TestBreak.java:78:3:78:9 | case ... | TestBreak.java:78:8:78:8 | 1 |
|
||||
| TestBreak.java:78:3:78:9 | case ... | TestBreak.java:81:3:81:9 | case ... |
|
||||
| TestBreak.java:78:8:78:8 | 1 | TestBreak.java:79:4:79:9 | <Expr>; |
|
||||
| TestBreak.java:79:4:79:4 | x | TestBreak.java:79:8:79:8 | 1 |
|
||||
| TestBreak.java:79:4:79:8 | ...=... | TestBreak.java:80:4:80:9 | break |
|
||||
| TestBreak.java:79:4:79:9 | <Expr>; | TestBreak.java:79:8:79:8 | 1 |
|
||||
| TestBreak.java:79:4:79:9 | <Expr>; | TestBreak.java:79:4:79:4 | x |
|
||||
| TestBreak.java:79:8:79:8 | 1 | TestBreak.java:79:4:79:8 | ...=... |
|
||||
| TestBreak.java:80:4:80:9 | break | TestBreak.java:4:14:4:14 | Normal Exit |
|
||||
| TestBreak.java:81:3:81:9 | case ... | TestBreak.java:82:4:82:9 | <Expr>; |
|
||||
| TestBreak.java:81:3:81:9 | case ... | TestBreak.java:4:14:4:14 | Normal Exit |
|
||||
| TestBreak.java:81:3:81:9 | case ... | TestBreak.java:81:8:81:8 | 2 |
|
||||
| TestBreak.java:81:8:81:8 | 2 | TestBreak.java:82:4:82:9 | <Expr>; |
|
||||
| TestBreak.java:82:4:82:4 | x | TestBreak.java:82:8:82:8 | 2 |
|
||||
| TestBreak.java:82:4:82:8 | ...=... | TestBreak.java:83:4:83:9 | break |
|
||||
| TestBreak.java:82:4:82:9 | <Expr>; | TestBreak.java:82:8:82:8 | 2 |
|
||||
| TestBreak.java:82:4:82:9 | <Expr>; | TestBreak.java:82:4:82:4 | x |
|
||||
| TestBreak.java:82:8:82:8 | 2 | TestBreak.java:82:4:82:8 | ...=... |
|
||||
| TestBreak.java:83:4:83:9 | break | TestBreak.java:4:14:4:14 | Normal Exit |
|
||||
|
||||
@@ -1,8 +1,9 @@
|
||||
import java
|
||||
import utils.test.AstCfg
|
||||
|
||||
from ControlFlowNode n, ControlFlowNode succ
|
||||
where
|
||||
succ = n.getASuccessor() and
|
||||
succ = getAnAstSuccessor(n) and
|
||||
n.getLocation().getFile().getExtension() = "java" and
|
||||
not n.getLocation().getFile().getStem() = "PopulateRuntimeException"
|
||||
select n, succ
|
||||
|
||||
@@ -1,10 +0,0 @@
|
||||
| TestContinue.java:8:20:8:25 | ... < ... | TestContinue.java:30:3:30:13 | var ...; |
|
||||
| TestContinue.java:12:9:12:14 | ... == ... | TestContinue.java:16:5:28:5 | { ... } |
|
||||
| TestContinue.java:19:11:19:16 | ... == ... | TestContinue.java:22:14:22:24 | if (...) |
|
||||
| TestContinue.java:22:18:22:23 | ... == ... | TestContinue.java:26:7:26:13 | <Expr>; |
|
||||
| TestContinue.java:31:10:31:16 | ... != ... | TestContinue.java:50:3:50:9 | <Expr>; |
|
||||
| TestContinue.java:33:8:33:13 | ... == ... | TestContinue.java:37:4:47:4 | { ... } |
|
||||
| TestContinue.java:40:10:40:15 | ... == ... | TestContinue.java:44:6:44:15 | <Expr>; |
|
||||
| TestContinue.java:45:14:45:19 | ... == ... | TestContinue.java:46:5:46:11 | <Expr>; |
|
||||
| TestContinue.java:51:10:51:16 | ... != ... | TestContinue.java:4:14:4:14 | Normal Exit |
|
||||
| TestContinue.java:53:8:53:13 | ... != ... | TestContinue.java:56:5:56:10 | break |
|
||||
@@ -1,4 +0,0 @@
|
||||
import java
|
||||
|
||||
from ConditionNode c
|
||||
select c, c.getAFalseSuccessor()
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user