Merge branch 'main' into unsafeHtmlConstruction

This commit is contained in:
erik-krogh
2023-01-23 15:01:01 +01:00
510 changed files with 215858 additions and 8014 deletions

BIN
ruby/Cargo.lock generated

Binary file not shown.

View File

@@ -10,7 +10,7 @@ runs:
uses: actions/cache@v3
with:
path: ruby/extractor-pack
key: ${{ runner.os }}-${{ steps.os_version.outputs.version }}-extractor-${{ hashFiles('ruby/rust-toolchain.toml', 'ruby/**/Cargo.lock') }}-${{ hashFiles('ruby/**/*.rs') }}-${{ hashFiles('ruby/codeql-extractor.yml', 'ruby/downgrades', 'ruby/tools', 'ruby/ql/lib/ruby.dbscheme', 'ruby/ql/lib/ruby.dbscheme.stats') }}
key: ${{ runner.os }}-${{ steps.os_version.outputs.version }}-extractor-${{ hashFiles('ruby/rust-toolchain.toml', 'ruby/scripts/create-extractor-pack.sh', 'ruby/**/Cargo.lock', 'ruby/actions/create-extractor-pack/action.yml') }}-${{ hashFiles('ruby/**/*.rs') }}-${{ hashFiles('ruby/codeql-extractor.yml', 'ruby/downgrades', 'ruby/tools', 'ruby/ql/lib/ruby.dbscheme', 'ruby/ql/lib/ruby.dbscheme.stats') }}
- name: Cache cargo
uses: actions/cache@v3
if: steps.cache-extractor.outputs.cache-hit != 'true'
@@ -19,9 +19,11 @@ runs:
~/.cargo/registry
~/.cargo/git
ruby/target
key: ${{ runner.os }}-${{ steps.os_version.outputs.version }}-ruby-qltest-cargo-${{ hashFiles('ruby/rust-toolchain.toml', 'ruby/**/Cargo.lock') }}
key: ${{ runner.os }}-${{ steps.os_version.outputs.version }}-ruby-qltest-cargo-${{ hashFiles('ruby/rust-toolchain.toml', 'ruby/scripts/create-extractor-pack.sh', 'ruby/**/Cargo.lock') }}
- name: Build Extractor
if: steps.cache-extractor.outputs.cache-hit != 'true'
shell: bash
run: scripts/create-extractor-pack.sh
run: |
cargo install cross --version 0.2.1
scripts/create-extractor-pack.sh
working-directory: ruby

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,6 @@
description: Update grammar
compatibility: backwards
ruby_splat_argument_def.rel: reorder ruby_splat_argument_child.rel ( int id, int child) id child
ruby_splat_argument_child.rel: delete
ruby_hash_splat_argument_def.rel: reorder ruby_hash_splat_argument_child.rel ( int id, int child) id child
ruby_hash_splat_argument_child.rel: delete

View File

@@ -9,9 +9,9 @@ edition = "2018"
[dependencies]
flate2 = "1.0"
node-types = { path = "../node-types" }
tree-sitter = "0.19"
tree-sitter-embedded-template = { git = "https://github.com/tree-sitter/tree-sitter-embedded-template.git", rev = "1a538da253d73f896b9f6c0c7d79cda58791ac5c" }
tree-sitter-ruby = { git = "https://github.com/tree-sitter/tree-sitter-ruby.git", rev = "ad1043283b1f9daf4aad381b6a81f18a5a27fe7e" }
tree-sitter = "0.20"
tree-sitter-embedded-template = { git = "https://github.com/tree-sitter/tree-sitter-embedded-template.git", rev = "a13085849cf69e2401ec44e38cffc3d73f22f3df" }
tree-sitter-ruby = { git = "https://github.com/tree-sitter/tree-sitter-ruby.git", rev = "7a1921bcfd90e3a04c1ad011059087aaf0168dd4" }
clap = "3.0"
tracing = "0.1"
tracing-subscriber = { version = "0.3.3", features = ["env-filter"] }

View File

@@ -11,5 +11,5 @@ clap = "3.0"
node-types = { path = "../node-types" }
tracing = "0.1"
tracing-subscriber = { version = "0.3.3", features = ["env-filter"] }
tree-sitter-embedded-template = { git = "https://github.com/tree-sitter/tree-sitter-embedded-template.git", rev = "1a538da253d73f896b9f6c0c7d79cda58791ac5c" }
tree-sitter-ruby = { git = "https://github.com/tree-sitter/tree-sitter-ruby.git", rev = "ad1043283b1f9daf4aad381b6a81f18a5a27fe7e" }
tree-sitter-embedded-template = { git = "https://github.com/tree-sitter/tree-sitter-embedded-template.git", rev = "a13085849cf69e2401ec44e38cffc3d73f22f3df" }
tree-sitter-ruby = { git = "https://github.com/tree-sitter/tree-sitter-ruby.git", rev = "7a1921bcfd90e3a04c1ad011059087aaf0168dd4" }

View File

@@ -1,3 +1,7 @@
## 0.5.1
No user-facing changes.
## 0.5.0
### Major Analysis Improvements

View File

@@ -0,0 +1,4 @@
---
category: minorAnalysis
---
* Ruby 3.2: anonymous rest and keyword rest arguments can now be passed as arguments, instead of just used in method parameters.

View File

@@ -0,0 +1,3 @@
## 0.5.1
No user-facing changes.

View File

@@ -1,2 +1,2 @@
---
lastReleaseVersion: 0.5.0
lastReleaseVersion: 0.5.1

View File

