Merge pull request #21867 from aschackmull/ruby/callable-body

Ruby: Split callable and its body into two AST nodes.
This commit is contained in:
Anders Schack-Mulligen
2026-05-29 10:16:19 +02:00
committed by GitHub
22 changed files with 978 additions and 670 deletions

View File

@@ -11,9 +11,7 @@ import codeql.ruby.controlflow.internal.ControlFlowGraphImpl as CfgImpl
query predicate nonPostOrderExpr(Expr e, string cls) {
cls = e.getPrimaryQlClasses() and
not exists(e.getDesugared()) and
not e instanceof BeginExpr and
not e instanceof Namespace and
not e instanceof Toplevel and
not e instanceof BodyStmt and
exists(AstNode last, Completion c |
CfgImpl::last(e, last, c) and
last != e and
@@ -27,7 +25,7 @@ query predicate scopeNoFirst(CfgScope scope) {
not scope =
any(Callable c |
not exists(c.getAParameter()) and
not c.(BodyStmt).hasEnsure() and
not exists(c.(BodyStmt).getARescue())
not c.getBody().hasEnsure() and
not exists(c.getBody().getARescue())
)
}

View File

@@ -156,14 +156,23 @@ class ErbDirective extends TDirectiveNode, ErbAstNode {
)
}
pragma[nomagic]
private Stmt getAChildStmt0() {
this.containsAstNodeStart(result) and
not this.containsAstNodeStart(result.getParent())
}
/**
* Gets a statement that starts in directive that is not a child of any other
* statement starting in this directive.
*/
cached
Stmt getAChildStmt() {
result = this.getAChildStmt0() and
not result instanceof BodyStmt
or
this.containsAstNodeStart(result) and
not this.containsAstNodeStart(result.getParent())
result = this.getAChildStmt0().(BodyStmt).getAStmt()
}
/**

View File

@@ -167,6 +167,8 @@ class StmtSequence extends Expr, TStmtSequence {
*/
class BodyStmt extends StmtSequence, TBodyStmt {
final override Stmt getStmt(int n) {
synthChild(this, n, result)
or
toGenerated(result) =
rank[n + 1](Ruby::AstNode node, int i |
node = getBodyStmtChild(this, i) and

View File

@@ -8,7 +8,7 @@ private import internal.TreeSitter
private import internal.Method
/** A callable. */
class Callable extends StmtSequence, Expr, Scope, TCallable {
class Callable extends Expr, Scope, TCallable {
/** Gets the number of parameters of this callable. */
final int getNumberOfParameters() { result = count(this.getAParameter()) }
@@ -18,27 +18,26 @@ class Callable extends StmtSequence, Expr, Scope, TCallable {
/** Gets the `n`th parameter of this callable. */
Parameter getParameter(int n) { none() }
/** Gets the body of this callable. */
BodyStmt getBody() { none() }
override AstNode getAChild(string pred) {
result = super.getAChild(pred)
or
pred = "getBody" and result = this.getBody()
or
pred = "getParameter" and result = this.getParameter(_)
}
}
/** A method. */
class MethodBase extends Callable, BodyStmt, Scope, TMethodBase {
class MethodBase extends Callable, Scope, TMethodBase {
/** Gets the name of this method. */
string getName() { none() }
/** Holds if the name of this method is `name`. */
final predicate hasName(string name) { this.getName() = name }
override AstNode getAChild(string pred) {
result = Callable.super.getAChild(pred)
or
result = BodyStmt.super.getAChild(pred)
}
/**
* Holds if this method is public.
* Methods are public by default.
@@ -218,6 +217,10 @@ class Method extends MethodBase, TMethod {
toGenerated(result) = g.getParameters().getChild(n)
}
final override BodyStmt getBody() {
toGenerated(result) = g.getBody() or synthChild(this, _, result)
}
final override string toString() { result = this.getName() }
overlay[global]
@@ -280,6 +283,10 @@ class SingletonMethod extends MethodBase, TSingletonMethod {
toGenerated(result) = g.getParameters().getChild(n)
}
final override BodyStmt getBody() {
toGenerated(result) = g.getBody() or synthChild(this, _, result)
}
final override string toString() { result = this.getName() }
final override AstNode getAChild(string pred) {
@@ -321,7 +328,7 @@ class SingletonMethod extends MethodBase, TSingletonMethod {
* -> (x) { x + 1 }
* ```
*/
class Lambda extends Callable, BodyStmt, TLambda {
class Lambda extends Callable, TLambda {
private Ruby::Lambda g;
Lambda() { this = TLambda(g) }
@@ -332,17 +339,16 @@ class Lambda extends Callable, BodyStmt, TLambda {
toGenerated(result) = g.getParameters().getChild(n)
}
final override string toString() { result = "-> { ... }" }
final override AstNode getAChild(string pred) {
result = Callable.super.getAChild(pred)
or
result = BodyStmt.super.getAChild(pred)
final override BodyStmt getBody() {
toGenerated(result) = g.getBody().(Ruby::DoBlock).getBody() or
toGenerated(result) = g.getBody().(Ruby::Block).getBody()
}
final override string toString() { result = "-> { ... }" }
}
/** A block. */
class Block extends Callable, StmtSequence, Scope, TBlock {
class Block extends Callable, Scope, TBlock {
/**
* Gets a local variable declared by this block.
* For example `local` in `{ | param; local| puts param }`.
@@ -355,17 +361,15 @@ class Block extends Callable, StmtSequence, Scope, TBlock {
*/
LocalVariableWriteAccess getLocalVariable(int n) { none() }
override AstNode getAChild(string pred) {
final override AstNode getAChild(string pred) {
result = Callable.super.getAChild(pred)
or
result = StmtSequence.super.getAChild(pred)
or
pred = "getLocalVariable" and result = this.getLocalVariable(_)
}
}
/** A block enclosed within `do` and `end`. */
class DoBlock extends Block, BodyStmt, TDoBlock {
class DoBlock extends Block, TDoBlock {
private Ruby::DoBlock g;
DoBlock() { this = TDoBlock(g) }
@@ -378,13 +382,9 @@ class DoBlock extends Block, BodyStmt, TDoBlock {
toGenerated(result) = g.getParameters().getChild(n)
}
final override string toString() { result = "do ... end" }
final override BodyStmt getBody() { toGenerated(result) = g.getBody() }
final override AstNode getAChild(string pred) {
result = Block.super.getAChild(pred)
or
result = BodyStmt.super.getAChild(pred)
}
final override string toString() { result = "do ... end" }
final override string getAPrimaryQlClass() { result = "DoBlock" }
}

View File

@@ -100,9 +100,16 @@ private module Cached {
} or
TBlockArgument(Ruby::BlockArgument g) or
TBlockParameter(Ruby::BlockParameter g) or
TBodyStatement(Ruby::BodyStatement g) {
any(Ruby::Method m).getBody() = g or
any(Ruby::SingletonMethod m).getBody() = g or
any(Ruby::DoBlock b).getBody() = g
} or
TBodyStmtSynth(Ast::AstNode parent, int i) { mkSynthChild(BodyStmtKind(), parent, i) } or
TBooleanLiteralSynth(Ast::AstNode parent, int i, boolean value) {
mkSynthChild(BooleanLiteralKind(value), parent, i)
} or
TBraceBlockBody(Ruby::BlockBody g) or
TBraceBlockSynth(Ast::AstNode parent, int i) { mkSynthChild(BraceBlockKind(), parent, i) } or
TBraceBlockReal(Ruby::Block g) { not g.getParent() instanceof Ruby::Lambda } or
TBreakStmt(Ruby::Break g) or
@@ -362,23 +369,24 @@ private module Cached {
TAssignMulExpr or TAssignRShiftExpr or TAssignSubExpr or TBareStringLiteral or
TBareSymbolLiteral or TBeginBlock or TBeginExpr or TBitwiseAndExprReal or
TBitwiseOrExprReal or TBitwiseXorExprReal or TBlockArgument or TBlockParameter or
TBraceBlockReal or TBreakStmt or TCaseEqExpr or TCaseExpr or TCaseMatchReal or
TCharacterLiteral or TClassDeclaration or TClassVariableAccessReal or TComplementExpr or
TComplexLiteral or TDefinedExprReal or TDelimitedSymbolLiteral or
TDestructuredLeftAssignment or TDestructuredParameter or TDivExprReal or TDo or TDoBlock or
TElementReference or TElseReal or TElsif or TEmptyStmt or TEncoding or TEndBlock or
TEnsure or TEqExpr or TExponentExprReal or TFalseLiteral or TFile or TFindPattern or
TFloatLiteral or TForExpr or TForwardParameter or TForwardArgument or TGEExpr or TGTExpr or
TGlobalVariableAccessReal or THashKeySymbolLiteral or THashLiteral or THashPattern or
THashSplatExprReal or THashSplatNilParameter or THashSplatParameter or THereDoc or
TIdentifierMethodCall or TIfReal or TIfModifierExpr or TInClauseReal or
TInstanceVariableAccessReal or TIntegerLiteralReal or TKeywordParameter or TLEExpr or
TLShiftExprReal or TLTExpr or TLambda or TLeftAssignmentList or TLine or
TLocalVariableAccessReal or TLogicalAndExprReal or TLogicalOrExprReal or TMethod or
TMatchPattern or TModuleDeclaration or TModuloExprReal or TMulExprReal or TNEExpr or
TNextStmt or TNilLiteralReal or TNoRegExpMatchExpr or TNotExprReal or TOptionalParameter or
TPairReal or TParenthesizedExpr or TParenthesizedPattern or TRShiftExprReal or
TRangeLiteralReal or TRationalLiteral or TRedoStmt or TRegExpLiteral or TRegExpMatchExpr or
TBodyStatement or TBraceBlockBody or TBraceBlockReal or TBreakStmt or TCaseEqExpr or
TCaseExpr or TCaseMatchReal or TCharacterLiteral or TClassDeclaration or
TClassVariableAccessReal or TComplementExpr or TComplexLiteral or TDefinedExprReal or
TDelimitedSymbolLiteral or TDestructuredLeftAssignment or TDestructuredParameter or
TDivExprReal or TDo or TDoBlock or TElementReference or TElseReal or TElsif or TEmptyStmt or
TEncoding or TEndBlock or TEnsure or TEqExpr or TExponentExprReal or TFalseLiteral or
TFile or TFindPattern or TFloatLiteral or TForExpr or TForwardParameter or
TForwardArgument or TGEExpr or TGTExpr or TGlobalVariableAccessReal or
THashKeySymbolLiteral or THashLiteral or THashPattern or THashSplatExprReal or
THashSplatNilParameter or THashSplatParameter or THereDoc or TIdentifierMethodCall or
TIfReal or TIfModifierExpr or TInClauseReal or TInstanceVariableAccessReal or
TIntegerLiteralReal or TKeywordParameter or TLEExpr or TLShiftExprReal or TLTExpr or
TLambda or TLeftAssignmentList or TLine or TLocalVariableAccessReal or
TLogicalAndExprReal or TLogicalOrExprReal or TMethod or TMatchPattern or
TModuleDeclaration or TModuloExprReal or TMulExprReal or TNEExpr or TNextStmt or
TNilLiteralReal or TNoRegExpMatchExpr or TNotExprReal or TOptionalParameter or TPairReal or
TParenthesizedExpr or TParenthesizedPattern or TRShiftExprReal or TRangeLiteralReal or
TRationalLiteral or TRedoStmt or TRegExpLiteral or TRegExpMatchExpr or
TRegularArrayLiteral or TRegularMethodCall or TRegularStringLiteral or TRegularSuperCall or
TRescueClause or TRescueModifierExpr or TRetryStmt or TReturnStmt or
TScopeResolutionConstantAccess or TSelfReal or TSimpleParameterReal or
@@ -393,13 +401,13 @@ private module Cached {
class TAstNodeSynth =
TAddExprSynth or TAssignExprSynth or TBitwiseAndExprSynth or TBitwiseOrExprSynth or
TBitwiseXorExprSynth or TBraceBlockSynth or TBooleanLiteralSynth or TCaseMatchSynth or
TClassVariableAccessSynth or TConstantReadAccessSynth or TConstantWriteAccessSynth or
TDivExprSynth or TElseSynth or TExponentExprSynth or TGlobalVariableAccessSynth or
TIfSynth or TInClauseSynth or TInstanceVariableAccessSynth or TIntegerLiteralSynth or
TLShiftExprSynth or TLocalVariableAccessSynth or TLogicalAndExprSynth or
TLogicalOrExprSynth or TMethodCallSynth or TModuloExprSynth or TMulExprSynth or
TNilLiteralSynth or TRShiftExprSynth or TRangeLiteralSynth or TSelfSynth or
TBitwiseXorExprSynth or TBraceBlockSynth or TBodyStmtSynth or TBooleanLiteralSynth or
TCaseMatchSynth or TClassVariableAccessSynth or TConstantReadAccessSynth or
TConstantWriteAccessSynth or TDivExprSynth or TElseSynth or TExponentExprSynth or
TGlobalVariableAccessSynth or TIfSynth or TInClauseSynth or TInstanceVariableAccessSynth or
TIntegerLiteralSynth or TLShiftExprSynth or TLocalVariableAccessSynth or
TLogicalAndExprSynth or TLogicalOrExprSynth or TMethodCallSynth or TModuloExprSynth or
TMulExprSynth or TNilLiteralSynth or TRShiftExprSynth or TRangeLiteralSynth or TSelfSynth or
TSimpleParameterSynth or TSplatExprSynth or THashSplatExprSynth or TStmtSequenceSynth or
TSubExprSynth or TPairSynth or TSimpleSymbolLiteralSynth;
@@ -439,6 +447,8 @@ private module Cached {
n = TBitwiseXorExprReal(result) or
n = TBlockArgument(result) or
n = TBlockParameter(result) or
n = TBodyStatement(result) or
n = TBraceBlockBody(result) or
n = TBraceBlockReal(result) or
n = TBreakStmt(result) or
n = TCaseEqExpr(result) or
@@ -584,6 +594,8 @@ private module Cached {
or
result = TBitwiseXorExprSynth(parent, i)
or
result = TBodyStmtSynth(parent, i)
or
result = TBooleanLiteralSynth(parent, i, _)
or
result = TBraceBlockSynth(parent, i)
@@ -757,9 +769,9 @@ class TElse = TElseReal or TElseSynth;
class TStmtSequence =
TBeginBlock or TEndBlock or TThen or TElse or TDo or TEnsure or TStringInterpolationComponent or
TBlock or TBodyStmt or TParenthesizedExpr or TStmtSequenceSynth;
TBodyStmt or TParenthesizedExpr or TStmtSequenceSynth;
class TBodyStmt = TBeginExpr or TModuleBase or TMethod or TLambda or TDoBlock or TSingletonMethod;
class TBodyStmt = TBeginExpr or TModuleBase or TBraceBlockBody or TBodyStatement or TBodyStmtSynth;
class TNilLiteral = TNilLiteralReal or TNilLiteralSynth;

View File

@@ -14,6 +14,18 @@ class StmtSequenceSynth extends StmtSequence, TStmtSequenceSynth {
final override string toString() { result = "..." }
}
class BodyStatement extends BodyStmt, TBodyStatement {
final override string toString() { result = "..." }
}
class BraceBlockBody extends BodyStmt, TBraceBlockBody {
final override string toString() { result = "..." }
}
class BodyStmtSynth extends BodyStmt, TBodyStmtSynth {
final override string toString() { result = "..." }
}
class Then extends StmtSequence, TThen {
private Ruby::Then g;
@@ -64,26 +76,9 @@ class Ensure extends StmtSequence, TEnsure {
// Not defined by dispatch, as it should not be exposed
Ruby::AstNode getBodyStmtChild(TBodyStmt b, int i) {
exists(Ruby::Method g, Ruby::AstNode body | b = TMethod(g) and body = g.getBody() |
result = body.(Ruby::BodyStatement).getChild(i)
or
i = 0 and result = body and not body instanceof Ruby::BodyStatement
)
result = any(Ruby::BlockBody g | b = TBraceBlockBody(g)).getChild(i)
or
exists(Ruby::SingletonMethod g, Ruby::AstNode body |
b = TSingletonMethod(g) and body = g.getBody()
|
result = body.(Ruby::BodyStatement).getChild(i)
or
i = 0 and result = body and not body instanceof Ruby::BodyStatement
)
or
exists(Ruby::Lambda g | b = TLambda(g) |
result = g.getBody().(Ruby::DoBlock).getBody().getChild(i) or
result = g.getBody().(Ruby::Block).getBody().getChild(i)
)
or
result = any(Ruby::DoBlock g | b = TDoBlock(g)).getBody().getChild(i)
result = any(Ruby::BodyStatement g | b = TBodyStatement(g)).getChild(i)
or
result = any(Ruby::Program g | b = TToplevel(g)).getChild(i) and
not result instanceof Ruby::BeginBlock

View File

@@ -18,7 +18,7 @@ class BraceBlockReal extends BraceBlock, TBraceBlockReal {
toGenerated(result) = g.getParameters().getChild(n)
}
final override Stmt getStmt(int i) { toGenerated(result) = g.getBody().getChild(i) }
final override BodyStmt getBody() { toGenerated(result) = g.getBody() }
}
/**
@@ -28,8 +28,5 @@ class BraceBlockReal extends BraceBlock, TBraceBlockReal {
class BraceBlockSynth extends BraceBlock, TBraceBlockSynth {
final override Parameter getParameter(int n) { synthChild(this, n, result) }
final override Stmt getStmt(int i) {
i >= 0 and
synthChild(this, i + this.getNumberOfParameters(), result)
}
final override BodyStmt getBody() { synthChild(this, _, result) }
}

View File

@@ -19,6 +19,7 @@ newtype TSynthKind =
BitwiseAndExprKind() or
BitwiseOrExprKind() or
BitwiseXorExprKind() or
BodyStmtKind() or
BooleanLiteralKind(boolean value) { value = true or value = false } or
BraceBlockKind() or
CaseMatchKind() or
@@ -73,6 +74,8 @@ class SynthKind extends TSynthKind {
or
this = BitwiseXorExprKind() and result = "BitwiseXorExprKind"
or
this = BodyStmtKind() and result = "BodyStmtKind"
or
this = BooleanLiteralKind(_) and result = "BooleanLiteralKind"
or
this = BraceBlockKind() and result = "BraceBlockKind"
@@ -1475,17 +1478,24 @@ private module ForLoopDesugar {
i = 0 and
child = SynthChild(SimpleParameterKind())
or
exists(SimpleParameter param | param = TSimpleParameterSynth(block, 0) |
// block body
parent = block and
i = 1 and
child = SynthChild(BodyStmtKind())
or
exists(SimpleParameter param, BodyStmt body |
param = TSimpleParameterSynth(block, 0) and body = TBodyStmtSynth(block, 1)
|
parent = param and
i = 0 and
child = SynthChild(LocalVariableAccessSynthKind(TLocalVariableSynth(param, 0)))
or
// assignment to pattern from for loop to synth parameter
parent = block and
i = 1 and
parent = body and
i = 0 and
child = SynthChild(AssignExprKind())
or
parent = TAssignExprSynth(block, 1) and
parent = TAssignExprSynth(body, 0) and
(
i = 0 and
child = childRef(for.getPattern())
@@ -1493,11 +1503,11 @@ private module ForLoopDesugar {
i = 1 and
child = SynthChild(LocalVariableAccessSynthKind(TLocalVariableSynth(param, 0)))
)
or
// rest of block body
parent = body and
child = childRef(for.getBody().(Do).getStmt(i - 1))
)
or
// rest of block body
parent = block and
child = childRef(for.getBody().(Do).getStmt(i - 2))
)
)
)
@@ -1951,3 +1961,31 @@ private module ImplicitSuperArgsSynthesis {
}
}
}
private module CallableBodySynthesis {
private predicate bodySynthesis(AstNode parent, int i, Child child) {
exists(TMethodBase m, Ruby::AstNode body |
body = any(Ruby::Method g | m = TMethod(g)).getBody()
or
body = any(Ruby::SingletonMethod g | m = TSingletonMethod(g)).getBody()
|
parent = m and
not body instanceof Ruby::BodyStatement and
i = 0 and
child = SynthChild(BodyStmtKind())
or
exists(Stmt bodyStmt |
parent = TBodyStmtSynth(m, 0) and
i = 0 and
bodyStmt = fromGenerated(body) and
child = childRef(bodyStmt)
)
)
}
private class CallableBodySynthesis extends Synthesis {
final override predicate child(AstNode parent, int i, Child child) {
bodySynthesis(parent, i, child)
}
}
}

View File

@@ -100,24 +100,26 @@ private class EndBlockScope extends CfgScopeImpl, EndBlock {
}
}
private class BodyStmtCallableScope extends CfgScopeImpl, AstInternal::TBodyStmt, Callable {
final override predicate entry(AstNode first) { this.(Trees::BodyStmtTree).firstInner(first) }
final override predicate exit(AstNode last, Completion c) {
this.(Trees::BodyStmtTree).lastInner(last, c)
}
}
private class BraceBlockScope extends CfgScopeImpl, BraceBlock {
private class CallableScope extends CfgScopeImpl, Callable {
final override predicate entry(AstNode first) {
first(this.(Trees::BraceBlockTree).getBodyChild(0, _), first)
first(this.(Trees::CallableTree).getBodyChild(0), first)
}
final override predicate exit(AstNode last, Completion c) {
last(this.(Trees::BraceBlockTree).getLastBodyChild(), last, c)
this.getBody().(Trees::BodyStmtTree).last(last, c)
or
last(this.(Trees::BraceBlockTree).getBodyChild(_, _), last, c) and
not c instanceof NormalCompletion
exists(int i |
not exists(this.getBody()) and
last(this.(Trees::CallableTree).getBodyChild(i), last, c) and
not exists(this.(Trees::CallableTree).getBodyChild(i + 1))
)
or
exists(AstNode child |
child = this.(Trees::CallableTree).getBodyChild(_) and
not child = this.getBody() and
last(child, last, c) and
not c instanceof NormalCompletion
)
}
}
@@ -159,10 +161,6 @@ module Trees {
}
private class BeginTree extends BodyStmtTree instanceof BeginExpr {
final override predicate first(AstNode first) { this.firstInner(first) }
final override predicate last(AstNode last, Completion c) { this.lastInner(last, c) }
final override predicate propagatesAbnormal(AstNode child) { none() }
}
@@ -196,28 +194,21 @@ module Trees {
private class BlockParameterTree extends NonDefaultValueParameterTree instanceof BlockParameter {
}
abstract class BodyStmtTree extends StmtSequenceTree instanceof BodyStmt {
class BodyStmtTree extends StmtSequenceTree instanceof BodyStmt {
/** Gets a rescue clause in this block. */
final RescueClause getARescue() { result = super.getRescue(_) }
/** Gets the `ensure` clause in this block, if any. */
final StmtSequence getEnsure() { result = super.getEnsure() }
override predicate first(AstNode first) { first = this }
predicate firstInner(AstNode first) {
override predicate first(AstNode first) {
first(this.getBodyChild(0, _), first)
or
not exists(this.getBodyChild(_, _)) and
(
first(super.getRescue(_), first)
or
not exists(super.getRescue(_)) and
first(super.getEnsure(), first)
)
first(super.getEnsure(), first)
}
predicate lastInner(AstNode last, Completion c) {
override predicate last(AstNode last, Completion c) {
exists(boolean ensurable | last = this.getAnEnsurePredecessor(c, ensurable) |
not super.hasEnsure()
or
@@ -387,27 +378,28 @@ module Trees {
private class BooleanLiteralTree extends LeafTree instanceof BooleanLiteral { }
class BraceBlockTree extends StmtSequenceTree instanceof BraceBlock {
final override predicate propagatesAbnormal(AstNode child) { none() }
final override AstNode getBodyChild(int i, boolean rescuable) {
result = super.getParameter(i) and rescuable = false
class BraceBlockTree extends CallableTree instanceof BraceBlock {
final override AstNode getBodyChild(int i) {
result = super.getParameter(i)
or
result = super.getLocalVariable(i - super.getNumberOfParameters()) and rescuable = false
result = super.getLocalVariable(i - super.getNumberOfParameters())
or
result =
StmtSequenceTree.super
.getBodyChild(i - super.getNumberOfParameters() - count(super.getALocalVariable()),
rescuable)
result = super.getBody() and
i = super.getNumberOfParameters() + count(super.getALocalVariable())
}
}
class CallableTree extends PostOrderTree instanceof Callable {
final override predicate propagatesAbnormal(AstNode child) { none() }
override predicate first(AstNode first) { first = this }
abstract AstNode getBodyChild(int i);
override predicate succ(AstNode pred, AstNode succ, Completion c) {
// Normal left-to-right evaluation in the body
exists(int i |
last(this.getBodyChild(i, _), pred, c) and
first(this.getBodyChild(i + 1, _), succ) and
last(this.getBodyChild(i), pred, c) and
first(this.getBodyChild(i + 1), succ) and
c instanceof NormalCompletion
)
}
@@ -1016,20 +1008,16 @@ module Trees {
final override predicate succ(AstNode pred, AstNode succ, Completion c) { none() }
}
private class DoBlockTree extends BodyStmtTree instanceof DoBlock {
private class DoBlockTree extends CallableTree instanceof DoBlock {
/** Gets the `i`th child in the body of this block. */
final override AstNode getBodyChild(int i, boolean rescuable) {
result = super.getParameter(i) and rescuable = false
final override AstNode getBodyChild(int i) {
result = super.getParameter(i)
or
result = super.getLocalVariable(i - super.getNumberOfParameters()) and rescuable = false
result = super.getLocalVariable(i - super.getNumberOfParameters())
or
result =
BodyStmtTree.super
.getBodyChild(i - super.getNumberOfParameters() - count(super.getALocalVariable()),
rescuable)
result = super.getBody() and
i = super.getNumberOfParameters() + count(super.getALocalVariable())
}
override predicate propagatesAbnormal(AstNode child) { none() }
}
private class EmptyStatementTree extends LeafTree instanceof EmptyStmt { }
@@ -1073,14 +1061,12 @@ module Trees {
final override AstNode getAccessNode() { result = super.getDefiningAccess() }
}
private class LambdaTree extends BodyStmtTree instanceof Lambda {
final override predicate propagatesAbnormal(AstNode child) { none() }
private class LambdaTree extends CallableTree instanceof Lambda {
/** Gets the `i`th child in the body of this block. */
final override AstNode getBodyChild(int i, boolean rescuable) {
result = super.getParameter(i) and rescuable = false
final override AstNode getBodyChild(int i) {
result = super.getParameter(i)
or
result = BodyStmtTree.super.getBodyChild(i - super.getNumberOfParameters(), rescuable)
result = super.getBody() and i = super.getNumberOfParameters()
}
}
@@ -1151,14 +1137,12 @@ module Trees {
private class MethodNameTree extends LeafTree instanceof MethodName, AstInternal::TTokenMethodName
{ }
private class MethodTree extends BodyStmtTree instanceof Method {
final override predicate propagatesAbnormal(AstNode child) { none() }
private class MethodTree extends CallableTree instanceof Method {
/** Gets the `i`th child in the body of this block. */
final override AstNode getBodyChild(int i, boolean rescuable) {
result = super.getParameter(i) and rescuable = false
final override AstNode getBodyChild(int i) {
result = super.getParameter(i)
or
result = BodyStmtTree.super.getBodyChild(i - super.getNumberOfParameters(), rescuable)
result = super.getBody() and i = super.getNumberOfParameters()
}
}
@@ -1183,12 +1167,12 @@ module Trees {
BodyStmtTree.super.succ(pred, succ, c)
or
pred = this and
this.firstInner(succ) and
super.first(succ) and
c instanceof SimpleCompletion
}
final override predicate last(AstNode last, Completion c) {
this.lastInner(last, c)
super.last(last, c)
or
not exists(this.getAChild(_)) and
last = this and
@@ -1328,7 +1312,7 @@ module Trees {
private class SingletonClassTree extends BodyStmtTree instanceof SingletonClass {
final override predicate first(AstNode first) {
this.firstInner(first)
super.first(first)
or
not exists(this.getAChild(_)) and
first = this
@@ -1338,7 +1322,12 @@ module Trees {
BodyStmtTree.super.succ(pred, succ, c)
or
succ = this and
this.lastInner(pred, c)
super.last(pred, c)
}
final override predicate last(AstNode last, Completion c) {
last = this and
c.isValidFor(this)
}
/** Gets the `i`th child in the body of this block. */
@@ -1351,20 +1340,18 @@ module Trees {
}
}
private class SingletonMethodTree extends BodyStmtTree instanceof SingletonMethod {
final override predicate propagatesAbnormal(AstNode child) { none() }
private class SingletonMethodTree extends CallableTree instanceof SingletonMethod {
/** Gets the `i`th child in the body of this block. */
final override AstNode getBodyChild(int i, boolean rescuable) {
result = super.getParameter(i) and rescuable = false
final override AstNode getBodyChild(int i) {
result = super.getParameter(i)
or
result = BodyStmtTree.super.getBodyChild(i - super.getNumberOfParameters(), rescuable)
result = super.getBody() and i = super.getNumberOfParameters()
}
override predicate first(AstNode first) { first(super.getObject(), first) }
override predicate succ(AstNode pred, AstNode succ, Completion c) {
BodyStmtTree.super.succ(pred, succ, c)
CallableTree.super.succ(pred, succ, c)
or
last(super.getObject(), pred, c) and
succ = this and
@@ -1443,10 +1430,6 @@ module Trees {
or
result = BodyStmtTree.super.getBodyChild(i - count(super.getABeginBlock()), rescuable)
}
final override predicate first(AstNode first) { super.firstInner(first) }
final override predicate last(AstNode last, Completion c) { super.lastInner(last, c) }
}
private class UndefStmtTree extends StandardPreOrderTree instanceof UndefStmt {

View File

@@ -246,7 +246,7 @@ module EnsureSplitting {
private predicate exit0(AstNode pred, Trees::BodyStmtTree block, int nestLevel, Completion c) {
this.appliesToPredecessor(pred) and
nestLevel = block.getNestLevel() and
block.lastInner(pred, c)
block.last(pred, c)
}
/**

View File

@@ -1662,7 +1662,7 @@ private module ReturnNodes {
* last thing that is evaluated in the body of the callable.
*/
class ExprReturnNode extends SourceReturnNode, ExprNode {
ExprReturnNode() { exists(Callable c | implicitReturn(c, this) = c.getAStmt()) }
ExprReturnNode() { exists(Callable c | implicitReturn(c, this) = c.getBody().getAStmt()) }
override ReturnKind getKindSource() {
exists(CfgScope scope | scope = this.(NodeImpl).getCfgScope() |

View File

@@ -1392,7 +1392,7 @@ class StmtSequenceNode extends ExprNode {
/**
* A data flow node corresponding to a method, block, or lambda expression.
*/
class CallableNode extends StmtSequenceNode {
class CallableNode extends ExprNode {
private Callable callable;
CallableNode() { this.asExpr().getExpr() = callable }

View File

@@ -83,11 +83,7 @@ module Rbi {
/**
* Gets the type aliased by this call.
*/
RbiType getAliasedType() {
exists(ExprNodes::MethodCallCfgNode n | n.getExpr() = this |
result = n.getBlock().(ExprNodes::StmtSequenceCfgNode).getLastStmt().getExpr()
)
}
RbiType getAliasedType() { result = this.getBlock().getBody().getLastStmt() }
}
/**
@@ -304,7 +300,7 @@ module Rbi {
private MethodSignatureCall sigCall;
MethodSignatureDefiningCall() {
exists(MethodCall c | c = sigCall.getBlock().getAChild() |
exists(MethodCall c | c = sigCall.getBlock().getBody().getAChild() |
// The typical pattern for the contents of a `sig` block is something
// like `params(<param defs>).returns(<return type>)` - we want to
// pick up both of these calls.

View File

@@ -18,7 +18,7 @@ module Slim {
override DataFlow::Node getTemplate() {
result.asExpr().getExpr() =
this.getBlock().(DataFlow::BlockNode).asCallableAstNode().getAStmt()
this.getBlock().(DataFlow::BlockNode).asCallableAstNode().getBody().getAStmt()
}
}

View File

@@ -38,6 +38,7 @@ private class NokogiriXmlParserCall extends XmlParserCall::Range, DataFlow::Call
.getExpr()
.(MethodCall)
.getBlock()
.getBody()
.getAStmt()
.getAChild*()
.(MethodCall)

View File

@@ -98,7 +98,7 @@ module Routing {
Block getBlock() { result = block }
override Stmt getAStmt() { result = block.getAStmt() }
override Stmt getAStmt() { result = block.getBody().getAStmt() }
override RouteBlock getParent() { none() }
@@ -128,7 +128,7 @@ module Routing {
override string getAPrimaryQlClass() { result = "ConstraintsRouteBlock" }
override Stmt getAStmt() { result = block.getAStmt() }
override Stmt getAStmt() { result = block.getBody().getAStmt() }
override string getPathComponent() { result = "" }
@@ -156,7 +156,7 @@ module Routing {
override string getAPrimaryQlClass() { result = "ScopeRouteBlock" }
override Stmt getAStmt() { result = block.getAStmt() }
override Stmt getAStmt() { result = block.getBody().getAStmt() }
override string toString() { result = methodCall.toString() }
@@ -216,7 +216,7 @@ module Routing {
override string getAPrimaryQlClass() { result = "ResourcesRouteBlock" }
override Stmt getAStmt() { result = block.getAStmt() }
override Stmt getAStmt() { result = block.getBody().getAStmt() }
/**
* Gets the `resources` call that gives rise to this route block.
@@ -282,7 +282,7 @@ module Routing {
NamespaceRouteBlock() { this = TNamespaceRouteBlock(parent, methodCall, block) }
override Stmt getAStmt() { result = block.getAStmt() }
override Stmt getAStmt() { result = block.getBody().getAStmt() }
override string getPathComponent() { result = this.getNamespace() }

View File

@@ -70,7 +70,7 @@ private predicate memoReturnedFromMethod(Method m, MemoStmt s) {
or
// If we don't have flow (e.g. due to the dataflow library not supporting instance variable flow yet),
// fall back to a syntactic heuristic: does the last statement in the method mention the memoization variable?
m.getLastStmt().getAChild*().(InstanceVariableReadAccess).getVariable() =
m.getBody().getLastStmt().getAChild*().(InstanceVariableReadAccess).getVariable() =
s.getVariableAccess().getVariable()
}

View File

@@ -33,7 +33,7 @@ private class SourceCall extends RelevantGemCall {
private class GitSourceCall extends RelevantGemCall {
GitSourceCall() { this.getMethodName() = "git_source" }
override Expr getAUrlPart() { result = this.getBlock().getLastStmt() }
override Expr getAUrlPart() { result = this.getBlock().getBody().getLastStmt() }
}
/**

File diff suppressed because it is too large Load Diff

View File

@@ -38,11 +38,12 @@ calls/calls.rb:
# 223| getBlock: [BraceBlock] { ... }
# 223| getParameter: [SimpleParameter] __synth__0__1
# 223| getDefiningAccess: [LocalVariableAccess] __synth__0__1
# 223| getStmt: [AssignExpr] ... = ...
# 223| getAnOperand/getLeftOperand: [LocalVariableAccess] x
# 223| getAnOperand/getRightOperand: [LocalVariableAccess] __synth__0__1
# 224| getStmt: [MethodCall] call to baz
# 224| getReceiver: [SelfVariableAccess] self
# 223| getBody: [StmtSequence] ...
# 223| getStmt: [AssignExpr] ... = ...
# 223| getAnOperand/getLeftOperand: [LocalVariableAccess] x
# 223| getAnOperand/getRightOperand: [LocalVariableAccess] __synth__0__1
# 224| getStmt: [MethodCall] call to baz
# 224| getReceiver: [SelfVariableAccess] self
# 226| [ForExpr] for ... in ...
# 226| getDesugared: [StmtSequence] ...
# 226| getStmt: [IfExpr] if ...
@@ -58,11 +59,12 @@ calls/calls.rb:
# 226| getBlock: [BraceBlock] { ... }
# 226| getParameter: [SimpleParameter] __synth__0__1
# 226| getDefiningAccess: [LocalVariableAccess] __synth__0__1
# 226| getStmt: [AssignExpr] ... = ...
# 226| getAnOperand/getLeftOperand: [LocalVariableAccess] x
# 226| getAnOperand/getRightOperand: [LocalVariableAccess] __synth__0__1
# 227| getStmt: [MethodCall] call to baz
# 227| getReceiver: [ConstantReadAccess] X
# 226| getBody: [StmtSequence] ...
# 226| getStmt: [AssignExpr] ... = ...
# 226| getAnOperand/getLeftOperand: [LocalVariableAccess] x
# 226| getAnOperand/getRightOperand: [LocalVariableAccess] __synth__0__1
# 227| getStmt: [MethodCall] call to baz
# 227| getReceiver: [ConstantReadAccess] X
# 246| [HashLiteral] {...}
# 246| getDesugared: [MethodCall] call to []
# 246| getReceiver: [ConstantReadAccess] Hash
@@ -302,33 +304,34 @@ calls/calls.rb:
# 339| getBlock: [BraceBlock] { ... }
# 339| getParameter: [SimpleParameter] __synth__0__1
# 339| getDefiningAccess: [LocalVariableAccess] __synth__0__1
# 339| getStmt: [AssignExpr] ... = ...
# 339| getDesugared: [StmtSequence] ...
# 339| getStmt: [AssignExpr] ... = ...
# 339| getAnOperand/getLeftOperand: [LocalVariableAccess] __synth__3__1
# 339| getAnOperand/getRightOperand: [SplatExpr] * ...
# 339| getAnOperand/getOperand/getReceiver: [LocalVariableAccess] __synth__0__1
# 339| getStmt: [AssignExpr] ... = ...
# 339| getAnOperand/getLeftOperand: [LocalVariableAccess] x
# 339| getAnOperand/getRightOperand: [MethodCall] call to []
# 339| getReceiver: [LocalVariableAccess] __synth__3__1
# 339| getArgument: [IntegerLiteral] 0
# 339| getStmt: [AssignExpr] ... = ...
# 339| getAnOperand/getLeftOperand: [LocalVariableAccess] y
# 339| getAnOperand/getRightOperand: [MethodCall] call to []
# 339| getReceiver: [LocalVariableAccess] __synth__3__1
# 339| getArgument: [IntegerLiteral] 1
# 339| getStmt: [AssignExpr] ... = ...
# 339| getAnOperand/getLeftOperand: [LocalVariableAccess] z
# 339| getAnOperand/getRightOperand: [MethodCall] call to []
# 339| getReceiver: [LocalVariableAccess] __synth__3__1
# 339| getArgument: [IntegerLiteral] 2
# 339| getAnOperand/getLeftOperand: [DestructuredLhsExpr] (..., ...)
# 340| getStmt: [MethodCall] call to foo
# 340| getReceiver: [SelfVariableAccess] self
# 340| getArgument: [LocalVariableAccess] x
# 340| getArgument: [LocalVariableAccess] y
# 340| getArgument: [LocalVariableAccess] z
# 339| getBody: [StmtSequence] ...
# 339| getStmt: [AssignExpr] ... = ...
# 339| getDesugared: [StmtSequence] ...
# 339| getStmt: [AssignExpr] ... = ...
# 339| getAnOperand/getLeftOperand: [LocalVariableAccess] __synth__3__1
# 339| getAnOperand/getRightOperand: [SplatExpr] * ...
# 339| getAnOperand/getOperand/getReceiver: [LocalVariableAccess] __synth__0__1
# 339| getStmt: [AssignExpr] ... = ...
# 339| getAnOperand/getLeftOperand: [LocalVariableAccess] x
# 339| getAnOperand/getRightOperand: [MethodCall] call to []
# 339| getReceiver: [LocalVariableAccess] __synth__3__1
# 339| getArgument: [IntegerLiteral] 0
# 339| getStmt: [AssignExpr] ... = ...
# 339| getAnOperand/getLeftOperand: [LocalVariableAccess] y
# 339| getAnOperand/getRightOperand: [MethodCall] call to []
# 339| getReceiver: [LocalVariableAccess] __synth__3__1
# 339| getArgument: [IntegerLiteral] 1
# 339| getStmt: [AssignExpr] ... = ...
# 339| getAnOperand/getLeftOperand: [LocalVariableAccess] z
# 339| getAnOperand/getRightOperand: [MethodCall] call to []
# 339| getReceiver: [LocalVariableAccess] __synth__3__1
# 339| getArgument: [IntegerLiteral] 2
# 339| getAnOperand/getLeftOperand: [DestructuredLhsExpr] (..., ...)
# 340| getStmt: [MethodCall] call to foo
# 340| getReceiver: [SelfVariableAccess] self
# 340| getArgument: [LocalVariableAccess] x
# 340| getArgument: [LocalVariableAccess] y
# 340| getArgument: [LocalVariableAccess] z
# 361| [MethodCall] call to empty?
# 361| getDesugared: [StmtSequence] ...
# 361| getStmt: [AssignExpr] ... = ...
@@ -360,7 +363,8 @@ calls/calls.rb:
# 363| getBlock: [BraceBlock] { ... }
# 363| getParameter: [SimpleParameter] x
# 363| getDefiningAccess: [LocalVariableAccess] x
# 363| getStmt: [LocalVariableAccess] x
# 363| getBody: [StmtSequence] ...
# 363| getStmt: [LocalVariableAccess] x
control/cases.rb:
# 90| [ArrayLiteral] %w(...)
# 90| getDesugared: [MethodCall] call to []
@@ -647,18 +651,19 @@ control/loops.rb:
# 9| getBlock: [BraceBlock] { ... }
# 9| getParameter: [SimpleParameter] __synth__0__1
# 9| getDefiningAccess: [LocalVariableAccess] __synth__0__1
# 9| getStmt: [AssignExpr] ... = ...
# 9| getAnOperand/getLeftOperand: [LocalVariableAccess] n
# 9| getAnOperand/getRightOperand: [LocalVariableAccess] __synth__0__1
# 10| getStmt: [AssignAddExpr] ... += ...
# 10| getDesugared: [AssignExpr] ... = ...
# 10| getAnOperand/getLeftOperand: [LocalVariableAccess] sum
# 10| getAnOperand/getRightOperand: [AddExpr] ... + ...
# 10| getAnOperand/getLeftOperand/getReceiver: [LocalVariableAccess] sum
# 10| getAnOperand/getArgument/getRightOperand: [LocalVariableAccess] n
# 11| getStmt: [AssignExpr] ... = ...
# 11| getAnOperand/getLeftOperand: [LocalVariableAccess] foo
# 11| getAnOperand/getRightOperand: [LocalVariableAccess] n
# 9| getBody: [StmtSequence] ...
# 9| getStmt: [AssignExpr] ... = ...
# 9| getAnOperand/getLeftOperand: [LocalVariableAccess] n
# 9| getAnOperand/getRightOperand: [LocalVariableAccess] __synth__0__1
# 10| getStmt: [AssignAddExpr] ... += ...
# 10| getDesugared: [AssignExpr] ... = ...
# 10| getAnOperand/getLeftOperand: [LocalVariableAccess] sum
# 10| getAnOperand/getRightOperand: [AddExpr] ... + ...
# 10| getAnOperand/getLeftOperand/getReceiver: [LocalVariableAccess] sum
# 10| getAnOperand/getArgument/getRightOperand: [LocalVariableAccess] n
# 11| getStmt: [AssignExpr] ... = ...
# 11| getAnOperand/getLeftOperand: [LocalVariableAccess] foo
# 11| getAnOperand/getRightOperand: [LocalVariableAccess] n
# 16| [ForExpr] for ... in ...
# 16| getDesugared: [StmtSequence] ...
# 16| getStmt: [IfExpr] if ...
@@ -675,21 +680,22 @@ control/loops.rb:
# 16| getBlock: [BraceBlock] { ... }
# 16| getParameter: [SimpleParameter] __synth__0__1
# 16| getDefiningAccess: [LocalVariableAccess] __synth__0__1
# 16| getStmt: [AssignExpr] ... = ...
# 16| getAnOperand/getLeftOperand: [LocalVariableAccess] n
# 16| getAnOperand/getRightOperand: [LocalVariableAccess] __synth__0__1
# 17| getStmt: [AssignAddExpr] ... += ...
# 17| getDesugared: [AssignExpr] ... = ...
# 17| getAnOperand/getLeftOperand: [LocalVariableAccess] sum
# 17| getAnOperand/getRightOperand: [AddExpr] ... + ...
# 17| getAnOperand/getLeftOperand/getReceiver: [LocalVariableAccess] sum
# 17| getAnOperand/getArgument/getRightOperand: [LocalVariableAccess] n
# 18| getStmt: [AssignSubExpr] ... -= ...
# 18| getDesugared: [AssignExpr] ... = ...
# 18| getAnOperand/getLeftOperand: [LocalVariableAccess] foo
# 18| getAnOperand/getRightOperand: [SubExpr] ... - ...
# 18| getAnOperand/getLeftOperand/getReceiver: [LocalVariableAccess] foo
# 18| getAnOperand/getArgument/getRightOperand: [LocalVariableAccess] n
# 16| getBody: [StmtSequence] ...
# 16| getStmt: [AssignExpr] ... = ...
# 16| getAnOperand/getLeftOperand: [LocalVariableAccess] n
# 16| getAnOperand/getRightOperand: [LocalVariableAccess] __synth__0__1
# 17| getStmt: [AssignAddExpr] ... += ...
# 17| getDesugared: [AssignExpr] ... = ...
# 17| getAnOperand/getLeftOperand: [LocalVariableAccess] sum
# 17| getAnOperand/getRightOperand: [AddExpr] ... + ...
# 17| getAnOperand/getLeftOperand/getReceiver: [LocalVariableAccess] sum
# 17| getAnOperand/getArgument/getRightOperand: [LocalVariableAccess] n
# 18| getStmt: [AssignSubExpr] ... -= ...
# 18| getDesugared: [AssignExpr] ... = ...
# 18| getAnOperand/getLeftOperand: [LocalVariableAccess] foo
# 18| getAnOperand/getRightOperand: [SubExpr] ... - ...
# 18| getAnOperand/getLeftOperand/getReceiver: [LocalVariableAccess] foo
# 18| getAnOperand/getArgument/getRightOperand: [LocalVariableAccess] n
# 22| [ForExpr] for ... in ...
# 22| getDesugared: [StmtSequence] ...
# 22| getStmt: [IfExpr] if ...
@@ -721,35 +727,36 @@ control/loops.rb:
# 22| getBlock: [BraceBlock] { ... }
# 22| getParameter: [SimpleParameter] __synth__0__1
# 22| getDefiningAccess: [LocalVariableAccess] __synth__0__1
# 22| getStmt: [AssignExpr] ... = ...
# 22| getDesugared: [StmtSequence] ...
# 22| getStmt: [AssignExpr] ... = ...
# 22| getAnOperand/getLeftOperand: [LocalVariableAccess] __synth__2__1
# 22| getAnOperand/getRightOperand: [SplatExpr] * ...
# 22| getAnOperand/getOperand/getReceiver: [LocalVariableAccess] __synth__0__1
# 22| getStmt: [AssignExpr] ... = ...
# 22| getAnOperand/getLeftOperand: [LocalVariableAccess] key
# 22| getAnOperand/getRightOperand: [MethodCall] call to []
# 22| getReceiver: [LocalVariableAccess] __synth__2__1
# 22| getArgument: [IntegerLiteral] 0
# 22| getStmt: [AssignExpr] ... = ...
# 22| getAnOperand/getLeftOperand: [LocalVariableAccess] value
# 22| getAnOperand/getRightOperand: [MethodCall] call to []
# 22| getReceiver: [LocalVariableAccess] __synth__2__1
# 22| getArgument: [IntegerLiteral] 1
# 22| getAnOperand/getLeftOperand: [DestructuredLhsExpr] (..., ...)
# 23| getStmt: [AssignAddExpr] ... += ...
# 23| getDesugared: [AssignExpr] ... = ...
# 23| getAnOperand/getLeftOperand: [LocalVariableAccess] sum
# 23| getAnOperand/getRightOperand: [AddExpr] ... + ...
# 23| getAnOperand/getLeftOperand/getReceiver: [LocalVariableAccess] sum
# 23| getAnOperand/getArgument/getRightOperand: [LocalVariableAccess] value
# 24| getStmt: [AssignMulExpr] ... *= ...
# 24| getDesugared: [AssignExpr] ... = ...
# 24| getAnOperand/getLeftOperand: [LocalVariableAccess] foo
# 24| getAnOperand/getRightOperand: [MulExpr] ... * ...
# 24| getAnOperand/getLeftOperand/getReceiver: [LocalVariableAccess] foo
# 24| getAnOperand/getArgument/getRightOperand: [LocalVariableAccess] value
# 22| getBody: [StmtSequence] ...
# 22| getStmt: [AssignExpr] ... = ...
# 22| getDesugared: [StmtSequence] ...
# 22| getStmt: [AssignExpr] ... = ...
# 22| getAnOperand/getLeftOperand: [LocalVariableAccess] __synth__2__1
# 22| getAnOperand/getRightOperand: [SplatExpr] * ...
# 22| getAnOperand/getOperand/getReceiver: [LocalVariableAccess] __synth__0__1
# 22| getStmt: [AssignExpr] ... = ...
# 22| getAnOperand/getLeftOperand: [LocalVariableAccess] key
# 22| getAnOperand/getRightOperand: [MethodCall] call to []
# 22| getReceiver: [LocalVariableAccess] __synth__2__1
# 22| getArgument: [IntegerLiteral] 0
# 22| getStmt: [AssignExpr] ... = ...
# 22| getAnOperand/getLeftOperand: [LocalVariableAccess] value
# 22| getAnOperand/getRightOperand: [MethodCall] call to []
# 22| getReceiver: [LocalVariableAccess] __synth__2__1
# 22| getArgument: [IntegerLiteral] 1
# 22| getAnOperand/getLeftOperand: [DestructuredLhsExpr] (..., ...)
# 23| getStmt: [AssignAddExpr] ... += ...
# 23| getDesugared: [AssignExpr] ... = ...
# 23| getAnOperand/getLeftOperand: [LocalVariableAccess] sum
# 23| getAnOperand/getRightOperand: [AddExpr] ... + ...
# 23| getAnOperand/getLeftOperand/getReceiver: [LocalVariableAccess] sum
# 23| getAnOperand/getArgument/getRightOperand: [LocalVariableAccess] value
# 24| getStmt: [AssignMulExpr] ... *= ...
# 24| getDesugared: [AssignExpr] ... = ...
# 24| getAnOperand/getLeftOperand: [LocalVariableAccess] foo
# 24| getAnOperand/getRightOperand: [MulExpr] ... * ...
# 24| getAnOperand/getLeftOperand/getReceiver: [LocalVariableAccess] foo
# 24| getAnOperand/getArgument/getRightOperand: [LocalVariableAccess] value
# 28| [ForExpr] for ... in ...
# 28| getDesugared: [StmtSequence] ...
# 28| getStmt: [IfExpr] if ...
@@ -781,36 +788,37 @@ control/loops.rb:
# 28| getBlock: [BraceBlock] { ... }
# 28| getParameter: [SimpleParameter] __synth__0__1
# 28| getDefiningAccess: [LocalVariableAccess] __synth__0__1
# 28| getStmt: [AssignExpr] ... = ...
# 28| getDesugared: [StmtSequence] ...
# 28| getStmt: [AssignExpr] ... = ...
# 28| getAnOperand/getLeftOperand: [LocalVariableAccess] __synth__2__1
# 28| getAnOperand/getRightOperand: [SplatExpr] * ...
# 28| getAnOperand/getOperand/getReceiver: [LocalVariableAccess] __synth__0__1
# 28| getStmt: [AssignExpr] ... = ...
# 28| getAnOperand/getLeftOperand: [LocalVariableAccess] key
# 28| getAnOperand/getRightOperand: [MethodCall] call to []
# 28| getReceiver: [LocalVariableAccess] __synth__2__1
# 28| getArgument: [IntegerLiteral] 0
# 28| getStmt: [AssignExpr] ... = ...
# 28| getAnOperand/getLeftOperand: [LocalVariableAccess] value
# 28| getAnOperand/getRightOperand: [MethodCall] call to []
# 28| getReceiver: [LocalVariableAccess] __synth__2__1
# 28| getArgument: [IntegerLiteral] 1
# 28| getAnOperand/getLeftOperand: [DestructuredLhsExpr] (..., ...)
# 29| getStmt: [AssignAddExpr] ... += ...
# 29| getDesugared: [AssignExpr] ... = ...
# 29| getAnOperand/getLeftOperand: [LocalVariableAccess] sum
# 29| getAnOperand/getRightOperand: [AddExpr] ... + ...
# 29| getAnOperand/getLeftOperand/getReceiver: [LocalVariableAccess] sum
# 29| getAnOperand/getArgument/getRightOperand: [LocalVariableAccess] value
# 30| getStmt: [AssignDivExpr] ... /= ...
# 30| getDesugared: [AssignExpr] ... = ...
# 30| getAnOperand/getLeftOperand: [LocalVariableAccess] foo
# 30| getAnOperand/getRightOperand: [DivExpr] ... / ...
# 30| getAnOperand/getLeftOperand/getReceiver: [LocalVariableAccess] foo
# 30| getAnOperand/getArgument/getRightOperand: [LocalVariableAccess] value
# 31| getStmt: [BreakStmt] break
# 28| getBody: [StmtSequence] ...
# 28| getStmt: [AssignExpr] ... = ...
# 28| getDesugared: [StmtSequence] ...
# 28| getStmt: [AssignExpr] ... = ...
# 28| getAnOperand/getLeftOperand: [LocalVariableAccess] __synth__2__1
# 28| getAnOperand/getRightOperand: [SplatExpr] * ...
# 28| getAnOperand/getOperand/getReceiver: [LocalVariableAccess] __synth__0__1
# 28| getStmt: [AssignExpr] ... = ...
# 28| getAnOperand/getLeftOperand: [LocalVariableAccess] key
# 28| getAnOperand/getRightOperand: [MethodCall] call to []
# 28| getReceiver: [LocalVariableAccess] __synth__2__1
# 28| getArgument: [IntegerLiteral] 0
# 28| getStmt: [AssignExpr] ... = ...
# 28| getAnOperand/getLeftOperand: [LocalVariableAccess] value
# 28| getAnOperand/getRightOperand: [MethodCall] call to []
# 28| getReceiver: [LocalVariableAccess] __synth__2__1
# 28| getArgument: [IntegerLiteral] 1
# 28| getAnOperand/getLeftOperand: [DestructuredLhsExpr] (..., ...)
# 29| getStmt: [AssignAddExpr] ... += ...
# 29| getDesugared: [AssignExpr] ... = ...
# 29| getAnOperand/getLeftOperand: [LocalVariableAccess] sum
# 29| getAnOperand/getRightOperand: [AddExpr] ... + ...
# 29| getAnOperand/getLeftOperand/getReceiver: [LocalVariableAccess] sum
# 29| getAnOperand/getArgument/getRightOperand: [LocalVariableAccess] value
# 30| getStmt: [AssignDivExpr] ... /= ...
# 30| getDesugared: [AssignExpr] ... = ...
# 30| getAnOperand/getLeftOperand: [LocalVariableAccess] foo
# 30| getAnOperand/getRightOperand: [DivExpr] ... / ...
# 30| getAnOperand/getLeftOperand/getReceiver: [LocalVariableAccess] foo
# 30| getAnOperand/getArgument/getRightOperand: [LocalVariableAccess] value
# 31| getStmt: [BreakStmt] break
# 36| [AssignAddExpr] ... += ...
# 36| getDesugared: [AssignExpr] ... = ...
# 36| getAnOperand/getLeftOperand: [LocalVariableAccess] x
@@ -1090,16 +1098,17 @@ erb/template.html.erb:
# 27| getBlock: [BraceBlock] { ... }
# 27| getParameter: [SimpleParameter] __synth__0__1
# 27| getDefiningAccess: [LocalVariableAccess] __synth__0__1
# 27| getStmt: [AssignExpr] ... = ...
# 27| getAnOperand/getLeftOperand: [LocalVariableAccess] x
# 27| getAnOperand/getRightOperand: [LocalVariableAccess] __synth__0__1
# 28| getStmt: [AssignAddExpr] ... += ...
# 28| getDesugared: [AssignExpr] ... = ...
# 28| getAnOperand/getLeftOperand: [LocalVariableAccess] xs
# 28| getAnOperand/getRightOperand: [AddExpr] ... + ...
# 28| getAnOperand/getLeftOperand/getReceiver: [LocalVariableAccess] xs
# 28| getAnOperand/getArgument/getRightOperand: [LocalVariableAccess] x
# 29| getStmt: [LocalVariableAccess] xs
# 27| getBody: [StmtSequence] ...
# 27| getStmt: [AssignExpr] ... = ...
# 27| getAnOperand/getLeftOperand: [LocalVariableAccess] x
# 27| getAnOperand/getRightOperand: [LocalVariableAccess] __synth__0__1
# 28| getStmt: [AssignAddExpr] ... += ...
# 28| getDesugared: [AssignExpr] ... = ...
# 28| getAnOperand/getLeftOperand: [LocalVariableAccess] xs
# 28| getAnOperand/getRightOperand: [AddExpr] ... + ...
# 28| getAnOperand/getLeftOperand/getReceiver: [LocalVariableAccess] xs
# 28| getAnOperand/getArgument/getRightOperand: [LocalVariableAccess] x
# 29| getStmt: [LocalVariableAccess] xs
gems/test.gemspec:
# 2| [AssignExpr] ... = ...
# 2| getDesugared: [StmtSequence] ...

View File

@@ -709,32 +709,40 @@ lookupMethod
| unresolved_subclass.rb:21:1:22:3 | UnresolvedNamespace::X1::X2::X3::A | puts | calls.rb:102:5:102:30 | puts |
| unresolved_subclass.rb:21:1:22:3 | UnresolvedNamespace::X1::X2::X3::A | to_s | calls.rb:172:5:173:7 | to_s |
enclosingMethod
| calls.rb:2:5:2:14 | ... | calls.rb:1:1:3:3 | foo |
| calls.rb:2:5:2:14 | call to puts | calls.rb:1:1:3:3 | foo |
| calls.rb:2:5:2:14 | self | calls.rb:1:1:3:3 | foo |
| calls.rb:2:10:2:14 | "foo" | calls.rb:1:1:3:3 | foo |
| calls.rb:2:11:2:13 | foo | calls.rb:1:1:3:3 | foo |
| calls.rb:8:5:8:15 | ... | calls.rb:7:1:9:3 | bar |
| calls.rb:8:5:8:15 | call to puts | calls.rb:7:1:9:3 | bar |
| calls.rb:8:5:8:15 | self | calls.rb:7:1:9:3 | bar |
| calls.rb:8:10:8:15 | "bar1" | calls.rb:7:1:9:3 | bar |
| calls.rb:8:11:8:14 | bar1 | calls.rb:7:1:9:3 | bar |
| calls.rb:14:5:14:15 | ... | calls.rb:13:1:15:3 | bar |
| calls.rb:14:5:14:15 | call to puts | calls.rb:13:1:15:3 | bar |
| calls.rb:14:5:14:15 | self | calls.rb:13:1:15:3 | bar |
| calls.rb:14:10:14:15 | "bar2" | calls.rb:13:1:15:3 | bar |
| calls.rb:14:11:14:14 | bar2 | calls.rb:13:1:15:3 | bar |
| calls.rb:23:9:23:19 | call to singleton_m | calls.rb:22:5:24:7 | instance_m |
| calls.rb:23:9:23:19 | self | calls.rb:22:5:24:7 | instance_m |
| calls.rb:23:9:23:35 | ... | calls.rb:22:5:24:7 | instance_m |
| calls.rb:26:9:26:18 | call to instance_m | calls.rb:25:5:27:7 | singleton_m |
| calls.rb:26:9:26:18 | self | calls.rb:25:5:27:7 | singleton_m |
| calls.rb:26:9:26:34 | ... | calls.rb:25:5:27:7 | singleton_m |
| calls.rb:40:5:40:14 | call to instance_m | calls.rb:39:1:41:3 | call_instance_m |
| calls.rb:40:5:40:14 | self | calls.rb:39:1:41:3 | call_instance_m |
| calls.rb:40:5:40:30 | ... | calls.rb:39:1:41:3 | call_instance_m |
| calls.rb:52:9:52:18 | call to instance_m | calls.rb:51:5:57:7 | baz |
| calls.rb:52:9:52:18 | self | calls.rb:51:5:57:7 | baz |
| calls.rb:52:9:56:40 | ... | calls.rb:51:5:57:7 | baz |
| calls.rb:53:9:53:12 | self | calls.rb:51:5:57:7 | baz |
| calls.rb:53:9:53:23 | call to instance_m | calls.rb:51:5:57:7 | baz |
| calls.rb:55:9:55:19 | call to singleton_m | calls.rb:51:5:57:7 | baz |
| calls.rb:55:9:55:19 | self | calls.rb:51:5:57:7 | baz |
| calls.rb:56:9:56:12 | self | calls.rb:51:5:57:7 | baz |
| calls.rb:56:9:56:24 | call to singleton_m | calls.rb:51:5:57:7 | baz |
| calls.rb:67:9:67:13 | ... | calls.rb:66:5:68:7 | baz |
| calls.rb:67:9:67:13 | super call to baz | calls.rb:66:5:68:7 | baz |
| calls.rb:76:18:76:18 | a | calls.rb:76:1:79:3 | optional_arg |
| calls.rb:76:18:76:18 | a | calls.rb:76:1:79:3 | optional_arg |
@@ -744,12 +752,15 @@ enclosingMethod
| calls.rb:76:28:76:28 | 5 | calls.rb:76:1:79:3 | optional_arg |
| calls.rb:77:5:77:5 | a | calls.rb:76:1:79:3 | optional_arg |
| calls.rb:77:5:77:16 | call to bit_length | calls.rb:76:1:79:3 | optional_arg |
| calls.rb:77:5:78:16 | ... | calls.rb:76:1:79:3 | optional_arg |
| calls.rb:78:5:78:5 | b | calls.rb:76:1:79:3 | optional_arg |
| calls.rb:78:5:78:16 | call to bit_length | calls.rb:76:1:79:3 | optional_arg |
| calls.rb:82:5:82:11 | ... | calls.rb:81:1:83:3 | call_block |
| calls.rb:82:5:82:11 | yield ... | calls.rb:81:1:83:3 | call_block |
| calls.rb:82:11:82:11 | 1 | calls.rb:81:1:83:3 | call_block |
| calls.rb:86:5:86:7 | var | calls.rb:85:1:89:3 | foo |
| calls.rb:86:5:86:18 | ... = ... | calls.rb:85:1:89:3 | foo |
| calls.rb:86:5:88:29 | ... | calls.rb:85:1:89:3 | foo |
| calls.rb:86:11:86:14 | Hash | calls.rb:85:1:89:3 | foo |
| calls.rb:86:11:86:18 | call to new | calls.rb:85:1:89:3 | foo |
| calls.rb:87:5:87:7 | var | calls.rb:85:1:89:3 | foo |
@@ -761,25 +772,30 @@ enclosingMethod
| calls.rb:88:19:88:19 | x | calls.rb:85:1:89:3 | foo |
| calls.rb:88:19:88:19 | x | calls.rb:85:1:89:3 | foo |
| calls.rb:88:22:88:24 | var | calls.rb:85:1:89:3 | foo |
| calls.rb:88:22:88:27 | ... | calls.rb:85:1:89:3 | foo |
| calls.rb:88:22:88:27 | ...[...] | calls.rb:85:1:89:3 | foo |
| calls.rb:88:26:88:26 | x | calls.rb:85:1:89:3 | foo |
| calls.rb:102:14:102:14 | x | calls.rb:102:5:102:30 | puts |
| calls.rb:102:14:102:14 | x | calls.rb:102:5:102:30 | puts |
| calls.rb:102:17:102:26 | ... | calls.rb:102:5:102:30 | puts |
| calls.rb:102:17:102:26 | call to old_puts | calls.rb:102:5:102:30 | puts |
| calls.rb:102:17:102:26 | self | calls.rb:102:5:102:30 | puts |
| calls.rb:102:26:102:26 | x | calls.rb:102:5:102:30 | puts |
| calls.rb:108:17:108:17 | x | calls.rb:108:5:110:7 | include |
| calls.rb:108:17:108:17 | x | calls.rb:108:5:110:7 | include |
| calls.rb:109:9:109:21 | ... | calls.rb:108:5:110:7 | include |
| calls.rb:109:9:109:21 | call to old_include | calls.rb:108:5:110:7 | include |
| calls.rb:109:9:109:21 | self | calls.rb:108:5:110:7 | include |
| calls.rb:109:21:109:21 | x | calls.rb:108:5:110:7 | include |
| calls.rb:122:12:122:12 | x | calls.rb:122:5:122:31 | [] |
| calls.rb:122:12:122:12 | x | calls.rb:122:5:122:31 | [] |
| calls.rb:122:15:122:27 | ... | calls.rb:122:5:122:31 | [] |
| calls.rb:122:15:122:27 | call to old_lookup | calls.rb:122:5:122:31 | [] |
| calls.rb:122:15:122:27 | self | calls.rb:122:5:122:31 | [] |
| calls.rb:122:26:122:26 | x | calls.rb:122:5:122:31 | [] |
| calls.rb:127:10:127:10 | x | calls.rb:127:3:127:29 | [] |
| calls.rb:127:10:127:10 | x | calls.rb:127:3:127:29 | [] |
| calls.rb:127:13:127:25 | ... | calls.rb:127:3:127:29 | [] |
| calls.rb:127:13:127:25 | call to old_lookup | calls.rb:127:3:127:29 | [] |
| calls.rb:127:13:127:25 | self | calls.rb:127:3:127:29 | [] |
| calls.rb:127:24:127:24 | x | calls.rb:127:3:127:29 | [] |
@@ -787,6 +803,7 @@ enclosingMethod
| calls.rb:131:16:131:19 | body | calls.rb:131:3:137:5 | foreach |
| calls.rb:132:5:132:5 | x | calls.rb:131:3:137:5 | foreach |
| calls.rb:132:5:132:9 | ... = ... | calls.rb:131:3:137:5 | foreach |
| calls.rb:132:5:136:7 | ... | calls.rb:131:3:137:5 | foreach |
| calls.rb:132:9:132:9 | 0 | calls.rb:131:3:137:5 | foreach |
| calls.rb:133:5:136:7 | while ... | calls.rb:131:3:137:5 | foreach |
| calls.rb:133:11:133:11 | x | calls.rb:131:3:137:5 | foreach |
@@ -805,65 +822,80 @@ enclosingMethod
| calls.rb:135:9:135:14 | ... = ... | calls.rb:131:3:137:5 | foreach |
| calls.rb:135:11:135:12 | ... + ... | calls.rb:131:3:137:5 | foreach |
| calls.rb:135:14:135:14 | 1 | calls.rb:131:3:137:5 | foreach |
| calls.rb:141:5:141:20 | ... | calls.rb:140:1:142:3 | funny |
| calls.rb:141:5:141:20 | yield ... | calls.rb:140:1:142:3 | funny |
| calls.rb:141:11:141:20 | "prefix: " | calls.rb:140:1:142:3 | funny |
| calls.rb:141:12:141:19 | prefix: | calls.rb:140:1:142:3 | funny |
| calls.rb:158:14:158:15 | &b | calls.rb:158:1:160:3 | indirect |
| calls.rb:158:15:158:15 | b | calls.rb:158:1:160:3 | indirect |
| calls.rb:159:5:159:17 | ... | calls.rb:158:1:160:3 | indirect |
| calls.rb:159:5:159:17 | call to call_block | calls.rb:158:1:160:3 | indirect |
| calls.rb:159:5:159:17 | self | calls.rb:158:1:160:3 | indirect |
| calls.rb:159:16:159:17 | &... | calls.rb:158:1:160:3 | indirect |
| calls.rb:159:17:159:17 | b | calls.rb:158:1:160:3 | indirect |
| calls.rb:167:9:167:12 | self | calls.rb:166:5:168:7 | s_method |
| calls.rb:167:9:167:17 | ... | calls.rb:166:5:168:7 | s_method |
| calls.rb:167:9:167:17 | call to to_s | calls.rb:166:5:168:7 | s_method |
| calls.rb:192:9:192:26 | call to puts | calls.rb:191:5:194:7 | singleton_a |
| calls.rb:192:9:192:26 | self | calls.rb:191:5:194:7 | singleton_a |
| calls.rb:192:9:193:24 | ... | calls.rb:191:5:194:7 | singleton_a |
| calls.rb:192:14:192:26 | "singleton_a" | calls.rb:191:5:194:7 | singleton_a |
| calls.rb:192:15:192:25 | singleton_a | calls.rb:191:5:194:7 | singleton_a |
| calls.rb:193:9:193:12 | self | calls.rb:191:5:194:7 | singleton_a |
| calls.rb:193:9:193:24 | call to singleton_b | calls.rb:191:5:194:7 | singleton_a |
| calls.rb:197:9:197:26 | call to puts | calls.rb:196:5:199:7 | singleton_b |
| calls.rb:197:9:197:26 | self | calls.rb:196:5:199:7 | singleton_b |
| calls.rb:197:9:198:24 | ... | calls.rb:196:5:199:7 | singleton_b |
| calls.rb:197:14:197:26 | "singleton_b" | calls.rb:196:5:199:7 | singleton_b |
| calls.rb:197:15:197:25 | singleton_b | calls.rb:196:5:199:7 | singleton_b |
| calls.rb:198:9:198:12 | self | calls.rb:196:5:199:7 | singleton_b |
| calls.rb:198:9:198:24 | call to singleton_c | calls.rb:196:5:199:7 | singleton_b |
| calls.rb:202:9:202:26 | ... | calls.rb:201:5:203:7 | singleton_c |
| calls.rb:202:9:202:26 | call to puts | calls.rb:201:5:203:7 | singleton_c |
| calls.rb:202:9:202:26 | self | calls.rb:201:5:203:7 | singleton_c |
| calls.rb:202:14:202:26 | "singleton_c" | calls.rb:201:5:203:7 | singleton_c |
| calls.rb:202:15:202:25 | singleton_c | calls.rb:201:5:203:7 | singleton_c |
| calls.rb:206:9:206:26 | call to puts | calls.rb:205:5:208:7 | singleton_d |
| calls.rb:206:9:206:26 | self | calls.rb:205:5:208:7 | singleton_d |
| calls.rb:206:9:207:24 | ... | calls.rb:205:5:208:7 | singleton_d |
| calls.rb:206:14:206:26 | "singleton_d" | calls.rb:205:5:208:7 | singleton_d |
| calls.rb:206:15:206:25 | singleton_d | calls.rb:205:5:208:7 | singleton_d |
| calls.rb:207:9:207:12 | self | calls.rb:205:5:208:7 | singleton_d |
| calls.rb:207:9:207:24 | call to singleton_a | calls.rb:205:5:208:7 | singleton_d |
| calls.rb:211:9:213:11 | singleton_e | calls.rb:210:5:215:7 | instance |
| calls.rb:211:9:214:19 | ... | calls.rb:210:5:215:7 | instance |
| calls.rb:211:13:211:16 | self | calls.rb:210:5:215:7 | instance |
| calls.rb:212:13:212:30 | ... | calls.rb:211:9:213:11 | singleton_e |
| calls.rb:212:13:212:30 | call to puts | calls.rb:211:9:213:11 | singleton_e |
| calls.rb:212:13:212:30 | self | calls.rb:211:9:213:11 | singleton_e |
| calls.rb:212:18:212:30 | "singleton_e" | calls.rb:211:9:213:11 | singleton_e |
| calls.rb:212:19:212:29 | singleton_e | calls.rb:211:9:213:11 | singleton_e |
| calls.rb:214:9:214:19 | call to singleton_e | calls.rb:210:5:215:7 | instance |
| calls.rb:214:9:214:19 | self | calls.rb:210:5:215:7 | instance |
| calls.rb:219:13:219:30 | ... | calls.rb:218:9:220:11 | singleton_f |
| calls.rb:219:13:219:30 | call to puts | calls.rb:218:9:220:11 | singleton_f |
| calls.rb:219:13:219:30 | self | calls.rb:218:9:220:11 | singleton_f |
| calls.rb:219:18:219:30 | "singleton_f" | calls.rb:218:9:220:11 | singleton_f |
| calls.rb:219:19:219:29 | singleton_f | calls.rb:218:9:220:11 | singleton_f |
| calls.rb:224:9:224:12 | self | calls.rb:223:5:225:7 | call_singleton_g |
| calls.rb:224:9:224:24 | ... | calls.rb:223:5:225:7 | call_singleton_g |
| calls.rb:224:9:224:24 | call to singleton_g | calls.rb:223:5:225:7 | call_singleton_g |
| calls.rb:237:5:237:24 | ... | calls.rb:236:1:238:3 | singleton_g |
| calls.rb:237:5:237:24 | call to puts | calls.rb:236:1:238:3 | singleton_g |
| calls.rb:237:5:237:24 | self | calls.rb:236:1:238:3 | singleton_g |
| calls.rb:237:10:237:24 | "singleton_g_1" | calls.rb:236:1:238:3 | singleton_g |
| calls.rb:237:11:237:23 | singleton_g_1 | calls.rb:236:1:238:3 | singleton_g |
| calls.rb:244:5:244:24 | ... | calls.rb:243:1:245:3 | singleton_g |
| calls.rb:244:5:244:24 | call to puts | calls.rb:243:1:245:3 | singleton_g |
| calls.rb:244:5:244:24 | self | calls.rb:243:1:245:3 | singleton_g |
| calls.rb:244:10:244:24 | "singleton_g_2" | calls.rb:243:1:245:3 | singleton_g |
| calls.rb:244:11:244:23 | singleton_g_2 | calls.rb:243:1:245:3 | singleton_g |
| calls.rb:252:9:252:28 | ... | calls.rb:251:5:253:7 | singleton_g |
| calls.rb:252:9:252:28 | call to puts | calls.rb:251:5:253:7 | singleton_g |
| calls.rb:252:9:252:28 | self | calls.rb:251:5:253:7 | singleton_g |
| calls.rb:252:14:252:28 | "singleton_g_3" | calls.rb:251:5:253:7 | singleton_g |
| calls.rb:252:15:252:27 | singleton_g_3 | calls.rb:251:5:253:7 | singleton_g |
| calls.rb:268:5:268:22 | ... | calls.rb:267:1:269:3 | singleton_g |
| calls.rb:268:5:268:22 | call to puts | calls.rb:267:1:269:3 | singleton_g |
| calls.rb:268:5:268:22 | self | calls.rb:267:1:269:3 | singleton_g |
| calls.rb:268:10:268:22 | "singleton_g" | calls.rb:267:1:269:3 | singleton_g |
@@ -873,24 +905,29 @@ enclosingMethod
| calls.rb:279:5:279:8 | type | calls.rb:278:1:286:3 | create |
| calls.rb:279:5:279:12 | call to new | calls.rb:278:1:286:3 | create |
| calls.rb:279:5:279:21 | call to instance | calls.rb:278:1:286:3 | create |
| calls.rb:279:5:285:20 | ... | calls.rb:278:1:286:3 | create |
| calls.rb:281:5:283:7 | singleton_h | calls.rb:278:1:286:3 | create |
| calls.rb:281:9:281:12 | type | calls.rb:278:1:286:3 | create |
| calls.rb:282:9:282:26 | ... | calls.rb:281:5:283:7 | singleton_h |
| calls.rb:282:9:282:26 | call to puts | calls.rb:281:5:283:7 | singleton_h |
| calls.rb:282:9:282:26 | self | calls.rb:281:5:283:7 | singleton_h |
| calls.rb:282:14:282:26 | "singleton_h" | calls.rb:281:5:283:7 | singleton_h |
| calls.rb:282:15:282:25 | singleton_h | calls.rb:281:5:283:7 | singleton_h |
| calls.rb:285:5:285:8 | type | calls.rb:278:1:286:3 | create |
| calls.rb:285:5:285:20 | call to singleton_h | calls.rb:278:1:286:3 | create |
| calls.rb:295:9:295:26 | ... | calls.rb:294:5:296:7 | singleton_i |
| calls.rb:295:9:295:26 | call to puts | calls.rb:294:5:296:7 | singleton_i |
| calls.rb:295:9:295:26 | self | calls.rb:294:5:296:7 | singleton_i |
| calls.rb:295:14:295:26 | "singleton_i" | calls.rb:294:5:296:7 | singleton_i |
| calls.rb:295:15:295:25 | singleton_i | calls.rb:294:5:296:7 | singleton_i |
| calls.rb:304:9:304:26 | ... | calls.rb:303:5:305:7 | singleton_j |
| calls.rb:304:9:304:26 | call to puts | calls.rb:303:5:305:7 | singleton_j |
| calls.rb:304:9:304:26 | self | calls.rb:303:5:305:7 | singleton_j |
| calls.rb:304:14:304:26 | "singleton_j" | calls.rb:303:5:305:7 | singleton_j |
| calls.rb:304:15:304:25 | singleton_j | calls.rb:303:5:305:7 | singleton_j |
| calls.rb:312:9:312:31 | call to puts | calls.rb:311:5:314:7 | instance |
| calls.rb:312:9:312:31 | self | calls.rb:311:5:314:7 | instance |
| calls.rb:312:9:313:36 | ... | calls.rb:311:5:314:7 | instance |
| calls.rb:312:14:312:31 | "SelfNew#instance" | calls.rb:311:5:314:7 | instance |
| calls.rb:312:15:312:30 | SelfNew#instance | calls.rb:311:5:314:7 | instance |
| calls.rb:313:9:313:11 | call to new | calls.rb:311:5:314:7 | instance |
@@ -898,16 +935,21 @@ enclosingMethod
| calls.rb:313:9:313:20 | call to instance | calls.rb:311:5:314:7 | instance |
| calls.rb:317:9:317:11 | call to new | calls.rb:316:5:318:7 | singleton |
| calls.rb:317:9:317:11 | self | calls.rb:316:5:318:7 | singleton |
| calls.rb:317:9:317:20 | ... | calls.rb:316:5:318:7 | singleton |
| calls.rb:317:9:317:20 | call to instance | calls.rb:316:5:318:7 | singleton |
| calls.rb:327:9:327:26 | ... | calls.rb:326:5:328:7 | instance |
| calls.rb:327:9:327:26 | call to puts | calls.rb:326:5:328:7 | instance |
| calls.rb:327:9:327:26 | self | calls.rb:326:5:328:7 | instance |
| calls.rb:327:14:327:26 | "C1#instance" | calls.rb:326:5:328:7 | instance |
| calls.rb:327:15:327:25 | C1#instance | calls.rb:326:5:328:7 | instance |
| calls.rb:331:9:331:12 | ... | calls.rb:330:5:332:7 | return_self |
| calls.rb:331:9:331:12 | self | calls.rb:330:5:332:7 | return_self |
| calls.rb:337:9:337:26 | ... | calls.rb:336:5:338:7 | instance |
| calls.rb:337:9:337:26 | call to puts | calls.rb:336:5:338:7 | instance |
| calls.rb:337:9:337:26 | self | calls.rb:336:5:338:7 | instance |
| calls.rb:337:14:337:26 | "C2#instance" | calls.rb:336:5:338:7 | instance |
| calls.rb:337:15:337:25 | C2#instance | calls.rb:336:5:338:7 | instance |
| calls.rb:343:9:343:26 | ... | calls.rb:342:5:344:7 | instance |
| calls.rb:343:9:343:26 | call to puts | calls.rb:342:5:344:7 | instance |
| calls.rb:343:9:343:26 | self | calls.rb:342:5:344:7 | instance |
| calls.rb:343:14:343:26 | "C3#instance" | calls.rb:342:5:344:7 | instance |
@@ -915,6 +957,7 @@ enclosingMethod
| calls.rb:347:22:347:22 | x | calls.rb:347:1:363:3 | pattern_dispatch |
| calls.rb:347:22:347:22 | x | calls.rb:347:1:363:3 | pattern_dispatch |
| calls.rb:348:5:356:7 | case ... | calls.rb:347:1:363:3 | pattern_dispatch |
| calls.rb:348:5:362:7 | ... | calls.rb:347:1:363:3 | pattern_dispatch |
| calls.rb:348:10:348:10 | x | calls.rb:347:1:363:3 | pattern_dispatch |
| calls.rb:349:5:350:18 | when ... | calls.rb:347:1:363:3 | pattern_dispatch |
| calls.rb:349:10:349:11 | C3 | calls.rb:347:1:363:3 | pattern_dispatch |
@@ -955,89 +998,111 @@ enclosingMethod
| calls.rb:361:26:361:36 | call to instance | calls.rb:347:1:363:3 | pattern_dispatch |
| calls.rb:374:19:374:19 | x | calls.rb:374:1:378:3 | add_singleton |
| calls.rb:374:19:374:19 | x | calls.rb:374:1:378:3 | add_singleton |
| calls.rb:375:5:377:7 | ... | calls.rb:374:1:378:3 | add_singleton |
| calls.rb:375:5:377:7 | instance | calls.rb:374:1:378:3 | add_singleton |
| calls.rb:375:9:375:9 | x | calls.rb:374:1:378:3 | add_singleton |
| calls.rb:376:9:376:28 | ... | calls.rb:375:5:377:7 | instance |
| calls.rb:376:9:376:28 | call to puts | calls.rb:375:5:377:7 | instance |
| calls.rb:376:9:376:28 | self | calls.rb:375:5:377:7 | instance |
| calls.rb:376:14:376:28 | "instance_on x" | calls.rb:375:5:377:7 | instance |
| calls.rb:376:15:376:27 | instance_on x | calls.rb:375:5:377:7 | instance |
| calls.rb:388:13:388:48 | ... | calls.rb:387:9:389:11 | singleton1 |
| calls.rb:388:13:388:48 | call to puts | calls.rb:387:9:389:11 | singleton1 |
| calls.rb:388:13:388:48 | self | calls.rb:387:9:389:11 | singleton1 |
| calls.rb:388:18:388:48 | "SingletonOverride1#singleton1" | calls.rb:387:9:389:11 | singleton1 |
| calls.rb:388:19:388:47 | SingletonOverride1#singleton1 | calls.rb:387:9:389:11 | singleton1 |
| calls.rb:392:13:392:22 | ... | calls.rb:391:9:393:11 | call_singleton1 |
| calls.rb:392:13:392:22 | call to singleton1 | calls.rb:391:9:393:11 | call_singleton1 |
| calls.rb:392:13:392:22 | self | calls.rb:391:9:393:11 | call_singleton1 |
| calls.rb:396:13:396:16 | self | calls.rb:395:9:397:11 | factory |
| calls.rb:396:13:396:20 | call to new | calls.rb:395:9:397:11 | factory |
| calls.rb:396:13:396:30 | ... | calls.rb:395:9:397:11 | factory |
| calls.rb:396:13:396:30 | call to instance1 | calls.rb:395:9:397:11 | factory |
| calls.rb:401:9:401:44 | ... | calls.rb:400:5:402:7 | singleton2 |
| calls.rb:401:9:401:44 | call to puts | calls.rb:400:5:402:7 | singleton2 |
| calls.rb:401:9:401:44 | self | calls.rb:400:5:402:7 | singleton2 |
| calls.rb:401:14:401:44 | "SingletonOverride1#singleton2" | calls.rb:400:5:402:7 | singleton2 |
| calls.rb:401:15:401:43 | SingletonOverride1#singleton2 | calls.rb:400:5:402:7 | singleton2 |
| calls.rb:405:9:405:18 | ... | calls.rb:404:5:406:7 | call_singleton2 |
| calls.rb:405:9:405:18 | call to singleton2 | calls.rb:404:5:406:7 | call_singleton2 |
| calls.rb:405:9:405:18 | self | calls.rb:404:5:406:7 | call_singleton2 |
| calls.rb:411:9:411:43 | ... | calls.rb:410:5:412:7 | instance1 |
| calls.rb:411:9:411:43 | call to puts | calls.rb:410:5:412:7 | instance1 |
| calls.rb:411:9:411:43 | self | calls.rb:410:5:412:7 | instance1 |
| calls.rb:411:14:411:43 | "SingletonOverride1#instance1" | calls.rb:410:5:412:7 | instance1 |
| calls.rb:411:15:411:42 | SingletonOverride1#instance1 | calls.rb:410:5:412:7 | instance1 |
| calls.rb:423:13:423:48 | ... | calls.rb:422:9:424:11 | singleton1 |
| calls.rb:423:13:423:48 | call to puts | calls.rb:422:9:424:11 | singleton1 |
| calls.rb:423:13:423:48 | self | calls.rb:422:9:424:11 | singleton1 |
| calls.rb:423:18:423:48 | "SingletonOverride2#singleton1" | calls.rb:422:9:424:11 | singleton1 |
| calls.rb:423:19:423:47 | SingletonOverride2#singleton1 | calls.rb:422:9:424:11 | singleton1 |
| calls.rb:428:9:428:44 | ... | calls.rb:427:5:429:7 | singleton2 |
| calls.rb:428:9:428:44 | call to puts | calls.rb:427:5:429:7 | singleton2 |
| calls.rb:428:9:428:44 | self | calls.rb:427:5:429:7 | singleton2 |
| calls.rb:428:14:428:44 | "SingletonOverride2#singleton2" | calls.rb:427:5:429:7 | singleton2 |
| calls.rb:428:15:428:43 | SingletonOverride2#singleton2 | calls.rb:427:5:429:7 | singleton2 |
| calls.rb:432:9:432:43 | ... | calls.rb:431:5:433:7 | instance1 |
| calls.rb:432:9:432:43 | call to puts | calls.rb:431:5:433:7 | instance1 |
| calls.rb:432:9:432:43 | self | calls.rb:431:5:433:7 | instance1 |
| calls.rb:432:14:432:43 | "SingletonOverride2#instance1" | calls.rb:431:5:433:7 | instance1 |
| calls.rb:432:15:432:42 | SingletonOverride2#instance1 | calls.rb:431:5:433:7 | instance1 |
| calls.rb:444:13:444:48 | ... | calls.rb:443:9:445:11 | m1 |
| calls.rb:444:13:444:48 | call to puts | calls.rb:443:9:445:11 | m1 |
| calls.rb:444:13:444:48 | self | calls.rb:443:9:445:11 | m1 |
| calls.rb:444:18:444:48 | "ConditionalInstanceMethods#m1" | calls.rb:443:9:445:11 | m1 |
| calls.rb:444:19:444:47 | ConditionalInstanceMethods#m1 | calls.rb:443:9:445:11 | m1 |
| calls.rb:449:9:449:44 | call to puts | calls.rb:448:5:460:7 | m2 |
| calls.rb:449:9:449:44 | self | calls.rb:448:5:460:7 | m2 |
| calls.rb:449:9:459:10 | ... | calls.rb:448:5:460:7 | m2 |
| calls.rb:449:14:449:44 | "ConditionalInstanceMethods#m2" | calls.rb:448:5:460:7 | m2 |
| calls.rb:449:15:449:43 | ConditionalInstanceMethods#m2 | calls.rb:448:5:460:7 | m2 |
| calls.rb:451:9:457:11 | m3 | calls.rb:448:5:460:7 | m2 |
| calls.rb:452:13:452:48 | call to puts | calls.rb:451:9:457:11 | m3 |
| calls.rb:452:13:452:48 | self | calls.rb:451:9:457:11 | m3 |
| calls.rb:452:13:456:15 | ... | calls.rb:451:9:457:11 | m3 |
| calls.rb:452:18:452:48 | "ConditionalInstanceMethods#m3" | calls.rb:451:9:457:11 | m3 |
| calls.rb:452:19:452:47 | ConditionalInstanceMethods#m3 | calls.rb:451:9:457:11 | m3 |
| calls.rb:454:13:456:15 | m4 | calls.rb:451:9:457:11 | m3 |
| calls.rb:455:17:455:52 | ... | calls.rb:454:13:456:15 | m4 |
| calls.rb:455:17:455:52 | call to puts | calls.rb:454:13:456:15 | m4 |
| calls.rb:455:17:455:52 | self | calls.rb:454:13:456:15 | m4 |
| calls.rb:455:22:455:52 | "ConditionalInstanceMethods#m4" | calls.rb:454:13:456:15 | m4 |
| calls.rb:455:23:455:51 | ConditionalInstanceMethods#m4 | calls.rb:454:13:456:15 | m4 |
| calls.rb:459:9:459:10 | call to m3 | calls.rb:448:5:460:7 | m2 |
| calls.rb:459:9:459:10 | self | calls.rb:448:5:460:7 | m2 |
| calls.rb:465:17:465:40 | ... | calls.rb:464:13:466:15 | m5 |
| calls.rb:465:17:465:40 | call to puts | calls.rb:464:13:466:15 | m5 |
| calls.rb:465:17:465:40 | self | calls.rb:464:13:466:15 | m5 |
| calls.rb:465:22:465:40 | "AnonymousClass#m5" | calls.rb:464:13:466:15 | m5 |
| calls.rb:465:23:465:39 | AnonymousClass#m5 | calls.rb:464:13:466:15 | m5 |
| calls.rb:481:13:481:22 | ... | calls.rb:480:9:482:11 | foo |
| calls.rb:481:13:481:22 | call to puts | calls.rb:480:9:482:11 | foo |
| calls.rb:481:13:481:22 | self | calls.rb:480:9:482:11 | foo |
| calls.rb:481:18:481:22 | "foo" | calls.rb:480:9:482:11 | foo |
| calls.rb:481:19:481:21 | foo | calls.rb:480:9:482:11 | foo |
| calls.rb:487:13:487:22 | ... | calls.rb:486:9:488:11 | bar |
| calls.rb:487:13:487:22 | call to puts | calls.rb:486:9:488:11 | bar |
| calls.rb:487:13:487:22 | self | calls.rb:486:9:488:11 | bar |
| calls.rb:487:18:487:22 | "bar" | calls.rb:486:9:488:11 | bar |
| calls.rb:487:19:487:21 | bar | calls.rb:486:9:488:11 | bar |
| calls.rb:506:9:506:46 | ... | calls.rb:505:5:507:7 | singleton |
| calls.rb:506:9:506:46 | call to puts | calls.rb:505:5:507:7 | singleton |
| calls.rb:506:9:506:46 | self | calls.rb:505:5:507:7 | singleton |
| calls.rb:506:14:506:46 | "ExtendSingletonMethod#singleton" | calls.rb:505:5:507:7 | singleton |
| calls.rb:506:15:506:45 | ExtendSingletonMethod#singleton | calls.rb:505:5:507:7 | singleton |
| calls.rb:535:9:535:42 | ... | calls.rb:534:15:536:7 | foo |
| calls.rb:535:9:535:42 | call to puts | calls.rb:534:15:536:7 | foo |
| calls.rb:535:9:535:42 | self | calls.rb:534:15:536:7 | foo |
| calls.rb:535:14:535:42 | "ProtectedMethodInModule#foo" | calls.rb:534:15:536:7 | foo |
| calls.rb:535:15:535:41 | ProtectedMethodInModule#foo | calls.rb:534:15:536:7 | foo |
| calls.rb:543:9:543:35 | ... | calls.rb:542:15:544:7 | bar |
| calls.rb:543:9:543:35 | call to puts | calls.rb:542:15:544:7 | bar |
| calls.rb:543:9:543:35 | self | calls.rb:542:15:544:7 | bar |
| calls.rb:543:14:543:35 | "ProtectedMethods#bar" | calls.rb:542:15:544:7 | bar |
| calls.rb:543:15:543:34 | ProtectedMethods#bar | calls.rb:542:15:544:7 | bar |
| calls.rb:547:9:547:11 | call to foo | calls.rb:546:5:551:7 | baz |
| calls.rb:547:9:547:11 | self | calls.rb:546:5:551:7 | baz |
| calls.rb:547:9:550:32 | ... | calls.rb:546:5:551:7 | baz |
| calls.rb:548:9:548:11 | call to bar | calls.rb:546:5:551:7 | baz |
| calls.rb:548:9:548:11 | self | calls.rb:546:5:551:7 | baz |
| calls.rb:549:9:549:24 | ProtectedMethods | calls.rb:546:5:551:7 | baz |
@@ -1048,28 +1113,39 @@ enclosingMethod
| calls.rb:550:9:550:32 | call to bar | calls.rb:546:5:551:7 | baz |
| calls.rb:560:9:560:11 | call to foo | calls.rb:559:5:562:7 | baz |
| calls.rb:560:9:560:11 | self | calls.rb:559:5:562:7 | baz |
| calls.rb:560:9:561:35 | ... | calls.rb:559:5:562:7 | baz |
| calls.rb:561:9:561:27 | ProtectedMethodsSub | calls.rb:559:5:562:7 | baz |
| calls.rb:561:9:561:31 | call to new | calls.rb:559:5:562:7 | baz |
| calls.rb:561:9:561:35 | call to foo | calls.rb:559:5:562:7 | baz |
| calls.rb:580:9:580:17 | call to singleton | calls.rb:579:5:582:7 | mid_method |
| calls.rb:580:9:580:17 | self | calls.rb:579:5:582:7 | mid_method |
| calls.rb:580:9:581:35 | ... | calls.rb:579:5:582:7 | mid_method |
| calls.rb:581:9:581:18 | call to singleton2 | calls.rb:579:5:582:7 | mid_method |
| calls.rb:581:9:581:18 | self | calls.rb:579:5:582:7 | mid_method |
| calls.rb:596:9:596:18 | ... | calls.rb:595:5:597:7 | call_singleton1 |
| calls.rb:596:9:596:18 | call to singleton1 | calls.rb:595:5:597:7 | call_singleton1 |
| calls.rb:596:9:596:18 | self | calls.rb:595:5:597:7 | call_singleton1 |
| calls.rb:600:9:600:23 | ... | calls.rb:599:5:601:7 | call_call_singleton1 |
| calls.rb:600:9:600:23 | call to call_singleton1 | calls.rb:599:5:601:7 | call_call_singleton1 |
| calls.rb:600:9:600:23 | self | calls.rb:599:5:601:7 | call_call_singleton1 |
| calls.rb:609:9:609:18 | call to singleton1 | calls.rb:608:5:610:7 | call_singleton1 |
| calls.rb:609:9:609:18 | self | calls.rb:608:5:610:7 | call_singleton1 |
| calls.rb:609:9:609:105 | ... | calls.rb:608:5:610:7 | call_singleton1 |
| calls.rb:618:9:618:18 | call to singleton1 | calls.rb:617:5:619:7 | call_singleton1 |
| calls.rb:618:9:618:18 | self | calls.rb:617:5:619:7 | call_singleton1 |
| calls.rb:618:9:618:105 | ... | calls.rb:617:5:619:7 | call_singleton1 |
| calls.rb:628:9:628:12 | self | calls.rb:627:5:629:7 | foo |
| calls.rb:628:9:628:16 | ... | calls.rb:627:5:629:7 | foo |
| calls.rb:628:9:628:16 | call to bar | calls.rb:627:5:629:7 | foo |
| calls.rb:637:9:637:13 | ... | calls.rb:636:5:638:7 | bar |
| calls.rb:637:9:637:13 | super call to bar | calls.rb:636:5:638:7 | bar |
| calls.rb:643:9:643:10 | C1 | calls.rb:642:5:644:7 | new |
| calls.rb:643:9:643:14 | ... | calls.rb:642:5:644:7 | new |
| calls.rb:643:9:643:14 | call to new | calls.rb:642:5:644:7 | new |
| calls.rb:651:9:651:12 | self | calls.rb:650:5:652:7 | new |
| calls.rb:651:9:651:21 | ... | calls.rb:650:5:652:7 | new |
| calls.rb:651:9:651:21 | call to allocate | calls.rb:650:5:652:7 | new |
| calls.rb:655:9:655:34 | ... | calls.rb:654:5:656:7 | instance |
| calls.rb:655:9:655:34 | call to puts | calls.rb:654:5:656:7 | instance |
| calls.rb:655:9:655:34 | self | calls.rb:654:5:656:7 | instance |
| calls.rb:655:14:655:34 | "CustomNew2#instance" | calls.rb:654:5:656:7 | instance |
@@ -1079,27 +1155,34 @@ enclosingMethod
| calls.rb:662:5:662:11 | Array | calls.rb:661:1:665:3 | capture_parameter |
| calls.rb:662:5:662:11 | [...] | calls.rb:661:1:665:3 | capture_parameter |
| calls.rb:662:5:662:11 | call to [] | calls.rb:661:1:665:3 | capture_parameter |
| calls.rb:662:5:664:7 | ... | calls.rb:661:1:665:3 | capture_parameter |
| calls.rb:662:5:664:7 | call to each | calls.rb:661:1:665:3 | capture_parameter |
| calls.rb:662:6:662:6 | 0 | calls.rb:661:1:665:3 | capture_parameter |
| calls.rb:662:8:662:8 | 1 | calls.rb:661:1:665:3 | capture_parameter |
| calls.rb:662:10:662:10 | 2 | calls.rb:661:1:665:3 | capture_parameter |
| calls.rb:662:18:664:7 | do ... end | calls.rb:661:1:665:3 | capture_parameter |
| calls.rb:663:9:663:9 | ... | calls.rb:661:1:665:3 | capture_parameter |
| calls.rb:663:9:663:9 | x | calls.rb:661:1:665:3 | capture_parameter |
| element_reference.rb:2:12:2:12 | x | element_reference.rb:2:5:4:7 | [] |
| element_reference.rb:2:12:2:12 | x | element_reference.rb:2:5:4:7 | [] |
| element_reference.rb:3:9:3:19 | ... | element_reference.rb:2:5:4:7 | [] |
| element_reference.rb:3:9:3:19 | yield ... | element_reference.rb:2:5:4:7 | [] |
| element_reference.rb:3:15:3:15 | x | element_reference.rb:2:5:4:7 | [] |
| element_reference.rb:3:15:3:19 | ... + ... | element_reference.rb:2:5:4:7 | [] |
| element_reference.rb:3:19:3:19 | 1 | element_reference.rb:2:5:4:7 | [] |
| hello.rb:3:9:3:22 | ... | hello.rb:2:5:4:7 | hello |
| hello.rb:3:9:3:22 | return | hello.rb:2:5:4:7 | hello |
| hello.rb:3:16:3:22 | "hello" | hello.rb:2:5:4:7 | hello |
| hello.rb:3:17:3:21 | hello | hello.rb:2:5:4:7 | hello |
| hello.rb:6:9:6:22 | ... | hello.rb:5:5:7:7 | world |
| hello.rb:6:9:6:22 | return | hello.rb:5:5:7:7 | world |
| hello.rb:6:16:6:22 | "world" | hello.rb:5:5:7:7 | world |
| hello.rb:6:17:6:21 | world | hello.rb:5:5:7:7 | world |
| hello.rb:14:9:14:20 | ... | hello.rb:13:5:15:7 | message |
| hello.rb:14:9:14:20 | return | hello.rb:13:5:15:7 | message |
| hello.rb:14:16:14:20 | call to hello | hello.rb:13:5:15:7 | message |
| hello.rb:14:16:14:20 | self | hello.rb:13:5:15:7 | message |
| hello.rb:20:9:20:40 | ... | hello.rb:19:5:21:7 | message |
| hello.rb:20:9:20:40 | return | hello.rb:19:5:21:7 | message |
| hello.rb:20:16:20:20 | super call to message | hello.rb:19:5:21:7 | message |
| hello.rb:20:16:20:26 | ... + ... | hello.rb:19:5:21:7 | message |
@@ -1113,32 +1196,40 @@ enclosingMethod
| hello.rb:20:39:20:39 | ! | hello.rb:19:5:21:7 | message |
| instance_fields.rb:4:13:4:18 | @field | instance_fields.rb:3:9:5:11 | create |
| instance_fields.rb:4:13:4:18 | self | instance_fields.rb:3:9:5:11 | create |
| instance_fields.rb:4:13:4:35 | ... | instance_fields.rb:3:9:5:11 | create |
| instance_fields.rb:4:13:4:35 | ... = ... | instance_fields.rb:3:9:5:11 | create |
| instance_fields.rb:4:22:4:31 | A_target | instance_fields.rb:3:9:5:11 | create |
| instance_fields.rb:4:22:4:35 | call to new | instance_fields.rb:3:9:5:11 | create |
| instance_fields.rb:7:13:7:18 | @field | instance_fields.rb:6:9:8:11 | use |
| instance_fields.rb:7:13:7:18 | self | instance_fields.rb:6:9:8:11 | use |
| instance_fields.rb:7:13:7:25 | ... | instance_fields.rb:6:9:8:11 | use |
| instance_fields.rb:7:13:7:25 | call to target | instance_fields.rb:6:9:8:11 | use |
| instance_fields.rb:19:13:19:18 | @field | instance_fields.rb:18:9:20:11 | create |
| instance_fields.rb:19:13:19:18 | self | instance_fields.rb:18:9:20:11 | create |
| instance_fields.rb:19:13:19:35 | ... | instance_fields.rb:18:9:20:11 | create |
| instance_fields.rb:19:13:19:35 | ... = ... | instance_fields.rb:18:9:20:11 | create |
| instance_fields.rb:19:22:19:31 | B_target | instance_fields.rb:18:9:20:11 | create |
| instance_fields.rb:19:22:19:35 | call to new | instance_fields.rb:18:9:20:11 | create |
| instance_fields.rb:22:13:22:18 | @field | instance_fields.rb:21:9:23:11 | use |
| instance_fields.rb:22:13:22:18 | self | instance_fields.rb:21:9:23:11 | use |
| instance_fields.rb:22:13:22:25 | ... | instance_fields.rb:21:9:23:11 | use |
| instance_fields.rb:22:13:22:25 | call to target | instance_fields.rb:21:9:23:11 | use |
| private.rb:84:7:84:32 | ... | private.rb:83:11:85:5 | m1 |
| private.rb:84:7:84:32 | call to puts | private.rb:83:11:85:5 | m1 |
| private.rb:84:7:84:32 | self | private.rb:83:11:85:5 | m1 |
| private.rb:84:12:84:32 | "PrivateOverride1#m1" | private.rb:83:11:85:5 | m1 |
| private.rb:84:13:84:31 | PrivateOverride1#m1 | private.rb:83:11:85:5 | m1 |
| private.rb:88:7:88:32 | ... | private.rb:87:11:89:5 | m2 |
| private.rb:88:7:88:32 | call to puts | private.rb:87:11:89:5 | m2 |
| private.rb:88:7:88:32 | self | private.rb:87:11:89:5 | m2 |
| private.rb:88:12:88:32 | "PrivateOverride1#m2" | private.rb:87:11:89:5 | m2 |
| private.rb:88:13:88:31 | PrivateOverride1#m2 | private.rb:87:11:89:5 | m2 |
| private.rb:92:7:92:8 | ... | private.rb:91:3:93:5 | call_m1 |
| private.rb:92:7:92:8 | call to m1 | private.rb:91:3:93:5 | call_m1 |
| private.rb:92:7:92:8 | self | private.rb:91:3:93:5 | call_m1 |
| private.rb:98:7:98:32 | call to puts | private.rb:97:11:101:5 | m1 |
| private.rb:98:7:98:32 | self | private.rb:97:11:101:5 | m1 |
| private.rb:98:7:100:45 | ... | private.rb:97:11:101:5 | m1 |
| private.rb:98:12:98:32 | "PrivateOverride2#m1" | private.rb:97:11:101:5 | m1 |
| private.rb:98:13:98:31 | PrivateOverride2#m1 | private.rb:97:11:101:5 | m1 |
| private.rb:99:7:99:8 | call to m2 | private.rb:97:11:101:5 | m1 |
@@ -1148,11 +1239,15 @@ enclosingMethod
| private.rb:100:7:100:29 | call to m1 | private.rb:97:11:101:5 | m1 |
| toplevel_self_singleton.rb:10:9:10:27 | call to ab_singleton_method | toplevel_self_singleton.rb:9:5:11:7 | method_in_block |
| toplevel_self_singleton.rb:10:9:10:27 | self | toplevel_self_singleton.rb:9:5:11:7 | method_in_block |
| toplevel_self_singleton.rb:10:9:10:60 | ... | toplevel_self_singleton.rb:9:5:11:7 | method_in_block |
| toplevel_self_singleton.rb:14:9:14:27 | call to ab_singleton_method | toplevel_self_singleton.rb:13:5:15:7 | method_in_block |
| toplevel_self_singleton.rb:14:9:14:27 | self | toplevel_self_singleton.rb:13:5:15:7 | method_in_block |
| toplevel_self_singleton.rb:14:9:14:60 | ... | toplevel_self_singleton.rb:13:5:15:7 | method_in_block |
| toplevel_self_singleton.rb:20:9:20:27 | call to ab_singleton_method | toplevel_self_singleton.rb:19:5:21:7 | method_in_struct |
| toplevel_self_singleton.rb:20:9:20:27 | self | toplevel_self_singleton.rb:19:5:21:7 | method_in_struct |
| toplevel_self_singleton.rb:20:9:20:60 | ... | toplevel_self_singleton.rb:19:5:21:7 | method_in_struct |
| toplevel_self_singleton.rb:30:13:30:19 | call to call_me | toplevel_self_singleton.rb:29:9:32:11 | call_you |
| toplevel_self_singleton.rb:30:13:30:19 | self | toplevel_self_singleton.rb:29:9:32:11 | call_you |
| toplevel_self_singleton.rb:30:13:31:20 | ... | toplevel_self_singleton.rb:29:9:32:11 | call_you |
| toplevel_self_singleton.rb:31:13:31:20 | call to call_you | toplevel_self_singleton.rb:29:9:32:11 | call_you |
| toplevel_self_singleton.rb:31:13:31:20 | self | toplevel_self_singleton.rb:29:9:32:11 | call_you |

View File

@@ -571,6 +571,7 @@ resolveConstantWriteAccess
| unresolved_subclass.rb:21:1:22:3 | A | UnresolvedNamespace::X1::X2::X3::A |
enclosingModule
| calls.rb:1:1:3:3 | foo | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:2:5:2:14 | ... | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:2:5:2:14 | call to puts | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:2:5:2:14 | self | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:2:10:2:14 | "foo" | calls.rb:1:1:667:52 | calls.rb |
@@ -579,6 +580,7 @@ enclosingModule
| calls.rb:5:1:5:3 | self | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:7:1:9:3 | bar | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:7:5:7:8 | self | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:8:5:8:15 | ... | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:8:5:8:15 | call to puts | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:8:5:8:15 | self | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:8:10:8:15 | "bar1" | calls.rb:1:1:667:52 | calls.rb |
@@ -587,6 +589,7 @@ enclosingModule
| calls.rb:11:1:11:8 | call to bar | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:13:1:15:3 | bar | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:13:5:13:8 | self | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:14:5:14:15 | ... | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:14:5:14:15 | call to puts | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:14:5:14:15 | self | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:14:10:14:15 | "bar2" | calls.rb:1:1:667:52 | calls.rb |
@@ -599,10 +602,12 @@ enclosingModule
| calls.rb:22:5:24:7 | instance_m | calls.rb:21:1:34:3 | M |
| calls.rb:23:9:23:19 | call to singleton_m | calls.rb:21:1:34:3 | M |
| calls.rb:23:9:23:19 | self | calls.rb:21:1:34:3 | M |
| calls.rb:23:9:23:35 | ... | calls.rb:21:1:34:3 | M |
| calls.rb:25:5:27:7 | singleton_m | calls.rb:21:1:34:3 | M |
| calls.rb:25:9:25:12 | self | calls.rb:21:1:34:3 | M |
| calls.rb:26:9:26:18 | call to instance_m | calls.rb:21:1:34:3 | M |
| calls.rb:26:9:26:18 | self | calls.rb:21:1:34:3 | M |
| calls.rb:26:9:26:34 | ... | calls.rb:21:1:34:3 | M |
| calls.rb:29:5:29:14 | call to instance_m | calls.rb:21:1:34:3 | M |
| calls.rb:29:5:29:14 | self | calls.rb:21:1:34:3 | M |
| calls.rb:30:5:30:8 | self | calls.rb:21:1:34:3 | M |
@@ -618,6 +623,7 @@ enclosingModule
| calls.rb:39:1:41:3 | call_instance_m | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:40:5:40:14 | call to instance_m | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:40:5:40:14 | self | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:40:5:40:30 | ... | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:43:1:58:3 | C | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:44:5:44:13 | call to include | calls.rb:43:1:58:3 | C |
| calls.rb:44:5:44:13 | self | calls.rb:43:1:58:3 | C |
@@ -633,6 +639,7 @@ enclosingModule
| calls.rb:51:5:57:7 | baz | calls.rb:43:1:58:3 | C |
| calls.rb:52:9:52:18 | call to instance_m | calls.rb:43:1:58:3 | C |
| calls.rb:52:9:52:18 | self | calls.rb:43:1:58:3 | C |
| calls.rb:52:9:56:40 | ... | calls.rb:43:1:58:3 | C |
| calls.rb:53:9:53:12 | self | calls.rb:43:1:58:3 | C |
| calls.rb:53:9:53:23 | call to instance_m | calls.rb:43:1:58:3 | C |
| calls.rb:55:9:55:19 | call to singleton_m | calls.rb:43:1:58:3 | C |
@@ -652,6 +659,7 @@ enclosingModule
| calls.rb:65:1:69:3 | D | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:65:11:65:11 | C | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:66:5:68:7 | baz | calls.rb:65:1:69:3 | D |
| calls.rb:67:9:67:13 | ... | calls.rb:65:1:69:3 | D |
| calls.rb:67:9:67:13 | super call to baz | calls.rb:65:1:69:3 | D |
| calls.rb:71:1:71:1 | d | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:71:1:71:9 | ... = ... | calls.rb:1:1:667:52 | calls.rb |
@@ -672,14 +680,17 @@ enclosingModule
| calls.rb:76:28:76:28 | 5 | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:77:5:77:5 | a | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:77:5:77:16 | call to bit_length | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:77:5:78:16 | ... | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:78:5:78:5 | b | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:78:5:78:16 | call to bit_length | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:81:1:83:3 | call_block | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:82:5:82:11 | ... | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:82:5:82:11 | yield ... | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:82:11:82:11 | 1 | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:85:1:89:3 | foo | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:86:5:86:7 | var | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:86:5:86:18 | ... = ... | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:86:5:88:29 | ... | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:86:11:86:14 | Hash | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:86:11:86:18 | call to new | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:87:5:87:7 | var | calls.rb:1:1:667:52 | calls.rb |
@@ -691,6 +702,7 @@ enclosingModule
| calls.rb:88:19:88:19 | x | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:88:19:88:19 | x | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:88:22:88:24 | var | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:88:22:88:27 | ... | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:88:22:88:27 | ...[...] | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:88:26:88:26 | x | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:91:1:94:3 | Integer | calls.rb:1:1:667:52 | calls.rb |
@@ -707,6 +719,7 @@ enclosingModule
| calls.rb:102:5:102:30 | puts | calls.rb:100:1:103:3 | Kernel |
| calls.rb:102:14:102:14 | x | calls.rb:100:1:103:3 | Kernel |
| calls.rb:102:14:102:14 | x | calls.rb:100:1:103:3 | Kernel |
| calls.rb:102:17:102:26 | ... | calls.rb:100:1:103:3 | Kernel |
| calls.rb:102:17:102:26 | call to old_puts | calls.rb:100:1:103:3 | Kernel |
| calls.rb:102:17:102:26 | self | calls.rb:100:1:103:3 | Kernel |
| calls.rb:102:26:102:26 | x | calls.rb:100:1:103:3 | Kernel |
@@ -720,6 +733,7 @@ enclosingModule
| calls.rb:108:5:110:7 | include | calls.rb:105:1:113:3 | Module |
| calls.rb:108:17:108:17 | x | calls.rb:105:1:113:3 | Module |
| calls.rb:108:17:108:17 | x | calls.rb:105:1:113:3 | Module |
| calls.rb:109:9:109:21 | ... | calls.rb:105:1:113:3 | Module |
| calls.rb:109:9:109:21 | call to old_include | calls.rb:105:1:113:3 | Module |
| calls.rb:109:9:109:21 | self | calls.rb:105:1:113:3 | Module |
| calls.rb:109:21:109:21 | x | calls.rb:105:1:113:3 | Module |
@@ -740,6 +754,7 @@ enclosingModule
| calls.rb:122:5:122:31 | [] | calls.rb:120:1:123:3 | Hash |
| calls.rb:122:12:122:12 | x | calls.rb:120:1:123:3 | Hash |
| calls.rb:122:12:122:12 | x | calls.rb:120:1:123:3 | Hash |
| calls.rb:122:15:122:27 | ... | calls.rb:120:1:123:3 | Hash |
| calls.rb:122:15:122:27 | call to old_lookup | calls.rb:120:1:123:3 | Hash |
| calls.rb:122:15:122:27 | self | calls.rb:120:1:123:3 | Hash |
| calls.rb:122:26:122:26 | x | calls.rb:120:1:123:3 | Hash |
@@ -752,6 +767,7 @@ enclosingModule
| calls.rb:127:3:127:29 | [] | calls.rb:125:1:138:3 | Array |
| calls.rb:127:10:127:10 | x | calls.rb:125:1:138:3 | Array |
| calls.rb:127:10:127:10 | x | calls.rb:125:1:138:3 | Array |
| calls.rb:127:13:127:25 | ... | calls.rb:125:1:138:3 | Array |
| calls.rb:127:13:127:25 | call to old_lookup | calls.rb:125:1:138:3 | Array |
| calls.rb:127:13:127:25 | self | calls.rb:125:1:138:3 | Array |
| calls.rb:127:24:127:24 | x | calls.rb:125:1:138:3 | Array |
@@ -761,6 +777,7 @@ enclosingModule
| calls.rb:131:16:131:19 | body | calls.rb:125:1:138:3 | Array |
| calls.rb:132:5:132:5 | x | calls.rb:125:1:138:3 | Array |
| calls.rb:132:5:132:9 | ... = ... | calls.rb:125:1:138:3 | Array |
| calls.rb:132:5:136:7 | ... | calls.rb:125:1:138:3 | Array |
| calls.rb:132:9:132:9 | 0 | calls.rb:125:1:138:3 | Array |
| calls.rb:133:5:136:7 | while ... | calls.rb:125:1:138:3 | Array |
| calls.rb:133:11:133:11 | x | calls.rb:125:1:138:3 | Array |
@@ -780,6 +797,7 @@ enclosingModule
| calls.rb:135:11:135:12 | ... + ... | calls.rb:125:1:138:3 | Array |
| calls.rb:135:14:135:14 | 1 | calls.rb:125:1:138:3 | Array |
| calls.rb:140:1:142:3 | funny | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:141:5:141:20 | ... | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:141:5:141:20 | yield ... | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:141:11:141:20 | "prefix: " | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:141:12:141:19 | prefix: | calls.rb:1:1:667:52 | calls.rb |
@@ -788,6 +806,7 @@ enclosingModule
| calls.rb:144:7:144:30 | { ... } | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:144:10:144:10 | i | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:144:10:144:10 | i | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:144:13:144:29 | ... | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:144:13:144:29 | call to puts | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:144:13:144:29 | self | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:144:18:144:18 | i | calls.rb:1:1:667:52 | calls.rb |
@@ -814,6 +833,7 @@ enclosingModule
| calls.rb:150:26:150:26 | i | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:150:29:150:29 | v | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:150:29:150:29 | v | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:150:32:150:61 | ... | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:150:32:150:61 | call to puts | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:150:32:150:61 | self | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:150:37:150:61 | "#{...} -> #{...}" | calls.rb:1:1:667:52 | calls.rb |
@@ -834,6 +854,7 @@ enclosingModule
| calls.rb:152:20:152:20 | i | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:152:20:152:20 | i | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:152:23:152:23 | i | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:152:23:152:34 | ... | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:152:23:152:34 | call to bit_length | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:154:1:154:7 | Array | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:154:1:154:7 | [...] | calls.rb:1:1:667:52 | calls.rb |
@@ -845,6 +866,7 @@ enclosingModule
| calls.rb:154:17:154:40 | { ... } | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:154:20:154:20 | i | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:154:20:154:20 | i | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:154:23:154:39 | ... | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:154:23:154:39 | call to puts | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:154:23:154:39 | self | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:154:28:154:28 | i | calls.rb:1:1:667:52 | calls.rb |
@@ -862,6 +884,7 @@ enclosingModule
| calls.rb:156:21:156:21 | _ | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:156:24:156:24 | v | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:156:24:156:24 | v | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:156:27:156:36 | ... | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:156:27:156:36 | call to puts | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:156:27:156:36 | self | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:156:32:156:32 | v | calls.rb:1:1:667:52 | calls.rb |
@@ -869,6 +892,7 @@ enclosingModule
| calls.rb:158:1:160:3 | indirect | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:158:14:158:15 | &b | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:158:15:158:15 | b | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:159:5:159:17 | ... | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:159:5:159:17 | call to call_block | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:159:5:159:17 | self | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:159:16:159:17 | &... | calls.rb:1:1:667:52 | calls.rb |
@@ -879,10 +903,12 @@ enclosingModule
| calls.rb:162:13:162:13 | i | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:162:13:162:13 | i | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:162:16:162:16 | i | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:162:16:162:27 | ... | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:162:16:162:27 | call to bit_length | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:165:1:169:3 | S | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:166:5:168:7 | s_method | calls.rb:165:1:169:3 | S |
| calls.rb:167:9:167:12 | self | calls.rb:165:1:169:3 | S |
| calls.rb:167:9:167:17 | ... | calls.rb:165:1:169:3 | S |
| calls.rb:167:9:167:17 | call to to_s | calls.rb:165:1:169:3 | S |
| calls.rb:171:1:174:3 | A | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:171:11:171:11 | S | calls.rb:1:1:667:52 | calls.rb |
@@ -907,6 +933,7 @@ enclosingModule
| calls.rb:191:9:191:12 | self | calls.rb:190:1:226:3 | Singletons |
| calls.rb:192:9:192:26 | call to puts | calls.rb:190:1:226:3 | Singletons |
| calls.rb:192:9:192:26 | self | calls.rb:190:1:226:3 | Singletons |
| calls.rb:192:9:193:24 | ... | calls.rb:190:1:226:3 | Singletons |
| calls.rb:192:14:192:26 | "singleton_a" | calls.rb:190:1:226:3 | Singletons |
| calls.rb:192:15:192:25 | singleton_a | calls.rb:190:1:226:3 | Singletons |
| calls.rb:193:9:193:12 | self | calls.rb:190:1:226:3 | Singletons |
@@ -915,12 +942,14 @@ enclosingModule
| calls.rb:196:9:196:12 | self | calls.rb:190:1:226:3 | Singletons |
| calls.rb:197:9:197:26 | call to puts | calls.rb:190:1:226:3 | Singletons |
| calls.rb:197:9:197:26 | self | calls.rb:190:1:226:3 | Singletons |
| calls.rb:197:9:198:24 | ... | calls.rb:190:1:226:3 | Singletons |
| calls.rb:197:14:197:26 | "singleton_b" | calls.rb:190:1:226:3 | Singletons |
| calls.rb:197:15:197:25 | singleton_b | calls.rb:190:1:226:3 | Singletons |
| calls.rb:198:9:198:12 | self | calls.rb:190:1:226:3 | Singletons |
| calls.rb:198:9:198:24 | call to singleton_c | calls.rb:190:1:226:3 | Singletons |
| calls.rb:201:5:203:7 | singleton_c | calls.rb:190:1:226:3 | Singletons |
| calls.rb:201:9:201:12 | self | calls.rb:190:1:226:3 | Singletons |
| calls.rb:202:9:202:26 | ... | calls.rb:190:1:226:3 | Singletons |
| calls.rb:202:9:202:26 | call to puts | calls.rb:190:1:226:3 | Singletons |
| calls.rb:202:9:202:26 | self | calls.rb:190:1:226:3 | Singletons |
| calls.rb:202:14:202:26 | "singleton_c" | calls.rb:190:1:226:3 | Singletons |
@@ -929,13 +958,16 @@ enclosingModule
| calls.rb:205:9:205:12 | self | calls.rb:190:1:226:3 | Singletons |
| calls.rb:206:9:206:26 | call to puts | calls.rb:190:1:226:3 | Singletons |
| calls.rb:206:9:206:26 | self | calls.rb:190:1:226:3 | Singletons |
| calls.rb:206:9:207:24 | ... | calls.rb:190:1:226:3 | Singletons |
| calls.rb:206:14:206:26 | "singleton_d" | calls.rb:190:1:226:3 | Singletons |
| calls.rb:206:15:206:25 | singleton_d | calls.rb:190:1:226:3 | Singletons |
| calls.rb:207:9:207:12 | self | calls.rb:190:1:226:3 | Singletons |
| calls.rb:207:9:207:24 | call to singleton_a | calls.rb:190:1:226:3 | Singletons |
| calls.rb:210:5:215:7 | instance | calls.rb:190:1:226:3 | Singletons |
| calls.rb:211:9:213:11 | singleton_e | calls.rb:190:1:226:3 | Singletons |
| calls.rb:211:9:214:19 | ... | calls.rb:190:1:226:3 | Singletons |
| calls.rb:211:13:211:16 | self | calls.rb:190:1:226:3 | Singletons |
| calls.rb:212:13:212:30 | ... | calls.rb:190:1:226:3 | Singletons |
| calls.rb:212:13:212:30 | call to puts | calls.rb:190:1:226:3 | Singletons |
| calls.rb:212:13:212:30 | self | calls.rb:190:1:226:3 | Singletons |
| calls.rb:212:18:212:30 | "singleton_e" | calls.rb:190:1:226:3 | Singletons |
@@ -945,12 +977,14 @@ enclosingModule
| calls.rb:217:5:221:7 | class << ... | calls.rb:190:1:226:3 | Singletons |
| calls.rb:217:14:217:17 | self | calls.rb:190:1:226:3 | Singletons |
| calls.rb:218:9:220:11 | singleton_f | calls.rb:217:5:221:7 | class << ... |
| calls.rb:219:13:219:30 | ... | calls.rb:217:5:221:7 | class << ... |
| calls.rb:219:13:219:30 | call to puts | calls.rb:217:5:221:7 | class << ... |
| calls.rb:219:13:219:30 | self | calls.rb:217:5:221:7 | class << ... |
| calls.rb:219:18:219:30 | "singleton_f" | calls.rb:217:5:221:7 | class << ... |
| calls.rb:219:19:219:29 | singleton_f | calls.rb:217:5:221:7 | class << ... |
| calls.rb:223:5:225:7 | call_singleton_g | calls.rb:190:1:226:3 | Singletons |
| calls.rb:224:9:224:12 | self | calls.rb:190:1:226:3 | Singletons |
| calls.rb:224:9:224:24 | ... | calls.rb:190:1:226:3 | Singletons |
| calls.rb:224:9:224:24 | call to singleton_g | calls.rb:190:1:226:3 | Singletons |
| calls.rb:228:1:228:10 | Singletons | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:228:1:228:22 | call to singleton_a | calls.rb:1:1:667:52 | calls.rb |
@@ -966,6 +1000,7 @@ enclosingModule
| calls.rb:234:1:234:14 | call to singleton_e | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:236:1:238:3 | singleton_g | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:236:5:236:6 | c1 | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:237:5:237:24 | ... | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:237:5:237:24 | call to puts | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:237:5:237:24 | self | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:237:10:237:24 | "singleton_g_1" | calls.rb:1:1:667:52 | calls.rb |
@@ -976,6 +1011,7 @@ enclosingModule
| calls.rb:241:1:241:19 | call to call_singleton_g | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:243:1:245:3 | singleton_g | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:243:5:243:6 | c1 | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:244:5:244:24 | ... | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:244:5:244:24 | call to puts | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:244:5:244:24 | self | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:244:10:244:24 | "singleton_g_2" | calls.rb:1:1:667:52 | calls.rb |
@@ -987,6 +1023,7 @@ enclosingModule
| calls.rb:250:1:254:3 | class << ... | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:250:10:250:11 | c1 | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:251:5:253:7 | singleton_g | calls.rb:250:1:254:3 | class << ... |
| calls.rb:252:9:252:28 | ... | calls.rb:250:1:254:3 | class << ... |
| calls.rb:252:9:252:28 | call to puts | calls.rb:250:1:254:3 | class << ... |
| calls.rb:252:9:252:28 | self | calls.rb:250:1:254:3 | class << ... |
| calls.rb:252:14:252:28 | "singleton_g_3" | calls.rb:250:1:254:3 | class << ... |
@@ -1011,6 +1048,7 @@ enclosingModule
| calls.rb:265:7:265:15 | top-level | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:267:1:269:3 | singleton_g | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:267:5:267:14 | Singletons | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:268:5:268:22 | ... | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:268:5:268:22 | call to puts | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:268:5:268:22 | self | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:268:10:268:22 | "singleton_g" | calls.rb:1:1:667:52 | calls.rb |
@@ -1035,8 +1073,10 @@ enclosingModule
| calls.rb:279:5:279:8 | type | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:279:5:279:12 | call to new | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:279:5:279:21 | call to instance | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:279:5:285:20 | ... | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:281:5:283:7 | singleton_h | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:281:9:281:12 | type | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:282:9:282:26 | ... | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:282:9:282:26 | call to puts | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:282:9:282:26 | self | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:282:14:282:26 | "singleton_h" | calls.rb:1:1:667:52 | calls.rb |
@@ -1054,6 +1094,7 @@ enclosingModule
| calls.rb:293:1:297:3 | class << ... | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:293:10:293:10 | x | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:294:5:296:7 | singleton_i | calls.rb:293:1:297:3 | class << ... |
| calls.rb:295:9:295:26 | ... | calls.rb:293:1:297:3 | class << ... |
| calls.rb:295:9:295:26 | call to puts | calls.rb:293:1:297:3 | class << ... |
| calls.rb:295:9:295:26 | self | calls.rb:293:1:297:3 | class << ... |
| calls.rb:295:14:295:26 | "singleton_i" | calls.rb:293:1:297:3 | class << ... |
@@ -1065,6 +1106,7 @@ enclosingModule
| calls.rb:302:1:306:3 | class << ... | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:302:10:302:19 | Singletons | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:303:5:305:7 | singleton_j | calls.rb:302:1:306:3 | class << ... |
| calls.rb:304:9:304:26 | ... | calls.rb:302:1:306:3 | class << ... |
| calls.rb:304:9:304:26 | call to puts | calls.rb:302:1:306:3 | class << ... |
| calls.rb:304:9:304:26 | self | calls.rb:302:1:306:3 | class << ... |
| calls.rb:304:14:304:26 | "singleton_j" | calls.rb:302:1:306:3 | class << ... |
@@ -1075,6 +1117,7 @@ enclosingModule
| calls.rb:311:5:314:7 | instance | calls.rb:310:1:321:3 | SelfNew |
| calls.rb:312:9:312:31 | call to puts | calls.rb:310:1:321:3 | SelfNew |
| calls.rb:312:9:312:31 | self | calls.rb:310:1:321:3 | SelfNew |
| calls.rb:312:9:313:36 | ... | calls.rb:310:1:321:3 | SelfNew |
| calls.rb:312:14:312:31 | "SelfNew#instance" | calls.rb:310:1:321:3 | SelfNew |
| calls.rb:312:15:312:30 | SelfNew#instance | calls.rb:310:1:321:3 | SelfNew |
| calls.rb:313:9:313:11 | call to new | calls.rb:310:1:321:3 | SelfNew |
@@ -1084,6 +1127,7 @@ enclosingModule
| calls.rb:316:9:316:12 | self | calls.rb:310:1:321:3 | SelfNew |
| calls.rb:317:9:317:11 | call to new | calls.rb:310:1:321:3 | SelfNew |
| calls.rb:317:9:317:11 | self | calls.rb:310:1:321:3 | SelfNew |
| calls.rb:317:9:317:20 | ... | calls.rb:310:1:321:3 | SelfNew |
| calls.rb:317:9:317:20 | call to instance | calls.rb:310:1:321:3 | SelfNew |
| calls.rb:320:5:320:7 | call to new | calls.rb:310:1:321:3 | SelfNew |
| calls.rb:320:5:320:7 | self | calls.rb:310:1:321:3 | SelfNew |
@@ -1092,15 +1136,18 @@ enclosingModule
| calls.rb:323:1:323:17 | call to singleton | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:325:1:333:3 | C1 | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:326:5:328:7 | instance | calls.rb:325:1:333:3 | C1 |
| calls.rb:327:9:327:26 | ... | calls.rb:325:1:333:3 | C1 |
| calls.rb:327:9:327:26 | call to puts | calls.rb:325:1:333:3 | C1 |
| calls.rb:327:9:327:26 | self | calls.rb:325:1:333:3 | C1 |
| calls.rb:327:14:327:26 | "C1#instance" | calls.rb:325:1:333:3 | C1 |
| calls.rb:327:15:327:25 | C1#instance | calls.rb:325:1:333:3 | C1 |
| calls.rb:330:5:332:7 | return_self | calls.rb:325:1:333:3 | C1 |
| calls.rb:331:9:331:12 | ... | calls.rb:325:1:333:3 | C1 |
| calls.rb:331:9:331:12 | self | calls.rb:325:1:333:3 | C1 |
| calls.rb:335:1:339:3 | C2 | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:335:12:335:13 | C1 | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:336:5:338:7 | instance | calls.rb:335:1:339:3 | C2 |
| calls.rb:337:9:337:26 | ... | calls.rb:335:1:339:3 | C2 |
| calls.rb:337:9:337:26 | call to puts | calls.rb:335:1:339:3 | C2 |
| calls.rb:337:9:337:26 | self | calls.rb:335:1:339:3 | C2 |
| calls.rb:337:14:337:26 | "C2#instance" | calls.rb:335:1:339:3 | C2 |
@@ -1108,6 +1155,7 @@ enclosingModule
| calls.rb:341:1:345:3 | C3 | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:341:12:341:13 | C2 | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:342:5:344:7 | instance | calls.rb:341:1:345:3 | C3 |
| calls.rb:343:9:343:26 | ... | calls.rb:341:1:345:3 | C3 |
| calls.rb:343:9:343:26 | call to puts | calls.rb:341:1:345:3 | C3 |
| calls.rb:343:9:343:26 | self | calls.rb:341:1:345:3 | C3 |
| calls.rb:343:14:343:26 | "C3#instance" | calls.rb:341:1:345:3 | C3 |
@@ -1116,6 +1164,7 @@ enclosingModule
| calls.rb:347:22:347:22 | x | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:347:22:347:22 | x | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:348:5:356:7 | case ... | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:348:5:362:7 | ... | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:348:10:348:10 | x | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:349:5:350:18 | when ... | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:349:10:349:11 | C3 | calls.rb:1:1:667:52 | calls.rb |
@@ -1182,8 +1231,10 @@ enclosingModule
| calls.rb:374:1:378:3 | add_singleton | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:374:19:374:19 | x | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:374:19:374:19 | x | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:375:5:377:7 | ... | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:375:5:377:7 | instance | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:375:9:375:9 | x | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:376:9:376:28 | ... | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:376:9:376:28 | call to puts | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:376:9:376:28 | self | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:376:14:376:28 | "instance_on x" | calls.rb:1:1:667:52 | calls.rb |
@@ -1204,30 +1255,36 @@ enclosingModule
| calls.rb:386:5:398:7 | class << ... | calls.rb:385:1:413:3 | SingletonOverride1 |
| calls.rb:386:14:386:17 | self | calls.rb:385:1:413:3 | SingletonOverride1 |
| calls.rb:387:9:389:11 | singleton1 | calls.rb:386:5:398:7 | class << ... |
| calls.rb:388:13:388:48 | ... | calls.rb:386:5:398:7 | class << ... |
| calls.rb:388:13:388:48 | call to puts | calls.rb:386:5:398:7 | class << ... |
| calls.rb:388:13:388:48 | self | calls.rb:386:5:398:7 | class << ... |
| calls.rb:388:18:388:48 | "SingletonOverride1#singleton1" | calls.rb:386:5:398:7 | class << ... |
| calls.rb:388:19:388:47 | SingletonOverride1#singleton1 | calls.rb:386:5:398:7 | class << ... |
| calls.rb:391:9:393:11 | call_singleton1 | calls.rb:386:5:398:7 | class << ... |
| calls.rb:392:13:392:22 | ... | calls.rb:386:5:398:7 | class << ... |
| calls.rb:392:13:392:22 | call to singleton1 | calls.rb:386:5:398:7 | class << ... |
| calls.rb:392:13:392:22 | self | calls.rb:386:5:398:7 | class << ... |
| calls.rb:395:9:397:11 | factory | calls.rb:386:5:398:7 | class << ... |
| calls.rb:396:13:396:16 | self | calls.rb:386:5:398:7 | class << ... |
| calls.rb:396:13:396:20 | call to new | calls.rb:386:5:398:7 | class << ... |
| calls.rb:396:13:396:30 | ... | calls.rb:386:5:398:7 | class << ... |
| calls.rb:396:13:396:30 | call to instance1 | calls.rb:386:5:398:7 | class << ... |
| calls.rb:400:5:402:7 | singleton2 | calls.rb:385:1:413:3 | SingletonOverride1 |
| calls.rb:400:9:400:12 | self | calls.rb:385:1:413:3 | SingletonOverride1 |
| calls.rb:401:9:401:44 | ... | calls.rb:385:1:413:3 | SingletonOverride1 |
| calls.rb:401:9:401:44 | call to puts | calls.rb:385:1:413:3 | SingletonOverride1 |
| calls.rb:401:9:401:44 | self | calls.rb:385:1:413:3 | SingletonOverride1 |
| calls.rb:401:14:401:44 | "SingletonOverride1#singleton2" | calls.rb:385:1:413:3 | SingletonOverride1 |
| calls.rb:401:15:401:43 | SingletonOverride1#singleton2 | calls.rb:385:1:413:3 | SingletonOverride1 |
| calls.rb:404:5:406:7 | call_singleton2 | calls.rb:385:1:413:3 | SingletonOverride1 |
| calls.rb:404:9:404:12 | self | calls.rb:385:1:413:3 | SingletonOverride1 |
| calls.rb:405:9:405:18 | ... | calls.rb:385:1:413:3 | SingletonOverride1 |
| calls.rb:405:9:405:18 | call to singleton2 | calls.rb:385:1:413:3 | SingletonOverride1 |
| calls.rb:405:9:405:18 | self | calls.rb:385:1:413:3 | SingletonOverride1 |
| calls.rb:408:5:408:14 | call to singleton2 | calls.rb:385:1:413:3 | SingletonOverride1 |
| calls.rb:408:5:408:14 | self | calls.rb:385:1:413:3 | SingletonOverride1 |
| calls.rb:410:5:412:7 | instance1 | calls.rb:385:1:413:3 | SingletonOverride1 |
| calls.rb:411:9:411:43 | ... | calls.rb:385:1:413:3 | SingletonOverride1 |
| calls.rb:411:9:411:43 | call to puts | calls.rb:385:1:413:3 | SingletonOverride1 |
| calls.rb:411:9:411:43 | self | calls.rb:385:1:413:3 | SingletonOverride1 |
| calls.rb:411:14:411:43 | "SingletonOverride1#instance1" | calls.rb:385:1:413:3 | SingletonOverride1 |
@@ -1245,17 +1302,20 @@ enclosingModule
| calls.rb:421:5:425:7 | class << ... | calls.rb:420:1:434:3 | SingletonOverride2 |
| calls.rb:421:14:421:17 | self | calls.rb:420:1:434:3 | SingletonOverride2 |
| calls.rb:422:9:424:11 | singleton1 | calls.rb:421:5:425:7 | class << ... |
| calls.rb:423:13:423:48 | ... | calls.rb:421:5:425:7 | class << ... |
| calls.rb:423:13:423:48 | call to puts | calls.rb:421:5:425:7 | class << ... |
| calls.rb:423:13:423:48 | self | calls.rb:421:5:425:7 | class << ... |
| calls.rb:423:18:423:48 | "SingletonOverride2#singleton1" | calls.rb:421:5:425:7 | class << ... |
| calls.rb:423:19:423:47 | SingletonOverride2#singleton1 | calls.rb:421:5:425:7 | class << ... |
| calls.rb:427:5:429:7 | singleton2 | calls.rb:420:1:434:3 | SingletonOverride2 |
| calls.rb:427:9:427:12 | self | calls.rb:420:1:434:3 | SingletonOverride2 |
| calls.rb:428:9:428:44 | ... | calls.rb:420:1:434:3 | SingletonOverride2 |
| calls.rb:428:9:428:44 | call to puts | calls.rb:420:1:434:3 | SingletonOverride2 |
| calls.rb:428:9:428:44 | self | calls.rb:420:1:434:3 | SingletonOverride2 |
| calls.rb:428:14:428:44 | "SingletonOverride2#singleton2" | calls.rb:420:1:434:3 | SingletonOverride2 |
| calls.rb:428:15:428:43 | SingletonOverride2#singleton2 | calls.rb:420:1:434:3 | SingletonOverride2 |
| calls.rb:431:5:433:7 | instance1 | calls.rb:420:1:434:3 | SingletonOverride2 |
| calls.rb:432:9:432:43 | ... | calls.rb:420:1:434:3 | SingletonOverride2 |
| calls.rb:432:9:432:43 | call to puts | calls.rb:420:1:434:3 | SingletonOverride2 |
| calls.rb:432:9:432:43 | self | calls.rb:420:1:434:3 | SingletonOverride2 |
| calls.rb:432:14:432:43 | "SingletonOverride2#instance1" | calls.rb:420:1:434:3 | SingletonOverride2 |
@@ -1276,6 +1336,7 @@ enclosingModule
| calls.rb:442:17:442:17 | 0 | calls.rb:441:1:469:3 | ConditionalInstanceMethods |
| calls.rb:442:19:445:11 | then ... | calls.rb:441:1:469:3 | ConditionalInstanceMethods |
| calls.rb:443:9:445:11 | m1 | calls.rb:441:1:469:3 | ConditionalInstanceMethods |
| calls.rb:444:13:444:48 | ... | calls.rb:441:1:469:3 | ConditionalInstanceMethods |
| calls.rb:444:13:444:48 | call to puts | calls.rb:441:1:469:3 | ConditionalInstanceMethods |
| calls.rb:444:13:444:48 | self | calls.rb:441:1:469:3 | ConditionalInstanceMethods |
| calls.rb:444:18:444:48 | "ConditionalInstanceMethods#m1" | calls.rb:441:1:469:3 | ConditionalInstanceMethods |
@@ -1283,14 +1344,17 @@ enclosingModule
| calls.rb:448:5:460:7 | m2 | calls.rb:441:1:469:3 | ConditionalInstanceMethods |
| calls.rb:449:9:449:44 | call to puts | calls.rb:441:1:469:3 | ConditionalInstanceMethods |
| calls.rb:449:9:449:44 | self | calls.rb:441:1:469:3 | ConditionalInstanceMethods |
| calls.rb:449:9:459:10 | ... | calls.rb:441:1:469:3 | ConditionalInstanceMethods |
| calls.rb:449:14:449:44 | "ConditionalInstanceMethods#m2" | calls.rb:441:1:469:3 | ConditionalInstanceMethods |
| calls.rb:449:15:449:43 | ConditionalInstanceMethods#m2 | calls.rb:441:1:469:3 | ConditionalInstanceMethods |
| calls.rb:451:9:457:11 | m3 | calls.rb:441:1:469:3 | ConditionalInstanceMethods |
| calls.rb:452:13:452:48 | call to puts | calls.rb:441:1:469:3 | ConditionalInstanceMethods |
| calls.rb:452:13:452:48 | self | calls.rb:441:1:469:3 | ConditionalInstanceMethods |
| calls.rb:452:13:456:15 | ... | calls.rb:441:1:469:3 | ConditionalInstanceMethods |
| calls.rb:452:18:452:48 | "ConditionalInstanceMethods#m3" | calls.rb:441:1:469:3 | ConditionalInstanceMethods |
| calls.rb:452:19:452:47 | ConditionalInstanceMethods#m3 | calls.rb:441:1:469:3 | ConditionalInstanceMethods |
| calls.rb:454:13:456:15 | m4 | calls.rb:441:1:469:3 | ConditionalInstanceMethods |
| calls.rb:455:17:455:52 | ... | calls.rb:441:1:469:3 | ConditionalInstanceMethods |
| calls.rb:455:17:455:52 | call to puts | calls.rb:441:1:469:3 | ConditionalInstanceMethods |
| calls.rb:455:17:455:52 | self | calls.rb:441:1:469:3 | ConditionalInstanceMethods |
| calls.rb:455:22:455:52 | "ConditionalInstanceMethods#m4" | calls.rb:441:1:469:3 | ConditionalInstanceMethods |
@@ -1308,7 +1372,9 @@ enclosingModule
| calls.rb:463:9:467:15 | call to new | calls.rb:441:1:469:3 | ConditionalInstanceMethods |
| calls.rb:463:9:467:18 | call to m5 | calls.rb:441:1:469:3 | ConditionalInstanceMethods |
| calls.rb:463:19:467:11 | do ... end | calls.rb:441:1:469:3 | ConditionalInstanceMethods |
| calls.rb:464:13:466:15 | ... | calls.rb:441:1:469:3 | ConditionalInstanceMethods |
| calls.rb:464:13:466:15 | m5 | calls.rb:441:1:469:3 | ConditionalInstanceMethods |
| calls.rb:465:17:465:40 | ... | calls.rb:441:1:469:3 | ConditionalInstanceMethods |
| calls.rb:465:17:465:40 | call to puts | calls.rb:441:1:469:3 | ConditionalInstanceMethods |
| calls.rb:465:17:465:40 | self | calls.rb:441:1:469:3 | ConditionalInstanceMethods |
| calls.rb:465:22:465:40 | "AnonymousClass#m5" | calls.rb:441:1:469:3 | ConditionalInstanceMethods |
@@ -1340,11 +1406,14 @@ enclosingModule
| calls.rb:479:5:479:11 | [...] | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:479:5:479:11 | call to [] | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:479:5:483:7 | call to each | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:479:5:495:7 | ... | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:479:6:479:6 | 0 | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:479:8:479:8 | 1 | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:479:10:479:10 | 2 | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:479:18:483:7 | do ... end | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:480:9:482:11 | ... | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:480:9:482:11 | foo | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:481:13:481:22 | ... | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:481:13:481:22 | call to puts | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:481:13:481:22 | self | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:481:18:481:22 | "foo" | calls.rb:1:1:667:52 | calls.rb |
@@ -1354,7 +1423,9 @@ enclosingModule
| calls.rb:485:5:489:11 | call to new | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:485:5:489:15 | call to bar | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:485:15:489:7 | do ... end | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:486:9:488:11 | ... | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:486:9:488:11 | bar | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:487:13:487:22 | ... | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:487:13:487:22 | call to puts | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:487:13:487:22 | self | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:487:18:487:22 | "bar" | calls.rb:1:1:667:52 | calls.rb |
@@ -1369,6 +1440,7 @@ enclosingModule
| calls.rb:491:18:495:7 | do ... end | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:491:22:491:22 | i | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:491:22:491:22 | i | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:492:9:494:11 | ... | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:492:9:494:11 | call to define_method | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:492:9:494:11 | self | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:492:23:492:32 | "baz_#{...}" | calls.rb:1:1:667:52 | calls.rb |
@@ -1376,6 +1448,7 @@ enclosingModule
| calls.rb:492:28:492:31 | #{...} | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:492:30:492:30 | i | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:492:35:494:11 | do ... end | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:493:13:493:27 | ... | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:493:13:493:27 | call to puts | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:493:13:493:27 | self | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:493:18:493:27 | "baz_#{...}" | calls.rb:1:1:667:52 | calls.rb |
@@ -1399,6 +1472,7 @@ enclosingModule
| calls.rb:502:1:502:33 | call to baz_2 | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:504:1:510:3 | ExtendSingletonMethod | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:505:5:507:7 | singleton | calls.rb:504:1:510:3 | ExtendSingletonMethod |
| calls.rb:506:9:506:46 | ... | calls.rb:504:1:510:3 | ExtendSingletonMethod |
| calls.rb:506:9:506:46 | call to puts | calls.rb:504:1:510:3 | ExtendSingletonMethod |
| calls.rb:506:9:506:46 | self | calls.rb:504:1:510:3 | ExtendSingletonMethod |
| calls.rb:506:14:506:46 | "ExtendSingletonMethod#singleton" | calls.rb:504:1:510:3 | ExtendSingletonMethod |
@@ -1435,6 +1509,7 @@ enclosingModule
| calls.rb:534:5:536:7 | call to protected | calls.rb:533:1:537:3 | ProtectedMethodInModule |
| calls.rb:534:5:536:7 | self | calls.rb:533:1:537:3 | ProtectedMethodInModule |
| calls.rb:534:15:536:7 | foo | calls.rb:533:1:537:3 | ProtectedMethodInModule |
| calls.rb:535:9:535:42 | ... | calls.rb:533:1:537:3 | ProtectedMethodInModule |
| calls.rb:535:9:535:42 | call to puts | calls.rb:533:1:537:3 | ProtectedMethodInModule |
| calls.rb:535:9:535:42 | self | calls.rb:533:1:537:3 | ProtectedMethodInModule |
| calls.rb:535:14:535:42 | "ProtectedMethodInModule#foo" | calls.rb:533:1:537:3 | ProtectedMethodInModule |
@@ -1446,6 +1521,7 @@ enclosingModule
| calls.rb:542:5:544:7 | call to protected | calls.rb:539:1:552:3 | ProtectedMethods |
| calls.rb:542:5:544:7 | self | calls.rb:539:1:552:3 | ProtectedMethods |
| calls.rb:542:15:544:7 | bar | calls.rb:539:1:552:3 | ProtectedMethods |
| calls.rb:543:9:543:35 | ... | calls.rb:539:1:552:3 | ProtectedMethods |
| calls.rb:543:9:543:35 | call to puts | calls.rb:539:1:552:3 | ProtectedMethods |
| calls.rb:543:9:543:35 | self | calls.rb:539:1:552:3 | ProtectedMethods |
| calls.rb:543:14:543:35 | "ProtectedMethods#bar" | calls.rb:539:1:552:3 | ProtectedMethods |
@@ -1453,6 +1529,7 @@ enclosingModule
| calls.rb:546:5:551:7 | baz | calls.rb:539:1:552:3 | ProtectedMethods |
| calls.rb:547:9:547:11 | call to foo | calls.rb:539:1:552:3 | ProtectedMethods |
| calls.rb:547:9:547:11 | self | calls.rb:539:1:552:3 | ProtectedMethods |
| calls.rb:547:9:550:32 | ... | calls.rb:539:1:552:3 | ProtectedMethods |
| calls.rb:548:9:548:11 | call to bar | calls.rb:539:1:552:3 | ProtectedMethods |
| calls.rb:548:9:548:11 | self | calls.rb:539:1:552:3 | ProtectedMethods |
| calls.rb:549:9:549:24 | ProtectedMethods | calls.rb:539:1:552:3 | ProtectedMethods |
@@ -1475,6 +1552,7 @@ enclosingModule
| calls.rb:559:5:562:7 | baz | calls.rb:558:1:563:3 | ProtectedMethodsSub |
| calls.rb:560:9:560:11 | call to foo | calls.rb:558:1:563:3 | ProtectedMethodsSub |
| calls.rb:560:9:560:11 | self | calls.rb:558:1:563:3 | ProtectedMethodsSub |
| calls.rb:560:9:561:35 | ... | calls.rb:558:1:563:3 | ProtectedMethodsSub |
| calls.rb:561:9:561:27 | ProtectedMethodsSub | calls.rb:558:1:563:3 | ProtectedMethodsSub |
| calls.rb:561:9:561:31 | call to new | calls.rb:558:1:563:3 | ProtectedMethodsSub |
| calls.rb:561:9:561:35 | call to foo | calls.rb:558:1:563:3 | ProtectedMethodsSub |
@@ -1497,6 +1575,7 @@ enclosingModule
| calls.rb:569:17:569:17 | c | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:569:17:569:17 | c | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:569:20:569:20 | c | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:569:20:569:24 | ... | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:569:20:569:24 | call to baz | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:570:1:570:13 | Array | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:570:1:570:13 | [...] | calls.rb:1:1:667:52 | calls.rb |
@@ -1512,6 +1591,7 @@ enclosingModule
| calls.rb:570:23:570:23 | s | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:570:23:570:23 | s | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:570:26:570:26 | s | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:570:26:570:37 | ... | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:570:26:570:37 | call to capitalize | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:572:1:575:3 | SingletonUpCall_Base | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:573:5:574:7 | singleton | calls.rb:572:1:575:3 | SingletonUpCall_Base |
@@ -1526,6 +1606,7 @@ enclosingModule
| calls.rb:579:9:579:12 | self | calls.rb:576:1:583:3 | SingletonUpCall_Sub |
| calls.rb:580:9:580:17 | call to singleton | calls.rb:576:1:583:3 | SingletonUpCall_Sub |
| calls.rb:580:9:580:17 | self | calls.rb:576:1:583:3 | SingletonUpCall_Sub |
| calls.rb:580:9:581:35 | ... | calls.rb:576:1:583:3 | SingletonUpCall_Sub |
| calls.rb:581:9:581:18 | call to singleton2 | calls.rb:576:1:583:3 | SingletonUpCall_Sub |
| calls.rb:581:9:581:18 | self | calls.rb:576:1:583:3 | SingletonUpCall_Sub |
| calls.rb:584:1:589:3 | SingletonUpCall_SubSub | calls.rb:1:1:667:52 | calls.rb |
@@ -1539,10 +1620,12 @@ enclosingModule
| calls.rb:592:9:592:12 | self | calls.rb:591:1:602:3 | SingletonA |
| calls.rb:595:5:597:7 | call_singleton1 | calls.rb:591:1:602:3 | SingletonA |
| calls.rb:595:9:595:12 | self | calls.rb:591:1:602:3 | SingletonA |
| calls.rb:596:9:596:18 | ... | calls.rb:591:1:602:3 | SingletonA |
| calls.rb:596:9:596:18 | call to singleton1 | calls.rb:591:1:602:3 | SingletonA |
| calls.rb:596:9:596:18 | self | calls.rb:591:1:602:3 | SingletonA |
| calls.rb:599:5:601:7 | call_call_singleton1 | calls.rb:591:1:602:3 | SingletonA |
| calls.rb:599:9:599:12 | self | calls.rb:591:1:602:3 | SingletonA |
| calls.rb:600:9:600:23 | ... | calls.rb:591:1:602:3 | SingletonA |
| calls.rb:600:9:600:23 | call to call_singleton1 | calls.rb:591:1:602:3 | SingletonA |
| calls.rb:600:9:600:23 | self | calls.rb:591:1:602:3 | SingletonA |
| calls.rb:604:1:611:3 | SingletonB | calls.rb:1:1:667:52 | calls.rb |
@@ -1553,6 +1636,7 @@ enclosingModule
| calls.rb:608:9:608:12 | self | calls.rb:604:1:611:3 | SingletonB |
| calls.rb:609:9:609:18 | call to singleton1 | calls.rb:604:1:611:3 | SingletonB |
| calls.rb:609:9:609:18 | self | calls.rb:604:1:611:3 | SingletonB |
| calls.rb:609:9:609:105 | ... | calls.rb:604:1:611:3 | SingletonB |
| calls.rb:613:1:620:3 | SingletonC | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:613:20:613:29 | SingletonA | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:614:5:615:7 | singleton1 | calls.rb:613:1:620:3 | SingletonC |
@@ -1561,6 +1645,7 @@ enclosingModule
| calls.rb:617:9:617:12 | self | calls.rb:613:1:620:3 | SingletonC |
| calls.rb:618:9:618:18 | call to singleton1 | calls.rb:613:1:620:3 | SingletonC |
| calls.rb:618:9:618:18 | self | calls.rb:613:1:620:3 | SingletonC |
| calls.rb:618:9:618:105 | ... | calls.rb:613:1:620:3 | SingletonC |
| calls.rb:622:1:622:10 | SingletonA | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:622:1:622:31 | call to call_call_singleton1 | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:623:1:623:10 | SingletonB | calls.rb:1:1:667:52 | calls.rb |
@@ -1570,6 +1655,7 @@ enclosingModule
| calls.rb:626:1:632:3 | Included | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:627:5:629:7 | foo | calls.rb:626:1:632:3 | Included |
| calls.rb:628:9:628:12 | self | calls.rb:626:1:632:3 | Included |
| calls.rb:628:9:628:16 | ... | calls.rb:626:1:632:3 | Included |
| calls.rb:628:9:628:16 | call to bar | calls.rb:626:1:632:3 | Included |
| calls.rb:630:5:631:7 | bar | calls.rb:626:1:632:3 | Included |
| calls.rb:634:1:639:3 | IncludesIncluded | calls.rb:1:1:667:52 | calls.rb |
@@ -1577,11 +1663,13 @@ enclosingModule
| calls.rb:635:5:635:20 | self | calls.rb:634:1:639:3 | IncludesIncluded |
| calls.rb:635:13:635:20 | Included | calls.rb:634:1:639:3 | IncludesIncluded |
| calls.rb:636:5:638:7 | bar | calls.rb:634:1:639:3 | IncludesIncluded |
| calls.rb:637:9:637:13 | ... | calls.rb:634:1:639:3 | IncludesIncluded |
| calls.rb:637:9:637:13 | super call to bar | calls.rb:634:1:639:3 | IncludesIncluded |
| calls.rb:641:1:645:3 | CustomNew1 | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:642:5:644:7 | new | calls.rb:641:1:645:3 | CustomNew1 |
| calls.rb:642:9:642:12 | self | calls.rb:641:1:645:3 | CustomNew1 |
| calls.rb:643:9:643:10 | C1 | calls.rb:641:1:645:3 | CustomNew1 |
| calls.rb:643:9:643:14 | ... | calls.rb:641:1:645:3 | CustomNew1 |
| calls.rb:643:9:643:14 | call to new | calls.rb:641:1:645:3 | CustomNew1 |
| calls.rb:647:1:647:10 | CustomNew1 | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:647:1:647:14 | call to new | calls.rb:1:1:667:52 | calls.rb |
@@ -1590,8 +1678,10 @@ enclosingModule
| calls.rb:650:5:652:7 | new | calls.rb:649:1:657:3 | CustomNew2 |
| calls.rb:650:9:650:12 | self | calls.rb:649:1:657:3 | CustomNew2 |
| calls.rb:651:9:651:12 | self | calls.rb:649:1:657:3 | CustomNew2 |
| calls.rb:651:9:651:21 | ... | calls.rb:649:1:657:3 | CustomNew2 |
| calls.rb:651:9:651:21 | call to allocate | calls.rb:649:1:657:3 | CustomNew2 |
| calls.rb:654:5:656:7 | instance | calls.rb:649:1:657:3 | CustomNew2 |
| calls.rb:655:9:655:34 | ... | calls.rb:649:1:657:3 | CustomNew2 |
| calls.rb:655:9:655:34 | call to puts | calls.rb:649:1:657:3 | CustomNew2 |
| calls.rb:655:9:655:34 | self | calls.rb:649:1:657:3 | CustomNew2 |
| calls.rb:655:14:655:34 | "CustomNew2#instance" | calls.rb:649:1:657:3 | CustomNew2 |
@@ -1605,11 +1695,13 @@ enclosingModule
| calls.rb:662:5:662:11 | Array | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:662:5:662:11 | [...] | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:662:5:662:11 | call to [] | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:662:5:664:7 | ... | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:662:5:664:7 | call to each | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:662:6:662:6 | 0 | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:662:8:662:8 | 1 | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:662:10:662:10 | 2 | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:662:18:664:7 | do ... end | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:663:9:663:9 | ... | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:663:9:663:9 | x | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:667:1:667:26 | ( ... ) | calls.rb:1:1:667:52 | calls.rb |
| calls.rb:667:1:667:35 | call to instance | calls.rb:1:1:667:52 | calls.rb |
@@ -1621,6 +1713,7 @@ enclosingModule
| element_reference.rb:2:5:4:7 | [] | element_reference.rb:1:1:5:3 | ClassWithElementRef |
| element_reference.rb:2:12:2:12 | x | element_reference.rb:1:1:5:3 | ClassWithElementRef |
| element_reference.rb:2:12:2:12 | x | element_reference.rb:1:1:5:3 | ClassWithElementRef |
| element_reference.rb:3:9:3:19 | ... | element_reference.rb:1:1:5:3 | ClassWithElementRef |
| element_reference.rb:3:9:3:19 | yield ... | element_reference.rb:1:1:5:3 | ClassWithElementRef |
| element_reference.rb:3:15:3:15 | x | element_reference.rb:1:1:5:3 | ClassWithElementRef |
| element_reference.rb:3:15:3:19 | ... + ... | element_reference.rb:1:1:5:3 | ClassWithElementRef |
@@ -1635,6 +1728,7 @@ enclosingModule
| element_reference.rb:9:6:9:19 | { ... } | element_reference.rb:1:1:13:4 | element_reference.rb |
| element_reference.rb:9:9:9:9 | x | element_reference.rb:1:1:13:4 | element_reference.rb |
| element_reference.rb:9:9:9:9 | x | element_reference.rb:1:1:13:4 | element_reference.rb |
| element_reference.rb:9:12:9:17 | ... | element_reference.rb:1:1:13:4 | element_reference.rb |
| element_reference.rb:9:12:9:17 | call to puts | element_reference.rb:1:1:13:4 | element_reference.rb |
| element_reference.rb:9:12:9:17 | self | element_reference.rb:1:1:13:4 | element_reference.rb |
| element_reference.rb:9:17:9:17 | x | element_reference.rb:1:1:13:4 | element_reference.rb |
@@ -1644,15 +1738,18 @@ enclosingModule
| element_reference.rb:11:6:13:3 | do ... end | element_reference.rb:1:1:13:4 | element_reference.rb |
| element_reference.rb:11:10:11:10 | x | element_reference.rb:1:1:13:4 | element_reference.rb |
| element_reference.rb:11:10:11:10 | x | element_reference.rb:1:1:13:4 | element_reference.rb |
| element_reference.rb:12:5:12:10 | ... | element_reference.rb:1:1:13:4 | element_reference.rb |
| element_reference.rb:12:5:12:10 | call to puts | element_reference.rb:1:1:13:4 | element_reference.rb |
| element_reference.rb:12:5:12:10 | self | element_reference.rb:1:1:13:4 | element_reference.rb |
| element_reference.rb:12:10:12:10 | x | element_reference.rb:1:1:13:4 | element_reference.rb |
| hello.rb:1:1:8:3 | EnglishWords | hello.rb:1:1:22:3 | hello.rb |
| hello.rb:2:5:4:7 | hello | hello.rb:1:1:8:3 | EnglishWords |
| hello.rb:3:9:3:22 | ... | hello.rb:1:1:8:3 | EnglishWords |
| hello.rb:3:9:3:22 | return | hello.rb:1:1:8:3 | EnglishWords |
| hello.rb:3:16:3:22 | "hello" | hello.rb:1:1:8:3 | EnglishWords |
| hello.rb:3:17:3:21 | hello | hello.rb:1:1:8:3 | EnglishWords |
| hello.rb:5:5:7:7 | world | hello.rb:1:1:8:3 | EnglishWords |
| hello.rb:6:9:6:22 | ... | hello.rb:1:1:8:3 | EnglishWords |
| hello.rb:6:9:6:22 | return | hello.rb:1:1:8:3 | EnglishWords |
| hello.rb:6:16:6:22 | "world" | hello.rb:1:1:8:3 | EnglishWords |
| hello.rb:6:17:6:21 | world | hello.rb:1:1:8:3 | EnglishWords |
@@ -1661,12 +1758,14 @@ enclosingModule
| hello.rb:12:5:12:24 | self | hello.rb:11:1:16:3 | Greeting |
| hello.rb:12:13:12:24 | EnglishWords | hello.rb:11:1:16:3 | Greeting |
| hello.rb:13:5:15:7 | message | hello.rb:11:1:16:3 | Greeting |
| hello.rb:14:9:14:20 | ... | hello.rb:11:1:16:3 | Greeting |
| hello.rb:14:9:14:20 | return | hello.rb:11:1:16:3 | Greeting |
| hello.rb:14:16:14:20 | call to hello | hello.rb:11:1:16:3 | Greeting |
| hello.rb:14:16:14:20 | self | hello.rb:11:1:16:3 | Greeting |
| hello.rb:18:1:22:3 | HelloWorld | hello.rb:1:1:22:3 | hello.rb |
| hello.rb:18:20:18:27 | Greeting | hello.rb:1:1:22:3 | hello.rb |
| hello.rb:19:5:21:7 | message | hello.rb:18:1:22:3 | HelloWorld |
| hello.rb:20:9:20:40 | ... | hello.rb:18:1:22:3 | HelloWorld |
| hello.rb:20:9:20:40 | return | hello.rb:18:1:22:3 | HelloWorld |
| hello.rb:20:16:20:20 | super call to message | hello.rb:18:1:22:3 | HelloWorld |
| hello.rb:20:16:20:26 | ... + ... | hello.rb:18:1:22:3 | HelloWorld |
@@ -1684,12 +1783,14 @@ enclosingModule
| instance_fields.rb:3:9:5:11 | create | instance_fields.rb:2:5:9:7 | class << ... |
| instance_fields.rb:4:13:4:18 | @field | instance_fields.rb:2:5:9:7 | class << ... |
| instance_fields.rb:4:13:4:18 | self | instance_fields.rb:2:5:9:7 | class << ... |
| instance_fields.rb:4:13:4:35 | ... | instance_fields.rb:2:5:9:7 | class << ... |
| instance_fields.rb:4:13:4:35 | ... = ... | instance_fields.rb:2:5:9:7 | class << ... |
| instance_fields.rb:4:22:4:31 | A_target | instance_fields.rb:2:5:9:7 | class << ... |
| instance_fields.rb:4:22:4:35 | call to new | instance_fields.rb:2:5:9:7 | class << ... |
| instance_fields.rb:6:9:8:11 | use | instance_fields.rb:2:5:9:7 | class << ... |
| instance_fields.rb:7:13:7:18 | @field | instance_fields.rb:2:5:9:7 | class << ... |
| instance_fields.rb:7:13:7:18 | self | instance_fields.rb:2:5:9:7 | class << ... |
| instance_fields.rb:7:13:7:25 | ... | instance_fields.rb:2:5:9:7 | class << ... |
| instance_fields.rb:7:13:7:25 | call to target | instance_fields.rb:2:5:9:7 | class << ... |
| instance_fields.rb:11:1:14:3 | A_target | instance_fields.rb:1:1:29:4 | instance_fields.rb |
| instance_fields.rb:12:5:13:7 | target | instance_fields.rb:11:1:14:3 | A_target |
@@ -1699,12 +1800,14 @@ enclosingModule
| instance_fields.rb:18:9:20:11 | create | instance_fields.rb:17:5:24:7 | class << ... |
| instance_fields.rb:19:13:19:18 | @field | instance_fields.rb:17:5:24:7 | class << ... |
| instance_fields.rb:19:13:19:18 | self | instance_fields.rb:17:5:24:7 | class << ... |
| instance_fields.rb:19:13:19:35 | ... | instance_fields.rb:17:5:24:7 | class << ... |
| instance_fields.rb:19:13:19:35 | ... = ... | instance_fields.rb:17:5:24:7 | class << ... |
| instance_fields.rb:19:22:19:31 | B_target | instance_fields.rb:17:5:24:7 | class << ... |
| instance_fields.rb:19:22:19:35 | call to new | instance_fields.rb:17:5:24:7 | class << ... |
| instance_fields.rb:21:9:23:11 | use | instance_fields.rb:17:5:24:7 | class << ... |
| instance_fields.rb:22:13:22:18 | @field | instance_fields.rb:17:5:24:7 | class << ... |
| instance_fields.rb:22:13:22:18 | self | instance_fields.rb:17:5:24:7 | class << ... |
| instance_fields.rb:22:13:22:25 | ... | instance_fields.rb:17:5:24:7 | class << ... |
| instance_fields.rb:22:13:22:25 | call to target | instance_fields.rb:17:5:24:7 | class << ... |
| instance_fields.rb:26:1:29:3 | B_target | instance_fields.rb:1:1:29:4 | instance_fields.rb |
| instance_fields.rb:27:5:28:7 | target | instance_fields.rb:26:1:29:3 | B_target |
@@ -1784,6 +1887,7 @@ enclosingModule
| modules.rb:90:3:90:8 | Object | modules.rb:88:1:93:3 | IncludeTest |
| modules.rb:90:3:90:38 | call to module_eval | modules.rb:88:1:93:3 | IncludeTest |
| modules.rb:90:22:90:38 | { ... } | modules.rb:88:1:93:3 | IncludeTest |
| modules.rb:90:24:90:36 | ... | modules.rb:88:1:93:3 | IncludeTest |
| modules.rb:90:24:90:36 | call to prepend | modules.rb:88:1:93:3 | IncludeTest |
| modules.rb:90:24:90:36 | self | modules.rb:88:1:93:3 | IncludeTest |
| modules.rb:90:32:90:36 | Other | modules.rb:88:1:93:3 | IncludeTest |
@@ -1908,6 +2012,7 @@ enclosingModule
| private.rb:83:3:85:5 | call to private | private.rb:82:1:94:3 | PrivateOverride1 |
| private.rb:83:3:85:5 | self | private.rb:82:1:94:3 | PrivateOverride1 |
| private.rb:83:11:85:5 | m1 | private.rb:82:1:94:3 | PrivateOverride1 |
| private.rb:84:7:84:32 | ... | private.rb:82:1:94:3 | PrivateOverride1 |
| private.rb:84:7:84:32 | call to puts | private.rb:82:1:94:3 | PrivateOverride1 |
| private.rb:84:7:84:32 | self | private.rb:82:1:94:3 | PrivateOverride1 |
| private.rb:84:12:84:32 | "PrivateOverride1#m1" | private.rb:82:1:94:3 | PrivateOverride1 |
@@ -1915,11 +2020,13 @@ enclosingModule
| private.rb:87:3:89:5 | call to private | private.rb:82:1:94:3 | PrivateOverride1 |
| private.rb:87:3:89:5 | self | private.rb:82:1:94:3 | PrivateOverride1 |
| private.rb:87:11:89:5 | m2 | private.rb:82:1:94:3 | PrivateOverride1 |
| private.rb:88:7:88:32 | ... | private.rb:82:1:94:3 | PrivateOverride1 |
| private.rb:88:7:88:32 | call to puts | private.rb:82:1:94:3 | PrivateOverride1 |
| private.rb:88:7:88:32 | self | private.rb:82:1:94:3 | PrivateOverride1 |
| private.rb:88:12:88:32 | "PrivateOverride1#m2" | private.rb:82:1:94:3 | PrivateOverride1 |
| private.rb:88:13:88:31 | PrivateOverride1#m2 | private.rb:82:1:94:3 | PrivateOverride1 |
| private.rb:91:3:93:5 | call_m1 | private.rb:82:1:94:3 | PrivateOverride1 |
| private.rb:92:7:92:8 | ... | private.rb:82:1:94:3 | PrivateOverride1 |
| private.rb:92:7:92:8 | call to m1 | private.rb:82:1:94:3 | PrivateOverride1 |
| private.rb:92:7:92:8 | self | private.rb:82:1:94:3 | PrivateOverride1 |
| private.rb:96:1:102:3 | PrivateOverride2 | private.rb:1:1:105:40 | private.rb |
@@ -1929,6 +2036,7 @@ enclosingModule
| private.rb:97:11:101:5 | m1 | private.rb:96:1:102:3 | PrivateOverride2 |
| private.rb:98:7:98:32 | call to puts | private.rb:96:1:102:3 | PrivateOverride2 |
| private.rb:98:7:98:32 | self | private.rb:96:1:102:3 | PrivateOverride2 |
| private.rb:98:7:100:45 | ... | private.rb:96:1:102:3 | PrivateOverride2 |
| private.rb:98:12:98:32 | "PrivateOverride2#m1" | private.rb:96:1:102:3 | PrivateOverride2 |
| private.rb:98:13:98:31 | PrivateOverride2#m1 | private.rb:96:1:102:3 | PrivateOverride2 |
| private.rb:99:7:99:8 | call to m2 | private.rb:96:1:102:3 | PrivateOverride2 |
@@ -1950,8 +2058,10 @@ enclosingModule
| toplevel_self_singleton.rb:8:1:16:3 | self | toplevel_self_singleton.rb:1:1:34:4 | toplevel_self_singleton.rb |
| toplevel_self_singleton.rb:8:14:16:3 | do ... end | toplevel_self_singleton.rb:1:1:34:4 | toplevel_self_singleton.rb |
| toplevel_self_singleton.rb:9:5:11:7 | method_in_block | toplevel_self_singleton.rb:1:1:34:4 | toplevel_self_singleton.rb |
| toplevel_self_singleton.rb:9:5:15:7 | ... | toplevel_self_singleton.rb:1:1:34:4 | toplevel_self_singleton.rb |
| toplevel_self_singleton.rb:10:9:10:27 | call to ab_singleton_method | toplevel_self_singleton.rb:1:1:34:4 | toplevel_self_singleton.rb |
| toplevel_self_singleton.rb:10:9:10:27 | self | toplevel_self_singleton.rb:1:1:34:4 | toplevel_self_singleton.rb |
| toplevel_self_singleton.rb:10:9:10:60 | ... | toplevel_self_singleton.rb:1:1:34:4 | toplevel_self_singleton.rb |
| toplevel_self_singleton.rb:12:5:12:7 | obj | toplevel_self_singleton.rb:1:1:34:4 | toplevel_self_singleton.rb |
| toplevel_self_singleton.rb:12:5:12:12 | ... = ... | toplevel_self_singleton.rb:1:1:34:4 | toplevel_self_singleton.rb |
| toplevel_self_singleton.rb:12:9:12:12 | self | toplevel_self_singleton.rb:1:1:34:4 | toplevel_self_singleton.rb |
@@ -1959,6 +2069,7 @@ enclosingModule
| toplevel_self_singleton.rb:13:9:13:11 | obj | toplevel_self_singleton.rb:1:1:34:4 | toplevel_self_singleton.rb |
| toplevel_self_singleton.rb:14:9:14:27 | call to ab_singleton_method | toplevel_self_singleton.rb:1:1:34:4 | toplevel_self_singleton.rb |
| toplevel_self_singleton.rb:14:9:14:27 | self | toplevel_self_singleton.rb:1:1:34:4 | toplevel_self_singleton.rb |
| toplevel_self_singleton.rb:14:9:14:60 | ... | toplevel_self_singleton.rb:1:1:34:4 | toplevel_self_singleton.rb |
| toplevel_self_singleton.rb:18:1:18:8 | MyStruct | toplevel_self_singleton.rb:1:1:34:4 | toplevel_self_singleton.rb |
| toplevel_self_singleton.rb:18:1:22:1 | ... = ... | toplevel_self_singleton.rb:1:1:34:4 | toplevel_self_singleton.rb |
| toplevel_self_singleton.rb:18:12:18:17 | Struct | toplevel_self_singleton.rb:1:1:34:4 | toplevel_self_singleton.rb |
@@ -1968,10 +2079,12 @@ enclosingModule
| toplevel_self_singleton.rb:18:29:18:32 | :bar | toplevel_self_singleton.rb:1:1:34:4 | toplevel_self_singleton.rb |
| toplevel_self_singleton.rb:18:29:18:32 | bar | toplevel_self_singleton.rb:1:1:34:4 | toplevel_self_singleton.rb |
| toplevel_self_singleton.rb:18:35:22:1 | { ... } | toplevel_self_singleton.rb:1:1:34:4 | toplevel_self_singleton.rb |
| toplevel_self_singleton.rb:19:5:21:7 | ... | toplevel_self_singleton.rb:1:1:34:4 | toplevel_self_singleton.rb |
| toplevel_self_singleton.rb:19:5:21:7 | method_in_struct | toplevel_self_singleton.rb:1:1:34:4 | toplevel_self_singleton.rb |
| toplevel_self_singleton.rb:19:9:19:12 | self | toplevel_self_singleton.rb:1:1:34:4 | toplevel_self_singleton.rb |
| toplevel_self_singleton.rb:20:9:20:27 | call to ab_singleton_method | toplevel_self_singleton.rb:1:1:34:4 | toplevel_self_singleton.rb |
| toplevel_self_singleton.rb:20:9:20:27 | self | toplevel_self_singleton.rb:1:1:34:4 | toplevel_self_singleton.rb |
| toplevel_self_singleton.rb:20:9:20:60 | ... | toplevel_self_singleton.rb:1:1:34:4 | toplevel_self_singleton.rb |
| toplevel_self_singleton.rb:24:1:34:3 | Good | toplevel_self_singleton.rb:1:1:34:4 | toplevel_self_singleton.rb |
| toplevel_self_singleton.rb:25:5:33:7 | class << ... | toplevel_self_singleton.rb:24:1:34:3 | Good |
| toplevel_self_singleton.rb:25:14:25:17 | self | toplevel_self_singleton.rb:24:1:34:3 | Good |
@@ -1979,6 +2092,7 @@ enclosingModule
| toplevel_self_singleton.rb:29:9:32:11 | call_you | toplevel_self_singleton.rb:25:5:33:7 | class << ... |
| toplevel_self_singleton.rb:30:13:30:19 | call to call_me | toplevel_self_singleton.rb:25:5:33:7 | class << ... |
| toplevel_self_singleton.rb:30:13:30:19 | self | toplevel_self_singleton.rb:25:5:33:7 | class << ... |
| toplevel_self_singleton.rb:30:13:31:20 | ... | toplevel_self_singleton.rb:25:5:33:7 | class << ... |
| toplevel_self_singleton.rb:31:13:31:20 | call to call_you | toplevel_self_singleton.rb:25:5:33:7 | class << ... |
| toplevel_self_singleton.rb:31:13:31:20 | self | toplevel_self_singleton.rb:25:5:33:7 | class << ... |
| unresolved_subclass.rb:1:1:2:3 | ResolvableBaseClass | unresolved_subclass.rb:1:1:22:4 | unresolved_subclass.rb |