Merge pull request #335 from github/hmac/self-flow

This commit is contained in:
Tom Hvitved
2021-10-22 19:14:20 +02:00
committed by GitHub
21 changed files with 824 additions and 211 deletions

View File

@@ -20,3 +20,5 @@ class Scope extends AstNode, TScopeType {
result.getName() = name
}
}
class SelfScope extends Scope, TSelfScopeType { }

View File

@@ -14,6 +14,9 @@ class Stmt extends AstNode, TStmt {
/** Gets a control-flow node for this statement, if any. */
CfgNodes::AstCfgNode getAControlFlowNode() { result.getNode() = this }
/** Gets a control-flow entry node for this statement, if any */
AstNode getAControlFlowEntryNode() { result = getAControlFlowEntryNode(this) }
/** Gets the control-flow scope of this statement, if any. */
CfgScope getCfgScope() { result = getCfgScope(this) }

View File

@@ -71,6 +71,9 @@ class ClassVariable extends Variable instanceof ClassVariableImpl {
final override ClassVariableAccess getAnAccess() { result.getVariable() = this }
}
/** A `self` variable. */
class SelfVariable extends LocalVariable instanceof SelfVariableImpl { }
/** An access to a variable. */
class VariableAccess extends Expr instanceof VariableAccessImpl {
/** Gets the variable this identifier refers to. */
@@ -127,7 +130,7 @@ class VariableReadAccess extends VariableAccess {
/** An access to a local variable. */
class LocalVariableAccess extends VariableAccess instanceof LocalVariableAccessImpl {
final override string getAPrimaryQlClass() { result = "LocalVariableAccess" }
override string getAPrimaryQlClass() { result = "LocalVariableAccess" }
/**
* Holds if this access is a captured variable access. For example in
@@ -144,7 +147,7 @@ class LocalVariableAccess extends VariableAccess instanceof LocalVariableAccessI
* the access to `x` in the first `puts x` is a captured access, while
* the access to `x` in the second `puts x` is not.
*/
final predicate isCapturedAccess() { isCapturedAccess(this) }
predicate isCapturedAccess() { isCapturedAccess(this) }
}
/** An access to a local variable where the value is updated. */
@@ -185,3 +188,17 @@ class ClassVariableWriteAccess extends ClassVariableAccess, VariableWriteAccess
/** An access to a class variable where the value is read. */
class ClassVariableReadAccess extends ClassVariableAccess, VariableReadAccess { }
/** An access to the `self` variable */
class SelfVariableAccess extends LocalVariableAccess instanceof SelfVariableAccessImpl {
final override string getAPrimaryQlClass() { result = "SelfVariableAccess" }
}
/** An access to the `self` variable where the value is read. */
class SelfVariableReadAccess extends SelfVariableAccess, VariableReadAccess {
// We override the definition in `LocalVariableAccess` because it gives the
// wrong result for synthesised `self` variables.
override predicate isCapturedAccess() {
this.getVariable().getDeclaringScope() != this.getCfgScope()
}
}

View File

@@ -235,7 +235,9 @@ private module Cached {
isScopeResolutionMethodCall(g, i)
} or
TSelfReal(Ruby::Self g) or
TSelfSynth(AST::AstNode parent, int i) { mkSynthChild(SelfKind(), parent, i) } or
TSelfSynth(AST::AstNode parent, int i, AST::SelfVariable v) {
mkSynthChild(SelfKind(v), parent, i)
} or
TSimpleParameter(Ruby::Identifier g) { g instanceof Parameter::Range } or
TSimpleSymbolLiteral(Ruby::SimpleSymbol g) or
TSingletonClass(Ruby::SingletonClass g) or
@@ -476,7 +478,7 @@ private module Cached {
or
result = TRShiftExprSynth(parent, i)
or
result = TSelfSynth(parent, i)
result = TSelfSynth(parent, i, _)
or
result = TSplatExprSynth(parent, i)
or
@@ -693,12 +695,16 @@ class TNamedParameter =
class TTuplePattern = TTuplePatternParameter or TDestructuredLeftAssignment or TLeftAssignmentList;
class TVariableAccess =
TLocalVariableAccess or TGlobalVariableAccess or TInstanceVariableAccess or TClassVariableAccess;
TLocalVariableAccess or TGlobalVariableAccess or TInstanceVariableAccess or
TClassVariableAccess or TSelfVariableAccess;
class TLocalVariableAccess = TLocalVariableAccessReal or TLocalVariableAccessSynth;
class TLocalVariableAccess =
TLocalVariableAccessReal or TLocalVariableAccessSynth or TSelfVariableAccess;
class TGlobalVariableAccess = TGlobalVariableAccessReal or TGlobalVariableAccessSynth;
class TInstanceVariableAccess = TInstanceVariableAccessReal or TInstanceVariableAccessSynth;
class TClassVariableAccess = TClassVariableAccessReal or TClassVariableAccessSynth;
class TSelfVariableAccess = TSelfReal or TSelfSynth;

View File

@@ -60,7 +60,7 @@ class IdentifierMethodCall extends MethodCallImpl, TIdentifierMethodCall {
final override string getMethodNameImpl() { result = g.getValue() }
final override AstNode getReceiverImpl() { result = TSelfSynth(this, 0) }
final override AstNode getReceiverImpl() { result = TSelfSynth(this, 0, _) }
final override Expr getArgumentImpl(int n) { none() }
@@ -97,7 +97,7 @@ class RegularMethodCall extends MethodCallImpl, TRegularMethodCall {
not exists(g.getReceiver()) and
toGenerated(result) = g.getMethod().(Ruby::ScopeResolution).getScope()
or
result = TSelfSynth(this, 0)
result = TSelfSynth(this, 0, _)
}
final override string getMethodNameImpl() {

View File

@@ -5,6 +5,12 @@ private import codeql.ruby.ast.internal.Parameter
class TScopeType = TMethodBase or TModuleLike or TBlockLike;
/**
* The scope of a `self` variable.
* This differs from a normal scope because it is not affected by blocks or lambdas.
*/
class TSelfScopeType = TMethodBase or TModuleBase;
private class TBlockLike = TDoBlock or TLambda or TBlock or TEndBlock;
private class TModuleLike = TToplevel or TModuleDeclaration or TClassDeclaration or TSingletonClass;
@@ -29,6 +35,12 @@ module Scope {
result = this.getOuterScope().getEnclosingMethod()
}
SelfBase::Range getEnclosingSelfScope() {
this instanceof SelfBase::Range and result = this
or
not this instanceof SelfBase::Range and result = this.getOuterScope().getEnclosingSelfScope()
}
Range getOuterScope() { result = scopeOf(this) }
}
}
@@ -59,6 +71,15 @@ module ModuleBase {
class Range extends Scope::Range, TypeRange { }
}
module SelfBase {
class TypeRange = MethodBase::TypeRange or ModuleBase::TypeRange;
/**
* A `self` variable can appear in a class, module, method or at the top level.
*/
class Range extends Scope::Range, TypeRange { }
}
pragma[noinline]
private predicate rankHeredocBody(File f, Ruby::HeredocBody b, int i) {
b =

View File

@@ -5,6 +5,7 @@ private import TreeSitter
private import codeql.ruby.ast.internal.Call
private import codeql.ruby.ast.internal.Variable
private import codeql.ruby.ast.internal.Pattern
private import codeql.ruby.ast.internal.Scope
private import codeql.ruby.AST
/** A synthesized AST node kind. */
@@ -34,7 +35,7 @@ newtype SynthKind =
RShiftExprKind() or
SplatExprKind() or
StmtSequenceKind() or
SelfKind() or
SelfKind(SelfVariable v) or
SubExprKind() or
ConstantReadAccessKind(string value) { any(Synthesis s).constantReadAccess(value) }
@@ -142,7 +143,7 @@ private predicate hasLocation(AstNode n, Location l) {
private module ImplicitSelfSynthesis {
pragma[nomagic]
private predicate identifierMethodCallSelfSynthesis(AstNode mc, int i, Child child) {
child = SynthChild(SelfKind()) and
child = SynthChild(SelfKind(TSelfVariable(scopeOf(toGenerated(mc)).getEnclosingSelfScope()))) and
mc = TIdentifierMethodCall(_) and
i = 0
}
@@ -163,7 +164,7 @@ private module ImplicitSelfSynthesis {
not exists(g.(Ruby::Call).getReceiver()) and
not exists(g.(Ruby::Call).getMethod().(Ruby::ScopeResolution).getScope())
) and
child = SynthChild(SelfKind()) and
child = SynthChild(SelfKind(TSelfVariable(scopeOf(toGenerated(mc)).getEnclosingSelfScope()))) and
i = 0
}

View File

@@ -133,6 +133,7 @@ private module Cached {
not scopeDefinesParameterVariable(scope, name, _) and
not inherits(scope, name, _)
} or
TSelfVariable(SelfBase::Range scope) or
TLocalVariableSynth(AstNode n, int i) { any(Synthesis s).localVariable(n, i) }
// Db types that can be vcalls
@@ -307,7 +308,8 @@ private module Cached {
access(this, _) or
this instanceof Ruby::GlobalVariable or
this instanceof Ruby::InstanceVariable or
this instanceof Ruby::ClassVariable
this instanceof Ruby::ClassVariable or
this instanceof Ruby::Self
}
}
@@ -374,9 +376,10 @@ abstract class VariableImpl extends TVariable {
abstract Location getLocationImpl();
}
class TVariableReal = TGlobalVariable or TClassVariable or TInstanceVariable or TLocalVariableReal;
class TVariableReal =
TGlobalVariable or TClassVariable or TInstanceVariable or TLocalVariableReal or TSelfVariable;
class TLocalVariable = TLocalVariableReal or TLocalVariableSynth;
class TLocalVariable = TLocalVariableReal or TLocalVariableSynth or TSelfVariable;
/**
* This class only exists to avoid negative recursion warnings. Ideally,
@@ -475,6 +478,18 @@ class ClassVariableImpl extends VariableReal, TClassVariable {
final override Scope::Range getDeclaringScopeImpl() { result = scope }
}
class SelfVariableImpl extends VariableReal, TSelfVariable {
private SelfBase::Range scope;
SelfVariableImpl() { this = TSelfVariable(scope) }
final override string getNameImpl() { result = "self" }
final override Location getLocationImpl() { result = scope.getLocation() }
final override Scope::Range getDeclaringScopeImpl() { result = scope }
}
abstract class VariableAccessImpl extends Expr, TVariableAccess {
abstract VariableImpl getVariableImpl();
}
@@ -602,3 +617,26 @@ private class ClassVariableAccessSynth extends ClassVariableAccessRealImpl,
final override string toString() { result = v.getName() }
}
abstract class SelfVariableAccessImpl extends LocalVariableAccessImpl, TSelfVariableAccess { }
private class SelfVariableAccessReal extends SelfVariableAccessImpl, TSelfReal {
private Ruby::Self self;
private SelfVariable var;
SelfVariableAccessReal() { this = TSelfReal(self) and var = TSelfVariable(scopeOf(self)) }
final override SelfVariable getVariableImpl() { result = var }
final override string toString() { result = var.toString() }
}
private class SelfVariableAccessSynth extends SelfVariableAccessImpl, TSelfSynth {
private SelfVariable v;
SelfVariableAccessSynth() { this = TSelfSynth(_, _, v) }
final override LocalVariable getVariableImpl() { result = v }
final override string toString() { result = v.getName() }
}

View File

@@ -59,7 +59,7 @@ class ExitNode extends CfgNode, TExitNode {
/**
* A node for an AST node.
*
* Each AST node maps to zero or more `AstCfgNode`s: zero when the node in unreachable
* Each AST node maps to zero or more `AstCfgNode`s: zero when the node is unreachable
* (dead) code or not important for control flow, and multiple when there are different
* splits for the AST node.
*/

View File

@@ -808,19 +808,28 @@ module Trees {
}
}
/**
* Namespaces (i.e. modules or classes) behave like other `BodyStmt`s except they are
* executed in pre-order rather than post-order. We do this in order to insert a write for
* `self` before any subsequent reads in the namespace body.
*/
private class NamespaceTree extends BodyStmtTree, Namespace {
final override predicate first(AstNode first) {
this.firstInner(first)
or
not exists(this.getAChild(_)) and
first = this
}
final override predicate first(AstNode first) { first = this }
final override predicate succ(AstNode pred, AstNode succ, Completion c) {
BodyStmtTree.super.succ(pred, succ, c)
or
succ = this and
this.lastInner(pred, c)
pred = this and
this.firstInner(succ) and
c instanceof SimpleCompletion
}
final override predicate last(AstNode last, Completion c) {
this.lastInner(last, c)
or
not exists(this.getAChild(_)) and
last = this and
c.isValidFor(this)
}
}
@@ -956,8 +965,6 @@ module Trees {
final override ControlFlowTree getChildElement(int i) { result = this.getValue() and i = 0 }
}
private class SelfTree extends LeafTree, Self { }
private class SimpleParameterTree extends NonDefaultValueParameterTree, SimpleParameter { }
// Corner case: For duplicated '_' parameters, only the first occurence has a defining

View File

@@ -220,6 +220,24 @@ module Ssa {
final override Location getLocation() { result = this.getControlFlowNode().getLocation() }
}
/**
* An SSA definition that corresponds to the value of `self` upon entry to a method, class or module.
*/
class SelfDefinition extends Definition, SsaImplCommon::WriteDefinition {
private SelfVariable v;
SelfDefinition() {
exists(BasicBlock bb, int i |
this.definesAt(v, bb, i) and
not SsaImpl::capturedEntryWrite(bb, i, v)
)
}
final override string toString() { result = "self (" + v.getDeclaringScope() + ")" }
final override Location getLocation() { result = this.getControlFlowNode().getLocation() }
}
/**
* An SSA definition inserted at the beginning of a scope to represent an
* uninitialized local variable. For example, in

View File

@@ -236,7 +236,7 @@ private module Cached {
// for `self`. At that point, the `self`s returned by `trackInstance`
// in `DataFlowDispatch.qll` should refer to the post-update node,
// and we can remove this case.
n instanceof SelfArgumentNode
n.asExpr().getExpr() instanceof Self
or
not localFlowStepTypeTracker+(any(Node e |
e instanceof ExprNode

View File

@@ -17,8 +17,21 @@ class ExitBasicBlock = BasicBlocks::ExitBasicBlock;
class SourceVariable = LocalVariable;
/**
* Holds if the statement at index `i` of basic block `bb` contains a write to variable `v`.
* `certain` is true if the write definitely occurs.
*/
predicate variableWrite(BasicBlock bb, int i, SourceVariable v, boolean certain) {
(
exists(Scope scope | scope = v.(SelfVariable).getDeclaringScope() |
// We consider the `self` variable to have a single write at the entry to a method block...
scope = bb.(BasicBlocks::EntryBasicBlock).getScope() and
i = 0
or
// ...or a class or module block.
bb.getNode(i).getNode() = scope.(ModuleBase).getAControlFlowEntryNode()
)
or
SsaImpl::uninitializedWrite(bb, i, v)
or
SsaImpl::capturedEntryWrite(bb, i, v)

View File

@@ -1,28 +1,28 @@
gems/Gemfile:
# 1| [Toplevel] Gemfile
# 1| getStmt: [MethodCall] call to source
# 1| getReceiver: [Self] self
# 1| getReceiver: [Self, SelfVariableAccess] self
# 1| getArgument: [StringLiteral] "https://rubygems.org"
# 1| getComponent: [StringTextComponent] https://rubygems.org
# 3| getStmt: [MethodCall] call to gem
# 3| getReceiver: [Self] self
# 3| getReceiver: [Self, SelfVariableAccess] self
# 3| getArgument: [StringLiteral] "foo_gem"
# 3| getComponent: [StringTextComponent] foo_gem
# 3| getArgument: [StringLiteral] "~> 2.0"
# 3| getComponent: [StringTextComponent] ~> 2.0
# 5| getStmt: [MethodCall] call to source
# 5| getReceiver: [Self] self
# 5| getReceiver: [Self, SelfVariableAccess] self
# 5| getArgument: [StringLiteral] "https://gems.example.com"
# 5| getComponent: [StringTextComponent] https://gems.example.com
# 5| getBlock: [DoBlock] do ... end
# 6| getStmt: [MethodCall] call to gem
# 6| getReceiver: [Self] self
# 6| getReceiver: [Self, SelfVariableAccess] self
# 6| getArgument: [StringLiteral] "my_gem"
# 6| getComponent: [StringTextComponent] my_gem
# 6| getArgument: [StringLiteral] "1.0"
# 6| getComponent: [StringTextComponent] 1.0
# 7| getStmt: [MethodCall] call to gem
# 7| getReceiver: [Self] self
# 7| getReceiver: [Self, SelfVariableAccess] self
# 7| getArgument: [StringLiteral] "another_gem"
# 7| getComponent: [StringTextComponent] another_gem
# 7| getArgument: [StringLiteral] "3.1.4"
@@ -30,20 +30,20 @@ gems/Gemfile:
calls/calls.rb:
# 1| [Toplevel] calls.rb
# 2| getStmt: [MethodCall] call to foo
# 2| getReceiver: [Self] self
# 2| getReceiver: [Self, SelfVariableAccess] self
# 5| getStmt: [MethodCall] call to bar
# 5| getReceiver: [ConstantReadAccess] Foo
# 8| getStmt: [MethodCall] call to bar
# 8| getReceiver: [Self] self
# 8| getReceiver: [Self, SelfVariableAccess] self
# 11| getStmt: [MethodCall] call to bar
# 11| getReceiver: [IntegerLiteral] 123
# 14| getStmt: [MethodCall] call to foo
# 14| getReceiver: [Self] self
# 14| getReceiver: [Self, SelfVariableAccess] self
# 14| getArgument: [IntegerLiteral] 0
# 14| getArgument: [IntegerLiteral] 1
# 14| getArgument: [IntegerLiteral] 2
# 17| getStmt: [MethodCall] call to foo
# 17| getReceiver: [Self] self
# 17| getReceiver: [Self, SelfVariableAccess] self
# 17| getBlock: [BraceBlock] { ... }
# 17| getParameter: [SimpleParameter] x
# 17| getDefiningAccess: [LocalVariableAccess] x
@@ -51,7 +51,7 @@ calls/calls.rb:
# 17| getAnOperand/getLeftOperand/getReceiver: [LocalVariableAccess] x
# 17| getAnOperand/getArgument/getRightOperand: [IntegerLiteral] 1
# 20| getStmt: [MethodCall] call to foo
# 20| getReceiver: [Self] self
# 20| getReceiver: [Self, SelfVariableAccess] self
# 20| getBlock: [DoBlock] do ... end
# 20| getParameter: [SimpleParameter] x
# 20| getDefiningAccess: [LocalVariableAccess] x
@@ -75,33 +75,33 @@ calls/calls.rb:
# 36| getArgument: [IntegerLiteral] 100
# 36| getArgument: [IntegerLiteral] 200
# 46| getStmt: [MethodCall] call to foo
# 46| getReceiver: [Self] self
# 46| getReceiver: [Self, SelfVariableAccess] self
# 47| getStmt: [MethodCall] call to foo
# 47| getReceiver: [ConstantReadAccess] X
# 50| getStmt: [ParenthesizedExpr] ( ... )
# 50| getStmt: [MethodCall] call to foo
# 50| getReceiver: [Self] self
# 50| getReceiver: [Self, SelfVariableAccess] self
# 51| getStmt: [ParenthesizedExpr] ( ... )
# 51| getStmt: [MethodCall] call to foo
# 51| getReceiver: [ConstantReadAccess] X
# 54| getStmt: [MethodCall] call to some_func
# 54| getReceiver: [Self] self
# 54| getReceiver: [Self, SelfVariableAccess] self
# 54| getArgument: [MethodCall] call to foo
# 54| getReceiver: [Self] self
# 54| getReceiver: [Self, SelfVariableAccess] self
# 55| getStmt: [MethodCall] call to some_func
# 55| getReceiver: [Self] self
# 55| getReceiver: [Self, SelfVariableAccess] self
# 55| getArgument: [MethodCall] call to foo
# 55| getReceiver: [ConstantReadAccess] X
# 58| getStmt: [ArrayLiteral] [...]
# 58| getElement: [MethodCall] call to foo
# 58| getReceiver: [Self] self
# 58| getReceiver: [Self, SelfVariableAccess] self
# 59| getStmt: [ArrayLiteral] [...]
# 59| getElement: [MethodCall] call to foo
# 59| getReceiver: [ConstantReadAccess] X
# 62| getStmt: [AssignExpr] ... = ...
# 62| getAnOperand/getLeftOperand: [LocalVariableAccess] var1
# 62| getAnOperand/getRightOperand: [MethodCall] call to foo
# 62| getReceiver: [Self] self
# 62| getReceiver: [Self, SelfVariableAccess] self
# 63| getStmt: [AssignExpr] ... = ...
# 63| getAnOperand/getLeftOperand: [LocalVariableAccess] var1
# 63| getAnOperand/getRightOperand: [MethodCall] call to foo
@@ -109,7 +109,7 @@ calls/calls.rb:
# 66| getStmt: [AssignAddExpr] ... += ...
# 66| getAnOperand/getLeftOperand: [LocalVariableAccess] var1
# 66| getAnOperand/getRightOperand: [MethodCall] call to bar
# 66| getReceiver: [Self] self
# 66| getReceiver: [Self, SelfVariableAccess] self
# 67| getStmt: [AssignAddExpr] ... += ...
# 67| getAnOperand/getLeftOperand: [LocalVariableAccess] var1
# 67| getAnOperand/getRightOperand: [MethodCall] call to bar
@@ -118,64 +118,64 @@ calls/calls.rb:
# 70| getAnOperand/getLeftOperand: [LocalVariableAccess] var1
# 70| getAnOperand/getRightOperand: [ArgumentList] ..., ...
# 70| getElement: [MethodCall] call to foo
# 70| getReceiver: [Self] self
# 70| getReceiver: [Self, SelfVariableAccess] self
# 70| getElement: [MethodCall] call to bar
# 70| getReceiver: [ConstantReadAccess] X
# 73| getStmt: [BeginExpr] begin ...
# 74| getStmt: [MethodCall] call to foo
# 74| getReceiver: [Self] self
# 74| getReceiver: [Self, SelfVariableAccess] self
# 75| getStmt: [MethodCall] call to foo
# 75| getReceiver: [ConstantReadAccess] X
# 79| getBeginBlock: [BeginBlock] BEGIN { ... }
# 79| getStmt: [MethodCall] call to foo
# 79| getReceiver: [Self] self
# 79| getReceiver: [Self, SelfVariableAccess] self
# 79| getStmt: [MethodCall] call to bar
# 79| getReceiver: [ConstantReadAccess] X
# 82| getStmt: [EndBlock] END { ... }
# 82| getStmt: [MethodCall] call to foo
# 82| getReceiver: [Self] self
# 82| getReceiver: [Self, SelfVariableAccess] self
# 82| getStmt: [MethodCall] call to bar
# 82| getReceiver: [ConstantReadAccess] X
# 85| getStmt: [AddExpr] ... + ...
# 85| getAnOperand/getLeftOperand/getReceiver: [MethodCall] call to foo
# 85| getReceiver: [Self] self
# 85| getReceiver: [Self, SelfVariableAccess] self
# 85| getAnOperand/getArgument/getRightOperand: [MethodCall] call to bar
# 85| getReceiver: [ConstantReadAccess] X
# 88| getStmt: [NotExpr] ! ...
# 88| getAnOperand/getOperand/getReceiver: [MethodCall] call to foo
# 88| getReceiver: [Self] self
# 88| getReceiver: [Self, SelfVariableAccess] self
# 89| getStmt: [ComplementExpr] ~ ...
# 89| getAnOperand/getOperand/getReceiver: [MethodCall] call to bar
# 89| getReceiver: [ConstantReadAccess] X
# 92| getStmt: [MethodCall] call to foo
# 92| getReceiver: [Self] self
# 92| getReceiver: [Self, SelfVariableAccess] self
# 92| getBlock: [BraceBlock] { ... }
# 92| getStmt: [MethodCall] call to bar
# 92| getReceiver: [Self] self
# 92| getReceiver: [Self, SelfVariableAccess] self
# 92| getStmt: [MethodCall] call to baz
# 92| getReceiver: [ConstantReadAccess] X
# 95| getStmt: [MethodCall] call to foo
# 95| getReceiver: [Self] self
# 95| getReceiver: [Self, SelfVariableAccess] self
# 95| getBlock: [DoBlock] do ... end
# 96| getStmt: [MethodCall] call to bar
# 96| getReceiver: [Self] self
# 96| getReceiver: [Self, SelfVariableAccess] self
# 97| getStmt: [MethodCall] call to baz
# 97| getReceiver: [ConstantReadAccess] X
# 101| getStmt: [MethodCall] call to bar
# 101| getReceiver: [MethodCall] call to foo
# 101| getReceiver: [Self] self
# 101| getReceiver: [Self, SelfVariableAccess] self
# 102| getStmt: [MethodCall] call to baz
# 102| getReceiver: [MethodCall] call to bar
# 102| getReceiver: [Self] self
# 102| getReceiver: [Self, SelfVariableAccess] self
# 106| getStmt: [CaseExpr] case ...
# 106| getValue: [MethodCall] call to foo
# 106| getReceiver: [Self] self
# 106| getReceiver: [Self, SelfVariableAccess] self
# 107| getBranch: [WhenExpr] when ...
# 107| getPattern: [MethodCall] call to bar
# 107| getReceiver: [Self] self
# 107| getReceiver: [Self, SelfVariableAccess] self
# 107| getBody: [StmtSequence] then ...
# 108| getStmt: [MethodCall] call to baz
# 108| getReceiver: [Self] self
# 108| getReceiver: [Self, SelfVariableAccess] self
# 110| getStmt: [CaseExpr] case ...
# 110| getValue: [MethodCall] call to foo
# 110| getReceiver: [ConstantReadAccess] X
@@ -187,20 +187,20 @@ calls/calls.rb:
# 112| getReceiver: [ConstantReadAccess] X
# 116| getStmt: [ClassDeclaration] MyClass
# 117| getStmt: [MethodCall] call to foo
# 117| getReceiver: [Self] self
# 117| getReceiver: [Self, SelfVariableAccess] self
# 118| getStmt: [MethodCall] call to bar
# 118| getReceiver: [ConstantReadAccess] X
# 122| getStmt: [ClassDeclaration] MyClass
# 122| getSuperclassExpr: [MethodCall] call to foo
# 122| getReceiver: [Self] self
# 122| getReceiver: [Self, SelfVariableAccess] self
# 124| getStmt: [ClassDeclaration] MyClass2
# 124| getSuperclassExpr: [MethodCall] call to foo
# 124| getReceiver: [ConstantReadAccess] X
# 128| getStmt: [SingletonClass] class << ...
# 128| getValue: [MethodCall] call to foo
# 128| getReceiver: [Self] self
# 128| getReceiver: [Self, SelfVariableAccess] self
# 129| getStmt: [MethodCall] call to bar
# 129| getReceiver: [Self] self
# 129| getReceiver: [Self, SelfVariableAccess] self
# 131| getStmt: [SingletonClass] class << ...
# 131| getValue: [MethodCall] call to foo
# 131| getReceiver: [ConstantReadAccess] X
@@ -208,21 +208,21 @@ calls/calls.rb:
# 132| getReceiver: [ConstantReadAccess] X
# 136| getStmt: [Method] some_method
# 137| getStmt: [MethodCall] call to foo
# 137| getReceiver: [Self] self
# 137| getReceiver: [Self, SelfVariableAccess] self
# 138| getStmt: [MethodCall] call to bar
# 138| getReceiver: [ConstantReadAccess] X
# 142| getStmt: [SingletonMethod] some_method
# 142| getObject: [MethodCall] call to foo
# 142| getReceiver: [Self] self
# 142| getReceiver: [Self, SelfVariableAccess] self
# 143| getStmt: [MethodCall] call to bar
# 143| getReceiver: [Self] self
# 143| getReceiver: [Self, SelfVariableAccess] self
# 144| getStmt: [MethodCall] call to baz
# 144| getReceiver: [ConstantReadAccess] X
# 148| getStmt: [Method] method_with_keyword_param
# 148| getParameter: [KeywordParameter] keyword
# 148| getDefiningAccess: [LocalVariableAccess] keyword
# 148| getDefaultValue: [MethodCall] call to foo
# 148| getReceiver: [Self] self
# 148| getReceiver: [Self, SelfVariableAccess] self
# 150| getStmt: [Method] method_with_keyword_param2
# 150| getParameter: [KeywordParameter] keyword
# 150| getDefiningAccess: [LocalVariableAccess] keyword
@@ -232,7 +232,7 @@ calls/calls.rb:
# 154| getParameter: [OptionalParameter] param
# 154| getDefiningAccess: [LocalVariableAccess] param
# 154| getDefaultValue: [MethodCall] call to foo
# 154| getReceiver: [Self] self
# 154| getReceiver: [Self, SelfVariableAccess] self
# 156| getStmt: [Method] method_with_optional_param2
# 156| getParameter: [OptionalParameter] param
# 156| getDefiningAccess: [LocalVariableAccess] param
@@ -240,16 +240,16 @@ calls/calls.rb:
# 156| getReceiver: [ConstantReadAccess] X
# 160| getStmt: [ModuleDeclaration] SomeModule
# 161| getStmt: [MethodCall] call to foo
# 161| getReceiver: [Self] self
# 161| getReceiver: [Self, SelfVariableAccess] self
# 162| getStmt: [MethodCall] call to bar
# 162| getReceiver: [ConstantReadAccess] X
# 166| getStmt: [TernaryIfExpr] ... ? ... : ...
# 166| getCondition: [MethodCall] call to foo
# 166| getReceiver: [Self] self
# 166| getReceiver: [Self, SelfVariableAccess] self
# 166| getBranch/getThen: [MethodCall] call to bar
# 166| getReceiver: [Self] self
# 166| getReceiver: [Self, SelfVariableAccess] self
# 166| getBranch/getElse: [MethodCall] call to baz
# 166| getReceiver: [Self] self
# 166| getReceiver: [Self, SelfVariableAccess] self
# 167| getStmt: [TernaryIfExpr] ... ? ... : ...
# 167| getCondition: [MethodCall] call to foo
# 167| getReceiver: [ConstantReadAccess] X
@@ -259,19 +259,19 @@ calls/calls.rb:
# 167| getReceiver: [ConstantReadAccess] X
# 170| getStmt: [IfExpr] if ...
# 170| getCondition: [MethodCall] call to foo
# 170| getReceiver: [Self] self
# 170| getReceiver: [Self, SelfVariableAccess] self
# 170| getBranch/getThen: [StmtSequence] then ...
# 171| getStmt: [MethodCall] call to wibble
# 171| getReceiver: [Self] self
# 171| getReceiver: [Self, SelfVariableAccess] self
# 172| getBranch/getElse: [IfExpr] elsif ...
# 172| getCondition: [MethodCall] call to bar
# 172| getReceiver: [Self] self
# 172| getReceiver: [Self, SelfVariableAccess] self
# 172| getBranch/getThen: [StmtSequence] then ...
# 173| getStmt: [MethodCall] call to wobble
# 173| getReceiver: [Self] self
# 173| getReceiver: [Self, SelfVariableAccess] self
# 174| getBranch/getElse: [StmtSequence] else ...
# 175| getStmt: [MethodCall] call to wabble
# 175| getReceiver: [Self] self
# 175| getReceiver: [Self, SelfVariableAccess] self
# 177| getStmt: [IfExpr] if ...
# 177| getCondition: [MethodCall] call to foo
# 177| getReceiver: [ConstantReadAccess] X
@@ -289,9 +289,9 @@ calls/calls.rb:
# 182| getReceiver: [ConstantReadAccess] X
# 186| getStmt: [IfModifierExpr] ... if ...
# 186| getBody/getBranch: [MethodCall] call to bar
# 186| getReceiver: [Self] self
# 186| getReceiver: [Self, SelfVariableAccess] self
# 186| getCondition: [MethodCall] call to foo
# 186| getReceiver: [Self] self
# 186| getReceiver: [Self, SelfVariableAccess] self
# 187| getStmt: [IfModifierExpr] ... if ...
# 187| getBody/getBranch: [MethodCall] call to bar
# 187| getReceiver: [ConstantReadAccess] X
@@ -299,10 +299,10 @@ calls/calls.rb:
# 187| getReceiver: [ConstantReadAccess] X
# 190| getStmt: [UnlessExpr] unless ...
# 190| getCondition: [MethodCall] call to foo
# 190| getReceiver: [Self] self
# 190| getReceiver: [Self, SelfVariableAccess] self
# 190| getBranch/getThen: [StmtSequence] then ...
# 191| getStmt: [MethodCall] call to bar
# 191| getReceiver: [Self] self
# 191| getReceiver: [Self, SelfVariableAccess] self
# 193| getStmt: [UnlessExpr] unless ...
# 193| getCondition: [MethodCall] call to foo
# 193| getReceiver: [ConstantReadAccess] X
@@ -311,9 +311,9 @@ calls/calls.rb:
# 194| getReceiver: [ConstantReadAccess] X
# 198| getStmt: [UnlessModifierExpr] ... unless ...
# 198| getBody/getBranch: [MethodCall] call to bar
# 198| getReceiver: [Self] self
# 198| getReceiver: [Self, SelfVariableAccess] self
# 198| getCondition: [MethodCall] call to foo
# 198| getReceiver: [Self] self
# 198| getReceiver: [Self, SelfVariableAccess] self
# 199| getStmt: [UnlessModifierExpr] ... unless ...
# 199| getBody/getBranch: [MethodCall] call to bar
# 199| getReceiver: [ConstantReadAccess] X
@@ -321,10 +321,10 @@ calls/calls.rb:
# 199| getReceiver: [ConstantReadAccess] X
# 202| getStmt: [WhileExpr] while ...
# 202| getCondition: [MethodCall] call to foo
# 202| getReceiver: [Self] self
# 202| getReceiver: [Self, SelfVariableAccess] self
# 202| getBody: [StmtSequence] do ...
# 203| getStmt: [MethodCall] call to bar
# 203| getReceiver: [Self] self
# 203| getReceiver: [Self, SelfVariableAccess] self
# 205| getStmt: [WhileExpr] while ...
# 205| getCondition: [MethodCall] call to foo
# 205| getReceiver: [ConstantReadAccess] X
@@ -333,9 +333,9 @@ calls/calls.rb:
# 206| getReceiver: [ConstantReadAccess] X
# 210| getStmt: [WhileModifierExpr] ... while ...
# 210| getBody: [MethodCall] call to bar
# 210| getReceiver: [Self] self
# 210| getReceiver: [Self, SelfVariableAccess] self
# 210| getCondition: [MethodCall] call to foo
# 210| getReceiver: [Self] self
# 210| getReceiver: [Self, SelfVariableAccess] self
# 211| getStmt: [WhileModifierExpr] ... while ...
# 211| getBody: [MethodCall] call to bar
# 211| getReceiver: [ConstantReadAccess] X
@@ -343,10 +343,10 @@ calls/calls.rb:
# 211| getReceiver: [ConstantReadAccess] X
# 214| getStmt: [UntilExpr] until ...
# 214| getCondition: [MethodCall] call to foo
# 214| getReceiver: [Self] self
# 214| getReceiver: [Self, SelfVariableAccess] self
# 214| getBody: [StmtSequence] do ...
# 215| getStmt: [MethodCall] call to bar
# 215| getReceiver: [Self] self
# 215| getReceiver: [Self, SelfVariableAccess] self
# 217| getStmt: [UntilExpr] until ...
# 217| getCondition: [MethodCall] call to foo
# 217| getReceiver: [ConstantReadAccess] X
@@ -355,9 +355,9 @@ calls/calls.rb:
# 218| getReceiver: [ConstantReadAccess] X
# 222| getStmt: [UntilModifierExpr] ... until ...
# 222| getBody: [MethodCall] call to bar
# 222| getReceiver: [Self] self
# 222| getReceiver: [Self, SelfVariableAccess] self
# 222| getCondition: [MethodCall] call to foo
# 222| getReceiver: [Self] self
# 222| getReceiver: [Self, SelfVariableAccess] self
# 223| getStmt: [UntilModifierExpr] ... until ...
# 223| getBody: [MethodCall] call to bar
# 223| getReceiver: [ConstantReadAccess] X
@@ -367,10 +367,10 @@ calls/calls.rb:
# 226| getPattern: [LocalVariableAccess] x
# 226| <in>: [???] In
# 226| getValue: [MethodCall] call to bar
# 226| getReceiver: [Self] self
# 226| getReceiver: [Self, SelfVariableAccess] self
# 226| getBody: [StmtSequence] do ...
# 227| getStmt: [MethodCall] call to baz
# 227| getReceiver: [Self] self
# 227| getReceiver: [Self, SelfVariableAccess] self
# 229| getStmt: [ForExpr] for ... in ...
# 229| getPattern: [LocalVariableAccess] x
# 229| <in>: [???] In
@@ -381,9 +381,9 @@ calls/calls.rb:
# 230| getReceiver: [ConstantReadAccess] X
# 234| getStmt: [ElementReference] ...[...]
# 234| getReceiver: [MethodCall] call to foo
# 234| getReceiver: [Self] self
# 234| getReceiver: [Self, SelfVariableAccess] self
# 234| getArgument: [MethodCall] call to bar
# 234| getReceiver: [Self] self
# 234| getReceiver: [Self, SelfVariableAccess] self
# 235| getStmt: [ElementReference] ...[...]
# 235| getReceiver: [MethodCall] call to foo
# 235| getReceiver: [ConstantReadAccess] X
@@ -393,22 +393,22 @@ calls/calls.rb:
# 238| getComponent: [StringTextComponent] foo-
# 238| getComponent: [StringInterpolationComponent] #{...}
# 238| getStmt: [MethodCall] call to bar
# 238| getReceiver: [Self] self
# 238| getReceiver: [Self, SelfVariableAccess] self
# 238| getComponent: [StringTextComponent] -
# 238| getComponent: [StringInterpolationComponent] #{...}
# 238| getStmt: [MethodCall] call to baz
# 238| getReceiver: [ConstantReadAccess] X
# 241| getStmt: [ConstantReadAccess] Bar
# 241| getScopeExpr: [MethodCall] call to foo
# 241| getReceiver: [Self] self
# 241| getReceiver: [Self, SelfVariableAccess] self
# 242| getStmt: [ConstantReadAccess] Bar
# 242| getScopeExpr: [MethodCall] call to foo
# 242| getReceiver: [ConstantReadAccess] X
# 245| getStmt: [RangeLiteral] _ .. _
# 245| getBegin: [MethodCall] call to foo
# 245| getReceiver: [Self] self
# 245| getReceiver: [Self, SelfVariableAccess] self
# 245| getEnd: [MethodCall] call to bar
# 245| getReceiver: [Self] self
# 245| getReceiver: [Self, SelfVariableAccess] self
# 246| getStmt: [RangeLiteral] _ .. _
# 246| getBegin: [MethodCall] call to foo
# 246| getReceiver: [ConstantReadAccess] X
@@ -417,9 +417,9 @@ calls/calls.rb:
# 249| getStmt: [HashLiteral] {...}
# 249| getElement: [Pair] Pair
# 249| getKey: [MethodCall] call to foo
# 249| getReceiver: [Self] self
# 249| getReceiver: [Self, SelfVariableAccess] self
# 249| getValue: [MethodCall] call to bar
# 249| getReceiver: [Self] self
# 249| getReceiver: [Self, SelfVariableAccess] self
# 249| getElement: [Pair] Pair
# 249| getKey: [MethodCall] call to foo
# 249| getReceiver: [ConstantReadAccess] X
@@ -428,10 +428,10 @@ calls/calls.rb:
# 252| getStmt: [BeginExpr] begin ...
# 253| getRescue: [RescueClause] rescue ...
# 253| getException: [MethodCall] call to foo
# 253| getReceiver: [Self] self
# 253| getReceiver: [Self, SelfVariableAccess] self
# 254| getEnsure: [StmtSequence] ensure ...
# 254| getStmt: [MethodCall] call to bar
# 254| getReceiver: [Self] self
# 254| getReceiver: [Self, SelfVariableAccess] self
# 256| getStmt: [BeginExpr] begin ...
# 257| getRescue: [RescueClause] rescue ...
# 257| getException: [MethodCall] call to foo
@@ -441,52 +441,52 @@ calls/calls.rb:
# 258| getReceiver: [ConstantReadAccess] X
# 262| getStmt: [RescueModifierExpr] ... rescue ...
# 262| getBody: [MethodCall] call to foo
# 262| getReceiver: [Self] self
# 262| getReceiver: [Self, SelfVariableAccess] self
# 262| getHandler: [MethodCall] call to bar
# 262| getReceiver: [Self] self
# 262| getReceiver: [Self, SelfVariableAccess] self
# 263| getStmt: [RescueModifierExpr] ... rescue ...
# 263| getBody: [MethodCall] call to foo
# 263| getReceiver: [ConstantReadAccess] X
# 263| getHandler: [MethodCall] call to bar
# 263| getReceiver: [ConstantReadAccess] X
# 266| getStmt: [MethodCall] call to foo
# 266| getReceiver: [Self] self
# 266| getReceiver: [Self, SelfVariableAccess] self
# 266| getArgument: [BlockArgument] &...
# 266| getValue: [MethodCall] call to bar
# 266| getReceiver: [Self] self
# 266| getReceiver: [Self, SelfVariableAccess] self
# 267| getStmt: [MethodCall] call to foo
# 267| getReceiver: [Self] self
# 267| getReceiver: [Self, SelfVariableAccess] self
# 267| getArgument: [BlockArgument] &...
# 267| getValue: [MethodCall] call to bar
# 267| getReceiver: [ConstantReadAccess] X
# 270| getStmt: [MethodCall] call to foo
# 270| getReceiver: [Self] self
# 270| getReceiver: [Self, SelfVariableAccess] self
# 270| getArgument: [SplatExpr] * ...
# 270| getAnOperand/getOperand/getReceiver: [MethodCall] call to bar
# 270| getReceiver: [Self] self
# 270| getReceiver: [Self, SelfVariableAccess] self
# 271| getStmt: [MethodCall] call to foo
# 271| getReceiver: [Self] self
# 271| getReceiver: [Self, SelfVariableAccess] self
# 271| getArgument: [SplatExpr] * ...
# 271| getAnOperand/getOperand/getReceiver: [MethodCall] call to bar
# 271| getReceiver: [ConstantReadAccess] X
# 274| getStmt: [MethodCall] call to foo
# 274| getReceiver: [Self] self
# 274| getReceiver: [Self, SelfVariableAccess] self
# 274| getArgument: [HashSplatExpr] ** ...
# 274| getAnOperand/getOperand/getReceiver: [MethodCall] call to bar
# 274| getReceiver: [Self] self
# 274| getReceiver: [Self, SelfVariableAccess] self
# 275| getStmt: [MethodCall] call to foo
# 275| getReceiver: [Self] self
# 275| getReceiver: [Self, SelfVariableAccess] self
# 275| getArgument: [HashSplatExpr] ** ...
# 275| getAnOperand/getOperand/getReceiver: [MethodCall] call to bar
# 275| getReceiver: [ConstantReadAccess] X
# 278| getStmt: [MethodCall] call to foo
# 278| getReceiver: [Self] self
# 278| getReceiver: [Self, SelfVariableAccess] self
# 278| getArgument: [Pair] Pair
# 278| getKey: [SymbolLiteral] :blah
# 278| getValue: [MethodCall] call to bar
# 278| getReceiver: [Self] self
# 278| getReceiver: [Self, SelfVariableAccess] self
# 279| getStmt: [MethodCall] call to foo
# 279| getReceiver: [Self] self
# 279| getReceiver: [Self, SelfVariableAccess] self
# 279| getArgument: [Pair] Pair
# 279| getKey: [SymbolLiteral] :blah
# 279| getValue: [MethodCall] call to bar
@@ -538,37 +538,37 @@ calls/calls.rb:
# 302| getStmt: [Method] another_method
# 303| getStmt: [MethodCall] call to super
# 303| getReceiver: [MethodCall] call to foo
# 303| getReceiver: [Self] self
# 303| getReceiver: [Self, SelfVariableAccess] self
# 304| getStmt: [MethodCall] call to super
# 304| getReceiver: [Self] self
# 304| getReceiver: [Self, SelfVariableAccess] self
# 305| getStmt: [MethodCall] call to super
# 305| getReceiver: [SuperCall] call to super
# 310| getStmt: [MethodCall] call to call
# 310| getReceiver: [MethodCall] call to foo
# 310| getReceiver: [Self] self
# 310| getReceiver: [Self, SelfVariableAccess] self
# 311| getStmt: [MethodCall] call to call
# 311| getReceiver: [MethodCall] call to foo
# 311| getReceiver: [Self] self
# 311| getReceiver: [Self, SelfVariableAccess] self
# 311| getArgument: [IntegerLiteral] 1
# 314| getStmt: [AssignExpr] ... = ...
# 314| getAnOperand/getLeftOperand: [MethodCall] call to foo
# 314| getReceiver: [Self] self
# 314| getReceiver: [Self, SelfVariableAccess] self
# 314| getAnOperand/getRightOperand: [IntegerLiteral] 10
# 315| getStmt: [AssignExpr] ... = ...
# 315| getAnOperand/getLeftOperand: [ElementReference] ...[...]
# 315| getReceiver: [MethodCall] call to foo
# 315| getReceiver: [Self] self
# 315| getReceiver: [Self, SelfVariableAccess] self
# 315| getArgument: [IntegerLiteral] 0
# 315| getAnOperand/getRightOperand: [IntegerLiteral] 10
# 316| getStmt: [AssignExpr] ... = ...
# 316| getLeftOperand: [TuplePattern] (..., ...)
# 316| getElement: [MethodCall] call to foo
# 316| getReceiver: [Self] self
# 316| getReceiver: [Self, SelfVariableAccess] self
# 316| getElement: [MethodCall] call to bar
# 316| getReceiver: [Self] self
# 316| getReceiver: [Self, SelfVariableAccess] self
# 316| getElement: [ElementReference] ...[...]
# 316| getReceiver: [MethodCall] call to foo
# 316| getReceiver: [Self] self
# 316| getReceiver: [Self, SelfVariableAccess] self
# 316| getArgument: [IntegerLiteral] 4
# 316| getAnOperand/getRightOperand: [ArrayLiteral] [...]
# 316| getElement: [IntegerLiteral] 1
@@ -580,7 +580,7 @@ calls/calls.rb:
# 317| getElement: [LocalVariableAccess] a
# 317| getElement: [ElementReference] ...[...]
# 317| getReceiver: [MethodCall] call to foo
# 317| getReceiver: [Self] self
# 317| getReceiver: [Self, SelfVariableAccess] self
# 317| getArgument: [IntegerLiteral] 5
# 317| getAnOperand/getRightOperand: [ArrayLiteral] [...]
# 317| getElement: [IntegerLiteral] 1
@@ -588,57 +588,57 @@ calls/calls.rb:
# 317| getElement: [IntegerLiteral] 3
# 318| getStmt: [AssignAddExpr] ... += ...
# 318| getAnOperand/getLeftOperand: [MethodCall] call to count
# 318| getReceiver: [Self] self
# 318| getReceiver: [Self, SelfVariableAccess] self
# 318| getAnOperand/getRightOperand: [IntegerLiteral] 1
# 319| getStmt: [AssignAddExpr] ... += ...
# 319| getAnOperand/getLeftOperand: [ElementReference] ...[...]
# 319| getReceiver: [MethodCall] call to foo
# 319| getReceiver: [Self] self
# 319| getReceiver: [Self, SelfVariableAccess] self
# 319| getArgument: [IntegerLiteral] 0
# 319| getAnOperand/getRightOperand: [IntegerLiteral] 1
# 320| getStmt: [AssignMulExpr] ... *= ...
# 320| getAnOperand/getLeftOperand: [ElementReference] ...[...]
# 320| getReceiver: [MethodCall] call to bar
# 320| getReceiver: [MethodCall] call to foo
# 320| getReceiver: [Self] self
# 320| getReceiver: [Self, SelfVariableAccess] self
# 320| getArgument: [IntegerLiteral] 0
# 320| getArgument: [MethodCall] call to baz
# 320| getReceiver: [MethodCall] call to foo
# 320| getReceiver: [Self] self
# 320| getReceiver: [Self, SelfVariableAccess] self
# 320| getArgument: [AddExpr] ... + ...
# 320| getAnOperand/getLeftOperand/getReceiver: [MethodCall] call to boo
# 320| getReceiver: [MethodCall] call to foo
# 320| getReceiver: [Self] self
# 320| getReceiver: [Self, SelfVariableAccess] self
# 320| getAnOperand/getArgument/getRightOperand: [IntegerLiteral] 1
# 320| getAnOperand/getRightOperand: [IntegerLiteral] 2
# 323| getStmt: [Method] foo
# 323| getStmt: [MethodCall] call to bar
# 323| getReceiver: [Self] self
# 323| getReceiver: [Self, SelfVariableAccess] self
# 324| getStmt: [Method] foo
# 324| getStmt: [MethodCall] call to bar
# 324| getReceiver: [Self] self
# 324| getReceiver: [Self, SelfVariableAccess] self
# 325| getStmt: [Method] foo
# 325| getParameter: [SimpleParameter] x
# 325| getDefiningAccess: [LocalVariableAccess] x
# 325| getStmt: [MethodCall] call to bar
# 325| getReceiver: [Self] self
# 325| getReceiver: [Self, SelfVariableAccess] self
# 326| getStmt: [SingletonMethod] foo
# 326| getObject: [ConstantReadAccess] Object
# 326| getStmt: [MethodCall] call to bar
# 326| getReceiver: [Self] self
# 326| getReceiver: [Self, SelfVariableAccess] self
# 327| getStmt: [SingletonMethod] foo
# 327| getObject: [ConstantReadAccess] Object
# 327| getParameter: [SimpleParameter] x
# 327| getDefiningAccess: [LocalVariableAccess] x
# 327| getStmt: [MethodCall] call to bar
# 327| getReceiver: [Self] self
# 327| getReceiver: [Self, SelfVariableAccess] self
# 328| getStmt: [Method] foo
# 328| getStmt: [RescueModifierExpr] ... rescue ...
# 328| getBody: [MethodCall] call to bar
# 328| getReceiver: [Self] self
# 328| getReceiver: [Self, SelfVariableAccess] self
# 328| getHandler: [ParenthesizedExpr] ( ... )
# 328| getStmt: [MethodCall] call to print
# 328| getReceiver: [Self] self
# 328| getReceiver: [Self, SelfVariableAccess] self
# 328| getArgument: [StringLiteral] "error"
# 328| getComponent: [StringTextComponent] error
# 331| getStmt: [Method] foo
@@ -652,7 +652,7 @@ calls/calls.rb:
# 335| getDefiningAccess: [LocalVariableAccess] b
# 335| getParameter: [ForwardParameter] ...
# 336| getStmt: [MethodCall] call to bar
# 336| getReceiver: [Self] self
# 336| getReceiver: [Self, SelfVariableAccess] self
# 336| getArgument: [LocalVariableAccess] b
# 336| getArgument: [ForwardedArguments] ...
control/cases.rb:
@@ -708,7 +708,7 @@ modules/classes.rb:
# 7| getSuperclassExpr: [ConstantReadAccess] BaseClass
# 11| getStmt: [ClassDeclaration] Baz
# 11| getSuperclassExpr: [MethodCall] call to superclass_for
# 11| getReceiver: [Self] self
# 11| getReceiver: [Self, SelfVariableAccess] self
# 11| getArgument: [SymbolLiteral] :baz
# 15| getStmt: [ModuleDeclaration] MyModule
# 16| getStmt: [ClassDeclaration] MyClass
@@ -716,16 +716,16 @@ modules/classes.rb:
# 20| getStmt: [ClassDeclaration] Wibble
# 21| getStmt: [Method] method_a
# 22| getStmt: [MethodCall] call to puts
# 22| getReceiver: [Self] self
# 22| getReceiver: [Self, SelfVariableAccess] self
# 22| getArgument: [StringLiteral] "a"
# 22| getComponent: [StringTextComponent] a
# 25| getStmt: [Method] method_b
# 26| getStmt: [MethodCall] call to puts
# 26| getReceiver: [Self] self
# 26| getReceiver: [Self, SelfVariableAccess] self
# 26| getArgument: [StringLiteral] "b"
# 26| getComponent: [StringTextComponent] b
# 29| getStmt: [MethodCall] call to some_method_call
# 29| getReceiver: [Self] self
# 29| getReceiver: [Self, SelfVariableAccess] self
# 30| getStmt: [AssignExpr] ... = ...
# 30| getAnOperand/getLeftOperand: [GlobalVariableAccess] $global_var
# 30| getAnOperand/getRightOperand: [IntegerLiteral] 123
@@ -743,11 +743,11 @@ modules/classes.rb:
# 43| getAnOperand/getArgument/getRightOperand: [SuperCall] call to super
# 46| getStmt: [Method] wibble
# 47| getStmt: [MethodCall] call to puts
# 47| getReceiver: [Self] self
# 47| getReceiver: [Self, SelfVariableAccess] self
# 47| getArgument: [StringLiteral] "wibble"
# 47| getComponent: [StringTextComponent] wibble
# 50| getStmt: [MethodCall] call to another_method_call
# 50| getReceiver: [Self] self
# 50| getReceiver: [Self, SelfVariableAccess] self
# 51| getStmt: [AssignExpr] ... = ...
# 51| getAnOperand/getLeftOperand: [GlobalVariableAccess] $global_var2
# 51| getAnOperand/getRightOperand: [IntegerLiteral] 456
@@ -918,7 +918,7 @@ constants/constants.rb:
# 22| getParameter: [SimpleParameter] name
# 22| getDefiningAccess: [LocalVariableAccess] name
# 23| getStmt: [MethodCall] call to puts
# 23| getReceiver: [Self] self
# 23| getReceiver: [Self, SelfVariableAccess] self
# 23| getArgument: [StringLiteral] "#{...} #{...}"
# 23| getComponent: [StringInterpolationComponent] #{...}
# 23| getStmt: [ConstantReadAccess] GREETING
@@ -926,7 +926,7 @@ constants/constants.rb:
# 23| getComponent: [StringInterpolationComponent] #{...}
# 23| getStmt: [LocalVariableAccess] name
# 28| getStmt: [MethodCall] call to Array
# 28| getReceiver: [Self] self
# 28| getReceiver: [Self, SelfVariableAccess] self
# 28| getArgument: [StringLiteral] "foo"
# 28| getComponent: [StringTextComponent] foo
# 31| getStmt: [ClassDeclaration] ClassD
@@ -941,15 +941,15 @@ constants/constants.rb:
# 37| getScopeExpr: [ConstantReadAccess] ModuleA
# 37| getAnOperand/getRightOperand: [IntegerLiteral] 1024
# 39| getStmt: [MethodCall] call to puts
# 39| getReceiver: [Self] self
# 39| getReceiver: [Self, SelfVariableAccess] self
# 39| getArgument: [ConstantReadAccess] MAX_SIZE
# 39| getScopeExpr: [ConstantReadAccess] ModuleB
# 39| getScopeExpr: [ConstantReadAccess] ModuleA
# 41| getStmt: [MethodCall] call to puts
# 41| getReceiver: [Self] self
# 41| getReceiver: [Self, SelfVariableAccess] self
# 41| getArgument: [ConstantReadAccess] GREETING
# 42| getStmt: [MethodCall] call to puts
# 42| getReceiver: [Self] self
# 42| getReceiver: [Self, SelfVariableAccess] self
# 42| getArgument: [ConstantReadAccess] GREETING
literals/literals.rb:
# 1| [Toplevel] literals.rb
@@ -1059,7 +1059,7 @@ literals/literals.rb:
# 66| getComponent: [StringTextComponent] foo
# 66| getComponent: [StringInterpolationComponent] #{...}
# 66| getStmt: [MethodCall] call to blah
# 66| getReceiver: [Self] self
# 66| getReceiver: [Self, SelfVariableAccess] self
# 66| getStmt: [AddExpr] ... + ...
# 66| getAnOperand/getLeftOperand/getReceiver: [IntegerLiteral] 1
# 66| getAnOperand/getArgument/getRightOperand: [IntegerLiteral] 9
@@ -1205,7 +1205,7 @@ literals/literals.rb:
# 114| getValue: [IntegerLiteral] 7
# 114| getElement: [HashSplatExpr] ** ...
# 114| getAnOperand/getOperand/getReceiver: [MethodCall] call to bar
# 114| getReceiver: [Self] self
# 114| getReceiver: [Self, SelfVariableAccess] self
# 117| getStmt: [ParenthesizedExpr] ( ... )
# 117| getStmt: [RangeLiteral] _ .. _
# 117| getBegin: [IntegerLiteral] 1
@@ -1221,7 +1221,7 @@ literals/literals.rb:
# 120| getStmt: [ParenthesizedExpr] ( ... )
# 120| getStmt: [RangeLiteral] _ .. _
# 120| getBegin: [MethodCall] call to start
# 120| getReceiver: [Self] self
# 120| getReceiver: [Self, SelfVariableAccess] self
# 120| getEnd: [AddExpr] ... + ...
# 120| getAnOperand/getLeftOperand/getReceiver: [IntegerLiteral] 2
# 120| getAnOperand/getArgument/getRightOperand: [IntegerLiteral] 3
@@ -1349,7 +1349,7 @@ literals/literals.rb:
# 148| getComponent: [StringEscapeSequenceComponent] \\
# 148| getComponent: [StringTextComponent] foobar
# 151| getStmt: [MethodCall] call to run_sql
# 151| getReceiver: [Self] self
# 151| getReceiver: [Self, SelfVariableAccess] self
# 151| getArgument: [HereDoc] <<SQL
# 151| getComponent: [StringTextComponent]
# 151| select * from table
@@ -1359,7 +1359,7 @@ literals/literals.rb:
# 153| where name =
# 154| getComponent: [StringInterpolationComponent] #{...}
# 154| getStmt: [MethodCall] call to name
# 154| getReceiver: [Self] self
# 154| getReceiver: [Self, SelfVariableAccess] self
# 154| getComponent: [StringTextComponent]
# 154|
# 157| getStmt: [Method] m
@@ -1384,7 +1384,7 @@ literals/literals.rb:
# 167| text with
# 168| getComponent: [StringInterpolationComponent] #{...}
# 168| getStmt: [MethodCall] call to interpolation
# 168| getReceiver: [Self] self
# 168| getReceiver: [Self, SelfVariableAccess] self
# 168| getComponent: [StringTextComponent] !
# 168|
# 172| getStmt: [AssignExpr] ... = ...
@@ -1394,7 +1394,7 @@ literals/literals.rb:
# 172| text without
# 173| getComponent: [StringInterpolationComponent] #{...}
# 173| getStmt: [MethodCall] call to interpolation
# 173| getReceiver: [Self] self
# 173| getReceiver: [Self, SelfVariableAccess] self
# 173| getComponent: [StringTextComponent] !
# 173|
# 176| getStmt: [AssignExpr] ... = ...
@@ -1552,7 +1552,7 @@ control/loops.rb:
misc/misc.erb:
# 2| [Toplevel] misc.erb
# 2| getStmt: [MethodCall] call to require_asset
# 2| getReceiver: [Self] self
# 2| getReceiver: [Self, SelfVariableAccess] self
# 2| getArgument: [StringLiteral] "main_include_admin.js"
# 2| getComponent: [StringTextComponent] main_include_admin.js
misc/misc.rb:
@@ -1602,7 +1602,7 @@ modules/modules.rb:
# 6| getStmt: [ClassDeclaration] ClassInFooBar
# 9| getStmt: [Method] method_in_foo_bar
# 12| getStmt: [MethodCall] call to puts
# 12| getReceiver: [Self] self
# 12| getReceiver: [Self, SelfVariableAccess] self
# 12| getArgument: [StringLiteral] "module Foo::Bar"
# 12| getComponent: [StringTextComponent] module Foo::Bar
# 13| getStmt: [AssignExpr] ... = ...
@@ -1611,7 +1611,7 @@ modules/modules.rb:
# 16| getStmt: [Method] method_in_foo
# 19| getStmt: [ClassDeclaration] ClassInFoo
# 22| getStmt: [MethodCall] call to puts
# 22| getReceiver: [Self] self
# 22| getReceiver: [Self, SelfVariableAccess] self
# 22| getArgument: [StringLiteral] "module Foo"
# 22| getComponent: [StringTextComponent] module Foo
# 23| getStmt: [AssignExpr] ... = ...
@@ -1621,7 +1621,7 @@ modules/modules.rb:
# 27| getStmt: [Method] method_in_another_definition_of_foo
# 30| getStmt: [ClassDeclaration] ClassInAnotherDefinitionOfFoo
# 33| getStmt: [MethodCall] call to puts
# 33| getReceiver: [Self] self
# 33| getReceiver: [Self, SelfVariableAccess] self
# 33| getArgument: [StringLiteral] "module Foo again"
# 33| getComponent: [StringTextComponent] module Foo again
# 34| getStmt: [AssignExpr] ... = ...
@@ -1631,7 +1631,7 @@ modules/modules.rb:
# 38| getStmt: [Method] method_a
# 41| getStmt: [Method] method_b
# 44| getStmt: [MethodCall] call to puts
# 44| getReceiver: [Self] self
# 44| getReceiver: [Self, SelfVariableAccess] self
# 44| getArgument: [StringLiteral] "module Bar"
# 44| getComponent: [StringTextComponent] module Bar
# 45| getStmt: [AssignExpr] ... = ...
@@ -1642,7 +1642,7 @@ modules/modules.rb:
# 49| getStmt: [ClassDeclaration] ClassInAnotherDefinitionOfFooBar
# 52| getStmt: [Method] method_in_another_definition_of_foo_bar
# 55| getStmt: [MethodCall] call to puts
# 55| getReceiver: [Self] self
# 55| getReceiver: [Self, SelfVariableAccess] self
# 55| getArgument: [StringLiteral] "module Foo::Bar again"
# 55| getComponent: [StringTextComponent] module Foo::Bar again
# 56| getStmt: [AssignExpr] ... = ...
@@ -1667,25 +1667,25 @@ modules/modules.rb:
# 84| getStmt: [ModuleDeclaration] Foo1
# 88| getStmt: [ModuleDeclaration] IncludeTest
# 89| getStmt: [MethodCall] call to include
# 89| getReceiver: [Self] self
# 89| getReceiver: [Self, SelfVariableAccess] self
# 89| getArgument: [ConstantReadAccess] Test
# 90| getStmt: [MethodCall] call to module_eval
# 90| getReceiver: [ConstantReadAccess] Object
# 90| getBlock: [BraceBlock] { ... }
# 90| getStmt: [MethodCall] call to prepend
# 90| getReceiver: [Self] self
# 90| getReceiver: [Self, SelfVariableAccess] self
# 90| getArgument: [ConstantReadAccess] Other
# 91| getStmt: [ModuleDeclaration] Y
# 91| getScopeExpr: [ConstantReadAccess] Foo1
# 95| getStmt: [ModuleDeclaration] IncludeTest2
# 96| getStmt: [MethodCall] call to include
# 96| getReceiver: [Self] self
# 96| getReceiver: [Self, SelfVariableAccess] self
# 96| getArgument: [ConstantReadAccess] Test
# 97| getStmt: [ModuleDeclaration] Z
# 97| getScopeExpr: [ConstantReadAccess] Foo1
# 101| getStmt: [ModuleDeclaration] PrependTest
# 102| getStmt: [MethodCall] call to prepend
# 102| getReceiver: [Self] self
# 102| getReceiver: [Self, SelfVariableAccess] self
# 102| getArgument: [ConstantReadAccess] Test
# 103| getStmt: [ModuleDeclaration] Y
# 103| getScopeExpr: [ConstantReadAccess] Foo2
@@ -1953,7 +1953,7 @@ params/params.rb:
# 9| getParameter: [SimpleParameter] value
# 9| getDefiningAccess: [LocalVariableAccess] value
# 10| getStmt: [MethodCall] call to puts
# 10| getReceiver: [Self] self
# 10| getReceiver: [Self, SelfVariableAccess] self
# 10| getArgument: [StringLiteral] "#{...} -> #{...}"
# 10| getComponent: [StringInterpolationComponent] #{...}
# 10| getStmt: [LocalVariableAccess] key
@@ -1985,7 +1985,7 @@ params/params.rb:
# 22| getElement: [LocalVariableAccess] a
# 22| getElement: [LocalVariableAccess] b
# 22| getStmt: [MethodCall] call to puts
# 22| getReceiver: [Self] self
# 22| getReceiver: [Self, SelfVariableAccess] self
# 22| getArgument: [AddExpr] ... + ...
# 22| getAnOperand/getLeftOperand/getReceiver: [LocalVariableAccess] a
# 22| getAnOperand/getArgument/getRightOperand: [LocalVariableAccess] b
@@ -2047,7 +2047,7 @@ params/params.rb:
# 46| getParameter: [BlockParameter] &block
# 46| getDefiningAccess: [LocalVariableAccess] block
# 47| getStmt: [MethodCall] call to puts
# 47| getReceiver: [Self] self
# 47| getReceiver: [Self, SelfVariableAccess] self
# 47| getArgument: [MethodCall] call to call
# 47| getReceiver: [LocalVariableAccess] block
# 47| getArgument: [Pair] Pair
@@ -2057,7 +2057,7 @@ params/params.rb:
# 47| getKey: [SymbolLiteral] :foo
# 47| getValue: [IntegerLiteral] 3
# 49| getStmt: [MethodCall] call to use_block_with_keyword
# 49| getReceiver: [Self] self
# 49| getReceiver: [Self, SelfVariableAccess] self
# 49| getBlock: [DoBlock] do ... end
# 49| getParameter: [KeywordParameter] xx
# 49| getDefiningAccess: [LocalVariableAccess] xx
@@ -2099,7 +2099,7 @@ params/params.rb:
# 63| getArgument: [StringLiteral] "Zeus"
# 63| getComponent: [StringTextComponent] Zeus
# 65| getStmt: [MethodCall] call to use_block_with_optional
# 65| getReceiver: [Self] self
# 65| getReceiver: [Self, SelfVariableAccess] self
# 65| getBlock: [DoBlock] do ... end
# 65| getParameter: [SimpleParameter] name
# 65| getDefiningAccess: [LocalVariableAccess] name
@@ -2107,7 +2107,7 @@ params/params.rb:
# 65| getDefiningAccess: [LocalVariableAccess] age
# 65| getDefaultValue: [IntegerLiteral] 99
# 66| getStmt: [MethodCall] call to puts
# 66| getReceiver: [Self] self
# 66| getReceiver: [Self, SelfVariableAccess] self
# 66| getArgument: [StringLiteral] "#{...} is #{...} years old"
# 66| getComponent: [StringInterpolationComponent] #{...}
# 66| getStmt: [LocalVariableAccess] name
@@ -2207,24 +2207,24 @@ gems/lib/test.rb:
# 1| [Toplevel] test.rb
# 1| getStmt: [ClassDeclaration] Foo
# 2| getStmt: [SingletonMethod] greet
# 2| getObject: [Self] self
# 2| getObject: [Self, SelfVariableAccess] self
# 3| getStmt: [MethodCall] call to puts
# 3| getReceiver: [Self] self
# 3| getReceiver: [Self, SelfVariableAccess] self
# 3| getArgument: [StringLiteral] "Hello"
# 3| getComponent: [StringTextComponent] Hello
modules/toplevel.rb:
# 1| [Toplevel] toplevel.rb
# 1| getStmt: [MethodCall] call to puts
# 1| getReceiver: [Self] self
# 1| getReceiver: [Self, SelfVariableAccess] self
# 1| getArgument: [StringLiteral] "world"
# 1| getComponent: [StringTextComponent] world
# 3| getStmt: [EndBlock] END { ... }
# 3| getStmt: [MethodCall] call to puts
# 3| getReceiver: [Self] self
# 3| getReceiver: [Self, SelfVariableAccess] self
# 3| getArgument: [StringLiteral] "!!!"
# 3| getComponent: [StringTextComponent] !!!
# 5| getBeginBlock: [BeginBlock] BEGIN { ... }
# 5| getStmt: [MethodCall] call to puts
# 5| getReceiver: [Self] self
# 5| getReceiver: [Self, SelfVariableAccess] self
# 5| getArgument: [StringLiteral] "hello"
# 5| getComponent: [StringTextComponent] hello

View File

@@ -3,7 +3,7 @@ calls/calls.rb:
# 58| getDesugared: [MethodCall] call to []
# 58| getReceiver: [ConstantReadAccess] Array
# 58| getArgument: [MethodCall] call to foo
# 58| getReceiver: [Self] self
# 58| getReceiver: [Self, SelfVariableAccess] self
# 59| [ArrayLiteral] [...]
# 59| getDesugared: [MethodCall] call to []
# 59| getReceiver: [ConstantReadAccess] Array
@@ -15,7 +15,7 @@ calls/calls.rb:
# 66| getAnOperand/getRightOperand: [AddExpr] ... + ...
# 66| getAnOperand/getLeftOperand/getReceiver: [LocalVariableAccess] var1
# 66| getAnOperand/getArgument/getRightOperand: [MethodCall] call to bar
# 66| getReceiver: [Self] self
# 66| getReceiver: [Self, SelfVariableAccess] self
# 67| [AssignAddExpr] ... += ...
# 67| getDesugared: [AssignExpr] ... = ...
# 67| getAnOperand/getLeftOperand: [LocalVariableAccess] var1
@@ -26,7 +26,7 @@ calls/calls.rb:
# 314| [AssignExpr] ... = ...
# 314| getDesugared: [StmtSequence] ...
# 314| getStmt: [SetterMethodCall] call to foo=
# 314| getReceiver: [Self] self
# 314| getReceiver: [Self, SelfVariableAccess] self
# 314| getArgument: [AssignExpr] ... = ...
# 314| getAnOperand/getLeftOperand: [LocalVariableAccess] __synth__0
# 314| getAnOperand/getRightOperand: [IntegerLiteral] 10
@@ -35,7 +35,7 @@ calls/calls.rb:
# 315| getDesugared: [StmtSequence] ...
# 315| getStmt: [SetterMethodCall] call to []=
# 315| getReceiver: [MethodCall] call to foo
# 315| getReceiver: [Self] self
# 315| getReceiver: [Self, SelfVariableAccess] self
# 315| getArgument: [AssignExpr] ... = ...
# 315| getAnOperand/getLeftOperand: [LocalVariableAccess] __synth__0
# 315| getAnOperand/getRightOperand: [IntegerLiteral] 10
@@ -47,7 +47,7 @@ calls/calls.rb:
# 316| getAnOperand/getLeftOperand: [MethodCall] call to foo
# 316| getDesugared: [StmtSequence] ...
# 316| getStmt: [SetterMethodCall] call to foo=
# 316| getReceiver: [Self] self
# 316| getReceiver: [Self, SelfVariableAccess] self
# 316| getArgument: [AssignExpr] ... = ...
# 316| getAnOperand/getRightOperand: [MethodCall] call to []
# 316| getArgument: [IntegerLiteral] 0
@@ -58,7 +58,7 @@ calls/calls.rb:
# 316| getAnOperand/getLeftOperand: [MethodCall] call to bar
# 316| getDesugared: [StmtSequence] ...
# 316| getStmt: [SetterMethodCall] call to bar=
# 316| getReceiver: [Self] self
# 316| getReceiver: [Self, SelfVariableAccess] self
# 316| getArgument: [AssignExpr] ... = ...
# 316| getAnOperand/getRightOperand: [MethodCall] call to []
# 316| getArgument: [RangeLiteral] _ .. _
@@ -72,7 +72,7 @@ calls/calls.rb:
# 316| getDesugared: [StmtSequence] ...
# 316| getStmt: [SetterMethodCall] call to []=
# 316| getReceiver: [MethodCall] call to foo
# 316| getReceiver: [Self] self
# 316| getReceiver: [Self, SelfVariableAccess] self
# 316| getArgument: [AssignExpr] ... = ...
# 316| getAnOperand/getRightOperand: [MethodCall] call to []
# 316| getArgument: [IntegerLiteral] -1
@@ -102,7 +102,7 @@ calls/calls.rb:
# 317| getDesugared: [StmtSequence] ...
# 317| getStmt: [SetterMethodCall] call to []=
# 317| getReceiver: [MethodCall] call to foo
# 317| getReceiver: [Self] self
# 317| getReceiver: [Self, SelfVariableAccess] self
# 317| getArgument: [AssignExpr] ... = ...
# 317| getAnOperand/getRightOperand: [MethodCall] call to []
# 317| getArgument: [RangeLiteral] _ .. _
@@ -124,7 +124,7 @@ calls/calls.rb:
# 318| [AssignAddExpr] ... += ...
# 318| getDesugared: [StmtSequence] ...
# 318| getStmt: [AssignExpr] ... = ...
# 318| getAnOperand/getRightOperand: [Self] self
# 318| getAnOperand/getRightOperand: [Self, SelfVariableAccess] self
# 318| getAnOperand/getLeftOperand: [LocalVariableAccess] __synth__0
# 318| getStmt: [SetterMethodCall] call to count=
# 318| getReceiver: [LocalVariableAccess] __synth__0
@@ -140,7 +140,7 @@ calls/calls.rb:
# 319| getDesugared: [StmtSequence] ...
# 319| getStmt: [AssignExpr] ... = ...
# 319| getAnOperand/getRightOperand: [MethodCall] call to foo
# 319| getReceiver: [Self] self
# 319| getReceiver: [Self, SelfVariableAccess] self
# 319| getAnOperand/getLeftOperand: [LocalVariableAccess] __synth__0
# 319| getStmt: [SetterMethodCall] call to []=
# 319| getReceiver: [LocalVariableAccess] __synth__0
@@ -162,7 +162,7 @@ calls/calls.rb:
# 320| getStmt: [AssignExpr] ... = ...
# 320| getAnOperand/getRightOperand: [MethodCall] call to bar
# 320| getReceiver: [MethodCall] call to foo
# 320| getReceiver: [Self] self
# 320| getReceiver: [Self, SelfVariableAccess] self
# 320| getAnOperand/getLeftOperand: [LocalVariableAccess] __synth__0
# 320| getStmt: [SetterMethodCall] call to []=
# 320| getReceiver: [LocalVariableAccess] __synth__0
@@ -176,13 +176,13 @@ calls/calls.rb:
# 320| getStmt: [AssignExpr] ... = ...
# 320| getAnOperand/getRightOperand: [MethodCall] call to baz
# 320| getReceiver: [MethodCall] call to foo
# 320| getReceiver: [Self] self
# 320| getReceiver: [Self, SelfVariableAccess] self
# 320| getAnOperand/getLeftOperand: [LocalVariableAccess] __synth__2
# 320| getStmt: [AssignExpr] ... = ...
# 320| getAnOperand/getRightOperand: [AddExpr] ... + ...
# 320| getAnOperand/getLeftOperand/getReceiver: [MethodCall] call to boo
# 320| getReceiver: [MethodCall] call to foo
# 320| getReceiver: [Self] self
# 320| getReceiver: [Self, SelfVariableAccess] self
# 320| getAnOperand/getArgument/getRightOperand: [IntegerLiteral] 1
# 320| getAnOperand/getLeftOperand: [LocalVariableAccess] __synth__3
# 320| getStmt: [AssignExpr] ... = ...

View File

@@ -1056,7 +1056,7 @@ cfg.rb:
#-----| -> ... = ...
# 54| ... = ...
#-----| -> Object
#-----| -> Silly
# 54| character
#-----| -> ?\x40
@@ -1065,7 +1065,7 @@ cfg.rb:
#-----| -> ... = ...
# 58| Silly
#-----| -> x
#-----| -> Object
# 58| Object
#-----| -> complex
@@ -1293,7 +1293,7 @@ cfg.rb:
#-----| -> self
# 69| print
#-----| -> Silly
#-----| -> x
# 69| exit print
@@ -1620,7 +1620,7 @@ cfg.rb:
#-----| -> #{...}
# 113| ... if ...
#-----| -> @field
#-----| -> C
# 113| call to puts
#-----| -> ... if ...
@@ -1642,7 +1642,7 @@ cfg.rb:
#-----| -> ... > ...
# 115| C
#-----| -> swap
#-----| -> @field
# 116| ... = ...
#-----| -> @@static_field
@@ -1654,7 +1654,7 @@ cfg.rb:
#-----| -> ... = ...
# 117| ... = ...
#-----| -> C
#-----| -> swap
# 117| @@static_field
#-----| -> 10
@@ -1663,7 +1663,7 @@ cfg.rb:
#-----| -> ... = ...
# 120| ... = ...
#-----| -> nothing
#-----| -> M
# 120| swap
#-----| -> -> { ... }
@@ -1701,7 +1701,7 @@ cfg.rb:
#-----| -> call to []
# 122| M
#-----| -> EmptyClass
#-----| -> nothing
# 123| ... = ...
#-----| -> some
@@ -1812,7 +1812,7 @@ cfg.rb:
#-----| -> #{...}
# 130| ... = ...
#-----| -> M
#-----| -> EmptyClass
# 130| Constant
#-----| -> 5
@@ -2832,7 +2832,7 @@ desugar.rb:
#-----| -> __synth__0
# 25| m7
#-----| -> @x
#-----| -> X
# 25| exit m7
@@ -2939,7 +2939,7 @@ desugar.rb:
#-----| -> call to []
# 29| X
#-----| -> $global_var
#-----| -> @x
# 30| ... = ...
#-----| -> @x
@@ -2978,7 +2978,7 @@ desugar.rb:
#-----| -> @@y
# 34| ... = ...
#-----| -> X
#-----| -> $global_var
# 34| @@y
#-----| -> 4
@@ -3907,7 +3907,7 @@ loops.rb:
raise.rb:
# 1| enter raise.rb
#-----| -> Exception
#-----| -> ExceptionA
# 1| ExceptionA
#-----| -> Exception
@@ -3918,13 +3918,13 @@ raise.rb:
#-----| -> exit raise.rb
# 1| Exception
#-----| -> ExceptionA
#-----| -> ExceptionB
# 4| ExceptionB
#-----| -> m1
#-----| -> Exception
# 4| Exception
#-----| -> ExceptionB
#-----| -> m1
# 7| enter m1
#-----| -> x
@@ -5070,7 +5070,7 @@ raise.rb:
#-----| -> self
# 158| m15
#-----| -> self
#-----| -> C
# 158| exit m15
@@ -5134,13 +5134,13 @@ raise.rb:
#-----| false -> self
# 166| C
#-----| -> exit raise.rb (normal)
#-----| -> self
# 167| enter m
#-----| -> self
# 167| m
#-----| -> C
#-----| -> exit raise.rb (normal)
# 167| exit m

View File

@@ -1,3 +1,6 @@
| local_dataflow.rb:1:1:7:3 | self (foo) | local_dataflow.rb:3:8:3:10 | self |
| local_dataflow.rb:1:1:7:3 | self (local_dataflow.rb) | local_dataflow.rb:11:1:11:2 | self |
| local_dataflow.rb:1:1:7:3 | self (local_dataflow.rb) | local_dataflow.rb:49:1:53:3 | self |
| local_dataflow.rb:1:1:7:3 | self in foo | local_dataflow.rb:3:8:3:10 | self |
| local_dataflow.rb:1:9:1:9 | a | local_dataflow.rb:1:9:1:9 | a |
| local_dataflow.rb:1:9:1:9 | a | local_dataflow.rb:2:7:2:7 | a |
@@ -27,7 +30,13 @@
| local_dataflow.rb:10:9:10:9 | x | local_dataflow.rb:12:5:12:5 | x |
| local_dataflow.rb:10:14:10:18 | array | local_dataflow.rb:10:5:13:3 | for ... in ... |
| local_dataflow.rb:10:14:10:18 | array | local_dataflow.rb:15:10:15:14 | array |
| local_dataflow.rb:11:1:11:2 | [post] self | local_dataflow.rb:12:3:12:5 | self |
| local_dataflow.rb:11:1:11:2 | self | local_dataflow.rb:12:3:12:5 | self |
| local_dataflow.rb:12:3:12:5 | [post] self | local_dataflow.rb:11:1:11:2 | self |
| local_dataflow.rb:12:3:12:5 | [post] self | local_dataflow.rb:49:1:53:3 | self |
| local_dataflow.rb:12:3:12:5 | call to p | local_dataflow.rb:10:19:13:3 | do ... |
| local_dataflow.rb:12:3:12:5 | self | local_dataflow.rb:11:1:11:2 | self |
| local_dataflow.rb:12:3:12:5 | self | local_dataflow.rb:49:1:53:3 | self |
| local_dataflow.rb:15:10:15:14 | array | local_dataflow.rb:15:1:17:3 | for ... in ... |
| local_dataflow.rb:15:10:15:14 | array | local_dataflow.rb:19:10:19:14 | array |
| local_dataflow.rb:16:3:16:10 | break | local_dataflow.rb:15:1:17:3 | for ... in ... |
@@ -51,6 +60,8 @@
| local_dataflow.rb:41:7:41:7 | x | local_dataflow.rb:42:6:42:6 | x |
| local_dataflow.rb:43:13:43:13 | 7 | local_dataflow.rb:43:6:43:13 | return |
| local_dataflow.rb:45:10:45:10 | 6 | local_dataflow.rb:45:3:45:10 | return |
| local_dataflow.rb:49:1:53:3 | [post] self | local_dataflow.rb:55:1:55:14 | self |
| local_dataflow.rb:49:1:53:3 | self | local_dataflow.rb:55:1:55:14 | self |
| local_dataflow.rb:49:3:53:3 | <captured> | local_dataflow.rb:50:18:50:18 | x |
| local_dataflow.rb:50:8:50:13 | "next" | local_dataflow.rb:50:3:50:13 | next |
| local_dataflow.rb:50:18:50:18 | [post] x | local_dataflow.rb:51:20:51:20 | x |

View File

@@ -1,46 +1,78 @@
definition
| class_variables.rb:1:1:1:3 | self (class_variables.rb) | class_variables.rb:1:1:29:4 | self |
| class_variables.rb:5:1:7:3 | self (print) | class_variables.rb:5:1:7:3 | self |
| class_variables.rb:9:1:16:3 | self (X) | class_variables.rb:9:1:16:3 | self |
| class_variables.rb:10:3:12:5 | self (b) | class_variables.rb:10:3:12:5 | self |
| class_variables.rb:13:3:15:5 | self (s) | class_variables.rb:13:3:15:5 | self |
| class_variables.rb:26:1:29:3 | self (N) | class_variables.rb:26:1:29:3 | self |
| instance_variables.rb:1:1:1:4 | self (instance_variables.rb) | instance_variables.rb:1:1:44:4 | self |
| instance_variables.rb:7:1:9:3 | self (print_foo) | instance_variables.rb:7:1:9:3 | self |
| instance_variables.rb:37:3:43:5 | self (x) | instance_variables.rb:37:3:43:5 | self |
| nested_scopes.rb:1:1:3:3 | self (a) | nested_scopes.rb:1:1:3:3 | self |
| nested_scopes.rb:4:1:39:3 | self (C) | nested_scopes.rb:4:1:39:3 | self |
| nested_scopes.rb:5:3:5:7 | ... = ... | nested_scopes.rb:5:3:5:3 | a |
| nested_scopes.rb:6:3:37:5 | self (M) | nested_scopes.rb:6:3:37:5 | self |
| nested_scopes.rb:7:5:7:9 | ... = ... | nested_scopes.rb:7:5:7:5 | a |
| nested_scopes.rb:8:5:35:7 | self (N) | nested_scopes.rb:8:5:35:7 | self |
| nested_scopes.rb:9:7:9:11 | ... = ... | nested_scopes.rb:9:7:9:7 | a |
| nested_scopes.rb:10:7:26:9 | self (D) | nested_scopes.rb:10:7:26:9 | self |
| nested_scopes.rb:11:9:11:13 | ... = ... | nested_scopes.rb:11:9:11:9 | a |
| nested_scopes.rb:12:9:21:11 | self (show_a) | nested_scopes.rb:12:9:21:11 | self |
| nested_scopes.rb:13:11:13:15 | ... = ... | nested_scopes.rb:13:11:13:11 | a |
| nested_scopes.rb:15:23:15:23 | a | nested_scopes.rb:15:23:15:23 | a |
| nested_scopes.rb:17:15:17:19 | ... = ... | nested_scopes.rb:16:29:16:29 | a |
| nested_scopes.rb:18:23:18:36 | <captured> | nested_scopes.rb:12:9:21:11 | self |
| nested_scopes.rb:18:23:18:36 | <captured> | nested_scopes.rb:16:29:16:29 | a |
| nested_scopes.rb:22:9:24:11 | self (show_a2) | nested_scopes.rb:22:9:24:11 | self |
| nested_scopes.rb:22:21:22:21 | a | nested_scopes.rb:22:21:22:21 | a |
| nested_scopes.rb:27:7:29:9 | self (show) | nested_scopes.rb:27:7:29:9 | self |
| nested_scopes.rb:30:16:30:19 | self (class << ...) | nested_scopes.rb:30:7:33:9 | self |
| nested_scopes.rb:31:11:31:16 | ... = ... | nested_scopes.rb:31:11:31:11 | a |
| nested_scopes.rb:40:1:40:18 | ... = ... | nested_scopes.rb:40:1:40:1 | d |
| parameters.rb:1:9:5:3 | <captured> | parameters.rb:1:1:58:1 | self |
| parameters.rb:1:14:1:14 | x | parameters.rb:1:14:1:14 | x |
| parameters.rb:2:4:2:8 | ... = ... | parameters.rb:1:18:1:18 | y |
| parameters.rb:7:1:13:3 | self (order_pizza) | parameters.rb:7:1:13:3 | self |
| parameters.rb:7:17:7:22 | client | parameters.rb:7:17:7:22 | client |
| parameters.rb:7:26:7:31 | pizzas | parameters.rb:7:26:7:31 | pizzas |
| parameters.rb:15:17:15:19 | map | parameters.rb:15:17:15:19 | map |
| parameters.rb:16:12:18:5 | <captured> | parameters.rb:15:1:19:3 | self |
| parameters.rb:16:16:16:18 | key | parameters.rb:16:16:16:18 | key |
| parameters.rb:16:21:16:25 | value | parameters.rb:16:21:16:25 | value |
| parameters.rb:21:17:21:21 | block | parameters.rb:21:17:21:21 | block |
| parameters.rb:25:1:28:3 | self (opt_param) | parameters.rb:25:1:28:3 | self |
| parameters.rb:25:15:25:18 | name | parameters.rb:25:15:25:18 | name |
| parameters.rb:25:33:25:36 | size | parameters.rb:25:33:25:36 | size |
| parameters.rb:30:1:32:3 | self (key_param) | parameters.rb:30:1:32:3 | self |
| parameters.rb:30:15:30:19 | first | parameters.rb:30:15:30:19 | first |
| parameters.rb:30:24:30:29 | middle | parameters.rb:30:24:30:29 | middle |
| parameters.rb:30:36:30:39 | last | parameters.rb:30:36:30:39 | last |
| parameters.rb:35:1:38:3 | <uninitialized> | parameters.rb:35:16:35:16 | b |
| parameters.rb:35:1:38:3 | self (multi) | parameters.rb:35:1:38:3 | self |
| parameters.rb:35:11:35:11 | a | parameters.rb:35:11:35:11 | a |
| parameters.rb:35:16:35:20 | ... = ... | parameters.rb:35:16:35:16 | b |
| parameters.rb:37:3:37:18 | phi | parameters.rb:35:16:35:16 | b |
| parameters.rb:40:1:43:3 | <uninitialized> | parameters.rb:40:15:40:15 | e |
| parameters.rb:40:1:43:3 | self (multi2) | parameters.rb:40:1:43:3 | self |
| parameters.rb:40:12:40:12 | d | parameters.rb:40:12:40:12 | d |
| parameters.rb:40:15:40:19 | ... = ... | parameters.rb:40:15:40:15 | e |
| parameters.rb:42:3:42:18 | phi | parameters.rb:40:15:40:15 | e |
| parameters.rb:45:1:47:3 | self (dup_underscore) | parameters.rb:45:1:47:3 | self |
| parameters.rb:45:20:45:20 | _ | parameters.rb:45:20:45:20 | _ |
| parameters.rb:49:1:51:3 | self (tuples) | parameters.rb:49:1:51:3 | self |
| parameters.rb:49:13:49:13 | a | parameters.rb:49:13:49:13 | a |
| parameters.rb:49:15:49:15 | b | parameters.rb:49:15:49:15 | b |
| parameters.rb:53:1:53:6 | ... = ... | parameters.rb:53:1:53:1 | x |
| parameters.rb:54:9:57:3 | <captured> | parameters.rb:1:1:58:1 | self |
| parameters.rb:54:9:57:3 | <captured> | parameters.rb:53:1:53:1 | x |
| parameters.rb:54:14:54:14 | y | parameters.rb:54:14:54:14 | y |
| parameters.rb:54:19:54:23 | ... = ... | parameters.rb:53:1:53:1 | x |
| parameters.rb:55:4:55:9 | phi | parameters.rb:53:1:53:1 | x |
| scopes.rb:1:1:1:15 | self (scopes.rb) | scopes.rb:1:1:49:4 | self |
| scopes.rb:2:9:6:3 | <captured> | scopes.rb:1:1:49:4 | self |
| scopes.rb:4:4:4:8 | ... = ... | scopes.rb:4:4:4:4 | a |
| scopes.rb:7:1:7:5 | ... = ... | scopes.rb:7:1:7:1 | a |
| scopes.rb:9:9:18:3 | <captured> | scopes.rb:1:1:49:4 | self |
| scopes.rb:9:9:18:3 | <captured> | scopes.rb:7:1:7:1 | a |
| scopes.rb:11:4:11:9 | ... = ... | scopes.rb:7:1:7:1 | a |
| scopes.rb:13:4:13:4 | ... = ... | scopes.rb:7:1:7:1 | a |
@@ -50,83 +82,149 @@ definition
| scopes.rb:13:14:13:14 | ... = ... | scopes.rb:13:14:13:14 | d |
| scopes.rb:13:19:13:32 | ... = ... | scopes.rb:13:4:13:32 | __synth__0 |
| scopes.rb:27:1:27:5 | ... = ... | scopes.rb:27:1:27:1 | x |
| scopes.rb:41:1:49:3 | self (M) | scopes.rb:41:1:49:3 | self |
| scopes.rb:42:2:42:9 | ... = ... | scopes.rb:42:2:42:4 | var |
| scopes.rb:46:5:46:13 | ... = ... | scopes.rb:46:5:46:8 | var2 |
| ssa.rb:1:1:16:3 | self (m) | ssa.rb:1:1:16:3 | self |
| ssa.rb:1:7:1:7 | b | ssa.rb:1:7:1:7 | b |
| ssa.rb:2:3:2:7 | ... = ... | ssa.rb:2:3:2:3 | i |
| ssa.rb:5:3:13:5 | phi | ssa.rb:2:3:2:3 | i |
| ssa.rb:6:5:6:9 | ... = ... | ssa.rb:2:3:2:3 | i |
| ssa.rb:10:5:10:9 | ... = ... | ssa.rb:2:3:2:3 | i |
| ssa.rb:18:1:23:3 | self (m1) | ssa.rb:18:1:23:3 | self |
| ssa.rb:18:8:18:8 | x | ssa.rb:18:8:18:8 | x |
| ssa.rb:19:9:19:9 | phi | ssa.rb:18:8:18:8 | x |
| ssa.rb:21:5:21:10 | ... = ... | ssa.rb:18:8:18:8 | x |
| ssa.rb:25:1:30:3 | <uninitialized> | ssa.rb:26:7:26:10 | elem |
| ssa.rb:25:1:30:3 | self (m2) | ssa.rb:25:1:30:3 | self |
| ssa.rb:25:8:25:15 | elements | ssa.rb:25:8:25:15 | elements |
| ssa.rb:26:7:26:10 | elem | ssa.rb:26:7:26:10 | elem |
| ssa.rb:26:12:26:22 | phi | ssa.rb:26:7:26:10 | elem |
| ssa.rb:33:16:35:5 | <captured> | ssa.rb:32:1:36:3 | self |
| ssa.rb:33:20:33:20 | x | ssa.rb:33:20:33:20 | x |
| ssa.rb:38:1:42:3 | self (m4) | ssa.rb:38:1:42:3 | self |
| ssa.rb:40:3:40:9 | ... = ... | ssa.rb:40:3:40:4 | m3 |
| ssa.rb:44:1:47:3 | <uninitialized> | ssa.rb:45:3:45:3 | x |
| ssa.rb:44:1:47:3 | self (m5) | ssa.rb:44:1:47:3 | self |
| ssa.rb:44:8:44:8 | b | ssa.rb:44:8:44:8 | b |
| ssa.rb:45:3:45:7 | ... = ... | ssa.rb:45:3:45:3 | x |
| ssa.rb:45:3:45:12 | phi | ssa.rb:45:3:45:3 | x |
| ssa.rb:49:1:51:3 | <uninitialized> | ssa.rb:49:14:49:14 | y |
| ssa.rb:49:1:51:3 | self (m6) | ssa.rb:49:1:51:3 | self |
| ssa.rb:49:14:49:19 | ... = ... | ssa.rb:49:14:49:14 | y |
| ssa.rb:50:3:50:8 | phi | ssa.rb:49:14:49:14 | y |
| ssa.rb:53:1:56:3 | self (m7) | ssa.rb:53:1:56:3 | self |
| ssa.rb:53:8:53:10 | foo | ssa.rb:53:8:53:10 | foo |
| ssa.rb:54:3:54:11 | ... = ... | ssa.rb:54:3:54:3 | x |
| ssa.rb:58:1:62:3 | self (m8) | ssa.rb:58:1:62:3 | self |
| ssa.rb:59:3:59:8 | ... = ... | ssa.rb:59:3:59:3 | x |
| ssa.rb:60:3:60:9 | ... = ... | ssa.rb:59:3:59:3 | x |
| ssa.rb:64:1:72:3 | self (m9) | ssa.rb:64:1:72:3 | self |
| ssa.rb:64:8:64:8 | a | ssa.rb:64:8:64:8 | a |
| ssa.rb:65:3:65:15 | ... = ... | ssa.rb:65:3:65:10 | captured |
| ssa.rb:66:3:70:5 | call to times | ssa.rb:65:3:65:10 | captured |
| ssa.rb:66:11:70:5 | <captured> | ssa.rb:64:1:72:3 | self |
| ssa.rb:66:11:70:5 | <captured> | ssa.rb:65:3:65:10 | captured |
| ssa.rb:66:15:66:15 | a | ssa.rb:66:15:66:15 | a |
| ssa.rb:69:5:69:17 | ... = ... | ssa.rb:65:3:65:10 | captured |
| ssa.rb:74:1:79:3 | self (m10) | ssa.rb:74:1:79:3 | self |
| ssa.rb:75:3:75:14 | ... = ... | ssa.rb:75:3:75:10 | captured |
| ssa.rb:76:7:78:5 | <captured> | ssa.rb:74:1:79:3 | self |
| ssa.rb:76:7:78:5 | <captured> | ssa.rb:75:3:75:10 | captured |
| ssa.rb:81:1:88:3 | self (m11) | ssa.rb:81:1:88:3 | self |
| ssa.rb:82:3:82:14 | ... = ... | ssa.rb:82:3:82:10 | captured |
| ssa.rb:83:7:87:5 | <captured> | ssa.rb:81:1:88:3 | self |
| ssa.rb:84:10:86:8 | <captured> | ssa.rb:81:1:88:3 | self |
| ssa.rb:84:10:86:8 | <captured> | ssa.rb:82:3:82:10 | captured |
read
| class_variables.rb:1:1:1:3 | self (class_variables.rb) | class_variables.rb:1:1:29:4 | self | class_variables.rb:3:1:3:5 | self |
| class_variables.rb:5:1:7:3 | self (print) | class_variables.rb:5:1:7:3 | self | class_variables.rb:6:2:6:6 | self |
| class_variables.rb:9:1:16:3 | self (X) | class_variables.rb:9:1:16:3 | self | class_variables.rb:13:7:13:10 | self |
| class_variables.rb:10:3:12:5 | self (b) | class_variables.rb:10:3:12:5 | self | class_variables.rb:11:5:11:9 | self |
| class_variables.rb:13:3:15:5 | self (s) | class_variables.rb:13:3:15:5 | self | class_variables.rb:14:4:14:8 | self |
| class_variables.rb:26:1:29:3 | self (N) | class_variables.rb:26:1:29:3 | self | class_variables.rb:27:3:27:11 | self |
| class_variables.rb:26:1:29:3 | self (N) | class_variables.rb:26:1:29:3 | self | class_variables.rb:28:3:28:7 | self |
| instance_variables.rb:1:1:1:4 | self (instance_variables.rb) | instance_variables.rb:1:1:44:4 | self | instance_variables.rb:11:1:11:9 | self |
| instance_variables.rb:1:1:1:4 | self (instance_variables.rb) | instance_variables.rb:1:1:44:4 | self | instance_variables.rb:27:1:29:1 | self |
| instance_variables.rb:7:1:9:3 | self (print_foo) | instance_variables.rb:7:1:9:3 | self | instance_variables.rb:8:3:8:11 | self |
| instance_variables.rb:37:3:43:5 | self (x) | instance_variables.rb:37:3:43:5 | self | instance_variables.rb:41:4:41:4 | self |
| instance_variables.rb:37:3:43:5 | self (x) | instance_variables.rb:37:3:43:5 | self | instance_variables.rb:42:4:42:7 | self |
| nested_scopes.rb:1:1:3:3 | self (a) | nested_scopes.rb:1:1:3:3 | self | nested_scopes.rb:2:3:2:17 | self |
| nested_scopes.rb:4:1:39:3 | self (C) | nested_scopes.rb:4:1:39:3 | self | nested_scopes.rb:38:3:38:8 | self |
| nested_scopes.rb:5:3:5:7 | ... = ... | nested_scopes.rb:5:3:5:3 | a | nested_scopes.rb:38:8:38:8 | a |
| nested_scopes.rb:6:3:37:5 | self (M) | nested_scopes.rb:6:3:37:5 | self | nested_scopes.rb:36:5:36:10 | self |
| nested_scopes.rb:7:5:7:9 | ... = ... | nested_scopes.rb:7:5:7:5 | a | nested_scopes.rb:36:10:36:10 | a |
| nested_scopes.rb:8:5:35:7 | self (N) | nested_scopes.rb:8:5:35:7 | self | nested_scopes.rb:27:11:27:14 | self |
| nested_scopes.rb:8:5:35:7 | self (N) | nested_scopes.rb:8:5:35:7 | self | nested_scopes.rb:30:16:30:19 | self |
| nested_scopes.rb:8:5:35:7 | self (N) | nested_scopes.rb:8:5:35:7 | self | nested_scopes.rb:34:7:34:12 | self |
| nested_scopes.rb:9:7:9:11 | ... = ... | nested_scopes.rb:9:7:9:7 | a | nested_scopes.rb:34:12:34:12 | a |
| nested_scopes.rb:10:7:26:9 | self (D) | nested_scopes.rb:10:7:26:9 | self | nested_scopes.rb:25:9:25:14 | self |
| nested_scopes.rb:11:9:11:13 | ... = ... | nested_scopes.rb:11:9:11:9 | a | nested_scopes.rb:25:14:25:14 | a |
| nested_scopes.rb:12:9:21:11 | self (show_a) | nested_scopes.rb:12:9:21:11 | self | nested_scopes.rb:14:11:14:16 | self |
| nested_scopes.rb:13:11:13:15 | ... = ... | nested_scopes.rb:13:11:13:11 | a | nested_scopes.rb:14:16:14:16 | a |
| nested_scopes.rb:13:11:13:15 | ... = ... | nested_scopes.rb:13:11:13:11 | a | nested_scopes.rb:15:11:15:11 | a |
| nested_scopes.rb:15:23:15:23 | a | nested_scopes.rb:15:23:15:23 | a | nested_scopes.rb:16:13:16:13 | a |
| nested_scopes.rb:17:15:17:19 | ... = ... | nested_scopes.rb:16:29:16:29 | a | nested_scopes.rb:18:15:18:15 | a |
| nested_scopes.rb:18:23:18:36 | <captured> | nested_scopes.rb:12:9:21:11 | self | nested_scopes.rb:18:29:18:34 | self |
| nested_scopes.rb:18:23:18:36 | <captured> | nested_scopes.rb:16:29:16:29 | a | nested_scopes.rb:18:34:18:34 | a |
| nested_scopes.rb:22:9:24:11 | self (show_a2) | nested_scopes.rb:22:9:24:11 | self | nested_scopes.rb:23:11:23:16 | self |
| nested_scopes.rb:22:21:22:21 | a | nested_scopes.rb:22:21:22:21 | a | nested_scopes.rb:23:16:23:16 | a |
| nested_scopes.rb:27:7:29:9 | self (show) | nested_scopes.rb:27:7:29:9 | self | nested_scopes.rb:28:11:28:16 | self |
| nested_scopes.rb:27:7:29:9 | self (show) | nested_scopes.rb:27:7:29:9 | self | nested_scopes.rb:28:16:28:16 | self |
| nested_scopes.rb:30:16:30:19 | self (class << ...) | nested_scopes.rb:30:7:33:9 | self | nested_scopes.rb:32:11:32:16 | self |
| nested_scopes.rb:31:11:31:16 | ... = ... | nested_scopes.rb:31:11:31:11 | a | nested_scopes.rb:32:16:32:16 | a |
| nested_scopes.rb:40:1:40:18 | ... = ... | nested_scopes.rb:40:1:40:1 | d | nested_scopes.rb:41:1:41:1 | d |
| parameters.rb:1:9:5:3 | <captured> | parameters.rb:1:1:58:1 | self | parameters.rb:3:4:3:9 | self |
| parameters.rb:1:9:5:3 | <captured> | parameters.rb:1:1:58:1 | self | parameters.rb:4:4:4:9 | self |
| parameters.rb:1:14:1:14 | x | parameters.rb:1:14:1:14 | x | parameters.rb:3:9:3:9 | x |
| parameters.rb:2:4:2:8 | ... = ... | parameters.rb:1:18:1:18 | y | parameters.rb:4:9:4:9 | y |
| parameters.rb:7:1:13:3 | self (order_pizza) | parameters.rb:7:1:13:3 | self | parameters.rb:9:5:9:33 | self |
| parameters.rb:7:1:13:3 | self (order_pizza) | parameters.rb:7:1:13:3 | self | parameters.rb:11:5:11:49 | self |
| parameters.rb:7:17:7:22 | client | parameters.rb:7:17:7:22 | client | parameters.rb:9:25:9:30 | client |
| parameters.rb:7:17:7:22 | client | parameters.rb:7:17:7:22 | client | parameters.rb:11:41:11:46 | client |
| parameters.rb:7:26:7:31 | pizzas | parameters.rb:7:26:7:31 | pizzas | parameters.rb:8:6:8:11 | pizzas |
| parameters.rb:7:26:7:31 | pizzas | parameters.rb:7:26:7:31 | pizzas | parameters.rb:11:14:11:19 | pizzas |
| parameters.rb:15:17:15:19 | map | parameters.rb:15:17:15:19 | map | parameters.rb:16:3:16:5 | map |
| parameters.rb:16:12:18:5 | <captured> | parameters.rb:15:1:19:3 | self | parameters.rb:17:5:17:28 | self |
| parameters.rb:16:16:16:18 | key | parameters.rb:16:16:16:18 | key | parameters.rb:17:13:17:15 | key |
| parameters.rb:16:21:16:25 | value | parameters.rb:16:21:16:25 | value | parameters.rb:17:22:17:26 | value |
| parameters.rb:21:17:21:21 | block | parameters.rb:21:17:21:21 | block | parameters.rb:22:3:22:7 | block |
| parameters.rb:25:1:28:3 | self (opt_param) | parameters.rb:25:1:28:3 | self | parameters.rb:26:3:26:11 | self |
| parameters.rb:25:1:28:3 | self (opt_param) | parameters.rb:25:1:28:3 | self | parameters.rb:27:3:27:11 | self |
| parameters.rb:25:15:25:18 | name | parameters.rb:25:15:25:18 | name | parameters.rb:25:40:25:43 | name |
| parameters.rb:25:15:25:18 | name | parameters.rb:25:15:25:18 | name | parameters.rb:26:8:26:11 | name |
| parameters.rb:25:33:25:36 | size | parameters.rb:25:33:25:36 | size | parameters.rb:27:8:27:11 | size |
| parameters.rb:30:1:32:3 | self (key_param) | parameters.rb:30:1:32:3 | self | parameters.rb:31:3:31:35 | self |
| parameters.rb:30:15:30:19 | first | parameters.rb:30:15:30:19 | first | parameters.rb:31:11:31:15 | first |
| parameters.rb:30:24:30:29 | middle | parameters.rb:30:24:30:29 | middle | parameters.rb:31:20:31:25 | middle |
| parameters.rb:30:36:30:39 | last | parameters.rb:30:36:30:39 | last | parameters.rb:31:30:31:33 | last |
| parameters.rb:35:1:38:3 | self (multi) | parameters.rb:35:1:38:3 | self | parameters.rb:37:3:37:18 | self |
| parameters.rb:35:11:35:11 | a | parameters.rb:35:11:35:11 | a | parameters.rb:37:11:37:11 | a |
| parameters.rb:37:3:37:18 | phi | parameters.rb:35:16:35:16 | b | parameters.rb:37:16:37:16 | b |
| parameters.rb:40:1:43:3 | self (multi2) | parameters.rb:40:1:43:3 | self | parameters.rb:42:3:42:18 | self |
| parameters.rb:40:12:40:12 | d | parameters.rb:40:12:40:12 | d | parameters.rb:42:11:42:11 | d |
| parameters.rb:42:3:42:18 | phi | parameters.rb:40:15:40:15 | e | parameters.rb:42:16:42:16 | e |
| parameters.rb:45:1:47:3 | self (dup_underscore) | parameters.rb:45:1:47:3 | self | parameters.rb:46:3:46:8 | self |
| parameters.rb:45:20:45:20 | _ | parameters.rb:45:20:45:20 | _ | parameters.rb:46:8:46:8 | _ |
| parameters.rb:49:1:51:3 | self (tuples) | parameters.rb:49:1:51:3 | self | parameters.rb:50:3:50:18 | self |
| parameters.rb:49:13:49:13 | a | parameters.rb:49:13:49:13 | a | parameters.rb:50:11:50:11 | a |
| parameters.rb:49:15:49:15 | b | parameters.rb:49:15:49:15 | b | parameters.rb:50:16:50:16 | b |
| parameters.rb:54:9:57:3 | <captured> | parameters.rb:1:1:58:1 | self | parameters.rb:55:4:55:9 | self |
| parameters.rb:54:9:57:3 | <captured> | parameters.rb:1:1:58:1 | self | parameters.rb:56:4:56:9 | self |
| parameters.rb:54:14:54:14 | y | parameters.rb:54:14:54:14 | y | parameters.rb:56:9:56:9 | y |
| parameters.rb:55:4:55:9 | phi | parameters.rb:53:1:53:1 | x | parameters.rb:55:9:55:9 | x |
| scopes.rb:1:1:1:15 | self (scopes.rb) | scopes.rb:1:1:49:4 | self | scopes.rb:8:1:8:6 | self |
| scopes.rb:2:9:6:3 | <captured> | scopes.rb:1:1:49:4 | self | scopes.rb:3:4:3:9 | self |
| scopes.rb:2:9:6:3 | <captured> | scopes.rb:1:1:49:4 | self | scopes.rb:3:9:3:9 | self |
| scopes.rb:2:9:6:3 | <captured> | scopes.rb:1:1:49:4 | self | scopes.rb:5:4:5:9 | self |
| scopes.rb:4:4:4:8 | ... = ... | scopes.rb:4:4:4:4 | a | scopes.rb:5:9:5:9 | a |
| scopes.rb:7:1:7:5 | ... = ... | scopes.rb:7:1:7:1 | a | scopes.rb:8:6:8:6 | a |
| scopes.rb:9:9:18:3 | <captured> | scopes.rb:1:1:49:4 | self | scopes.rb:10:4:10:9 | self |
| scopes.rb:9:9:18:3 | <captured> | scopes.rb:1:1:49:4 | self | scopes.rb:12:4:12:9 | self |
| scopes.rb:9:9:18:3 | <captured> | scopes.rb:1:1:49:4 | self | scopes.rb:14:4:14:9 | self |
| scopes.rb:9:9:18:3 | <captured> | scopes.rb:1:1:49:4 | self | scopes.rb:15:4:15:9 | self |
| scopes.rb:9:9:18:3 | <captured> | scopes.rb:1:1:49:4 | self | scopes.rb:16:4:16:9 | self |
| scopes.rb:9:9:18:3 | <captured> | scopes.rb:1:1:49:4 | self | scopes.rb:17:4:17:9 | self |
| scopes.rb:9:9:18:3 | <captured> | scopes.rb:7:1:7:1 | a | scopes.rb:10:9:10:9 | a |
| scopes.rb:9:9:18:3 | <captured> | scopes.rb:7:1:7:1 | a | scopes.rb:11:4:11:4 | a |
| scopes.rb:11:4:11:9 | ... = ... | scopes.rb:7:1:7:1 | a | scopes.rb:12:9:12:9 | a |
@@ -144,8 +242,16 @@ read
| scopes.rb:27:1:27:5 | ... = ... | scopes.rb:27:1:27:1 | x | scopes.rb:34:7:34:7 | x |
| scopes.rb:27:1:27:5 | ... = ... | scopes.rb:27:1:27:1 | x | scopes.rb:34:14:34:14 | x |
| scopes.rb:27:1:27:5 | ... = ... | scopes.rb:27:1:27:1 | x | scopes.rb:37:5:37:5 | x |
| scopes.rb:41:1:49:3 | self (M) | scopes.rb:41:1:49:3 | self | scopes.rb:45:5:45:7 | self |
| scopes.rb:42:2:42:9 | ... = ... | scopes.rb:42:2:42:4 | var | scopes.rb:44:5:44:7 | var |
| scopes.rb:46:5:46:13 | ... = ... | scopes.rb:46:5:46:8 | var2 | scopes.rb:47:5:47:8 | var2 |
| ssa.rb:1:1:16:3 | self (m) | ssa.rb:1:1:16:3 | self | ssa.rb:3:3:3:8 | self |
| ssa.rb:1:1:16:3 | self (m) | ssa.rb:1:1:16:3 | self | ssa.rb:4:3:4:12 | self |
| ssa.rb:1:1:16:3 | self (m) | ssa.rb:1:1:16:3 | self | ssa.rb:7:5:7:10 | self |
| ssa.rb:1:1:16:3 | self (m) | ssa.rb:1:1:16:3 | self | ssa.rb:8:5:8:14 | self |
| ssa.rb:1:1:16:3 | self (m) | ssa.rb:1:1:16:3 | self | ssa.rb:11:5:11:10 | self |
| ssa.rb:1:1:16:3 | self (m) | ssa.rb:1:1:16:3 | self | ssa.rb:12:5:12:14 | self |
| ssa.rb:1:1:16:3 | self (m) | ssa.rb:1:1:16:3 | self | ssa.rb:15:3:15:8 | self |
| ssa.rb:1:7:1:7 | b | ssa.rb:1:7:1:7 | b | ssa.rb:5:6:5:6 | b |
| ssa.rb:2:3:2:7 | ... = ... | ssa.rb:2:3:2:3 | i | ssa.rb:3:8:3:8 | i |
| ssa.rb:2:3:2:7 | ... = ... | ssa.rb:2:3:2:3 | i | ssa.rb:4:8:4:8 | i |
@@ -154,66 +260,118 @@ read
| ssa.rb:6:5:6:9 | ... = ... | ssa.rb:2:3:2:3 | i | ssa.rb:8:10:8:10 | i |
| ssa.rb:10:5:10:9 | ... = ... | ssa.rb:2:3:2:3 | i | ssa.rb:11:10:11:10 | i |
| ssa.rb:10:5:10:9 | ... = ... | ssa.rb:2:3:2:3 | i | ssa.rb:12:10:12:10 | i |
| ssa.rb:18:1:23:3 | self (m1) | ssa.rb:18:1:23:3 | self | ssa.rb:20:5:20:10 | self |
| ssa.rb:19:9:19:9 | phi | ssa.rb:18:8:18:8 | x | ssa.rb:19:9:19:9 | x |
| ssa.rb:19:9:19:9 | phi | ssa.rb:18:8:18:8 | x | ssa.rb:20:10:20:10 | x |
| ssa.rb:19:9:19:9 | phi | ssa.rb:18:8:18:8 | x | ssa.rb:21:5:21:5 | x |
| ssa.rb:25:1:30:3 | self (m2) | ssa.rb:25:1:30:3 | self | ssa.rb:27:5:27:13 | self |
| ssa.rb:25:1:30:3 | self (m2) | ssa.rb:25:1:30:3 | self | ssa.rb:29:3:29:11 | self |
| ssa.rb:25:8:25:15 | elements | ssa.rb:25:8:25:15 | elements | ssa.rb:26:15:26:22 | elements |
| ssa.rb:26:7:26:10 | elem | ssa.rb:26:7:26:10 | elem | ssa.rb:27:10:27:13 | elem |
| ssa.rb:26:12:26:22 | phi | ssa.rb:26:7:26:10 | elem | ssa.rb:29:8:29:11 | elem |
| ssa.rb:33:16:35:5 | <captured> | ssa.rb:32:1:36:3 | self | ssa.rb:34:5:34:10 | self |
| ssa.rb:33:20:33:20 | x | ssa.rb:33:20:33:20 | x | ssa.rb:34:10:34:10 | x |
| ssa.rb:38:1:42:3 | self (m4) | ssa.rb:38:1:42:3 | self | ssa.rb:39:3:39:9 | self |
| ssa.rb:38:1:42:3 | self (m4) | ssa.rb:38:1:42:3 | self | ssa.rb:39:8:39:9 | self |
| ssa.rb:38:1:42:3 | self (m4) | ssa.rb:38:1:42:3 | self | ssa.rb:41:3:41:13 | self |
| ssa.rb:40:3:40:9 | ... = ... | ssa.rb:40:3:40:4 | m3 | ssa.rb:41:8:41:9 | m3 |
| ssa.rb:44:1:47:3 | self (m5) | ssa.rb:44:1:47:3 | self | ssa.rb:46:3:46:8 | self |
| ssa.rb:44:8:44:8 | b | ssa.rb:44:8:44:8 | b | ssa.rb:45:12:45:12 | b |
| ssa.rb:45:3:45:12 | phi | ssa.rb:45:3:45:3 | x | ssa.rb:46:8:46:8 | x |
| ssa.rb:49:1:51:3 | self (m6) | ssa.rb:49:1:51:3 | self | ssa.rb:50:3:50:8 | self |
| ssa.rb:50:3:50:8 | phi | ssa.rb:49:14:49:14 | y | ssa.rb:50:8:50:8 | y |
| ssa.rb:53:1:56:3 | self (m7) | ssa.rb:53:1:56:3 | self | ssa.rb:55:3:55:8 | self |
| ssa.rb:53:8:53:10 | foo | ssa.rb:53:8:53:10 | foo | ssa.rb:54:7:54:9 | foo |
| ssa.rb:54:3:54:11 | ... = ... | ssa.rb:54:3:54:3 | x | ssa.rb:55:8:55:8 | x |
| ssa.rb:58:1:62:3 | self (m8) | ssa.rb:58:1:62:3 | self | ssa.rb:61:3:61:8 | self |
| ssa.rb:59:3:59:8 | ... = ... | ssa.rb:59:3:59:3 | x | ssa.rb:60:3:60:3 | x |
| ssa.rb:60:3:60:9 | ... = ... | ssa.rb:59:3:59:3 | x | ssa.rb:61:8:61:8 | x |
| ssa.rb:64:1:72:3 | self (m9) | ssa.rb:64:1:72:3 | self | ssa.rb:71:3:71:15 | self |
| ssa.rb:64:8:64:8 | a | ssa.rb:64:8:64:8 | a | ssa.rb:66:3:66:3 | a |
| ssa.rb:66:3:70:5 | call to times | ssa.rb:65:3:65:10 | captured | ssa.rb:71:8:71:15 | captured |
| ssa.rb:66:11:70:5 | <captured> | ssa.rb:64:1:72:3 | self | ssa.rb:67:5:67:10 | self |
| ssa.rb:66:11:70:5 | <captured> | ssa.rb:64:1:72:3 | self | ssa.rb:68:5:68:17 | self |
| ssa.rb:66:11:70:5 | <captured> | ssa.rb:65:3:65:10 | captured | ssa.rb:68:10:68:17 | captured |
| ssa.rb:66:11:70:5 | <captured> | ssa.rb:65:3:65:10 | captured | ssa.rb:69:5:69:12 | captured |
| ssa.rb:66:15:66:15 | a | ssa.rb:66:15:66:15 | a | ssa.rb:67:10:67:10 | a |
| ssa.rb:74:1:79:3 | self (m10) | ssa.rb:74:1:79:3 | self | ssa.rb:76:3:78:5 | self |
| ssa.rb:76:7:78:5 | <captured> | ssa.rb:74:1:79:3 | self | ssa.rb:77:6:77:23 | self |
| ssa.rb:76:7:78:5 | <captured> | ssa.rb:75:3:75:10 | captured | ssa.rb:77:15:77:22 | captured |
| ssa.rb:81:1:88:3 | self (m11) | ssa.rb:81:1:88:3 | self | ssa.rb:83:3:87:5 | self |
| ssa.rb:83:7:87:5 | <captured> | ssa.rb:81:1:88:3 | self | ssa.rb:84:6:86:8 | self |
| ssa.rb:84:10:86:8 | <captured> | ssa.rb:81:1:88:3 | self | ssa.rb:85:10:85:22 | self |
| ssa.rb:84:10:86:8 | <captured> | ssa.rb:82:3:82:10 | captured | ssa.rb:85:15:85:22 | captured |
firstRead
| class_variables.rb:1:1:1:3 | self (class_variables.rb) | class_variables.rb:1:1:29:4 | self | class_variables.rb:3:1:3:5 | self |
| class_variables.rb:5:1:7:3 | self (print) | class_variables.rb:5:1:7:3 | self | class_variables.rb:6:2:6:6 | self |
| class_variables.rb:9:1:16:3 | self (X) | class_variables.rb:9:1:16:3 | self | class_variables.rb:13:7:13:10 | self |
| class_variables.rb:10:3:12:5 | self (b) | class_variables.rb:10:3:12:5 | self | class_variables.rb:11:5:11:9 | self |
| class_variables.rb:13:3:15:5 | self (s) | class_variables.rb:13:3:15:5 | self | class_variables.rb:14:4:14:8 | self |
| class_variables.rb:26:1:29:3 | self (N) | class_variables.rb:26:1:29:3 | self | class_variables.rb:27:3:27:11 | self |
| instance_variables.rb:1:1:1:4 | self (instance_variables.rb) | instance_variables.rb:1:1:44:4 | self | instance_variables.rb:11:1:11:9 | self |
| instance_variables.rb:7:1:9:3 | self (print_foo) | instance_variables.rb:7:1:9:3 | self | instance_variables.rb:8:3:8:11 | self |
| instance_variables.rb:37:3:43:5 | self (x) | instance_variables.rb:37:3:43:5 | self | instance_variables.rb:41:4:41:4 | self |
| nested_scopes.rb:1:1:3:3 | self (a) | nested_scopes.rb:1:1:3:3 | self | nested_scopes.rb:2:3:2:17 | self |
| nested_scopes.rb:4:1:39:3 | self (C) | nested_scopes.rb:4:1:39:3 | self | nested_scopes.rb:38:3:38:8 | self |
| nested_scopes.rb:5:3:5:7 | ... = ... | nested_scopes.rb:5:3:5:3 | a | nested_scopes.rb:38:8:38:8 | a |
| nested_scopes.rb:6:3:37:5 | self (M) | nested_scopes.rb:6:3:37:5 | self | nested_scopes.rb:36:5:36:10 | self |
| nested_scopes.rb:7:5:7:9 | ... = ... | nested_scopes.rb:7:5:7:5 | a | nested_scopes.rb:36:10:36:10 | a |
| nested_scopes.rb:8:5:35:7 | self (N) | nested_scopes.rb:8:5:35:7 | self | nested_scopes.rb:27:11:27:14 | self |
| nested_scopes.rb:9:7:9:11 | ... = ... | nested_scopes.rb:9:7:9:7 | a | nested_scopes.rb:34:12:34:12 | a |
| nested_scopes.rb:10:7:26:9 | self (D) | nested_scopes.rb:10:7:26:9 | self | nested_scopes.rb:25:9:25:14 | self |
| nested_scopes.rb:11:9:11:13 | ... = ... | nested_scopes.rb:11:9:11:9 | a | nested_scopes.rb:25:14:25:14 | a |
| nested_scopes.rb:12:9:21:11 | self (show_a) | nested_scopes.rb:12:9:21:11 | self | nested_scopes.rb:14:11:14:16 | self |
| nested_scopes.rb:13:11:13:15 | ... = ... | nested_scopes.rb:13:11:13:11 | a | nested_scopes.rb:14:16:14:16 | a |
| nested_scopes.rb:15:23:15:23 | a | nested_scopes.rb:15:23:15:23 | a | nested_scopes.rb:16:13:16:13 | a |
| nested_scopes.rb:17:15:17:19 | ... = ... | nested_scopes.rb:16:29:16:29 | a | nested_scopes.rb:18:15:18:15 | a |
| nested_scopes.rb:18:23:18:36 | <captured> | nested_scopes.rb:12:9:21:11 | self | nested_scopes.rb:18:29:18:34 | self |
| nested_scopes.rb:18:23:18:36 | <captured> | nested_scopes.rb:16:29:16:29 | a | nested_scopes.rb:18:34:18:34 | a |
| nested_scopes.rb:22:9:24:11 | self (show_a2) | nested_scopes.rb:22:9:24:11 | self | nested_scopes.rb:23:11:23:16 | self |
| nested_scopes.rb:22:21:22:21 | a | nested_scopes.rb:22:21:22:21 | a | nested_scopes.rb:23:16:23:16 | a |
| nested_scopes.rb:27:7:29:9 | self (show) | nested_scopes.rb:27:7:29:9 | self | nested_scopes.rb:28:11:28:16 | self |
| nested_scopes.rb:30:16:30:19 | self (class << ...) | nested_scopes.rb:30:7:33:9 | self | nested_scopes.rb:32:11:32:16 | self |
| nested_scopes.rb:31:11:31:16 | ... = ... | nested_scopes.rb:31:11:31:11 | a | nested_scopes.rb:32:16:32:16 | a |
| nested_scopes.rb:40:1:40:18 | ... = ... | nested_scopes.rb:40:1:40:1 | d | nested_scopes.rb:41:1:41:1 | d |
| parameters.rb:1:9:5:3 | <captured> | parameters.rb:1:1:58:1 | self | parameters.rb:3:4:3:9 | self |
| parameters.rb:1:14:1:14 | x | parameters.rb:1:14:1:14 | x | parameters.rb:3:9:3:9 | x |
| parameters.rb:2:4:2:8 | ... = ... | parameters.rb:1:18:1:18 | y | parameters.rb:4:9:4:9 | y |
| parameters.rb:7:1:13:3 | self (order_pizza) | parameters.rb:7:1:13:3 | self | parameters.rb:9:5:9:33 | self |
| parameters.rb:7:1:13:3 | self (order_pizza) | parameters.rb:7:1:13:3 | self | parameters.rb:11:5:11:49 | self |
| parameters.rb:7:17:7:22 | client | parameters.rb:7:17:7:22 | client | parameters.rb:9:25:9:30 | client |
| parameters.rb:7:17:7:22 | client | parameters.rb:7:17:7:22 | client | parameters.rb:11:41:11:46 | client |
| parameters.rb:7:26:7:31 | pizzas | parameters.rb:7:26:7:31 | pizzas | parameters.rb:8:6:8:11 | pizzas |
| parameters.rb:15:17:15:19 | map | parameters.rb:15:17:15:19 | map | parameters.rb:16:3:16:5 | map |
| parameters.rb:16:12:18:5 | <captured> | parameters.rb:15:1:19:3 | self | parameters.rb:17:5:17:28 | self |
| parameters.rb:16:16:16:18 | key | parameters.rb:16:16:16:18 | key | parameters.rb:17:13:17:15 | key |
| parameters.rb:16:21:16:25 | value | parameters.rb:16:21:16:25 | value | parameters.rb:17:22:17:26 | value |
| parameters.rb:21:17:21:21 | block | parameters.rb:21:17:21:21 | block | parameters.rb:22:3:22:7 | block |
| parameters.rb:25:1:28:3 | self (opt_param) | parameters.rb:25:1:28:3 | self | parameters.rb:26:3:26:11 | self |
| parameters.rb:25:15:25:18 | name | parameters.rb:25:15:25:18 | name | parameters.rb:25:40:25:43 | name |
| parameters.rb:25:15:25:18 | name | parameters.rb:25:15:25:18 | name | parameters.rb:26:8:26:11 | name |
| parameters.rb:25:33:25:36 | size | parameters.rb:25:33:25:36 | size | parameters.rb:27:8:27:11 | size |
| parameters.rb:30:1:32:3 | self (key_param) | parameters.rb:30:1:32:3 | self | parameters.rb:31:3:31:35 | self |
| parameters.rb:30:15:30:19 | first | parameters.rb:30:15:30:19 | first | parameters.rb:31:11:31:15 | first |
| parameters.rb:30:24:30:29 | middle | parameters.rb:30:24:30:29 | middle | parameters.rb:31:20:31:25 | middle |
| parameters.rb:30:36:30:39 | last | parameters.rb:30:36:30:39 | last | parameters.rb:31:30:31:33 | last |
| parameters.rb:35:1:38:3 | self (multi) | parameters.rb:35:1:38:3 | self | parameters.rb:37:3:37:18 | self |
| parameters.rb:35:11:35:11 | a | parameters.rb:35:11:35:11 | a | parameters.rb:37:11:37:11 | a |
| parameters.rb:37:3:37:18 | phi | parameters.rb:35:16:35:16 | b | parameters.rb:37:16:37:16 | b |
| parameters.rb:40:1:43:3 | self (multi2) | parameters.rb:40:1:43:3 | self | parameters.rb:42:3:42:18 | self |
| parameters.rb:40:12:40:12 | d | parameters.rb:40:12:40:12 | d | parameters.rb:42:11:42:11 | d |
| parameters.rb:42:3:42:18 | phi | parameters.rb:40:15:40:15 | e | parameters.rb:42:16:42:16 | e |
| parameters.rb:45:1:47:3 | self (dup_underscore) | parameters.rb:45:1:47:3 | self | parameters.rb:46:3:46:8 | self |
| parameters.rb:45:20:45:20 | _ | parameters.rb:45:20:45:20 | _ | parameters.rb:46:8:46:8 | _ |
| parameters.rb:49:1:51:3 | self (tuples) | parameters.rb:49:1:51:3 | self | parameters.rb:50:3:50:18 | self |
| parameters.rb:49:13:49:13 | a | parameters.rb:49:13:49:13 | a | parameters.rb:50:11:50:11 | a |
| parameters.rb:49:15:49:15 | b | parameters.rb:49:15:49:15 | b | parameters.rb:50:16:50:16 | b |
| parameters.rb:54:9:57:3 | <captured> | parameters.rb:1:1:58:1 | self | parameters.rb:55:4:55:9 | self |
| parameters.rb:54:14:54:14 | y | parameters.rb:54:14:54:14 | y | parameters.rb:56:9:56:9 | y |
| parameters.rb:55:4:55:9 | phi | parameters.rb:53:1:53:1 | x | parameters.rb:55:9:55:9 | x |
| scopes.rb:1:1:1:15 | self (scopes.rb) | scopes.rb:1:1:49:4 | self | scopes.rb:8:1:8:6 | self |
| scopes.rb:2:9:6:3 | <captured> | scopes.rb:1:1:49:4 | self | scopes.rb:3:4:3:9 | self |
| scopes.rb:4:4:4:8 | ... = ... | scopes.rb:4:4:4:4 | a | scopes.rb:5:9:5:9 | a |
| scopes.rb:7:1:7:5 | ... = ... | scopes.rb:7:1:7:1 | a | scopes.rb:8:6:8:6 | a |
| scopes.rb:9:9:18:3 | <captured> | scopes.rb:1:1:49:4 | self | scopes.rb:10:4:10:9 | self |
| scopes.rb:9:9:18:3 | <captured> | scopes.rb:7:1:7:1 | a | scopes.rb:10:9:10:9 | a |
| scopes.rb:11:4:11:9 | ... = ... | scopes.rb:7:1:7:1 | a | scopes.rb:12:9:12:9 | a |
| scopes.rb:13:4:13:4 | ... = ... | scopes.rb:7:1:7:1 | a | scopes.rb:14:9:14:9 | a |
@@ -223,70 +381,121 @@ firstRead
| scopes.rb:13:14:13:14 | ... = ... | scopes.rb:13:14:13:14 | d | scopes.rb:17:9:17:9 | d |
| scopes.rb:13:19:13:32 | ... = ... | scopes.rb:13:4:13:32 | __synth__0 | scopes.rb:13:4:13:4 | __synth__0 |
| scopes.rb:27:1:27:5 | ... = ... | scopes.rb:27:1:27:1 | x | scopes.rb:28:8:28:8 | x |
| scopes.rb:41:1:49:3 | self (M) | scopes.rb:41:1:49:3 | self | scopes.rb:45:5:45:7 | self |
| scopes.rb:42:2:42:9 | ... = ... | scopes.rb:42:2:42:4 | var | scopes.rb:44:5:44:7 | var |
| scopes.rb:46:5:46:13 | ... = ... | scopes.rb:46:5:46:8 | var2 | scopes.rb:47:5:47:8 | var2 |
| ssa.rb:1:1:16:3 | self (m) | ssa.rb:1:1:16:3 | self | ssa.rb:3:3:3:8 | self |
| ssa.rb:1:7:1:7 | b | ssa.rb:1:7:1:7 | b | ssa.rb:5:6:5:6 | b |
| ssa.rb:2:3:2:7 | ... = ... | ssa.rb:2:3:2:3 | i | ssa.rb:3:8:3:8 | i |
| ssa.rb:5:3:13:5 | phi | ssa.rb:2:3:2:3 | i | ssa.rb:15:8:15:8 | i |
| ssa.rb:6:5:6:9 | ... = ... | ssa.rb:2:3:2:3 | i | ssa.rb:7:10:7:10 | i |
| ssa.rb:10:5:10:9 | ... = ... | ssa.rb:2:3:2:3 | i | ssa.rb:11:10:11:10 | i |
| ssa.rb:18:1:23:3 | self (m1) | ssa.rb:18:1:23:3 | self | ssa.rb:20:5:20:10 | self |
| ssa.rb:19:9:19:9 | phi | ssa.rb:18:8:18:8 | x | ssa.rb:19:9:19:9 | x |
| ssa.rb:25:1:30:3 | self (m2) | ssa.rb:25:1:30:3 | self | ssa.rb:27:5:27:13 | self |
| ssa.rb:25:1:30:3 | self (m2) | ssa.rb:25:1:30:3 | self | ssa.rb:29:3:29:11 | self |
| ssa.rb:25:8:25:15 | elements | ssa.rb:25:8:25:15 | elements | ssa.rb:26:15:26:22 | elements |
| ssa.rb:26:7:26:10 | elem | ssa.rb:26:7:26:10 | elem | ssa.rb:27:10:27:13 | elem |
| ssa.rb:26:12:26:22 | phi | ssa.rb:26:7:26:10 | elem | ssa.rb:29:8:29:11 | elem |
| ssa.rb:33:16:35:5 | <captured> | ssa.rb:32:1:36:3 | self | ssa.rb:34:5:34:10 | self |
| ssa.rb:33:20:33:20 | x | ssa.rb:33:20:33:20 | x | ssa.rb:34:10:34:10 | x |
| ssa.rb:38:1:42:3 | self (m4) | ssa.rb:38:1:42:3 | self | ssa.rb:39:3:39:9 | self |
| ssa.rb:40:3:40:9 | ... = ... | ssa.rb:40:3:40:4 | m3 | ssa.rb:41:8:41:9 | m3 |
| ssa.rb:44:1:47:3 | self (m5) | ssa.rb:44:1:47:3 | self | ssa.rb:46:3:46:8 | self |
| ssa.rb:44:8:44:8 | b | ssa.rb:44:8:44:8 | b | ssa.rb:45:12:45:12 | b |
| ssa.rb:45:3:45:12 | phi | ssa.rb:45:3:45:3 | x | ssa.rb:46:8:46:8 | x |
| ssa.rb:49:1:51:3 | self (m6) | ssa.rb:49:1:51:3 | self | ssa.rb:50:3:50:8 | self |
| ssa.rb:50:3:50:8 | phi | ssa.rb:49:14:49:14 | y | ssa.rb:50:8:50:8 | y |
| ssa.rb:53:1:56:3 | self (m7) | ssa.rb:53:1:56:3 | self | ssa.rb:55:3:55:8 | self |
| ssa.rb:53:8:53:10 | foo | ssa.rb:53:8:53:10 | foo | ssa.rb:54:7:54:9 | foo |
| ssa.rb:54:3:54:11 | ... = ... | ssa.rb:54:3:54:3 | x | ssa.rb:55:8:55:8 | x |
| ssa.rb:58:1:62:3 | self (m8) | ssa.rb:58:1:62:3 | self | ssa.rb:61:3:61:8 | self |
| ssa.rb:59:3:59:8 | ... = ... | ssa.rb:59:3:59:3 | x | ssa.rb:60:3:60:3 | x |
| ssa.rb:60:3:60:9 | ... = ... | ssa.rb:59:3:59:3 | x | ssa.rb:61:8:61:8 | x |
| ssa.rb:64:1:72:3 | self (m9) | ssa.rb:64:1:72:3 | self | ssa.rb:71:3:71:15 | self |
| ssa.rb:64:8:64:8 | a | ssa.rb:64:8:64:8 | a | ssa.rb:66:3:66:3 | a |
| ssa.rb:66:3:70:5 | call to times | ssa.rb:65:3:65:10 | captured | ssa.rb:71:8:71:15 | captured |
| ssa.rb:66:11:70:5 | <captured> | ssa.rb:64:1:72:3 | self | ssa.rb:67:5:67:10 | self |
| ssa.rb:66:11:70:5 | <captured> | ssa.rb:65:3:65:10 | captured | ssa.rb:68:10:68:17 | captured |
| ssa.rb:66:15:66:15 | a | ssa.rb:66:15:66:15 | a | ssa.rb:67:10:67:10 | a |
| ssa.rb:74:1:79:3 | self (m10) | ssa.rb:74:1:79:3 | self | ssa.rb:76:3:78:5 | self |
| ssa.rb:76:7:78:5 | <captured> | ssa.rb:74:1:79:3 | self | ssa.rb:77:6:77:23 | self |
| ssa.rb:76:7:78:5 | <captured> | ssa.rb:75:3:75:10 | captured | ssa.rb:77:15:77:22 | captured |
| ssa.rb:81:1:88:3 | self (m11) | ssa.rb:81:1:88:3 | self | ssa.rb:83:3:87:5 | self |
| ssa.rb:83:7:87:5 | <captured> | ssa.rb:81:1:88:3 | self | ssa.rb:84:6:86:8 | self |
| ssa.rb:84:10:86:8 | <captured> | ssa.rb:81:1:88:3 | self | ssa.rb:85:10:85:22 | self |
| ssa.rb:84:10:86:8 | <captured> | ssa.rb:82:3:82:10 | captured | ssa.rb:85:15:85:22 | captured |
lastRead
| class_variables.rb:1:1:1:3 | self (class_variables.rb) | class_variables.rb:1:1:29:4 | self | class_variables.rb:3:1:3:5 | self |
| class_variables.rb:5:1:7:3 | self (print) | class_variables.rb:5:1:7:3 | self | class_variables.rb:6:2:6:6 | self |
| class_variables.rb:9:1:16:3 | self (X) | class_variables.rb:9:1:16:3 | self | class_variables.rb:13:7:13:10 | self |
| class_variables.rb:10:3:12:5 | self (b) | class_variables.rb:10:3:12:5 | self | class_variables.rb:11:5:11:9 | self |
| class_variables.rb:13:3:15:5 | self (s) | class_variables.rb:13:3:15:5 | self | class_variables.rb:14:4:14:8 | self |
| class_variables.rb:26:1:29:3 | self (N) | class_variables.rb:26:1:29:3 | self | class_variables.rb:28:3:28:7 | self |
| instance_variables.rb:1:1:1:4 | self (instance_variables.rb) | instance_variables.rb:1:1:44:4 | self | instance_variables.rb:27:1:29:1 | self |
| instance_variables.rb:7:1:9:3 | self (print_foo) | instance_variables.rb:7:1:9:3 | self | instance_variables.rb:8:3:8:11 | self |
| instance_variables.rb:37:3:43:5 | self (x) | instance_variables.rb:37:3:43:5 | self | instance_variables.rb:42:4:42:7 | self |
| nested_scopes.rb:1:1:3:3 | self (a) | nested_scopes.rb:1:1:3:3 | self | nested_scopes.rb:2:3:2:17 | self |
| nested_scopes.rb:4:1:39:3 | self (C) | nested_scopes.rb:4:1:39:3 | self | nested_scopes.rb:38:3:38:8 | self |
| nested_scopes.rb:5:3:5:7 | ... = ... | nested_scopes.rb:5:3:5:3 | a | nested_scopes.rb:38:8:38:8 | a |
| nested_scopes.rb:6:3:37:5 | self (M) | nested_scopes.rb:6:3:37:5 | self | nested_scopes.rb:36:5:36:10 | self |
| nested_scopes.rb:7:5:7:9 | ... = ... | nested_scopes.rb:7:5:7:5 | a | nested_scopes.rb:36:10:36:10 | a |
| nested_scopes.rb:8:5:35:7 | self (N) | nested_scopes.rb:8:5:35:7 | self | nested_scopes.rb:34:7:34:12 | self |
| nested_scopes.rb:9:7:9:11 | ... = ... | nested_scopes.rb:9:7:9:7 | a | nested_scopes.rb:34:12:34:12 | a |
| nested_scopes.rb:10:7:26:9 | self (D) | nested_scopes.rb:10:7:26:9 | self | nested_scopes.rb:25:9:25:14 | self |
| nested_scopes.rb:11:9:11:13 | ... = ... | nested_scopes.rb:11:9:11:9 | a | nested_scopes.rb:25:14:25:14 | a |
| nested_scopes.rb:12:9:21:11 | self (show_a) | nested_scopes.rb:12:9:21:11 | self | nested_scopes.rb:14:11:14:16 | self |
| nested_scopes.rb:13:11:13:15 | ... = ... | nested_scopes.rb:13:11:13:11 | a | nested_scopes.rb:15:11:15:11 | a |
| nested_scopes.rb:15:23:15:23 | a | nested_scopes.rb:15:23:15:23 | a | nested_scopes.rb:16:13:16:13 | a |
| nested_scopes.rb:17:15:17:19 | ... = ... | nested_scopes.rb:16:29:16:29 | a | nested_scopes.rb:18:15:18:15 | a |
| nested_scopes.rb:18:23:18:36 | <captured> | nested_scopes.rb:12:9:21:11 | self | nested_scopes.rb:18:29:18:34 | self |
| nested_scopes.rb:18:23:18:36 | <captured> | nested_scopes.rb:16:29:16:29 | a | nested_scopes.rb:18:34:18:34 | a |
| nested_scopes.rb:22:9:24:11 | self (show_a2) | nested_scopes.rb:22:9:24:11 | self | nested_scopes.rb:23:11:23:16 | self |
| nested_scopes.rb:22:21:22:21 | a | nested_scopes.rb:22:21:22:21 | a | nested_scopes.rb:23:16:23:16 | a |
| nested_scopes.rb:27:7:29:9 | self (show) | nested_scopes.rb:27:7:29:9 | self | nested_scopes.rb:28:16:28:16 | self |
| nested_scopes.rb:30:16:30:19 | self (class << ...) | nested_scopes.rb:30:7:33:9 | self | nested_scopes.rb:32:11:32:16 | self |
| nested_scopes.rb:31:11:31:16 | ... = ... | nested_scopes.rb:31:11:31:11 | a | nested_scopes.rb:32:16:32:16 | a |
| nested_scopes.rb:40:1:40:18 | ... = ... | nested_scopes.rb:40:1:40:1 | d | nested_scopes.rb:41:1:41:1 | d |
| parameters.rb:1:9:5:3 | <captured> | parameters.rb:1:1:58:1 | self | parameters.rb:4:4:4:9 | self |
| parameters.rb:1:14:1:14 | x | parameters.rb:1:14:1:14 | x | parameters.rb:3:9:3:9 | x |
| parameters.rb:2:4:2:8 | ... = ... | parameters.rb:1:18:1:18 | y | parameters.rb:4:9:4:9 | y |
| parameters.rb:7:1:13:3 | self (order_pizza) | parameters.rb:7:1:13:3 | self | parameters.rb:9:5:9:33 | self |
| parameters.rb:7:1:13:3 | self (order_pizza) | parameters.rb:7:1:13:3 | self | parameters.rb:11:5:11:49 | self |
| parameters.rb:7:17:7:22 | client | parameters.rb:7:17:7:22 | client | parameters.rb:9:25:9:30 | client |
| parameters.rb:7:17:7:22 | client | parameters.rb:7:17:7:22 | client | parameters.rb:11:41:11:46 | client |
| parameters.rb:7:26:7:31 | pizzas | parameters.rb:7:26:7:31 | pizzas | parameters.rb:8:6:8:11 | pizzas |
| parameters.rb:7:26:7:31 | pizzas | parameters.rb:7:26:7:31 | pizzas | parameters.rb:11:14:11:19 | pizzas |
| parameters.rb:15:17:15:19 | map | parameters.rb:15:17:15:19 | map | parameters.rb:16:3:16:5 | map |
| parameters.rb:16:12:18:5 | <captured> | parameters.rb:15:1:19:3 | self | parameters.rb:17:5:17:28 | self |
| parameters.rb:16:16:16:18 | key | parameters.rb:16:16:16:18 | key | parameters.rb:17:13:17:15 | key |
| parameters.rb:16:21:16:25 | value | parameters.rb:16:21:16:25 | value | parameters.rb:17:22:17:26 | value |
| parameters.rb:21:17:21:21 | block | parameters.rb:21:17:21:21 | block | parameters.rb:22:3:22:7 | block |
| parameters.rb:25:1:28:3 | self (opt_param) | parameters.rb:25:1:28:3 | self | parameters.rb:27:3:27:11 | self |
| parameters.rb:25:15:25:18 | name | parameters.rb:25:15:25:18 | name | parameters.rb:26:8:26:11 | name |
| parameters.rb:25:33:25:36 | size | parameters.rb:25:33:25:36 | size | parameters.rb:27:8:27:11 | size |
| parameters.rb:30:1:32:3 | self (key_param) | parameters.rb:30:1:32:3 | self | parameters.rb:31:3:31:35 | self |
| parameters.rb:30:15:30:19 | first | parameters.rb:30:15:30:19 | first | parameters.rb:31:11:31:15 | first |
| parameters.rb:30:24:30:29 | middle | parameters.rb:30:24:30:29 | middle | parameters.rb:31:20:31:25 | middle |
| parameters.rb:30:36:30:39 | last | parameters.rb:30:36:30:39 | last | parameters.rb:31:30:31:33 | last |
| parameters.rb:35:1:38:3 | self (multi) | parameters.rb:35:1:38:3 | self | parameters.rb:37:3:37:18 | self |
| parameters.rb:35:11:35:11 | a | parameters.rb:35:11:35:11 | a | parameters.rb:37:11:37:11 | a |
| parameters.rb:37:3:37:18 | phi | parameters.rb:35:16:35:16 | b | parameters.rb:37:16:37:16 | b |
| parameters.rb:40:1:43:3 | self (multi2) | parameters.rb:40:1:43:3 | self | parameters.rb:42:3:42:18 | self |
| parameters.rb:40:12:40:12 | d | parameters.rb:40:12:40:12 | d | parameters.rb:42:11:42:11 | d |
| parameters.rb:42:3:42:18 | phi | parameters.rb:40:15:40:15 | e | parameters.rb:42:16:42:16 | e |
| parameters.rb:45:1:47:3 | self (dup_underscore) | parameters.rb:45:1:47:3 | self | parameters.rb:46:3:46:8 | self |
| parameters.rb:45:20:45:20 | _ | parameters.rb:45:20:45:20 | _ | parameters.rb:46:8:46:8 | _ |
| parameters.rb:49:1:51:3 | self (tuples) | parameters.rb:49:1:51:3 | self | parameters.rb:50:3:50:18 | self |
| parameters.rb:49:13:49:13 | a | parameters.rb:49:13:49:13 | a | parameters.rb:50:11:50:11 | a |
| parameters.rb:49:15:49:15 | b | parameters.rb:49:15:49:15 | b | parameters.rb:50:16:50:16 | b |
| parameters.rb:54:9:57:3 | <captured> | parameters.rb:1:1:58:1 | self | parameters.rb:56:4:56:9 | self |
| parameters.rb:54:14:54:14 | y | parameters.rb:54:14:54:14 | y | parameters.rb:56:9:56:9 | y |
| parameters.rb:55:4:55:9 | phi | parameters.rb:53:1:53:1 | x | parameters.rb:55:9:55:9 | x |
| scopes.rb:1:1:1:15 | self (scopes.rb) | scopes.rb:1:1:49:4 | self | scopes.rb:8:1:8:6 | self |
| scopes.rb:2:9:6:3 | <captured> | scopes.rb:1:1:49:4 | self | scopes.rb:5:4:5:9 | self |
| scopes.rb:4:4:4:8 | ... = ... | scopes.rb:4:4:4:4 | a | scopes.rb:5:9:5:9 | a |
| scopes.rb:7:1:7:5 | ... = ... | scopes.rb:7:1:7:1 | a | scopes.rb:8:6:8:6 | a |
| scopes.rb:9:9:18:3 | <captured> | scopes.rb:1:1:49:4 | self | scopes.rb:17:4:17:9 | self |
| scopes.rb:9:9:18:3 | <captured> | scopes.rb:7:1:7:1 | a | scopes.rb:11:4:11:4 | a |
| scopes.rb:11:4:11:9 | ... = ... | scopes.rb:7:1:7:1 | a | scopes.rb:12:9:12:9 | a |
| scopes.rb:13:4:13:4 | ... = ... | scopes.rb:7:1:7:1 | a | scopes.rb:14:9:14:9 | a |
@@ -296,37 +505,71 @@ lastRead
| scopes.rb:13:14:13:14 | ... = ... | scopes.rb:13:14:13:14 | d | scopes.rb:17:9:17:9 | d |
| scopes.rb:13:19:13:32 | ... = ... | scopes.rb:13:4:13:32 | __synth__0 | scopes.rb:13:10:13:15 | __synth__0 |
| scopes.rb:27:1:27:5 | ... = ... | scopes.rb:27:1:27:1 | x | scopes.rb:37:5:37:5 | x |
| scopes.rb:41:1:49:3 | self (M) | scopes.rb:41:1:49:3 | self | scopes.rb:45:5:45:7 | self |
| scopes.rb:42:2:42:9 | ... = ... | scopes.rb:42:2:42:4 | var | scopes.rb:44:5:44:7 | var |
| scopes.rb:46:5:46:13 | ... = ... | scopes.rb:46:5:46:8 | var2 | scopes.rb:47:5:47:8 | var2 |
| ssa.rb:1:1:16:3 | self (m) | ssa.rb:1:1:16:3 | self | ssa.rb:15:3:15:8 | self |
| ssa.rb:1:7:1:7 | b | ssa.rb:1:7:1:7 | b | ssa.rb:5:6:5:6 | b |
| ssa.rb:2:3:2:7 | ... = ... | ssa.rb:2:3:2:3 | i | ssa.rb:4:8:4:8 | i |
| ssa.rb:5:3:13:5 | phi | ssa.rb:2:3:2:3 | i | ssa.rb:15:8:15:8 | i |
| ssa.rb:6:5:6:9 | ... = ... | ssa.rb:2:3:2:3 | i | ssa.rb:8:10:8:10 | i |
| ssa.rb:10:5:10:9 | ... = ... | ssa.rb:2:3:2:3 | i | ssa.rb:12:10:12:10 | i |
| ssa.rb:18:1:23:3 | self (m1) | ssa.rb:18:1:23:3 | self | ssa.rb:20:5:20:10 | self |
| ssa.rb:19:9:19:9 | phi | ssa.rb:18:8:18:8 | x | ssa.rb:19:9:19:9 | x |
| ssa.rb:19:9:19:9 | phi | ssa.rb:18:8:18:8 | x | ssa.rb:21:5:21:5 | x |
| ssa.rb:25:1:30:3 | self (m2) | ssa.rb:25:1:30:3 | self | ssa.rb:29:3:29:11 | self |
| ssa.rb:25:8:25:15 | elements | ssa.rb:25:8:25:15 | elements | ssa.rb:26:15:26:22 | elements |
| ssa.rb:26:7:26:10 | elem | ssa.rb:26:7:26:10 | elem | ssa.rb:27:10:27:13 | elem |
| ssa.rb:26:12:26:22 | phi | ssa.rb:26:7:26:10 | elem | ssa.rb:29:8:29:11 | elem |
| ssa.rb:33:16:35:5 | <captured> | ssa.rb:32:1:36:3 | self | ssa.rb:34:5:34:10 | self |
| ssa.rb:33:20:33:20 | x | ssa.rb:33:20:33:20 | x | ssa.rb:34:10:34:10 | x |
| ssa.rb:38:1:42:3 | self (m4) | ssa.rb:38:1:42:3 | self | ssa.rb:41:3:41:13 | self |
| ssa.rb:40:3:40:9 | ... = ... | ssa.rb:40:3:40:4 | m3 | ssa.rb:41:8:41:9 | m3 |
| ssa.rb:44:1:47:3 | self (m5) | ssa.rb:44:1:47:3 | self | ssa.rb:46:3:46:8 | self |
| ssa.rb:44:8:44:8 | b | ssa.rb:44:8:44:8 | b | ssa.rb:45:12:45:12 | b |
| ssa.rb:45:3:45:12 | phi | ssa.rb:45:3:45:3 | x | ssa.rb:46:8:46:8 | x |
| ssa.rb:49:1:51:3 | self (m6) | ssa.rb:49:1:51:3 | self | ssa.rb:50:3:50:8 | self |
| ssa.rb:50:3:50:8 | phi | ssa.rb:49:14:49:14 | y | ssa.rb:50:8:50:8 | y |
| ssa.rb:53:1:56:3 | self (m7) | ssa.rb:53:1:56:3 | self | ssa.rb:55:3:55:8 | self |
| ssa.rb:53:8:53:10 | foo | ssa.rb:53:8:53:10 | foo | ssa.rb:54:7:54:9 | foo |
| ssa.rb:54:3:54:11 | ... = ... | ssa.rb:54:3:54:3 | x | ssa.rb:55:8:55:8 | x |
| ssa.rb:58:1:62:3 | self (m8) | ssa.rb:58:1:62:3 | self | ssa.rb:61:3:61:8 | self |
| ssa.rb:59:3:59:8 | ... = ... | ssa.rb:59:3:59:3 | x | ssa.rb:60:3:60:3 | x |
| ssa.rb:60:3:60:9 | ... = ... | ssa.rb:59:3:59:3 | x | ssa.rb:61:8:61:8 | x |
| ssa.rb:64:1:72:3 | self (m9) | ssa.rb:64:1:72:3 | self | ssa.rb:71:3:71:15 | self |
| ssa.rb:64:8:64:8 | a | ssa.rb:64:8:64:8 | a | ssa.rb:66:3:66:3 | a |
| ssa.rb:66:3:70:5 | call to times | ssa.rb:65:3:65:10 | captured | ssa.rb:71:8:71:15 | captured |
| ssa.rb:66:11:70:5 | <captured> | ssa.rb:64:1:72:3 | self | ssa.rb:68:5:68:17 | self |
| ssa.rb:66:11:70:5 | <captured> | ssa.rb:65:3:65:10 | captured | ssa.rb:69:5:69:12 | captured |
| ssa.rb:66:15:66:15 | a | ssa.rb:66:15:66:15 | a | ssa.rb:67:10:67:10 | a |
| ssa.rb:74:1:79:3 | self (m10) | ssa.rb:74:1:79:3 | self | ssa.rb:76:3:78:5 | self |
| ssa.rb:76:7:78:5 | <captured> | ssa.rb:74:1:79:3 | self | ssa.rb:77:6:77:23 | self |
| ssa.rb:76:7:78:5 | <captured> | ssa.rb:75:3:75:10 | captured | ssa.rb:77:15:77:22 | captured |
| ssa.rb:81:1:88:3 | self (m11) | ssa.rb:81:1:88:3 | self | ssa.rb:83:3:87:5 | self |
| ssa.rb:83:7:87:5 | <captured> | ssa.rb:81:1:88:3 | self | ssa.rb:84:6:86:8 | self |
| ssa.rb:84:10:86:8 | <captured> | ssa.rb:81:1:88:3 | self | ssa.rb:85:10:85:22 | self |
| ssa.rb:84:10:86:8 | <captured> | ssa.rb:82:3:82:10 | captured | ssa.rb:85:15:85:22 | captured |
adjacentReads
| class_variables.rb:26:1:29:3 | self (N) | class_variables.rb:26:1:29:3 | self | class_variables.rb:27:3:27:11 | self | class_variables.rb:28:3:28:7 | self |
| instance_variables.rb:1:1:1:4 | self (instance_variables.rb) | instance_variables.rb:1:1:44:4 | self | instance_variables.rb:11:1:11:9 | self | instance_variables.rb:27:1:29:1 | self |
| instance_variables.rb:37:3:43:5 | self (x) | instance_variables.rb:37:3:43:5 | self | instance_variables.rb:41:4:41:4 | self | instance_variables.rb:42:4:42:7 | self |
| nested_scopes.rb:8:5:35:7 | self (N) | nested_scopes.rb:8:5:35:7 | self | nested_scopes.rb:27:11:27:14 | self | nested_scopes.rb:30:16:30:19 | self |
| nested_scopes.rb:8:5:35:7 | self (N) | nested_scopes.rb:8:5:35:7 | self | nested_scopes.rb:30:16:30:19 | self | nested_scopes.rb:34:7:34:12 | self |
| nested_scopes.rb:13:11:13:15 | ... = ... | nested_scopes.rb:13:11:13:11 | a | nested_scopes.rb:14:16:14:16 | a | nested_scopes.rb:15:11:15:11 | a |
| nested_scopes.rb:27:7:29:9 | self (show) | nested_scopes.rb:27:7:29:9 | self | nested_scopes.rb:28:11:28:16 | self | nested_scopes.rb:28:16:28:16 | self |
| nested_scopes.rb:30:16:30:19 | self (class << ...) | nested_scopes.rb:30:7:33:9 | self | nested_scopes.rb:30:16:30:19 | self | nested_scopes.rb:32:11:32:16 | self |
| parameters.rb:1:9:5:3 | <captured> | parameters.rb:1:1:58:1 | self | parameters.rb:3:4:3:9 | self | parameters.rb:4:4:4:9 | self |
| parameters.rb:7:26:7:31 | pizzas | parameters.rb:7:26:7:31 | pizzas | parameters.rb:8:6:8:11 | pizzas | parameters.rb:11:14:11:19 | pizzas |
| parameters.rb:25:1:28:3 | self (opt_param) | parameters.rb:25:1:28:3 | self | parameters.rb:26:3:26:11 | self | parameters.rb:27:3:27:11 | self |
| parameters.rb:25:15:25:18 | name | parameters.rb:25:15:25:18 | name | parameters.rb:25:40:25:43 | name | parameters.rb:26:8:26:11 | name |
| parameters.rb:54:9:57:3 | <captured> | parameters.rb:1:1:58:1 | self | parameters.rb:55:4:55:9 | self | parameters.rb:56:4:56:9 | self |
| scopes.rb:2:9:6:3 | <captured> | scopes.rb:1:1:49:4 | self | scopes.rb:3:4:3:9 | self | scopes.rb:3:9:3:9 | self |
| scopes.rb:2:9:6:3 | <captured> | scopes.rb:1:1:49:4 | self | scopes.rb:3:9:3:9 | self | scopes.rb:5:4:5:9 | self |
| scopes.rb:9:9:18:3 | <captured> | scopes.rb:1:1:49:4 | self | scopes.rb:10:4:10:9 | self | scopes.rb:12:4:12:9 | self |
| scopes.rb:9:9:18:3 | <captured> | scopes.rb:1:1:49:4 | self | scopes.rb:12:4:12:9 | self | scopes.rb:14:4:14:9 | self |
| scopes.rb:9:9:18:3 | <captured> | scopes.rb:1:1:49:4 | self | scopes.rb:14:4:14:9 | self | scopes.rb:15:4:15:9 | self |
| scopes.rb:9:9:18:3 | <captured> | scopes.rb:1:1:49:4 | self | scopes.rb:15:4:15:9 | self | scopes.rb:16:4:16:9 | self |
| scopes.rb:9:9:18:3 | <captured> | scopes.rb:1:1:49:4 | self | scopes.rb:16:4:16:9 | self | scopes.rb:17:4:17:9 | self |
| scopes.rb:9:9:18:3 | <captured> | scopes.rb:7:1:7:1 | a | scopes.rb:10:9:10:9 | a | scopes.rb:11:4:11:4 | a |
| scopes.rb:13:10:13:15 | ... = ... | scopes.rb:13:10:13:15 | __synth__0__1 | scopes.rb:13:11:13:11 | __synth__0__1 | scopes.rb:13:14:13:14 | __synth__0__1 |
| scopes.rb:13:19:13:32 | ... = ... | scopes.rb:13:4:13:32 | __synth__0 | scopes.rb:13:4:13:4 | __synth__0 | scopes.rb:13:7:13:7 | __synth__0 |
@@ -335,11 +578,24 @@ adjacentReads
| scopes.rb:27:1:27:5 | ... = ... | scopes.rb:27:1:27:1 | x | scopes.rb:31:10:31:10 | x | scopes.rb:34:7:34:7 | x |
| scopes.rb:27:1:27:5 | ... = ... | scopes.rb:27:1:27:1 | x | scopes.rb:34:7:34:7 | x | scopes.rb:34:14:34:14 | x |
| scopes.rb:27:1:27:5 | ... = ... | scopes.rb:27:1:27:1 | x | scopes.rb:34:14:34:14 | x | scopes.rb:37:5:37:5 | x |
| ssa.rb:1:1:16:3 | self (m) | ssa.rb:1:1:16:3 | self | ssa.rb:3:3:3:8 | self | ssa.rb:4:3:4:12 | self |
| ssa.rb:1:1:16:3 | self (m) | ssa.rb:1:1:16:3 | self | ssa.rb:4:3:4:12 | self | ssa.rb:7:5:7:10 | self |
| ssa.rb:1:1:16:3 | self (m) | ssa.rb:1:1:16:3 | self | ssa.rb:4:3:4:12 | self | ssa.rb:11:5:11:10 | self |
| ssa.rb:1:1:16:3 | self (m) | ssa.rb:1:1:16:3 | self | ssa.rb:7:5:7:10 | self | ssa.rb:8:5:8:14 | self |
| ssa.rb:1:1:16:3 | self (m) | ssa.rb:1:1:16:3 | self | ssa.rb:8:5:8:14 | self | ssa.rb:15:3:15:8 | self |
| ssa.rb:1:1:16:3 | self (m) | ssa.rb:1:1:16:3 | self | ssa.rb:11:5:11:10 | self | ssa.rb:12:5:12:14 | self |
| ssa.rb:1:1:16:3 | self (m) | ssa.rb:1:1:16:3 | self | ssa.rb:12:5:12:14 | self | ssa.rb:15:3:15:8 | self |
| ssa.rb:2:3:2:7 | ... = ... | ssa.rb:2:3:2:3 | i | ssa.rb:3:8:3:8 | i | ssa.rb:4:8:4:8 | i |
| ssa.rb:6:5:6:9 | ... = ... | ssa.rb:2:3:2:3 | i | ssa.rb:7:10:7:10 | i | ssa.rb:8:10:8:10 | i |
| ssa.rb:10:5:10:9 | ... = ... | ssa.rb:2:3:2:3 | i | ssa.rb:11:10:11:10 | i | ssa.rb:12:10:12:10 | i |
| ssa.rb:18:1:23:3 | self (m1) | ssa.rb:18:1:23:3 | self | ssa.rb:20:5:20:10 | self | ssa.rb:20:5:20:10 | self |
| ssa.rb:19:9:19:9 | phi | ssa.rb:18:8:18:8 | x | ssa.rb:19:9:19:9 | x | ssa.rb:20:10:20:10 | x |
| ssa.rb:19:9:19:9 | phi | ssa.rb:18:8:18:8 | x | ssa.rb:20:10:20:10 | x | ssa.rb:21:5:21:5 | x |
| ssa.rb:25:1:30:3 | self (m2) | ssa.rb:25:1:30:3 | self | ssa.rb:27:5:27:13 | self | ssa.rb:27:5:27:13 | self |
| ssa.rb:25:1:30:3 | self (m2) | ssa.rb:25:1:30:3 | self | ssa.rb:27:5:27:13 | self | ssa.rb:29:3:29:11 | self |
| ssa.rb:38:1:42:3 | self (m4) | ssa.rb:38:1:42:3 | self | ssa.rb:39:3:39:9 | self | ssa.rb:39:8:39:9 | self |
| ssa.rb:38:1:42:3 | self (m4) | ssa.rb:38:1:42:3 | self | ssa.rb:39:8:39:9 | self | ssa.rb:41:3:41:13 | self |
| ssa.rb:66:11:70:5 | <captured> | ssa.rb:64:1:72:3 | self | ssa.rb:67:5:67:10 | self | ssa.rb:68:5:68:17 | self |
| ssa.rb:66:11:70:5 | <captured> | ssa.rb:65:3:65:10 | captured | ssa.rb:68:10:68:17 | captured | ssa.rb:69:5:69:12 | captured |
phi
| parameters.rb:37:3:37:18 | phi | parameters.rb:35:16:35:16 | b | parameters.rb:35:1:38:3 | <uninitialized> |

View File

@@ -1,30 +1,44 @@
variableAccess
| class_variables.rb:1:1:1:3 | @@x | class_variables.rb:1:1:1:3 | @@x | class_variables.rb:1:1:29:4 | class_variables.rb |
| class_variables.rb:3:1:3:5 | self | class_variables.rb:1:1:29:4 | self | class_variables.rb:1:1:29:4 | class_variables.rb |
| class_variables.rb:3:3:3:5 | @@x | class_variables.rb:1:1:1:3 | @@x | class_variables.rb:1:1:29:4 | class_variables.rb |
| class_variables.rb:6:2:6:6 | self | class_variables.rb:5:1:7:3 | self | class_variables.rb:5:1:7:3 | print |
| class_variables.rb:6:4:6:6 | @@x | class_variables.rb:1:1:1:3 | @@x | class_variables.rb:1:1:29:4 | class_variables.rb |
| class_variables.rb:11:5:11:9 | self | class_variables.rb:10:3:12:5 | self | class_variables.rb:10:3:12:5 | b |
| class_variables.rb:11:7:11:9 | @@x | class_variables.rb:11:7:11:9 | @@x | class_variables.rb:9:1:16:3 | X |
| class_variables.rb:13:7:13:10 | self | class_variables.rb:9:1:16:3 | self | class_variables.rb:9:1:16:3 | X |
| class_variables.rb:14:4:14:8 | self | class_variables.rb:13:3:15:5 | self | class_variables.rb:13:3:15:5 | s |
| class_variables.rb:14:6:14:8 | @@x | class_variables.rb:11:7:11:9 | @@x | class_variables.rb:9:1:16:3 | X |
| class_variables.rb:19:3:19:5 | @@x | class_variables.rb:19:3:19:5 | @@x | class_variables.rb:18:1:20:3 | Y |
| class_variables.rb:23:3:23:5 | @@x | class_variables.rb:23:3:23:5 | @@x | class_variables.rb:22:1:24:3 | M |
| class_variables.rb:27:3:27:11 | self | class_variables.rb:26:1:29:3 | self | class_variables.rb:26:1:29:3 | N |
| class_variables.rb:28:3:28:7 | self | class_variables.rb:26:1:29:3 | self | class_variables.rb:26:1:29:3 | N |
| class_variables.rb:28:5:28:7 | @@x | class_variables.rb:28:5:28:7 | @@x | class_variables.rb:26:1:29:3 | N |
| instance_variables.rb:1:1:1:4 | @top | instance_variables.rb:1:1:1:4 | @top | instance_variables.rb:1:1:44:4 | instance_variables.rb |
| instance_variables.rb:4:3:4:6 | @foo | instance_variables.rb:4:3:4:6 | @foo | instance_variables.rb:1:1:44:4 | instance_variables.rb |
| instance_variables.rb:8:3:8:11 | self | instance_variables.rb:7:1:9:3 | self | instance_variables.rb:7:1:9:3 | print_foo |
| instance_variables.rb:8:8:8:11 | @foo | instance_variables.rb:4:3:4:6 | @foo | instance_variables.rb:1:1:44:4 | instance_variables.rb |
| instance_variables.rb:11:1:11:9 | self | instance_variables.rb:1:1:44:4 | self | instance_variables.rb:1:1:44:4 | instance_variables.rb |
| instance_variables.rb:11:6:11:9 | @top | instance_variables.rb:1:1:1:4 | @top | instance_variables.rb:1:1:44:4 | instance_variables.rb |
| instance_variables.rb:14:3:14:4 | @x | instance_variables.rb:14:3:14:4 | @x | instance_variables.rb:13:1:18:3 | X |
| instance_variables.rb:16:5:16:6 | @y | instance_variables.rb:16:5:16:6 | @y | instance_variables.rb:13:1:18:3 | X |
| instance_variables.rb:21:2:21:3 | @m | instance_variables.rb:21:2:21:3 | @m | instance_variables.rb:20:1:25:3 | M |
| instance_variables.rb:23:4:23:5 | @n | instance_variables.rb:23:4:23:5 | @n | instance_variables.rb:20:1:25:3 | M |
| instance_variables.rb:27:1:29:1 | self | instance_variables.rb:1:1:44:4 | self | instance_variables.rb:1:1:44:4 | instance_variables.rb |
| instance_variables.rb:28:3:28:4 | @x | instance_variables.rb:28:3:28:4 | @x | instance_variables.rb:1:1:44:4 | instance_variables.rb |
| instance_variables.rb:32:12:32:13 | @x | instance_variables.rb:32:12:32:13 | @x | instance_variables.rb:1:1:44:4 | instance_variables.rb |
| instance_variables.rb:36:3:36:4 | @x | instance_variables.rb:36:3:36:4 | @x | instance_variables.rb:35:1:44:4 | C |
| instance_variables.rb:39:6:39:7 | @x | instance_variables.rb:39:6:39:7 | @x | instance_variables.rb:35:1:44:4 | C |
| instance_variables.rb:41:4:41:4 | self | instance_variables.rb:37:3:43:5 | self | instance_variables.rb:37:3:43:5 | x |
| instance_variables.rb:42:4:42:7 | self | instance_variables.rb:37:3:43:5 | self | instance_variables.rb:37:3:43:5 | x |
| instance_variables.rb:42:6:42:7 | @x | instance_variables.rb:39:6:39:7 | @x | instance_variables.rb:35:1:44:4 | C |
| nested_scopes.rb:2:3:2:17 | self | nested_scopes.rb:1:1:3:3 | self | nested_scopes.rb:1:1:3:3 | a |
| nested_scopes.rb:5:3:5:3 | a | nested_scopes.rb:5:3:5:3 | a | nested_scopes.rb:4:1:39:3 | C |
| nested_scopes.rb:7:5:7:5 | a | nested_scopes.rb:7:5:7:5 | a | nested_scopes.rb:6:3:37:5 | M |
| nested_scopes.rb:9:7:9:7 | a | nested_scopes.rb:9:7:9:7 | a | nested_scopes.rb:8:5:35:7 | N |
| nested_scopes.rb:11:9:11:9 | a | nested_scopes.rb:11:9:11:9 | a | nested_scopes.rb:10:7:26:9 | D |
| nested_scopes.rb:13:11:13:11 | a | nested_scopes.rb:13:11:13:11 | a | nested_scopes.rb:12:9:21:11 | show_a |
| nested_scopes.rb:14:11:14:16 | self | nested_scopes.rb:12:9:21:11 | self | nested_scopes.rb:12:9:21:11 | show_a |
| nested_scopes.rb:14:16:14:16 | a | nested_scopes.rb:13:11:13:11 | a | nested_scopes.rb:12:9:21:11 | show_a |
| nested_scopes.rb:15:11:15:11 | a | nested_scopes.rb:13:11:13:11 | a | nested_scopes.rb:12:9:21:11 | show_a |
| nested_scopes.rb:15:23:15:23 | a | nested_scopes.rb:15:23:15:23 | a | nested_scopes.rb:15:19:20:13 | do ... end |
@@ -34,32 +48,48 @@ variableAccess
| nested_scopes.rb:17:15:17:15 | a | nested_scopes.rb:16:29:16:29 | a | nested_scopes.rb:16:21:19:15 | do ... end |
| nested_scopes.rb:18:15:18:15 | a | nested_scopes.rb:16:29:16:29 | a | nested_scopes.rb:16:21:19:15 | do ... end |
| nested_scopes.rb:18:26:18:26 | x | nested_scopes.rb:18:26:18:26 | x | nested_scopes.rb:18:23:18:36 | { ... } |
| nested_scopes.rb:18:29:18:34 | self | nested_scopes.rb:12:9:21:11 | self | nested_scopes.rb:12:9:21:11 | show_a |
| nested_scopes.rb:18:34:18:34 | a | nested_scopes.rb:16:29:16:29 | a | nested_scopes.rb:16:21:19:15 | do ... end |
| nested_scopes.rb:22:21:22:21 | a | nested_scopes.rb:22:21:22:21 | a | nested_scopes.rb:22:9:24:11 | show_a2 |
| nested_scopes.rb:23:11:23:16 | self | nested_scopes.rb:22:9:24:11 | self | nested_scopes.rb:22:9:24:11 | show_a2 |
| nested_scopes.rb:23:16:23:16 | a | nested_scopes.rb:22:21:22:21 | a | nested_scopes.rb:22:9:24:11 | show_a2 |
| nested_scopes.rb:25:9:25:14 | self | nested_scopes.rb:10:7:26:9 | self | nested_scopes.rb:10:7:26:9 | D |
| nested_scopes.rb:25:14:25:14 | a | nested_scopes.rb:11:9:11:9 | a | nested_scopes.rb:10:7:26:9 | D |
| nested_scopes.rb:27:11:27:14 | self | nested_scopes.rb:8:5:35:7 | self | nested_scopes.rb:8:5:35:7 | N |
| nested_scopes.rb:28:11:28:16 | self | nested_scopes.rb:27:7:29:9 | self | nested_scopes.rb:27:7:29:9 | show |
| nested_scopes.rb:28:16:28:16 | self | nested_scopes.rb:27:7:29:9 | self | nested_scopes.rb:27:7:29:9 | show |
| nested_scopes.rb:30:16:30:19 | self | nested_scopes.rb:8:5:35:7 | self | nested_scopes.rb:8:5:35:7 | N |
| nested_scopes.rb:31:11:31:11 | a | nested_scopes.rb:31:11:31:11 | a | nested_scopes.rb:30:7:33:9 | class << ... |
| nested_scopes.rb:32:11:32:16 | self | nested_scopes.rb:30:7:33:9 | self | nested_scopes.rb:30:7:33:9 | class << ... |
| nested_scopes.rb:32:16:32:16 | a | nested_scopes.rb:31:11:31:11 | a | nested_scopes.rb:30:7:33:9 | class << ... |
| nested_scopes.rb:34:7:34:12 | self | nested_scopes.rb:8:5:35:7 | self | nested_scopes.rb:8:5:35:7 | N |
| nested_scopes.rb:34:12:34:12 | a | nested_scopes.rb:9:7:9:7 | a | nested_scopes.rb:8:5:35:7 | N |
| nested_scopes.rb:36:5:36:10 | self | nested_scopes.rb:6:3:37:5 | self | nested_scopes.rb:6:3:37:5 | M |
| nested_scopes.rb:36:10:36:10 | a | nested_scopes.rb:7:5:7:5 | a | nested_scopes.rb:6:3:37:5 | M |
| nested_scopes.rb:38:3:38:8 | self | nested_scopes.rb:4:1:39:3 | self | nested_scopes.rb:4:1:39:3 | C |
| nested_scopes.rb:38:8:38:8 | a | nested_scopes.rb:5:3:5:3 | a | nested_scopes.rb:4:1:39:3 | C |
| nested_scopes.rb:40:1:40:1 | d | nested_scopes.rb:40:1:40:1 | d | nested_scopes.rb:1:1:42:1 | nested_scopes.rb |
| nested_scopes.rb:41:1:41:1 | d | nested_scopes.rb:40:1:40:1 | d | nested_scopes.rb:1:1:42:1 | nested_scopes.rb |
| parameters.rb:1:14:1:14 | x | parameters.rb:1:14:1:14 | x | parameters.rb:1:9:5:3 | do ... end |
| parameters.rb:1:18:1:18 | y | parameters.rb:1:18:1:18 | y | parameters.rb:1:9:5:3 | do ... end |
| parameters.rb:2:4:2:4 | y | parameters.rb:1:18:1:18 | y | parameters.rb:1:9:5:3 | do ... end |
| parameters.rb:3:4:3:9 | self | parameters.rb:1:1:58:1 | self | parameters.rb:1:1:58:1 | parameters.rb |
| parameters.rb:3:9:3:9 | x | parameters.rb:1:14:1:14 | x | parameters.rb:1:9:5:3 | do ... end |
| parameters.rb:4:4:4:9 | self | parameters.rb:1:1:58:1 | self | parameters.rb:1:1:58:1 | parameters.rb |
| parameters.rb:4:9:4:9 | y | parameters.rb:1:18:1:18 | y | parameters.rb:1:9:5:3 | do ... end |
| parameters.rb:7:17:7:22 | client | parameters.rb:7:17:7:22 | client | parameters.rb:7:1:13:3 | order_pizza |
| parameters.rb:7:26:7:31 | pizzas | parameters.rb:7:26:7:31 | pizzas | parameters.rb:7:1:13:3 | order_pizza |
| parameters.rb:8:6:8:11 | pizzas | parameters.rb:7:26:7:31 | pizzas | parameters.rb:7:1:13:3 | order_pizza |
| parameters.rb:9:5:9:33 | self | parameters.rb:7:1:13:3 | self | parameters.rb:7:1:13:3 | order_pizza |
| parameters.rb:9:25:9:30 | client | parameters.rb:7:17:7:22 | client | parameters.rb:7:1:13:3 | order_pizza |
| parameters.rb:11:5:11:49 | self | parameters.rb:7:1:13:3 | self | parameters.rb:7:1:13:3 | order_pizza |
| parameters.rb:11:14:11:19 | pizzas | parameters.rb:7:26:7:31 | pizzas | parameters.rb:7:1:13:3 | order_pizza |
| parameters.rb:11:41:11:46 | client | parameters.rb:7:17:7:22 | client | parameters.rb:7:1:13:3 | order_pizza |
| parameters.rb:15:17:15:19 | map | parameters.rb:15:17:15:19 | map | parameters.rb:15:1:19:3 | print_map |
| parameters.rb:16:3:16:5 | map | parameters.rb:15:17:15:19 | map | parameters.rb:15:1:19:3 | print_map |
| parameters.rb:16:16:16:18 | key | parameters.rb:16:16:16:18 | key | parameters.rb:16:12:18:5 | do ... end |
| parameters.rb:16:21:16:25 | value | parameters.rb:16:21:16:25 | value | parameters.rb:16:12:18:5 | do ... end |
| parameters.rb:17:5:17:28 | self | parameters.rb:15:1:19:3 | self | parameters.rb:15:1:19:3 | print_map |
| parameters.rb:17:13:17:15 | key | parameters.rb:16:16:16:18 | key | parameters.rb:16:12:18:5 | do ... end |
| parameters.rb:17:22:17:26 | value | parameters.rb:16:21:16:25 | value | parameters.rb:16:12:18:5 | do ... end |
| parameters.rb:21:17:21:21 | block | parameters.rb:21:17:21:21 | block | parameters.rb:21:1:23:3 | call_block |
@@ -67,51 +97,70 @@ variableAccess
| parameters.rb:25:15:25:18 | name | parameters.rb:25:15:25:18 | name | parameters.rb:25:1:28:3 | opt_param |
| parameters.rb:25:33:25:36 | size | parameters.rb:25:33:25:36 | size | parameters.rb:25:1:28:3 | opt_param |
| parameters.rb:25:40:25:43 | name | parameters.rb:25:15:25:18 | name | parameters.rb:25:1:28:3 | opt_param |
| parameters.rb:26:3:26:11 | self | parameters.rb:25:1:28:3 | self | parameters.rb:25:1:28:3 | opt_param |
| parameters.rb:26:8:26:11 | name | parameters.rb:25:15:25:18 | name | parameters.rb:25:1:28:3 | opt_param |
| parameters.rb:27:3:27:11 | self | parameters.rb:25:1:28:3 | self | parameters.rb:25:1:28:3 | opt_param |
| parameters.rb:27:8:27:11 | size | parameters.rb:25:33:25:36 | size | parameters.rb:25:1:28:3 | opt_param |
| parameters.rb:30:15:30:19 | first | parameters.rb:30:15:30:19 | first | parameters.rb:30:1:32:3 | key_param |
| parameters.rb:30:24:30:29 | middle | parameters.rb:30:24:30:29 | middle | parameters.rb:30:1:32:3 | key_param |
| parameters.rb:30:36:30:39 | last | parameters.rb:30:36:30:39 | last | parameters.rb:30:1:32:3 | key_param |
| parameters.rb:31:3:31:35 | self | parameters.rb:30:1:32:3 | self | parameters.rb:30:1:32:3 | key_param |
| parameters.rb:31:11:31:15 | first | parameters.rb:30:15:30:19 | first | parameters.rb:30:1:32:3 | key_param |
| parameters.rb:31:20:31:25 | middle | parameters.rb:30:24:30:29 | middle | parameters.rb:30:1:32:3 | key_param |
| parameters.rb:31:30:31:33 | last | parameters.rb:30:36:30:39 | last | parameters.rb:30:1:32:3 | key_param |
| parameters.rb:34:1:34:1 | b | parameters.rb:34:1:34:1 | b | parameters.rb:1:1:58:1 | parameters.rb |
| parameters.rb:35:11:35:11 | a | parameters.rb:35:11:35:11 | a | parameters.rb:35:1:38:3 | multi |
| parameters.rb:35:16:35:16 | b | parameters.rb:35:16:35:16 | b | parameters.rb:35:1:38:3 | multi |
| parameters.rb:37:3:37:18 | self | parameters.rb:35:1:38:3 | self | parameters.rb:35:1:38:3 | multi |
| parameters.rb:37:11:37:11 | a | parameters.rb:35:11:35:11 | a | parameters.rb:35:1:38:3 | multi |
| parameters.rb:37:16:37:16 | b | parameters.rb:35:16:35:16 | b | parameters.rb:35:1:38:3 | multi |
| parameters.rb:40:12:40:12 | d | parameters.rb:40:12:40:12 | d | parameters.rb:40:1:43:3 | multi2 |
| parameters.rb:40:15:40:15 | e | parameters.rb:40:15:40:15 | e | parameters.rb:40:1:43:3 | multi2 |
| parameters.rb:42:3:42:18 | self | parameters.rb:40:1:43:3 | self | parameters.rb:40:1:43:3 | multi2 |
| parameters.rb:42:11:42:11 | d | parameters.rb:40:12:40:12 | d | parameters.rb:40:1:43:3 | multi2 |
| parameters.rb:42:16:42:16 | e | parameters.rb:40:15:40:15 | e | parameters.rb:40:1:43:3 | multi2 |
| parameters.rb:45:20:45:20 | _ | parameters.rb:45:20:45:20 | _ | parameters.rb:45:1:47:3 | dup_underscore |
| parameters.rb:46:3:46:8 | self | parameters.rb:45:1:47:3 | self | parameters.rb:45:1:47:3 | dup_underscore |
| parameters.rb:46:8:46:8 | _ | parameters.rb:45:20:45:20 | _ | parameters.rb:45:1:47:3 | dup_underscore |
| parameters.rb:49:13:49:13 | a | parameters.rb:49:13:49:13 | a | parameters.rb:49:1:51:3 | tuples |
| parameters.rb:49:15:49:15 | b | parameters.rb:49:15:49:15 | b | parameters.rb:49:1:51:3 | tuples |
| parameters.rb:50:3:50:18 | self | parameters.rb:49:1:51:3 | self | parameters.rb:49:1:51:3 | tuples |
| parameters.rb:50:11:50:11 | a | parameters.rb:49:13:49:13 | a | parameters.rb:49:1:51:3 | tuples |
| parameters.rb:50:16:50:16 | b | parameters.rb:49:15:49:15 | b | parameters.rb:49:1:51:3 | tuples |
| parameters.rb:53:1:53:1 | x | parameters.rb:53:1:53:1 | x | parameters.rb:1:1:58:1 | parameters.rb |
| parameters.rb:54:14:54:14 | y | parameters.rb:54:14:54:14 | y | parameters.rb:54:9:57:3 | do ... end |
| parameters.rb:54:19:54:19 | x | parameters.rb:53:1:53:1 | x | parameters.rb:1:1:58:1 | parameters.rb |
| parameters.rb:55:4:55:9 | self | parameters.rb:1:1:58:1 | self | parameters.rb:1:1:58:1 | parameters.rb |
| parameters.rb:55:9:55:9 | x | parameters.rb:53:1:53:1 | x | parameters.rb:1:1:58:1 | parameters.rb |
| parameters.rb:56:4:56:9 | self | parameters.rb:1:1:58:1 | self | parameters.rb:1:1:58:1 | parameters.rb |
| parameters.rb:56:9:56:9 | y | parameters.rb:54:14:54:14 | y | parameters.rb:54:9:57:3 | do ... end |
| scopes.rb:2:14:2:14 | x | scopes.rb:2:14:2:14 | x | scopes.rb:2:9:6:3 | do ... end |
| scopes.rb:3:4:3:9 | self | scopes.rb:1:1:49:4 | self | scopes.rb:1:1:49:4 | scopes.rb |
| scopes.rb:3:9:3:9 | self | scopes.rb:1:1:49:4 | self | scopes.rb:1:1:49:4 | scopes.rb |
| scopes.rb:4:4:4:4 | a | scopes.rb:4:4:4:4 | a | scopes.rb:2:9:6:3 | do ... end |
| scopes.rb:5:4:5:9 | self | scopes.rb:1:1:49:4 | self | scopes.rb:1:1:49:4 | scopes.rb |
| scopes.rb:5:9:5:9 | a | scopes.rb:4:4:4:4 | a | scopes.rb:2:9:6:3 | do ... end |
| scopes.rb:7:1:7:1 | a | scopes.rb:7:1:7:1 | a | scopes.rb:1:1:49:4 | scopes.rb |
| scopes.rb:8:1:8:6 | self | scopes.rb:1:1:49:4 | self | scopes.rb:1:1:49:4 | scopes.rb |
| scopes.rb:8:6:8:6 | a | scopes.rb:7:1:7:1 | a | scopes.rb:1:1:49:4 | scopes.rb |
| scopes.rb:9:14:9:14 | x | scopes.rb:9:14:9:14 | x | scopes.rb:9:9:18:3 | do ... end |
| scopes.rb:10:4:10:9 | self | scopes.rb:1:1:49:4 | self | scopes.rb:1:1:49:4 | scopes.rb |
| scopes.rb:10:9:10:9 | a | scopes.rb:7:1:7:1 | a | scopes.rb:1:1:49:4 | scopes.rb |
| scopes.rb:11:4:11:4 | a | scopes.rb:7:1:7:1 | a | scopes.rb:1:1:49:4 | scopes.rb |
| scopes.rb:11:4:11:4 | a | scopes.rb:7:1:7:1 | a | scopes.rb:1:1:49:4 | scopes.rb |
| scopes.rb:12:4:12:9 | self | scopes.rb:1:1:49:4 | self | scopes.rb:1:1:49:4 | scopes.rb |
| scopes.rb:12:9:12:9 | a | scopes.rb:7:1:7:1 | a | scopes.rb:1:1:49:4 | scopes.rb |
| scopes.rb:13:4:13:4 | a | scopes.rb:7:1:7:1 | a | scopes.rb:1:1:49:4 | scopes.rb |
| scopes.rb:13:7:13:7 | b | scopes.rb:13:7:13:7 | b | scopes.rb:9:9:18:3 | do ... end |
| scopes.rb:13:11:13:11 | c | scopes.rb:13:11:13:11 | c | scopes.rb:9:9:18:3 | do ... end |
| scopes.rb:13:14:13:14 | d | scopes.rb:13:14:13:14 | d | scopes.rb:9:9:18:3 | do ... end |
| scopes.rb:14:4:14:9 | self | scopes.rb:1:1:49:4 | self | scopes.rb:1:1:49:4 | scopes.rb |
| scopes.rb:14:9:14:9 | a | scopes.rb:7:1:7:1 | a | scopes.rb:1:1:49:4 | scopes.rb |
| scopes.rb:15:4:15:9 | self | scopes.rb:1:1:49:4 | self | scopes.rb:1:1:49:4 | scopes.rb |
| scopes.rb:15:9:15:9 | b | scopes.rb:13:7:13:7 | b | scopes.rb:9:9:18:3 | do ... end |
| scopes.rb:16:4:16:9 | self | scopes.rb:1:1:49:4 | self | scopes.rb:1:1:49:4 | scopes.rb |
| scopes.rb:16:9:16:9 | c | scopes.rb:13:11:13:11 | c | scopes.rb:9:9:18:3 | do ... end |
| scopes.rb:17:4:17:9 | self | scopes.rb:1:1:49:4 | self | scopes.rb:1:1:49:4 | scopes.rb |
| scopes.rb:17:9:17:9 | d | scopes.rb:13:14:13:14 | d | scopes.rb:9:9:18:3 | do ... end |
| scopes.rb:24:1:24:6 | script | scopes.rb:24:1:24:6 | script | scopes.rb:1:1:49:4 | scopes.rb |
| scopes.rb:27:1:27:1 | x | scopes.rb:27:1:27:1 | x | scopes.rb:1:1:49:4 | scopes.rb |
@@ -127,61 +176,88 @@ variableAccess
| scopes.rb:42:2:42:4 | var | scopes.rb:42:2:42:4 | var | scopes.rb:41:1:49:3 | M |
| scopes.rb:43:2:43:4 | foo | scopes.rb:43:2:43:4 | foo | scopes.rb:41:1:49:3 | M |
| scopes.rb:44:5:44:7 | var | scopes.rb:42:2:42:4 | var | scopes.rb:41:1:49:3 | M |
| scopes.rb:45:5:45:7 | self | scopes.rb:41:1:49:3 | self | scopes.rb:41:1:49:3 | M |
| scopes.rb:46:5:46:8 | var2 | scopes.rb:46:5:46:8 | var2 | scopes.rb:41:1:49:3 | M |
| scopes.rb:47:5:47:8 | var2 | scopes.rb:46:5:46:8 | var2 | scopes.rb:41:1:49:3 | M |
| ssa.rb:1:7:1:7 | b | ssa.rb:1:7:1:7 | b | ssa.rb:1:1:16:3 | m |
| ssa.rb:2:3:2:3 | i | ssa.rb:2:3:2:3 | i | ssa.rb:1:1:16:3 | m |
| ssa.rb:3:3:3:8 | self | ssa.rb:1:1:16:3 | self | ssa.rb:1:1:16:3 | m |
| ssa.rb:3:8:3:8 | i | ssa.rb:2:3:2:3 | i | ssa.rb:1:1:16:3 | m |
| ssa.rb:4:3:4:12 | self | ssa.rb:1:1:16:3 | self | ssa.rb:1:1:16:3 | m |
| ssa.rb:4:8:4:8 | i | ssa.rb:2:3:2:3 | i | ssa.rb:1:1:16:3 | m |
| ssa.rb:5:6:5:6 | b | ssa.rb:1:7:1:7 | b | ssa.rb:1:1:16:3 | m |
| ssa.rb:6:5:6:5 | i | ssa.rb:2:3:2:3 | i | ssa.rb:1:1:16:3 | m |
| ssa.rb:7:5:7:10 | self | ssa.rb:1:1:16:3 | self | ssa.rb:1:1:16:3 | m |
| ssa.rb:7:10:7:10 | i | ssa.rb:2:3:2:3 | i | ssa.rb:1:1:16:3 | m |
| ssa.rb:8:5:8:14 | self | ssa.rb:1:1:16:3 | self | ssa.rb:1:1:16:3 | m |
| ssa.rb:8:10:8:10 | i | ssa.rb:2:3:2:3 | i | ssa.rb:1:1:16:3 | m |
| ssa.rb:10:5:10:5 | i | ssa.rb:2:3:2:3 | i | ssa.rb:1:1:16:3 | m |
| ssa.rb:11:5:11:10 | self | ssa.rb:1:1:16:3 | self | ssa.rb:1:1:16:3 | m |
| ssa.rb:11:10:11:10 | i | ssa.rb:2:3:2:3 | i | ssa.rb:1:1:16:3 | m |
| ssa.rb:12:5:12:14 | self | ssa.rb:1:1:16:3 | self | ssa.rb:1:1:16:3 | m |
| ssa.rb:12:10:12:10 | i | ssa.rb:2:3:2:3 | i | ssa.rb:1:1:16:3 | m |
| ssa.rb:15:3:15:8 | self | ssa.rb:1:1:16:3 | self | ssa.rb:1:1:16:3 | m |
| ssa.rb:15:8:15:8 | i | ssa.rb:2:3:2:3 | i | ssa.rb:1:1:16:3 | m |
| ssa.rb:18:8:18:8 | x | ssa.rb:18:8:18:8 | x | ssa.rb:18:1:23:3 | m1 |
| ssa.rb:19:9:19:9 | x | ssa.rb:18:8:18:8 | x | ssa.rb:18:1:23:3 | m1 |
| ssa.rb:20:5:20:10 | self | ssa.rb:18:1:23:3 | self | ssa.rb:18:1:23:3 | m1 |
| ssa.rb:20:10:20:10 | x | ssa.rb:18:8:18:8 | x | ssa.rb:18:1:23:3 | m1 |
| ssa.rb:21:5:21:5 | x | ssa.rb:18:8:18:8 | x | ssa.rb:18:1:23:3 | m1 |
| ssa.rb:21:5:21:5 | x | ssa.rb:18:8:18:8 | x | ssa.rb:18:1:23:3 | m1 |
| ssa.rb:25:8:25:15 | elements | ssa.rb:25:8:25:15 | elements | ssa.rb:25:1:30:3 | m2 |
| ssa.rb:26:7:26:10 | elem | ssa.rb:26:7:26:10 | elem | ssa.rb:25:1:30:3 | m2 |
| ssa.rb:26:15:26:22 | elements | ssa.rb:25:8:25:15 | elements | ssa.rb:25:1:30:3 | m2 |
| ssa.rb:27:5:27:13 | self | ssa.rb:25:1:30:3 | self | ssa.rb:25:1:30:3 | m2 |
| ssa.rb:27:10:27:13 | elem | ssa.rb:26:7:26:10 | elem | ssa.rb:25:1:30:3 | m2 |
| ssa.rb:29:3:29:11 | self | ssa.rb:25:1:30:3 | self | ssa.rb:25:1:30:3 | m2 |
| ssa.rb:29:8:29:11 | elem | ssa.rb:26:7:26:10 | elem | ssa.rb:25:1:30:3 | m2 |
| ssa.rb:33:20:33:20 | x | ssa.rb:33:20:33:20 | x | ssa.rb:33:16:35:5 | do ... end |
| ssa.rb:34:5:34:10 | self | ssa.rb:32:1:36:3 | self | ssa.rb:32:1:36:3 | m3 |
| ssa.rb:34:10:34:10 | x | ssa.rb:33:20:33:20 | x | ssa.rb:33:16:35:5 | do ... end |
| ssa.rb:39:3:39:9 | self | ssa.rb:38:1:42:3 | self | ssa.rb:38:1:42:3 | m4 |
| ssa.rb:39:8:39:9 | self | ssa.rb:38:1:42:3 | self | ssa.rb:38:1:42:3 | m4 |
| ssa.rb:40:3:40:4 | m3 | ssa.rb:40:3:40:4 | m3 | ssa.rb:38:1:42:3 | m4 |
| ssa.rb:41:3:41:13 | self | ssa.rb:38:1:42:3 | self | ssa.rb:38:1:42:3 | m4 |
| ssa.rb:41:8:41:9 | m3 | ssa.rb:40:3:40:4 | m3 | ssa.rb:38:1:42:3 | m4 |
| ssa.rb:44:8:44:8 | b | ssa.rb:44:8:44:8 | b | ssa.rb:44:1:47:3 | m5 |
| ssa.rb:45:3:45:3 | x | ssa.rb:45:3:45:3 | x | ssa.rb:44:1:47:3 | m5 |
| ssa.rb:45:12:45:12 | b | ssa.rb:44:8:44:8 | b | ssa.rb:44:1:47:3 | m5 |
| ssa.rb:46:3:46:8 | self | ssa.rb:44:1:47:3 | self | ssa.rb:44:1:47:3 | m5 |
| ssa.rb:46:8:46:8 | x | ssa.rb:45:3:45:3 | x | ssa.rb:44:1:47:3 | m5 |
| ssa.rb:49:9:49:9 | x | ssa.rb:49:9:49:9 | x | ssa.rb:49:1:51:3 | m6 |
| ssa.rb:49:14:49:14 | y | ssa.rb:49:14:49:14 | y | ssa.rb:49:1:51:3 | m6 |
| ssa.rb:50:3:50:8 | self | ssa.rb:49:1:51:3 | self | ssa.rb:49:1:51:3 | m6 |
| ssa.rb:50:8:50:8 | y | ssa.rb:49:14:49:14 | y | ssa.rb:49:1:51:3 | m6 |
| ssa.rb:53:8:53:10 | foo | ssa.rb:53:8:53:10 | foo | ssa.rb:53:1:56:3 | m7 |
| ssa.rb:54:3:54:3 | x | ssa.rb:54:3:54:3 | x | ssa.rb:53:1:56:3 | m7 |
| ssa.rb:54:7:54:9 | foo | ssa.rb:53:8:53:10 | foo | ssa.rb:53:1:56:3 | m7 |
| ssa.rb:55:3:55:8 | self | ssa.rb:53:1:56:3 | self | ssa.rb:53:1:56:3 | m7 |
| ssa.rb:55:8:55:8 | x | ssa.rb:54:3:54:3 | x | ssa.rb:53:1:56:3 | m7 |
| ssa.rb:59:3:59:3 | x | ssa.rb:59:3:59:3 | x | ssa.rb:58:1:62:3 | m8 |
| ssa.rb:60:3:60:3 | x | ssa.rb:59:3:59:3 | x | ssa.rb:58:1:62:3 | m8 |
| ssa.rb:60:3:60:3 | x | ssa.rb:59:3:59:3 | x | ssa.rb:58:1:62:3 | m8 |
| ssa.rb:61:3:61:8 | self | ssa.rb:58:1:62:3 | self | ssa.rb:58:1:62:3 | m8 |
| ssa.rb:61:8:61:8 | x | ssa.rb:59:3:59:3 | x | ssa.rb:58:1:62:3 | m8 |
| ssa.rb:64:8:64:8 | a | ssa.rb:64:8:64:8 | a | ssa.rb:64:1:72:3 | m9 |
| ssa.rb:65:3:65:10 | captured | ssa.rb:65:3:65:10 | captured | ssa.rb:64:1:72:3 | m9 |
| ssa.rb:66:3:66:3 | a | ssa.rb:64:8:64:8 | a | ssa.rb:64:1:72:3 | m9 |
| ssa.rb:66:15:66:15 | a | ssa.rb:66:15:66:15 | a | ssa.rb:66:11:70:5 | do ... end |
| ssa.rb:67:5:67:10 | self | ssa.rb:64:1:72:3 | self | ssa.rb:64:1:72:3 | m9 |
| ssa.rb:67:10:67:10 | a | ssa.rb:66:15:66:15 | a | ssa.rb:66:11:70:5 | do ... end |
| ssa.rb:68:5:68:17 | self | ssa.rb:64:1:72:3 | self | ssa.rb:64:1:72:3 | m9 |
| ssa.rb:68:10:68:17 | captured | ssa.rb:65:3:65:10 | captured | ssa.rb:64:1:72:3 | m9 |
| ssa.rb:69:5:69:12 | captured | ssa.rb:65:3:65:10 | captured | ssa.rb:64:1:72:3 | m9 |
| ssa.rb:69:5:69:12 | captured | ssa.rb:65:3:65:10 | captured | ssa.rb:64:1:72:3 | m9 |
| ssa.rb:71:3:71:15 | self | ssa.rb:64:1:72:3 | self | ssa.rb:64:1:72:3 | m9 |
| ssa.rb:71:8:71:15 | captured | ssa.rb:65:3:65:10 | captured | ssa.rb:64:1:72:3 | m9 |
| ssa.rb:75:3:75:10 | captured | ssa.rb:75:3:75:10 | captured | ssa.rb:74:1:79:3 | m10 |
| ssa.rb:76:3:78:5 | self | ssa.rb:74:1:79:3 | self | ssa.rb:74:1:79:3 | m10 |
| ssa.rb:77:6:77:23 | self | ssa.rb:74:1:79:3 | self | ssa.rb:74:1:79:3 | m10 |
| ssa.rb:77:15:77:22 | captured | ssa.rb:75:3:75:10 | captured | ssa.rb:74:1:79:3 | m10 |
| ssa.rb:82:3:82:10 | captured | ssa.rb:82:3:82:10 | captured | ssa.rb:81:1:88:3 | m11 |
| ssa.rb:83:3:87:5 | self | ssa.rb:81:1:88:3 | self | ssa.rb:81:1:88:3 | m11 |
| ssa.rb:84:6:86:8 | self | ssa.rb:81:1:88:3 | self | ssa.rb:81:1:88:3 | m11 |
| ssa.rb:85:10:85:22 | self | ssa.rb:81:1:88:3 | self | ssa.rb:81:1:88:3 | m11 |
| ssa.rb:85:15:85:22 | captured | ssa.rb:82:3:82:10 | captured | ssa.rb:81:1:88:3 | m11 |
explicitWrite
| class_variables.rb:1:1:1:3 | @@x | class_variables.rb:1:1:1:8 | ... = ... |
@@ -290,64 +366,113 @@ implicitWrite
| ssa.rb:64:8:64:8 | a |
| ssa.rb:66:15:66:15 | a |
readAccess
| class_variables.rb:3:1:3:5 | self |
| class_variables.rb:3:3:3:5 | @@x |
| class_variables.rb:6:2:6:6 | self |
| class_variables.rb:6:4:6:6 | @@x |
| class_variables.rb:11:5:11:9 | self |
| class_variables.rb:11:7:11:9 | @@x |
| class_variables.rb:13:7:13:10 | self |
| class_variables.rb:14:4:14:8 | self |
| class_variables.rb:14:6:14:8 | @@x |
| class_variables.rb:27:3:27:11 | self |
| class_variables.rb:28:3:28:7 | self |
| class_variables.rb:28:5:28:7 | @@x |
| instance_variables.rb:8:3:8:11 | self |
| instance_variables.rb:8:8:8:11 | @foo |
| instance_variables.rb:11:1:11:9 | self |
| instance_variables.rb:11:6:11:9 | @top |
| instance_variables.rb:27:1:29:1 | self |
| instance_variables.rb:41:4:41:4 | self |
| instance_variables.rb:42:4:42:7 | self |
| instance_variables.rb:42:6:42:7 | @x |
| nested_scopes.rb:2:3:2:17 | self |
| nested_scopes.rb:14:11:14:16 | self |
| nested_scopes.rb:14:16:14:16 | a |
| nested_scopes.rb:15:11:15:11 | a |
| nested_scopes.rb:16:13:16:13 | a |
| nested_scopes.rb:18:15:18:15 | a |
| nested_scopes.rb:18:29:18:34 | self |
| nested_scopes.rb:18:34:18:34 | a |
| nested_scopes.rb:23:11:23:16 | self |
| nested_scopes.rb:23:16:23:16 | a |
| nested_scopes.rb:25:9:25:14 | self |
| nested_scopes.rb:25:14:25:14 | a |
| nested_scopes.rb:27:11:27:14 | self |
| nested_scopes.rb:28:11:28:16 | self |
| nested_scopes.rb:28:16:28:16 | self |
| nested_scopes.rb:30:16:30:19 | self |
| nested_scopes.rb:32:11:32:16 | self |
| nested_scopes.rb:32:16:32:16 | a |
| nested_scopes.rb:34:7:34:12 | self |
| nested_scopes.rb:34:12:34:12 | a |
| nested_scopes.rb:36:5:36:10 | self |
| nested_scopes.rb:36:10:36:10 | a |
| nested_scopes.rb:38:3:38:8 | self |
| nested_scopes.rb:38:8:38:8 | a |
| nested_scopes.rb:41:1:41:1 | d |
| parameters.rb:3:4:3:9 | self |
| parameters.rb:3:9:3:9 | x |
| parameters.rb:4:4:4:9 | self |
| parameters.rb:4:9:4:9 | y |
| parameters.rb:8:6:8:11 | pizzas |
| parameters.rb:9:5:9:33 | self |
| parameters.rb:9:25:9:30 | client |
| parameters.rb:11:5:11:49 | self |
| parameters.rb:11:14:11:19 | pizzas |
| parameters.rb:11:41:11:46 | client |
| parameters.rb:16:3:16:5 | map |
| parameters.rb:17:5:17:28 | self |
| parameters.rb:17:13:17:15 | key |
| parameters.rb:17:22:17:26 | value |
| parameters.rb:22:3:22:7 | block |
| parameters.rb:25:40:25:43 | name |
| parameters.rb:26:3:26:11 | self |
| parameters.rb:26:8:26:11 | name |
| parameters.rb:27:3:27:11 | self |
| parameters.rb:27:8:27:11 | size |
| parameters.rb:31:3:31:35 | self |
| parameters.rb:31:11:31:15 | first |
| parameters.rb:31:20:31:25 | middle |
| parameters.rb:31:30:31:33 | last |
| parameters.rb:37:3:37:18 | self |
| parameters.rb:37:11:37:11 | a |
| parameters.rb:37:16:37:16 | b |
| parameters.rb:42:3:42:18 | self |
| parameters.rb:42:11:42:11 | d |
| parameters.rb:42:16:42:16 | e |
| parameters.rb:46:3:46:8 | self |
| parameters.rb:46:8:46:8 | _ |
| parameters.rb:50:3:50:18 | self |
| parameters.rb:50:11:50:11 | a |
| parameters.rb:50:16:50:16 | b |
| parameters.rb:55:4:55:9 | self |
| parameters.rb:55:9:55:9 | x |
| parameters.rb:56:4:56:9 | self |
| parameters.rb:56:9:56:9 | y |
| scopes.rb:3:4:3:9 | self |
| scopes.rb:3:9:3:9 | self |
| scopes.rb:5:4:5:9 | self |
| scopes.rb:5:9:5:9 | a |
| scopes.rb:8:1:8:6 | self |
| scopes.rb:8:6:8:6 | a |
| scopes.rb:10:4:10:9 | self |
| scopes.rb:10:9:10:9 | a |
| scopes.rb:11:4:11:4 | a |
| scopes.rb:12:4:12:9 | self |
| scopes.rb:12:9:12:9 | a |
| scopes.rb:13:4:13:4 | __synth__0 |
| scopes.rb:13:7:13:7 | __synth__0 |
| scopes.rb:13:10:13:15 | __synth__0 |
| scopes.rb:13:11:13:11 | __synth__0__1 |
| scopes.rb:13:14:13:14 | __synth__0__1 |
| scopes.rb:14:4:14:9 | self |
| scopes.rb:14:9:14:9 | a |
| scopes.rb:15:4:15:9 | self |
| scopes.rb:15:9:15:9 | b |
| scopes.rb:16:4:16:9 | self |
| scopes.rb:16:9:16:9 | c |
| scopes.rb:17:4:17:9 | self |
| scopes.rb:17:9:17:9 | d |
| scopes.rb:24:10:24:11 | $0 |
| scopes.rb:28:8:28:8 | x |
@@ -356,34 +481,61 @@ readAccess
| scopes.rb:34:14:34:14 | x |
| scopes.rb:37:5:37:5 | x |
| scopes.rb:44:5:44:7 | var |
| scopes.rb:45:5:45:7 | self |
| scopes.rb:47:5:47:8 | var2 |
| ssa.rb:3:3:3:8 | self |
| ssa.rb:3:8:3:8 | i |
| ssa.rb:4:3:4:12 | self |
| ssa.rb:4:8:4:8 | i |
| ssa.rb:5:6:5:6 | b |
| ssa.rb:7:5:7:10 | self |
| ssa.rb:7:10:7:10 | i |
| ssa.rb:8:5:8:14 | self |
| ssa.rb:8:10:8:10 | i |
| ssa.rb:11:5:11:10 | self |
| ssa.rb:11:10:11:10 | i |
| ssa.rb:12:5:12:14 | self |
| ssa.rb:12:10:12:10 | i |
| ssa.rb:15:3:15:8 | self |
| ssa.rb:15:8:15:8 | i |
| ssa.rb:19:9:19:9 | x |
| ssa.rb:20:5:20:10 | self |
| ssa.rb:20:10:20:10 | x |
| ssa.rb:21:5:21:5 | x |
| ssa.rb:26:15:26:22 | elements |
| ssa.rb:27:5:27:13 | self |
| ssa.rb:27:10:27:13 | elem |
| ssa.rb:29:3:29:11 | self |
| ssa.rb:29:8:29:11 | elem |
| ssa.rb:34:5:34:10 | self |
| ssa.rb:34:10:34:10 | x |
| ssa.rb:39:3:39:9 | self |
| ssa.rb:39:8:39:9 | self |
| ssa.rb:41:3:41:13 | self |
| ssa.rb:41:8:41:9 | m3 |
| ssa.rb:45:12:45:12 | b |
| ssa.rb:46:3:46:8 | self |
| ssa.rb:46:8:46:8 | x |
| ssa.rb:50:3:50:8 | self |
| ssa.rb:50:8:50:8 | y |
| ssa.rb:54:7:54:9 | foo |
| ssa.rb:55:3:55:8 | self |
| ssa.rb:55:8:55:8 | x |
| ssa.rb:60:3:60:3 | x |
| ssa.rb:61:3:61:8 | self |
| ssa.rb:61:8:61:8 | x |
| ssa.rb:66:3:66:3 | a |
| ssa.rb:67:5:67:10 | self |
| ssa.rb:67:10:67:10 | a |
| ssa.rb:68:5:68:17 | self |
| ssa.rb:68:10:68:17 | captured |
| ssa.rb:69:5:69:12 | captured |
| ssa.rb:71:3:71:15 | self |
| ssa.rb:71:8:71:15 | captured |
| ssa.rb:76:3:78:5 | self |
| ssa.rb:77:6:77:23 | self |
| ssa.rb:77:15:77:22 | captured |
| ssa.rb:83:3:87:5 | self |
| ssa.rb:84:6:86:8 | self |
| ssa.rb:85:10:85:22 | self |
| ssa.rb:85:15:85:22 | captured |

View File

@@ -1,55 +1,96 @@
| class_variables.rb:1:1:1:3 | @@x |
| class_variables.rb:1:1:29:4 | self |
| class_variables.rb:5:1:7:3 | self |
| class_variables.rb:9:1:16:3 | self |
| class_variables.rb:10:3:12:5 | self |
| class_variables.rb:11:7:11:9 | @@x |
| class_variables.rb:13:3:15:5 | self |
| class_variables.rb:18:1:20:3 | self |
| class_variables.rb:19:3:19:5 | @@x |
| class_variables.rb:22:1:24:3 | self |
| class_variables.rb:23:3:23:5 | @@x |
| class_variables.rb:26:1:29:3 | self |
| class_variables.rb:28:5:28:7 | @@x |
| file://:0:0:0:0 | $0 |
| file://:0:0:0:0 | $global |
| instance_variables.rb:1:1:1:4 | @top |
| instance_variables.rb:1:1:44:4 | self |
| instance_variables.rb:3:1:5:3 | self |
| instance_variables.rb:4:3:4:6 | @foo |
| instance_variables.rb:7:1:9:3 | self |
| instance_variables.rb:13:1:18:3 | self |
| instance_variables.rb:14:3:14:4 | @x |
| instance_variables.rb:15:3:17:5 | self |
| instance_variables.rb:16:5:16:6 | @y |
| instance_variables.rb:20:1:25:3 | self |
| instance_variables.rb:21:2:21:3 | @m |
| instance_variables.rb:22:2:24:4 | self |
| instance_variables.rb:23:4:23:5 | @n |
| instance_variables.rb:28:3:28:4 | @x |
| instance_variables.rb:31:1:33:3 | self |
| instance_variables.rb:32:12:32:13 | @x |
| instance_variables.rb:35:1:44:4 | self |
| instance_variables.rb:36:3:36:4 | @x |
| instance_variables.rb:37:3:43:5 | self |
| instance_variables.rb:38:4:40:6 | self |
| instance_variables.rb:39:6:39:7 | @x |
| nested_scopes.rb:1:1:3:3 | self |
| nested_scopes.rb:1:1:42:1 | self |
| nested_scopes.rb:4:1:39:3 | self |
| nested_scopes.rb:5:3:5:3 | a |
| nested_scopes.rb:6:3:37:5 | self |
| nested_scopes.rb:7:5:7:5 | a |
| nested_scopes.rb:8:5:35:7 | self |
| nested_scopes.rb:9:7:9:7 | a |
| nested_scopes.rb:10:7:26:9 | self |
| nested_scopes.rb:11:9:11:9 | a |
| nested_scopes.rb:12:9:21:11 | self |
| nested_scopes.rb:13:11:13:11 | a |
| nested_scopes.rb:15:23:15:23 | a |
| nested_scopes.rb:16:26:16:26 | x |
| nested_scopes.rb:16:29:16:29 | a |
| nested_scopes.rb:18:26:18:26 | x |
| nested_scopes.rb:22:9:24:11 | self |
| nested_scopes.rb:22:21:22:21 | a |
| nested_scopes.rb:27:7:29:9 | self |
| nested_scopes.rb:30:7:33:9 | self |
| nested_scopes.rb:31:11:31:11 | a |
| nested_scopes.rb:40:1:40:1 | d |
| parameters.rb:1:1:58:1 | self |
| parameters.rb:1:14:1:14 | x |
| parameters.rb:1:18:1:18 | y |
| parameters.rb:7:1:13:3 | self |
| parameters.rb:7:17:7:22 | client |
| parameters.rb:7:26:7:31 | pizzas |
| parameters.rb:15:1:19:3 | self |
| parameters.rb:15:17:15:19 | map |
| parameters.rb:16:16:16:18 | key |
| parameters.rb:16:21:16:25 | value |
| parameters.rb:21:1:23:3 | self |
| parameters.rb:21:17:21:21 | block |
| parameters.rb:25:1:28:3 | self |
| parameters.rb:25:15:25:18 | name |
| parameters.rb:25:33:25:36 | size |
| parameters.rb:30:1:32:3 | self |
| parameters.rb:30:15:30:19 | first |
| parameters.rb:30:24:30:29 | middle |
| parameters.rb:30:36:30:39 | last |
| parameters.rb:34:1:34:1 | b |
| parameters.rb:35:1:38:3 | self |
| parameters.rb:35:11:35:11 | a |
| parameters.rb:35:16:35:16 | b |
| parameters.rb:40:1:43:3 | self |
| parameters.rb:40:12:40:12 | d |
| parameters.rb:40:15:40:15 | e |
| parameters.rb:45:1:47:3 | self |
| parameters.rb:45:20:45:20 | _ |
| parameters.rb:49:1:51:3 | self |
| parameters.rb:49:13:49:13 | a |
| parameters.rb:49:15:49:15 | b |
| parameters.rb:53:1:53:1 | x |
| parameters.rb:54:14:54:14 | y |
| scopes.rb:1:1:1:15 | self |
| scopes.rb:1:1:49:4 | self |
| scopes.rb:2:14:2:14 | x |
| scopes.rb:4:4:4:4 | a |
| scopes.rb:7:1:7:1 | a |
@@ -60,30 +101,49 @@
| scopes.rb:13:11:13:11 | c |
| scopes.rb:13:14:13:14 | d |
| scopes.rb:24:1:24:6 | script |
| scopes.rb:26:1:26:12 | self |
| scopes.rb:27:1:27:1 | x |
| scopes.rb:28:1:30:3 | self |
| scopes.rb:29:3:29:3 | x |
| scopes.rb:31:1:33:3 | self |
| scopes.rb:32:3:32:3 | x |
| scopes.rb:34:1:36:3 | self |
| scopes.rb:35:3:35:3 | x |
| scopes.rb:37:1:39:3 | self |
| scopes.rb:38:3:38:3 | x |
| scopes.rb:41:1:49:3 | self |
| scopes.rb:42:2:42:4 | var |
| scopes.rb:43:2:43:4 | foo |
| scopes.rb:46:5:46:8 | var2 |
| ssa.rb:1:1:16:3 | self |
| ssa.rb:1:1:88:3 | self |
| ssa.rb:1:7:1:7 | b |
| ssa.rb:2:3:2:3 | i |
| ssa.rb:18:1:23:3 | self |
| ssa.rb:18:8:18:8 | x |
| ssa.rb:25:1:30:3 | self |
| ssa.rb:25:8:25:15 | elements |
| ssa.rb:26:7:26:10 | elem |
| ssa.rb:32:1:36:3 | self |
| ssa.rb:33:20:33:20 | x |
| ssa.rb:38:1:42:3 | self |
| ssa.rb:40:3:40:4 | m3 |
| ssa.rb:44:1:47:3 | self |
| ssa.rb:44:8:44:8 | b |
| ssa.rb:45:3:45:3 | x |
| ssa.rb:49:1:51:3 | self |
| ssa.rb:49:9:49:9 | x |
| ssa.rb:49:14:49:14 | y |
| ssa.rb:53:1:56:3 | self |
| ssa.rb:53:8:53:10 | foo |
| ssa.rb:54:3:54:3 | x |
| ssa.rb:58:1:62:3 | self |
| ssa.rb:59:3:59:3 | x |
| ssa.rb:64:1:72:3 | self |
| ssa.rb:64:8:64:8 | a |
| ssa.rb:65:3:65:10 | captured |
| ssa.rb:66:15:66:15 | a |
| ssa.rb:74:1:79:3 | self |
| ssa.rb:75:3:75:10 | captured |
| ssa.rb:81:1:88:3 | self |
| ssa.rb:82:3:82:10 | captured |

View File

@@ -2,6 +2,7 @@ edges
| app/controllers/foo/stores_controller.rb:8:10:8:29 | call to read : | app/controllers/foo/stores_controller.rb:9:22:9:23 | dt : |
| app/controllers/foo/stores_controller.rb:8:10:8:29 | call to read : | app/controllers/foo/stores_controller.rb:13:55:13:56 | dt : |
| app/controllers/foo/stores_controller.rb:9:22:9:23 | dt : | app/views/foo/stores/show.html.erb:38:3:38:16 | @instance_text |
| app/controllers/foo/stores_controller.rb:12:28:12:48 | call to raw_name : | app/views/foo/stores/show.html.erb:84:5:84:24 | @other_user_raw_name |
| app/controllers/foo/stores_controller.rb:13:55:13:56 | dt : | app/views/foo/stores/show.html.erb:2:9:2:20 | call to display_text |
| app/controllers/foo/stores_controller.rb:13:55:13:56 | dt : | app/views/foo/stores/show.html.erb:5:9:5:36 | ...[...] |
| app/controllers/foo/stores_controller.rb:13:55:13:56 | dt : | app/views/foo/stores/show.html.erb:9:9:9:26 | ...[...] |
@@ -13,6 +14,7 @@ edges
nodes
| app/controllers/foo/stores_controller.rb:8:10:8:29 | call to read : | semmle.label | call to read : |
| app/controllers/foo/stores_controller.rb:9:22:9:23 | dt : | semmle.label | dt : |
| app/controllers/foo/stores_controller.rb:12:28:12:48 | call to raw_name : | semmle.label | call to raw_name : |
| app/controllers/foo/stores_controller.rb:13:55:13:56 | dt : | semmle.label | dt : |
| app/views/foo/bars/_widget.html.erb:5:9:5:20 | call to display_text | semmle.label | call to display_text |
| app/views/foo/bars/_widget.html.erb:8:9:8:36 | ...[...] | semmle.label | ...[...] |
@@ -24,7 +26,10 @@ nodes
| app/views/foo/stores/show.html.erb:41:64:41:87 | ... + ... : | semmle.label | ... + ... : |
| app/views/foo/stores/show.html.erb:41:76:41:87 | call to display_text : | semmle.label | call to display_text : |
| app/views/foo/stores/show.html.erb:47:5:47:16 | call to handle | semmle.label | call to handle |
| app/views/foo/stores/show.html.erb:50:5:50:18 | call to raw_name | semmle.label | call to raw_name |
| app/views/foo/stores/show.html.erb:64:3:64:18 | call to handle | semmle.label | call to handle |
| app/views/foo/stores/show.html.erb:70:3:70:20 | call to raw_name | semmle.label | call to raw_name |
| app/views/foo/stores/show.html.erb:84:5:84:24 | @other_user_raw_name | semmle.label | @other_user_raw_name |
subpaths
#select
| app/views/foo/bars/_widget.html.erb:5:9:5:20 | call to display_text | app/controllers/foo/stores_controller.rb:8:10:8:29 | call to read : | app/views/foo/bars/_widget.html.erb:5:9:5:20 | call to display_text | Cross-site scripting vulnerability due to $@ | app/controllers/foo/stores_controller.rb:8:10:8:29 | call to read | stored value |
@@ -35,4 +40,7 @@ subpaths
| app/views/foo/stores/show.html.erb:33:3:33:14 | call to display_text | app/controllers/foo/stores_controller.rb:8:10:8:29 | call to read : | app/views/foo/stores/show.html.erb:33:3:33:14 | call to display_text | Cross-site scripting vulnerability due to $@ | app/controllers/foo/stores_controller.rb:8:10:8:29 | call to read | stored value |
| app/views/foo/stores/show.html.erb:38:3:38:16 | @instance_text | app/controllers/foo/stores_controller.rb:8:10:8:29 | call to read : | app/views/foo/stores/show.html.erb:38:3:38:16 | @instance_text | Cross-site scripting vulnerability due to $@ | app/controllers/foo/stores_controller.rb:8:10:8:29 | call to read | stored value |
| app/views/foo/stores/show.html.erb:47:5:47:16 | call to handle | app/views/foo/stores/show.html.erb:47:5:47:16 | call to handle | app/views/foo/stores/show.html.erb:47:5:47:16 | call to handle | Cross-site scripting vulnerability due to $@ | app/views/foo/stores/show.html.erb:47:5:47:16 | call to handle | stored value |
| app/views/foo/stores/show.html.erb:50:5:50:18 | call to raw_name | app/views/foo/stores/show.html.erb:50:5:50:18 | call to raw_name | app/views/foo/stores/show.html.erb:50:5:50:18 | call to raw_name | Cross-site scripting vulnerability due to $@ | app/views/foo/stores/show.html.erb:50:5:50:18 | call to raw_name | stored value |
| app/views/foo/stores/show.html.erb:64:3:64:18 | call to handle | app/views/foo/stores/show.html.erb:64:3:64:18 | call to handle | app/views/foo/stores/show.html.erb:64:3:64:18 | call to handle | Cross-site scripting vulnerability due to $@ | app/views/foo/stores/show.html.erb:64:3:64:18 | call to handle | stored value |
| app/views/foo/stores/show.html.erb:70:3:70:20 | call to raw_name | app/views/foo/stores/show.html.erb:70:3:70:20 | call to raw_name | app/views/foo/stores/show.html.erb:70:3:70:20 | call to raw_name | Cross-site scripting vulnerability due to $@ | app/views/foo/stores/show.html.erb:70:3:70:20 | call to raw_name | stored value |
| app/views/foo/stores/show.html.erb:84:5:84:24 | @other_user_raw_name | app/controllers/foo/stores_controller.rb:12:28:12:48 | call to raw_name : | app/views/foo/stores/show.html.erb:84:5:84:24 | @other_user_raw_name | Cross-site scripting vulnerability due to $@ | app/controllers/foo/stores_controller.rb:12:28:12:48 | call to raw_name | stored value |