@@ -181,7 +181,10 @@ class HashSplatParameter extends NamedParameter, THashSplatParameter {
final override string getAPrimaryQlClass() { result = "HashSplatParameter" }
final override LocalVariable getVariable() { result = TLocalVariableReal(_, _, g.getName()) }
final override LocalVariable getVariable() {
result = TLocalVariableReal(_, _, g.getName()) or
result = TLocalVariableSynth(this, 0)
}
final override string toString() {
result = "**" + this.getName()
@@ -307,7 +310,10 @@ class SplatParameter extends NamedParameter, TSplatParameter {
final override string getAPrimaryQlClass() { result = "SplatParameter" }
final override LocalVariable getVariable() { result = TLocalVariableReal(_, _, g.getName()) }
final override LocalVariable getVariable() {
result = TLocalVariableReal(_, _, g.getName()) or
result = TLocalVariableSynth(this, 0)
}
final override string toString() {
result = "*" + this.getName()

View File

@@ -36,7 +36,7 @@ class LocalVariable extends Variable, TLocalVariable {
/** Gets the access where this local variable is first introduced. */
VariableAccess getDefiningAccess() {
result = this.(LocalVariableReal).getDefiningAccessImpl() or
synthChild(any(BlockParameter p | this = p.getVariable()), 0, result)
synthChild(any(NamedParameter p | this = p.getVariable()), 0, result)
}
/**
@@ -120,7 +120,7 @@ class VariableAccess extends Expr instanceof VariableAccessImpl {
or
this = any(HashPattern p).getValue(_)
or
synthChild(any(BlockParameter p), 0, this)
synthChild(any(NamedParameter p), 0, this)
}
}

View File

@@ -42,7 +42,10 @@ class SplatExprReal extends UnaryOperationImpl, TSplatExprReal {
final override string getOperatorImpl() { result = "*" }
final override Expr getOperandImpl() { toGenerated(result) = g.getChild() }
final override Expr getOperandImpl() {
toGenerated(result) = g.getChild() or
synthChild(this, 0, result)
}
}
class SplatExprSynth extends UnaryOperationImpl, TSplatExprSynth {
@@ -56,7 +59,10 @@ class HashSplatExprImpl extends UnaryOperationImpl, THashSplatExpr {
HashSplatExprImpl() { this = THashSplatExpr(g) }
final override Expr getOperandImpl() { toGenerated(result) = g.getChild() }
final override Expr getOperandImpl() {
toGenerated(result) = g.getChild() or
synthChild(this, 0, result)
}
final override string getOperatorImpl() { result = "**" }
}

View File

@@ -1317,46 +1317,62 @@ private module ImplicitHashValueSynthesis {
/**
* ```rb
* def foo(&)
* bar(&)
* def foo(*, **, &)
* bar(*, **, &)
* end
* ```
* desugars to,
* ```rb
* def foo(&__synth_0)
* bar(&__synth_0)
* def foo(*__synth_0, **__synth_1, &__synth_2)
* bar(*__synth_0, **__synth_1, &__synth_2)
* end
* ```
*/
private module AnonymousBlockParameterSynth {
private BlockParameter anonymousBlockParameter() {
private module AnonymousParameterSynth {
private class AnonymousParameter = TBlockParameter or THashSplatParameter or TSplatParameter;
private class AnonymousArgument = TBlockArgument or THashSplatExpr or TSplatExpr;
private AnonymousParameter anonymousParameter() {
exists(Ruby::BlockParameter p | not exists(p.getName()) and toGenerated(result) = p)
or
exists(Ruby::SplatParameter p | not exists(p.getName()) and toGenerated(result) = p)
or
exists(Ruby::HashSplatParameter p | not exists(p.getName()) and toGenerated(result) = p)
}
private BlockArgument anonymousBlockArgument() {
private AnonymousArgument anonymousArgument() {
exists(Ruby::BlockArgument p | not exists(p.getChild()) and toGenerated(result) = p)
or
exists(Ruby::SplatArgument p | not exists(p.getChild()) and toGenerated(result) = p)
or
exists(Ruby::HashSplatArgument p | not exists(p.getChild()) and toGenerated(result) = p)
}
private class AnonymousBlockParameterSynthesis extends Synthesis {
private class AnonymousParameterSynthesis extends Synthesis {
final override predicate child(AstNode parent, int i, Child child) {
i = 0 and
parent = anonymousBlockParameter() and
parent = anonymousParameter() and
child = SynthChild(LocalVariableAccessSynthKind(TLocalVariableSynth(parent, 0)))
}
final override predicate localVariable(AstNode n, int i) {
n = anonymousBlockParameter() and i = 0
}
final override predicate localVariable(AstNode n, int i) { n = anonymousParameter() and i = 0 }
}
private class AnonymousBlockArgumentSynthesis extends Synthesis {
private class AnonymousArgumentSynthesis extends Synthesis {
final override predicate child(AstNode parent, int i, Child child) {
i = 0 and
parent = anonymousBlockArgument() and
exists(BlockParameter param |
param = anonymousBlockParameter() and
parent = anonymousArgument() and
exists(AnonymousParameter param |
param = anonymousParameter() and
scopeOf(toGenerated(parent)).getEnclosingMethod() = scopeOf(toGenerated(param)) and
child = SynthChild(LocalVariableAccessSynthKind(TLocalVariableSynth(param, 0)))
|
param instanceof TBlockParameter and parent instanceof TBlockArgument
or
param instanceof TSplatParameter and parent instanceof TSplatExpr
or
param instanceof THashSplatParameter and parent instanceof THashSplatExpr
)
}
}

View File

@@ -875,10 +875,10 @@ module Ruby {
final override string getAPrimaryQlClass() { result = "HashSplatArgument" }
/** Gets the child of this node. */
final UnderscoreArg getChild() { ruby_hash_splat_argument_def(this, result) }
final UnderscoreArg getChild() { ruby_hash_splat_argument_child(this, result) }
/** Gets a field or child node of this node. */
final override AstNode getAFieldOrChild() { ruby_hash_splat_argument_def(this, result) }
final override AstNode getAFieldOrChild() { ruby_hash_splat_argument_child(this, result) }
}
/** A class representing `hash_splat_nil` tokens. */
@@ -1572,10 +1572,10 @@ module Ruby {
final override string getAPrimaryQlClass() { result = "SplatArgument" }
/** Gets the child of this node. */
final UnderscoreArg getChild() { ruby_splat_argument_def(this, result) }
final UnderscoreArg getChild() { ruby_splat_argument_child(this, result) }
/** Gets a field or child node of this node. */
final override AstNode getAFieldOrChild() { ruby_splat_argument_def(this, result) }
final override AstNode getAFieldOrChild() { ruby_splat_argument_child(this, result) }
}
/** A class representing `splat_parameter` nodes. */

View File

@@ -137,7 +137,7 @@ abstract class SummarizedCallable extends LibraryCallable, Impl::Public::Summari
DataFlow::ParameterNode getParameter(string s) {
exists(ParameterPosition pos |
DataFlowImplCommon::parameterNode(result, TLibraryCallable(this), pos) and
s = getParameterPositionCsv(pos)
s = getParameterPosition(pos)
)
}
}

View File

@@ -45,6 +45,16 @@ module Consistency {
) {
none()
}
/** Holds if `(c, pos, p)` should be excluded from the consistency test `uniqueParameterNodeAtPosition`. */
predicate uniqueParameterNodeAtPositionExclude(DataFlowCallable c, ParameterPosition pos, Node p) {
none()
}
/** Holds if `(c, pos, p)` should be excluded from the consistency test `uniqueParameterNodePosition`. */
predicate uniqueParameterNodePositionExclude(DataFlowCallable c, ParameterPosition pos, Node p) {
none()
}
}
private class RelevantNode extends Node {
@@ -246,6 +256,7 @@ module Consistency {
query predicate uniqueParameterNodeAtPosition(
DataFlowCallable c, ParameterPosition pos, Node p, string msg
) {
not any(ConsistencyConfiguration conf).uniqueParameterNodeAtPositionExclude(c, pos, p) and
isParameterNode(p, c, pos) and
not exists(unique(Node p0 | isParameterNode(p0, c, pos))) and
msg = "Parameters with overlapping positions."
@@ -254,6 +265,7 @@ module Consistency {
query predicate uniqueParameterNodePosition(
DataFlowCallable c, ParameterPosition pos, Node p, string msg
) {
not any(ConsistencyConfiguration conf).uniqueParameterNodePositionExclude(c, pos, p) and
isParameterNode(p, c, pos) and
not exists(unique(ParameterPosition pos0 | isParameterNode(p, c, pos0))) and
msg = "Parameter node with multiple positions."

View File

@@ -39,6 +39,11 @@ module Public {
)
or
exists(ReturnKind rk | this = TReturnSummaryComponent(rk) and result = "return (" + rk + ")")
or
exists(SummaryComponent::SyntheticGlobal sg |
this = TSyntheticGlobalSummaryComponent(sg) and
result = "synthetic global (" + sg + ")"
)
}
}
@@ -159,24 +164,24 @@ module Public {
SummaryComponentStack return(ReturnKind rk) { result = singleton(SummaryComponent::return(rk)) }
}
private predicate noComponentSpecificCsv(SummaryComponent sc) {
not exists(getComponentSpecificCsv(sc))
private predicate noComponentSpecific(SummaryComponent sc) {
not exists(getComponentSpecific(sc))
}
/** Gets a textual representation of this component used for flow summaries. */
private string getComponentCsv(SummaryComponent sc) {
result = getComponentSpecificCsv(sc)
private string getComponent(SummaryComponent sc) {
result = getComponentSpecific(sc)
or
noComponentSpecificCsv(sc) and
noComponentSpecific(sc) and
(
exists(ArgumentPosition pos |
sc = TParameterSummaryComponent(pos) and
result = "Parameter[" + getArgumentPositionCsv(pos) + "]"
result = "Parameter[" + getArgumentPosition(pos) + "]"
)
or
exists(ParameterPosition pos |
sc = TArgumentSummaryComponent(pos) and
result = "Argument[" + getParameterPositionCsv(pos) + "]"
result = "Argument[" + getParameterPosition(pos) + "]"
)
or
sc = TReturnSummaryComponent(getReturnValueKind()) and result = "ReturnValue"
@@ -184,16 +189,16 @@ module Public {
}
/** Gets a textual representation of this stack used for flow summaries. */
string getComponentStackCsv(SummaryComponentStack stack) {
string getComponentStack(SummaryComponentStack stack) {
exists(SummaryComponent head, SummaryComponentStack tail |
head = stack.head() and
tail = stack.tail() and
result = getComponentStackCsv(tail) + "." + getComponentCsv(head)
result = getComponentStack(tail) + "." + getComponent(head)
)
or
exists(SummaryComponent c |
stack = TSingletonSummaryComponentStack(c) and
result = getComponentCsv(c)
result = getComponent(c)
)
}
@@ -1217,8 +1222,8 @@ module Private {
c.relevantSummary(input, output, preservesValue) and
csv =
c.getCallableCsv() // Callable information
+ getComponentStackCsv(input) + ";" // input
+ getComponentStackCsv(output) + ";" // output
+ getComponentStack(input) + ";" // input
+ getComponentStack(output) + ";" // output
+ renderKind(preservesValue) + ";" // kind
+ renderProvenance(c) // provenance
)

View File

@@ -139,10 +139,10 @@ SummaryComponent interpretComponentSpecific(AccessPathToken c) {
}
/** Gets the textual representation of a summary component in the format used for flow summaries. */
string getComponentSpecificCsv(SummaryComponent sc) { none() }
string getComponentSpecific(SummaryComponent sc) { none() }
/** Gets the textual representation of a parameter position in the format used for flow summaries. */
string getParameterPositionCsv(ParameterPosition pos) {
string getParameterPosition(ParameterPosition pos) {
exists(int i |
pos.isPositional(i) and
result = i.toString()
@@ -172,7 +172,7 @@ string getParameterPositionCsv(ParameterPosition pos) {
}
/** Gets the textual representation of an argument position in the format used for flow summaries. */
string getArgumentPositionCsv(ArgumentPosition pos) {
string getArgumentPosition(ArgumentPosition pos) {
pos.isSelf() and result = "self"
or
pos.isBlock() and result = "block"

View File

@@ -1,5 +1,5 @@
name: codeql/ruby-all
version: 0.5.1-dev
version: 0.5.2-dev
groups: ruby
extractor: ruby
dbscheme: ruby.dbscheme

View File

@@ -661,9 +661,13 @@ ruby_hash_pattern_def(
unique int id: @ruby_hash_pattern
);
ruby_hash_splat_argument_child(
unique int ruby_hash_splat_argument: @ruby_hash_splat_argument ref,
unique int child: @ruby_underscore_arg ref
);
ruby_hash_splat_argument_def(
unique int id: @ruby_hash_splat_argument,
int child: @ruby_underscore_arg ref
unique int id: @ruby_hash_splat_argument
);
ruby_hash_splat_parameter_name(
@@ -1112,9 +1116,13 @@ ruby_singleton_method_def(
int object: @ruby_singleton_method_object_type ref
);
ruby_splat_argument_child(
unique int ruby_splat_argument: @ruby_splat_argument ref,
unique int child: @ruby_underscore_arg ref
);
ruby_splat_argument_def(
unique int id: @ruby_splat_argument,
int child: @ruby_underscore_arg ref
unique int id: @ruby_splat_argument
);
ruby_splat_parameter_name(

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,6 @@
description: Update grammar
compatibility: full
ruby_splat_argument_def.rel: reorder ruby_splat_argument_def.rel ( int id, int child) id
ruby_splat_argument_child.rel: reorder ruby_splat_argument_def.rel ( int id, int child) id child
ruby_hash_splat_argument_def.rel: reorder ruby_hash_splat_argument_def.rel ( int id, int child) id
ruby_hash_splat_argument_child.rel: reorder ruby_hash_splat_argument_def.rel ( int id, int child) id child

View File

@@ -1,3 +1,13 @@
## 0.5.1
### New Queries
* Added a new query, `rb/unsafe-code-construction`, to detect libraries that unsafely construct code from their inputs.
### Minor Analysis Improvements
* The `rb/unsafe-deserialization` query now recognizes input from STDIN as a source.
## 0.5.0
### New Queries

View File

@@ -1,4 +0,0 @@
---
category: newQuery
---
* Added a new query, `rb/unsafe-code-construction`, to detect libraries that unsafely construct code from their inputs.

View File

@@ -1,4 +0,0 @@
---
category: minorAnalysis
---
* The `rb/unsafe-deserialization` query now recognizes input from STDIN as a source.

View File

@@ -0,0 +1,9 @@
## 0.5.1
### New Queries
* Added a new query, `rb/unsafe-code-construction`, to detect libraries that unsafely construct code from their inputs.
### Minor Analysis Improvements
* The `rb/unsafe-deserialization` query now recognizes input from STDIN as a source.

View File

@@ -1,2 +1,2 @@
---
lastReleaseVersion: 0.5.0
lastReleaseVersion: 0.5.1

View File

@@ -1,5 +1,5 @@
name: codeql/ruby-queries
version: 0.5.1-dev
version: 0.5.2-dev
groups:
- ruby
- queries

View File

@@ -470,293 +470,299 @@ calls/calls.rb:
# 271| getArgument: [SplatExpr] * ...
# 271| getAnOperand/getOperand/getReceiver: [MethodCall] call to bar
# 271| getReceiver: [ConstantReadAccess] X
# 274| getStmt: [MethodCall] call to foo
# 274| getReceiver: [SelfVariableAccess] self
# 274| getArgument: [HashSplatExpr] ** ...
# 274| getAnOperand/getOperand/getReceiver: [MethodCall] call to bar
# 274| getReceiver: [SelfVariableAccess] self
# 272| getStmt: [MethodCall] call to foo
# 272| getReceiver: [SelfVariableAccess] self
# 272| getArgument: [SplatExpr] * ...
# 275| getStmt: [MethodCall] call to foo
# 275| getReceiver: [SelfVariableAccess] self
# 275| getArgument: [HashSplatExpr] ** ...
# 275| getAnOperand/getOperand/getReceiver: [MethodCall] call to bar
# 275| getReceiver: [ConstantReadAccess] X
# 278| getStmt: [MethodCall] call to foo
# 278| getReceiver: [SelfVariableAccess] self
# 278| getArgument: [Pair] Pair
# 278| getKey: [SymbolLiteral] :blah
# 278| getComponent: [StringTextComponent] blah
# 278| getValue: [MethodCall] call to bar
# 278| getReceiver: [SelfVariableAccess] self
# 279| getStmt: [MethodCall] call to foo
# 279| getReceiver: [SelfVariableAccess] self
# 279| getArgument: [Pair] Pair
# 279| getKey: [SymbolLiteral] :blah
# 279| getComponent: [StringTextComponent] blah
# 279| getValue: [MethodCall] call to bar
# 279| getReceiver: [ConstantReadAccess] X
# 284| getStmt: [ClassDeclaration] MyClass
# 285| getStmt: [Method] my_method
# 286| getStmt: [SuperCall] super call to my_method
# 287| getStmt: [SuperCall] super call to my_method
# 275| getReceiver: [SelfVariableAccess] self
# 276| getStmt: [MethodCall] call to foo
# 276| getReceiver: [SelfVariableAccess] self
# 276| getArgument: [HashSplatExpr] ** ...
# 276| getAnOperand/getOperand/getReceiver: [MethodCall] call to bar
# 276| getReceiver: [ConstantReadAccess] X
# 277| getStmt: [MethodCall] call to foo
# 277| getReceiver: [SelfVariableAccess] self
# 277| getArgument: [HashSplatExpr] ** ...
# 280| getStmt: [MethodCall] call to foo
# 280| getReceiver: [SelfVariableAccess] self
# 280| getArgument: [Pair] Pair
# 280| getKey: [SymbolLiteral] :blah
# 280| getComponent: [StringTextComponent] blah
# 280| getValue: [MethodCall] call to bar
# 280| getReceiver: [SelfVariableAccess] self
# 281| getStmt: [MethodCall] call to foo
# 281| getReceiver: [SelfVariableAccess] self
# 281| getArgument: [Pair] Pair
# 281| getKey: [SymbolLiteral] :blah
# 281| getComponent: [StringTextComponent] blah
# 281| getValue: [MethodCall] call to bar
# 281| getReceiver: [ConstantReadAccess] X
# 286| getStmt: [ClassDeclaration] MyClass
# 287| getStmt: [Method] my_method
# 288| getStmt: [SuperCall] super call to my_method
# 288| getArgument: [StringLiteral] "blah"
# 288| getComponent: [StringTextComponent] blah
# 289| getStmt: [SuperCall] super call to my_method
# 289| getArgument: [IntegerLiteral] 1
# 289| getArgument: [IntegerLiteral] 2
# 289| getArgument: [IntegerLiteral] 3
# 290| getStmt: [SuperCall] super call to my_method
# 290| getBlock: [BraceBlock] { ... }
# 290| getParameter: [SimpleParameter] x
# 290| getDefiningAccess: [LocalVariableAccess] x
# 290| getStmt: [AddExpr] ... + ...
# 290| getAnOperand/getLeftOperand/getReceiver: [LocalVariableAccess] x
# 290| getAnOperand/getArgument/getRightOperand: [IntegerLiteral] 1
# 290| getArgument: [StringLiteral] "blah"
# 290| getComponent: [StringTextComponent] blah
# 291| getStmt: [SuperCall] super call to my_method
# 291| getBlock: [DoBlock] do ... end
# 291| getParameter: [SimpleParameter] x
# 291| getDefiningAccess: [LocalVariableAccess] x
# 291| getStmt: [MulExpr] ... * ...
# 291| getAnOperand/getLeftOperand/getReceiver: [LocalVariableAccess] x
# 291| getAnOperand/getArgument/getRightOperand: [IntegerLiteral] 2
# 291| getArgument: [IntegerLiteral] 1
# 291| getArgument: [IntegerLiteral] 2
# 291| getArgument: [IntegerLiteral] 3
# 292| getStmt: [SuperCall] super call to my_method
# 292| getArgument: [IntegerLiteral] 4
# 292| getArgument: [IntegerLiteral] 5
# 292| getBlock: [BraceBlock] { ... }
# 292| getParameter: [SimpleParameter] x
# 292| getDefiningAccess: [LocalVariableAccess] x
# 292| getStmt: [AddExpr] ... + ...
# 292| getAnOperand/getLeftOperand/getReceiver: [LocalVariableAccess] x
# 292| getAnOperand/getArgument/getRightOperand: [IntegerLiteral] 100
# 292| getAnOperand/getArgument/getRightOperand: [IntegerLiteral] 1
# 293| getStmt: [SuperCall] super call to my_method
# 293| getArgument: [IntegerLiteral] 6
# 293| getArgument: [IntegerLiteral] 7
# 293| getBlock: [DoBlock] do ... end
# 293| getParameter: [SimpleParameter] x
# 293| getDefiningAccess: [LocalVariableAccess] x
# 293| getStmt: [AddExpr] ... + ...
# 293| getStmt: [MulExpr] ... * ...
# 293| getAnOperand/getLeftOperand/getReceiver: [LocalVariableAccess] x
# 293| getAnOperand/getArgument/getRightOperand: [IntegerLiteral] 200
# 301| getStmt: [ClassDeclaration] AnotherClass
# 302| getStmt: [Method] another_method
# 303| getStmt: [MethodCall] call to super
# 303| getReceiver: [MethodCall] call to foo
# 303| getReceiver: [SelfVariableAccess] self
# 304| getStmt: [MethodCall] call to super
# 304| getReceiver: [SelfVariableAccess] self
# 293| getAnOperand/getArgument/getRightOperand: [IntegerLiteral] 2
# 294| getStmt: [SuperCall] super call to my_method
# 294| getArgument: [IntegerLiteral] 4
# 294| getArgument: [IntegerLiteral] 5
# 294| getBlock: [BraceBlock] { ... }
# 294| getParameter: [SimpleParameter] x
# 294| getDefiningAccess: [LocalVariableAccess] x
# 294| getStmt: [AddExpr] ... + ...
# 294| getAnOperand/getLeftOperand/getReceiver: [LocalVariableAccess] x
# 294| getAnOperand/getArgument/getRightOperand: [IntegerLiteral] 100
# 295| getStmt: [SuperCall] super call to my_method
# 295| getArgument: [IntegerLiteral] 6
# 295| getArgument: [IntegerLiteral] 7
# 295| getBlock: [DoBlock] do ... end
# 295| getParameter: [SimpleParameter] x
# 295| getDefiningAccess: [LocalVariableAccess] x
# 295| getStmt: [AddExpr] ... + ...
# 295| getAnOperand/getLeftOperand/getReceiver: [LocalVariableAccess] x
# 295| getAnOperand/getArgument/getRightOperand: [IntegerLiteral] 200
# 303| getStmt: [ClassDeclaration] AnotherClass
# 304| getStmt: [Method] another_method
# 305| getStmt: [MethodCall] call to super
# 305| getReceiver: [SuperCall] super call to another_method
# 310| getStmt: [MethodCall] call to call
# 310| getReceiver: [MethodCall] call to foo
# 310| getReceiver: [SelfVariableAccess] self
# 311| getStmt: [MethodCall] call to call
# 311| getReceiver: [MethodCall] call to foo
# 311| getReceiver: [SelfVariableAccess] self
# 311| getArgument: [IntegerLiteral] 1
# 314| getStmt: [AssignExpr] ... = ...
# 314| getAnOperand/getLeftOperand: [MethodCall] call to foo
# 314| getReceiver: [SelfVariableAccess] self
# 314| getAnOperand/getRightOperand: [IntegerLiteral] 10
# 315| getStmt: [AssignExpr] ... = ...
# 315| getAnOperand/getLeftOperand: [ElementReference] ...[...]
# 315| getReceiver: [MethodCall] call to foo
# 315| getReceiver: [SelfVariableAccess] self
# 315| getArgument: [IntegerLiteral] 0
# 315| getAnOperand/getRightOperand: [IntegerLiteral] 10
# 305| getReceiver: [MethodCall] call to foo
# 305| getReceiver: [SelfVariableAccess] self
# 306| getStmt: [MethodCall] call to super
# 306| getReceiver: [SelfVariableAccess] self
# 307| getStmt: [MethodCall] call to super
# 307| getReceiver: [SuperCall] super call to another_method
# 312| getStmt: [MethodCall] call to call
# 312| getReceiver: [MethodCall] call to foo
# 312| getReceiver: [SelfVariableAccess] self
# 313| getStmt: [MethodCall] call to call
# 313| getReceiver: [MethodCall] call to foo
# 313| getReceiver: [SelfVariableAccess] self
# 313| getArgument: [IntegerLiteral] 1
# 316| getStmt: [AssignExpr] ... = ...
# 316| getAnOperand/getLeftOperand: [DestructuredLhsExpr] (..., ...)
# 316| getElement: [MethodCall] call to foo
# 316| getReceiver: [SelfVariableAccess] self
# 316| getElement: [MethodCall] call to bar
# 316| getReceiver: [SelfVariableAccess] self
# 316| getElement: [ElementReference] ...[...]
# 316| getReceiver: [MethodCall] call to foo
# 316| getReceiver: [SelfVariableAccess] self
# 316| getArgument: [IntegerLiteral] 4
# 316| getAnOperand/getRightOperand: [ArrayLiteral] [...]
# 316| getElement: [IntegerLiteral] 1
# 316| getElement: [IntegerLiteral] 2
# 316| getElement: [IntegerLiteral] 3
# 316| getElement: [IntegerLiteral] 4
# 316| getAnOperand/getLeftOperand: [MethodCall] call to foo
# 316| getReceiver: [SelfVariableAccess] self
# 316| getAnOperand/getRightOperand: [IntegerLiteral] 10
# 317| getStmt: [AssignExpr] ... = ...
# 317| getAnOperand/getLeftOperand: [DestructuredLhsExpr] (..., ...)
# 317| getElement: [LocalVariableAccess] a
# 317| getElement: [ElementReference] ...[...]
# 317| getReceiver: [MethodCall] call to foo
# 317| getReceiver: [SelfVariableAccess] self
# 317| getArgument: [IntegerLiteral] 5
# 317| getAnOperand/getRightOperand: [ArrayLiteral] [...]
# 317| getElement: [IntegerLiteral] 1
# 317| getElement: [IntegerLiteral] 2
# 317| getElement: [IntegerLiteral] 3
# 318| getStmt: [AssignAddExpr] ... += ...
# 318| getAnOperand/getLeftOperand: [MethodCall] call to count
# 318| getReceiver: [SelfVariableAccess] self
# 318| getAnOperand/getRightOperand: [IntegerLiteral] 1
# 319| getStmt: [AssignAddExpr] ... += ...
# 319| getAnOperand/getLeftOperand: [ElementReference] ...[...]
# 319| getReceiver: [MethodCall] call to foo
# 319| getReceiver: [SelfVariableAccess] self
# 319| getArgument: [IntegerLiteral] 0
# 319| getAnOperand/getRightOperand: [IntegerLiteral] 1
# 320| getStmt: [AssignMulExpr] ... *= ...
# 320| getAnOperand/getLeftOperand: [ElementReference] ...[...]
# 320| getReceiver: [MethodCall] call to bar
# 320| getReceiver: [MethodCall] call to foo
# 320| getReceiver: [SelfVariableAccess] self
# 320| getArgument: [IntegerLiteral] 0
# 320| getArgument: [MethodCall] call to baz
# 320| getReceiver: [MethodCall] call to foo
# 320| getReceiver: [SelfVariableAccess] self
# 320| getArgument: [AddExpr] ... + ...
# 320| getAnOperand/getLeftOperand/getReceiver: [MethodCall] call to boo
# 320| getReceiver: [MethodCall] call to foo
# 320| getReceiver: [SelfVariableAccess] self
# 320| getAnOperand/getArgument/getRightOperand: [IntegerLiteral] 1
# 320| getAnOperand/getRightOperand: [IntegerLiteral] 2
# 323| getStmt: [Method] foo
# 323| getStmt: [MethodCall] call to bar
# 323| getReceiver: [SelfVariableAccess] self
# 324| getStmt: [Method] foo
# 324| getStmt: [MethodCall] call to bar
# 324| getReceiver: [SelfVariableAccess] self
# 317| getAnOperand/getLeftOperand: [ElementReference] ...[...]
# 317| getReceiver: [MethodCall] call to foo
# 317| getReceiver: [SelfVariableAccess] self
# 317| getArgument: [IntegerLiteral] 0
# 317| getAnOperand/getRightOperand: [IntegerLiteral] 10
# 318| getStmt: [AssignExpr] ... = ...
# 318| getAnOperand/getLeftOperand: [DestructuredLhsExpr] (..., ...)
# 318| getElement: [MethodCall] call to foo
# 318| getReceiver: [SelfVariableAccess] self
# 318| getElement: [MethodCall] call to bar
# 318| getReceiver: [SelfVariableAccess] self
# 318| getElement: [ElementReference] ...[...]
# 318| getReceiver: [MethodCall] call to foo
# 318| getReceiver: [SelfVariableAccess] self
# 318| getArgument: [IntegerLiteral] 4
# 318| getAnOperand/getRightOperand: [ArrayLiteral] [...]
# 318| getElement: [IntegerLiteral] 1
# 318| getElement: [IntegerLiteral] 2
# 318| getElement: [IntegerLiteral] 3
# 318| getElement: [IntegerLiteral] 4
# 319| getStmt: [AssignExpr] ... = ...
# 319| getAnOperand/getLeftOperand: [DestructuredLhsExpr] (..., ...)
# 319| getElement: [LocalVariableAccess] a
# 319| getElement: [ElementReference] ...[...]
# 319| getReceiver: [MethodCall] call to foo
# 319| getReceiver: [SelfVariableAccess] self
# 319| getArgument: [IntegerLiteral] 5
# 319| getAnOperand/getRightOperand: [ArrayLiteral] [...]
# 319| getElement: [IntegerLiteral] 1
# 319| getElement: [IntegerLiteral] 2
# 319| getElement: [IntegerLiteral] 3
# 320| getStmt: [AssignAddExpr] ... += ...
# 320| getAnOperand/getLeftOperand: [MethodCall] call to count
# 320| getReceiver: [SelfVariableAccess] self
# 320| getAnOperand/getRightOperand: [IntegerLiteral] 1
# 321| getStmt: [AssignAddExpr] ... += ...
# 321| getAnOperand/getLeftOperand: [ElementReference] ...[...]
# 321| getReceiver: [MethodCall] call to foo
# 321| getReceiver: [SelfVariableAccess] self
# 321| getArgument: [IntegerLiteral] 0
# 321| getAnOperand/getRightOperand: [IntegerLiteral] 1
# 322| getStmt: [AssignMulExpr] ... *= ...
# 322| getAnOperand/getLeftOperand: [ElementReference] ...[...]
# 322| getReceiver: [MethodCall] call to bar
# 322| getReceiver: [MethodCall] call to foo
# 322| getReceiver: [SelfVariableAccess] self
# 322| getArgument: [IntegerLiteral] 0
# 322| getArgument: [MethodCall] call to baz
# 322| getReceiver: [MethodCall] call to foo
# 322| getReceiver: [SelfVariableAccess] self
# 322| getArgument: [AddExpr] ... + ...
# 322| getAnOperand/getLeftOperand/getReceiver: [MethodCall] call to boo
# 322| getReceiver: [MethodCall] call to foo
# 322| getReceiver: [SelfVariableAccess] self
# 322| getAnOperand/getArgument/getRightOperand: [IntegerLiteral] 1
# 322| getAnOperand/getRightOperand: [IntegerLiteral] 2
# 325| getStmt: [Method] foo
# 325| getParameter: [SimpleParameter] x
# 325| getDefiningAccess: [LocalVariableAccess] x
# 325| getStmt: [MethodCall] call to bar
# 325| getReceiver: [SelfVariableAccess] self
# 326| getStmt: [SingletonMethod] foo
# 326| getObject: [ConstantReadAccess] Object
# 326| getStmt: [Method] foo
# 326| getStmt: [MethodCall] call to bar
# 326| getReceiver: [SelfVariableAccess] self
# 327| getStmt: [SingletonMethod] foo
# 327| getObject: [ConstantReadAccess] Object
# 327| getStmt: [Method] foo
# 327| getParameter: [SimpleParameter] x
# 327| getDefiningAccess: [LocalVariableAccess] x
# 327| getStmt: [MethodCall] call to bar
# 327| getReceiver: [SelfVariableAccess] self
# 328| getStmt: [Method] foo
# 328| getStmt: [RescueModifierExpr] ... rescue ...
# 328| getBody: [MethodCall] call to bar
# 328| getReceiver: [SelfVariableAccess] self
# 328| getHandler: [ParenthesizedExpr] ( ... )
# 328| getStmt: [MethodCall] call to print
# 328| getReceiver: [SelfVariableAccess] self
# 328| getArgument: [StringLiteral] "error"
# 328| getComponent: [StringTextComponent] error
# 331| getStmt: [Method] foo
# 331| getParameter: [ForwardParameter] ...
# 332| getStmt: [SuperCall] super call to foo
# 332| getArgument: [ForwardedArguments] ...
# 335| getStmt: [Method] foo
# 335| getParameter: [SimpleParameter] a
# 335| getDefiningAccess: [LocalVariableAccess] a
# 335| getParameter: [SimpleParameter] b
# 335| getDefiningAccess: [LocalVariableAccess] b
# 335| getParameter: [ForwardParameter] ...
# 336| getStmt: [MethodCall] call to bar
# 336| getReceiver: [SelfVariableAccess] self
# 336| getArgument: [LocalVariableAccess] b
# 336| getArgument: [ForwardedArguments] ...
# 340| getStmt: [ForExpr] for ... in ...
# 340| getPattern: [DestructuredLhsExpr] (..., ...)
# 340| getElement: [LocalVariableAccess] x
# 340| getElement: [LocalVariableAccess] y
# 340| getElement: [LocalVariableAccess] z
# 340| getValue: [ArrayLiteral] [...]
# 340| getElement: [ArrayLiteral] [...]
# 340| getElement: [IntegerLiteral] 1
# 340| getElement: [IntegerLiteral] 2
# 340| getElement: [IntegerLiteral] 3
# 340| getElement: [ArrayLiteral] [...]
# 340| getElement: [IntegerLiteral] 4
# 340| getElement: [IntegerLiteral] 5
# 340| getElement: [IntegerLiteral] 6
# 340| getBody: [StmtSequence] do ...
# 341| getStmt: [MethodCall] call to foo
# 341| getReceiver: [SelfVariableAccess] self
# 341| getArgument: [LocalVariableAccess] x
# 341| getArgument: [LocalVariableAccess] y
# 341| getArgument: [LocalVariableAccess] z
# 344| getStmt: [MethodCall] call to foo
# 344| getReceiver: [SelfVariableAccess] self
# 344| getArgument: [Pair] Pair
# 344| getKey: [SymbolLiteral] :x
# 344| getComponent: [StringTextComponent] x
# 344| getValue: [IntegerLiteral] 42
# 345| getStmt: [MethodCall] call to foo
# 345| getReceiver: [SelfVariableAccess] self
# 345| getArgument: [Pair] Pair
# 345| getKey: [SymbolLiteral] :x
# 345| getComponent: [StringTextComponent] x
# 345| getValue: [LocalVariableAccess] x
# 345| getArgument: [Pair] Pair
# 345| getKey: [SymbolLiteral] :novar
# 345| getComponent: [StringTextComponent] novar
# 345| getValue: [MethodCall] call to novar
# 328| getStmt: [SingletonMethod] foo
# 328| getObject: [ConstantReadAccess] Object
# 328| getStmt: [MethodCall] call to bar
# 328| getReceiver: [SelfVariableAccess] self
# 329| getStmt: [SingletonMethod] foo
# 329| getObject: [ConstantReadAccess] Object
# 329| getParameter: [SimpleParameter] x
# 329| getDefiningAccess: [LocalVariableAccess] x
# 329| getStmt: [MethodCall] call to bar
# 329| getReceiver: [SelfVariableAccess] self
# 330| getStmt: [Method] foo
# 330| getStmt: [RescueModifierExpr] ... rescue ...
# 330| getBody: [MethodCall] call to bar
# 330| getReceiver: [SelfVariableAccess] self
# 330| getHandler: [ParenthesizedExpr] ( ... )
# 330| getStmt: [MethodCall] call to print
# 330| getReceiver: [SelfVariableAccess] self
# 330| getArgument: [StringLiteral] "error"
# 330| getComponent: [StringTextComponent] error
# 333| getStmt: [Method] foo
# 333| getParameter: [ForwardParameter] ...
# 334| getStmt: [SuperCall] super call to foo
# 334| getArgument: [ForwardedArguments] ...
# 337| getStmt: [Method] foo
# 337| getParameter: [SimpleParameter] a
# 337| getDefiningAccess: [LocalVariableAccess] a
# 337| getParameter: [SimpleParameter] b
# 337| getDefiningAccess: [LocalVariableAccess] b
# 337| getParameter: [ForwardParameter] ...
# 338| getStmt: [MethodCall] call to bar
# 338| getReceiver: [SelfVariableAccess] self
# 338| getArgument: [LocalVariableAccess] b
# 338| getArgument: [ForwardedArguments] ...
# 342| getStmt: [ForExpr] for ... in ...
# 342| getPattern: [DestructuredLhsExpr] (..., ...)
# 342| getElement: [LocalVariableAccess] x
# 342| getElement: [LocalVariableAccess] y
# 342| getElement: [LocalVariableAccess] z
# 342| getValue: [ArrayLiteral] [...]
# 342| getElement: [ArrayLiteral] [...]
# 342| getElement: [IntegerLiteral] 1
# 342| getElement: [IntegerLiteral] 2
# 342| getElement: [IntegerLiteral] 3
# 342| getElement: [ArrayLiteral] [...]
# 342| getElement: [IntegerLiteral] 4
# 342| getElement: [IntegerLiteral] 5
# 342| getElement: [IntegerLiteral] 6
# 342| getBody: [StmtSequence] do ...
# 343| getStmt: [MethodCall] call to foo
# 343| getReceiver: [SelfVariableAccess] self
# 343| getArgument: [LocalVariableAccess] x
# 343| getArgument: [LocalVariableAccess] y
# 343| getArgument: [LocalVariableAccess] z
# 346| getStmt: [MethodCall] call to foo
# 346| getReceiver: [SelfVariableAccess] self
# 346| getArgument: [Pair] Pair
# 346| getKey: [SymbolLiteral] :X
# 346| getComponent: [StringTextComponent] X
# 346| getKey: [SymbolLiteral] :x
# 346| getComponent: [StringTextComponent] x
# 346| getValue: [IntegerLiteral] 42
# 347| getStmt: [MethodCall] call to foo
# 347| getReceiver: [SelfVariableAccess] self
# 347| getArgument: [Pair] Pair
# 347| getKey: [SymbolLiteral] :X
# 347| getComponent: [StringTextComponent] X
# 347| getValue: [ConstantReadAccess] X
# 350| getStmt: [AssignExpr] ... = ...
# 350| getAnOperand/getLeftOperand: [LocalVariableAccess] y
# 350| getAnOperand/getRightOperand: [IntegerLiteral] 1
# 351| getStmt: [AssignExpr] ... = ...
# 351| getAnOperand/getLeftOperand: [LocalVariableAccess] one
# 351| getAnOperand/getRightOperand: [Lambda] -> { ... }
# 351| getParameter: [SimpleParameter] x
# 351| getDefiningAccess: [LocalVariableAccess] x
# 351| getStmt: [LocalVariableAccess] y
# 347| getKey: [SymbolLiteral] :x
# 347| getComponent: [StringTextComponent] x
# 347| getValue: [LocalVariableAccess] x
# 347| getArgument: [Pair] Pair
# 347| getKey: [SymbolLiteral] :novar
# 347| getComponent: [StringTextComponent] novar
# 347| getValue: [MethodCall] call to novar
# 348| getStmt: [MethodCall] call to foo
# 348| getReceiver: [SelfVariableAccess] self
# 348| getArgument: [Pair] Pair
# 348| getKey: [SymbolLiteral] :X
# 348| getComponent: [StringTextComponent] X
# 348| getValue: [IntegerLiteral] 42
# 349| getStmt: [MethodCall] call to foo
# 349| getReceiver: [SelfVariableAccess] self
# 349| getArgument: [Pair] Pair
# 349| getKey: [SymbolLiteral] :X
# 349| getComponent: [StringTextComponent] X
# 349| getValue: [ConstantReadAccess] X
# 352| getStmt: [AssignExpr] ... = ...
# 352| getAnOperand/getLeftOperand: [LocalVariableAccess] f
# 352| getAnOperand/getRightOperand: [Lambda] -> { ... }
# 352| getParameter: [SimpleParameter] x
# 352| getDefiningAccess: [LocalVariableAccess] x
# 352| getStmt: [MethodCall] call to foo
# 352| getReceiver: [SelfVariableAccess] self
# 352| getArgument: [LocalVariableAccess] x
# 352| getAnOperand/getLeftOperand: [LocalVariableAccess] y
# 352| getAnOperand/getRightOperand: [IntegerLiteral] 1
# 353| getStmt: [AssignExpr] ... = ...
# 353| getAnOperand/getLeftOperand: [LocalVariableAccess] g
# 353| getAnOperand/getLeftOperand: [LocalVariableAccess] one
# 353| getAnOperand/getRightOperand: [Lambda] -> { ... }
# 353| getParameter: [SimpleParameter] x
# 353| getDefiningAccess: [LocalVariableAccess] x
# 353| getStmt: [MethodCall] call to unknown_call
# 353| getReceiver: [SelfVariableAccess] self
# 353| getStmt: [LocalVariableAccess] y
# 354| getStmt: [AssignExpr] ... = ...
# 354| getAnOperand/getLeftOperand: [LocalVariableAccess] h
# 354| getAnOperand/getLeftOperand: [LocalVariableAccess] f
# 354| getAnOperand/getRightOperand: [Lambda] -> { ... }
# 354| getParameter: [SimpleParameter] x
# 354| getDefiningAccess: [LocalVariableAccess] x
# 355| getStmt: [LocalVariableAccess] x
# 356| getStmt: [LocalVariableAccess] y
# 357| getStmt: [MethodCall] call to unknown_call
# 357| getReceiver: [SelfVariableAccess] self
# 361| getStmt: [MethodCall] call to empty?
# 361| getReceiver: [MethodCall] call to list
# 361| getReceiver: [SelfVariableAccess] self
# 362| getStmt: [MethodCall] call to empty?
# 362| getReceiver: [MethodCall] call to list
# 362| getReceiver: [SelfVariableAccess] self
# 354| getStmt: [MethodCall] call to foo
# 354| getReceiver: [SelfVariableAccess] self
# 354| getArgument: [LocalVariableAccess] x
# 355| getStmt: [AssignExpr] ... = ...
# 355| getAnOperand/getLeftOperand: [LocalVariableAccess] g
# 355| getAnOperand/getRightOperand: [Lambda] -> { ... }
# 355| getParameter: [SimpleParameter] x
# 355| getDefiningAccess: [LocalVariableAccess] x
# 355| getStmt: [MethodCall] call to unknown_call
# 355| getReceiver: [SelfVariableAccess] self
# 356| getStmt: [AssignExpr] ... = ...
# 356| getAnOperand/getLeftOperand: [LocalVariableAccess] h
# 356| getAnOperand/getRightOperand: [Lambda] -> { ... }
# 356| getParameter: [SimpleParameter] x
# 356| getDefiningAccess: [LocalVariableAccess] x
# 357| getStmt: [LocalVariableAccess] x
# 358| getStmt: [LocalVariableAccess] y
# 359| getStmt: [MethodCall] call to unknown_call
# 359| getReceiver: [SelfVariableAccess] self
# 363| getStmt: [MethodCall] call to empty?
# 363| getReceiver: [MethodCall] call to list
# 363| getReceiver: [SelfVariableAccess] self
# 364| getStmt: [MethodCall] call to bar
# 364| getReceiver: [MethodCall] call to foo
# 364| getStmt: [MethodCall] call to empty?
# 364| getReceiver: [MethodCall] call to list
# 364| getReceiver: [SelfVariableAccess] self
# 364| getArgument: [IntegerLiteral] 1
# 364| getArgument: [IntegerLiteral] 2
# 364| getBlock: [BraceBlock] { ... }
# 364| getParameter: [SimpleParameter] x
# 364| getDefiningAccess: [LocalVariableAccess] x
# 364| getStmt: [LocalVariableAccess] x
# 365| getStmt: [MethodCall] call to empty?
# 365| getReceiver: [MethodCall] call to list
# 365| getReceiver: [SelfVariableAccess] self
# 366| getStmt: [MethodCall] call to bar
# 366| getReceiver: [MethodCall] call to foo
# 366| getReceiver: [SelfVariableAccess] self
# 366| getArgument: [IntegerLiteral] 1
# 366| getArgument: [IntegerLiteral] 2
# 366| getBlock: [BraceBlock] { ... }
# 366| getParameter: [SimpleParameter] x
# 366| getDefiningAccess: [LocalVariableAccess] x
# 366| getStmt: [LocalVariableAccess] x
control/cases.rb:
# 1| [Toplevel] cases.rb
# 2| getStmt: [AssignExpr] ... = ...
@@ -3089,6 +3095,24 @@ params/params.rb:
# 86| getStmt: [MethodCall] call to puts
# 86| getReceiver: [SelfVariableAccess] self
# 86| getArgument: [LocalVariableAccess] x
# 89| getStmt: [Method] anonymous_splat_parameter
# 89| getParameter: [SimpleParameter] array
# 89| getDefiningAccess: [LocalVariableAccess] array
# 89| getParameter: [SplatParameter] *
# 89| getDefiningAccess: [LocalVariableAccess] __synth__0
# 90| getStmt: [MethodCall] call to concat
# 90| getReceiver: [LocalVariableAccess] array
# 90| getArgument: [SplatExpr] * ...
# 90| getAnOperand/getOperand/getReceiver: [LocalVariableAccess] __synth__0
# 94| getStmt: [Method] anonymous_hash_splat_parameter
# 94| getParameter: [SimpleParameter] hash
# 94| getDefiningAccess: [LocalVariableAccess] hash
# 94| getParameter: [HashSplatParameter] **
# 94| getDefiningAccess: [LocalVariableAccess] __synth__0
# 95| getStmt: [MethodCall] call to merge
# 95| getReceiver: [LocalVariableAccess] hash
# 95| getArgument: [HashSplatExpr] ** ...
# 95| getAnOperand/getOperand/getReceiver: [LocalVariableAccess] __synth__0
erb/template.html.erb:
# 19| [Toplevel] template.html.erb
# 19| getStmt: [StringLiteral] "hello world"

View File

@@ -60,257 +60,257 @@ calls/calls.rb:
# 249| getReceiver: [ConstantReadAccess] X
# 249| getValue: [MethodCall] call to bar
# 249| getReceiver: [ConstantReadAccess] X
# 314| [AssignExpr] ... = ...
# 314| getDesugared: [StmtSequence] ...
# 314| getStmt: [SetterMethodCall] call to foo=
# 314| getReceiver: [SelfVariableAccess] self
# 314| getArgument: [AssignExpr] ... = ...
# 314| getAnOperand/getRightOperand: [IntegerLiteral] 10
# 314| getAnOperand/getLeftOperand: [LocalVariableAccess] __synth__0
# 314| getStmt: [LocalVariableAccess] __synth__0
# 315| [AssignExpr] ... = ...
# 315| getDesugared: [StmtSequence] ...
# 315| getStmt: [SetterMethodCall] call to []=
# 315| getReceiver: [MethodCall] call to foo
# 315| getReceiver: [SelfVariableAccess] self
# 315| getArgument: [IntegerLiteral] 0
# 315| getArgument: [AssignExpr] ... = ...
# 315| getAnOperand/getRightOperand: [IntegerLiteral] 10
# 315| getAnOperand/getLeftOperand: [LocalVariableAccess] __synth__0
# 315| getStmt: [LocalVariableAccess] __synth__0
# 316| [AssignExpr] ... = ...
# 316| getDesugared: [StmtSequence] ...
# 316| getStmt: [AssignExpr] ... = ...
# 316| getAnOperand/getLeftOperand: [MethodCall] call to foo
# 316| getDesugared: [StmtSequence] ...
# 316| getStmt: [SetterMethodCall] call to foo=
# 316| getReceiver: [SelfVariableAccess] self
# 316| getArgument: [AssignExpr] ... = ...
# 316| getAnOperand/getLeftOperand: [LocalVariableAccess] __synth__0__1
# 316| getAnOperand/getRightOperand: [MethodCall] call to []
# 316| getReceiver: [LocalVariableAccess] __synth__0
# 316| getArgument: [IntegerLiteral] 0
# 316| getStmt: [LocalVariableAccess] __synth__0__1
# 316| getStmt: [AssignExpr] ... = ...
# 316| getAnOperand/getLeftOperand: [MethodCall] call to bar
# 316| getDesugared: [StmtSequence] ...
# 316| getStmt: [SetterMethodCall] call to bar=
# 316| getReceiver: [SelfVariableAccess] self
# 316| getArgument: [AssignExpr] ... = ...
# 316| getAnOperand/getLeftOperand: [LocalVariableAccess] __synth__0__1
# 316| getAnOperand/getRightOperand: [MethodCall] call to []
# 316| getReceiver: [LocalVariableAccess] __synth__0
# 316| getArgument: [RangeLiteral] _ .. _
# 316| getBegin: [IntegerLiteral] 1
# 316| getEnd: [IntegerLiteral] -2
# 316| getStmt: [LocalVariableAccess] __synth__0__1
# 316| getStmt: [AssignExpr] ... = ...
# 316| getAnOperand/getLeftOperand: [ElementReference] ...[...]
# 316| getDesugared: [StmtSequence] ...
# 316| getStmt: [SetterMethodCall] call to []=
# 316| getReceiver: [MethodCall] call to foo
# 316| getReceiver: [SelfVariableAccess] self
# 316| getArgument: [AssignExpr] ... = ...
# 316| getAnOperand/getLeftOperand: [LocalVariableAccess] __synth__0__1
# 316| getAnOperand/getRightOperand: [MethodCall] call to []
# 316| getReceiver: [LocalVariableAccess] __synth__0
# 316| getArgument: [IntegerLiteral] -1
# 316| getArgument: [IntegerLiteral] 4
# 316| getStmt: [LocalVariableAccess] __synth__0__1
# 316| getStmt: [AssignExpr] ... = ...
# 316| getAnOperand/getLeftOperand: [LocalVariableAccess] __synth__0
# 316| getAnOperand/getRightOperand: [SplatExpr] * ...
# 316| getAnOperand/getOperand/getReceiver: [ArrayLiteral] [...]
# 316| getDesugared: [MethodCall] call to []
# 316| getReceiver: [ConstantReadAccess] Array
# 316| getArgument: [IntegerLiteral] 1
# 316| getArgument: [IntegerLiteral] 2
# 316| getArgument: [IntegerLiteral] 3
# 316| getArgument: [IntegerLiteral] 4
# 316| getStmt: [SetterMethodCall] call to foo=
# 316| getReceiver: [SelfVariableAccess] self
# 316| getArgument: [AssignExpr] ... = ...
# 316| getAnOperand/getRightOperand: [IntegerLiteral] 10
# 316| getAnOperand/getLeftOperand: [LocalVariableAccess] __synth__0
# 316| getStmt: [LocalVariableAccess] __synth__0
# 317| [AssignExpr] ... = ...
# 317| getDesugared: [StmtSequence] ...
# 317| getStmt: [AssignExpr] ... = ...
# 317| getAnOperand/getLeftOperand: [LocalVariableAccess] a
# 317| getAnOperand/getRightOperand: [MethodCall] call to []
# 317| getReceiver: [LocalVariableAccess] __synth__0
# 317| getArgument: [IntegerLiteral] 0
# 317| getStmt: [AssignExpr] ... = ...
# 317| getAnOperand/getLeftOperand: [ElementReference] ...[...]
# 317| getDesugared: [StmtSequence] ...
# 317| getStmt: [SetterMethodCall] call to []=
# 317| getReceiver: [MethodCall] call to foo
# 317| getReceiver: [SelfVariableAccess] self
# 317| getArgument: [AssignExpr] ... = ...
# 317| getAnOperand/getLeftOperand: [LocalVariableAccess] __synth__0__1
# 317| getAnOperand/getRightOperand: [MethodCall] call to []
# 317| getReceiver: [LocalVariableAccess] __synth__0
# 317| getArgument: [RangeLiteral] _ .. _
# 317| getBegin: [IntegerLiteral] 1
# 317| getEnd: [IntegerLiteral] -1
# 317| getArgument: [IntegerLiteral] 5
# 317| getStmt: [LocalVariableAccess] __synth__0__1
# 317| getStmt: [AssignExpr] ... = ...
# 317| getAnOperand/getLeftOperand: [LocalVariableAccess] __synth__0
# 317| getAnOperand/getRightOperand: [SplatExpr] * ...
# 317| getAnOperand/getOperand/getReceiver: [ArrayLiteral] [...]
# 317| getDesugared: [MethodCall] call to []
# 317| getReceiver: [ConstantReadAccess] Array
# 317| getArgument: [IntegerLiteral] 1
# 317| getArgument: [IntegerLiteral] 2
# 317| getArgument: [IntegerLiteral] 3
# 318| [AssignAddExpr] ... += ...
# 317| getStmt: [SetterMethodCall] call to []=
# 317| getReceiver: [MethodCall] call to foo
# 317| getReceiver: [SelfVariableAccess] self
# 317| getArgument: [IntegerLiteral] 0
# 317| getArgument: [AssignExpr] ... = ...
# 317| getAnOperand/getRightOperand: [IntegerLiteral] 10
# 317| getAnOperand/getLeftOperand: [LocalVariableAccess] __synth__0
# 317| getStmt: [LocalVariableAccess] __synth__0
# 318| [AssignExpr] ... = ...
# 318| getDesugared: [StmtSequence] ...
# 318| getStmt: [AssignExpr] ... = ...
# 318| getAnOperand/getRightOperand: [SelfVariableAccess] self
# 318| getAnOperand/getLeftOperand: [LocalVariableAccess] __synth__0
# 318| getStmt: [SetterMethodCall] call to count=
# 318| getReceiver: [LocalVariableAccess] __synth__0
# 318| getArgument: [LocalVariableAccess] __synth__1
# 318| getAnOperand/getLeftOperand: [MethodCall] call to foo
# 318| getDesugared: [StmtSequence] ...
# 318| getStmt: [SetterMethodCall] call to foo=
# 318| getReceiver: [SelfVariableAccess] self
# 318| getArgument: [AssignExpr] ... = ...
# 318| getAnOperand/getLeftOperand: [LocalVariableAccess] __synth__0__1
# 318| getAnOperand/getRightOperand: [MethodCall] call to []
# 318| getReceiver: [LocalVariableAccess] __synth__0
# 318| getArgument: [IntegerLiteral] 0
# 318| getStmt: [LocalVariableAccess] __synth__0__1
# 318| getStmt: [AssignExpr] ... = ...
# 318| getAnOperand/getLeftOperand: [LocalVariableAccess] __synth__1
# 318| getAnOperand/getRightOperand: [AddExpr] ... + ...
# 318| getAnOperand/getLeftOperand/getReceiver: [MethodCall] call to count
# 318| getReceiver: [LocalVariableAccess] __synth__0
# 318| getAnOperand/getArgument/getRightOperand: [IntegerLiteral] 1
# 318| getStmt: [LocalVariableAccess] __synth__1
# 319| [AssignAddExpr] ... += ...
# 318| getAnOperand/getLeftOperand: [MethodCall] call to bar
# 318| getDesugared: [StmtSequence] ...
# 318| getStmt: [SetterMethodCall] call to bar=
# 318| getReceiver: [SelfVariableAccess] self
# 318| getArgument: [AssignExpr] ... = ...
# 318| getAnOperand/getLeftOperand: [LocalVariableAccess] __synth__0__1
# 318| getAnOperand/getRightOperand: [MethodCall] call to []
# 318| getReceiver: [LocalVariableAccess] __synth__0
# 318| getArgument: [RangeLiteral] _ .. _
# 318| getBegin: [IntegerLiteral] 1
# 318| getEnd: [IntegerLiteral] -2
# 318| getStmt: [LocalVariableAccess] __synth__0__1
# 318| getStmt: [AssignExpr] ... = ...
# 318| getAnOperand/getLeftOperand: [ElementReference] ...[...]
# 318| getDesugared: [StmtSequence] ...
# 318| getStmt: [SetterMethodCall] call to []=
# 318| getReceiver: [MethodCall] call to foo
# 318| getReceiver: [SelfVariableAccess] self
# 318| getArgument: [AssignExpr] ... = ...
# 318| getAnOperand/getLeftOperand: [LocalVariableAccess] __synth__0__1
# 318| getAnOperand/getRightOperand: [MethodCall] call to []
# 318| getReceiver: [LocalVariableAccess] __synth__0
# 318| getArgument: [IntegerLiteral] -1
# 318| getArgument: [IntegerLiteral] 4
# 318| getStmt: [LocalVariableAccess] __synth__0__1
# 318| getStmt: [AssignExpr] ... = ...
# 318| getAnOperand/getLeftOperand: [LocalVariableAccess] __synth__0
# 318| getAnOperand/getRightOperand: [SplatExpr] * ...
# 318| getAnOperand/getOperand/getReceiver: [ArrayLiteral] [...]
# 318| getDesugared: [MethodCall] call to []
# 318| getReceiver: [ConstantReadAccess] Array
# 318| getArgument: [IntegerLiteral] 1
# 318| getArgument: [IntegerLiteral] 2
# 318| getArgument: [IntegerLiteral] 3
# 318| getArgument: [IntegerLiteral] 4
# 319| [AssignExpr] ... = ...
# 319| getDesugared: [StmtSequence] ...
# 319| getStmt: [AssignExpr] ... = ...
# 319| getAnOperand/getRightOperand: [MethodCall] call to foo
# 319| getReceiver: [SelfVariableAccess] self
# 319| getAnOperand/getLeftOperand: [LocalVariableAccess] a
# 319| getAnOperand/getRightOperand: [MethodCall] call to []
# 319| getReceiver: [LocalVariableAccess] __synth__0
# 319| getArgument: [IntegerLiteral] 0
# 319| getStmt: [AssignExpr] ... = ...
# 319| getAnOperand/getLeftOperand: [ElementReference] ...[...]
# 319| getDesugared: [StmtSequence] ...
# 319| getStmt: [SetterMethodCall] call to []=
# 319| getReceiver: [MethodCall] call to foo
# 319| getReceiver: [SelfVariableAccess] self
# 319| getArgument: [AssignExpr] ... = ...
# 319| getAnOperand/getLeftOperand: [LocalVariableAccess] __synth__0__1
# 319| getAnOperand/getRightOperand: [MethodCall] call to []
# 319| getReceiver: [LocalVariableAccess] __synth__0
# 319| getArgument: [RangeLiteral] _ .. _
# 319| getBegin: [IntegerLiteral] 1
# 319| getEnd: [IntegerLiteral] -1
# 319| getArgument: [IntegerLiteral] 5
# 319| getStmt: [LocalVariableAccess] __synth__0__1
# 319| getStmt: [AssignExpr] ... = ...
# 319| getAnOperand/getLeftOperand: [LocalVariableAccess] __synth__0
# 319| getStmt: [SetterMethodCall] call to []=
# 319| getReceiver: [LocalVariableAccess] __synth__0
# 319| getArgument: [LocalVariableAccess] __synth__1
# 319| getArgument: [LocalVariableAccess] __synth__2
# 319| getStmt: [AssignExpr] ... = ...
# 319| getAnOperand/getRightOperand: [IntegerLiteral] 0
# 319| getAnOperand/getLeftOperand: [LocalVariableAccess] __synth__1
# 319| getStmt: [AssignExpr] ... = ...
# 319| getAnOperand/getLeftOperand: [LocalVariableAccess] __synth__2
# 319| getAnOperand/getRightOperand: [AddExpr] ... + ...
# 319| getAnOperand/getLeftOperand/getReceiver: [MethodCall] call to []
# 319| getReceiver: [LocalVariableAccess] __synth__0
# 319| getArgument: [LocalVariableAccess] __synth__1
# 319| getAnOperand/getArgument/getRightOperand: [IntegerLiteral] 1
# 319| getStmt: [LocalVariableAccess] __synth__2
# 320| [AssignMulExpr] ... *= ...
# 319| getAnOperand/getRightOperand: [SplatExpr] * ...
# 319| getAnOperand/getOperand/getReceiver: [ArrayLiteral] [...]
# 319| getDesugared: [MethodCall] call to []
# 319| getReceiver: [ConstantReadAccess] Array
# 319| getArgument: [IntegerLiteral] 1
# 319| getArgument: [IntegerLiteral] 2
# 319| getArgument: [IntegerLiteral] 3
# 320| [AssignAddExpr] ... += ...
# 320| getDesugared: [StmtSequence] ...
# 320| getStmt: [AssignExpr] ... = ...
# 320| getAnOperand/getRightOperand: [MethodCall] call to bar
# 320| getReceiver: [MethodCall] call to foo
# 320| getReceiver: [SelfVariableAccess] self
# 320| getAnOperand/getRightOperand: [SelfVariableAccess] self
# 320| getAnOperand/getLeftOperand: [LocalVariableAccess] __synth__0
# 320| getStmt: [SetterMethodCall] call to []=
# 320| getStmt: [SetterMethodCall] call to count=
# 320| getReceiver: [LocalVariableAccess] __synth__0
# 320| getArgument: [LocalVariableAccess] __synth__1
# 320| getArgument: [LocalVariableAccess] __synth__2
# 320| getArgument: [LocalVariableAccess] __synth__3
# 320| getArgument: [LocalVariableAccess] __synth__4
# 320| getStmt: [AssignExpr] ... = ...
# 320| getAnOperand/getRightOperand: [IntegerLiteral] 0
# 320| getAnOperand/getLeftOperand: [LocalVariableAccess] __synth__1
# 320| getStmt: [AssignExpr] ... = ...
# 320| getAnOperand/getRightOperand: [MethodCall] call to baz
# 320| getReceiver: [MethodCall] call to foo
# 320| getReceiver: [SelfVariableAccess] self
# 320| getAnOperand/getLeftOperand: [LocalVariableAccess] __synth__2
# 320| getStmt: [AssignExpr] ... = ...
# 320| getAnOperand/getRightOperand: [AddExpr] ... + ...
# 320| getAnOperand/getLeftOperand/getReceiver: [MethodCall] call to boo
# 320| getReceiver: [MethodCall] call to foo
# 320| getReceiver: [SelfVariableAccess] self
# 320| getAnOperand/getArgument/getRightOperand: [IntegerLiteral] 1
# 320| getAnOperand/getLeftOperand: [LocalVariableAccess] __synth__3
# 320| getStmt: [AssignExpr] ... = ...
# 320| getAnOperand/getLeftOperand: [LocalVariableAccess] __synth__4
# 320| getAnOperand/getRightOperand: [MulExpr] ... * ...
# 320| getAnOperand/getLeftOperand/getReceiver: [MethodCall] call to []
# 320| getAnOperand/getLeftOperand/getReceiver: [MethodCall] call to count
# 320| getReceiver: [LocalVariableAccess] __synth__0
# 320| getArgument: [LocalVariableAccess] __synth__1
# 320| getArgument: [LocalVariableAccess] __synth__2
# 320| getArgument: [LocalVariableAccess] __synth__3
# 320| getAnOperand/getArgument/getRightOperand: [IntegerLiteral] 2
# 320| getStmt: [LocalVariableAccess] __synth__4
# 340| [ForExpr] for ... in ...
# 340| getDesugared: [MethodCall] call to each
# 340| getBlock: [BraceBlock] { ... }
# 340| getParameter: [SimpleParameter] __synth__0__1
# 340| getDefiningAccess: [LocalVariableAccess] __synth__0__1
# 340| getStmt: [AssignExpr] ... = ...
# 340| getDesugared: [StmtSequence] ...
# 340| getStmt: [AssignExpr] ... = ...
# 340| getAnOperand/getLeftOperand: [LocalVariableAccess] __synth__0__1
# 340| getAnOperand/getRightOperand: [SplatExpr] * ...
# 340| getAnOperand/getOperand/getReceiver: [LocalVariableAccess] __synth__0__1
# 340| getStmt: [AssignExpr] ... = ...
# 340| getAnOperand/getLeftOperand: [LocalVariableAccess] x
# 340| getAnOperand/getRightOperand: [MethodCall] call to []
# 340| getReceiver: [LocalVariableAccess] __synth__0__1
# 340| getArgument: [IntegerLiteral] 0
# 340| getStmt: [AssignExpr] ... = ...
# 340| getAnOperand/getLeftOperand: [LocalVariableAccess] y
# 340| getAnOperand/getRightOperand: [MethodCall] call to []
# 340| getReceiver: [LocalVariableAccess] __synth__0__1
# 340| getArgument: [IntegerLiteral] 1
# 340| getStmt: [AssignExpr] ... = ...
# 340| getAnOperand/getLeftOperand: [LocalVariableAccess] z
# 340| getAnOperand/getRightOperand: [MethodCall] call to []
# 340| getReceiver: [LocalVariableAccess] __synth__0__1
# 340| getArgument: [IntegerLiteral] 2
# 340| getAnOperand/getLeftOperand: [DestructuredLhsExpr] (..., ...)
# 341| getStmt: [MethodCall] call to foo
# 341| getReceiver: [SelfVariableAccess] self
# 341| getArgument: [LocalVariableAccess] x
# 341| getArgument: [LocalVariableAccess] y
# 341| getArgument: [LocalVariableAccess] z
# 340| getReceiver: [ArrayLiteral] [...]
# 340| getDesugared: [MethodCall] call to []
# 340| getReceiver: [ConstantReadAccess] Array
# 340| getArgument: [ArrayLiteral] [...]
# 340| getDesugared: [MethodCall] call to []
# 340| getReceiver: [ConstantReadAccess] Array
# 340| getArgument: [IntegerLiteral] 1
# 340| getArgument: [IntegerLiteral] 2
# 340| getArgument: [IntegerLiteral] 3
# 340| getArgument: [ArrayLiteral] [...]
# 340| getDesugared: [MethodCall] call to []
# 340| getReceiver: [ConstantReadAccess] Array
# 340| getArgument: [IntegerLiteral] 4
# 340| getArgument: [IntegerLiteral] 5
# 340| getArgument: [IntegerLiteral] 6
# 362| [MethodCall] call to empty?
# 362| getDesugared: [StmtSequence] ...
# 362| getStmt: [AssignExpr] ... = ...
# 362| getAnOperand/getRightOperand: [MethodCall] call to list
# 362| getReceiver: [SelfVariableAccess] self
# 362| getAnOperand/getLeftOperand: [LocalVariableAccess] __synth__0__1
# 362| getStmt: [IfExpr] if ...
# 362| getBranch/getThen: [NilLiteral] nil
# 362| getBranch/getElse: [MethodCall] call to empty?
# 362| getReceiver: [LocalVariableAccess] __synth__0__1
# 362| getCondition: [MethodCall] call to ==
# 362| getArgument: [LocalVariableAccess] __synth__0__1
# 362| getReceiver: [NilLiteral] nil
# 364| [MethodCall] call to bar
# 320| getAnOperand/getArgument/getRightOperand: [IntegerLiteral] 1
# 320| getStmt: [LocalVariableAccess] __synth__1
# 321| [AssignAddExpr] ... += ...
# 321| getDesugared: [StmtSequence] ...
# 321| getStmt: [AssignExpr] ... = ...
# 321| getAnOperand/getRightOperand: [MethodCall] call to foo
# 321| getReceiver: [SelfVariableAccess] self
# 321| getAnOperand/getLeftOperand: [LocalVariableAccess] __synth__0
# 321| getStmt: [SetterMethodCall] call to []=
# 321| getReceiver: [LocalVariableAccess] __synth__0
# 321| getArgument: [LocalVariableAccess] __synth__1
# 321| getArgument: [LocalVariableAccess] __synth__2
# 321| getStmt: [AssignExpr] ... = ...
# 321| getAnOperand/getRightOperand: [IntegerLiteral] 0
# 321| getAnOperand/getLeftOperand: [LocalVariableAccess] __synth__1
# 321| getStmt: [AssignExpr] ... = ...
# 321| getAnOperand/getLeftOperand: [LocalVariableAccess] __synth__2
# 321| getAnOperand/getRightOperand: [AddExpr] ... + ...
# 321| getAnOperand/getLeftOperand/getReceiver: [MethodCall] call to []
# 321| getReceiver: [LocalVariableAccess] __synth__0
# 321| getArgument: [LocalVariableAccess] __synth__1
# 321| getAnOperand/getArgument/getRightOperand: [IntegerLiteral] 1
# 321| getStmt: [LocalVariableAccess] __synth__2
# 322| [AssignMulExpr] ... *= ...
# 322| getDesugared: [StmtSequence] ...
# 322| getStmt: [AssignExpr] ... = ...
# 322| getAnOperand/getRightOperand: [MethodCall] call to bar
# 322| getReceiver: [MethodCall] call to foo
# 322| getReceiver: [SelfVariableAccess] self
# 322| getAnOperand/getLeftOperand: [LocalVariableAccess] __synth__0
# 322| getStmt: [SetterMethodCall] call to []=
# 322| getReceiver: [LocalVariableAccess] __synth__0
# 322| getArgument: [LocalVariableAccess] __synth__1
# 322| getArgument: [LocalVariableAccess] __synth__2
# 322| getArgument: [LocalVariableAccess] __synth__3
# 322| getArgument: [LocalVariableAccess] __synth__4
# 322| getStmt: [AssignExpr] ... = ...
# 322| getAnOperand/getRightOperand: [IntegerLiteral] 0
# 322| getAnOperand/getLeftOperand: [LocalVariableAccess] __synth__1
# 322| getStmt: [AssignExpr] ... = ...
# 322| getAnOperand/getRightOperand: [MethodCall] call to baz
# 322| getReceiver: [MethodCall] call to foo
# 322| getReceiver: [SelfVariableAccess] self
# 322| getAnOperand/getLeftOperand: [LocalVariableAccess] __synth__2
# 322| getStmt: [AssignExpr] ... = ...
# 322| getAnOperand/getRightOperand: [AddExpr] ... + ...
# 322| getAnOperand/getLeftOperand/getReceiver: [MethodCall] call to boo
# 322| getReceiver: [MethodCall] call to foo
# 322| getReceiver: [SelfVariableAccess] self
# 322| getAnOperand/getArgument/getRightOperand: [IntegerLiteral] 1
# 322| getAnOperand/getLeftOperand: [LocalVariableAccess] __synth__3
# 322| getStmt: [AssignExpr] ... = ...
# 322| getAnOperand/getLeftOperand: [LocalVariableAccess] __synth__4
# 322| getAnOperand/getRightOperand: [MulExpr] ... * ...
# 322| getAnOperand/getLeftOperand/getReceiver: [MethodCall] call to []
# 322| getReceiver: [LocalVariableAccess] __synth__0
# 322| getArgument: [LocalVariableAccess] __synth__1
# 322| getArgument: [LocalVariableAccess] __synth__2
# 322| getArgument: [LocalVariableAccess] __synth__3
# 322| getAnOperand/getArgument/getRightOperand: [IntegerLiteral] 2
# 322| getStmt: [LocalVariableAccess] __synth__4
# 342| [ForExpr] for ... in ...
# 342| getDesugared: [MethodCall] call to each
# 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__0__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__0__1
# 342| getArgument: [IntegerLiteral] 0
# 342| getStmt: [AssignExpr] ... = ...
# 342| getAnOperand/getLeftOperand: [LocalVariableAccess] y
# 342| getAnOperand/getRightOperand: [MethodCall] call to []
# 342| getReceiver: [LocalVariableAccess] __synth__0__1
# 342| getArgument: [IntegerLiteral] 1
# 342| getStmt: [AssignExpr] ... = ...
# 342| getAnOperand/getLeftOperand: [LocalVariableAccess] z
# 342| getAnOperand/getRightOperand: [MethodCall] call to []
# 342| getReceiver: [LocalVariableAccess] __synth__0__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| 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
# 364| [MethodCall] call to empty?
# 364| getDesugared: [StmtSequence] ...
# 364| getStmt: [AssignExpr] ... = ...
# 364| getAnOperand/getRightOperand: [MethodCall] call to foo
# 364| getAnOperand/getRightOperand: [MethodCall] call to list
# 364| getReceiver: [SelfVariableAccess] self
# 364| getAnOperand/getLeftOperand: [LocalVariableAccess] __synth__0__1
# 364| getStmt: [IfExpr] if ...
# 364| getBranch/getThen: [NilLiteral] nil
# 364| getBranch/getElse: [MethodCall] call to bar
# 364| getBranch/getElse: [MethodCall] call to empty?
# 364| getReceiver: [LocalVariableAccess] __synth__0__1
# 364| getArgument: [IntegerLiteral] 1
# 364| getArgument: [IntegerLiteral] 2
# 364| getBlock: [BraceBlock] { ... }
# 364| getParameter: [SimpleParameter] x
# 364| getDefiningAccess: [LocalVariableAccess] x
# 364| getStmt: [LocalVariableAccess] x
# 364| getCondition: [MethodCall] call to ==
# 364| getArgument: [LocalVariableAccess] __synth__0__1
# 364| getReceiver: [NilLiteral] nil
# 366| [MethodCall] call to bar
# 366| getDesugared: [StmtSequence] ...
# 366| getStmt: [AssignExpr] ... = ...
# 366| getAnOperand/getRightOperand: [MethodCall] call to foo
# 366| getReceiver: [SelfVariableAccess] self
# 366| getAnOperand/getLeftOperand: [LocalVariableAccess] __synth__0__1
# 366| getStmt: [IfExpr] if ...
# 366| getBranch/getThen: [NilLiteral] nil
# 366| getBranch/getElse: [MethodCall] call to bar
# 366| getReceiver: [LocalVariableAccess] __synth__0__1
# 366| getArgument: [IntegerLiteral] 1
# 366| getArgument: [IntegerLiteral] 2
# 366| getBlock: [BraceBlock] { ... }
# 366| getParameter: [SimpleParameter] x
# 366| getDefiningAccess: [LocalVariableAccess] x
# 366| getStmt: [LocalVariableAccess] x
# 366| getCondition: [MethodCall] call to ==
# 366| getArgument: [LocalVariableAccess] __synth__0__1
# 366| getReceiver: [NilLiteral] nil
control/cases.rb:
# 90| [ArrayLiteral] %w(...)
# 90| getDesugared: [MethodCall] call to []

File diff suppressed because it is too large Load Diff

View File

@@ -10,76 +10,76 @@ 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:278:5:278:8 | :blah | :blah | symbol |
| calls/calls.rb:279:5:279:8 | :blah | :blah | symbol |
| calls/calls.rb:288:11:288:16 | "blah" | blah | string |
| calls/calls.rb:289:11:289:11 | 1 | 1 | int |
| calls/calls.rb:289:14:289:14 | 2 | 2 | int |
| calls/calls.rb:289:17:289:17 | 3 | 3 | int |
| calls/calls.rb:290:21:290:21 | 1 | 1 | int |
| calls/calls.rb:291:22:291:22 | 2 | 2 | int |
| calls/calls.rb:292:11:292:11 | 4 | 4 | int |
| calls/calls.rb:292:14:292:14 | 5 | 5 | int |
| calls/calls.rb:292:26:292:28 | 100 | 100 | int |
| calls/calls.rb:293:11:293:11 | 6 | 6 | int |
| calls/calls.rb:293:14:293:14 | 7 | 7 | int |
| calls/calls.rb:293:27:293:29 | 200 | 200 | int |
| calls/calls.rb:311:6:311:6 | 1 | 1 | int |
| calls/calls.rb:314:1:314:8 | __synth__0 | 10 | int |
| calls/calls.rb:314:12:314:13 | 10 | 10 | int |
| calls/calls.rb:315:1:315:6 | __synth__0 | 10 | int |
| calls/calls.rb:315:5:315:5 | 0 | 0 | int |
| calls/calls.rb:315:10:315:11 | 10 | 10 | int |
| calls/calls.rb:316:1:316:8 | 0 | 0 | int |
| calls/calls.rb:316:12:316:19 | 1 | 1 | int |
| calls/calls.rb:316:12:316:19 | -2 | -2 | int |
| calls/calls.rb:316:22:316:27 | -1 | -1 | int |
| calls/calls.rb:316:26:316:26 | 4 | 4 | int |
| calls/calls.rb:316:32:316:32 | 1 | 1 | int |
| calls/calls.rb:316:35:316:35 | 2 | 2 | int |
| calls/calls.rb:316:38:316:38 | 3 | 3 | int |
| calls/calls.rb:316:41:316:41 | 4 | 4 | int |
| calls/calls.rb:317:1:317:1 | 0 | 0 | int |
| calls/calls.rb:317:5:317:10 | 1 | 1 | int |
| calls/calls.rb:317:5:317:10 | -1 | -1 | int |
| calls/calls.rb:317:9:317:9 | 5 | 5 | int |
| calls/calls.rb:317:15:317:15 | 1 | 1 | int |
| calls/calls.rb:317:18:317:18 | 2 | 2 | int |
| calls/calls.rb:317:21:317:21 | 3 | 3 | int |
| calls/calls.rb:318:15:318:15 | 1 | 1 | int |
| calls/calls.rb:319:5:319:5 | 0 | 0 | int |
| calls/calls.rb:319:5:319:5 | __synth__1 | 0 | int |
| calls/calls.rb:319:5:319:5 | __synth__1 | 0 | int |
| calls/calls.rb:319:11:319:11 | 1 | 1 | int |
| calls/calls.rb:320:9:320:9 | 0 | 0 | int |
| calls/calls.rb:320:9:320:9 | __synth__1 | 0 | int |
| calls/calls.rb:320:9:320:9 | __synth__1 | 0 | int |
| calls/calls.rb:320:31:320:31 | 1 | 1 | int |
| calls/calls.rb:320:37:320:37 | 2 | 2 | int |
| calls/calls.rb:328:31:328:37 | "error" | error | string |
| calls/calls.rb:340:5:340:5 | 0 | 0 | int |
| calls/calls.rb:340:8:340:8 | 1 | 1 | int |
| calls/calls.rb:340:11:340:11 | 2 | 2 | int |
| calls/calls.rb:340:18:340:18 | 1 | 1 | int |
| calls/calls.rb:340:20:340:20 | 2 | 2 | int |
| calls/calls.rb:340:22:340:22 | 3 | 3 | int |
| calls/calls.rb:340:27:340:27 | 4 | 4 | int |
| calls/calls.rb:340:29:340:29 | 5 | 5 | int |
| calls/calls.rb:340:31:340:31 | 6 | 6 | int |
| calls/calls.rb:344:5:344:5 | :x | :x | symbol |
| calls/calls.rb:344:8:344:9 | 42 | 42 | int |
| calls/calls.rb:345:5:345:5 | :x | :x | symbol |
| calls/calls.rb:345:9:345:13 | :novar | :novar | symbol |
| calls/calls.rb:346:5:346:5 | :X | :X | symbol |
| 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 |
| calls/calls.rb:291:11:291:11 | 1 | 1 | int |
| calls/calls.rb:291:14:291:14 | 2 | 2 | int |
| calls/calls.rb:291:17:291:17 | 3 | 3 | int |
| calls/calls.rb:292:21:292:21 | 1 | 1 | int |
| calls/calls.rb:293:22:293:22 | 2 | 2 | int |
| calls/calls.rb:294:11:294:11 | 4 | 4 | int |
| calls/calls.rb:294:14:294:14 | 5 | 5 | int |
| calls/calls.rb:294:26:294:28 | 100 | 100 | int |
| calls/calls.rb:295:11:295:11 | 6 | 6 | int |
| calls/calls.rb:295:14:295:14 | 7 | 7 | int |
| calls/calls.rb:295:27:295:29 | 200 | 200 | int |
| calls/calls.rb:313:6:313:6 | 1 | 1 | int |
| calls/calls.rb:316:1:316:8 | __synth__0 | 10 | int |
| calls/calls.rb:316:12:316:13 | 10 | 10 | int |
| calls/calls.rb:317:1:317:6 | __synth__0 | 10 | int |
| calls/calls.rb:317:5:317:5 | 0 | 0 | int |
| calls/calls.rb:317:10:317:11 | 10 | 10 | int |
| calls/calls.rb:318:1:318:8 | 0 | 0 | int |
| calls/calls.rb:318:12:318:19 | 1 | 1 | int |
| calls/calls.rb:318:12:318:19 | -2 | -2 | int |
| calls/calls.rb:318:22:318:27 | -1 | -1 | int |
| calls/calls.rb:318:26:318:26 | 4 | 4 | int |
| calls/calls.rb:318:32:318:32 | 1 | 1 | int |
| calls/calls.rb:318:35:318:35 | 2 | 2 | int |
| calls/calls.rb:318:38:318:38 | 3 | 3 | int |
| calls/calls.rb:318:41:318:41 | 4 | 4 | int |
| calls/calls.rb:319:1:319:1 | 0 | 0 | int |
| calls/calls.rb:319:5:319:10 | 1 | 1 | int |
| calls/calls.rb:319:5:319:10 | -1 | -1 | int |
| calls/calls.rb:319:9:319:9 | 5 | 5 | int |
| calls/calls.rb:319:15:319:15 | 1 | 1 | int |
| calls/calls.rb:319:18:319:18 | 2 | 2 | int |
| calls/calls.rb:319:21:319:21 | 3 | 3 | int |
| calls/calls.rb:320:15:320:15 | 1 | 1 | int |
| calls/calls.rb:321:5:321:5 | 0 | 0 | int |
| calls/calls.rb:321:5:321:5 | __synth__1 | 0 | int |
| calls/calls.rb:321:5:321:5 | __synth__1 | 0 | int |
| calls/calls.rb:321:11:321:11 | 1 | 1 | int |
| calls/calls.rb:322:9:322:9 | 0 | 0 | int |
| calls/calls.rb:322:9:322:9 | __synth__1 | 0 | int |
| calls/calls.rb:322:9:322:9 | __synth__1 | 0 | int |
| 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: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 |
| calls/calls.rb:342:18:342:18 | 1 | 1 | int |
| calls/calls.rb:342:20:342:20 | 2 | 2 | int |
| calls/calls.rb:342:22:342:22 | 3 | 3 | int |
| calls/calls.rb:342:27:342:27 | 4 | 4 | int |
| calls/calls.rb:342:29:342:29 | 5 | 5 | int |
| calls/calls.rb:342:31:342:31 | 6 | 6 | int |
| calls/calls.rb:346:5:346:5 | :x | :x | symbol |
| calls/calls.rb:346:8:346:9 | 42 | 42 | int |
| calls/calls.rb:347:5:347:5 | :X | :X | symbol |
| calls/calls.rb:350:5:350:5 | 1 | 1 | int |
| calls/calls.rb:362:1:362:4 | nil | nil | nil |
| calls/calls.rb:362:5:362:6 | nil | nil | nil |
| calls/calls.rb:364:1:364:3 | nil | nil | nil |
| calls/calls.rb:364:4:364:5 | nil | nil | nil |
| calls/calls.rb:364:10:364:10 | 1 | 1 | int |
| calls/calls.rb:364:12:364:12 | 2 | 2 | int |
| calls/calls.rb:347:5:347:5 | :x | :x | symbol |
| calls/calls.rb:347:9:347:13 | :novar | :novar | symbol |
| calls/calls.rb:348:5:348:5 | :X | :X | symbol |
| calls/calls.rb:348:8:348:9 | 42 | 42 | int |
| calls/calls.rb:349:5:349:5 | :X | :X | symbol |
| calls/calls.rb:352:5:352:5 | 1 | 1 | int |
| calls/calls.rb:364:1:364:4 | nil | nil | nil |
| calls/calls.rb:364:5:364:6 | nil | nil | nil |
| calls/calls.rb:366:1:366:3 | nil | nil | nil |
| calls/calls.rb:366:4:366:5 | nil | nil | nil |
| calls/calls.rb:366:10:366:10 | 1 | 1 | int |
| calls/calls.rb:366:12:366:12 | 2 | 2 | int |
| constants/constants.rb:3:19:3:27 | "const_a" | const_a | string |
| constants/constants.rb:6:15:6:23 | "const_b" | const_b | string |
| constants/constants.rb:17:12:17:18 | "Hello" | Hello | string |
@@ -920,76 +920,76 @@ 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:278:5:278:8 | :blah | :blah | symbol |
| calls/calls.rb:279:5:279:8 | :blah | :blah | symbol |
| calls/calls.rb:288:11:288:16 | "blah" | blah | string |
| calls/calls.rb:289:11:289:11 | 1 | 1 | int |
| calls/calls.rb:289:14:289:14 | 2 | 2 | int |
| calls/calls.rb:289:17:289:17 | 3 | 3 | int |
| calls/calls.rb:290:21:290:21 | 1 | 1 | int |
| calls/calls.rb:291:22:291:22 | 2 | 2 | int |
| calls/calls.rb:292:11:292:11 | 4 | 4 | int |
| calls/calls.rb:292:14:292:14 | 5 | 5 | int |
| calls/calls.rb:292:26:292:28 | 100 | 100 | int |
| calls/calls.rb:293:11:293:11 | 6 | 6 | int |
| calls/calls.rb:293:14:293:14 | 7 | 7 | int |
| calls/calls.rb:293:27:293:29 | 200 | 200 | int |
| calls/calls.rb:311:6:311:6 | 1 | 1 | int |
| calls/calls.rb:314:1:314:8 | __synth__0 | 10 | int |
| calls/calls.rb:314:12:314:13 | 10 | 10 | int |
| calls/calls.rb:315:1:315:6 | __synth__0 | 10 | int |
| calls/calls.rb:315:5:315:5 | 0 | 0 | int |
| calls/calls.rb:315:10:315:11 | 10 | 10 | int |
| calls/calls.rb:316:1:316:8 | 0 | 0 | int |
| calls/calls.rb:316:12:316:19 | 1 | 1 | int |
| calls/calls.rb:316:12:316:19 | -2 | -2 | int |
| calls/calls.rb:316:22:316:27 | -1 | -1 | int |
| calls/calls.rb:316:26:316:26 | 4 | 4 | int |
| calls/calls.rb:316:32:316:32 | 1 | 1 | int |
| calls/calls.rb:316:35:316:35 | 2 | 2 | int |
| calls/calls.rb:316:38:316:38 | 3 | 3 | int |
| calls/calls.rb:316:41:316:41 | 4 | 4 | int |
| calls/calls.rb:317:1:317:1 | 0 | 0 | int |
| calls/calls.rb:317:5:317:10 | 1 | 1 | int |
| calls/calls.rb:317:5:317:10 | -1 | -1 | int |
| calls/calls.rb:317:9:317:9 | 5 | 5 | int |
| calls/calls.rb:317:15:317:15 | 1 | 1 | int |
| calls/calls.rb:317:18:317:18 | 2 | 2 | int |
| calls/calls.rb:317:21:317:21 | 3 | 3 | int |
| calls/calls.rb:318:15:318:15 | 1 | 1 | int |
| calls/calls.rb:319:5:319:5 | 0 | 0 | int |
| calls/calls.rb:319:5:319:5 | __synth__1 | 0 | int |
| calls/calls.rb:319:5:319:5 | __synth__1 | 0 | int |
| calls/calls.rb:319:11:319:11 | 1 | 1 | int |
| calls/calls.rb:320:9:320:9 | 0 | 0 | int |
| calls/calls.rb:320:9:320:9 | __synth__1 | 0 | int |
| calls/calls.rb:320:9:320:9 | __synth__1 | 0 | int |
| calls/calls.rb:320:31:320:31 | 1 | 1 | int |
| calls/calls.rb:320:37:320:37 | 2 | 2 | int |
| calls/calls.rb:328:31:328:37 | "error" | error | string |
| calls/calls.rb:340:5:340:5 | 0 | 0 | int |
| calls/calls.rb:340:8:340:8 | 1 | 1 | int |
| calls/calls.rb:340:11:340:11 | 2 | 2 | int |
| calls/calls.rb:340:18:340:18 | 1 | 1 | int |
| calls/calls.rb:340:20:340:20 | 2 | 2 | int |
| calls/calls.rb:340:22:340:22 | 3 | 3 | int |
| calls/calls.rb:340:27:340:27 | 4 | 4 | int |
| calls/calls.rb:340:29:340:29 | 5 | 5 | int |
| calls/calls.rb:340:31:340:31 | 6 | 6 | int |
| calls/calls.rb:344:5:344:5 | :x | :x | symbol |
| calls/calls.rb:344:8:344:9 | 42 | 42 | int |
| calls/calls.rb:345:5:345:5 | :x | :x | symbol |
| calls/calls.rb:345:9:345:13 | :novar | :novar | symbol |
| calls/calls.rb:346:5:346:5 | :X | :X | symbol |
| 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 |
| calls/calls.rb:291:11:291:11 | 1 | 1 | int |
| calls/calls.rb:291:14:291:14 | 2 | 2 | int |
| calls/calls.rb:291:17:291:17 | 3 | 3 | int |
| calls/calls.rb:292:21:292:21 | 1 | 1 | int |
| calls/calls.rb:293:22:293:22 | 2 | 2 | int |
| calls/calls.rb:294:11:294:11 | 4 | 4 | int |
| calls/calls.rb:294:14:294:14 | 5 | 5 | int |
| calls/calls.rb:294:26:294:28 | 100 | 100 | int |
| calls/calls.rb:295:11:295:11 | 6 | 6 | int |
| calls/calls.rb:295:14:295:14 | 7 | 7 | int |
| calls/calls.rb:295:27:295:29 | 200 | 200 | int |
| calls/calls.rb:313:6:313:6 | 1 | 1 | int |
| calls/calls.rb:316:1:316:8 | __synth__0 | 10 | int |
| calls/calls.rb:316:12:316:13 | 10 | 10 | int |
| calls/calls.rb:317:1:317:6 | __synth__0 | 10 | int |
| calls/calls.rb:317:5:317:5 | 0 | 0 | int |
| calls/calls.rb:317:10:317:11 | 10 | 10 | int |
| calls/calls.rb:318:1:318:8 | 0 | 0 | int |
| calls/calls.rb:318:12:318:19 | 1 | 1 | int |
| calls/calls.rb:318:12:318:19 | -2 | -2 | int |
| calls/calls.rb:318:22:318:27 | -1 | -1 | int |
| calls/calls.rb:318:26:318:26 | 4 | 4 | int |
| calls/calls.rb:318:32:318:32 | 1 | 1 | int |
| calls/calls.rb:318:35:318:35 | 2 | 2 | int |
| calls/calls.rb:318:38:318:38 | 3 | 3 | int |
| calls/calls.rb:318:41:318:41 | 4 | 4 | int |
| calls/calls.rb:319:1:319:1 | 0 | 0 | int |
| calls/calls.rb:319:5:319:10 | 1 | 1 | int |
| calls/calls.rb:319:5:319:10 | -1 | -1 | int |
| calls/calls.rb:319:9:319:9 | 5 | 5 | int |
| calls/calls.rb:319:15:319:15 | 1 | 1 | int |
| calls/calls.rb:319:18:319:18 | 2 | 2 | int |
| calls/calls.rb:319:21:319:21 | 3 | 3 | int |
| calls/calls.rb:320:15:320:15 | 1 | 1 | int |
| calls/calls.rb:321:5:321:5 | 0 | 0 | int |
| calls/calls.rb:321:5:321:5 | __synth__1 | 0 | int |
| calls/calls.rb:321:5:321:5 | __synth__1 | 0 | int |
| calls/calls.rb:321:11:321:11 | 1 | 1 | int |
| calls/calls.rb:322:9:322:9 | 0 | 0 | int |
| calls/calls.rb:322:9:322:9 | __synth__1 | 0 | int |
| calls/calls.rb:322:9:322:9 | __synth__1 | 0 | int |
| 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: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 |
| calls/calls.rb:342:18:342:18 | 1 | 1 | int |
| calls/calls.rb:342:20:342:20 | 2 | 2 | int |
| calls/calls.rb:342:22:342:22 | 3 | 3 | int |
| calls/calls.rb:342:27:342:27 | 4 | 4 | int |
| calls/calls.rb:342:29:342:29 | 5 | 5 | int |
| calls/calls.rb:342:31:342:31 | 6 | 6 | int |
| calls/calls.rb:346:5:346:5 | :x | :x | symbol |
| calls/calls.rb:346:8:346:9 | 42 | 42 | int |
| calls/calls.rb:347:5:347:5 | :X | :X | symbol |
| calls/calls.rb:350:5:350:5 | 1 | 1 | int |
| calls/calls.rb:362:1:362:4 | nil | nil | nil |
| calls/calls.rb:362:5:362:6 | nil | nil | nil |
| calls/calls.rb:364:1:364:3 | nil | nil | nil |
| calls/calls.rb:364:4:364:5 | nil | nil | nil |
| calls/calls.rb:364:10:364:10 | 1 | 1 | int |
| calls/calls.rb:364:12:364:12 | 2 | 2 | int |
| calls/calls.rb:347:5:347:5 | :x | :x | symbol |
| calls/calls.rb:347:9:347:13 | :novar | :novar | symbol |
| calls/calls.rb:348:5:348:5 | :X | :X | symbol |
| calls/calls.rb:348:8:348:9 | 42 | 42 | int |
| calls/calls.rb:349:5:349:5 | :X | :X | symbol |
| calls/calls.rb:352:5:352:5 | 1 | 1 | int |
| calls/calls.rb:364:1:364:4 | nil | nil | nil |
| calls/calls.rb:364:5:364:6 | nil | nil | nil |
| calls/calls.rb:366:1:366:3 | nil | nil | nil |
| calls/calls.rb:366:4:366:5 | nil | nil | nil |
| calls/calls.rb:366:10:366:10 | 1 | 1 | int |
| calls/calls.rb:366:12:366:12 | 2 | 2 | int |
| constants/constants.rb:3:19:3:27 | "const_a" | const_a | string |
| constants/constants.rb:6:15:6:23 | "const_b" | const_b | string |
| constants/constants.rb:17:12:17:18 | "Hello" | Hello | string |

View File

@@ -4,27 +4,27 @@ blockArguments
splatExpr
| calls.rb:270:5:270:8 | * ... | calls.rb:270:6:270:8 | call to bar |
| calls.rb:271:5:271:11 | * ... | calls.rb:271:6:271:11 | call to bar |
| calls.rb:316:31:316:42 | * ... | calls.rb:316:31:316:42 | [...] |
| calls.rb:317:14:317:22 | * ... | calls.rb:317:14:317:22 | [...] |
| calls.rb:340:1:342:3 | * ... | calls.rb:340:1:342:3 | __synth__0__1 |
| calls.rb:318:31:318:42 | * ... | calls.rb:318:31:318:42 | [...] |
| calls.rb:319:14:319:22 | * ... | calls.rb:319:14:319:22 | [...] |
| calls.rb:342:1:344:3 | * ... | calls.rb:342:1:344:3 | __synth__0__1 |
hashSplatExpr
| calls.rb:274:5:274:9 | ** ... | calls.rb:274:7:274:9 | call to bar |
| calls.rb:275:5:275:12 | ** ... | calls.rb:275:7:275:12 | call to bar |
| calls.rb:275:5:275:9 | ** ... | calls.rb:275:7:275:9 | call to bar |
| calls.rb:276:5:276:12 | ** ... | calls.rb:276:7:276:12 | call to bar |
keywordArguments
| calls.rb:249:3:249:12 | Pair | calls.rb:249:3:249:5 | call to foo | calls.rb:249:10:249:12 | call to bar |
| calls.rb:249:15:249:30 | Pair | calls.rb:249:15:249:20 | call to foo | calls.rb:249:25:249:30 | call to bar |
| calls.rb:278:5:278:13 | Pair | calls.rb:278:5:278:8 | :blah | calls.rb:278:11:278:13 | call to bar |
| calls.rb:279:5:279:16 | Pair | calls.rb:279:5:279:8 | :blah | calls.rb:279:11:279:16 | call to bar |
| calls.rb:344:5:344:9 | Pair | calls.rb:344:5:344:5 | :x | calls.rb:344:8:344:9 | 42 |
| calls.rb:345:5:345:6 | Pair | calls.rb:345:5:345:5 | :x | calls.rb:345:5:345:5 | x |
| calls.rb:345:9:345:14 | Pair | calls.rb:345:9:345:13 | :novar | calls.rb:345:9:345:13 | call to novar |
| calls.rb:346:5:346:9 | Pair | calls.rb:346:5:346:5 | :X | calls.rb:346:8:346:9 | 42 |
| calls.rb:347:5:347:6 | Pair | calls.rb:347:5:347:5 | :X | calls.rb:347:5:347:5 | X |
| calls.rb:280:5:280:13 | Pair | calls.rb:280:5:280:8 | :blah | calls.rb:280:11:280:13 | call to bar |
| calls.rb:281:5:281:16 | Pair | calls.rb:281:5:281:8 | :blah | calls.rb:281:11:281:16 | call to bar |
| calls.rb:346:5:346:9 | Pair | calls.rb:346:5:346:5 | :x | calls.rb:346:8:346:9 | 42 |
| calls.rb:347:5:347:6 | Pair | calls.rb:347:5:347:5 | :x | calls.rb:347:5:347:5 | x |
| calls.rb:347:9:347:14 | Pair | calls.rb:347:9:347:13 | :novar | calls.rb:347:9:347:13 | call to novar |
| calls.rb:348:5:348:9 | Pair | calls.rb:348:5:348:5 | :X | calls.rb:348:8:348:9 | 42 |
| calls.rb:349:5:349:6 | Pair | calls.rb:349:5:349:5 | :X | calls.rb:349:5:349:5 | X |
keywordArgumentsByKeyword
| calls.rb:278:1:278:14 | call to foo | blah | calls.rb:278:11:278:13 | call to bar |
| calls.rb:279:1:279:17 | call to foo | blah | calls.rb:279:11:279:16 | call to bar |
| calls.rb:344:1:344:10 | call to foo | x | calls.rb:344:8:344:9 | 42 |
| calls.rb:345:1:345:15 | call to foo | novar | calls.rb:345:9:345:13 | call to novar |
| calls.rb:345:1:345:15 | call to foo | x | calls.rb:345:5:345:5 | x |
| calls.rb:346:1:346:10 | call to foo | X | calls.rb:346:8:346:9 | 42 |
| calls.rb:347:1:347:7 | call to foo | X | calls.rb:347:5:347:5 | X |
| calls.rb:280:1:280:14 | call to foo | blah | calls.rb:280:11:280:13 | call to bar |
| calls.rb:281:1:281:17 | call to foo | blah | calls.rb:281:11:281:16 | call to bar |
| calls.rb:346:1:346:10 | call to foo | x | calls.rb:346:8:346:9 | 42 |
| calls.rb:347:1:347:15 | call to foo | novar | calls.rb:347:9:347:13 | call to novar |
| calls.rb:347:1:347:15 | call to foo | x | calls.rb:347:5:347:5 | x |
| calls.rb:348:1:348:10 | call to foo | X | calls.rb:348:8:348:9 | 42 |
| calls.rb:349:1:349:7 | call to foo | X | calls.rb:349:5:349:5 | X |

View File

@@ -1,9 +1,11 @@
callsWithNoReceiverArgumentsOrBlock
| calls.rb:31:3:31:7 | yield ... | (none) |
| calls.rb:286:5:286:9 | super call to my_method | my_method |
| calls.rb:287:5:287:11 | super call to my_method | my_method |
| calls.rb:305:5:305:9 | super call to another_method | another_method |
| calls.rb:345:9:345:13 | call to novar | novar |
| calls.rb:272:5:272:5 | * ... | * |
| calls.rb:277:5:277:6 | ** ... | ** |
| calls.rb:288:5:288:9 | super call to my_method | my_method |
| calls.rb:289:5:289:11 | super call to my_method | my_method |
| calls.rb:307:5:307:9 | super call to another_method | another_method |
| calls.rb:347:9:347:13 | call to novar | novar |
callsWithArguments
| calls.rb:14:1:14:11 | call to foo | foo | 0 | calls.rb:14:5:14:5 | 0 |
| calls.rb:14:1:14:11 | call to foo | foo | 1 | calls.rb:14:8:14:8 | 1 |
@@ -30,96 +32,98 @@ callsWithArguments
| calls.rb:268:1:268:6 | call to foo | foo | 0 | calls.rb:268:5:268:5 | &... |
| calls.rb:270:1:270:9 | call to foo | foo | 0 | calls.rb:270:5:270:8 | * ... |
| calls.rb:271:1:271:12 | call to foo | foo | 0 | calls.rb:271:5:271:11 | * ... |
| calls.rb:274:1:274:10 | call to foo | foo | 0 | calls.rb:274:5:274:9 | ** ... |
| calls.rb:275:1:275:13 | call to foo | foo | 0 | calls.rb:275:5:275:12 | ** ... |
| calls.rb:278:1:278:14 | call to foo | foo | 0 | calls.rb:278:5:278:13 | Pair |
| calls.rb:279:1:279:17 | call to foo | foo | 0 | calls.rb:279:5:279:16 | Pair |
| calls.rb:288:5:288:16 | super call to my_method | my_method | 0 | calls.rb:288:11:288:16 | "blah" |
| calls.rb:289:5:289:17 | super call to my_method | my_method | 0 | calls.rb:289:11:289:11 | 1 |
| calls.rb:289:5:289:17 | super call to my_method | my_method | 1 | calls.rb:289:14:289:14 | 2 |
| calls.rb:289:5:289:17 | super call to my_method | my_method | 2 | calls.rb:289:17:289:17 | 3 |
| calls.rb:290:17:290:21 | ... + ... | + | 0 | calls.rb:290:21:290:21 | 1 |
| calls.rb:291:18:291:22 | ... * ... | * | 0 | calls.rb:291:22:291:22 | 2 |
| calls.rb:292:5:292:30 | super call to my_method | my_method | 0 | calls.rb:292:11:292:11 | 4 |
| calls.rb:292:5:292:30 | super call to my_method | my_method | 1 | calls.rb:292:14:292:14 | 5 |
| calls.rb:292:22:292:28 | ... + ... | + | 0 | calls.rb:292:26:292:28 | 100 |
| calls.rb:293:5:293:33 | super call to my_method | my_method | 0 | calls.rb:293:11:293:11 | 6 |
| calls.rb:293:5:293:33 | super call to my_method | my_method | 1 | calls.rb:293:14:293:14 | 7 |
| calls.rb:293:23:293:29 | ... + ... | + | 0 | calls.rb:293:27:293:29 | 200 |
| calls.rb:311:1:311:7 | call to call | call | 0 | calls.rb:311:6:311:6 | 1 |
| calls.rb:314:1:314:8 | call to foo= | foo= | 0 | calls.rb:314:12:314:13 | ... = ... |
| calls.rb:315:1:315:6 | ...[...] | [] | 0 | calls.rb:315:5:315:5 | 0 |
| calls.rb:315:1:315:6 | call to []= | []= | 0 | calls.rb:315:5:315:5 | 0 |
| calls.rb:315:1:315:6 | call to []= | []= | 1 | calls.rb:315:10:315:11 | ... = ... |
| calls.rb:316:1:316:8 | call to [] | [] | 0 | calls.rb:316:1:316:8 | 0 |
| calls.rb:316:1:316:8 | call to foo= | foo= | 0 | calls.rb:316:1:316:8 | ... = ... |
| calls.rb:316:12:316:19 | call to [] | [] | 0 | calls.rb:316:12:316:19 | _ .. _ |
| calls.rb:316:12:316:19 | call to bar= | bar= | 0 | calls.rb:316:12:316:19 | ... = ... |
| calls.rb:316:22:316:27 | ...[...] | [] | 0 | calls.rb:316:26:316:26 | 4 |
| calls.rb:316:22:316:27 | call to [] | [] | 0 | calls.rb:316:22:316:27 | -1 |
| calls.rb:316:22:316:27 | call to []= | []= | 0 | calls.rb:316:26:316:26 | 4 |
| calls.rb:316:22:316:27 | call to []= | []= | 1 | calls.rb:316:22:316:27 | ... = ... |
| calls.rb:316:31:316:42 | call to [] | [] | 0 | calls.rb:316:32:316:32 | 1 |
| calls.rb:316:31:316:42 | call to [] | [] | 1 | calls.rb:316:35:316:35 | 2 |
| calls.rb:316:31:316:42 | call to [] | [] | 2 | calls.rb:316:38:316:38 | 3 |
| calls.rb:316:31:316:42 | call to [] | [] | 3 | calls.rb:316:41:316:41 | 4 |
| calls.rb:317:1:317:1 | call to [] | [] | 0 | calls.rb:317:1:317:1 | 0 |
| calls.rb:317:5:317:10 | ...[...] | [] | 0 | calls.rb:317:9:317:9 | 5 |
| calls.rb:317:5:317:10 | call to [] | [] | 0 | calls.rb:317:5:317:10 | _ .. _ |
| calls.rb:317:5:317:10 | call to []= | []= | 0 | calls.rb:317:9:317:9 | 5 |
| calls.rb:317:5:317:10 | call to []= | []= | 1 | calls.rb:317:5:317:10 | ... = ... |
| calls.rb:317:14:317:22 | call to [] | [] | 0 | calls.rb:317:15:317:15 | 1 |
| calls.rb:317:14:317:22 | call to [] | [] | 1 | calls.rb:317:18:317:18 | 2 |
| calls.rb:317:14:317:22 | call to [] | [] | 2 | calls.rb:317:21:317:21 | 3 |
| calls.rb:318:1:318:10 | call to count= | count= | 1 | calls.rb:318:12:318:13 | __synth__1 |
| calls.rb:318:12:318:13 | ... + ... | + | 0 | calls.rb:318:15:318:15 | 1 |
| calls.rb:319:1:319:6 | ...[...] | [] | 0 | calls.rb:319:5:319:5 | 0 |
| calls.rb:319:1:319:6 | call to [] | [] | 0 | calls.rb:319:5:319:5 | __synth__1 |
| calls.rb:319:1:319:6 | call to []= | []= | 0 | calls.rb:319:5:319:5 | __synth__1 |
| calls.rb:319:1:319:6 | call to []= | []= | 2 | calls.rb:319:8:319:9 | __synth__2 |
| calls.rb:319:8:319:9 | ... + ... | + | 0 | calls.rb:319:11:319:11 | 1 |
| calls.rb:320:1:320:32 | ...[...] | [] | 0 | calls.rb:320:9:320:9 | 0 |
| calls.rb:320:1:320:32 | ...[...] | [] | 1 | calls.rb:320:12:320:18 | call to baz |
| calls.rb:320:1:320:32 | ...[...] | [] | 2 | calls.rb:320:21:320:31 | ... + ... |
| calls.rb:320:1:320:32 | call to [] | [] | 0 | calls.rb:320:9:320:9 | __synth__1 |
| calls.rb:320:1:320:32 | call to [] | [] | 1 | calls.rb:320:12:320:18 | __synth__2 |
| calls.rb:320:1:320:32 | call to [] | [] | 2 | calls.rb:320:21:320:31 | __synth__3 |
| calls.rb:320:1:320:32 | call to []= | []= | 0 | calls.rb:320:9:320:9 | __synth__1 |
| calls.rb:320:1:320:32 | call to []= | []= | 1 | calls.rb:320:12:320:18 | __synth__2 |
| calls.rb:320:1:320:32 | call to []= | []= | 2 | calls.rb:320:21:320:31 | __synth__3 |
| calls.rb:320:1:320:32 | call to []= | []= | 4 | calls.rb:320:34:320:35 | __synth__4 |
| calls.rb:320:21:320:31 | ... + ... | + | 0 | calls.rb:320:31:320:31 | 1 |
| calls.rb:320:34:320:35 | ... * ... | * | 0 | calls.rb:320:37:320:37 | 2 |
| calls.rb:328:25:328:37 | call to print | print | 0 | calls.rb:328:31:328:37 | "error" |
| calls.rb:332:3:332:12 | super call to foo | foo | 0 | calls.rb:332:9:332:11 | ... |
| calls.rb:336:3:336:13 | call to bar | bar | 0 | calls.rb:336:7:336:7 | b |
| calls.rb:336:3:336:13 | call to bar | bar | 1 | calls.rb:336:10:336:12 | ... |
| calls.rb:340:5:340:5 | call to [] | [] | 0 | calls.rb:340:5:340:5 | 0 |
| calls.rb:340:8:340:8 | call to [] | [] | 0 | calls.rb:340:8:340:8 | 1 |
| calls.rb:340:11:340:11 | call to [] | [] | 0 | calls.rb:340:11:340:11 | 2 |
| calls.rb:340:16:340:33 | call to [] | [] | 0 | calls.rb:340:17:340:23 | [...] |
| calls.rb:340:16:340:33 | call to [] | [] | 1 | calls.rb:340:26:340:32 | [...] |
| calls.rb:340:17:340:23 | call to [] | [] | 0 | calls.rb:340:18:340:18 | 1 |
| calls.rb:340:17:340:23 | call to [] | [] | 1 | calls.rb:340:20:340:20 | 2 |
| calls.rb:340:17:340:23 | call to [] | [] | 2 | calls.rb:340:22:340:22 | 3 |
| calls.rb:340:26:340:32 | call to [] | [] | 0 | calls.rb:340:27:340:27 | 4 |
| calls.rb:340:26:340:32 | call to [] | [] | 1 | calls.rb:340:29:340:29 | 5 |
| calls.rb:340:26:340:32 | call to [] | [] | 2 | calls.rb:340:31:340:31 | 6 |
| calls.rb:341:3:341:13 | call to foo | foo | 0 | calls.rb:341:7:341:7 | x |
| calls.rb:341:3:341:13 | call to foo | foo | 1 | calls.rb:341:10:341:10 | y |
| calls.rb:341:3:341:13 | call to foo | foo | 2 | calls.rb:341:13:341:13 | z |
| calls.rb:344:1:344:10 | call to foo | foo | 0 | calls.rb:344:5:344:9 | Pair |
| calls.rb:345:1:345:15 | call to foo | foo | 0 | calls.rb:345:5:345:6 | Pair |
| calls.rb:345:1:345:15 | call to foo | foo | 1 | calls.rb:345:9:345:14 | Pair |
| calls.rb:272:1:272:6 | call to foo | foo | 0 | calls.rb:272:5:272:5 | * ... |
| calls.rb:275:1:275:10 | call to foo | foo | 0 | calls.rb:275:5:275:9 | ** ... |
| calls.rb:276:1:276:13 | call to foo | foo | 0 | calls.rb:276:5:276:12 | ** ... |
| calls.rb:277:1:277:7 | call to foo | foo | 0 | calls.rb:277:5:277:6 | ** ... |
| calls.rb:280:1:280:14 | call to foo | foo | 0 | calls.rb:280:5:280:13 | Pair |
| calls.rb:281:1:281:17 | call to foo | foo | 0 | calls.rb:281:5:281:16 | Pair |
| calls.rb:290:5:290:16 | super call to my_method | my_method | 0 | calls.rb:290:11:290:16 | "blah" |
| calls.rb:291:5:291:17 | super call to my_method | my_method | 0 | calls.rb:291:11:291:11 | 1 |
| calls.rb:291:5:291:17 | super call to my_method | my_method | 1 | calls.rb:291:14:291:14 | 2 |
| calls.rb:291:5:291:17 | super call to my_method | my_method | 2 | calls.rb:291:17:291:17 | 3 |
| calls.rb:292:17:292:21 | ... + ... | + | 0 | calls.rb:292:21:292:21 | 1 |
| calls.rb:293:18:293:22 | ... * ... | * | 0 | calls.rb:293:22:293:22 | 2 |
| calls.rb:294:5:294:30 | super call to my_method | my_method | 0 | calls.rb:294:11:294:11 | 4 |
| calls.rb:294:5:294:30 | super call to my_method | my_method | 1 | calls.rb:294:14:294:14 | 5 |
| calls.rb:294:22:294:28 | ... + ... | + | 0 | calls.rb:294:26:294:28 | 100 |
| calls.rb:295:5:295:33 | super call to my_method | my_method | 0 | calls.rb:295:11:295:11 | 6 |
| calls.rb:295:5:295:33 | super call to my_method | my_method | 1 | calls.rb:295:14:295:14 | 7 |
| calls.rb:295:23:295:29 | ... + ... | + | 0 | calls.rb:295:27:295:29 | 200 |
| calls.rb:313:1:313:7 | call to call | call | 0 | calls.rb:313:6:313:6 | 1 |
| calls.rb:316:1:316:8 | call to foo= | foo= | 0 | calls.rb:316:12:316:13 | ... = ... |
| calls.rb:317:1:317:6 | ...[...] | [] | 0 | calls.rb:317:5:317:5 | 0 |
| calls.rb:317:1:317:6 | call to []= | []= | 0 | calls.rb:317:5:317:5 | 0 |
| calls.rb:317:1:317:6 | call to []= | []= | 1 | calls.rb:317:10:317:11 | ... = ... |
| calls.rb:318:1:318:8 | call to [] | [] | 0 | calls.rb:318:1:318:8 | 0 |
| calls.rb:318:1:318:8 | call to foo= | foo= | 0 | calls.rb:318:1:318:8 | ... = ... |
| calls.rb:318:12:318:19 | call to [] | [] | 0 | calls.rb:318:12:318:19 | _ .. _ |
| calls.rb:318:12:318:19 | call to bar= | bar= | 0 | calls.rb:318:12:318:19 | ... = ... |
| calls.rb:318:22:318:27 | ...[...] | [] | 0 | calls.rb:318:26:318:26 | 4 |
| calls.rb:318:22:318:27 | call to [] | [] | 0 | calls.rb:318:22:318:27 | -1 |
| calls.rb:318:22:318:27 | call to []= | []= | 0 | calls.rb:318:26:318:26 | 4 |
| calls.rb:318:22:318:27 | call to []= | []= | 1 | calls.rb:318:22:318:27 | ... = ... |
| calls.rb:318:31:318:42 | call to [] | [] | 0 | calls.rb:318:32:318:32 | 1 |
| calls.rb:318:31:318:42 | call to [] | [] | 1 | calls.rb:318:35:318:35 | 2 |
| calls.rb:318:31:318:42 | call to [] | [] | 2 | calls.rb:318:38:318:38 | 3 |
| calls.rb:318:31:318:42 | call to [] | [] | 3 | calls.rb:318:41:318:41 | 4 |
| calls.rb:319:1:319:1 | call to [] | [] | 0 | calls.rb:319:1:319:1 | 0 |
| calls.rb:319:5:319:10 | ...[...] | [] | 0 | calls.rb:319:9:319:9 | 5 |
| calls.rb:319:5:319:10 | call to [] | [] | 0 | calls.rb:319:5:319:10 | _ .. _ |
| calls.rb:319:5:319:10 | call to []= | []= | 0 | calls.rb:319:9:319:9 | 5 |
| calls.rb:319:5:319:10 | call to []= | []= | 1 | calls.rb:319:5:319:10 | ... = ... |
| calls.rb:319:14:319:22 | call to [] | [] | 0 | calls.rb:319:15:319:15 | 1 |
| calls.rb:319:14:319:22 | call to [] | [] | 1 | calls.rb:319:18:319:18 | 2 |
| calls.rb:319:14:319:22 | call to [] | [] | 2 | calls.rb:319:21:319:21 | 3 |
| calls.rb:320:1:320:10 | call to count= | count= | 1 | calls.rb:320:12:320:13 | __synth__1 |
| calls.rb:320:12:320:13 | ... + ... | + | 0 | calls.rb:320:15:320:15 | 1 |
| calls.rb:321:1:321:6 | ...[...] | [] | 0 | calls.rb:321:5:321:5 | 0 |
| calls.rb:321:1:321:6 | call to [] | [] | 0 | calls.rb:321:5:321:5 | __synth__1 |
| calls.rb:321:1:321:6 | call to []= | []= | 0 | calls.rb:321:5:321:5 | __synth__1 |
| calls.rb:321:1:321:6 | call to []= | []= | 2 | calls.rb:321:8:321:9 | __synth__2 |
| calls.rb:321:8:321:9 | ... + ... | + | 0 | calls.rb:321:11:321:11 | 1 |
| calls.rb:322:1:322:32 | ...[...] | [] | 0 | calls.rb:322:9:322:9 | 0 |
| calls.rb:322:1:322:32 | ...[...] | [] | 1 | calls.rb:322:12:322:18 | call to baz |
| calls.rb:322:1:322:32 | ...[...] | [] | 2 | calls.rb:322:21:322:31 | ... + ... |
| calls.rb:322:1:322:32 | call to [] | [] | 0 | calls.rb:322:9:322:9 | __synth__1 |
| calls.rb:322:1:322:32 | call to [] | [] | 1 | calls.rb:322:12:322:18 | __synth__2 |
| calls.rb:322:1:322:32 | call to [] | [] | 2 | calls.rb:322:21:322:31 | __synth__3 |
| calls.rb:322:1:322:32 | call to []= | []= | 0 | calls.rb:322:9:322:9 | __synth__1 |
| calls.rb:322:1:322:32 | call to []= | []= | 1 | calls.rb:322:12:322:18 | __synth__2 |
| calls.rb:322:1:322:32 | call to []= | []= | 2 | calls.rb:322:21:322:31 | __synth__3 |
| calls.rb:322:1:322:32 | call to []= | []= | 4 | calls.rb:322:34:322:35 | __synth__4 |
| calls.rb:322:21:322:31 | ... + ... | + | 0 | calls.rb:322:31:322:31 | 1 |
| calls.rb:322:34:322:35 | ... * ... | * | 0 | calls.rb:322:37:322:37 | 2 |
| calls.rb:330:25:330:37 | call to print | print | 0 | calls.rb:330:31:330:37 | "error" |
| calls.rb:334:3:334:12 | super call to foo | foo | 0 | calls.rb:334:9:334:11 | ... |
| calls.rb:338:3:338:13 | call to bar | bar | 0 | calls.rb:338:7:338:7 | b |
| calls.rb:338:3:338:13 | call to bar | bar | 1 | calls.rb:338:10:338:12 | ... |
| calls.rb:342:5:342:5 | call to [] | [] | 0 | calls.rb:342:5:342:5 | 0 |
| calls.rb:342:8:342:8 | call to [] | [] | 0 | calls.rb:342:8:342:8 | 1 |
| calls.rb:342:11:342:11 | call to [] | [] | 0 | calls.rb:342:11:342:11 | 2 |
| calls.rb:342:16:342:33 | call to [] | [] | 0 | calls.rb:342:17:342:23 | [...] |
| calls.rb:342:16:342:33 | call to [] | [] | 1 | calls.rb:342:26:342:32 | [...] |
| calls.rb:342:17:342:23 | call to [] | [] | 0 | calls.rb:342:18:342:18 | 1 |
| calls.rb:342:17:342:23 | call to [] | [] | 1 | calls.rb:342:20:342:20 | 2 |
| calls.rb:342:17:342:23 | call to [] | [] | 2 | calls.rb:342:22:342:22 | 3 |
| calls.rb:342:26:342:32 | call to [] | [] | 0 | calls.rb:342:27:342:27 | 4 |
| calls.rb:342:26:342:32 | call to [] | [] | 1 | calls.rb:342:29:342:29 | 5 |
| calls.rb:342:26:342:32 | call to [] | [] | 2 | calls.rb:342:31:342:31 | 6 |
| calls.rb:343:3:343:13 | call to foo | foo | 0 | calls.rb:343:7:343:7 | x |
| calls.rb:343:3:343:13 | call to foo | foo | 1 | calls.rb:343:10:343:10 | y |
| calls.rb:343:3:343:13 | call to foo | foo | 2 | calls.rb:343:13:343:13 | z |
| calls.rb:346:1:346:10 | call to foo | foo | 0 | calls.rb:346:5:346:9 | Pair |
| calls.rb:347:1:347:7 | call to foo | foo | 0 | calls.rb:347:5:347:6 | Pair |
| calls.rb:352:13:352:17 | call to foo | foo | 0 | calls.rb:352:17:352:17 | x |
| calls.rb:362:5:362:6 | call to == | == | 0 | calls.rb:362:1:362:4 | __synth__0__1 |
| calls.rb:364:1:364:23 | call to bar | bar | 0 | calls.rb:364:10:364:10 | 1 |
| calls.rb:364:1:364:23 | call to bar | bar | 0 | calls.rb:364:10:364:10 | 1 |
| calls.rb:364:1:364:23 | call to bar | bar | 1 | calls.rb:364:12:364:12 | 2 |
| calls.rb:364:1:364:23 | call to bar | bar | 1 | calls.rb:364:12:364:12 | 2 |
| calls.rb:364:4:364:5 | call to == | == | 0 | calls.rb:364:1:364:3 | __synth__0__1 |
| calls.rb:347:1:347:15 | call to foo | foo | 0 | calls.rb:347:5:347:6 | Pair |
| calls.rb:347:1:347:15 | call to foo | foo | 1 | calls.rb:347:9:347:14 | Pair |
| calls.rb:348:1:348:10 | call to foo | foo | 0 | calls.rb:348:5:348:9 | Pair |
| calls.rb:349:1:349:7 | call to foo | foo | 0 | calls.rb:349:5:349:6 | Pair |
| calls.rb:354:13:354:17 | call to foo | foo | 0 | calls.rb:354:17:354:17 | x |
| calls.rb:364:5:364:6 | call to == | == | 0 | calls.rb:364:1:364:4 | __synth__0__1 |
| calls.rb:366:1:366:23 | call to bar | bar | 0 | calls.rb:366:10:366:10 | 1 |
| calls.rb:366:1:366:23 | call to bar | bar | 0 | calls.rb:366:10:366:10 | 1 |
| calls.rb:366:1:366:23 | call to bar | bar | 1 | calls.rb:366:12:366:12 | 2 |
| calls.rb:366:1:366:23 | call to bar | bar | 1 | calls.rb:366:12:366:12 | 2 |
| calls.rb:366:4:366:5 | call to == | == | 0 | calls.rb:366:1:366:3 | __synth__0__1 |
callsWithReceiver
| calls.rb:2:1:2:5 | call to foo | calls.rb:2:1:2:5 | self |
| calls.rb:5:1:5:10 | call to bar | calls.rb:5:1:5:3 | Foo |
@@ -288,108 +292,110 @@ callsWithReceiver
| calls.rb:271:1:271:12 | call to foo | calls.rb:271:1:271:12 | self |
| calls.rb:271:5:271:11 | * ... | calls.rb:271:6:271:11 | call to bar |
| calls.rb:271:6:271:11 | call to bar | calls.rb:271:6:271:6 | X |
| calls.rb:274:1:274:10 | call to foo | calls.rb:274:1:274:10 | self |
| calls.rb:274:5:274:9 | ** ... | calls.rb:274:7:274:9 | call to bar |
| calls.rb:274:7:274:9 | call to bar | calls.rb:274:7:274:9 | self |
| calls.rb:275:1:275:13 | call to foo | calls.rb:275:1:275:13 | self |
| calls.rb:275:5:275:12 | ** ... | calls.rb:275:7:275:12 | call to bar |
| calls.rb:275:7:275:12 | call to bar | calls.rb:275:7:275:7 | X |
| calls.rb:278:1:278:14 | call to foo | calls.rb:278:1:278:14 | self |
| calls.rb:278:11:278:13 | call to bar | calls.rb:278:11:278:13 | self |
| calls.rb:279:1:279:17 | call to foo | calls.rb:279:1:279:17 | self |
| calls.rb:279:11:279:16 | call to bar | calls.rb:279:11:279:11 | X |
| calls.rb:290:17:290:21 | ... + ... | calls.rb:290:17:290:17 | x |
| calls.rb:291:18:291:22 | ... * ... | calls.rb:291:18:291:18 | x |
| calls.rb:292:22:292:28 | ... + ... | calls.rb:292:22:292:22 | x |
| calls.rb:293:23:293:29 | ... + ... | calls.rb:293:23:293:23 | x |
| calls.rb:303:5:303:7 | call to foo | calls.rb:303:5:303:7 | self |
| calls.rb:303:5:303:13 | call to super | calls.rb:303:5:303:7 | call to foo |
| calls.rb:304:5:304:14 | call to super | calls.rb:304:5:304:8 | self |
| calls.rb:305:5:305:15 | call to super | calls.rb:305:5:305:9 | super call to another_method |
| calls.rb:310:1:310:3 | call to foo | calls.rb:310:1:310:3 | self |
| calls.rb:310:1:310:6 | call to call | calls.rb:310:1:310:3 | call to foo |
| calls.rb:311:1:311:3 | call to foo | calls.rb:311:1:311:3 | self |
| calls.rb:311:1:311:7 | call to call | calls.rb:311:1:311:3 | call to foo |
| calls.rb:314:1:314:8 | call to foo | calls.rb:314:1:314:4 | self |
| calls.rb:314:1:314:8 | call to foo= | calls.rb:314:1:314:4 | self |
| calls.rb:315:1:315:3 | call to foo | calls.rb:315:1:315:3 | self |
| calls.rb:315:1:315:6 | ...[...] | calls.rb:315:1:315:3 | call to foo |
| calls.rb:315:1:315:6 | call to []= | calls.rb:315:1:315:3 | call to foo |
| calls.rb:316:1:316:8 | call to [] | calls.rb:316:1:316:8 | __synth__0 |
| calls.rb:272:1:272:6 | call to foo | calls.rb:272:1:272:6 | self |
| calls.rb:275:1:275:10 | call to foo | calls.rb:275:1:275:10 | self |
| calls.rb:275:5:275:9 | ** ... | calls.rb:275:7:275:9 | call to bar |
| calls.rb:275:7:275:9 | call to bar | calls.rb:275:7:275:9 | self |
| calls.rb:276:1:276:13 | call to foo | calls.rb:276:1:276:13 | self |
| calls.rb:276:5:276:12 | ** ... | calls.rb:276:7:276:12 | call to bar |
| calls.rb:276:7:276:12 | call to bar | calls.rb:276:7:276:7 | X |
| calls.rb:277:1:277:7 | call to foo | calls.rb:277:1:277:7 | self |
| calls.rb:280:1:280:14 | call to foo | calls.rb:280:1:280:14 | self |
| calls.rb:280:11:280:13 | call to bar | calls.rb:280:11:280:13 | self |
| calls.rb:281:1:281:17 | call to foo | calls.rb:281:1:281:17 | self |
| calls.rb:281:11:281:16 | call to bar | calls.rb:281:11:281:11 | X |
| calls.rb:292:17:292:21 | ... + ... | calls.rb:292:17:292:17 | x |
| calls.rb:293:18:293:22 | ... * ... | calls.rb:293:18:293:18 | x |
| calls.rb:294:22:294:28 | ... + ... | calls.rb:294:22:294:22 | x |
| calls.rb:295:23:295:29 | ... + ... | calls.rb:295:23:295:23 | x |
| calls.rb:305:5:305:7 | call to foo | calls.rb:305:5:305:7 | self |
| calls.rb:305:5:305:13 | call to super | calls.rb:305:5:305:7 | call to foo |
| calls.rb:306:5:306:14 | call to super | calls.rb:306:5:306:8 | self |
| calls.rb:307:5:307:15 | call to super | calls.rb:307:5:307:9 | super call to another_method |
| calls.rb:312:1:312:3 | call to foo | calls.rb:312:1:312:3 | self |
| calls.rb:312:1:312:6 | call to call | calls.rb:312:1:312:3 | call to foo |
| calls.rb:313:1:313:3 | call to foo | calls.rb:313:1:313:3 | self |
| calls.rb:313:1:313:7 | call to call | calls.rb:313:1:313:3 | call to foo |
| calls.rb:316:1:316:8 | call to foo | calls.rb:316:1:316:4 | self |
| calls.rb:316:1:316:8 | call to foo= | calls.rb:316:1:316:4 | self |
| calls.rb:316:12:316:19 | call to [] | calls.rb:316:12:316:19 | __synth__0 |
| calls.rb:316:12:316:19 | call to bar | calls.rb:316:12:316:15 | self |
| calls.rb:316:12:316:19 | call to bar= | calls.rb:316:12:316:15 | self |
| calls.rb:316:22:316:24 | call to foo | calls.rb:316:22:316:24 | self |
| calls.rb:316:22:316:27 | ...[...] | calls.rb:316:22:316:24 | call to foo |
| calls.rb:316:22:316:27 | call to [] | calls.rb:316:22:316:27 | __synth__0 |
| calls.rb:316:22:316:27 | call to []= | calls.rb:316:22:316:24 | call to foo |
| calls.rb:316:31:316:42 | * ... | calls.rb:316:31:316:42 | [...] |
| calls.rb:316:31:316:42 | call to [] | calls.rb:316:31:316:42 | Array |
| calls.rb:317:1:317:1 | call to [] | calls.rb:317:1:317:1 | __synth__0 |
| calls.rb:317:5:317:7 | call to foo | calls.rb:317:5:317:7 | self |
| calls.rb:317:5:317:10 | ...[...] | calls.rb:317:5:317:7 | call to foo |
| calls.rb:317:5:317:10 | call to [] | calls.rb:317:5:317:10 | __synth__0 |
| calls.rb:317:5:317:10 | call to []= | calls.rb:317:5:317:7 | call to foo |
| calls.rb:317:14:317:22 | * ... | calls.rb:317:14:317:22 | [...] |
| calls.rb:317:14:317:22 | call to [] | calls.rb:317:14:317:22 | Array |
| calls.rb:318:1:318:10 | call to count | calls.rb:318:1:318:4 | __synth__0 |
| calls.rb:318:1:318:10 | call to count | calls.rb:318:1:318:4 | self |
| calls.rb:318:1:318:10 | call to count= | calls.rb:318:1:318:4 | __synth__0 |
| calls.rb:318:12:318:13 | ... + ... | calls.rb:318:1:318:10 | call to count |
| calls.rb:319:1:319:3 | call to foo | calls.rb:319:1:319:3 | self |
| calls.rb:319:1:319:6 | ...[...] | calls.rb:319:1:319:3 | call to foo |
| calls.rb:319:1:319:6 | call to [] | calls.rb:319:1:319:3 | __synth__0 |
| calls.rb:319:1:319:6 | call to []= | calls.rb:319:1:319:3 | __synth__0 |
| calls.rb:319:8:319:9 | ... + ... | calls.rb:319:1:319:6 | call to [] |
| calls.rb:320:1:320:3 | call to foo | calls.rb:320:1:320:3 | self |
| calls.rb:320:1:320:7 | call to bar | calls.rb:320:1:320:3 | call to foo |
| calls.rb:320:1:320:32 | ...[...] | calls.rb:320:1:320:7 | call to bar |
| calls.rb:320:1:320:32 | call to [] | calls.rb:320:1:320:7 | __synth__0 |
| calls.rb:320:1:320:32 | call to []= | calls.rb:320:1:320:7 | __synth__0 |
| calls.rb:320:12:320:14 | call to foo | calls.rb:320:12:320:14 | self |
| calls.rb:320:12:320:18 | call to baz | calls.rb:320:12:320:14 | call to foo |
| calls.rb:320:21:320:23 | call to foo | calls.rb:320:21:320:23 | self |
| calls.rb:320:21:320:27 | call to boo | calls.rb:320:21:320:23 | call to foo |
| calls.rb:320:21:320:31 | ... + ... | calls.rb:320:21:320:27 | call to boo |
| calls.rb:320:34:320:35 | ... * ... | calls.rb:320:1:320:32 | call to [] |
| calls.rb:323:11:323:13 | call to bar | calls.rb:323:11:323:13 | self |
| calls.rb:324:13:324:15 | call to bar | calls.rb:324:13:324:15 | self |
| calls.rb:325:14:325:16 | call to bar | calls.rb:325:14:325:16 | self |
| calls.rb:326:18:326:20 | call to bar | calls.rb:326:18:326:20 | self |
| calls.rb:327:22:327:24 | call to bar | calls.rb:327:22:327:24 | self |
| calls.rb:328:13:328:15 | call to bar | calls.rb:328:13:328:15 | self |
| calls.rb:328:25:328:37 | call to print | calls.rb:328:25:328:37 | self |
| calls.rb:336:3:336:13 | call to bar | calls.rb:336:3:336:13 | self |
| calls.rb:340:1:342:3 | * ... | calls.rb:340:1:342:3 | __synth__0__1 |
| calls.rb:340:1:342:3 | call to each | calls.rb:340:16:340:33 | [...] |
| calls.rb:340:5:340:5 | call to [] | calls.rb:340:5:340:5 | __synth__0__1 |
| calls.rb:340:8:340:8 | call to [] | calls.rb:340:8:340:8 | __synth__0__1 |
| calls.rb:340:11:340:11 | call to [] | calls.rb:340:11:340:11 | __synth__0__1 |
| calls.rb:340:16:340:33 | call to [] | calls.rb:340:16:340:33 | Array |
| calls.rb:340:17:340:23 | call to [] | calls.rb:340:17:340:23 | Array |
| calls.rb:340:26:340:32 | call to [] | calls.rb:340:26:340:32 | Array |
| calls.rb:341:3:341:13 | call to foo | calls.rb:341:3:341:13 | self |
| calls.rb:344:1:344:10 | call to foo | calls.rb:344:1:344:10 | self |
| calls.rb:345:1:345:15 | call to foo | calls.rb:345:1:345:15 | self |
| calls.rb:317:1:317:3 | call to foo | calls.rb:317:1:317:3 | self |
| calls.rb:317:1:317:6 | ...[...] | calls.rb:317:1:317:3 | call to foo |
| calls.rb:317:1:317:6 | call to []= | calls.rb:317:1:317:3 | call to foo |
| calls.rb:318:1:318:8 | call to [] | calls.rb:318:1:318:8 | __synth__0 |
| calls.rb:318:1:318:8 | call to foo | calls.rb:318:1:318:4 | self |
| calls.rb:318:1:318:8 | call to foo= | calls.rb:318:1:318:4 | self |
| calls.rb:318:12:318:19 | call to [] | calls.rb:318:12:318:19 | __synth__0 |
| calls.rb:318:12:318:19 | call to bar | calls.rb:318:12:318:15 | self |
| calls.rb:318:12:318:19 | call to bar= | calls.rb:318:12:318:15 | self |
| calls.rb:318:22:318:24 | call to foo | calls.rb:318:22:318:24 | self |
| calls.rb:318:22:318:27 | ...[...] | calls.rb:318:22:318:24 | call to foo |
| calls.rb:318:22:318:27 | call to [] | calls.rb:318:22:318:27 | __synth__0 |
| calls.rb:318:22:318:27 | call to []= | calls.rb:318:22:318:24 | call to foo |
| calls.rb:318:31:318:42 | * ... | calls.rb:318:31:318:42 | [...] |
| calls.rb:318:31:318:42 | call to [] | calls.rb:318:31:318:42 | Array |
| calls.rb:319:1:319:1 | call to [] | calls.rb:319:1:319:1 | __synth__0 |
| calls.rb:319:5:319:7 | call to foo | calls.rb:319:5:319:7 | self |
| calls.rb:319:5:319:10 | ...[...] | calls.rb:319:5:319:7 | call to foo |
| calls.rb:319:5:319:10 | call to [] | calls.rb:319:5:319:10 | __synth__0 |
| calls.rb:319:5:319:10 | call to []= | calls.rb:319:5:319:7 | call to foo |
| calls.rb:319:14:319:22 | * ... | calls.rb:319:14:319:22 | [...] |
| calls.rb:319:14:319:22 | call to [] | calls.rb:319:14:319:22 | Array |
| calls.rb:320:1:320:10 | call to count | calls.rb:320:1:320:4 | __synth__0 |
| calls.rb:320:1:320:10 | call to count | calls.rb:320:1:320:4 | self |
| calls.rb:320:1:320:10 | call to count= | calls.rb:320:1:320:4 | __synth__0 |
| calls.rb:320:12:320:13 | ... + ... | calls.rb:320:1:320:10 | call to count |
| calls.rb:321:1:321:3 | call to foo | calls.rb:321:1:321:3 | self |
| calls.rb:321:1:321:6 | ...[...] | calls.rb:321:1:321:3 | call to foo |
| calls.rb:321:1:321:6 | call to [] | calls.rb:321:1:321:3 | __synth__0 |
| calls.rb:321:1:321:6 | call to []= | calls.rb:321:1:321:3 | __synth__0 |
| calls.rb:321:8:321:9 | ... + ... | calls.rb:321:1:321:6 | call to [] |
| calls.rb:322:1:322:3 | call to foo | calls.rb:322:1:322:3 | self |
| calls.rb:322:1:322:7 | call to bar | calls.rb:322:1:322:3 | call to foo |
| calls.rb:322:1:322:32 | ...[...] | calls.rb:322:1:322:7 | call to bar |
| calls.rb:322:1:322:32 | call to [] | calls.rb:322:1:322:7 | __synth__0 |
| calls.rb:322:1:322:32 | call to []= | calls.rb:322:1:322:7 | __synth__0 |
| calls.rb:322:12:322:14 | call to foo | calls.rb:322:12:322:14 | self |
| calls.rb:322:12:322:18 | call to baz | calls.rb:322:12:322:14 | call to foo |
| calls.rb:322:21:322:23 | call to foo | calls.rb:322:21:322:23 | self |
| calls.rb:322:21:322:27 | call to boo | calls.rb:322:21:322:23 | call to foo |
| calls.rb:322:21:322:31 | ... + ... | calls.rb:322:21:322:27 | call to boo |
| calls.rb:322:34:322:35 | ... * ... | calls.rb:322:1:322:32 | call to [] |
| calls.rb:325:11:325:13 | call to bar | calls.rb:325:11:325:13 | self |
| calls.rb:326:13:326:15 | call to bar | calls.rb:326:13:326:15 | self |
| calls.rb:327:14:327:16 | call to bar | calls.rb:327:14:327:16 | self |
| calls.rb:328:18:328:20 | call to bar | calls.rb:328:18:328:20 | self |
| calls.rb:329:22:329:24 | call to bar | calls.rb:329:22:329:24 | self |
| 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 | __synth__0__1 |
| calls.rb:342:1:344:3 | call to each | calls.rb:342:16:342:33 | [...] |
| calls.rb:342:5:342:5 | call to [] | calls.rb:342:5:342:5 | __synth__0__1 |
| calls.rb:342:8:342:8 | call to [] | calls.rb:342:8:342:8 | __synth__0__1 |
| calls.rb:342:11:342:11 | call to [] | calls.rb:342:11:342:11 | __synth__0__1 |
| calls.rb:342:16:342:33 | call to [] | calls.rb:342:16:342:33 | Array |
| calls.rb:342:17:342:23 | call to [] | calls.rb:342:17:342:23 | Array |
| calls.rb:342:26:342:32 | call to [] | calls.rb:342:26:342:32 | Array |
| calls.rb:343:3:343:13 | call to foo | calls.rb:343:3:343:13 | self |
| calls.rb:346:1:346:10 | call to foo | calls.rb:346:1:346:10 | self |
| calls.rb:347:1:347:7 | call to foo | calls.rb:347:1:347:7 | self |
| calls.rb:352:13:352:17 | call to foo | calls.rb:352:13:352:17 | self |
| calls.rb:353:13:353:24 | call to unknown_call | calls.rb:353:13:353:24 | self |
| calls.rb:357:3:357:14 | call to unknown_call | calls.rb:357:3:357:14 | self |
| calls.rb:361:1:361:4 | call to list | calls.rb:361:1:361:4 | self |
| calls.rb:361:1:361:11 | call to empty? | calls.rb:361:1:361:4 | call to list |
| calls.rb:362:1:362:4 | call to list | calls.rb:362:1:362:4 | self |
| calls.rb:362:1:362:12 | call to empty? | calls.rb:362:1:362:4 | __synth__0__1 |
| calls.rb:362:1:362:12 | call to empty? | calls.rb:362:1:362:4 | call to list |
| calls.rb:362:5:362:6 | call to == | calls.rb:362:5:362:6 | nil |
| calls.rb:347:1:347:15 | call to foo | calls.rb:347:1:347:15 | self |
| calls.rb:348:1:348:10 | call to foo | calls.rb:348:1:348:10 | self |
| calls.rb:349:1:349:7 | call to foo | calls.rb:349:1:349:7 | self |
| calls.rb:354:13:354:17 | call to foo | calls.rb:354:13:354:17 | self |
| calls.rb:355:13:355:24 | call to unknown_call | calls.rb:355:13:355:24 | self |
| calls.rb:359:3:359:14 | call to unknown_call | calls.rb:359:3:359:14 | self |
| calls.rb:363:1:363:4 | call to list | calls.rb:363:1:363:4 | self |
| calls.rb:363:1:363:12 | call to empty? | calls.rb:363:1:363:4 | call to list |
| calls.rb:364:1:364:3 | call to foo | calls.rb:364:1:364:3 | self |
| calls.rb:364:1:364:23 | call to bar | calls.rb:364:1:364:3 | __synth__0__1 |
| calls.rb:364:1:364:23 | call to bar | calls.rb:364:1:364:3 | call to foo |
| calls.rb:364:4:364:5 | call to == | calls.rb:364:4:364:5 | nil |
| calls.rb:363:1:363:11 | call to empty? | calls.rb:363:1:363:4 | call to list |
| calls.rb:364:1:364:4 | call to list | calls.rb:364:1:364:4 | self |
| calls.rb:364:1:364:12 | call to empty? | calls.rb:364:1:364:4 | __synth__0__1 |
| calls.rb:364:1:364:12 | call to empty? | calls.rb:364:1:364:4 | call to list |
| calls.rb:364:5:364:6 | call to == | calls.rb:364:5:364:6 | nil |
| calls.rb:365:1:365:4 | call to list | calls.rb:365:1:365:4 | self |
| calls.rb:365:1:365:12 | call to empty? | calls.rb:365:1:365:4 | call to list |
| calls.rb:366:1:366:3 | call to foo | calls.rb:366:1:366:3 | self |
| calls.rb:366:1:366:23 | call to bar | calls.rb:366:1:366:3 | __synth__0__1 |
| calls.rb:366:1:366:23 | call to bar | calls.rb:366:1:366:3 | call to foo |
| calls.rb:366:4:366:5 | call to == | calls.rb:366:4:366:5 | nil |
callsWithBlock
| calls.rb:17:1:17:17 | call to foo | calls.rb:17:5:17:17 | { ... } |
| calls.rb:20:1:22:3 | call to foo | calls.rb:20:5:22:3 | do ... end |
@@ -398,52 +404,52 @@ callsWithBlock
| calls.rb:95:1:98:3 | call to foo | calls.rb:95:7:98:3 | do ... end |
| calls.rb:226:1:228:3 | call to each | calls.rb:226:1:228:3 | { ... } |
| calls.rb:229:1:231:3 | call to each | calls.rb:229:1:231:3 | { ... } |
| calls.rb:290:5:290:23 | super call to my_method | calls.rb:290:11:290:23 | { ... } |
| calls.rb:291:5:291:26 | super call to my_method | calls.rb:291:11:291:26 | do ... end |
| calls.rb:292:5:292:30 | super call to my_method | calls.rb:292:16:292:30 | { ... } |
| calls.rb:293:5:293:33 | super call to my_method | calls.rb:293:16:293:33 | do ... end |
| calls.rb:340:1:342:3 | call to each | calls.rb:340:1:342:3 | { ... } |
| calls.rb:364:1:364:23 | call to bar | calls.rb:364:15:364:23 | { ... } |
| calls.rb:364:1:364:23 | call to bar | calls.rb:364:15:364:23 | { ... } |
| calls.rb:292:5:292:23 | super call to my_method | calls.rb:292:11:292:23 | { ... } |
| calls.rb:293:5:293:26 | super call to my_method | calls.rb:293:11:293:26 | do ... end |
| calls.rb:294:5:294:30 | super call to my_method | calls.rb:294:16:294:30 | { ... } |
| calls.rb:295:5:295:33 | super call to my_method | calls.rb:295:16:295:33 | do ... end |
| calls.rb:342:1:344:3 | call to each | calls.rb:342:1:344:3 | { ... } |
| calls.rb:366:1:366:23 | call to bar | calls.rb:366:15:366:23 | { ... } |
| calls.rb:366:1:366:23 | call to bar | calls.rb:366:15:366:23 | { ... } |
yieldCalls
| calls.rb:31:3:31:7 | yield ... |
| calls.rb:36:3:36:16 | yield ... |
superCalls
| calls.rb:286:5:286:9 | super call to my_method |
| calls.rb:287:5:287:11 | super call to my_method |
| calls.rb:288:5:288:16 | super call to my_method |
| calls.rb:289:5:289:17 | super call to my_method |
| calls.rb:290:5:290:23 | super call to my_method |
| calls.rb:291:5:291:26 | super call to my_method |
| calls.rb:292:5:292:30 | super call to my_method |
| calls.rb:293:5:293:33 | super call to my_method |
| calls.rb:305:5:305:9 | super call to another_method |
| calls.rb:332:3:332:12 | super call to foo |
| calls.rb:288:5:288:9 | super call to my_method |
| calls.rb:289:5:289:11 | super call to my_method |
| calls.rb:290:5:290:16 | super call to my_method |
| calls.rb:291:5:291:17 | super call to my_method |
| calls.rb:292:5:292:23 | super call to my_method |
| calls.rb:293:5:293:26 | super call to my_method |
| calls.rb:294:5:294:30 | super call to my_method |
| calls.rb:295:5:295:33 | super call to my_method |
| calls.rb:307:5:307:9 | super call to another_method |
| calls.rb:334:3:334:12 | super call to foo |
superCallsWithArguments
| calls.rb:288:5:288:16 | super call to my_method | 0 | calls.rb:288:11:288:16 | "blah" |
| calls.rb:289:5:289:17 | super call to my_method | 0 | calls.rb:289:11:289:11 | 1 |
| calls.rb:289:5:289:17 | super call to my_method | 1 | calls.rb:289:14:289:14 | 2 |
| calls.rb:289:5:289:17 | super call to my_method | 2 | calls.rb:289:17:289:17 | 3 |
| calls.rb:292:5:292:30 | super call to my_method | 0 | calls.rb:292:11:292:11 | 4 |
| calls.rb:292:5:292:30 | super call to my_method | 1 | calls.rb:292:14:292:14 | 5 |
| calls.rb:293:5:293:33 | super call to my_method | 0 | calls.rb:293:11:293:11 | 6 |
| calls.rb:293:5:293:33 | super call to my_method | 1 | calls.rb:293:14:293:14 | 7 |
| calls.rb:332:3:332:12 | super call to foo | 0 | calls.rb:332:9:332:11 | ... |
| calls.rb:290:5:290:16 | super call to my_method | 0 | calls.rb:290:11:290:16 | "blah" |
| calls.rb:291:5:291:17 | super call to my_method | 0 | calls.rb:291:11:291:11 | 1 |
| calls.rb:291:5:291:17 | super call to my_method | 1 | calls.rb:291:14:291:14 | 2 |
| calls.rb:291:5:291:17 | super call to my_method | 2 | calls.rb:291:17:291:17 | 3 |
| calls.rb:294:5:294:30 | super call to my_method | 0 | calls.rb:294:11:294:11 | 4 |
| calls.rb:294:5:294:30 | super call to my_method | 1 | calls.rb:294:14:294:14 | 5 |
| calls.rb:295:5:295:33 | super call to my_method | 0 | calls.rb:295:11:295:11 | 6 |
| calls.rb:295:5:295:33 | super call to my_method | 1 | calls.rb:295:14:295:14 | 7 |
| calls.rb:334:3:334:12 | super call to foo | 0 | calls.rb:334:9:334:11 | ... |
superCallsWithBlock
| calls.rb:290:5:290:23 | super call to my_method | calls.rb:290:11:290:23 | { ... } |
| calls.rb:291:5:291:26 | super call to my_method | calls.rb:291:11:291:26 | do ... end |
| calls.rb:292:5:292:30 | super call to my_method | calls.rb:292:16:292:30 | { ... } |
| calls.rb:293:5:293:33 | super call to my_method | calls.rb:293:16:293:33 | do ... end |
| calls.rb:292:5:292:23 | super call to my_method | calls.rb:292:11:292:23 | { ... } |
| calls.rb:293:5:293:26 | super call to my_method | calls.rb:293:11:293:26 | do ... end |
| calls.rb:294:5:294:30 | super call to my_method | calls.rb:294:16:294:30 | { ... } |
| calls.rb:295:5:295:33 | super call to my_method | calls.rb:295:16:295:33 | do ... end |
setterCalls
| calls.rb:314:1:314:8 | call to foo= |
| calls.rb:315:1:315:6 | call to []= |
| calls.rb:316:1:316:8 | call to foo= |
| calls.rb:316:12:316:19 | call to bar= |
| calls.rb:316:22:316:27 | call to []= |
| calls.rb:317:5:317:10 | call to []= |
| calls.rb:318:1:318:10 | call to count= |
| calls.rb:319:1:319:6 | call to []= |
| calls.rb:320:1:320:32 | call to []= |
| calls.rb:317:1:317:6 | call to []= |
| calls.rb:318:1:318:8 | call to foo= |
| calls.rb:318:12:318:19 | call to bar= |
| calls.rb:318:22:318:27 | call to []= |
| calls.rb:319:5:319:10 | call to []= |
| calls.rb:320:1:320:10 | call to count= |
| calls.rb:321:1:321:6 | call to []= |
| calls.rb:322:1:322:32 | call to []= |
callsWithSafeNavigationOperator
| calls.rb:362:1:362:12 | call to empty? |
| calls.rb:364:1:364:23 | call to bar |
| calls.rb:364:1:364:12 | call to empty? |
| calls.rb:366:1:366:23 | call to bar |

View File

@@ -269,10 +269,12 @@ foo(&)
# splat argument
foo(*bar)
foo(*X::bar)
foo(*)
# hash-splat argument
foo(**bar)
foo(**X::bar)
foo(**)
# the value in a keyword argument
foo(blah: bar)

View File

@@ -37,6 +37,8 @@ idParams
| params.rb:77:16:77:18 | val | val |
| params.rb:81:31:81:35 | array | array |
| params.rb:86:14:86:14 | x | x |
| params.rb:89:31:89:35 | array | array |
| params.rb:94:36:94:39 | hash | hash |
blockParams
| params.rb:46:28:46:33 | &block | block |
| params.rb:62:29:62:34 | &block | block |
@@ -91,6 +93,10 @@ paramsInMethods
| params.rb:73:1:74:3 | method_with_nil_splat | 1 | params.rb:73:35:73:39 | **nil | HashSplatNilParameter |
| params.rb:81:1:84:3 | anonymous_block_parameter | 0 | params.rb:81:31:81:35 | array | SimpleParameter |
| params.rb:81:1:84:3 | anonymous_block_parameter | 1 | params.rb:81:38:81:38 | & | BlockParameter |
| params.rb:89:1:91:3 | anonymous_splat_parameter | 0 | params.rb:89:31:89:35 | array | SimpleParameter |
| params.rb:89:1:91:3 | anonymous_splat_parameter | 1 | params.rb:89:38:89:38 | * | SplatParameter |
| params.rb:94:1:96:3 | anonymous_hash_splat_parameter | 0 | params.rb:94:36:94:39 | hash | SimpleParameter |
| params.rb:94:1:96:3 | anonymous_hash_splat_parameter | 1 | params.rb:94:42:94:43 | ** | HashSplatParameter |
paramsInBlocks
| params.rb:9:11:11:3 | do ... end | 0 | params.rb:9:15:9:17 | key | SimpleParameter |
| params.rb:9:11:11:3 | do ... end | 1 | params.rb:9:20:9:24 | value | SimpleParameter |
@@ -165,3 +171,7 @@ params
| params.rb:81:31:81:35 | array | 0 | SimpleParameter |
| params.rb:81:38:81:38 | & | 1 | BlockParameter |
| params.rb:86:14:86:14 | x | 0 | SimpleParameter |
| params.rb:89:31:89:35 | array | 0 | SimpleParameter |
| params.rb:89:38:89:38 | * | 1 | SplatParameter |
| params.rb:94:36:94:39 | hash | 0 | SimpleParameter |
| params.rb:94:42:94:43 | ** | 1 | HashSplatParameter |

View File

@@ -84,3 +84,13 @@ def anonymous_block_parameter(array, &)
end
run_block { |x; y, z | puts x }
# Anonymous splat parameter
def anonymous_splat_parameter(array, *)
array.concat(*)
end
# Anonymous hash splat parameter
def anonymous_hash_splat_parameter(hash, **)
hash.merge(**)
end

View File

@@ -3737,12 +3737,12 @@ cfg.rb:
#-----| -> exit do ... end
# 208| elem
#-----| -> *
#-----| -> __synth__0
# 208| *
#-----| -> **
# 208| __synth__0
#-----| -> __synth__0
# 208| **
# 208| __synth__0
#-----| -> elem
# 209| elem

View File

@@ -1,4 +1,3 @@
| src/not_ruby.rb:5:25:5:26 | parse error | Extraction failed in src/not_ruby.rb with error parse error | 2 |
| src/unsupported_feature.rb:2:1:2:4 | parse error | Extraction failed in src/unsupported_feature.rb with error parse error | 2 |
| src/unsupported_feature.rb:3:7:3:7 | parse error | Extraction failed in src/unsupported_feature.rb with error parse error | 2 |
| src/unsupported_feature.rb:3:14:3:14 | parse error | Extraction failed in src/unsupported_feature.rb with error parse error | 2 |
| src/unsupported_feature.rb:3:1:3:8 | parse error | Extraction failed in src/unsupported_feature.rb with error parse error | 2 |

View File

@@ -1,8 +1,11 @@
#!/bin/bash
set -eux
CARGO=cargo
if [[ "$OSTYPE" == "linux-gnu"* ]]; then
platform="linux64"
if which cross; then
CARGO=cross
fi
elif [[ "$OSTYPE" == "darwin"* ]]; then
platform="osx64"
else
@@ -10,9 +13,9 @@ else
exit 1
fi
cargo build --release
"$CARGO" build --release
cargo run --release -p ruby-generator -- --dbscheme ql/lib/ruby.dbscheme --library ql/lib/codeql/ruby/ast/internal/TreeSitter.qll
"$CARGO" run --release -p ruby-generator -- --dbscheme ql/lib/ruby.dbscheme --library ql/lib/codeql/ruby/ast/internal/TreeSitter.qll
codeql query format -i ql/lib/codeql/ruby/ast/internal/TreeSitter.qll
rm -rf extractor-pack