mirror of
https://github.com/github/codeql.git
synced 2026-04-26 01:05:15 +02:00
Ruby: Improve desugaring of for loops
This commit is contained in:
@@ -48,7 +48,7 @@ class UnaryLogicalOperation extends UnaryOperation, TUnaryLogicalOperation { }
|
||||
* not params.empty?
|
||||
* ```
|
||||
*/
|
||||
class NotExpr extends UnaryLogicalOperation, TNotExpr {
|
||||
class NotExpr extends UnaryLogicalOperation instanceof NotExprImpl {
|
||||
final override string getAPrimaryQlClass() { result = "NotExpr" }
|
||||
}
|
||||
|
||||
@@ -118,7 +118,7 @@ class ComplementExpr extends UnaryBitwiseOperation, TComplementExpr {
|
||||
* defined? some_method
|
||||
* ```
|
||||
*/
|
||||
class DefinedExpr extends UnaryOperation, TDefinedExpr {
|
||||
class DefinedExpr extends UnaryOperation instanceof DefinedExprImpl {
|
||||
final override string getAPrimaryQlClass() { result = "DefinedExpr" }
|
||||
}
|
||||
|
||||
|
||||
@@ -123,7 +123,8 @@ private module Cached {
|
||||
TConstantWriteAccessSynth(Ast::AstNode parent, int i, string value) {
|
||||
mkSynthChild(ConstantWriteAccessKind(value), parent, i)
|
||||
} or
|
||||
TDefinedExpr(Ruby::Unary g) { g instanceof @ruby_unary_definedquestion } or
|
||||
TDefinedExprReal(Ruby::Unary g) { g instanceof @ruby_unary_definedquestion } or
|
||||
TDefinedExprSynth(Ast::AstNode parent, int i) { mkSynthChild(DefinedExprKind(), parent, i) } or
|
||||
TDelimitedSymbolLiteral(Ruby::DelimitedSymbol g) or
|
||||
TDestructuredLeftAssignment(Ruby::DestructuredLeftAssignment g) {
|
||||
not strictcount(int i | exists(g.getParent().(Ruby::LeftAssignmentList).getChild(i))) = 1
|
||||
@@ -228,7 +229,8 @@ private module Cached {
|
||||
TNilLiteralReal(Ruby::Nil g) or
|
||||
TNilLiteralSynth(Ast::AstNode parent, int i) { mkSynthChild(NilLiteralKind(), parent, i) } or
|
||||
TNoRegExpMatchExpr(Ruby::Binary g) { g instanceof @ruby_binary_bangtilde } or
|
||||
TNotExpr(Ruby::Unary g) { g instanceof @ruby_unary_bang or g instanceof @ruby_unary_not } or
|
||||
TNotExprReal(Ruby::Unary g) { g instanceof @ruby_unary_bang or g instanceof @ruby_unary_not } or
|
||||
TNotExprSynth(Ast::AstNode parent, int i) { mkSynthChild(NotExprKind(), parent, i) } or
|
||||
TOptionalParameter(Ruby::OptionalParameter g) or
|
||||
TPair(Ruby::Pair g) or
|
||||
TParenthesizedExpr(Ruby::ParenthesizedStatements g) or
|
||||
@@ -354,21 +356,21 @@ private module Cached {
|
||||
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 TDefinedExpr 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 THashSplatExpr 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 TNotExpr or TOptionalParameter or TPair or
|
||||
TParenthesizedExpr or TParenthesizedPattern or TRShiftExprReal or TRangeLiteralReal or
|
||||
TRationalLiteral or TRedoStmt or TRegExpLiteral or TRegExpMatchExpr 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
|
||||
THashSplatExpr 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
|
||||
TPair 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
|
||||
@@ -438,7 +440,7 @@ private module Cached {
|
||||
n = TClassVariableAccessReal(result, _) or
|
||||
n = TComplementExpr(result) or
|
||||
n = TComplexLiteral(result) or
|
||||
n = TDefinedExpr(result) or
|
||||
n = TDefinedExprReal(result) or
|
||||
n = TDelimitedSymbolLiteral(result) or
|
||||
n = TDestructuredLeftAssignment(result) or
|
||||
n = TDivExprReal(result) or
|
||||
@@ -495,7 +497,7 @@ private module Cached {
|
||||
n = TNextStmt(result) or
|
||||
n = TNilLiteralReal(result) or
|
||||
n = TNoRegExpMatchExpr(result) or
|
||||
n = TNotExpr(result) or
|
||||
n = TNotExprReal(result) or
|
||||
n = TOptionalParameter(result) or
|
||||
n = TPair(result) or
|
||||
n = TParenthesizedExpr(result) or
|
||||
@@ -585,6 +587,8 @@ private module Cached {
|
||||
or
|
||||
result = TConstantWriteAccessSynth(parent, i, _)
|
||||
or
|
||||
result = TDefinedExprSynth(parent, i)
|
||||
or
|
||||
result = TDivExprSynth(parent, i)
|
||||
or
|
||||
result = TElseSynth(parent, i)
|
||||
@@ -617,6 +621,8 @@ private module Cached {
|
||||
or
|
||||
result = TNilLiteralSynth(parent, i)
|
||||
or
|
||||
result = TNotExprSynth(parent, i)
|
||||
or
|
||||
result = TRangeLiteralSynth(parent, i, _)
|
||||
or
|
||||
result = TRShiftExprSynth(parent, i)
|
||||
@@ -789,10 +795,14 @@ class TNamespace = TClassDeclaration or TModuleDeclaration;
|
||||
|
||||
class TOperation = TUnaryOperation or TBinaryOperation or TAssignment;
|
||||
|
||||
class TDefinedExpr = TDefinedExprReal or TDefinedExprSynth;
|
||||
|
||||
class TUnaryOperation =
|
||||
TUnaryLogicalOperation or TUnaryArithmeticOperation or TUnaryBitwiseOperation or TDefinedExpr or
|
||||
TSplatExpr or THashSplatExpr;
|
||||
|
||||
class TNotExpr = TNotExprReal or TNotExprSynth;
|
||||
|
||||
class TUnaryLogicalOperation = TNotExpr;
|
||||
|
||||
class TUnaryArithmeticOperation = TUnaryPlusExpr or TUnaryMinusExpr;
|
||||
|
||||
@@ -35,6 +35,16 @@ class UnaryOperationGenerated extends UnaryOperationImpl {
|
||||
final override string getOperatorImpl() { result = g.getOperator() }
|
||||
}
|
||||
|
||||
abstract class NotExprImpl extends UnaryOperationImpl, TNotExpr { }
|
||||
|
||||
class NotExprReal extends NotExprImpl, UnaryOperationGenerated, TNotExprReal { }
|
||||
|
||||
class NotExprSynth extends NotExprImpl, TNotExprSynth {
|
||||
final override string getOperatorImpl() { result = "!" }
|
||||
|
||||
final override Expr getOperandImpl() { synthChild(this, 0, result) }
|
||||
}
|
||||
|
||||
class SplatExprReal extends UnaryOperationImpl, TSplatExprReal {
|
||||
private Ruby::SplatArgument g;
|
||||
|
||||
@@ -67,6 +77,16 @@ class HashSplatExprImpl extends UnaryOperationImpl, THashSplatExpr {
|
||||
final override string getOperatorImpl() { result = "**" }
|
||||
}
|
||||
|
||||
abstract class DefinedExprImpl extends UnaryOperationImpl, TDefinedExpr { }
|
||||
|
||||
class DefinedExprReal extends DefinedExprImpl, UnaryOperationGenerated, TDefinedExprReal { }
|
||||
|
||||
class DefinedExprSynth extends DefinedExprImpl, TDefinedExprSynth {
|
||||
final override string getOperatorImpl() { result = "defined?" }
|
||||
|
||||
final override Expr getOperandImpl() { synthChild(this, 0, result) }
|
||||
}
|
||||
|
||||
abstract class BinaryOperationImpl extends OperationImpl, MethodCallImpl, TBinaryOperation {
|
||||
abstract Stmt getLeftOperandImpl();
|
||||
|
||||
|
||||
@@ -21,6 +21,7 @@ newtype SynthKind =
|
||||
BraceBlockKind() or
|
||||
CaseMatchKind() or
|
||||
ClassVariableAccessKind(ClassVariable v) or
|
||||
DefinedExprKind() or
|
||||
DivExprKind() or
|
||||
ElseKind() or
|
||||
ExponentExprKind() or
|
||||
@@ -40,6 +41,7 @@ newtype SynthKind =
|
||||
ModuloExprKind() or
|
||||
MulExprKind() or
|
||||
NilLiteralKind() or
|
||||
NotExprKind() or
|
||||
RangeLiteralKind(boolean inclusive) { inclusive in [false, true] } or
|
||||
RShiftExprKind() or
|
||||
SimpleParameterKind() or
|
||||
@@ -1258,6 +1260,7 @@ private module HashLiteralDesugar {
|
||||
* ```
|
||||
* desugars to, roughly,
|
||||
* ```rb
|
||||
* if not defined? x then x = nil end
|
||||
* xs.each { |__synth__0| x = __synth__0; <loop_body> }
|
||||
* ```
|
||||
*
|
||||
@@ -1267,53 +1270,137 @@ private module HashLiteralDesugar {
|
||||
* scoped to the synthesized block.
|
||||
*/
|
||||
private module ForLoopDesugar {
|
||||
private Ruby::AstNode getForLoopPatternChild(Ruby::For for) {
|
||||
result = for.getPattern()
|
||||
or
|
||||
result.getParent() = getForLoopPatternChild(for)
|
||||
}
|
||||
|
||||
/** Holds if `v` is the `i`th iteration variable of `for`. */
|
||||
private predicate forLoopVariable(Ruby::For for, VariableReal v, int i) {
|
||||
v =
|
||||
rank[i + 1](VariableReal v0, Ruby::AstNode n, Location l |
|
||||
n = getForLoopPatternChild(for) and
|
||||
l = n.getLocation() and
|
||||
access(n, v0)
|
||||
|
|
||||
v0 order by l.getStartLine(), l.getStartColumn()
|
||||
)
|
||||
}
|
||||
|
||||
/** Gets the number of iteration variables of `for`. */
|
||||
private int forLoopVariableCount(Ruby::For for) {
|
||||
result = count(int j | forLoopVariable(for, _, j))
|
||||
}
|
||||
|
||||
private Ruby::For toTsFor(ForExpr for) { for = TForExpr(result) }
|
||||
|
||||
/**
|
||||
* Synthesizes an assignment
|
||||
* ```rb
|
||||
* if not defined? v then v = nil end
|
||||
* ```
|
||||
* anchored at index `rootIndex` of `root`.
|
||||
*/
|
||||
bindingset[root, rootIndex, v]
|
||||
private predicate nilAssignUndefined(
|
||||
AstNode root, int rootIndex, AstNode parent, int i, Child child, VariableReal v
|
||||
) {
|
||||
parent = root and
|
||||
i = rootIndex and
|
||||
child = SynthChild(IfKind())
|
||||
or
|
||||
exists(AstNode if_ | if_ = TIfSynth(root, rootIndex) |
|
||||
parent = if_ and
|
||||
i = 0 and
|
||||
child = SynthChild(NotExprKind())
|
||||
or
|
||||
exists(AstNode not_ | not_ = TNotExprSynth(if_, 0) |
|
||||
parent = not_ and
|
||||
i = 0 and
|
||||
child = SynthChild(DefinedExprKind())
|
||||
or
|
||||
parent = TDefinedExprSynth(not_, 0) and
|
||||
i = 0 and
|
||||
child = SynthChild(LocalVariableAccessRealKind(v))
|
||||
)
|
||||
or
|
||||
parent = if_ and
|
||||
i = 1 and
|
||||
child = SynthChild(AssignExprKind())
|
||||
or
|
||||
parent = TAssignExprSynth(if_, 1) and
|
||||
(
|
||||
i = 0 and
|
||||
child = SynthChild(LocalVariableAccessRealKind(v))
|
||||
or
|
||||
i = 1 and
|
||||
child = SynthChild(NilLiteralKind())
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
pragma[nomagic]
|
||||
private predicate forLoopSynthesis(AstNode parent, int i, Child child) {
|
||||
exists(ForExpr for |
|
||||
// each call
|
||||
parent = for and
|
||||
i = -1 and
|
||||
child = SynthChild(MethodCallKind("each", false, 0))
|
||||
child = SynthChild(StmtSequenceKind())
|
||||
or
|
||||
exists(MethodCall eachCall | eachCall = TMethodCallSynth(for, -1, "each", false, 0) |
|
||||
// receiver
|
||||
parent = eachCall and
|
||||
i = 0 and
|
||||
child = childRef(for.getValue()) // value is the Enumerable
|
||||
exists(AstNode seq | seq = TStmtSequenceSynth(for, -1) |
|
||||
exists(VariableReal v, int j | forLoopVariable(toTsFor(for), v, j) |
|
||||
nilAssignUndefined(seq, j, parent, i, child, v)
|
||||
)
|
||||
or
|
||||
parent = eachCall and
|
||||
i = 1 and
|
||||
child = SynthChild(BraceBlockKind())
|
||||
or
|
||||
exists(Block block | block = TBraceBlockSynth(eachCall, 1) |
|
||||
// block params
|
||||
parent = block and
|
||||
i = 0 and
|
||||
child = SynthChild(SimpleParameterKind())
|
||||
exists(int numberOfVars | numberOfVars = forLoopVariableCount(toTsFor(for)) |
|
||||
// each call
|
||||
parent = seq and
|
||||
i = numberOfVars and
|
||||
child = SynthChild(MethodCallKind("each", false, 0))
|
||||
or
|
||||
exists(SimpleParameter param | param = TSimpleParameterSynth(block, 0) |
|
||||
parent = param and
|
||||
exists(MethodCall eachCall |
|
||||
eachCall = TMethodCallSynth(seq, numberOfVars, "each", false, 0)
|
||||
|
|
||||
// receiver
|
||||
parent = eachCall and
|
||||
i = 0 and
|
||||
child = SynthChild(LocalVariableAccessSynthKind(TLocalVariableSynth(param, 0)))
|
||||
child = childRef(for.getValue()) // value is the Enumerable
|
||||
or
|
||||
// assignment to pattern from for loop to synth parameter
|
||||
parent = block and
|
||||
parent = eachCall and
|
||||
i = 1 and
|
||||
child = SynthChild(AssignExprKind())
|
||||
child = SynthChild(BraceBlockKind())
|
||||
or
|
||||
parent = TAssignExprSynth(block, 1) and
|
||||
(
|
||||
exists(Block block | block = TBraceBlockSynth(eachCall, 1) |
|
||||
// block params
|
||||
parent = block and
|
||||
i = 0 and
|
||||
child = childRef(for.getPattern())
|
||||
child = SynthChild(SimpleParameterKind())
|
||||
or
|
||||
i = 1 and
|
||||
child = SynthChild(LocalVariableAccessSynthKind(TLocalVariableSynth(param, 0)))
|
||||
exists(SimpleParameter param | param = TSimpleParameterSynth(block, 0) |
|
||||
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
|
||||
child = SynthChild(AssignExprKind())
|
||||
or
|
||||
parent = TAssignExprSynth(block, 1) and
|
||||
(
|
||||
i = 0 and
|
||||
child = childRef(for.getPattern())
|
||||
or
|
||||
i = 1 and
|
||||
child = SynthChild(LocalVariableAccessSynthKind(TLocalVariableSynth(param, 0)))
|
||||
)
|
||||
)
|
||||
or
|
||||
// rest of block body
|
||||
parent = block and
|
||||
child = childRef(for.getBody().(Do).getStmt(i - 2))
|
||||
)
|
||||
)
|
||||
or
|
||||
// rest of block body
|
||||
parent = block and
|
||||
child = childRef(for.getBody().(Do).getStmt(i - 2))
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
@@ -24,29 +24,45 @@ calls/calls.rb:
|
||||
# 67| getAnOperand/getArgument/getRightOperand: [MethodCall] call to bar
|
||||
# 67| getReceiver: [ConstantReadAccess] X
|
||||
# 226| [ForExpr] for ... in ...
|
||||
# 226| getDesugared: [MethodCall] call to each
|
||||
# 226| getReceiver: [MethodCall] call to bar
|
||||
# 226| getReceiver: [SelfVariableAccess] self
|
||||
# 226| getBlock: [BraceBlock] { ... }
|
||||
# 226| getParameter: [SimpleParameter] __synth__0__1
|
||||
# 226| getDefiningAccess: [LocalVariableAccess] __synth__0__1
|
||||
# 226| getStmt: [AssignExpr] ... = ...
|
||||
# 226| getDesugared: [StmtSequence] ...
|
||||
# 226| getStmt: [IfExpr] if ...
|
||||
# 226| getCondition: [NotExpr] ! ...
|
||||
# 226| getAnOperand/getOperand/getReceiver: [DefinedExpr] defined? ...
|
||||
# 226| getAnOperand/getOperand/getReceiver: [LocalVariableAccess] x
|
||||
# 226| getBranch/getThen: [AssignExpr] ... = ...
|
||||
# 226| getAnOperand/getLeftOperand: [LocalVariableAccess] x
|
||||
# 226| getAnOperand/getRightOperand: [LocalVariableAccess] __synth__0__1
|
||||
# 227| getStmt: [MethodCall] call to baz
|
||||
# 227| getReceiver: [SelfVariableAccess] self
|
||||
# 226| getAnOperand/getRightOperand: [NilLiteral] nil
|
||||
# 226| getStmt: [MethodCall] call to each
|
||||
# 226| getReceiver: [MethodCall] call to bar
|
||||
# 226| getReceiver: [SelfVariableAccess] self
|
||||
# 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: [SelfVariableAccess] self
|
||||
# 229| [ForExpr] for ... in ...
|
||||
# 229| getDesugared: [MethodCall] call to each
|
||||
# 229| getReceiver: [MethodCall] call to bar
|
||||
# 229| getReceiver: [ConstantReadAccess] X
|
||||
# 229| getBlock: [BraceBlock] { ... }
|
||||
# 229| getParameter: [SimpleParameter] __synth__0__1
|
||||
# 229| getDefiningAccess: [LocalVariableAccess] __synth__0__1
|
||||
# 229| getStmt: [AssignExpr] ... = ...
|
||||
# 229| getDesugared: [StmtSequence] ...
|
||||
# 229| getStmt: [IfExpr] if ...
|
||||
# 229| getCondition: [NotExpr] ! ...
|
||||
# 229| getAnOperand/getOperand/getReceiver: [DefinedExpr] defined? ...
|
||||
# 229| getAnOperand/getOperand/getReceiver: [LocalVariableAccess] x
|
||||
# 229| getBranch/getThen: [AssignExpr] ... = ...
|
||||
# 229| getAnOperand/getLeftOperand: [LocalVariableAccess] x
|
||||
# 229| getAnOperand/getRightOperand: [LocalVariableAccess] __synth__0__1
|
||||
# 230| getStmt: [MethodCall] call to baz
|
||||
# 230| getReceiver: [ConstantReadAccess] X
|
||||
# 229| getAnOperand/getRightOperand: [NilLiteral] nil
|
||||
# 229| getStmt: [MethodCall] call to each
|
||||
# 229| getReceiver: [MethodCall] call to bar
|
||||
# 229| getReceiver: [ConstantReadAccess] X
|
||||
# 229| getBlock: [BraceBlock] { ... }
|
||||
# 229| getParameter: [SimpleParameter] __synth__0__1
|
||||
# 229| getDefiningAccess: [LocalVariableAccess] __synth__0__1
|
||||
# 229| getStmt: [AssignExpr] ... = ...
|
||||
# 229| getAnOperand/getLeftOperand: [LocalVariableAccess] x
|
||||
# 229| getAnOperand/getRightOperand: [LocalVariableAccess] __synth__0__1
|
||||
# 230| getStmt: [MethodCall] call to baz
|
||||
# 230| getReceiver: [ConstantReadAccess] X
|
||||
# 249| [HashLiteral] {...}
|
||||
# 249| getDesugared: [MethodCall] call to []
|
||||
# 249| getReceiver: [ConstantReadAccess] Hash
|
||||
@@ -245,52 +261,74 @@ calls/calls.rb:
|
||||
# 322| getArgument: [LocalVariableAccess] __synth__4
|
||||
# 322| getStmt: [LocalVariableAccess] __synth__4
|
||||
# 342| [ForExpr] for ... in ...
|
||||
# 342| getDesugared: [MethodCall] call to each
|
||||
# 342| getReceiver: [ArrayLiteral] [...]
|
||||
# 342| getDesugared: [MethodCall] call to []
|
||||
# 342| getReceiver: [ConstantReadAccess] Array
|
||||
# 342| getArgument: [ArrayLiteral] [...]
|
||||
# 342| getDesugared: [MethodCall] call to []
|
||||
# 342| getReceiver: [ConstantReadAccess] Array
|
||||
# 342| getArgument: [IntegerLiteral] 1
|
||||
# 342| getArgument: [IntegerLiteral] 2
|
||||
# 342| getArgument: [IntegerLiteral] 3
|
||||
# 342| getArgument: [ArrayLiteral] [...]
|
||||
# 342| getDesugared: [MethodCall] call to []
|
||||
# 342| getReceiver: [ConstantReadAccess] Array
|
||||
# 342| getArgument: [IntegerLiteral] 4
|
||||
# 342| getArgument: [IntegerLiteral] 5
|
||||
# 342| getArgument: [IntegerLiteral] 6
|
||||
# 342| getBlock: [BraceBlock] { ... }
|
||||
# 342| getParameter: [SimpleParameter] __synth__0__1
|
||||
# 342| getDefiningAccess: [LocalVariableAccess] __synth__0__1
|
||||
# 342| getStmt: [AssignExpr] ... = ...
|
||||
# 342| getDesugared: [StmtSequence] ...
|
||||
# 342| getStmt: [AssignExpr] ... = ...
|
||||
# 342| getAnOperand/getLeftOperand: [LocalVariableAccess] __synth__3__1
|
||||
# 342| getAnOperand/getRightOperand: [SplatExpr] * ...
|
||||
# 342| getAnOperand/getOperand/getReceiver: [LocalVariableAccess] __synth__0__1
|
||||
# 342| getStmt: [AssignExpr] ... = ...
|
||||
# 342| getAnOperand/getLeftOperand: [LocalVariableAccess] x
|
||||
# 342| getAnOperand/getRightOperand: [MethodCall] call to []
|
||||
# 342| getReceiver: [LocalVariableAccess] __synth__3__1
|
||||
# 342| getArgument: [IntegerLiteral] 0
|
||||
# 342| getStmt: [AssignExpr] ... = ...
|
||||
# 342| getAnOperand/getLeftOperand: [LocalVariableAccess] y
|
||||
# 342| getAnOperand/getRightOperand: [MethodCall] call to []
|
||||
# 342| getReceiver: [LocalVariableAccess] __synth__3__1
|
||||
# 342| getDesugared: [StmtSequence] ...
|
||||
# 342| getStmt: [IfExpr] if ...
|
||||
# 342| getCondition: [NotExpr] ! ...
|
||||
# 342| getAnOperand/getOperand/getReceiver: [DefinedExpr] defined? ...
|
||||
# 342| getAnOperand/getOperand/getReceiver: [LocalVariableAccess] x
|
||||
# 342| getBranch/getThen: [AssignExpr] ... = ...
|
||||
# 342| getAnOperand/getLeftOperand: [LocalVariableAccess] x
|
||||
# 342| getAnOperand/getRightOperand: [NilLiteral] nil
|
||||
# 342| getStmt: [IfExpr] if ...
|
||||
# 342| getCondition: [NotExpr] ! ...
|
||||
# 342| getAnOperand/getOperand/getReceiver: [DefinedExpr] defined? ...
|
||||
# 342| getAnOperand/getOperand/getReceiver: [LocalVariableAccess] y
|
||||
# 342| getBranch/getThen: [AssignExpr] ... = ...
|
||||
# 342| getAnOperand/getLeftOperand: [LocalVariableAccess] y
|
||||
# 342| getAnOperand/getRightOperand: [NilLiteral] nil
|
||||
# 342| getStmt: [IfExpr] if ...
|
||||
# 342| getCondition: [NotExpr] ! ...
|
||||
# 342| getAnOperand/getOperand/getReceiver: [DefinedExpr] defined? ...
|
||||
# 342| getAnOperand/getOperand/getReceiver: [LocalVariableAccess] z
|
||||
# 342| getBranch/getThen: [AssignExpr] ... = ...
|
||||
# 342| getAnOperand/getLeftOperand: [LocalVariableAccess] z
|
||||
# 342| getAnOperand/getRightOperand: [NilLiteral] nil
|
||||
# 342| getStmt: [MethodCall] call to each
|
||||
# 342| getReceiver: [ArrayLiteral] [...]
|
||||
# 342| getDesugared: [MethodCall] call to []
|
||||
# 342| getReceiver: [ConstantReadAccess] Array
|
||||
# 342| getArgument: [ArrayLiteral] [...]
|
||||
# 342| getDesugared: [MethodCall] call to []
|
||||
# 342| getReceiver: [ConstantReadAccess] Array
|
||||
# 342| getArgument: [IntegerLiteral] 1
|
||||
# 342| getStmt: [AssignExpr] ... = ...
|
||||
# 342| getAnOperand/getLeftOperand: [LocalVariableAccess] z
|
||||
# 342| getAnOperand/getRightOperand: [MethodCall] call to []
|
||||
# 342| getReceiver: [LocalVariableAccess] __synth__3__1
|
||||
# 342| getArgument: [IntegerLiteral] 2
|
||||
# 342| getAnOperand/getLeftOperand: [DestructuredLhsExpr] (..., ...)
|
||||
# 343| getStmt: [MethodCall] call to foo
|
||||
# 343| getReceiver: [SelfVariableAccess] self
|
||||
# 343| getArgument: [LocalVariableAccess] x
|
||||
# 343| getArgument: [LocalVariableAccess] y
|
||||
# 343| getArgument: [LocalVariableAccess] z
|
||||
# 342| getArgument: [IntegerLiteral] 3
|
||||
# 342| getArgument: [ArrayLiteral] [...]
|
||||
# 342| getDesugared: [MethodCall] call to []
|
||||
# 342| getReceiver: [ConstantReadAccess] Array
|
||||
# 342| getArgument: [IntegerLiteral] 4
|
||||
# 342| getArgument: [IntegerLiteral] 5
|
||||
# 342| getArgument: [IntegerLiteral] 6
|
||||
# 342| getBlock: [BraceBlock] { ... }
|
||||
# 342| getParameter: [SimpleParameter] __synth__0__1
|
||||
# 342| getDefiningAccess: [LocalVariableAccess] __synth__0__1
|
||||
# 342| getStmt: [AssignExpr] ... = ...
|
||||
# 342| getDesugared: [StmtSequence] ...
|
||||
# 342| getStmt: [AssignExpr] ... = ...
|
||||
# 342| getAnOperand/getLeftOperand: [LocalVariableAccess] __synth__3__1
|
||||
# 342| getAnOperand/getRightOperand: [SplatExpr] * ...
|
||||
# 342| getAnOperand/getOperand/getReceiver: [LocalVariableAccess] __synth__0__1
|
||||
# 342| getStmt: [AssignExpr] ... = ...
|
||||
# 342| getAnOperand/getLeftOperand: [LocalVariableAccess] x
|
||||
# 342| getAnOperand/getRightOperand: [MethodCall] call to []
|
||||
# 342| getReceiver: [LocalVariableAccess] __synth__3__1
|
||||
# 342| getArgument: [IntegerLiteral] 0
|
||||
# 342| getStmt: [AssignExpr] ... = ...
|
||||
# 342| getAnOperand/getLeftOperand: [LocalVariableAccess] y
|
||||
# 342| getAnOperand/getRightOperand: [MethodCall] call to []
|
||||
# 342| getReceiver: [LocalVariableAccess] __synth__3__1
|
||||
# 342| getArgument: [IntegerLiteral] 1
|
||||
# 342| getStmt: [AssignExpr] ... = ...
|
||||
# 342| getAnOperand/getLeftOperand: [LocalVariableAccess] z
|
||||
# 342| getAnOperand/getRightOperand: [MethodCall] call to []
|
||||
# 342| getReceiver: [LocalVariableAccess] __synth__3__1
|
||||
# 342| getArgument: [IntegerLiteral] 2
|
||||
# 342| getAnOperand/getLeftOperand: [DestructuredLhsExpr] (..., ...)
|
||||
# 343| getStmt: [MethodCall] call to foo
|
||||
# 343| getReceiver: [SelfVariableAccess] self
|
||||
# 343| getArgument: [LocalVariableAccess] x
|
||||
# 343| getArgument: [LocalVariableAccess] y
|
||||
# 343| getArgument: [LocalVariableAccess] z
|
||||
# 364| [MethodCall] call to empty?
|
||||
# 364| getDesugared: [StmtSequence] ...
|
||||
# 364| getStmt: [AssignExpr] ... = ...
|
||||
@@ -594,139 +632,185 @@ literals/literals.rb:
|
||||
# 199| getValue: [ConstantReadAccess] Z
|
||||
control/loops.rb:
|
||||
# 9| [ForExpr] for ... in ...
|
||||
# 9| getDesugared: [MethodCall] call to each
|
||||
# 9| getReceiver: [RangeLiteral] _ .. _
|
||||
# 9| getBegin: [IntegerLiteral] 1
|
||||
# 9| getEnd: [IntegerLiteral] 10
|
||||
# 9| getBlock: [BraceBlock] { ... }
|
||||
# 9| getParameter: [SimpleParameter] __synth__0__1
|
||||
# 9| getDefiningAccess: [LocalVariableAccess] __synth__0__1
|
||||
# 9| getStmt: [AssignExpr] ... = ...
|
||||
# 9| getDesugared: [StmtSequence] ...
|
||||
# 9| getStmt: [IfExpr] if ...
|
||||
# 9| getCondition: [NotExpr] ! ...
|
||||
# 9| getAnOperand/getOperand/getReceiver: [DefinedExpr] defined? ...
|
||||
# 9| getAnOperand/getOperand/getReceiver: [LocalVariableAccess] n
|
||||
# 9| getBranch/getThen: [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| getAnOperand/getRightOperand: [NilLiteral] nil
|
||||
# 9| getStmt: [MethodCall] call to each
|
||||
# 9| getReceiver: [RangeLiteral] _ .. _
|
||||
# 9| getBegin: [IntegerLiteral] 1
|
||||
# 9| getEnd: [IntegerLiteral] 10
|
||||
# 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
|
||||
# 16| [ForExpr] for ... in ...
|
||||
# 16| getDesugared: [MethodCall] call to each
|
||||
# 16| getReceiver: [RangeLiteral] _ .. _
|
||||
# 16| getBegin: [IntegerLiteral] 1
|
||||
# 16| getEnd: [IntegerLiteral] 10
|
||||
# 16| getBlock: [BraceBlock] { ... }
|
||||
# 16| getParameter: [SimpleParameter] __synth__0__1
|
||||
# 16| getDefiningAccess: [LocalVariableAccess] __synth__0__1
|
||||
# 16| getStmt: [AssignExpr] ... = ...
|
||||
# 16| getDesugared: [StmtSequence] ...
|
||||
# 16| getStmt: [IfExpr] if ...
|
||||
# 16| getCondition: [NotExpr] ! ...
|
||||
# 16| getAnOperand/getOperand/getReceiver: [DefinedExpr] defined? ...
|
||||
# 16| getAnOperand/getOperand/getReceiver: [LocalVariableAccess] n
|
||||
# 16| getBranch/getThen: [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| getAnOperand/getRightOperand: [NilLiteral] nil
|
||||
# 16| getStmt: [MethodCall] call to each
|
||||
# 16| getReceiver: [RangeLiteral] _ .. _
|
||||
# 16| getBegin: [IntegerLiteral] 1
|
||||
# 16| getEnd: [IntegerLiteral] 10
|
||||
# 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
|
||||
# 22| [ForExpr] for ... in ...
|
||||
# 22| getDesugared: [MethodCall] call to each
|
||||
# 22| getReceiver: [HashLiteral] {...}
|
||||
# 22| getDesugared: [MethodCall] call to []
|
||||
# 22| getReceiver: [ConstantReadAccess] Hash
|
||||
# 22| getArgument: [Pair] Pair
|
||||
# 22| getKey: [SymbolLiteral] :foo
|
||||
# 22| getComponent: [StringTextComponent] foo
|
||||
# 22| getValue: [IntegerLiteral] 0
|
||||
# 22| getArgument: [Pair] Pair
|
||||
# 22| getKey: [SymbolLiteral] :bar
|
||||
# 22| getComponent: [StringTextComponent] bar
|
||||
# 22| getValue: [IntegerLiteral] 1
|
||||
# 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| getDesugared: [StmtSequence] ...
|
||||
# 22| getStmt: [IfExpr] if ...
|
||||
# 22| getCondition: [NotExpr] ! ...
|
||||
# 22| getAnOperand/getOperand/getReceiver: [DefinedExpr] defined? ...
|
||||
# 22| getAnOperand/getOperand/getReceiver: [LocalVariableAccess] key
|
||||
# 22| getBranch/getThen: [AssignExpr] ... = ...
|
||||
# 22| getAnOperand/getLeftOperand: [LocalVariableAccess] key
|
||||
# 22| getAnOperand/getRightOperand: [NilLiteral] nil
|
||||
# 22| getStmt: [IfExpr] if ...
|
||||
# 22| getCondition: [NotExpr] ! ...
|
||||
# 22| getAnOperand/getOperand/getReceiver: [DefinedExpr] defined? ...
|
||||
# 22| getAnOperand/getOperand/getReceiver: [LocalVariableAccess] value
|
||||
# 22| getBranch/getThen: [AssignExpr] ... = ...
|
||||
# 22| getAnOperand/getLeftOperand: [LocalVariableAccess] value
|
||||
# 22| getAnOperand/getRightOperand: [NilLiteral] nil
|
||||
# 22| getStmt: [MethodCall] call to each
|
||||
# 22| getReceiver: [HashLiteral] {...}
|
||||
# 22| getDesugared: [MethodCall] call to []
|
||||
# 22| getReceiver: [ConstantReadAccess] Hash
|
||||
# 22| getArgument: [Pair] Pair
|
||||
# 22| getKey: [SymbolLiteral] :foo
|
||||
# 22| getComponent: [StringTextComponent] foo
|
||||
# 22| getValue: [IntegerLiteral] 0
|
||||
# 22| getArgument: [Pair] Pair
|
||||
# 22| getKey: [SymbolLiteral] :bar
|
||||
# 22| getComponent: [StringTextComponent] bar
|
||||
# 22| getValue: [IntegerLiteral] 1
|
||||
# 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
|
||||
# 28| [ForExpr] for ... in ...
|
||||
# 28| getDesugared: [MethodCall] call to each
|
||||
# 28| getReceiver: [HashLiteral] {...}
|
||||
# 28| getDesugared: [MethodCall] call to []
|
||||
# 28| getReceiver: [ConstantReadAccess] Hash
|
||||
# 28| getArgument: [Pair] Pair
|
||||
# 28| getKey: [SymbolLiteral] :foo
|
||||
# 28| getComponent: [StringTextComponent] foo
|
||||
# 28| getValue: [IntegerLiteral] 0
|
||||
# 28| getArgument: [Pair] Pair
|
||||
# 28| getKey: [SymbolLiteral] :bar
|
||||
# 28| getComponent: [StringTextComponent] bar
|
||||
# 28| getValue: [IntegerLiteral] 1
|
||||
# 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| getDesugared: [StmtSequence] ...
|
||||
# 28| getStmt: [IfExpr] if ...
|
||||
# 28| getCondition: [NotExpr] ! ...
|
||||
# 28| getAnOperand/getOperand/getReceiver: [DefinedExpr] defined? ...
|
||||
# 28| getAnOperand/getOperand/getReceiver: [LocalVariableAccess] key
|
||||
# 28| getBranch/getThen: [AssignExpr] ... = ...
|
||||
# 28| getAnOperand/getLeftOperand: [LocalVariableAccess] key
|
||||
# 28| getAnOperand/getRightOperand: [NilLiteral] nil
|
||||
# 28| getStmt: [IfExpr] if ...
|
||||
# 28| getCondition: [NotExpr] ! ...
|
||||
# 28| getAnOperand/getOperand/getReceiver: [DefinedExpr] defined? ...
|
||||
# 28| getAnOperand/getOperand/getReceiver: [LocalVariableAccess] value
|
||||
# 28| getBranch/getThen: [AssignExpr] ... = ...
|
||||
# 28| getAnOperand/getLeftOperand: [LocalVariableAccess] value
|
||||
# 28| getAnOperand/getRightOperand: [NilLiteral] nil
|
||||
# 28| getStmt: [MethodCall] call to each
|
||||
# 28| getReceiver: [HashLiteral] {...}
|
||||
# 28| getDesugared: [MethodCall] call to []
|
||||
# 28| getReceiver: [ConstantReadAccess] Hash
|
||||
# 28| getArgument: [Pair] Pair
|
||||
# 28| getKey: [SymbolLiteral] :foo
|
||||
# 28| getComponent: [StringTextComponent] foo
|
||||
# 28| getValue: [IntegerLiteral] 0
|
||||
# 28| getArgument: [Pair] Pair
|
||||
# 28| getKey: [SymbolLiteral] :bar
|
||||
# 28| getComponent: [StringTextComponent] bar
|
||||
# 28| getValue: [IntegerLiteral] 1
|
||||
# 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
|
||||
# 36| [AssignAddExpr] ... += ...
|
||||
# 36| getDesugared: [AssignExpr] ... = ...
|
||||
# 36| getAnOperand/getLeftOperand: [LocalVariableAccess] x
|
||||
@@ -985,29 +1069,37 @@ params/params.rb:
|
||||
# 21| getReceiver: [ConstantReadAccess] Array
|
||||
erb/template.html.erb:
|
||||
# 27| [ForExpr] for ... in ...
|
||||
# 27| getDesugared: [MethodCall] call to each
|
||||
# 27| getReceiver: [ArrayLiteral] [...]
|
||||
# 27| getDesugared: [MethodCall] call to []
|
||||
# 27| getReceiver: [ConstantReadAccess] Array
|
||||
# 27| getArgument: [StringLiteral] "foo"
|
||||
# 27| getComponent: [StringTextComponent] foo
|
||||
# 27| getArgument: [StringLiteral] "bar"
|
||||
# 27| getComponent: [StringTextComponent] bar
|
||||
# 27| getArgument: [StringLiteral] "baz"
|
||||
# 27| getComponent: [StringTextComponent] baz
|
||||
# 27| getBlock: [BraceBlock] { ... }
|
||||
# 27| getParameter: [SimpleParameter] __synth__0__1
|
||||
# 27| getDefiningAccess: [LocalVariableAccess] __synth__0__1
|
||||
# 27| getStmt: [AssignExpr] ... = ...
|
||||
# 27| getDesugared: [StmtSequence] ...
|
||||
# 27| getStmt: [IfExpr] if ...
|
||||
# 27| getCondition: [NotExpr] ! ...
|
||||
# 27| getAnOperand/getOperand/getReceiver: [DefinedExpr] defined? ...
|
||||
# 27| getAnOperand/getOperand/getReceiver: [LocalVariableAccess] x
|
||||
# 27| getBranch/getThen: [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| getAnOperand/getRightOperand: [NilLiteral] nil
|
||||
# 27| getStmt: [MethodCall] call to each
|
||||
# 27| getReceiver: [ArrayLiteral] [...]
|
||||
# 27| getDesugared: [MethodCall] call to []
|
||||
# 27| getReceiver: [ConstantReadAccess] Array
|
||||
# 27| getArgument: [StringLiteral] "foo"
|
||||
# 27| getComponent: [StringTextComponent] foo
|
||||
# 27| getArgument: [StringLiteral] "bar"
|
||||
# 27| getComponent: [StringTextComponent] bar
|
||||
# 27| getArgument: [StringLiteral] "baz"
|
||||
# 27| getComponent: [StringTextComponent] baz
|
||||
# 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
|
||||
gems/test.gemspec:
|
||||
# 2| [AssignExpr] ... = ...
|
||||
# 2| getDesugared: [StmtSequence] ...
|
||||
|
||||
@@ -10,6 +10,8 @@ exprValue
|
||||
| calls/calls.rb:26:7:26:7 | 1 | 1 | int |
|
||||
| calls/calls.rb:36:9:36:11 | 100 | 100 | int |
|
||||
| calls/calls.rb:36:14:36:16 | 200 | 200 | int |
|
||||
| calls/calls.rb:226:1:228:3 | nil | nil | nil |
|
||||
| calls/calls.rb:229:1:231:3 | nil | nil | nil |
|
||||
| calls/calls.rb:280:5:280:8 | :blah | :blah | symbol |
|
||||
| calls/calls.rb:281:5:281:8 | :blah | :blah | symbol |
|
||||
| calls/calls.rb:290:11:290:16 | "blah" | blah | string |
|
||||
@@ -57,6 +59,9 @@ exprValue
|
||||
| calls/calls.rb:322:31:322:31 | 1 | 1 | int |
|
||||
| calls/calls.rb:322:37:322:37 | 2 | 2 | int |
|
||||
| calls/calls.rb:330:31:330:37 | "error" | error | string |
|
||||
| calls/calls.rb:342:1:344:3 | nil | nil | nil |
|
||||
| calls/calls.rb:342:1:344:3 | nil | nil | nil |
|
||||
| calls/calls.rb:342:1:344:3 | nil | nil | nil |
|
||||
| calls/calls.rb:342:5:342:5 | 0 | 0 | int |
|
||||
| calls/calls.rb:342:8:342:8 | 1 | 1 | int |
|
||||
| calls/calls.rb:342:11:342:11 | 2 | 2 | int |
|
||||
@@ -330,16 +335,22 @@ exprValue
|
||||
| control/loops.rb:4:5:4:5 | 0 | 0 | int |
|
||||
| control/loops.rb:5:5:5:5 | 0 | 0 | int |
|
||||
| control/loops.rb:6:5:6:5 | 0 | 0 | int |
|
||||
| control/loops.rb:9:1:12:3 | nil | nil | nil |
|
||||
| control/loops.rb:9:10:9:10 | 1 | 1 | int |
|
||||
| control/loops.rb:9:13:9:14 | 10 | 10 | int |
|
||||
| control/loops.rb:16:1:19:3 | nil | nil | nil |
|
||||
| control/loops.rb:16:10:16:10 | 1 | 1 | int |
|
||||
| control/loops.rb:16:13:16:14 | 10 | 10 | int |
|
||||
| control/loops.rb:22:1:25:3 | nil | nil | nil |
|
||||
| control/loops.rb:22:1:25:3 | nil | nil | nil |
|
||||
| control/loops.rb:22:5:22:7 | 0 | 0 | int |
|
||||
| control/loops.rb:22:10:22:14 | 1 | 1 | int |
|
||||
| control/loops.rb:22:20:22:22 | :foo | :foo | symbol |
|
||||
| control/loops.rb:22:25:22:25 | 0 | 0 | int |
|
||||
| control/loops.rb:22:28:22:30 | :bar | :bar | symbol |
|
||||
| control/loops.rb:22:33:22:33 | 1 | 1 | int |
|
||||
| control/loops.rb:28:1:32:3 | nil | nil | nil |
|
||||
| control/loops.rb:28:1:32:3 | nil | nil | nil |
|
||||
| control/loops.rb:28:6:28:8 | 0 | 0 | int |
|
||||
| control/loops.rb:28:11:28:15 | 1 | 1 | int |
|
||||
| control/loops.rb:28:22:28:24 | :foo | :foo | symbol |
|
||||
@@ -365,6 +376,7 @@ exprValue
|
||||
| control/loops.rb:66:11:66:11 | y | 0 | int |
|
||||
| erb/template.html.erb:19:5:19:17 | "hello world" | hello world | string |
|
||||
| erb/template.html.erb:25:9:25:10 | "" | | string |
|
||||
| erb/template.html.erb:27:6:31:8 | nil | nil | nil |
|
||||
| erb/template.html.erb:27:16:27:20 | "foo" | foo | string |
|
||||
| erb/template.html.erb:27:23:27:27 | "bar" | bar | string |
|
||||
| erb/template.html.erb:27:30:27:34 | "baz" | baz | string |
|
||||
@@ -934,6 +946,8 @@ exprCfgNodeValue
|
||||
| calls/calls.rb:26:7:26:7 | 1 | 1 | int |
|
||||
| calls/calls.rb:36:9:36:11 | 100 | 100 | int |
|
||||
| calls/calls.rb:36:14:36:16 | 200 | 200 | int |
|
||||
| calls/calls.rb:226:1:228:3 | nil | nil | nil |
|
||||
| calls/calls.rb:229:1:231:3 | nil | nil | nil |
|
||||
| calls/calls.rb:280:5:280:8 | :blah | :blah | symbol |
|
||||
| calls/calls.rb:281:5:281:8 | :blah | :blah | symbol |
|
||||
| calls/calls.rb:290:11:290:16 | "blah" | blah | string |
|
||||
@@ -981,6 +995,9 @@ exprCfgNodeValue
|
||||
| calls/calls.rb:322:31:322:31 | 1 | 1 | int |
|
||||
| calls/calls.rb:322:37:322:37 | 2 | 2 | int |
|
||||
| calls/calls.rb:330:31:330:37 | "error" | error | string |
|
||||
| calls/calls.rb:342:1:344:3 | nil | nil | nil |
|
||||
| calls/calls.rb:342:1:344:3 | nil | nil | nil |
|
||||
| calls/calls.rb:342:1:344:3 | nil | nil | nil |
|
||||
| calls/calls.rb:342:5:342:5 | 0 | 0 | int |
|
||||
| calls/calls.rb:342:8:342:8 | 1 | 1 | int |
|
||||
| calls/calls.rb:342:11:342:11 | 2 | 2 | int |
|
||||
@@ -1226,16 +1243,22 @@ exprCfgNodeValue
|
||||
| control/loops.rb:4:5:4:5 | 0 | 0 | int |
|
||||
| control/loops.rb:5:5:5:5 | 0 | 0 | int |
|
||||
| control/loops.rb:6:5:6:5 | 0 | 0 | int |
|
||||
| control/loops.rb:9:1:12:3 | nil | nil | nil |
|
||||
| control/loops.rb:9:10:9:10 | 1 | 1 | int |
|
||||
| control/loops.rb:9:13:9:14 | 10 | 10 | int |
|
||||
| control/loops.rb:16:1:19:3 | nil | nil | nil |
|
||||
| control/loops.rb:16:10:16:10 | 1 | 1 | int |
|
||||
| control/loops.rb:16:13:16:14 | 10 | 10 | int |
|
||||
| control/loops.rb:22:1:25:3 | nil | nil | nil |
|
||||
| control/loops.rb:22:1:25:3 | nil | nil | nil |
|
||||
| control/loops.rb:22:5:22:7 | 0 | 0 | int |
|
||||
| control/loops.rb:22:10:22:14 | 1 | 1 | int |
|
||||
| control/loops.rb:22:20:22:22 | :foo | :foo | symbol |
|
||||
| control/loops.rb:22:25:22:25 | 0 | 0 | int |
|
||||
| control/loops.rb:22:28:22:30 | :bar | :bar | symbol |
|
||||
| control/loops.rb:22:33:22:33 | 1 | 1 | int |
|
||||
| control/loops.rb:28:1:32:3 | nil | nil | nil |
|
||||
| control/loops.rb:28:1:32:3 | nil | nil | nil |
|
||||
| control/loops.rb:28:6:28:8 | 0 | 0 | int |
|
||||
| control/loops.rb:28:11:28:15 | 1 | 1 | int |
|
||||
| control/loops.rb:28:22:28:24 | :foo | :foo | symbol |
|
||||
@@ -1261,6 +1284,7 @@ exprCfgNodeValue
|
||||
| control/loops.rb:66:11:66:11 | y | 0 | int |
|
||||
| erb/template.html.erb:19:5:19:17 | "hello world" | hello world | string |
|
||||
| erb/template.html.erb:25:9:25:10 | "" | | string |
|
||||
| erb/template.html.erb:27:6:31:8 | nil | nil | nil |
|
||||
| erb/template.html.erb:27:16:27:20 | "foo" | foo | string |
|
||||
| erb/template.html.erb:27:23:27:27 | "bar" | bar | string |
|
||||
| erb/template.html.erb:27:30:27:34 | "baz" | baz | string |
|
||||
|
||||
@@ -250,10 +250,14 @@ callsWithReceiver
|
||||
| calls.rb:222:11:222:13 | call to foo | calls.rb:222:11:222:13 | self |
|
||||
| calls.rb:223:1:223:6 | call to bar | calls.rb:223:1:223:1 | X |
|
||||
| calls.rb:223:14:223:19 | call to foo | calls.rb:223:14:223:14 | X |
|
||||
| calls.rb:226:1:228:3 | ! ... | calls.rb:226:1:228:3 | defined? ... |
|
||||
| calls.rb:226:1:228:3 | call to each | calls.rb:226:10:226:12 | call to bar |
|
||||
| calls.rb:226:1:228:3 | defined? ... | calls.rb:226:1:228:3 | x |
|
||||
| calls.rb:226:10:226:12 | call to bar | calls.rb:226:10:226:12 | self |
|
||||
| calls.rb:227:3:227:5 | call to baz | calls.rb:227:3:227:5 | self |
|
||||
| calls.rb:229:1:231:3 | ! ... | calls.rb:229:1:231:3 | defined? ... |
|
||||
| calls.rb:229:1:231:3 | call to each | calls.rb:229:10:229:15 | call to bar |
|
||||
| calls.rb:229:1:231:3 | defined? ... | calls.rb:229:1:231:3 | x |
|
||||
| calls.rb:229:10:229:15 | call to bar | calls.rb:229:10:229:10 | X |
|
||||
| calls.rb:230:3:230:8 | call to baz | calls.rb:230:3:230:3 | X |
|
||||
| calls.rb:234:1:234:3 | call to foo | calls.rb:234:1:234:3 | self |
|
||||
@@ -374,8 +378,14 @@ callsWithReceiver
|
||||
| calls.rb:330:13:330:15 | call to bar | calls.rb:330:13:330:15 | self |
|
||||
| calls.rb:330:25:330:37 | call to print | calls.rb:330:25:330:37 | self |
|
||||
| calls.rb:338:3:338:13 | call to bar | calls.rb:338:3:338:13 | self |
|
||||
| calls.rb:342:1:344:3 | ! ... | calls.rb:342:1:344:3 | defined? ... |
|
||||
| calls.rb:342:1:344:3 | ! ... | calls.rb:342:1:344:3 | defined? ... |
|
||||
| calls.rb:342:1:344:3 | ! ... | calls.rb:342:1:344:3 | defined? ... |
|
||||
| calls.rb:342:1:344:3 | * ... | calls.rb:342:1:344:3 | __synth__0__1 |
|
||||
| calls.rb:342:1:344:3 | call to each | calls.rb:342:16:342:33 | [...] |
|
||||
| calls.rb:342:1:344:3 | defined? ... | calls.rb:342:1:344:3 | x |
|
||||
| calls.rb:342:1:344:3 | defined? ... | calls.rb:342:1:344:3 | y |
|
||||
| calls.rb:342:1:344:3 | defined? ... | calls.rb:342:1:344:3 | z |
|
||||
| calls.rb:342:5:342:5 | call to [] | calls.rb:342:5:342:5 | __synth__3__1 |
|
||||
| calls.rb:342:8:342:8 | call to [] | calls.rb:342:8:342:8 | __synth__3__1 |
|
||||
| calls.rb:342:11:342:11 | call to [] | calls.rb:342:11:342:11 | __synth__3__1 |
|
||||
|
||||
@@ -22,6 +22,12 @@ conditionalExprs
|
||||
| conditionals.rb:61:1:64:3 | if ... | IfExpr | conditionals.rb:61:4:61:8 | ... > ... | conditionals.rb:63:1:63:4 | else ... | false |
|
||||
| conditionals.rb:67:1:70:3 | if ... | IfExpr | conditionals.rb:67:4:67:8 | ... > ... | conditionals.rb:67:10:67:13 | then ... | true |
|
||||
| conditionals.rb:67:1:70:3 | if ... | IfExpr | conditionals.rb:67:4:67:8 | ... > ... | conditionals.rb:68:1:69:5 | else ... | false |
|
||||
| loops.rb:9:1:12:3 | if ... | IfExpr | loops.rb:9:1:12:3 | ! ... | loops.rb:9:1:12:3 | ... = ... | true |
|
||||
| loops.rb:16:1:19:3 | if ... | IfExpr | loops.rb:16:1:19:3 | ! ... | loops.rb:16:1:19:3 | ... = ... | true |
|
||||
| loops.rb:22:1:25:3 | if ... | IfExpr | loops.rb:22:1:25:3 | ! ... | loops.rb:22:1:25:3 | ... = ... | true |
|
||||
| loops.rb:22:1:25:3 | if ... | IfExpr | loops.rb:22:1:25:3 | ! ... | loops.rb:22:1:25:3 | ... = ... | true |
|
||||
| loops.rb:28:1:32:3 | if ... | IfExpr | loops.rb:28:1:32:3 | ! ... | loops.rb:28:1:32:3 | ... = ... | true |
|
||||
| loops.rb:28:1:32:3 | if ... | IfExpr | loops.rb:28:1:32:3 | ! ... | loops.rb:28:1:32:3 | ... = ... | true |
|
||||
ifExprs
|
||||
| conditionals.rb:10:1:12:3 | if ... | IfExpr | conditionals.rb:10:4:10:8 | ... > ... | conditionals.rb:10:10:11:5 | then ... | (none) | false |
|
||||
| conditionals.rb:15:1:19:3 | if ... | IfExpr | conditionals.rb:15:4:15:9 | ... == ... | conditionals.rb:15:10:16:5 | then ... | else ... | false |
|
||||
|
||||
@@ -27,9 +27,15 @@
|
||||
| conditionals.rb:61:1:64:3 | if ... | IfExpr |
|
||||
| conditionals.rb:67:1:70:3 | if ... | IfExpr |
|
||||
| loops.rb:9:1:12:3 | for ... in ... | ForExpr |
|
||||
| loops.rb:9:1:12:3 | if ... | IfExpr |
|
||||
| loops.rb:16:1:19:3 | for ... in ... | ForExpr |
|
||||
| loops.rb:16:1:19:3 | if ... | IfExpr |
|
||||
| loops.rb:22:1:25:3 | for ... in ... | ForExpr |
|
||||
| loops.rb:22:1:25:3 | if ... | IfExpr |
|
||||
| loops.rb:22:1:25:3 | if ... | IfExpr |
|
||||
| loops.rb:28:1:32:3 | for ... in ... | ForExpr |
|
||||
| loops.rb:28:1:32:3 | if ... | IfExpr |
|
||||
| loops.rb:28:1:32:3 | if ... | IfExpr |
|
||||
| loops.rb:35:1:39:3 | while ... | WhileExpr |
|
||||
| loops.rb:42:1:45:3 | while ... | WhileExpr |
|
||||
| loops.rb:48:1:48:19 | ... while ... | WhileModifierExpr |
|
||||
|
||||
@@ -2377,7 +2377,7 @@ cfg.rb:
|
||||
#-----| -> \u1234
|
||||
|
||||
# 88| ... = ...
|
||||
#-----| -> Array
|
||||
#-----| -> x
|
||||
|
||||
# 88| "\u1234#{...}\n"
|
||||
#-----| -> ... = ...
|
||||
@@ -2394,9 +2394,21 @@ cfg.rb:
|
||||
# 88| \n
|
||||
#-----| -> "\u1234#{...}\n"
|
||||
|
||||
# 90| ...
|
||||
#-----| -> $global
|
||||
|
||||
# 90| ... = ...
|
||||
#-----| -> if ...
|
||||
|
||||
# 90| ... = ...
|
||||
#-----| -> x
|
||||
|
||||
# 90| [false] ! ...
|
||||
#-----| false -> if ...
|
||||
|
||||
# 90| [true] ! ...
|
||||
#-----| true -> x
|
||||
|
||||
# 90| __synth__0__1
|
||||
#-----| -> x
|
||||
|
||||
@@ -2404,7 +2416,11 @@ cfg.rb:
|
||||
#-----| -> ... = ...
|
||||
|
||||
# 90| call to each
|
||||
#-----| -> $global
|
||||
#-----| -> ...
|
||||
|
||||
# 90| defined? ...
|
||||
#-----| false -> [true] ! ...
|
||||
#-----| true -> [false] ! ...
|
||||
|
||||
# 90| enter { ... }
|
||||
#-----| -> __synth__0__1
|
||||
@@ -2414,6 +2430,18 @@ cfg.rb:
|
||||
# 90| exit { ... } (normal)
|
||||
#-----| -> exit { ... }
|
||||
|
||||
# 90| if ...
|
||||
#-----| -> Array
|
||||
|
||||
# 90| nil
|
||||
#-----| -> ... = ...
|
||||
|
||||
# 90| x
|
||||
#-----| -> nil
|
||||
|
||||
# 90| x
|
||||
#-----| -> defined? ...
|
||||
|
||||
# 90| { ... }
|
||||
#-----| -> call to each
|
||||
|
||||
|
||||
@@ -25,7 +25,10 @@ callsWithNoArguments
|
||||
| cfg.rb:60:17:60:17 | call to b |
|
||||
| cfg.rb:62:7:62:12 | * ... |
|
||||
| cfg.rb:62:17:62:27 | * ... |
|
||||
| cfg.rb:90:1:93:3 | [false] ! ... |
|
||||
| cfg.rb:90:1:93:3 | [true] ! ... |
|
||||
| cfg.rb:90:1:93:3 | call to each |
|
||||
| cfg.rb:90:1:93:3 | defined? ... |
|
||||
| cfg.rb:98:10:98:15 | ** ... |
|
||||
| cfg.rb:98:30:98:35 | ** ... |
|
||||
| cfg.rb:138:17:138:23 | * ... |
|
||||
|
||||
@@ -2399,6 +2399,7 @@
|
||||
| UseUseExplosion.rb:24:5:25:7 | use | UseUseExplosion.rb:1:1:26:3 | C |
|
||||
| local_dataflow.rb:1:1:7:3 | self (foo) | local_dataflow.rb:3:8:3:10 | self |
|
||||
| local_dataflow.rb:1:1:7:3 | self in foo | local_dataflow.rb:1:1:7:3 | self (foo) |
|
||||
| local_dataflow.rb:1:1:150:3 | <uninitialized> | local_dataflow.rb:10:5:13:3 | x |
|
||||
| local_dataflow.rb:1:1:150:3 | self (local_dataflow.rb) | local_dataflow.rb:49:1:53:3 | self |
|
||||
| local_dataflow.rb:1:9:1:9 | a | local_dataflow.rb:1:9:1:9 | a |
|
||||
| local_dataflow.rb:1:9:1:9 | a | local_dataflow.rb:2:7:2:7 | a |
|
||||
@@ -2424,28 +2425,45 @@
|
||||
| local_dataflow.rb:9:1:9:5 | array | local_dataflow.rb:10:14:10:18 | array |
|
||||
| local_dataflow.rb:9:9:9:15 | call to [] | local_dataflow.rb:9:1:9:5 | array |
|
||||
| local_dataflow.rb:9:9:9:15 | call to [] | local_dataflow.rb:9:1:9:15 | ... = ... |
|
||||
| local_dataflow.rb:10:5:13:3 | ... | local_dataflow.rb:10:1:13:3 | ... = ... |
|
||||
| local_dataflow.rb:10:5:13:3 | ... = ... | local_dataflow.rb:10:5:13:3 | if ... |
|
||||
| local_dataflow.rb:10:5:13:3 | <captured entry> self | local_dataflow.rb:11:1:11:2 | self |
|
||||
| local_dataflow.rb:10:5:13:3 | <captured exit> x | local_dataflow.rb:15:1:17:3 | x |
|
||||
| local_dataflow.rb:10:5:13:3 | __synth__0__1 | local_dataflow.rb:10:5:13:3 | ... = ... |
|
||||
| local_dataflow.rb:10:5:13:3 | __synth__0__1 | local_dataflow.rb:10:5:13:3 | __synth__0__1 |
|
||||
| local_dataflow.rb:10:5:13:3 | __synth__0__1 | local_dataflow.rb:10:5:13:3 | __synth__0__1 |
|
||||
| local_dataflow.rb:10:5:13:3 | __synth__0__1 | local_dataflow.rb:10:9:10:9 | x |
|
||||
| local_dataflow.rb:10:5:13:3 | call to each | local_dataflow.rb:10:1:13:3 | ... = ... |
|
||||
| local_dataflow.rb:10:5:13:3 | call to each | local_dataflow.rb:10:5:13:3 | ... |
|
||||
| local_dataflow.rb:10:5:13:3 | nil | local_dataflow.rb:10:5:13:3 | ... = ... |
|
||||
| local_dataflow.rb:10:5:13:3 | nil | local_dataflow.rb:10:5:13:3 | x |
|
||||
| local_dataflow.rb:10:5:13:3 | x | local_dataflow.rb:10:5:13:3 | phi |
|
||||
| local_dataflow.rb:10:9:10:9 | x | local_dataflow.rb:12:5:12:5 | x |
|
||||
| local_dataflow.rb:10:14:10:18 | [post] array | local_dataflow.rb:15:10:15:14 | array |
|
||||
| local_dataflow.rb:10:14:10:18 | array | local_dataflow.rb:15:10:15:14 | array |
|
||||
| local_dataflow.rb:11:1:11:2 | [post] self | local_dataflow.rb:12:3:12:5 | self |
|
||||
| local_dataflow.rb:11:1:11:2 | self | local_dataflow.rb:12:3:12:5 | self |
|
||||
| local_dataflow.rb:15:1:17:3 | ... = ... | local_dataflow.rb:15:1:17:3 | if ... |
|
||||
| local_dataflow.rb:15:1:17:3 | <captured exit> x | local_dataflow.rb:19:1:21:3 | x |
|
||||
| local_dataflow.rb:15:1:17:3 | __synth__0__1 | local_dataflow.rb:15:1:17:3 | ... = ... |
|
||||
| local_dataflow.rb:15:1:17:3 | __synth__0__1 | local_dataflow.rb:15:1:17:3 | __synth__0__1 |
|
||||
| local_dataflow.rb:15:1:17:3 | __synth__0__1 | local_dataflow.rb:15:1:17:3 | __synth__0__1 |
|
||||
| local_dataflow.rb:15:1:17:3 | __synth__0__1 | local_dataflow.rb:15:5:15:5 | x |
|
||||
| local_dataflow.rb:15:1:17:3 | call to each | local_dataflow.rb:15:1:17:3 | ... |
|
||||
| local_dataflow.rb:15:1:17:3 | nil | local_dataflow.rb:15:1:17:3 | ... = ... |
|
||||
| local_dataflow.rb:15:1:17:3 | nil | local_dataflow.rb:15:1:17:3 | x |
|
||||
| local_dataflow.rb:15:1:17:3 | x | local_dataflow.rb:15:1:17:3 | phi |
|
||||
| local_dataflow.rb:15:10:15:14 | [post] array | local_dataflow.rb:19:10:19:14 | array |
|
||||
| local_dataflow.rb:15:10:15:14 | array | local_dataflow.rb:19:10:19:14 | array |
|
||||
| local_dataflow.rb:16:9:16:10 | 10 | local_dataflow.rb:16:3:16:10 | break |
|
||||
| local_dataflow.rb:19:1:21:3 | ... = ... | local_dataflow.rb:19:1:21:3 | if ... |
|
||||
| local_dataflow.rb:19:1:21:3 | __synth__0__1 | local_dataflow.rb:19:1:21:3 | ... = ... |
|
||||
| local_dataflow.rb:19:1:21:3 | __synth__0__1 | local_dataflow.rb:19:1:21:3 | __synth__0__1 |
|
||||
| local_dataflow.rb:19:1:21:3 | __synth__0__1 | local_dataflow.rb:19:1:21:3 | __synth__0__1 |
|
||||
| local_dataflow.rb:19:1:21:3 | __synth__0__1 | local_dataflow.rb:19:5:19:5 | x |
|
||||
| local_dataflow.rb:19:1:21:3 | call to each | local_dataflow.rb:19:1:21:3 | ... |
|
||||
| local_dataflow.rb:19:1:21:3 | nil | local_dataflow.rb:19:1:21:3 | ... = ... |
|
||||
| local_dataflow.rb:19:1:21:3 | nil | local_dataflow.rb:19:1:21:3 | x |
|
||||
| local_dataflow.rb:19:1:21:3 | x | local_dataflow.rb:19:1:21:3 | phi |
|
||||
| local_dataflow.rb:19:5:19:5 | x | local_dataflow.rb:20:6:20:6 | x |
|
||||
| local_dataflow.rb:24:2:24:8 | break | local_dataflow.rb:23:1:25:3 | while ... |
|
||||
| local_dataflow.rb:24:8:24:8 | 5 | local_dataflow.rb:24:2:24:8 | break |
|
||||
|
||||
@@ -831,13 +831,22 @@ arg
|
||||
| local_dataflow.rb:9:10:9:10 | 1 | local_dataflow.rb:9:9:9:15 | call to [] | position 0 |
|
||||
| local_dataflow.rb:9:12:9:12 | 2 | local_dataflow.rb:9:9:9:15 | call to [] | position 1 |
|
||||
| local_dataflow.rb:9:14:9:14 | 3 | local_dataflow.rb:9:9:9:15 | call to [] | position 2 |
|
||||
| local_dataflow.rb:10:5:13:3 | defined? ... | local_dataflow.rb:10:5:13:3 | [false] ! ... | self |
|
||||
| local_dataflow.rb:10:5:13:3 | defined? ... | local_dataflow.rb:10:5:13:3 | [true] ! ... | self |
|
||||
| local_dataflow.rb:10:5:13:3 | x | local_dataflow.rb:10:5:13:3 | defined? ... | self |
|
||||
| local_dataflow.rb:10:5:13:3 | { ... } | local_dataflow.rb:10:5:13:3 | call to each | block |
|
||||
| local_dataflow.rb:10:14:10:18 | array | local_dataflow.rb:10:5:13:3 | call to each | self |
|
||||
| local_dataflow.rb:11:1:11:2 | self | local_dataflow.rb:11:1:11:2 | call to do | self |
|
||||
| local_dataflow.rb:12:3:12:5 | self | local_dataflow.rb:12:3:12:5 | call to p | self |
|
||||
| local_dataflow.rb:12:5:12:5 | x | local_dataflow.rb:12:3:12:5 | call to p | position 0 |
|
||||
| local_dataflow.rb:15:1:17:3 | defined? ... | local_dataflow.rb:15:1:17:3 | [false] ! ... | self |
|
||||
| local_dataflow.rb:15:1:17:3 | defined? ... | local_dataflow.rb:15:1:17:3 | [true] ! ... | self |
|
||||
| local_dataflow.rb:15:1:17:3 | x | local_dataflow.rb:15:1:17:3 | defined? ... | self |
|
||||
| local_dataflow.rb:15:1:17:3 | { ... } | local_dataflow.rb:15:1:17:3 | call to each | block |
|
||||
| local_dataflow.rb:15:10:15:14 | array | local_dataflow.rb:15:1:17:3 | call to each | self |
|
||||
| local_dataflow.rb:19:1:21:3 | defined? ... | local_dataflow.rb:19:1:21:3 | [false] ! ... | self |
|
||||
| local_dataflow.rb:19:1:21:3 | defined? ... | local_dataflow.rb:19:1:21:3 | [true] ! ... | self |
|
||||
| local_dataflow.rb:19:1:21:3 | x | local_dataflow.rb:19:1:21:3 | defined? ... | self |
|
||||
| local_dataflow.rb:19:1:21:3 | { ... } | local_dataflow.rb:19:1:21:3 | call to each | block |
|
||||
| local_dataflow.rb:19:10:19:14 | array | local_dataflow.rb:19:1:21:3 | call to each | self |
|
||||
| local_dataflow.rb:20:6:20:6 | x | local_dataflow.rb:20:6:20:10 | ... > ... | self |
|
||||
|
||||
@@ -2842,6 +2842,7 @@
|
||||
| local_dataflow.rb:1:1:7:3 | self (foo) | local_dataflow.rb:3:8:3:10 | self |
|
||||
| local_dataflow.rb:1:1:7:3 | self in foo | local_dataflow.rb:1:1:7:3 | self (foo) |
|
||||
| local_dataflow.rb:1:1:7:3 | synthetic *args | local_dataflow.rb:1:9:1:9 | a |
|
||||
| local_dataflow.rb:1:1:150:3 | <uninitialized> | local_dataflow.rb:10:5:13:3 | x |
|
||||
| local_dataflow.rb:1:1:150:3 | self (local_dataflow.rb) | local_dataflow.rb:49:1:53:3 | self |
|
||||
| local_dataflow.rb:1:9:1:9 | a | local_dataflow.rb:1:9:1:9 | a |
|
||||
| local_dataflow.rb:1:9:1:9 | a | local_dataflow.rb:2:7:2:7 | a |
|
||||
@@ -2870,31 +2871,57 @@
|
||||
| local_dataflow.rb:9:9:9:15 | Array | local_dataflow.rb:9:9:9:15 | call to [] |
|
||||
| local_dataflow.rb:9:9:9:15 | call to [] | local_dataflow.rb:9:1:9:5 | array |
|
||||
| local_dataflow.rb:9:9:9:15 | call to [] | local_dataflow.rb:9:1:9:15 | ... = ... |
|
||||
| local_dataflow.rb:10:5:13:3 | ... | local_dataflow.rb:10:1:13:3 | ... = ... |
|
||||
| local_dataflow.rb:10:5:13:3 | ... = ... | local_dataflow.rb:10:5:13:3 | if ... |
|
||||
| local_dataflow.rb:10:5:13:3 | <captured entry> self | local_dataflow.rb:11:1:11:2 | self |
|
||||
| local_dataflow.rb:10:5:13:3 | <captured exit> x | local_dataflow.rb:15:1:17:3 | x |
|
||||
| local_dataflow.rb:10:5:13:3 | __synth__0__1 | local_dataflow.rb:10:5:13:3 | ... = ... |
|
||||
| local_dataflow.rb:10:5:13:3 | __synth__0__1 | local_dataflow.rb:10:5:13:3 | __synth__0__1 |
|
||||
| local_dataflow.rb:10:5:13:3 | __synth__0__1 | local_dataflow.rb:10:5:13:3 | __synth__0__1 |
|
||||
| local_dataflow.rb:10:5:13:3 | __synth__0__1 | local_dataflow.rb:10:9:10:9 | x |
|
||||
| local_dataflow.rb:10:5:13:3 | call to each | local_dataflow.rb:10:1:13:3 | ... = ... |
|
||||
| local_dataflow.rb:10:5:13:3 | call to each | local_dataflow.rb:10:5:13:3 | ... |
|
||||
| local_dataflow.rb:10:5:13:3 | defined? ... | local_dataflow.rb:10:5:13:3 | [false] ! ... |
|
||||
| local_dataflow.rb:10:5:13:3 | defined? ... | local_dataflow.rb:10:5:13:3 | [true] ! ... |
|
||||
| local_dataflow.rb:10:5:13:3 | nil | local_dataflow.rb:10:5:13:3 | ... = ... |
|
||||
| local_dataflow.rb:10:5:13:3 | nil | local_dataflow.rb:10:5:13:3 | x |
|
||||
| local_dataflow.rb:10:5:13:3 | synthetic *args | local_dataflow.rb:10:5:13:3 | __synth__0__1 |
|
||||
| local_dataflow.rb:10:5:13:3 | x | local_dataflow.rb:10:5:13:3 | defined? ... |
|
||||
| local_dataflow.rb:10:5:13:3 | x | local_dataflow.rb:10:5:13:3 | phi |
|
||||
| local_dataflow.rb:10:9:10:9 | x | local_dataflow.rb:12:5:12:5 | x |
|
||||
| local_dataflow.rb:10:14:10:18 | [post] array | local_dataflow.rb:15:10:15:14 | array |
|
||||
| local_dataflow.rb:10:14:10:18 | array | local_dataflow.rb:15:10:15:14 | array |
|
||||
| local_dataflow.rb:11:1:11:2 | [post] self | local_dataflow.rb:12:3:12:5 | self |
|
||||
| local_dataflow.rb:11:1:11:2 | self | local_dataflow.rb:12:3:12:5 | self |
|
||||
| local_dataflow.rb:15:1:17:3 | ... = ... | local_dataflow.rb:15:1:17:3 | if ... |
|
||||
| local_dataflow.rb:15:1:17:3 | <captured exit> x | local_dataflow.rb:19:1:21:3 | x |
|
||||
| local_dataflow.rb:15:1:17:3 | __synth__0__1 | local_dataflow.rb:15:1:17:3 | ... = ... |
|
||||
| local_dataflow.rb:15:1:17:3 | __synth__0__1 | local_dataflow.rb:15:1:17:3 | __synth__0__1 |
|
||||
| local_dataflow.rb:15:1:17:3 | __synth__0__1 | local_dataflow.rb:15:1:17:3 | __synth__0__1 |
|
||||
| local_dataflow.rb:15:1:17:3 | __synth__0__1 | local_dataflow.rb:15:5:15:5 | x |
|
||||
| local_dataflow.rb:15:1:17:3 | call to each | local_dataflow.rb:15:1:17:3 | ... |
|
||||
| local_dataflow.rb:15:1:17:3 | defined? ... | local_dataflow.rb:15:1:17:3 | [false] ! ... |
|
||||
| local_dataflow.rb:15:1:17:3 | defined? ... | local_dataflow.rb:15:1:17:3 | [true] ! ... |
|
||||
| local_dataflow.rb:15:1:17:3 | nil | local_dataflow.rb:15:1:17:3 | ... = ... |
|
||||
| local_dataflow.rb:15:1:17:3 | nil | local_dataflow.rb:15:1:17:3 | x |
|
||||
| local_dataflow.rb:15:1:17:3 | synthetic *args | local_dataflow.rb:15:1:17:3 | __synth__0__1 |
|
||||
| local_dataflow.rb:15:1:17:3 | x | local_dataflow.rb:15:1:17:3 | defined? ... |
|
||||
| local_dataflow.rb:15:1:17:3 | x | local_dataflow.rb:15:1:17:3 | phi |
|
||||
| local_dataflow.rb:15:10:15:14 | [post] array | local_dataflow.rb:19:10:19:14 | array |
|
||||
| local_dataflow.rb:15:10:15:14 | array | local_dataflow.rb:19:10:19:14 | array |
|
||||
| local_dataflow.rb:16:9:16:10 | 10 | local_dataflow.rb:16:3:16:10 | break |
|
||||
| local_dataflow.rb:19:1:21:3 | ... = ... | local_dataflow.rb:19:1:21:3 | if ... |
|
||||
| local_dataflow.rb:19:1:21:3 | __synth__0__1 | local_dataflow.rb:19:1:21:3 | ... = ... |
|
||||
| local_dataflow.rb:19:1:21:3 | __synth__0__1 | local_dataflow.rb:19:1:21:3 | __synth__0__1 |
|
||||
| local_dataflow.rb:19:1:21:3 | __synth__0__1 | local_dataflow.rb:19:1:21:3 | __synth__0__1 |
|
||||
| local_dataflow.rb:19:1:21:3 | __synth__0__1 | local_dataflow.rb:19:5:19:5 | x |
|
||||
| local_dataflow.rb:19:1:21:3 | call to each | local_dataflow.rb:19:1:21:3 | ... |
|
||||
| local_dataflow.rb:19:1:21:3 | defined? ... | local_dataflow.rb:19:1:21:3 | [false] ! ... |
|
||||
| local_dataflow.rb:19:1:21:3 | defined? ... | local_dataflow.rb:19:1:21:3 | [true] ! ... |
|
||||
| local_dataflow.rb:19:1:21:3 | nil | local_dataflow.rb:19:1:21:3 | ... = ... |
|
||||
| local_dataflow.rb:19:1:21:3 | nil | local_dataflow.rb:19:1:21:3 | x |
|
||||
| local_dataflow.rb:19:1:21:3 | synthetic *args | local_dataflow.rb:19:1:21:3 | __synth__0__1 |
|
||||
| local_dataflow.rb:19:1:21:3 | x | local_dataflow.rb:19:1:21:3 | defined? ... |
|
||||
| local_dataflow.rb:19:1:21:3 | x | local_dataflow.rb:19:1:21:3 | phi |
|
||||
| local_dataflow.rb:19:5:19:5 | x | local_dataflow.rb:20:6:20:6 | x |
|
||||
| local_dataflow.rb:20:6:20:6 | x | local_dataflow.rb:20:6:20:10 | ... > ... |
|
||||
| local_dataflow.rb:20:10:20:10 | 1 | local_dataflow.rb:20:6:20:10 | ... > ... |
|
||||
|
||||
@@ -127,6 +127,8 @@ definition
|
||||
| ssa.rb:26:3:28:5 | <captured entry> self | ssa.rb:25:1:30:3 | self |
|
||||
| ssa.rb:26:3:28:5 | <captured exit> elem | ssa.rb:26:7:26:10 | elem |
|
||||
| ssa.rb:26:3:28:5 | __synth__0__1 | ssa.rb:26:3:28:5 | __synth__0__1 |
|
||||
| ssa.rb:26:3:28:5 | elem | ssa.rb:26:7:26:10 | elem |
|
||||
| ssa.rb:26:3:28:5 | phi | ssa.rb:26:7:26:10 | elem |
|
||||
| ssa.rb:26:7:26:10 | elem | ssa.rb:26:7:26:10 | elem |
|
||||
| ssa.rb:32:1:36:3 | self (m3) | ssa.rb:32:1:36:3 | self |
|
||||
| ssa.rb:33:16:35:5 | <captured entry> self | ssa.rb:32:1:36:3 | self |
|
||||
@@ -316,6 +318,7 @@ read
|
||||
| ssa.rb:19:9:19:9 | phi | ssa.rb:18:8:18:8 | x | ssa.rb:19:9:19:9 | x |
|
||||
| ssa.rb:19:9:19:9 | phi | ssa.rb:18:8:18:8 | x | ssa.rb:20:10:20:10 | x |
|
||||
| ssa.rb:19:9:19:9 | phi | ssa.rb:18:8:18:8 | x | ssa.rb:21:5:21:5 | x |
|
||||
| ssa.rb:25:1:30:3 | <uninitialized> | ssa.rb:26:7:26:10 | elem | ssa.rb:26:3:28:5 | elem |
|
||||
| ssa.rb:25:1:30:3 | self (m2) | ssa.rb:25:1:30:3 | self | ssa.rb:29:3:29:11 | self |
|
||||
| ssa.rb:25:8:25:15 | elements | ssa.rb:25:8:25:15 | elements | ssa.rb:26:15:26:22 | elements |
|
||||
| ssa.rb:26:3:28:5 | <captured entry> self | ssa.rb:25:1:30:3 | self | ssa.rb:27:5:27:13 | self |
|
||||
@@ -470,6 +473,7 @@ firstRead
|
||||
| ssa.rb:10:5:10:5 | i | ssa.rb:2:3:2:3 | i | ssa.rb:11:10:11:10 | i |
|
||||
| ssa.rb:18:1:23:3 | self (m1) | ssa.rb:18:1:23:3 | self | ssa.rb:20:5:20:10 | self |
|
||||
| ssa.rb:19:9:19:9 | phi | ssa.rb:18:8:18:8 | x | ssa.rb:19:9:19:9 | x |
|
||||
| ssa.rb:25:1:30:3 | <uninitialized> | ssa.rb:26:7:26:10 | elem | ssa.rb:26:3:28:5 | elem |
|
||||
| ssa.rb:25:1:30:3 | self (m2) | ssa.rb:25:1:30:3 | self | ssa.rb:29:3:29:11 | self |
|
||||
| ssa.rb:25:8:25:15 | elements | ssa.rb:25:8:25:15 | elements | ssa.rb:26:15:26:22 | elements |
|
||||
| ssa.rb:26:3:28:5 | <captured entry> self | ssa.rb:25:1:30:3 | self | ssa.rb:27:5:27:13 | self |
|
||||
@@ -621,6 +625,7 @@ lastRead
|
||||
| ssa.rb:18:1:23:3 | self (m1) | ssa.rb:18:1:23:3 | self | ssa.rb:20:5:20:10 | self |
|
||||
| ssa.rb:19:9:19:9 | phi | ssa.rb:18:8:18:8 | x | ssa.rb:19:9:19:9 | x |
|
||||
| ssa.rb:19:9:19:9 | phi | ssa.rb:18:8:18:8 | x | ssa.rb:21:5:21:5 | x |
|
||||
| ssa.rb:25:1:30:3 | <uninitialized> | ssa.rb:26:7:26:10 | elem | ssa.rb:26:3:28:5 | elem |
|
||||
| ssa.rb:25:1:30:3 | self (m2) | ssa.rb:25:1:30:3 | self | ssa.rb:29:3:29:11 | self |
|
||||
| ssa.rb:25:8:25:15 | elements | ssa.rb:25:8:25:15 | elements | ssa.rb:26:15:26:22 | elements |
|
||||
| ssa.rb:26:3:28:5 | <captured entry> self | ssa.rb:25:1:30:3 | self | ssa.rb:27:5:27:13 | self |
|
||||
@@ -736,6 +741,8 @@ phi
|
||||
| ssa.rb:5:3:13:5 | phi | ssa.rb:2:3:2:3 | i | ssa.rb:10:5:10:5 | i |
|
||||
| ssa.rb:19:9:19:9 | phi | ssa.rb:18:8:18:8 | x | ssa.rb:18:8:18:8 | x |
|
||||
| ssa.rb:19:9:19:9 | phi | ssa.rb:18:8:18:8 | x | ssa.rb:21:5:21:5 | x |
|
||||
| ssa.rb:26:3:28:5 | phi | ssa.rb:26:7:26:10 | elem | ssa.rb:25:1:30:3 | <uninitialized> |
|
||||
| ssa.rb:26:3:28:5 | phi | ssa.rb:26:7:26:10 | elem | ssa.rb:26:3:28:5 | elem |
|
||||
| ssa.rb:45:3:45:12 | phi | ssa.rb:45:3:45:3 | x | ssa.rb:44:1:47:3 | <uninitialized> |
|
||||
| ssa.rb:45:3:45:12 | phi | ssa.rb:45:3:45:3 | x | ssa.rb:45:3:45:3 | x |
|
||||
| ssa.rb:50:3:50:8 | phi | ssa.rb:49:14:49:14 | y | ssa.rb:49:1:51:3 | <uninitialized> |
|
||||
|
||||
@@ -225,6 +225,8 @@ variableAccess
|
||||
| ssa.rb:21:5:21:5 | x | ssa.rb:18:8:18:8 | x | ssa.rb:18:1:23:3 | m1 |
|
||||
| ssa.rb:21:5:21:5 | x | ssa.rb:18:8:18:8 | x | ssa.rb:18:1:23:3 | m1 |
|
||||
| ssa.rb:25:8:25:15 | elements | ssa.rb:25:8:25:15 | elements | ssa.rb:25:1:30:3 | m2 |
|
||||
| ssa.rb:26:3:28:5 | elem | ssa.rb:26:7:26:10 | elem | ssa.rb:25:1:30:3 | m2 |
|
||||
| ssa.rb:26:3:28:5 | elem | ssa.rb:26:7:26:10 | elem | ssa.rb:25:1:30:3 | m2 |
|
||||
| ssa.rb:26:7:26:10 | elem | ssa.rb:26:7:26:10 | elem | ssa.rb:25:1:30:3 | m2 |
|
||||
| ssa.rb:26:15:26:22 | elements | ssa.rb:25:8:25:15 | elements | ssa.rb:25:1:30:3 | m2 |
|
||||
| ssa.rb:27:5:27:13 | self | ssa.rb:25:1:30:3 | self | ssa.rb:25:1:30:3 | m2 |
|
||||
@@ -353,6 +355,7 @@ explicitWrite
|
||||
| ssa.rb:10:5:10:5 | i | ssa.rb:10:5:10:9 | ... = ... |
|
||||
| ssa.rb:21:5:21:5 | x | ssa.rb:21:5:21:10 | ... -= ... |
|
||||
| ssa.rb:21:5:21:5 | x | ssa.rb:21:5:21:10 | ... = ... |
|
||||
| ssa.rb:26:3:28:5 | elem | ssa.rb:26:3:28:5 | ... = ... |
|
||||
| ssa.rb:26:7:26:10 | elem | ssa.rb:26:3:28:5 | ... = ... |
|
||||
| ssa.rb:40:3:40:4 | m3 | ssa.rb:40:3:40:9 | ... = ... |
|
||||
| ssa.rb:45:3:45:3 | x | ssa.rb:45:3:45:7 | ... = ... |
|
||||
@@ -567,6 +570,7 @@ readAccess
|
||||
| ssa.rb:20:10:20:10 | x |
|
||||
| ssa.rb:21:5:21:5 | x |
|
||||
| ssa.rb:26:3:28:5 | __synth__0__1 |
|
||||
| ssa.rb:26:3:28:5 | elem |
|
||||
| ssa.rb:26:15:26:22 | elements |
|
||||
| ssa.rb:27:5:27:13 | self |
|
||||
| ssa.rb:27:10:27:13 | elem |
|
||||
|
||||
Reference in New Issue
Block a user