[ruby/prism] Add a "repeated flag" to parameter nodes

It's possible to repeat parameters in method definitions like so:

```ruby
def foo(_a, _a)
end
```

The compiler needs to know to adjust the local table size to account for
these duplicate names.  We'll use the repeated parameter flag to account
for the extra stack space required

https://github.com/ruby/prism/commit/b443cb1f60

Co-Authored-By: Kevin Newton <kddnewton@gmail.com>
Co-Authored-By: Jemma Issroff <jemmaissroff@gmail.com>
This commit is contained in:
Aaron Patterson 2024-01-09 10:12:03 -08:00 committed by git
parent 8940922d18
commit 881c5a1846
181 changed files with 1442 additions and 218 deletions

View File

@ -138,12 +138,14 @@ module Prism
*params.keywords.grep(OptionalKeywordParameterNode).map(&:name), *params.keywords.grep(OptionalKeywordParameterNode).map(&:name),
] ]
sorted << AnonymousLocal if params.keywords.any?
if params.keyword_rest.is_a?(ForwardingParameterNode) if params.keyword_rest.is_a?(ForwardingParameterNode)
sorted.push(:*, :&, :"...") sorted.push(:*, :&, :"...")
elsif params.keyword_rest.is_a?(KeywordRestParameterNode)
sorted << params.keyword_rest.name if params.keyword_rest.name
end end
sorted << AnonymousLocal if params.keywords.any?
# Recurse down the parameter tree to find any destructured # Recurse down the parameter tree to find any destructured
# parameters and add them after the other parameters. # parameters and add them after the other parameters.
param_stack = params.requireds.concat(params.posts).grep(MultiTargetNode).reverse param_stack = params.requireds.concat(params.posts).grep(MultiTargetNode).reverse
@ -151,15 +153,17 @@ module Prism
case param case param
when MultiTargetNode when MultiTargetNode
param_stack.concat(param.rights.reverse) param_stack.concat(param.rights.reverse)
param_stack << param.rest param_stack << param.rest if param.rest&.expression && !sorted.include?(param.rest.expression.name)
param_stack.concat(param.lefts.reverse) param_stack.concat(param.lefts.reverse)
when RequiredParameterNode when RequiredParameterNode
sorted << param.name sorted << param.name
when SplatNode when SplatNode
sorted << param.expression.name if param.expression sorted << param.expression.name
end end
end end
sorted << params.block.name if params.block&.name
names = sorted.concat(names - sorted) names = sorted.concat(names - sorted)
end end

View File

@ -378,6 +378,11 @@ flags:
- name: BEGIN_MODIFIER - name: BEGIN_MODIFIER
comment: "a loop after a begin statement, so the body is executed first before the condition" comment: "a loop after a begin statement, so the body is executed first before the condition"
comment: Flags for while and until loop nodes. comment: Flags for while and until loop nodes.
- name: ParameterFlags
values:
- name: REPEATED_PARAMETER
comment: "a parameter name that has been repeated in the method signature"
comment: Flags for parameter nodes.
- name: RangeFlags - name: RangeFlags
values: values:
- name: EXCLUDE_END - name: EXCLUDE_END
@ -648,6 +653,9 @@ nodes:
^^^^^^^^^^ ^^^^^^^^^^
- name: BlockLocalVariableNode - name: BlockLocalVariableNode
fields: fields:
- name: flags
type: flags
kind: ParameterFlags
- name: name - name: name
type: constant type: constant
comment: | comment: |
@ -676,6 +684,9 @@ nodes:
^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^
- name: BlockParameterNode - name: BlockParameterNode
fields: fields:
- name: flags
type: flags
kind: ParameterFlags
- name: name - name: name
type: constant? type: constant?
- name: name_loc - name: name_loc
@ -1923,6 +1934,9 @@ nodes:
^^^^ ^^^^
- name: KeywordRestParameterNode - name: KeywordRestParameterNode
fields: fields:
- name: flags
type: flags
kind: ParameterFlags
- name: name - name: name
type: constant? type: constant?
- name: name_loc - name: name_loc
@ -2221,6 +2235,9 @@ nodes:
^^ ^^
- name: OptionalKeywordParameterNode - name: OptionalKeywordParameterNode
fields: fields:
- name: flags
type: flags
kind: ParameterFlags
- name: name - name: name
type: constant type: constant
- name: name_loc - name: name_loc
@ -2235,6 +2252,9 @@ nodes:
end end
- name: OptionalParameterNode - name: OptionalParameterNode
fields: fields:
- name: flags
type: flags
kind: ParameterFlags
- name: name - name: name
type: constant type: constant
- name: name_loc - name: name_loc
@ -2451,6 +2471,9 @@ nodes:
^^^^^^ ^^^^^^
- name: RequiredKeywordParameterNode - name: RequiredKeywordParameterNode
fields: fields:
- name: flags
type: flags
kind: ParameterFlags
- name: name - name: name
type: constant type: constant
- name: name_loc - name: name_loc
@ -2463,6 +2486,9 @@ nodes:
end end
- name: RequiredParameterNode - name: RequiredParameterNode
fields: fields:
- name: flags
type: flags
kind: ParameterFlags
- name: name - name: name
type: constant type: constant
comment: | comment: |
@ -2514,6 +2540,9 @@ nodes:
`ex` is in the `exception` field. `ex` is in the `exception` field.
- name: RestParameterNode - name: RestParameterNode
fields: fields:
- name: flags
type: flags
kind: ParameterFlags
- name: name - name: name
type: constant? type: constant?
- name: name_loc - name: name_loc

View File

@ -887,6 +887,27 @@ pm_node_flag_unset(pm_node_t *node, pm_node_flags_t flag) {
node->flags &= (pm_node_flags_t) ~flag; node->flags &= (pm_node_flags_t) ~flag;
} }
/**
* Set the repeated parameter flag on the given node.
*/
static inline void
pm_node_flag_set_repeated_parameter(pm_node_t *node) {
switch (PM_NODE_TYPE(node)) {
case PM_BLOCK_LOCAL_VARIABLE_NODE:
case PM_BLOCK_PARAMETER_NODE:
case PM_KEYWORD_REST_PARAMETER_NODE:
case PM_OPTIONAL_KEYWORD_PARAMETER_NODE:
case PM_OPTIONAL_PARAMETER_NODE:
case PM_REQUIRED_KEYWORD_PARAMETER_NODE:
case PM_REQUIRED_PARAMETER_NODE:
case PM_REST_PARAMETER_NODE:
pm_node_flag_set(node, PM_PARAMETER_FLAGS_REPEATED_PARAMETER);
break;
default:
fprintf(stderr, "unhandled type %d\n", PM_NODE_TYPE(node));
abort();
};
}
/******************************************************************************/ /******************************************************************************/
/* Node creation functions */ /* Node creation functions */
@ -5996,22 +6017,24 @@ pm_parser_local_add_owned(pm_parser_t *parser, const uint8_t *start, size_t leng
* Add a parameter name to the current scope and check whether the name of the * Add a parameter name to the current scope and check whether the name of the
* parameter is unique or not. * parameter is unique or not.
*/ */
static void static bool
pm_parser_parameter_name_check(pm_parser_t *parser, const pm_token_t *name) { pm_parser_parameter_name_check(pm_parser_t *parser, const pm_token_t *name) {
// We want to check whether the parameter name is a numbered parameter or // We want to check whether the parameter name is a numbered parameter or
// not. // not.
pm_refute_numbered_parameter(parser, name->start, name->end); pm_refute_numbered_parameter(parser, name->start, name->end);
// We want to ignore any parameter name that starts with an underscore.
if ((name->start < name->end) && (*name->start == '_')) return;
// Otherwise we'll fetch the constant id for the parameter name and check // Otherwise we'll fetch the constant id for the parameter name and check
// whether it's already in the current scope. // whether it's already in the current scope.
pm_constant_id_t constant_id = pm_parser_constant_id_token(parser, name); pm_constant_id_t constant_id = pm_parser_constant_id_token(parser, name);
if (pm_constant_id_list_includes(&parser->current_scope->locals, constant_id)) { if (pm_constant_id_list_includes(&parser->current_scope->locals, constant_id)) {
pm_parser_err_token(parser, name, PM_ERR_PARAMETER_NAME_REPEAT); // Add an error if the parameter doesn't start with _ and has been seen before
if ((name->start < name->end) && (*name->start != '_')) {
pm_parser_err_token(parser, name, PM_ERR_PARAMETER_NAME_REPEAT);
}
return true;
} }
return false;
} }
/** /**
@ -11466,7 +11489,9 @@ parse_required_destructured_parameter(pm_parser_t *parser) {
if (accept1(parser, PM_TOKEN_IDENTIFIER)) { if (accept1(parser, PM_TOKEN_IDENTIFIER)) {
pm_token_t name = parser->previous; pm_token_t name = parser->previous;
value = (pm_node_t *) pm_required_parameter_node_create(parser, &name); value = (pm_node_t *) pm_required_parameter_node_create(parser, &name);
pm_parser_parameter_name_check(parser, &name); if (pm_parser_parameter_name_check(parser, &name)) {
pm_node_flag_set_repeated_parameter(value);
}
pm_parser_local_add_token(parser, &name); pm_parser_local_add_token(parser, &name);
} }
@ -11476,7 +11501,9 @@ parse_required_destructured_parameter(pm_parser_t *parser) {
pm_token_t name = parser->previous; pm_token_t name = parser->previous;
param = (pm_node_t *) pm_required_parameter_node_create(parser, &name); param = (pm_node_t *) pm_required_parameter_node_create(parser, &name);
pm_parser_parameter_name_check(parser, &name); if (pm_parser_parameter_name_check(parser, &name)) {
pm_node_flag_set_repeated_parameter(param);
}
pm_parser_local_add_token(parser, &name); pm_parser_local_add_token(parser, &name);
} }
@ -11593,9 +11620,10 @@ parse_parameters(
pm_token_t operator = parser->previous; pm_token_t operator = parser->previous;
pm_token_t name; pm_token_t name;
bool repeated = false;
if (accept1(parser, PM_TOKEN_IDENTIFIER)) { if (accept1(parser, PM_TOKEN_IDENTIFIER)) {
name = parser->previous; name = parser->previous;
pm_parser_parameter_name_check(parser, &name); repeated = pm_parser_parameter_name_check(parser, &name);
pm_parser_local_add_token(parser, &name); pm_parser_local_add_token(parser, &name);
} else { } else {
name = not_provided(parser); name = not_provided(parser);
@ -11606,6 +11634,9 @@ parse_parameters(
} }
pm_block_parameter_node_t *param = pm_block_parameter_node_create(parser, &name, &operator); pm_block_parameter_node_t *param = pm_block_parameter_node_create(parser, &name, &operator);
if (repeated) {
pm_node_flag_set_repeated_parameter((pm_node_t *)param);
}
if (params->block == NULL) { if (params->block == NULL) {
pm_parameters_node_block_set(params, param); pm_parameters_node_block_set(params, param);
} else { } else {
@ -11678,7 +11709,7 @@ parse_parameters(
} }
pm_token_t name = parser->previous; pm_token_t name = parser->previous;
pm_parser_parameter_name_check(parser, &name); bool repeated = pm_parser_parameter_name_check(parser, &name);
pm_parser_local_add_token(parser, &name); pm_parser_local_add_token(parser, &name);
if (accept1(parser, PM_TOKEN_EQUAL)) { if (accept1(parser, PM_TOKEN_EQUAL)) {
@ -11689,6 +11720,9 @@ parse_parameters(
pm_node_t *value = parse_value_expression(parser, binding_power, false, PM_ERR_PARAMETER_NO_DEFAULT); pm_node_t *value = parse_value_expression(parser, binding_power, false, PM_ERR_PARAMETER_NO_DEFAULT);
pm_optional_parameter_node_t *param = pm_optional_parameter_node_create(parser, &name, &operator, value); pm_optional_parameter_node_t *param = pm_optional_parameter_node_create(parser, &name, &operator, value);
if (repeated) {
pm_node_flag_set_repeated_parameter((pm_node_t *)param);
}
pm_parameters_node_optionals_append(params, param); pm_parameters_node_optionals_append(params, param);
parser->current_param_name = old_param_name; parser->current_param_name = old_param_name;
@ -11703,9 +11737,15 @@ parse_parameters(
} }
} else if (order > PM_PARAMETERS_ORDER_AFTER_OPTIONAL) { } else if (order > PM_PARAMETERS_ORDER_AFTER_OPTIONAL) {
pm_required_parameter_node_t *param = pm_required_parameter_node_create(parser, &name); pm_required_parameter_node_t *param = pm_required_parameter_node_create(parser, &name);
if (repeated) {
pm_node_flag_set_repeated_parameter((pm_node_t *)param);
}
pm_parameters_node_requireds_append(params, (pm_node_t *) param); pm_parameters_node_requireds_append(params, (pm_node_t *) param);
} else { } else {
pm_required_parameter_node_t *param = pm_required_parameter_node_create(parser, &name); pm_required_parameter_node_t *param = pm_required_parameter_node_create(parser, &name);
if (repeated) {
pm_node_flag_set_repeated_parameter((pm_node_t *)param);
}
pm_parameters_node_posts_append(params, (pm_node_t *) param); pm_parameters_node_posts_append(params, (pm_node_t *) param);
} }
@ -11720,7 +11760,7 @@ parse_parameters(
pm_token_t local = name; pm_token_t local = name;
local.end -= 1; local.end -= 1;
pm_parser_parameter_name_check(parser, &local); bool repeated = pm_parser_parameter_name_check(parser, &local);
pm_parser_local_add_token(parser, &local); pm_parser_local_add_token(parser, &local);
switch (parser->current.type) { switch (parser->current.type) {
@ -11728,6 +11768,9 @@ parse_parameters(
case PM_TOKEN_PARENTHESIS_RIGHT: case PM_TOKEN_PARENTHESIS_RIGHT:
case PM_TOKEN_PIPE: { case PM_TOKEN_PIPE: {
pm_node_t *param = (pm_node_t *) pm_required_keyword_parameter_node_create(parser, &name); pm_node_t *param = (pm_node_t *) pm_required_keyword_parameter_node_create(parser, &name);
if (repeated) {
pm_node_flag_set_repeated_parameter(param);
}
pm_parameters_node_keywords_append(params, param); pm_parameters_node_keywords_append(params, param);
break; break;
} }
@ -11739,6 +11782,9 @@ parse_parameters(
} }
pm_node_t *param = (pm_node_t *) pm_required_keyword_parameter_node_create(parser, &name); pm_node_t *param = (pm_node_t *) pm_required_keyword_parameter_node_create(parser, &name);
if (repeated) {
pm_node_flag_set_repeated_parameter(param);
}
pm_parameters_node_keywords_append(params, param); pm_parameters_node_keywords_append(params, param);
break; break;
} }
@ -11758,6 +11804,9 @@ parse_parameters(
param = (pm_node_t *) pm_required_keyword_parameter_node_create(parser, &name); param = (pm_node_t *) pm_required_keyword_parameter_node_create(parser, &name);
} }
if (repeated) {
pm_node_flag_set_repeated_parameter(param);
}
pm_parameters_node_keywords_append(params, param); pm_parameters_node_keywords_append(params, param);
// If parsing the value of the parameter resulted in error recovery, // If parsing the value of the parameter resulted in error recovery,
@ -11780,10 +11829,10 @@ parse_parameters(
pm_token_t operator = parser->previous; pm_token_t operator = parser->previous;
pm_token_t name; pm_token_t name;
bool repeated = false;
if (accept1(parser, PM_TOKEN_IDENTIFIER)) { if (accept1(parser, PM_TOKEN_IDENTIFIER)) {
name = parser->previous; name = parser->previous;
pm_parser_parameter_name_check(parser, &name); repeated = pm_parser_parameter_name_check(parser, &name);
pm_parser_local_add_token(parser, &name); pm_parser_local_add_token(parser, &name);
} else { } else {
name = not_provided(parser); name = not_provided(parser);
@ -11794,6 +11843,9 @@ parse_parameters(
} }
pm_node_t *param = (pm_node_t *) pm_rest_parameter_node_create(parser, &operator, &name); pm_node_t *param = (pm_node_t *) pm_rest_parameter_node_create(parser, &operator, &name);
if (repeated) {
pm_node_flag_set_repeated_parameter(param);
}
if (params->rest == NULL) { if (params->rest == NULL) {
pm_parameters_node_rest_set(params, param); pm_parameters_node_rest_set(params, param);
} else { } else {
@ -11816,9 +11868,10 @@ parse_parameters(
} else { } else {
pm_token_t name; pm_token_t name;
bool repeated = false;
if (accept1(parser, PM_TOKEN_IDENTIFIER)) { if (accept1(parser, PM_TOKEN_IDENTIFIER)) {
name = parser->previous; name = parser->previous;
pm_parser_parameter_name_check(parser, &name); repeated = pm_parser_parameter_name_check(parser, &name);
pm_parser_local_add_token(parser, &name); pm_parser_local_add_token(parser, &name);
} else { } else {
name = not_provided(parser); name = not_provided(parser);
@ -11829,6 +11882,9 @@ parse_parameters(
} }
param = (pm_node_t *) pm_keyword_rest_parameter_node_create(parser, &operator, &name); param = (pm_node_t *) pm_keyword_rest_parameter_node_create(parser, &operator, &name);
if (repeated) {
pm_node_flag_set_repeated_parameter(param);
}
} }
if (params->keyword_rest == NULL) { if (params->keyword_rest == NULL) {
@ -12064,10 +12120,13 @@ parse_block_parameters(
if ((opening->type != PM_TOKEN_NOT_PROVIDED) && accept1(parser, PM_TOKEN_SEMICOLON)) { if ((opening->type != PM_TOKEN_NOT_PROVIDED) && accept1(parser, PM_TOKEN_SEMICOLON)) {
do { do {
expect1(parser, PM_TOKEN_IDENTIFIER, PM_ERR_BLOCK_PARAM_LOCAL_VARIABLE); expect1(parser, PM_TOKEN_IDENTIFIER, PM_ERR_BLOCK_PARAM_LOCAL_VARIABLE);
pm_parser_parameter_name_check(parser, &parser->previous); bool repeated = pm_parser_parameter_name_check(parser, &parser->previous);
pm_parser_local_add_token(parser, &parser->previous); pm_parser_local_add_token(parser, &parser->previous);
pm_block_local_variable_node_t *local = pm_block_local_variable_node_create(parser, &parser->previous); pm_block_local_variable_node_t *local = pm_block_local_variable_node_create(parser, &parser->previous);
if (repeated) {
pm_node_flag_set_repeated_parameter((pm_node_t *)local);
}
pm_block_parameters_node_append_local(block_parameters, local); pm_block_parameters_node_append_local(block_parameters, local);
} while (accept1(parser, PM_TOKEN_COMMA)); } while (accept1(parser, PM_TOKEN_COMMA));
} }

View File

@ -566,10 +566,10 @@ module Prism
Location(), Location(),
nil, nil,
ParametersNode([ ParametersNode([
RequiredParameterNode(:A), RequiredParameterNode(0, :A),
RequiredParameterNode(:@a), RequiredParameterNode(0, :@a),
RequiredParameterNode(:$A), RequiredParameterNode(0, :$A),
RequiredParameterNode(:@@a), RequiredParameterNode(0, :@@a),
], [], nil, [], [], nil, nil), ], [], nil, [], [], nil, nil),
nil, nil,
[:A, :@a, :$A, :@@a], [:A, :@a, :$A, :@@a],
@ -635,7 +635,7 @@ module Prism
Location(), Location(),
nil, nil,
ParametersNode( ParametersNode(
[RequiredParameterNode(:a), RequiredParameterNode(:b), RequiredParameterNode(:c)], [RequiredParameterNode(0, :a), RequiredParameterNode(0, :b), RequiredParameterNode(0, :c)],
[], [],
nil, nil,
[], [],
@ -667,7 +667,7 @@ module Prism
Location(), Location(),
Location(), Location(),
BlockParametersNode( BlockParametersNode(
ParametersNode([RequiredParameterNode(:a), RequiredParameterNode(:b)], [], nil, [], [], nil, nil), ParametersNode([RequiredParameterNode(0, :a), RequiredParameterNode(0, :b)], [], nil, [], [], nil, nil),
[], [],
Location(), Location(),
Location() Location()
@ -724,10 +724,10 @@ module Prism
[], [],
[], [],
nil, nil,
[RequiredParameterNode(:a)], [RequiredParameterNode(0, :a)],
[], [],
nil, nil,
BlockParameterNode(:block, Location(), Location()) BlockParameterNode(0, :block, Location(), Location())
), ),
nil, nil,
[:block, :a], [:block, :a],
@ -749,7 +749,7 @@ module Prism
:foo, :foo,
Location(), Location(),
nil, nil,
ParametersNode([], [], nil, [RequiredParameterNode(:a)], [], nil, BlockParameterNode(nil, nil, Location())), ParametersNode([], [], nil, [RequiredParameterNode(0, :a)], [], nil, BlockParameterNode(0, nil, nil, Location())),
nil, nil,
[:&, :a], [:&, :a],
2, 2,
@ -775,7 +775,7 @@ module Prism
[], [],
[], [],
nil, nil,
[RequiredParameterNode(:a)], [RequiredParameterNode(0, :a)],
[], [],
ForwardingParameterNode(), ForwardingParameterNode(),
nil nil
@ -804,8 +804,8 @@ module Prism
[], [],
[], [],
nil, nil,
[RequiredParameterNode(:a)], [RequiredParameterNode(0, :a)],
[RequiredKeywordParameterNode(:b, Location())], [RequiredKeywordParameterNode(0, :b, Location())],
nil, nil,
nil nil
), ),
@ -834,8 +834,8 @@ module Prism
[], [],
nil, nil,
[], [],
[RequiredKeywordParameterNode(:b, Location())], [RequiredKeywordParameterNode(0, :b, Location())],
KeywordRestParameterNode(:rest, Location(), Location()), KeywordRestParameterNode(0, :rest, Location(), Location()),
nil nil
), ),
nil, nil,
@ -885,9 +885,9 @@ module Prism
[], [],
[], [],
nil, nil,
[RequiredParameterNode(:a)], [RequiredParameterNode(0, :a)],
[RequiredKeywordParameterNode(:b, Location())], [RequiredKeywordParameterNode(0, :b, Location())],
KeywordRestParameterNode(:args, Location(), Location()), KeywordRestParameterNode(0, :args, Location(), Location()),
nil nil
), ),
nil, nil,
@ -916,9 +916,9 @@ module Prism
[], [],
[], [],
nil, nil,
[RequiredParameterNode(:a)], [RequiredParameterNode(0, :a)],
[RequiredKeywordParameterNode(:b, Location())], [RequiredKeywordParameterNode(0, :b, Location())],
KeywordRestParameterNode(:args, Location(), Location()), KeywordRestParameterNode(0, :args, Location(), Location()),
nil nil
), ),
nil, nil,
@ -947,9 +947,9 @@ module Prism
[], [],
[], [],
nil, nil,
[RequiredParameterNode(:a)], [RequiredParameterNode(0, :a)],
[RequiredKeywordParameterNode(:b, Location())], [RequiredKeywordParameterNode(0, :b, Location())],
KeywordRestParameterNode(:args, Location(), Location()), KeywordRestParameterNode(0, :args, Location(), Location()),
nil nil
), ),
nil, nil,
@ -975,13 +975,13 @@ module Prism
Location(), Location(),
nil, nil,
ParametersNode( ParametersNode(
[RequiredParameterNode(:a)], [RequiredParameterNode(0, :a)],
[ [
OptionalParameterNode(:b, Location(), Location(), IntegerNode(IntegerBaseFlags::DECIMAL)), OptionalParameterNode(0, :b, Location(), Location(), IntegerNode(IntegerBaseFlags::DECIMAL)),
OptionalParameterNode(:d, Location(), Location(), IntegerNode(IntegerBaseFlags::DECIMAL)) OptionalParameterNode(0, :d, Location(), Location(), IntegerNode(IntegerBaseFlags::DECIMAL))
], ],
nil, nil,
[RequiredParameterNode(:c), RequiredParameterNode(:e)], [RequiredParameterNode(0, :c), RequiredParameterNode(0, :e)],
[], [],
nil, nil,
nil nil
@ -1152,7 +1152,7 @@ module Prism
:foo, :foo,
Location(), Location(),
nil, nil,
ParametersNode([RequiredParameterNode(:a), RequiredParameterNode(:b), RequiredParameterNode(:a)], [], nil, [], [], nil, nil), ParametersNode([RequiredParameterNode(0, :a), RequiredParameterNode(0, :b), RequiredParameterNode(ParameterFlags::REPEATED_PARAMETER, :a)], [], nil, [], [], nil, nil),
nil, nil,
[:a, :b], [:a, :b],
2, 2,
@ -1173,7 +1173,7 @@ module Prism
:foo, :foo,
Location(), Location(),
nil, nil,
ParametersNode([RequiredParameterNode(:a), RequiredParameterNode(:b)], [], RestParameterNode(:a, Location(), Location()), [], [], nil, nil), ParametersNode([RequiredParameterNode(0, :a), RequiredParameterNode(0, :b)], [], RestParameterNode(ParameterFlags::REPEATED_PARAMETER, :a, Location(), Location()), [], [], nil, nil),
nil, nil,
[:a, :b], [:a, :b],
2, 2,
@ -1193,7 +1193,7 @@ module Prism
:foo, :foo,
Location(), Location(),
nil, nil,
ParametersNode([RequiredParameterNode(:a), RequiredParameterNode(:b)], [], nil, [], [], KeywordRestParameterNode(:a, Location(), Location()), nil), ParametersNode([RequiredParameterNode(0, :a), RequiredParameterNode(0, :b)], [], nil, [], [], KeywordRestParameterNode(ParameterFlags::REPEATED_PARAMETER, :a, Location(), Location()), nil),
nil, nil,
[:a, :b], [:a, :b],
2, 2,
@ -1213,7 +1213,7 @@ module Prism
:foo, :foo,
Location(), Location(),
nil, nil,
ParametersNode([RequiredParameterNode(:a), RequiredParameterNode(:b)], [], nil, [], [], nil, BlockParameterNode(:a, Location(), Location())), ParametersNode([RequiredParameterNode(0, :a), RequiredParameterNode(0, :b)], [], nil, [], [], nil, BlockParameterNode(ParameterFlags::REPEATED_PARAMETER, :a, Location(), Location())),
nil, nil,
[:a, :b], [:a, :b],
2, 2,
@ -1233,7 +1233,7 @@ module Prism
:foo, :foo,
Location(), Location(),
nil, nil,
ParametersNode([], [OptionalParameterNode(:a, Location(), Location(), IntegerNode(IntegerBaseFlags::DECIMAL))], RestParameterNode(:c, Location(), Location()), [RequiredParameterNode(:b)], [], nil, nil), ParametersNode([], [OptionalParameterNode(0, :a, Location(), Location(), IntegerNode(IntegerBaseFlags::DECIMAL))], RestParameterNode(0, :c, Location(), Location()), [RequiredParameterNode(0, :b)], [], nil, nil),
nil, nil,
[:a, :b, :c], [:a, :b, :c],
3, 3,

View File

@ -161,9 +161,6 @@ def method(a)
item >> a {} item >> a {}
end end
def foo(_a, _a, b, c)
end
foo = 1 foo = 1
def foo.bar; end def foo.bar; end

View File

@ -0,0 +1,38 @@
def foo(a, _)
end
def foo(a, _, _)
end
def foo(a, _, _, _b)
end
def foo(a, _, _, _b, _b)
end
def foo(a, (b, *_c, d), (e, *_c, f))
end
def foo(_a, _a, b, c)
end
def foo((a, *_b, c), (d, *_b, e))
end
def foo(_a = 1, _a = 2)
end
def foo(_a:, _a:)
end
def foo(_a: 1, _a: 2)
end
def foo(_a, **_a)
end
def foo(_a, &_a)
end
def foo(_a, *_a)
end

View File

@ -1031,6 +1031,7 @@
│ │ ├── keyword_rest: ∅ │ │ ├── keyword_rest: ∅
│ │ └── block: │ │ └── block:
│ │ @ BlockParameterNode (location: (88,8)-(88,9)) │ │ @ BlockParameterNode (location: (88,8)-(88,9))
│ │ ├── flags: ∅
│ │ ├── name: ∅ │ │ ├── name: ∅
│ │ ├── name_loc: ∅ │ │ ├── name_loc: ∅
│ │ └── operator_loc: (88,8)-(88,9) = "&" │ │ └── operator_loc: (88,8)-(88,9) = "&"
@ -1809,6 +1810,7 @@
│ │ ├── optionals: (length: 0) │ │ ├── optionals: (length: 0)
│ │ ├── rest: │ │ ├── rest:
│ │ │ @ RestParameterNode (location: (128,6)-(128,7)) │ │ │ @ RestParameterNode (location: (128,6)-(128,7))
│ │ │ ├── flags: ∅
│ │ │ ├── name: ∅ │ │ │ ├── name: ∅
│ │ │ ├── name_loc: ∅ │ │ │ ├── name_loc: ∅
│ │ │ └── operator_loc: (128,6)-(128,7) = "*" │ │ │ └── operator_loc: (128,6)-(128,7) = "*"
@ -1863,6 +1865,7 @@
│ │ ├── optionals: (length: 0) │ │ ├── optionals: (length: 0)
│ │ ├── rest: │ │ ├── rest:
│ │ │ @ RestParameterNode (location: (130,6)-(130,7)) │ │ │ @ RestParameterNode (location: (130,6)-(130,7))
│ │ │ ├── flags: ∅
│ │ │ ├── name: ∅ │ │ │ ├── name: ∅
│ │ │ ├── name_loc: ∅ │ │ │ ├── name_loc: ∅
│ │ │ └── operator_loc: (130,6)-(130,7) = "*" │ │ │ └── operator_loc: (130,6)-(130,7) = "*"
@ -1919,6 +1922,7 @@
│ │ ├── optionals: (length: 0) │ │ ├── optionals: (length: 0)
│ │ ├── rest: │ │ ├── rest:
│ │ │ @ RestParameterNode (location: (132,6)-(132,7)) │ │ │ @ RestParameterNode (location: (132,6)-(132,7))
│ │ │ ├── flags: ∅
│ │ │ ├── name: ∅ │ │ │ ├── name: ∅
│ │ │ ├── name_loc: ∅ │ │ │ ├── name_loc: ∅
│ │ │ └── operator_loc: (132,6)-(132,7) = "*" │ │ │ └── operator_loc: (132,6)-(132,7) = "*"
@ -1975,6 +1979,7 @@
│ │ ├── optionals: (length: 0) │ │ ├── optionals: (length: 0)
│ │ ├── rest: │ │ ├── rest:
│ │ │ @ RestParameterNode (location: (134,6)-(134,7)) │ │ │ @ RestParameterNode (location: (134,6)-(134,7))
│ │ │ ├── flags: ∅
│ │ │ ├── name: ∅ │ │ │ ├── name: ∅
│ │ │ ├── name_loc: ∅ │ │ │ ├── name_loc: ∅
│ │ │ └── operator_loc: (134,6)-(134,7) = "*" │ │ │ └── operator_loc: (134,6)-(134,7) = "*"
@ -2033,6 +2038,7 @@
│ │ ├── optionals: (length: 0) │ │ ├── optionals: (length: 0)
│ │ ├── rest: │ │ ├── rest:
│ │ │ @ RestParameterNode (location: (136,6)-(136,7)) │ │ │ @ RestParameterNode (location: (136,6)-(136,7))
│ │ │ ├── flags: ∅
│ │ │ ├── name: ∅ │ │ │ ├── name: ∅
│ │ │ ├── name_loc: ∅ │ │ │ ├── name_loc: ∅
│ │ │ └── operator_loc: (136,6)-(136,7) = "*" │ │ │ └── operator_loc: (136,6)-(136,7) = "*"
@ -2090,6 +2096,7 @@
│ │ ├── optionals: (length: 0) │ │ ├── optionals: (length: 0)
│ │ ├── rest: │ │ ├── rest:
│ │ │ @ RestParameterNode (location: (138,6)-(138,7)) │ │ │ @ RestParameterNode (location: (138,6)-(138,7))
│ │ │ ├── flags: ∅
│ │ │ ├── name: ∅ │ │ │ ├── name: ∅
│ │ │ ├── name_loc: ∅ │ │ │ ├── name_loc: ∅
│ │ │ └── operator_loc: (138,6)-(138,7) = "*" │ │ │ └── operator_loc: (138,6)-(138,7) = "*"
@ -2148,6 +2155,7 @@
│ │ ├── optionals: (length: 0) │ │ ├── optionals: (length: 0)
│ │ ├── rest: │ │ ├── rest:
│ │ │ @ RestParameterNode (location: (140,6)-(140,7)) │ │ │ @ RestParameterNode (location: (140,6)-(140,7))
│ │ │ ├── flags: ∅
│ │ │ ├── name: ∅ │ │ │ ├── name: ∅
│ │ │ ├── name_loc: ∅ │ │ │ ├── name_loc: ∅
│ │ │ └── operator_loc: (140,6)-(140,7) = "*" │ │ │ └── operator_loc: (140,6)-(140,7) = "*"
@ -2211,6 +2219,7 @@
│ ├── optionals: (length: 0) │ ├── optionals: (length: 0)
│ ├── rest: │ ├── rest:
│ │ @ RestParameterNode (location: (142,6)-(142,7)) │ │ @ RestParameterNode (location: (142,6)-(142,7))
│ │ ├── flags: ∅
│ │ ├── name: ∅ │ │ ├── name: ∅
│ │ ├── name_loc: ∅ │ │ ├── name_loc: ∅
│ │ └── operator_loc: (142,6)-(142,7) = "*" │ │ └── operator_loc: (142,6)-(142,7) = "*"

View File

@ -141,8 +141,10 @@
│ │ │ @ ParametersNode (location: (7,15)-(7,22)) │ │ │ @ ParametersNode (location: (7,15)-(7,22))
│ │ │ ├── requireds: (length: 2) │ │ │ ├── requireds: (length: 2)
│ │ │ │ ├── @ RequiredParameterNode (location: (7,15)-(7,16)) │ │ │ │ ├── @ RequiredParameterNode (location: (7,15)-(7,16))
│ │ │ │ │ ├── flags: ∅
│ │ │ │ │ └── name: :x │ │ │ │ │ └── name: :x
│ │ │ │ └── @ RequiredParameterNode (location: (7,18)-(7,22)) │ │ │ │ └── @ RequiredParameterNode (location: (7,18)-(7,22))
│ │ │ │ ├── flags: ∅
│ │ │ │ └── name: :memo │ │ │ │ └── name: :memo
│ │ │ ├── optionals: (length: 0) │ │ │ ├── optionals: (length: 0)
│ │ │ ├── rest: ∅ │ │ │ ├── rest: ∅
@ -324,6 +326,7 @@
│ │ │ ├── requireds: (length: 0) │ │ │ ├── requireds: (length: 0)
│ │ │ ├── optionals: (length: 1) │ │ │ ├── optionals: (length: 1)
│ │ │ │ └── @ OptionalParameterNode (location: (17,8)-(17,16)) │ │ │ │ └── @ OptionalParameterNode (location: (17,8)-(17,16))
│ │ │ │ ├── flags: ∅
│ │ │ │ ├── name: :a │ │ │ │ ├── name: :a
│ │ │ │ ├── name_loc: (17,8)-(17,9) = "a" │ │ │ │ ├── name_loc: (17,8)-(17,9) = "a"
│ │ │ │ ├── operator_loc: (17,10)-(17,11) = "=" │ │ │ │ ├── operator_loc: (17,10)-(17,11) = "="
@ -521,9 +524,11 @@
│ │ │ @ ParametersNode (location: (33,7)-(33,19)) │ │ │ @ ParametersNode (location: (33,7)-(33,19))
│ │ │ ├── requireds: (length: 1) │ │ │ ├── requireds: (length: 1)
│ │ │ │ └── @ RequiredParameterNode (location: (33,7)-(33,8)) │ │ │ │ └── @ RequiredParameterNode (location: (33,7)-(33,8))
│ │ │ │ ├── flags: ∅
│ │ │ │ └── name: :x │ │ │ │ └── name: :x
│ │ │ ├── optionals: (length: 1) │ │ │ ├── optionals: (length: 1)
│ │ │ │ └── @ OptionalParameterNode (location: (33,10)-(33,15)) │ │ │ │ └── @ OptionalParameterNode (location: (33,10)-(33,15))
│ │ │ │ ├── flags: ∅
│ │ │ │ ├── name: :y │ │ │ │ ├── name: :y
│ │ │ │ ├── name_loc: (33,10)-(33,11) = "y" │ │ │ │ ├── name_loc: (33,10)-(33,11) = "y"
│ │ │ │ ├── operator_loc: (33,12)-(33,13) = "=" │ │ │ │ ├── operator_loc: (33,12)-(33,13) = "="
@ -534,6 +539,7 @@
│ │ │ ├── posts: (length: 0) │ │ │ ├── posts: (length: 0)
│ │ │ ├── keywords: (length: 1) │ │ │ ├── keywords: (length: 1)
│ │ │ │ └── @ RequiredKeywordParameterNode (location: (33,17)-(33,19)) │ │ │ │ └── @ RequiredKeywordParameterNode (location: (33,17)-(33,19))
│ │ │ │ ├── flags: ∅
│ │ │ │ ├── name: :z │ │ │ │ ├── name: :z
│ │ │ │ └── name_loc: (33,17)-(33,19) = "z:" │ │ │ │ └── name_loc: (33,17)-(33,19) = "z:"
│ │ │ ├── keyword_rest: ∅ │ │ │ ├── keyword_rest: ∅
@ -568,6 +574,7 @@
│ │ │ @ ParametersNode (location: (35,7)-(35,8)) │ │ │ @ ParametersNode (location: (35,7)-(35,8))
│ │ │ ├── requireds: (length: 1) │ │ │ ├── requireds: (length: 1)
│ │ │ │ └── @ RequiredParameterNode (location: (35,7)-(35,8)) │ │ │ │ └── @ RequiredParameterNode (location: (35,7)-(35,8))
│ │ │ │ ├── flags: ∅
│ │ │ │ └── name: :x │ │ │ │ └── name: :x
│ │ │ ├── optionals: (length: 0) │ │ │ ├── optionals: (length: 0)
│ │ │ ├── rest: ∅ │ │ │ ├── rest: ∅
@ -608,6 +615,7 @@
│ │ │ @ ParametersNode (location: (38,9)-(38,10)) │ │ │ @ ParametersNode (location: (38,9)-(38,10))
│ │ │ ├── requireds: (length: 1) │ │ │ ├── requireds: (length: 1)
│ │ │ │ └── @ RequiredParameterNode (location: (38,9)-(38,10)) │ │ │ │ └── @ RequiredParameterNode (location: (38,9)-(38,10))
│ │ │ │ ├── flags: ∅
│ │ │ │ └── name: :a │ │ │ │ └── name: :a
│ │ │ ├── optionals: (length: 0) │ │ │ ├── optionals: (length: 0)
│ │ │ ├── rest: ∅ │ │ │ ├── rest: ∅
@ -640,6 +648,7 @@
│ │ │ @ ParametersNode (location: (41,8)-(41,9)) │ │ │ @ ParametersNode (location: (41,8)-(41,9))
│ │ │ ├── requireds: (length: 1) │ │ │ ├── requireds: (length: 1)
│ │ │ │ └── @ RequiredParameterNode (location: (41,8)-(41,9)) │ │ │ │ └── @ RequiredParameterNode (location: (41,8)-(41,9))
│ │ │ │ ├── flags: ∅
│ │ │ │ └── name: :a │ │ │ │ └── name: :a
│ │ │ ├── optionals: (length: 0) │ │ │ ├── optionals: (length: 0)
│ │ │ ├── rest: ∅ │ │ │ ├── rest: ∅
@ -721,12 +730,14 @@
│ │ │ │ ├── posts: (length: 0) │ │ │ │ ├── posts: (length: 0)
│ │ │ │ ├── keywords: (length: 2) │ │ │ │ ├── keywords: (length: 2)
│ │ │ │ │ ├── @ OptionalKeywordParameterNode (location: (49,2)-(49,6)) │ │ │ │ │ ├── @ OptionalKeywordParameterNode (location: (49,2)-(49,6))
│ │ │ │ │ │ ├── flags: ∅
│ │ │ │ │ │ ├── name: :a │ │ │ │ │ │ ├── name: :a
│ │ │ │ │ │ ├── name_loc: (49,2)-(49,4) = "a:" │ │ │ │ │ │ ├── name_loc: (49,2)-(49,4) = "a:"
│ │ │ │ │ │ └── value: │ │ │ │ │ │ └── value:
│ │ │ │ │ │ @ IntegerNode (location: (49,5)-(49,6)) │ │ │ │ │ │ @ IntegerNode (location: (49,5)-(49,6))
│ │ │ │ │ │ └── flags: decimal │ │ │ │ │ │ └── flags: decimal
│ │ │ │ │ └── @ OptionalKeywordParameterNode (location: (50,2)-(50,6)) │ │ │ │ │ └── @ OptionalKeywordParameterNode (location: (50,2)-(50,6))
│ │ │ │ │ ├── flags: ∅
│ │ │ │ │ ├── name: :b │ │ │ │ │ ├── name: :b
│ │ │ │ │ ├── name_loc: (50,2)-(50,4) = "b:" │ │ │ │ │ ├── name_loc: (50,2)-(50,4) = "b:"
│ │ │ │ │ └── value: │ │ │ │ │ └── value:
@ -761,6 +772,7 @@
│ │ @ ParametersNode (location: (54,8)-(54,12)) │ │ @ ParametersNode (location: (54,8)-(54,12))
│ │ ├── requireds: (length: 1) │ │ ├── requireds: (length: 1)
│ │ │ └── @ RequiredParameterNode (location: (54,8)-(54,11)) │ │ │ └── @ RequiredParameterNode (location: (54,8)-(54,11))
│ │ │ ├── flags: ∅
│ │ │ └── name: :bar │ │ │ └── name: :bar
│ │ ├── optionals: (length: 0) │ │ ├── optionals: (length: 0)
│ │ ├── rest: │ │ ├── rest:

View File

@ -189,6 +189,7 @@
│ │ │ @ ParametersNode (location: (25,7)-(25,8)) │ │ │ @ ParametersNode (location: (25,7)-(25,8))
│ │ │ ├── requireds: (length: 1) │ │ │ ├── requireds: (length: 1)
│ │ │ │ └── @ RequiredParameterNode (location: (25,7)-(25,8)) │ │ │ │ └── @ RequiredParameterNode (location: (25,7)-(25,8))
│ │ │ │ ├── flags: ∅
│ │ │ │ └── name: :a │ │ │ │ └── name: :a
│ │ │ ├── optionals: (length: 0) │ │ │ ├── optionals: (length: 0)
│ │ │ ├── rest: ∅ │ │ │ ├── rest: ∅

View File

@ -356,6 +356,7 @@
│ │ │ @ ParametersNode (location: (34,13)-(34,14)) │ │ │ @ ParametersNode (location: (34,13)-(34,14))
│ │ │ ├── requireds: (length: 1) │ │ │ ├── requireds: (length: 1)
│ │ │ │ └── @ RequiredParameterNode (location: (34,13)-(34,14)) │ │ │ │ └── @ RequiredParameterNode (location: (34,13)-(34,14))
│ │ │ │ ├── flags: ∅
│ │ │ │ └── name: :_ │ │ │ │ └── name: :_
│ │ │ ├── optionals: (length: 0) │ │ │ ├── optionals: (length: 0)
│ │ │ ├── rest: ∅ │ │ │ ├── rest: ∅
@ -398,6 +399,7 @@
│ │ │ │ @ ParametersNode (location: (37,13)-(37,14)) │ │ │ │ @ ParametersNode (location: (37,13)-(37,14))
│ │ │ │ ├── requireds: (length: 1) │ │ │ │ ├── requireds: (length: 1)
│ │ │ │ │ └── @ RequiredParameterNode (location: (37,13)-(37,14)) │ │ │ │ │ └── @ RequiredParameterNode (location: (37,13)-(37,14))
│ │ │ │ │ ├── flags: ∅
│ │ │ │ │ └── name: :_ │ │ │ │ │ └── name: :_
│ │ │ │ ├── optionals: (length: 0) │ │ │ │ ├── optionals: (length: 0)
│ │ │ │ ├── rest: ∅ │ │ │ │ ├── rest: ∅
@ -436,6 +438,7 @@
│ │ │ │ │ @ ParametersNode (location: (40,13)-(40,14)) │ │ │ │ │ @ ParametersNode (location: (40,13)-(40,14))
│ │ │ │ │ ├── requireds: (length: 1) │ │ │ │ │ ├── requireds: (length: 1)
│ │ │ │ │ │ └── @ RequiredParameterNode (location: (40,13)-(40,14)) │ │ │ │ │ │ └── @ RequiredParameterNode (location: (40,13)-(40,14))
│ │ │ │ │ │ ├── flags: ∅
│ │ │ │ │ │ └── name: :_ │ │ │ │ │ │ └── name: :_
│ │ │ │ │ ├── optionals: (length: 0) │ │ │ │ │ ├── optionals: (length: 0)
│ │ │ │ │ ├── rest: ∅ │ │ │ │ │ ├── rest: ∅

View File

@ -86,6 +86,7 @@
│ │ @ ParametersNode (location: (12,6)-(12,14)) │ │ @ ParametersNode (location: (12,6)-(12,14))
│ │ ├── requireds: (length: 1) │ │ ├── requireds: (length: 1)
│ │ │ └── @ RequiredParameterNode (location: (12,6)-(12,7)) │ │ │ └── @ RequiredParameterNode (location: (12,6)-(12,7))
│ │ │ ├── flags: ∅
│ │ │ └── name: :a │ │ │ └── name: :a
│ │ ├── optionals: (length: 0) │ │ ├── optionals: (length: 0)
│ │ ├── rest: ∅ │ │ ├── rest: ∅

View File

@ -15,6 +15,7 @@
│ │ │ @ ParametersNode (location: (2,2)-(2,5)) │ │ │ @ ParametersNode (location: (2,2)-(2,5))
│ │ │ ├── requireds: (length: 1) │ │ │ ├── requireds: (length: 1)
│ │ │ │ └── @ RequiredParameterNode (location: (2,2)-(2,5)) │ │ │ │ └── @ RequiredParameterNode (location: (2,2)-(2,5))
│ │ │ │ ├── flags: ∅
│ │ │ │ └── name: :foo │ │ │ │ └── name: :foo
│ │ │ ├── optionals: (length: 0) │ │ │ ├── optionals: (length: 0)
│ │ │ ├── rest: ∅ │ │ │ ├── rest: ∅
@ -42,6 +43,7 @@
│ │ │ ├── posts: (length: 0) │ │ │ ├── posts: (length: 0)
│ │ │ ├── keywords: (length: 1) │ │ │ ├── keywords: (length: 1)
│ │ │ │ └── @ OptionalKeywordParameterNode (location: (5,3)-(5,13)) │ │ │ │ └── @ OptionalKeywordParameterNode (location: (5,3)-(5,13))
│ │ │ │ ├── flags: ∅
│ │ │ │ ├── name: :x │ │ │ │ ├── name: :x
│ │ │ │ ├── name_loc: (5,3)-(5,5) = "x:" │ │ │ │ ├── name_loc: (5,3)-(5,5) = "x:"
│ │ │ │ └── value: │ │ │ │ └── value:
@ -93,6 +95,7 @@
│ │ │ ├── posts: (length: 0) │ │ │ ├── posts: (length: 0)
│ │ │ ├── keywords: (length: 1) │ │ │ ├── keywords: (length: 1)
│ │ │ │ └── @ OptionalKeywordParameterNode (location: (7,3)-(7,11)) │ │ │ │ └── @ OptionalKeywordParameterNode (location: (7,3)-(7,11))
│ │ │ │ ├── flags: ∅
│ │ │ │ ├── name: :a │ │ │ │ ├── name: :a
│ │ │ │ ├── name_loc: (7,3)-(7,5) = "a:" │ │ │ │ ├── name_loc: (7,3)-(7,5) = "a:"
│ │ │ │ └── value: │ │ │ │ └── value:
@ -140,6 +143,7 @@
│ │ │ ├── requireds: (length: 0) │ │ │ ├── requireds: (length: 0)
│ │ │ ├── optionals: (length: 1) │ │ │ ├── optionals: (length: 1)
│ │ │ │ └── @ OptionalParameterNode (location: (9,3)-(9,12)) │ │ │ │ └── @ OptionalParameterNode (location: (9,3)-(9,12))
│ │ │ │ ├── flags: ∅
│ │ │ │ ├── name: :foo │ │ │ │ ├── name: :foo
│ │ │ │ ├── name_loc: (9,3)-(9,6) = "foo" │ │ │ │ ├── name_loc: (9,3)-(9,6) = "foo"
│ │ │ │ ├── operator_loc: (9,7)-(9,8) = "=" │ │ │ │ ├── operator_loc: (9,7)-(9,8) = "="
@ -179,6 +183,7 @@
│ │ ├── posts: (length: 0) │ │ ├── posts: (length: 0)
│ │ ├── keywords: (length: 1) │ │ ├── keywords: (length: 1)
│ │ │ └── @ OptionalKeywordParameterNode (location: (11,3)-(11,11)) │ │ │ └── @ OptionalKeywordParameterNode (location: (11,3)-(11,11))
│ │ │ ├── flags: ∅
│ │ │ ├── name: :foo │ │ │ ├── name: :foo
│ │ │ ├── name_loc: (11,3)-(11,7) = "foo:" │ │ │ ├── name_loc: (11,3)-(11,7) = "foo:"
│ │ │ └── value: │ │ │ └── value:

View File

@ -938,8 +938,10 @@
│ │ │ @ ParametersNode (location: (64,20)-(64,24)) │ │ │ @ ParametersNode (location: (64,20)-(64,24))
│ │ │ ├── requireds: (length: 2) │ │ │ ├── requireds: (length: 2)
│ │ │ │ ├── @ RequiredParameterNode (location: (64,20)-(64,21)) │ │ │ │ ├── @ RequiredParameterNode (location: (64,20)-(64,21))
│ │ │ │ │ ├── flags: ∅
│ │ │ │ │ └── name: :a │ │ │ │ │ └── name: :a
│ │ │ │ └── @ RequiredParameterNode (location: (64,23)-(64,24)) │ │ │ │ └── @ RequiredParameterNode (location: (64,23)-(64,24))
│ │ │ │ ├── flags: ∅
│ │ │ │ └── name: :b │ │ │ │ └── name: :b
│ │ │ ├── optionals: (length: 0) │ │ │ ├── optionals: (length: 0)
│ │ │ ├── rest: ∅ │ │ │ ├── rest: ∅
@ -1932,6 +1934,7 @@
│ │ │ │ │ @ ParametersNode (location: (121,12)-(121,13)) │ │ │ │ │ @ ParametersNode (location: (121,12)-(121,13))
│ │ │ │ │ ├── requireds: (length: 1) │ │ │ │ │ ├── requireds: (length: 1)
│ │ │ │ │ │ └── @ RequiredParameterNode (location: (121,12)-(121,13)) │ │ │ │ │ │ └── @ RequiredParameterNode (location: (121,12)-(121,13))
│ │ │ │ │ │ ├── flags: ∅
│ │ │ │ │ │ └── name: :a │ │ │ │ │ │ └── name: :a
│ │ │ │ │ ├── optionals: (length: 0) │ │ │ │ │ ├── optionals: (length: 0)
│ │ │ │ │ ├── rest: ∅ │ │ │ │ │ ├── rest: ∅
@ -2008,6 +2011,7 @@
│ │ │ │ │ @ ParametersNode (location: (128,12)-(128,13)) │ │ │ │ │ @ ParametersNode (location: (128,12)-(128,13))
│ │ │ │ │ ├── requireds: (length: 1) │ │ │ │ │ ├── requireds: (length: 1)
│ │ │ │ │ │ └── @ RequiredParameterNode (location: (128,12)-(128,13)) │ │ │ │ │ │ └── @ RequiredParameterNode (location: (128,12)-(128,13))
│ │ │ │ │ │ ├── flags: ∅
│ │ │ │ │ │ └── name: :a │ │ │ │ │ │ └── name: :a
│ │ │ │ │ ├── optionals: (length: 0) │ │ │ │ │ ├── optionals: (length: 0)
│ │ │ │ │ ├── rest: ∅ │ │ │ │ │ ├── rest: ∅
@ -2131,6 +2135,7 @@
│ │ │ │ @ ParametersNode (location: (139,10)-(139,11)) │ │ │ │ @ ParametersNode (location: (139,10)-(139,11))
│ │ │ │ ├── requireds: (length: 1) │ │ │ │ ├── requireds: (length: 1)
│ │ │ │ │ └── @ RequiredParameterNode (location: (139,10)-(139,11)) │ │ │ │ │ └── @ RequiredParameterNode (location: (139,10)-(139,11))
│ │ │ │ │ ├── flags: ∅
│ │ │ │ │ └── name: :a │ │ │ │ │ └── name: :a
│ │ │ │ ├── optionals: (length: 0) │ │ │ │ ├── optionals: (length: 0)
│ │ │ │ ├── rest: ∅ │ │ │ │ ├── rest: ∅
@ -2309,6 +2314,7 @@
│ ├── optionals: (length: 0) │ ├── optionals: (length: 0)
│ ├── rest: │ ├── rest:
│ │ @ RestParameterNode (location: (149,6)-(149,7)) │ │ @ RestParameterNode (location: (149,6)-(149,7))
│ │ ├── flags: ∅
│ │ ├── name: ∅ │ │ ├── name: ∅
│ │ ├── name_loc: ∅ │ │ ├── name_loc: ∅
│ │ └── operator_loc: (149,6)-(149,7) = "*" │ │ └── operator_loc: (149,6)-(149,7) = "*"

View File

@ -1,8 +1,8 @@
@ ProgramNode (location: (1,0)-(186,37)) @ ProgramNode (location: (1,0)-(183,37))
├── locals: [:a, :c, :foo] ├── locals: [:a, :c, :foo]
└── statements: └── statements:
@ StatementsNode (location: (1,0)-(186,37)) @ StatementsNode (location: (1,0)-(183,37))
└── body: (length: 70) └── body: (length: 69)
├── @ DefNode (location: (1,0)-(2,3)) ├── @ DefNode (location: (1,0)-(2,3))
│ ├── name: :foo │ ├── name: :foo
│ ├── name_loc: (1,4)-(1,7) = "foo" │ ├── name_loc: (1,4)-(1,7) = "foo"
@ -13,8 +13,10 @@
│ │ │ └── @ MultiTargetNode (location: (1,8)-(1,18)) │ │ │ └── @ MultiTargetNode (location: (1,8)-(1,18))
│ │ │ ├── lefts: (length: 2) │ │ │ ├── lefts: (length: 2)
│ │ │ │ ├── @ RequiredParameterNode (location: (1,9)-(1,12)) │ │ │ │ ├── @ RequiredParameterNode (location: (1,9)-(1,12))
│ │ │ │ │ ├── flags: ∅
│ │ │ │ │ └── name: :bar │ │ │ │ │ └── name: :bar
│ │ │ │ └── @ RequiredParameterNode (location: (1,14)-(1,17)) │ │ │ │ └── @ RequiredParameterNode (location: (1,14)-(1,17))
│ │ │ │ ├── flags: ∅
│ │ │ │ └── name: :baz │ │ │ │ └── name: :baz
│ │ │ ├── rest: ∅ │ │ │ ├── rest: ∅
│ │ │ ├── rights: (length: 0) │ │ │ ├── rights: (length: 0)
@ -45,8 +47,10 @@
│ │ │ └── @ MultiTargetNode (location: (4,8)-(4,18)) │ │ │ └── @ MultiTargetNode (location: (4,8)-(4,18))
│ │ │ ├── lefts: (length: 2) │ │ │ ├── lefts: (length: 2)
│ │ │ │ ├── @ RequiredParameterNode (location: (4,9)-(4,12)) │ │ │ │ ├── @ RequiredParameterNode (location: (4,9)-(4,12))
│ │ │ │ │ ├── flags: ∅
│ │ │ │ │ └── name: :bar │ │ │ │ │ └── name: :bar
│ │ │ │ └── @ RequiredParameterNode (location: (4,14)-(4,17)) │ │ │ │ └── @ RequiredParameterNode (location: (4,14)-(4,17))
│ │ │ │ ├── flags: ∅
│ │ │ │ └── name: :baz │ │ │ │ └── name: :baz
│ │ │ ├── rest: ∅ │ │ │ ├── rest: ∅
│ │ │ ├── rights: (length: 0) │ │ │ ├── rights: (length: 0)
@ -54,6 +58,7 @@
│ │ │ └── rparen_loc: (4,17)-(4,18) = ")" │ │ │ └── rparen_loc: (4,17)-(4,18) = ")"
│ │ ├── optionals: (length: 1) │ │ ├── optionals: (length: 1)
│ │ │ └── @ OptionalParameterNode (location: (4,20)-(4,32)) │ │ │ └── @ OptionalParameterNode (location: (4,20)-(4,32))
│ │ │ ├── flags: ∅
│ │ │ ├── name: :optional │ │ │ ├── name: :optional
│ │ │ ├── name_loc: (4,20)-(4,28) = "optional" │ │ │ ├── name_loc: (4,20)-(4,28) = "optional"
│ │ │ ├── operator_loc: (4,29)-(4,30) = "=" │ │ │ ├── operator_loc: (4,29)-(4,30) = "="
@ -65,8 +70,10 @@
│ │ │ └── @ MultiTargetNode (location: (4,34)-(4,44)) │ │ │ └── @ MultiTargetNode (location: (4,34)-(4,44))
│ │ │ ├── lefts: (length: 2) │ │ │ ├── lefts: (length: 2)
│ │ │ │ ├── @ RequiredParameterNode (location: (4,35)-(4,38)) │ │ │ │ ├── @ RequiredParameterNode (location: (4,35)-(4,38))
│ │ │ │ │ ├── flags: ∅
│ │ │ │ │ └── name: :bin │ │ │ │ │ └── name: :bin
│ │ │ │ └── @ RequiredParameterNode (location: (4,40)-(4,43)) │ │ │ │ └── @ RequiredParameterNode (location: (4,40)-(4,43))
│ │ │ │ ├── flags: ∅
│ │ │ │ └── name: :bag │ │ │ │ └── name: :bag
│ │ │ ├── rest: ∅ │ │ │ ├── rest: ∅
│ │ │ ├── rights: (length: 0) │ │ │ ├── rights: (length: 0)
@ -271,6 +278,7 @@
│ │ ├── posts: (length: 0) │ │ ├── posts: (length: 0)
│ │ ├── keywords: (length: 1) │ │ ├── keywords: (length: 1)
│ │ │ └── @ RequiredKeywordParameterNode (location: (31,6)-(31,8)) │ │ │ └── @ RequiredKeywordParameterNode (location: (31,6)-(31,8))
│ │ │ ├── flags: ∅
│ │ │ ├── name: :b │ │ │ ├── name: :b
│ │ │ └── name_loc: (31,6)-(31,8) = "b:" │ │ │ └── name_loc: (31,6)-(31,8) = "b:"
│ │ ├── keyword_rest: ∅ │ │ ├── keyword_rest: ∅
@ -302,6 +310,7 @@
│ │ ├── posts: (length: 0) │ │ ├── posts: (length: 0)
│ │ ├── keywords: (length: 1) │ │ ├── keywords: (length: 1)
│ │ │ └── @ RequiredKeywordParameterNode (location: (35,6)-(35,8)) │ │ │ └── @ RequiredKeywordParameterNode (location: (35,6)-(35,8))
│ │ │ ├── flags: ∅
│ │ │ ├── name: :b │ │ │ ├── name: :b
│ │ │ └── name_loc: (35,6)-(35,8) = "b:" │ │ │ └── name_loc: (35,6)-(35,8) = "b:"
│ │ ├── keyword_rest: ∅ │ │ ├── keyword_rest: ∅
@ -328,6 +337,7 @@
│ │ ├── keywords: (length: 0) │ │ ├── keywords: (length: 0)
│ │ ├── keyword_rest: │ │ ├── keyword_rest:
│ │ │ @ KeywordRestParameterNode (location: (38,6)-(38,9)) │ │ │ @ KeywordRestParameterNode (location: (38,6)-(38,9))
│ │ │ ├── flags: ∅
│ │ │ ├── name: :b │ │ │ ├── name: :b
│ │ │ ├── name_loc: (38,8)-(38,9) = "b" │ │ │ ├── name_loc: (38,8)-(38,9) = "b"
│ │ │ └── operator_loc: (38,6)-(38,8) = "**" │ │ │ └── operator_loc: (38,6)-(38,8) = "**"
@ -354,6 +364,7 @@
│ │ ├── keywords: (length: 0) │ │ ├── keywords: (length: 0)
│ │ ├── keyword_rest: │ │ ├── keyword_rest:
│ │ │ @ KeywordRestParameterNode (location: (41,6)-(41,8)) │ │ │ @ KeywordRestParameterNode (location: (41,6)-(41,8))
│ │ │ ├── flags: ∅
│ │ │ ├── name: ∅ │ │ │ ├── name: ∅
│ │ │ ├── name_loc: ∅ │ │ │ ├── name_loc: ∅
│ │ │ └── operator_loc: (41,6)-(41,8) = "**" │ │ │ └── operator_loc: (41,6)-(41,8) = "**"
@ -397,10 +408,13 @@
│ │ @ ParametersNode (location: (47,6)-(47,13)) │ │ @ ParametersNode (location: (47,6)-(47,13))
│ │ ├── requireds: (length: 3) │ │ ├── requireds: (length: 3)
│ │ │ ├── @ RequiredParameterNode (location: (47,6)-(47,7)) │ │ │ ├── @ RequiredParameterNode (location: (47,6)-(47,7))
│ │ │ │ ├── flags: ∅
│ │ │ │ └── name: :b │ │ │ │ └── name: :b
│ │ │ ├── @ RequiredParameterNode (location: (47,9)-(47,10)) │ │ │ ├── @ RequiredParameterNode (location: (47,9)-(47,10))
│ │ │ │ ├── flags: ∅
│ │ │ │ └── name: :c │ │ │ │ └── name: :c
│ │ │ └── @ RequiredParameterNode (location: (47,12)-(47,13)) │ │ │ └── @ RequiredParameterNode (location: (47,12)-(47,13))
│ │ │ ├── flags: ∅
│ │ │ └── name: :d │ │ │ └── name: :d
│ │ ├── optionals: (length: 0) │ │ ├── optionals: (length: 0)
│ │ ├── rest: ∅ │ │ ├── rest: ∅
@ -444,9 +458,11 @@
│ │ ├── posts: (length: 0) │ │ ├── posts: (length: 0)
│ │ ├── keywords: (length: 2) │ │ ├── keywords: (length: 2)
│ │ │ ├── @ RequiredKeywordParameterNode (location: (53,6)-(53,8)) │ │ │ ├── @ RequiredKeywordParameterNode (location: (53,6)-(53,8))
│ │ │ │ ├── flags: ∅
│ │ │ │ ├── name: :b │ │ │ │ ├── name: :b
│ │ │ │ └── name_loc: (53,6)-(53,8) = "b:" │ │ │ │ └── name_loc: (53,6)-(53,8) = "b:"
│ │ │ └── @ OptionalKeywordParameterNode (location: (53,10)-(53,14)) │ │ │ └── @ OptionalKeywordParameterNode (location: (53,10)-(53,14))
│ │ │ ├── flags: ∅
│ │ │ ├── name: :c │ │ │ ├── name: :c
│ │ │ ├── name_loc: (53,10)-(53,12) = "c:" │ │ │ ├── name_loc: (53,10)-(53,12) = "c:"
│ │ │ └── value: │ │ │ └── value:
@ -475,9 +491,11 @@
│ │ ├── posts: (length: 0) │ │ ├── posts: (length: 0)
│ │ ├── keywords: (length: 2) │ │ ├── keywords: (length: 2)
│ │ │ ├── @ RequiredKeywordParameterNode (location: (56,6)-(56,8)) │ │ │ ├── @ RequiredKeywordParameterNode (location: (56,6)-(56,8))
│ │ │ │ ├── flags: ∅
│ │ │ │ ├── name: :b │ │ │ │ ├── name: :b
│ │ │ │ └── name_loc: (56,6)-(56,8) = "b:" │ │ │ │ └── name_loc: (56,6)-(56,8) = "b:"
│ │ │ └── @ OptionalKeywordParameterNode (location: (56,10)-(56,14)) │ │ │ └── @ OptionalKeywordParameterNode (location: (56,10)-(56,14))
│ │ │ ├── flags: ∅
│ │ │ ├── name: :c │ │ │ ├── name: :c
│ │ │ ├── name_loc: (56,10)-(56,12) = "c:" │ │ │ ├── name_loc: (56,10)-(56,12) = "c:"
│ │ │ └── value: │ │ │ └── value:
@ -506,12 +524,14 @@
│ │ ├── posts: (length: 0) │ │ ├── posts: (length: 0)
│ │ ├── keywords: (length: 2) │ │ ├── keywords: (length: 2)
│ │ │ ├── @ OptionalKeywordParameterNode (location: (59,6)-(60,3)) │ │ │ ├── @ OptionalKeywordParameterNode (location: (59,6)-(60,3))
│ │ │ │ ├── flags: ∅
│ │ │ │ ├── name: :b │ │ │ │ ├── name: :b
│ │ │ │ ├── name_loc: (59,6)-(59,8) = "b:" │ │ │ │ ├── name_loc: (59,6)-(59,8) = "b:"
│ │ │ │ └── value: │ │ │ │ └── value:
│ │ │ │ @ IntegerNode (location: (60,2)-(60,3)) │ │ │ │ @ IntegerNode (location: (60,2)-(60,3))
│ │ │ │ └── flags: decimal │ │ │ │ └── flags: decimal
│ │ │ └── @ RequiredKeywordParameterNode (location: (60,5)-(60,7)) │ │ │ └── @ RequiredKeywordParameterNode (location: (60,5)-(60,7))
│ │ │ ├── flags: ∅
│ │ │ ├── name: :c │ │ │ ├── name: :c
│ │ │ └── name_loc: (60,5)-(60,7) = "c:" │ │ │ └── name_loc: (60,5)-(60,7) = "c:"
│ │ ├── keyword_rest: ∅ │ │ ├── keyword_rest: ∅
@ -540,6 +560,7 @@
│ │ ├── requireds: (length: 0) │ │ ├── requireds: (length: 0)
│ │ ├── optionals: (length: 2) │ │ ├── optionals: (length: 2)
│ │ │ ├── @ OptionalParameterNode (location: (65,6)-(65,11)) │ │ │ ├── @ OptionalParameterNode (location: (65,6)-(65,11))
│ │ │ │ ├── flags: ∅
│ │ │ │ ├── name: :b │ │ │ │ ├── name: :b
│ │ │ │ ├── name_loc: (65,6)-(65,7) = "b" │ │ │ │ ├── name_loc: (65,6)-(65,7) = "b"
│ │ │ │ ├── operator_loc: (65,8)-(65,9) = "=" │ │ │ │ ├── operator_loc: (65,8)-(65,9) = "="
@ -547,6 +568,7 @@
│ │ │ │ @ IntegerNode (location: (65,10)-(65,11)) │ │ │ │ @ IntegerNode (location: (65,10)-(65,11))
│ │ │ │ └── flags: decimal │ │ │ │ └── flags: decimal
│ │ │ └── @ OptionalParameterNode (location: (65,13)-(65,18)) │ │ │ └── @ OptionalParameterNode (location: (65,13)-(65,18))
│ │ │ ├── flags: ∅
│ │ │ ├── name: :c │ │ │ ├── name: :c
│ │ │ ├── name_loc: (65,13)-(65,14) = "c" │ │ │ ├── name_loc: (65,13)-(65,14) = "c"
│ │ │ ├── operator_loc: (65,15)-(65,16) = "=" │ │ │ ├── operator_loc: (65,15)-(65,16) = "="
@ -589,9 +611,11 @@
│ │ @ ParametersNode (location: (71,6)-(71,14)) │ │ @ ParametersNode (location: (71,6)-(71,14))
│ │ ├── requireds: (length: 1) │ │ ├── requireds: (length: 1)
│ │ │ └── @ RequiredParameterNode (location: (71,6)-(71,7)) │ │ │ └── @ RequiredParameterNode (location: (71,6)-(71,7))
│ │ │ ├── flags: ∅
│ │ │ └── name: :b │ │ │ └── name: :b
│ │ ├── optionals: (length: 1) │ │ ├── optionals: (length: 1)
│ │ │ └── @ OptionalParameterNode (location: (71,9)-(71,14)) │ │ │ └── @ OptionalParameterNode (location: (71,9)-(71,14))
│ │ │ ├── flags: ∅
│ │ │ ├── name: :c │ │ │ ├── name: :c
│ │ │ ├── name_loc: (71,9)-(71,10) = "c" │ │ │ ├── name_loc: (71,9)-(71,10) = "c"
│ │ │ ├── operator_loc: (71,11)-(71,12) = "=" │ │ │ ├── operator_loc: (71,11)-(71,12) = "="
@ -620,6 +644,7 @@
│ │ @ ParametersNode (location: (74,6)-(74,7)) │ │ @ ParametersNode (location: (74,6)-(74,7))
│ │ ├── requireds: (length: 1) │ │ ├── requireds: (length: 1)
│ │ │ └── @ RequiredParameterNode (location: (74,6)-(74,7)) │ │ │ └── @ RequiredParameterNode (location: (74,6)-(74,7))
│ │ │ ├── flags: ∅
│ │ │ └── name: :b │ │ │ └── name: :b
│ │ ├── optionals: (length: 0) │ │ ├── optionals: (length: 0)
│ │ ├── rest: ∅ │ │ ├── rest: ∅
@ -682,6 +707,7 @@
│ │ ├── optionals: (length: 0) │ │ ├── optionals: (length: 0)
│ │ ├── rest: │ │ ├── rest:
│ │ │ @ RestParameterNode (location: (79,6)-(79,8)) │ │ │ @ RestParameterNode (location: (79,6)-(79,8))
│ │ │ ├── flags: ∅
│ │ │ ├── name: :b │ │ │ ├── name: :b
│ │ │ ├── name_loc: (79,7)-(79,8) = "b" │ │ │ ├── name_loc: (79,7)-(79,8) = "b"
│ │ │ └── operator_loc: (79,6)-(79,7) = "*" │ │ │ └── operator_loc: (79,6)-(79,7) = "*"
@ -708,6 +734,7 @@
│ │ ├── optionals: (length: 0) │ │ ├── optionals: (length: 0)
│ │ ├── rest: │ │ ├── rest:
│ │ │ @ RestParameterNode (location: (82,6)-(82,7)) │ │ │ @ RestParameterNode (location: (82,6)-(82,7))
│ │ │ ├── flags: ∅
│ │ │ ├── name: ∅ │ │ │ ├── name: ∅
│ │ │ ├── name_loc: ∅ │ │ │ ├── name_loc: ∅
│ │ │ └── operator_loc: (82,6)-(82,7) = "*" │ │ │ └── operator_loc: (82,6)-(82,7) = "*"
@ -880,6 +907,7 @@
│ │ @ ParametersNode (location: (106,8)-(106,11)) │ │ @ ParametersNode (location: (106,8)-(106,11))
│ │ ├── requireds: (length: 1) │ │ ├── requireds: (length: 1)
│ │ │ └── @ RequiredParameterNode (location: (106,8)-(106,11)) │ │ │ └── @ RequiredParameterNode (location: (106,8)-(106,11))
│ │ │ ├── flags: ∅
│ │ │ └── name: :bar │ │ │ └── name: :bar
│ │ ├── optionals: (length: 0) │ │ ├── optionals: (length: 0)
│ │ ├── rest: ∅ │ │ ├── rest: ∅
@ -928,6 +956,7 @@
│ │ ├── optionals: (length: 0) │ │ ├── optionals: (length: 0)
│ │ ├── rest: │ │ ├── rest:
│ │ │ @ RestParameterNode (location: (110,6)-(110,7)) │ │ │ @ RestParameterNode (location: (110,6)-(110,7))
│ │ │ ├── flags: ∅
│ │ │ ├── name: ∅ │ │ │ ├── name: ∅
│ │ │ ├── name_loc: ∅ │ │ │ ├── name_loc: ∅
│ │ │ └── operator_loc: (110,6)-(110,7) = "*" │ │ │ └── operator_loc: (110,6)-(110,7) = "*"
@ -1092,6 +1121,7 @@
│ │ ├── keyword_rest: ∅ │ │ ├── keyword_rest: ∅
│ │ └── block: │ │ └── block:
│ │ @ BlockParameterNode (location: (119,6)-(119,8)) │ │ @ BlockParameterNode (location: (119,6)-(119,8))
│ │ ├── flags: ∅
│ │ ├── name: :b │ │ ├── name: :b
│ │ ├── name_loc: (119,7)-(119,8) = "b" │ │ ├── name_loc: (119,7)-(119,8) = "b"
│ │ └── operator_loc: (119,6)-(119,7) = "&" │ │ └── operator_loc: (119,6)-(119,7) = "&"
@ -1118,6 +1148,7 @@
│ │ ├── keyword_rest: ∅ │ │ ├── keyword_rest: ∅
│ │ └── block: │ │ └── block:
│ │ @ BlockParameterNode (location: (122,6)-(122,7)) │ │ @ BlockParameterNode (location: (122,6)-(122,7))
│ │ ├── flags: ∅
│ │ ├── name: ∅ │ │ ├── name: ∅
│ │ ├── name_loc: ∅ │ │ ├── name_loc: ∅
│ │ └── operator_loc: (122,6)-(122,7) = "&" │ │ └── operator_loc: (122,6)-(122,7) = "&"
@ -1360,6 +1391,7 @@
│ │ ├── posts: (length: 0) │ │ ├── posts: (length: 0)
│ │ ├── keywords: (length: 1) │ │ ├── keywords: (length: 1)
│ │ │ └── @ OptionalKeywordParameterNode (location: (142,8)-(142,19)) │ │ │ └── @ OptionalKeywordParameterNode (location: (142,8)-(142,19))
│ │ │ ├── flags: ∅
│ │ │ ├── name: :a │ │ │ ├── name: :a
│ │ │ ├── name_loc: (142,8)-(142,10) = "a:" │ │ │ ├── name_loc: (142,8)-(142,10) = "a:"
│ │ │ └── value: │ │ │ └── value:
@ -1401,6 +1433,7 @@
│ │ ├── posts: (length: 0) │ │ ├── posts: (length: 0)
│ │ ├── keywords: (length: 1) │ │ ├── keywords: (length: 1)
│ │ │ └── @ OptionalKeywordParameterNode (location: (145,8)-(145,18)) │ │ │ └── @ OptionalKeywordParameterNode (location: (145,8)-(145,18))
│ │ │ ├── flags: ∅
│ │ │ ├── name: :a │ │ │ ├── name: :a
│ │ │ ├── name_loc: (145,8)-(145,10) = "a:" │ │ │ ├── name_loc: (145,8)-(145,10) = "a:"
│ │ │ └── value: │ │ │ └── value:
@ -1440,6 +1473,7 @@
│ │ ├── posts: (length: 0) │ │ ├── posts: (length: 0)
│ │ ├── keywords: (length: 1) │ │ ├── keywords: (length: 1)
│ │ │ └── @ OptionalKeywordParameterNode (location: (148,8)-(148,17)) │ │ │ └── @ OptionalKeywordParameterNode (location: (148,8)-(148,17))
│ │ │ ├── flags: ∅
│ │ │ ├── name: :a │ │ │ ├── name: :a
│ │ │ ├── name_loc: (148,8)-(148,10) = "a:" │ │ │ ├── name_loc: (148,8)-(148,10) = "a:"
│ │ │ └── value: │ │ │ └── value:
@ -1476,6 +1510,7 @@
│ │ ├── requireds: (length: 0) │ │ ├── requireds: (length: 0)
│ │ ├── optionals: (length: 1) │ │ ├── optionals: (length: 1)
│ │ │ └── @ OptionalParameterNode (location: (151,8)-(151,20)) │ │ │ └── @ OptionalParameterNode (location: (151,8)-(151,20))
│ │ │ ├── flags: ∅
│ │ │ ├── name: :a │ │ │ ├── name: :a
│ │ │ ├── name_loc: (151,8)-(151,9) = "a" │ │ │ ├── name_loc: (151,8)-(151,9) = "a"
│ │ │ ├── operator_loc: (151,10)-(151,11) = "=" │ │ │ ├── operator_loc: (151,10)-(151,11) = "="
@ -1518,6 +1553,7 @@
│ │ ├── requireds: (length: 0) │ │ ├── requireds: (length: 0)
│ │ ├── optionals: (length: 1) │ │ ├── optionals: (length: 1)
│ │ │ └── @ OptionalParameterNode (location: (154,8)-(154,19)) │ │ │ └── @ OptionalParameterNode (location: (154,8)-(154,19))
│ │ │ ├── flags: ∅
│ │ │ ├── name: :a │ │ │ ├── name: :a
│ │ │ ├── name_loc: (154,8)-(154,9) = "a" │ │ │ ├── name_loc: (154,8)-(154,9) = "a"
│ │ │ ├── operator_loc: (154,10)-(154,11) = "=" │ │ │ ├── operator_loc: (154,10)-(154,11) = "="
@ -1558,6 +1594,7 @@
│ │ ├── requireds: (length: 0) │ │ ├── requireds: (length: 0)
│ │ ├── optionals: (length: 1) │ │ ├── optionals: (length: 1)
│ │ │ └── @ OptionalParameterNode (location: (157,8)-(157,18)) │ │ │ └── @ OptionalParameterNode (location: (157,8)-(157,18))
│ │ │ ├── flags: ∅
│ │ │ ├── name: :a │ │ │ ├── name: :a
│ │ │ ├── name_loc: (157,8)-(157,9) = "a" │ │ │ ├── name_loc: (157,8)-(157,9) = "a"
│ │ │ ├── operator_loc: (157,10)-(157,11) = "=" │ │ │ ├── operator_loc: (157,10)-(157,11) = "="
@ -1597,6 +1634,7 @@
│ │ @ ParametersNode (location: (160,11)-(160,12)) │ │ @ ParametersNode (location: (160,11)-(160,12))
│ │ ├── requireds: (length: 1) │ │ ├── requireds: (length: 1)
│ │ │ └── @ RequiredParameterNode (location: (160,11)-(160,12)) │ │ │ └── @ RequiredParameterNode (location: (160,11)-(160,12))
│ │ │ ├── flags: ∅
│ │ │ └── name: :a │ │ │ └── name: :a
│ │ ├── optionals: (length: 0) │ │ ├── optionals: (length: 0)
│ │ ├── rest: ∅ │ │ ├── rest: ∅
@ -1655,128 +1693,100 @@
│ ├── rparen_loc: (160,12)-(160,13) = ")" │ ├── rparen_loc: (160,12)-(160,13) = ")"
│ ├── equal_loc: ∅ │ ├── equal_loc: ∅
│ └── end_keyword_loc: (162,0)-(162,3) = "end" │ └── end_keyword_loc: (162,0)-(162,3) = "end"
├── @ DefNode (location: (164,0)-(165,3)) ├── @ LocalVariableWriteNode (location: (164,0)-(164,7))
│ ├── name: :foo
│ ├── name_loc: (164,4)-(164,7) = "foo"
│ ├── receiver: ∅
│ ├── parameters:
│ │ @ ParametersNode (location: (164,8)-(164,20))
│ │ ├── requireds: (length: 4)
│ │ │ ├── @ RequiredParameterNode (location: (164,8)-(164,10))
│ │ │ │ └── name: :_a
│ │ │ ├── @ RequiredParameterNode (location: (164,12)-(164,14))
│ │ │ │ └── name: :_a
│ │ │ ├── @ RequiredParameterNode (location: (164,16)-(164,17))
│ │ │ │ └── name: :b
│ │ │ └── @ RequiredParameterNode (location: (164,19)-(164,20))
│ │ │ └── name: :c
│ │ ├── optionals: (length: 0)
│ │ ├── rest: ∅
│ │ ├── posts: (length: 0)
│ │ ├── keywords: (length: 0)
│ │ ├── keyword_rest: ∅
│ │ └── block: ∅
│ ├── body: ∅
│ ├── locals: [:_a, :b, :c]
│ ├── locals_body_index: 3
│ ├── def_keyword_loc: (164,0)-(164,3) = "def"
│ ├── operator_loc: ∅
│ ├── lparen_loc: (164,7)-(164,8) = "("
│ ├── rparen_loc: (164,20)-(164,21) = ")"
│ ├── equal_loc: ∅
│ └── end_keyword_loc: (165,0)-(165,3) = "end"
├── @ LocalVariableWriteNode (location: (167,0)-(167,7))
│ ├── name: :foo │ ├── name: :foo
│ ├── depth: 0 │ ├── depth: 0
│ ├── name_loc: (167,0)-(167,3) = "foo" │ ├── name_loc: (164,0)-(164,3) = "foo"
│ ├── value: │ ├── value:
│ │ @ IntegerNode (location: (167,6)-(167,7)) │ │ @ IntegerNode (location: (164,6)-(164,7))
│ │ └── flags: decimal │ │ └── flags: decimal
│ └── operator_loc: (167,4)-(167,5) = "=" │ └── operator_loc: (164,4)-(164,5) = "="
├── @ DefNode (location: (168,0)-(168,16)) ├── @ DefNode (location: (165,0)-(165,16))
│ ├── name: :bar │ ├── name: :bar
│ ├── name_loc: (168,8)-(168,11) = "bar" │ ├── name_loc: (165,8)-(165,11) = "bar"
│ ├── receiver: │ ├── receiver:
│ │ @ LocalVariableReadNode (location: (168,4)-(168,7)) │ │ @ LocalVariableReadNode (location: (165,4)-(165,7))
│ │ ├── name: :foo │ │ ├── name: :foo
│ │ └── depth: 0 │ │ └── depth: 0
│ ├── parameters: ∅ │ ├── parameters: ∅
│ ├── body: ∅ │ ├── body: ∅
│ ├── locals: [] │ ├── locals: []
│ ├── locals_body_index: 0 │ ├── locals_body_index: 0
│ ├── def_keyword_loc: (168,0)-(168,3) = "def" │ ├── def_keyword_loc: (165,0)-(165,3) = "def"
│ ├── operator_loc: (168,7)-(168,8) = "." │ ├── operator_loc: (165,7)-(165,8) = "."
│ ├── lparen_loc: ∅ │ ├── lparen_loc: ∅
│ ├── rparen_loc: ∅ │ ├── rparen_loc: ∅
│ ├── equal_loc: ∅ │ ├── equal_loc: ∅
│ └── end_keyword_loc: (168,13)-(168,16) = "end" │ └── end_keyword_loc: (165,13)-(165,16) = "end"
├── @ DefNode (location: (170,0)-(170,18)) ├── @ DefNode (location: (167,0)-(167,18))
│ ├── name: :f │ ├── name: :f
│ ├── name_loc: (170,4)-(170,5) = "f" │ ├── name_loc: (167,4)-(167,5) = "f"
│ ├── receiver: ∅ │ ├── receiver: ∅
│ ├── parameters: │ ├── parameters:
│ │ @ ParametersNode (location: (170,6)-(170,7)) │ │ @ ParametersNode (location: (167,6)-(167,7))
│ │ ├── requireds: (length: 0) │ │ ├── requireds: (length: 0)
│ │ ├── optionals: (length: 0) │ │ ├── optionals: (length: 0)
│ │ ├── rest: │ │ ├── rest:
│ │ │ @ RestParameterNode (location: (170,6)-(170,7)) │ │ │ @ RestParameterNode (location: (167,6)-(167,7))
│ │ │ ├── flags: ∅
│ │ │ ├── name: ∅ │ │ │ ├── name: ∅
│ │ │ ├── name_loc: ∅ │ │ │ ├── name_loc: ∅
│ │ │ └── operator_loc: (170,6)-(170,7) = "*" │ │ │ └── operator_loc: (167,6)-(167,7) = "*"
│ │ ├── posts: (length: 0) │ │ ├── posts: (length: 0)
│ │ ├── keywords: (length: 0) │ │ ├── keywords: (length: 0)
│ │ ├── keyword_rest: ∅ │ │ ├── keyword_rest: ∅
│ │ └── block: ∅ │ │ └── block: ∅
│ ├── body: │ ├── body:
│ │ @ StatementsNode (location: (170,10)-(170,13)) │ │ @ StatementsNode (location: (167,10)-(167,13))
│ │ └── body: (length: 1) │ │ └── body: (length: 1)
│ │ └── @ ArrayNode (location: (170,10)-(170,13)) │ │ └── @ ArrayNode (location: (167,10)-(167,13))
│ │ ├── flags: contains_splat │ │ ├── flags: contains_splat
│ │ ├── elements: (length: 1) │ │ ├── elements: (length: 1)
│ │ │ └── @ SplatNode (location: (170,11)-(170,12)) │ │ │ └── @ SplatNode (location: (167,11)-(167,12))
│ │ │ ├── operator_loc: (170,11)-(170,12) = "*" │ │ │ ├── operator_loc: (167,11)-(167,12) = "*"
│ │ │ └── expression: ∅ │ │ │ └── expression: ∅
│ │ ├── opening_loc: (170,10)-(170,11) = "[" │ │ ├── opening_loc: (167,10)-(167,11) = "["
│ │ └── closing_loc: (170,12)-(170,13) = "]" │ │ └── closing_loc: (167,12)-(167,13) = "]"
│ ├── locals: [:*] │ ├── locals: [:*]
│ ├── locals_body_index: 1 │ ├── locals_body_index: 1
│ ├── def_keyword_loc: (170,0)-(170,3) = "def" │ ├── def_keyword_loc: (167,0)-(167,3) = "def"
│ ├── operator_loc: ∅ │ ├── operator_loc: ∅
│ ├── lparen_loc: (170,5)-(170,6) = "(" │ ├── lparen_loc: (167,5)-(167,6) = "("
│ ├── rparen_loc: (170,7)-(170,8) = ")" │ ├── rparen_loc: (167,7)-(167,8) = ")"
│ ├── equal_loc: ∅ │ ├── equal_loc: ∅
│ └── end_keyword_loc: (170,15)-(170,18) = "end" │ └── end_keyword_loc: (167,15)-(167,18) = "end"
├── @ DefNode (location: (172,0)-(172,15)) ├── @ DefNode (location: (169,0)-(169,15))
│ ├── name: :f │ ├── name: :f
│ ├── name_loc: (172,4)-(172,5) = "f" │ ├── name_loc: (169,4)-(169,5) = "f"
│ ├── receiver: ∅ │ ├── receiver: ∅
│ ├── parameters: │ ├── parameters:
│ │ @ ParametersNode (location: (172,6)-(172,10)) │ │ @ ParametersNode (location: (169,6)-(169,10))
│ │ ├── requireds: (length: 0) │ │ ├── requireds: (length: 0)
│ │ ├── optionals: (length: 0) │ │ ├── optionals: (length: 0)
│ │ ├── rest: ∅ │ │ ├── rest: ∅
│ │ ├── posts: (length: 0) │ │ ├── posts: (length: 0)
│ │ ├── keywords: (length: 1) │ │ ├── keywords: (length: 1)
│ │ │ └── @ OptionalKeywordParameterNode (location: (172,6)-(172,10)) │ │ │ └── @ OptionalKeywordParameterNode (location: (169,6)-(169,10))
│ │ │ ├── flags: ∅
│ │ │ ├── name: :x │ │ │ ├── name: :x
│ │ │ ├── name_loc: (172,6)-(172,8) = "x:" │ │ │ ├── name_loc: (169,6)-(169,8) = "x:"
│ │ │ └── value: │ │ │ └── value:
│ │ │ @ CallNode (location: (172,8)-(172,10)) │ │ │ @ CallNode (location: (169,8)-(169,10))
│ │ │ ├── flags: ∅ │ │ │ ├── flags: ∅
│ │ │ ├── receiver: │ │ │ ├── receiver:
│ │ │ │ @ CallNode (location: (172,9)-(172,10)) │ │ │ │ @ CallNode (location: (169,9)-(169,10))
│ │ │ │ ├── flags: variable_call, ignore_visibility │ │ │ │ ├── flags: variable_call, ignore_visibility
│ │ │ │ ├── receiver: ∅ │ │ │ │ ├── receiver: ∅
│ │ │ │ ├── call_operator_loc: ∅ │ │ │ │ ├── call_operator_loc: ∅
│ │ │ │ ├── name: :a │ │ │ │ ├── name: :a
│ │ │ │ ├── message_loc: (172,9)-(172,10) = "a" │ │ │ │ ├── message_loc: (169,9)-(169,10) = "a"
│ │ │ │ ├── opening_loc: ∅ │ │ │ │ ├── opening_loc: ∅
│ │ │ │ ├── arguments: ∅ │ │ │ │ ├── arguments: ∅
│ │ │ │ ├── closing_loc: ∅ │ │ │ │ ├── closing_loc: ∅
│ │ │ │ └── block: ∅ │ │ │ │ └── block: ∅
│ │ │ ├── call_operator_loc: ∅ │ │ │ ├── call_operator_loc: ∅
│ │ │ ├── name: :-@ │ │ │ ├── name: :-@
│ │ │ ├── message_loc: (172,8)-(172,9) = "-" │ │ │ ├── message_loc: (169,8)-(169,9) = "-"
│ │ │ ├── opening_loc: ∅ │ │ │ ├── opening_loc: ∅
│ │ │ ├── arguments: ∅ │ │ │ ├── arguments: ∅
│ │ │ ├── closing_loc: ∅ │ │ │ ├── closing_loc: ∅
@ -1786,43 +1796,44 @@
│ ├── body: ∅ │ ├── body: ∅
│ ├── locals: [:x] │ ├── locals: [:x]
│ ├── locals_body_index: 1 │ ├── locals_body_index: 1
│ ├── def_keyword_loc: (172,0)-(172,3) = "def" │ ├── def_keyword_loc: (169,0)-(169,3) = "def"
│ ├── operator_loc: ∅ │ ├── operator_loc: ∅
│ ├── lparen_loc: ∅ │ ├── lparen_loc: ∅
│ ├── rparen_loc: ∅ │ ├── rparen_loc: ∅
│ ├── equal_loc: ∅ │ ├── equal_loc: ∅
│ └── end_keyword_loc: (172,12)-(172,15) = "end" │ └── end_keyword_loc: (169,12)-(169,15) = "end"
├── @ DefNode (location: (174,0)-(174,15)) ├── @ DefNode (location: (171,0)-(171,15))
│ ├── name: :f │ ├── name: :f
│ ├── name_loc: (174,4)-(174,5) = "f" │ ├── name_loc: (171,4)-(171,5) = "f"
│ ├── receiver: ∅ │ ├── receiver: ∅
│ ├── parameters: │ ├── parameters:
│ │ @ ParametersNode (location: (174,6)-(174,10)) │ │ @ ParametersNode (location: (171,6)-(171,10))
│ │ ├── requireds: (length: 0) │ │ ├── requireds: (length: 0)
│ │ ├── optionals: (length: 0) │ │ ├── optionals: (length: 0)
│ │ ├── rest: ∅ │ │ ├── rest: ∅
│ │ ├── posts: (length: 0) │ │ ├── posts: (length: 0)
│ │ ├── keywords: (length: 1) │ │ ├── keywords: (length: 1)
│ │ │ └── @ OptionalKeywordParameterNode (location: (174,6)-(174,10)) │ │ │ └── @ OptionalKeywordParameterNode (location: (171,6)-(171,10))
│ │ │ ├── flags: ∅
│ │ │ ├── name: :x │ │ │ ├── name: :x
│ │ │ ├── name_loc: (174,6)-(174,8) = "x:" │ │ │ ├── name_loc: (171,6)-(171,8) = "x:"
│ │ │ └── value: │ │ │ └── value:
│ │ │ @ CallNode (location: (174,8)-(174,10)) │ │ │ @ CallNode (location: (171,8)-(171,10))
│ │ │ ├── flags: ∅ │ │ │ ├── flags: ∅
│ │ │ ├── receiver: │ │ │ ├── receiver:
│ │ │ │ @ CallNode (location: (174,9)-(174,10)) │ │ │ │ @ CallNode (location: (171,9)-(171,10))
│ │ │ │ ├── flags: variable_call, ignore_visibility │ │ │ │ ├── flags: variable_call, ignore_visibility
│ │ │ │ ├── receiver: ∅ │ │ │ │ ├── receiver: ∅
│ │ │ │ ├── call_operator_loc: ∅ │ │ │ │ ├── call_operator_loc: ∅
│ │ │ │ ├── name: :a │ │ │ │ ├── name: :a
│ │ │ │ ├── message_loc: (174,9)-(174,10) = "a" │ │ │ │ ├── message_loc: (171,9)-(171,10) = "a"
│ │ │ │ ├── opening_loc: ∅ │ │ │ │ ├── opening_loc: ∅
│ │ │ │ ├── arguments: ∅ │ │ │ │ ├── arguments: ∅
│ │ │ │ ├── closing_loc: ∅ │ │ │ │ ├── closing_loc: ∅
│ │ │ │ └── block: ∅ │ │ │ │ └── block: ∅
│ │ │ ├── call_operator_loc: ∅ │ │ │ ├── call_operator_loc: ∅
│ │ │ ├── name: :+@ │ │ │ ├── name: :+@
│ │ │ ├── message_loc: (174,8)-(174,9) = "+" │ │ │ ├── message_loc: (171,8)-(171,9) = "+"
│ │ │ ├── opening_loc: ∅ │ │ │ ├── opening_loc: ∅
│ │ │ ├── arguments: ∅ │ │ │ ├── arguments: ∅
│ │ │ ├── closing_loc: ∅ │ │ │ ├── closing_loc: ∅
@ -1832,43 +1843,44 @@
│ ├── body: ∅ │ ├── body: ∅
│ ├── locals: [:x] │ ├── locals: [:x]
│ ├── locals_body_index: 1 │ ├── locals_body_index: 1
│ ├── def_keyword_loc: (174,0)-(174,3) = "def" │ ├── def_keyword_loc: (171,0)-(171,3) = "def"
│ ├── operator_loc: ∅ │ ├── operator_loc: ∅
│ ├── lparen_loc: ∅ │ ├── lparen_loc: ∅
│ ├── rparen_loc: ∅ │ ├── rparen_loc: ∅
│ ├── equal_loc: ∅ │ ├── equal_loc: ∅
│ └── end_keyword_loc: (174,12)-(174,15) = "end" │ └── end_keyword_loc: (171,12)-(171,15) = "end"
├── @ DefNode (location: (176,0)-(176,15)) ├── @ DefNode (location: (173,0)-(173,15))
│ ├── name: :f │ ├── name: :f
│ ├── name_loc: (176,4)-(176,5) = "f" │ ├── name_loc: (173,4)-(173,5) = "f"
│ ├── receiver: ∅ │ ├── receiver: ∅
│ ├── parameters: │ ├── parameters:
│ │ @ ParametersNode (location: (176,6)-(176,10)) │ │ @ ParametersNode (location: (173,6)-(173,10))
│ │ ├── requireds: (length: 0) │ │ ├── requireds: (length: 0)
│ │ ├── optionals: (length: 0) │ │ ├── optionals: (length: 0)
│ │ ├── rest: ∅ │ │ ├── rest: ∅
│ │ ├── posts: (length: 0) │ │ ├── posts: (length: 0)
│ │ ├── keywords: (length: 1) │ │ ├── keywords: (length: 1)
│ │ │ └── @ OptionalKeywordParameterNode (location: (176,6)-(176,10)) │ │ │ └── @ OptionalKeywordParameterNode (location: (173,6)-(173,10))
│ │ │ ├── flags: ∅
│ │ │ ├── name: :x │ │ │ ├── name: :x
│ │ │ ├── name_loc: (176,6)-(176,8) = "x:" │ │ │ ├── name_loc: (173,6)-(173,8) = "x:"
│ │ │ └── value: │ │ │ └── value:
│ │ │ @ CallNode (location: (176,8)-(176,10)) │ │ │ @ CallNode (location: (173,8)-(173,10))
│ │ │ ├── flags: ∅ │ │ │ ├── flags: ∅
│ │ │ ├── receiver: │ │ │ ├── receiver:
│ │ │ │ @ CallNode (location: (176,9)-(176,10)) │ │ │ │ @ CallNode (location: (173,9)-(173,10))
│ │ │ │ ├── flags: variable_call, ignore_visibility │ │ │ │ ├── flags: variable_call, ignore_visibility
│ │ │ │ ├── receiver: ∅ │ │ │ │ ├── receiver: ∅
│ │ │ │ ├── call_operator_loc: ∅ │ │ │ │ ├── call_operator_loc: ∅
│ │ │ │ ├── name: :a │ │ │ │ ├── name: :a
│ │ │ │ ├── message_loc: (176,9)-(176,10) = "a" │ │ │ │ ├── message_loc: (173,9)-(173,10) = "a"
│ │ │ │ ├── opening_loc: ∅ │ │ │ │ ├── opening_loc: ∅
│ │ │ │ ├── arguments: ∅ │ │ │ │ ├── arguments: ∅
│ │ │ │ ├── closing_loc: ∅ │ │ │ │ ├── closing_loc: ∅
│ │ │ │ └── block: ∅ │ │ │ │ └── block: ∅
│ │ │ ├── call_operator_loc: ∅ │ │ │ ├── call_operator_loc: ∅
│ │ │ ├── name: :! │ │ │ ├── name: :!
│ │ │ ├── message_loc: (176,8)-(176,9) = "!" │ │ │ ├── message_loc: (173,8)-(173,9) = "!"
│ │ │ ├── opening_loc: ∅ │ │ │ ├── opening_loc: ∅
│ │ │ ├── arguments: ∅ │ │ │ ├── arguments: ∅
│ │ │ ├── closing_loc: ∅ │ │ │ ├── closing_loc: ∅
@ -1878,107 +1890,110 @@
│ ├── body: ∅ │ ├── body: ∅
│ ├── locals: [:x] │ ├── locals: [:x]
│ ├── locals_body_index: 1 │ ├── locals_body_index: 1
│ ├── def_keyword_loc: (176,0)-(176,3) = "def" │ ├── def_keyword_loc: (173,0)-(173,3) = "def"
│ ├── operator_loc: ∅ │ ├── operator_loc: ∅
│ ├── lparen_loc: ∅ │ ├── lparen_loc: ∅
│ ├── rparen_loc: ∅ │ ├── rparen_loc: ∅
│ ├── equal_loc: ∅ │ ├── equal_loc: ∅
│ └── end_keyword_loc: (176,12)-(176,15) = "end" │ └── end_keyword_loc: (173,12)-(173,15) = "end"
├── @ DefNode (location: (178,0)-(178,20)) ├── @ DefNode (location: (175,0)-(175,20))
│ ├── name: :foo │ ├── name: :foo
│ ├── name_loc: (178,4)-(178,7) = "foo" │ ├── name_loc: (175,4)-(175,7) = "foo"
│ ├── receiver: ∅ │ ├── receiver: ∅
│ ├── parameters: │ ├── parameters:
│ │ @ ParametersNode (location: (178,8)-(178,15)) │ │ @ ParametersNode (location: (175,8)-(175,15))
│ │ ├── requireds: (length: 0) │ │ ├── requireds: (length: 0)
│ │ ├── optionals: (length: 0) │ │ ├── optionals: (length: 0)
│ │ ├── rest: ∅ │ │ ├── rest: ∅
│ │ ├── posts: (length: 0) │ │ ├── posts: (length: 0)
│ │ ├── keywords: (length: 1) │ │ ├── keywords: (length: 1)
│ │ │ └── @ OptionalKeywordParameterNode (location: (178,8)-(178,15)) │ │ │ └── @ OptionalKeywordParameterNode (location: (175,8)-(175,15))
│ │ │ ├── flags: ∅
│ │ │ ├── name: :x │ │ │ ├── name: :x
│ │ │ ├── name_loc: (178,8)-(178,10) = "x:" │ │ │ ├── name_loc: (175,8)-(175,10) = "x:"
│ │ │ └── value: │ │ │ └── value:
│ │ │ @ StringNode (location: (178,10)-(178,15)) │ │ │ @ StringNode (location: (175,10)-(175,15))
│ │ │ ├── flags: ∅ │ │ │ ├── flags: ∅
│ │ │ ├── opening_loc: (178,10)-(178,12) = "%(" │ │ │ ├── opening_loc: (175,10)-(175,12) = "%("
│ │ │ ├── content_loc: (178,12)-(178,14) = "xx" │ │ │ ├── content_loc: (175,12)-(175,14) = "xx"
│ │ │ ├── closing_loc: (178,14)-(178,15) = ")" │ │ │ ├── closing_loc: (175,14)-(175,15) = ")"
│ │ │ └── unescaped: "xx" │ │ │ └── unescaped: "xx"
│ │ ├── keyword_rest: ∅ │ │ ├── keyword_rest: ∅
│ │ └── block: ∅ │ │ └── block: ∅
│ ├── body: ∅ │ ├── body: ∅
│ ├── locals: [:x] │ ├── locals: [:x]
│ ├── locals_body_index: 1 │ ├── locals_body_index: 1
│ ├── def_keyword_loc: (178,0)-(178,3) = "def" │ ├── def_keyword_loc: (175,0)-(175,3) = "def"
│ ├── operator_loc: ∅ │ ├── operator_loc: ∅
│ ├── lparen_loc: ∅ │ ├── lparen_loc: ∅
│ ├── rparen_loc: ∅ │ ├── rparen_loc: ∅
│ ├── equal_loc: ∅ │ ├── equal_loc: ∅
│ └── end_keyword_loc: (178,17)-(178,20) = "end" │ └── end_keyword_loc: (175,17)-(175,20) = "end"
├── @ DefNode (location: (180,0)-(182,3)) ├── @ DefNode (location: (177,0)-(179,3))
│ ├── name: :foo │ ├── name: :foo
│ ├── name_loc: (180,4)-(180,7) = "foo" │ ├── name_loc: (177,4)-(177,7) = "foo"
│ ├── receiver: ∅ │ ├── receiver: ∅
│ ├── parameters: │ ├── parameters:
│ │ @ ParametersNode (location: (180,8)-(180,11)) │ │ @ ParametersNode (location: (177,8)-(177,11))
│ │ ├── requireds: (length: 0) │ │ ├── requireds: (length: 0)
│ │ ├── optionals: (length: 0) │ │ ├── optionals: (length: 0)
│ │ ├── rest: ∅ │ │ ├── rest: ∅
│ │ ├── posts: (length: 0) │ │ ├── posts: (length: 0)
│ │ ├── keywords: (length: 0) │ │ ├── keywords: (length: 0)
│ │ ├── keyword_rest: │ │ ├── keyword_rest:
│ │ │ @ ForwardingParameterNode (location: (180,8)-(180,11)) │ │ │ @ ForwardingParameterNode (location: (177,8)-(177,11))
│ │ └── block: ∅ │ │ └── block: ∅
│ ├── body: │ ├── body:
│ │ @ StatementsNode (location: (181,2)-(181,7)) │ │ @ StatementsNode (location: (178,2)-(178,7))
│ │ └── body: (length: 1) │ │ └── body: (length: 1)
│ │ └── @ CallNode (location: (181,2)-(181,7)) │ │ └── @ CallNode (location: (178,2)-(178,7))
│ │ ├── flags: ignore_visibility │ │ ├── flags: ignore_visibility
│ │ ├── receiver: ∅ │ │ ├── receiver: ∅
│ │ ├── call_operator_loc: ∅ │ │ ├── call_operator_loc: ∅
│ │ ├── name: :bar │ │ ├── name: :bar
│ │ ├── message_loc: (181,2)-(181,5) = "bar" │ │ ├── message_loc: (178,2)-(178,5) = "bar"
│ │ ├── opening_loc: (181,5)-(181,6) = "(" │ │ ├── opening_loc: (178,5)-(178,6) = "("
│ │ ├── arguments: ∅ │ │ ├── arguments: ∅
│ │ ├── closing_loc: (181,7)-(181,8) = ")" │ │ ├── closing_loc: (178,7)-(178,8) = ")"
│ │ └── block: │ │ └── block:
│ │ @ BlockArgumentNode (location: (181,6)-(181,7)) │ │ @ BlockArgumentNode (location: (178,6)-(178,7))
│ │ ├── expression: ∅ │ │ ├── expression: ∅
│ │ └── operator_loc: (181,6)-(181,7) = "&" │ │ └── operator_loc: (178,6)-(178,7) = "&"
│ ├── locals: [:"..."] │ ├── locals: [:"..."]
│ ├── locals_body_index: 1 │ ├── locals_body_index: 1
│ ├── def_keyword_loc: (180,0)-(180,3) = "def" │ ├── def_keyword_loc: (177,0)-(177,3) = "def"
│ ├── operator_loc: ∅ │ ├── operator_loc: ∅
│ ├── lparen_loc: (180,7)-(180,8) = "(" │ ├── lparen_loc: (177,7)-(177,8) = "("
│ ├── rparen_loc: (180,11)-(180,12) = ")" │ ├── rparen_loc: (177,11)-(177,12) = ")"
│ ├── equal_loc: ∅ │ ├── equal_loc: ∅
│ └── end_keyword_loc: (182,0)-(182,3) = "end" │ └── end_keyword_loc: (179,0)-(179,3) = "end"
├── @ DefNode (location: (184,0)-(184,42)) ├── @ DefNode (location: (181,0)-(181,42))
│ ├── name: :foo │ ├── name: :foo
│ ├── name_loc: (184,4)-(184,7) = "foo" │ ├── name_loc: (181,4)-(181,7) = "foo"
│ ├── receiver: ∅ │ ├── receiver: ∅
│ ├── parameters: │ ├── parameters:
│ │ @ ParametersNode (location: (184,8)-(184,37)) │ │ @ ParametersNode (location: (181,8)-(181,37))
│ │ ├── requireds: (length: 0) │ │ ├── requireds: (length: 0)
│ │ ├── optionals: (length: 1) │ │ ├── optionals: (length: 1)
│ │ │ └── @ OptionalParameterNode (location: (184,8)-(184,37)) │ │ │ └── @ OptionalParameterNode (location: (181,8)-(181,37))
│ │ │ ├── flags: ∅
│ │ │ ├── name: :bar │ │ │ ├── name: :bar
│ │ │ ├── name_loc: (184,8)-(184,11) = "bar" │ │ │ ├── name_loc: (181,8)-(181,11) = "bar"
│ │ │ ├── operator_loc: (184,12)-(184,13) = "=" │ │ │ ├── operator_loc: (181,12)-(181,13) = "="
│ │ │ └── value: │ │ │ └── value:
│ │ │ @ ParenthesesNode (location: (184,14)-(184,37)) │ │ │ @ ParenthesesNode (location: (181,14)-(181,37))
│ │ │ ├── body: │ │ │ ├── body:
│ │ │ │ @ StatementsNode (location: (184,15)-(184,36)) │ │ │ │ @ StatementsNode (location: (181,15)-(181,36))
│ │ │ │ └── body: (length: 2) │ │ │ │ └── body: (length: 2)
│ │ │ │ ├── @ DefNode (location: (184,15)-(184,33)) │ │ │ │ ├── @ DefNode (location: (181,15)-(181,33))
│ │ │ │ │ ├── name: :baz │ │ │ │ │ ├── name: :baz
│ │ │ │ │ ├── name_loc: (184,19)-(184,22) = "baz" │ │ │ │ │ ├── name_loc: (181,19)-(181,22) = "baz"
│ │ │ │ │ ├── receiver: ∅ │ │ │ │ │ ├── receiver: ∅
│ │ │ │ │ ├── parameters: │ │ │ │ │ ├── parameters:
│ │ │ │ │ │ @ ParametersNode (location: (184,23)-(184,26)) │ │ │ │ │ │ @ ParametersNode (location: (181,23)-(181,26))
│ │ │ │ │ │ ├── requireds: (length: 1) │ │ │ │ │ │ ├── requireds: (length: 1)
│ │ │ │ │ │ │ └── @ RequiredParameterNode (location: (184,23)-(184,26)) │ │ │ │ │ │ │ └── @ RequiredParameterNode (location: (181,23)-(181,26))
│ │ │ │ │ │ │ ├── flags: ∅
│ │ │ │ │ │ │ └── name: :bar │ │ │ │ │ │ │ └── name: :bar
│ │ │ │ │ │ ├── optionals: (length: 0) │ │ │ │ │ │ ├── optionals: (length: 0)
│ │ │ │ │ │ ├── rest: ∅ │ │ │ │ │ │ ├── rest: ∅
@ -1987,70 +2002,71 @@
│ │ │ │ │ │ ├── keyword_rest: ∅ │ │ │ │ │ │ ├── keyword_rest: ∅
│ │ │ │ │ │ └── block: ∅ │ │ │ │ │ │ └── block: ∅
│ │ │ │ │ ├── body: │ │ │ │ │ ├── body:
│ │ │ │ │ │ @ StatementsNode (location: (184,30)-(184,33)) │ │ │ │ │ │ @ StatementsNode (location: (181,30)-(181,33))
│ │ │ │ │ │ └── body: (length: 1) │ │ │ │ │ │ └── body: (length: 1)
│ │ │ │ │ │ └── @ LocalVariableReadNode (location: (184,30)-(184,33)) │ │ │ │ │ │ └── @ LocalVariableReadNode (location: (181,30)-(181,33))
│ │ │ │ │ │ ├── name: :bar │ │ │ │ │ │ ├── name: :bar
│ │ │ │ │ │ └── depth: 0 │ │ │ │ │ │ └── depth: 0
│ │ │ │ │ ├── locals: [:bar] │ │ │ │ │ ├── locals: [:bar]
│ │ │ │ │ ├── locals_body_index: 1 │ │ │ │ │ ├── locals_body_index: 1
│ │ │ │ │ ├── def_keyword_loc: (184,15)-(184,18) = "def" │ │ │ │ │ ├── def_keyword_loc: (181,15)-(181,18) = "def"
│ │ │ │ │ ├── operator_loc: ∅ │ │ │ │ │ ├── operator_loc: ∅
│ │ │ │ │ ├── lparen_loc: (184,22)-(184,23) = "(" │ │ │ │ │ ├── lparen_loc: (181,22)-(181,23) = "("
│ │ │ │ │ ├── rparen_loc: (184,26)-(184,27) = ")" │ │ │ │ │ ├── rparen_loc: (181,26)-(181,27) = ")"
│ │ │ │ │ ├── equal_loc: (184,28)-(184,29) = "=" │ │ │ │ │ ├── equal_loc: (181,28)-(181,29) = "="
│ │ │ │ │ └── end_keyword_loc: ∅ │ │ │ │ │ └── end_keyword_loc: ∅
│ │ │ │ └── @ IntegerNode (location: (184,35)-(184,36)) │ │ │ │ └── @ IntegerNode (location: (181,35)-(181,36))
│ │ │ │ └── flags: decimal │ │ │ │ └── flags: decimal
│ │ │ ├── opening_loc: (184,14)-(184,15) = "(" │ │ │ ├── opening_loc: (181,14)-(181,15) = "("
│ │ │ └── closing_loc: (184,36)-(184,37) = ")" │ │ │ └── closing_loc: (181,36)-(181,37) = ")"
│ │ ├── rest: ∅ │ │ ├── rest: ∅
│ │ ├── posts: (length: 0) │ │ ├── posts: (length: 0)
│ │ ├── keywords: (length: 0) │ │ ├── keywords: (length: 0)
│ │ ├── keyword_rest: ∅ │ │ ├── keyword_rest: ∅
│ │ └── block: ∅ │ │ └── block: ∅
│ ├── body: │ ├── body:
│ │ @ StatementsNode (location: (184,41)-(184,42)) │ │ @ StatementsNode (location: (181,41)-(181,42))
│ │ └── body: (length: 1) │ │ └── body: (length: 1)
│ │ └── @ IntegerNode (location: (184,41)-(184,42)) │ │ └── @ IntegerNode (location: (181,41)-(181,42))
│ │ └── flags: decimal │ │ └── flags: decimal
│ ├── locals: [:bar] │ ├── locals: [:bar]
│ ├── locals_body_index: 1 │ ├── locals_body_index: 1
│ ├── def_keyword_loc: (184,0)-(184,3) = "def" │ ├── def_keyword_loc: (181,0)-(181,3) = "def"
│ ├── operator_loc: ∅ │ ├── operator_loc: ∅
│ ├── lparen_loc: (184,7)-(184,8) = "(" │ ├── lparen_loc: (181,7)-(181,8) = "("
│ ├── rparen_loc: (184,37)-(184,38) = ")" │ ├── rparen_loc: (181,37)-(181,38) = ")"
│ ├── equal_loc: (184,39)-(184,40) = "=" │ ├── equal_loc: (181,39)-(181,40) = "="
│ └── end_keyword_loc: ∅ │ └── end_keyword_loc: ∅
└── @ DefNode (location: (186,0)-(186,37)) └── @ DefNode (location: (183,0)-(183,37))
├── name: :foo ├── name: :foo
├── name_loc: (186,21)-(186,24) = "foo" ├── name_loc: (183,21)-(183,24) = "foo"
├── receiver: ├── receiver:
│ @ ParenthesesNode (location: (186,4)-(186,20)) │ @ ParenthesesNode (location: (183,4)-(183,20))
│ ├── body: │ ├── body:
│ │ @ ClassNode (location: (186,5)-(186,19)) │ │ @ ClassNode (location: (183,5)-(183,19))
│ │ ├── locals: [] │ │ ├── locals: []
│ │ ├── class_keyword_loc: (186,5)-(186,10) = "class" │ │ ├── class_keyword_loc: (183,5)-(183,10) = "class"
│ │ ├── constant_path: │ │ ├── constant_path:
│ │ │ @ ConstantReadNode (location: (186,11)-(186,14)) │ │ │ @ ConstantReadNode (location: (183,11)-(183,14))
│ │ │ └── name: :Foo │ │ │ └── name: :Foo
│ │ ├── inheritance_operator_loc: ∅ │ │ ├── inheritance_operator_loc: ∅
│ │ ├── superclass: ∅ │ │ ├── superclass: ∅
│ │ ├── body: ∅ │ │ ├── body: ∅
│ │ ├── end_keyword_loc: (186,16)-(186,19) = "end" │ │ ├── end_keyword_loc: (183,16)-(183,19) = "end"
│ │ └── name: :Foo │ │ └── name: :Foo
│ ├── opening_loc: (186,4)-(186,5) = "(" │ ├── opening_loc: (183,4)-(183,5) = "("
│ └── closing_loc: (186,19)-(186,20) = ")" │ └── closing_loc: (183,19)-(183,20) = ")"
├── parameters: ├── parameters:
│ @ ParametersNode (location: (186,25)-(186,32)) │ @ ParametersNode (location: (183,25)-(183,32))
│ ├── requireds: (length: 0) │ ├── requireds: (length: 0)
│ ├── optionals: (length: 1) │ ├── optionals: (length: 1)
│ │ └── @ OptionalParameterNode (location: (186,25)-(186,32)) │ │ └── @ OptionalParameterNode (location: (183,25)-(183,32))
│ │ ├── flags: ∅
│ │ ├── name: :bar │ │ ├── name: :bar
│ │ ├── name_loc: (186,25)-(186,28) = "bar" │ │ ├── name_loc: (183,25)-(183,28) = "bar"
│ │ ├── operator_loc: (186,29)-(186,30) = "=" │ │ ├── operator_loc: (183,29)-(183,30) = "="
│ │ └── value: │ │ └── value:
│ │ @ IntegerNode (location: (186,31)-(186,32)) │ │ @ IntegerNode (location: (183,31)-(183,32))
│ │ └── flags: decimal │ │ └── flags: decimal
│ ├── rest: ∅ │ ├── rest: ∅
│ ├── posts: (length: 0) │ ├── posts: (length: 0)
@ -2058,15 +2074,15 @@
│ ├── keyword_rest: ∅ │ ├── keyword_rest: ∅
│ └── block: ∅ │ └── block: ∅
├── body: ├── body:
│ @ StatementsNode (location: (186,36)-(186,37)) │ @ StatementsNode (location: (183,36)-(183,37))
│ └── body: (length: 1) │ └── body: (length: 1)
│ └── @ IntegerNode (location: (186,36)-(186,37)) │ └── @ IntegerNode (location: (183,36)-(183,37))
│ └── flags: decimal │ └── flags: decimal
├── locals: [:bar] ├── locals: [:bar]
├── locals_body_index: 1 ├── locals_body_index: 1
├── def_keyword_loc: (186,0)-(186,3) = "def" ├── def_keyword_loc: (183,0)-(183,3) = "def"
├── operator_loc: (186,20)-(186,21) = "." ├── operator_loc: (183,20)-(183,21) = "."
├── lparen_loc: (186,24)-(186,25) = "(" ├── lparen_loc: (183,24)-(183,25) = "("
├── rparen_loc: (186,32)-(186,33) = ")" ├── rparen_loc: (183,32)-(183,33) = ")"
├── equal_loc: (186,34)-(186,35) = "=" ├── equal_loc: (183,34)-(183,35) = "="
└── end_keyword_loc: ∅ └── end_keyword_loc: ∅

View File

@ -135,6 +135,7 @@
│ │ ├── keywords: (length: 0) │ │ ├── keywords: (length: 0)
│ │ ├── keyword_rest: │ │ ├── keyword_rest:
│ │ │ @ KeywordRestParameterNode (location: (27,6)-(27,9)) │ │ │ @ KeywordRestParameterNode (location: (27,6)-(27,9))
│ │ │ ├── flags: ∅
│ │ │ ├── name: :b │ │ │ ├── name: :b
│ │ │ ├── name_loc: (27,8)-(27,9) = "b" │ │ │ ├── name_loc: (27,8)-(27,9) = "b"
│ │ │ └── operator_loc: (27,6)-(27,8) = "**" │ │ │ └── operator_loc: (27,6)-(27,8) = "**"
@ -170,6 +171,7 @@
│ │ @ ParametersNode (location: (33,6)-(33,7)) │ │ @ ParametersNode (location: (33,6)-(33,7))
│ │ ├── requireds: (length: 1) │ │ ├── requireds: (length: 1)
│ │ │ └── @ RequiredParameterNode (location: (33,6)-(33,7)) │ │ │ └── @ RequiredParameterNode (location: (33,6)-(33,7))
│ │ │ ├── flags: ∅
│ │ │ └── name: :b │ │ │ └── name: :b
│ │ ├── optionals: (length: 0) │ │ ├── optionals: (length: 0)
│ │ ├── rest: ∅ │ │ ├── rest: ∅

View File

@ -15,6 +15,7 @@
│ │ │ @ ParametersNode (location: (1,4)-(1,5)) │ │ │ @ ParametersNode (location: (1,4)-(1,5))
│ │ │ ├── requireds: (length: 1) │ │ │ ├── requireds: (length: 1)
│ │ │ │ └── @ RequiredParameterNode (location: (1,4)-(1,5)) │ │ │ │ └── @ RequiredParameterNode (location: (1,4)-(1,5))
│ │ │ │ ├── flags: ∅
│ │ │ │ └── name: :a │ │ │ │ └── name: :a
│ │ │ ├── optionals: (length: 0) │ │ │ ├── optionals: (length: 0)
│ │ │ ├── rest: ∅ │ │ │ ├── rest: ∅
@ -24,10 +25,13 @@
│ │ │ └── block: ∅ │ │ │ └── block: ∅
│ │ ├── locals: (length: 3) │ │ ├── locals: (length: 3)
│ │ │ ├── @ BlockLocalVariableNode (location: (1,7)-(1,8)) │ │ │ ├── @ BlockLocalVariableNode (location: (1,7)-(1,8))
│ │ │ │ ├── flags: ∅
│ │ │ │ └── name: :b │ │ │ │ └── name: :b
│ │ │ ├── @ BlockLocalVariableNode (location: (1,10)-(1,11)) │ │ │ ├── @ BlockLocalVariableNode (location: (1,10)-(1,11))
│ │ │ │ ├── flags: ∅
│ │ │ │ └── name: :c │ │ │ │ └── name: :c
│ │ │ └── @ BlockLocalVariableNode (location: (1,13)-(1,14)) │ │ │ └── @ BlockLocalVariableNode (location: (1,13)-(1,14))
│ │ │ ├── flags: ∅
│ │ │ └── name: :d │ │ │ └── name: :d
│ │ ├── opening_loc: (1,3)-(1,4) = "(" │ │ ├── opening_loc: (1,3)-(1,4) = "("
│ │ └── closing_loc: (1,14)-(1,15) = ")" │ │ └── closing_loc: (1,14)-(1,15) = ")"
@ -138,9 +142,11 @@
│ │ │ @ ParametersNode (location: (17,3)-(17,23)) │ │ │ @ ParametersNode (location: (17,3)-(17,23))
│ │ │ ├── requireds: (length: 1) │ │ │ ├── requireds: (length: 1)
│ │ │ │ └── @ RequiredParameterNode (location: (17,3)-(17,4)) │ │ │ │ └── @ RequiredParameterNode (location: (17,3)-(17,4))
│ │ │ │ ├── flags: ∅
│ │ │ │ └── name: :a │ │ │ │ └── name: :a
│ │ │ ├── optionals: (length: 1) │ │ │ ├── optionals: (length: 1)
│ │ │ │ └── @ OptionalParameterNode (location: (17,6)-(17,11)) │ │ │ │ └── @ OptionalParameterNode (location: (17,6)-(17,11))
│ │ │ │ ├── flags: ∅
│ │ │ │ ├── name: :b │ │ │ │ ├── name: :b
│ │ │ │ ├── name_loc: (17,6)-(17,7) = "b" │ │ │ │ ├── name_loc: (17,6)-(17,7) = "b"
│ │ │ │ ├── operator_loc: (17,8)-(17,9) = "=" │ │ │ │ ├── operator_loc: (17,8)-(17,9) = "="
@ -151,14 +157,17 @@
│ │ │ ├── posts: (length: 0) │ │ │ ├── posts: (length: 0)
│ │ │ ├── keywords: (length: 2) │ │ │ ├── keywords: (length: 2)
│ │ │ │ ├── @ RequiredKeywordParameterNode (location: (17,13)-(17,15)) │ │ │ │ ├── @ RequiredKeywordParameterNode (location: (17,13)-(17,15))
│ │ │ │ │ ├── flags: ∅
│ │ │ │ │ ├── name: :c │ │ │ │ │ ├── name: :c
│ │ │ │ │ └── name_loc: (17,13)-(17,15) = "c:" │ │ │ │ │ └── name_loc: (17,13)-(17,15) = "c:"
│ │ │ │ └── @ RequiredKeywordParameterNode (location: (17,17)-(17,19)) │ │ │ │ └── @ RequiredKeywordParameterNode (location: (17,17)-(17,19))
│ │ │ │ ├── flags: ∅
│ │ │ │ ├── name: :d │ │ │ │ ├── name: :d
│ │ │ │ └── name_loc: (17,17)-(17,19) = "d:" │ │ │ │ └── name_loc: (17,17)-(17,19) = "d:"
│ │ │ ├── keyword_rest: ∅ │ │ │ ├── keyword_rest: ∅
│ │ │ └── block: │ │ │ └── block:
│ │ │ @ BlockParameterNode (location: (17,21)-(17,23)) │ │ │ @ BlockParameterNode (location: (17,21)-(17,23))
│ │ │ ├── flags: ∅
│ │ │ ├── name: :e │ │ │ ├── name: :e
│ │ │ ├── name_loc: (17,22)-(17,23) = "e" │ │ │ ├── name_loc: (17,22)-(17,23) = "e"
│ │ │ └── operator_loc: (17,21)-(17,22) = "&" │ │ │ └── operator_loc: (17,21)-(17,22) = "&"
@ -183,9 +192,11 @@
│ │ │ @ ParametersNode (location: (19,4)-(19,33)) │ │ │ @ ParametersNode (location: (19,4)-(19,33))
│ │ │ ├── requireds: (length: 1) │ │ │ ├── requireds: (length: 1)
│ │ │ │ └── @ RequiredParameterNode (location: (19,4)-(19,5)) │ │ │ │ └── @ RequiredParameterNode (location: (19,4)-(19,5))
│ │ │ │ ├── flags: ∅
│ │ │ │ └── name: :a │ │ │ │ └── name: :a
│ │ │ ├── optionals: (length: 1) │ │ │ ├── optionals: (length: 1)
│ │ │ │ └── @ OptionalParameterNode (location: (19,7)-(19,12)) │ │ │ │ └── @ OptionalParameterNode (location: (19,7)-(19,12))
│ │ │ │ ├── flags: ∅
│ │ │ │ ├── name: :b │ │ │ │ ├── name: :b
│ │ │ │ ├── name_loc: (19,7)-(19,8) = "b" │ │ │ │ ├── name_loc: (19,7)-(19,8) = "b"
│ │ │ │ ├── operator_loc: (19,9)-(19,10) = "=" │ │ │ │ ├── operator_loc: (19,9)-(19,10) = "="
@ -194,24 +205,29 @@
│ │ │ │ └── flags: decimal │ │ │ │ └── flags: decimal
│ │ │ ├── rest: │ │ │ ├── rest:
│ │ │ │ @ RestParameterNode (location: (19,14)-(19,16)) │ │ │ │ @ RestParameterNode (location: (19,14)-(19,16))
│ │ │ │ ├── flags: ∅
│ │ │ │ ├── name: :c │ │ │ │ ├── name: :c
│ │ │ │ ├── name_loc: (19,15)-(19,16) = "c" │ │ │ │ ├── name_loc: (19,15)-(19,16) = "c"
│ │ │ │ └── operator_loc: (19,14)-(19,15) = "*" │ │ │ │ └── operator_loc: (19,14)-(19,15) = "*"
│ │ │ ├── posts: (length: 0) │ │ │ ├── posts: (length: 0)
│ │ │ ├── keywords: (length: 2) │ │ │ ├── keywords: (length: 2)
│ │ │ │ ├── @ RequiredKeywordParameterNode (location: (19,18)-(19,20)) │ │ │ │ ├── @ RequiredKeywordParameterNode (location: (19,18)-(19,20))
│ │ │ │ │ ├── flags: ∅
│ │ │ │ │ ├── name: :d │ │ │ │ │ ├── name: :d
│ │ │ │ │ └── name_loc: (19,18)-(19,20) = "d:" │ │ │ │ │ └── name_loc: (19,18)-(19,20) = "d:"
│ │ │ │ └── @ RequiredKeywordParameterNode (location: (19,22)-(19,24)) │ │ │ │ └── @ RequiredKeywordParameterNode (location: (19,22)-(19,24))
│ │ │ │ ├── flags: ∅
│ │ │ │ ├── name: :e │ │ │ │ ├── name: :e
│ │ │ │ └── name_loc: (19,22)-(19,24) = "e:" │ │ │ │ └── name_loc: (19,22)-(19,24) = "e:"
│ │ │ ├── keyword_rest: │ │ │ ├── keyword_rest:
│ │ │ │ @ KeywordRestParameterNode (location: (19,26)-(19,29)) │ │ │ │ @ KeywordRestParameterNode (location: (19,26)-(19,29))
│ │ │ │ ├── flags: ∅
│ │ │ │ ├── name: :f │ │ │ │ ├── name: :f
│ │ │ │ ├── name_loc: (19,28)-(19,29) = "f" │ │ │ │ ├── name_loc: (19,28)-(19,29) = "f"
│ │ │ │ └── operator_loc: (19,26)-(19,28) = "**" │ │ │ │ └── operator_loc: (19,26)-(19,28) = "**"
│ │ │ └── block: │ │ │ └── block:
│ │ │ @ BlockParameterNode (location: (19,31)-(19,33)) │ │ │ @ BlockParameterNode (location: (19,31)-(19,33))
│ │ │ ├── flags: ∅
│ │ │ ├── name: :g │ │ │ ├── name: :g
│ │ │ ├── name_loc: (19,32)-(19,33) = "g" │ │ │ ├── name_loc: (19,32)-(19,33) = "g"
│ │ │ └── operator_loc: (19,31)-(19,32) = "&" │ │ │ └── operator_loc: (19,31)-(19,32) = "&"
@ -236,9 +252,11 @@
│ │ │ @ ParametersNode (location: (21,4)-(21,33)) │ │ │ @ ParametersNode (location: (21,4)-(21,33))
│ │ │ ├── requireds: (length: 1) │ │ │ ├── requireds: (length: 1)
│ │ │ │ └── @ RequiredParameterNode (location: (21,4)-(21,5)) │ │ │ │ └── @ RequiredParameterNode (location: (21,4)-(21,5))
│ │ │ │ ├── flags: ∅
│ │ │ │ └── name: :a │ │ │ │ └── name: :a
│ │ │ ├── optionals: (length: 1) │ │ │ ├── optionals: (length: 1)
│ │ │ │ └── @ OptionalParameterNode (location: (21,7)-(21,12)) │ │ │ │ └── @ OptionalParameterNode (location: (21,7)-(21,12))
│ │ │ │ ├── flags: ∅
│ │ │ │ ├── name: :b │ │ │ │ ├── name: :b
│ │ │ │ ├── name_loc: (21,7)-(21,8) = "b" │ │ │ │ ├── name_loc: (21,7)-(21,8) = "b"
│ │ │ │ ├── operator_loc: (21,9)-(21,10) = "=" │ │ │ │ ├── operator_loc: (21,9)-(21,10) = "="
@ -247,24 +265,29 @@
│ │ │ │ └── flags: decimal │ │ │ │ └── flags: decimal
│ │ │ ├── rest: │ │ │ ├── rest:
│ │ │ │ @ RestParameterNode (location: (21,14)-(21,16)) │ │ │ │ @ RestParameterNode (location: (21,14)-(21,16))
│ │ │ │ ├── flags: ∅
│ │ │ │ ├── name: :c │ │ │ │ ├── name: :c
│ │ │ │ ├── name_loc: (21,15)-(21,16) = "c" │ │ │ │ ├── name_loc: (21,15)-(21,16) = "c"
│ │ │ │ └── operator_loc: (21,14)-(21,15) = "*" │ │ │ │ └── operator_loc: (21,14)-(21,15) = "*"
│ │ │ ├── posts: (length: 0) │ │ │ ├── posts: (length: 0)
│ │ │ ├── keywords: (length: 2) │ │ │ ├── keywords: (length: 2)
│ │ │ │ ├── @ RequiredKeywordParameterNode (location: (21,18)-(21,20)) │ │ │ │ ├── @ RequiredKeywordParameterNode (location: (21,18)-(21,20))
│ │ │ │ │ ├── flags: ∅
│ │ │ │ │ ├── name: :d │ │ │ │ │ ├── name: :d
│ │ │ │ │ └── name_loc: (21,18)-(21,20) = "d:" │ │ │ │ │ └── name_loc: (21,18)-(21,20) = "d:"
│ │ │ │ └── @ RequiredKeywordParameterNode (location: (21,22)-(21,24)) │ │ │ │ └── @ RequiredKeywordParameterNode (location: (21,22)-(21,24))
│ │ │ │ ├── flags: ∅
│ │ │ │ ├── name: :e │ │ │ │ ├── name: :e
│ │ │ │ └── name_loc: (21,22)-(21,24) = "e:" │ │ │ │ └── name_loc: (21,22)-(21,24) = "e:"
│ │ │ ├── keyword_rest: │ │ │ ├── keyword_rest:
│ │ │ │ @ KeywordRestParameterNode (location: (21,26)-(21,29)) │ │ │ │ @ KeywordRestParameterNode (location: (21,26)-(21,29))
│ │ │ │ ├── flags: ∅
│ │ │ │ ├── name: :f │ │ │ │ ├── name: :f
│ │ │ │ ├── name_loc: (21,28)-(21,29) = "f" │ │ │ │ ├── name_loc: (21,28)-(21,29) = "f"
│ │ │ │ └── operator_loc: (21,26)-(21,28) = "**" │ │ │ │ └── operator_loc: (21,26)-(21,28) = "**"
│ │ │ └── block: │ │ │ └── block:
│ │ │ @ BlockParameterNode (location: (21,31)-(21,33)) │ │ │ @ BlockParameterNode (location: (21,31)-(21,33))
│ │ │ ├── flags: ∅
│ │ │ ├── name: :g │ │ │ ├── name: :g
│ │ │ ├── name_loc: (21,32)-(21,33) = "g" │ │ │ ├── name_loc: (21,32)-(21,33) = "g"
│ │ │ └── operator_loc: (21,31)-(21,32) = "&" │ │ │ └── operator_loc: (21,31)-(21,32) = "&"
@ -289,6 +312,7 @@
│ │ │ @ ParametersNode (location: (25,4)-(25,5)) │ │ │ @ ParametersNode (location: (25,4)-(25,5))
│ │ │ ├── requireds: (length: 1) │ │ │ ├── requireds: (length: 1)
│ │ │ │ └── @ RequiredParameterNode (location: (25,4)-(25,5)) │ │ │ │ └── @ RequiredParameterNode (location: (25,4)-(25,5))
│ │ │ │ ├── flags: ∅
│ │ │ │ └── name: :a │ │ │ │ └── name: :a
│ │ │ ├── optionals: (length: 0) │ │ │ ├── optionals: (length: 0)
│ │ │ ├── rest: ∅ │ │ │ ├── rest: ∅
@ -314,6 +338,7 @@
│ │ │ @ ParametersNode (location: (25,12)-(25,13)) │ │ │ @ ParametersNode (location: (25,12)-(25,13))
│ │ │ ├── requireds: (length: 1) │ │ │ ├── requireds: (length: 1)
│ │ │ │ └── @ RequiredParameterNode (location: (25,12)-(25,13)) │ │ │ │ └── @ RequiredParameterNode (location: (25,12)-(25,13))
│ │ │ │ ├── flags: ∅
│ │ │ │ └── name: :b │ │ │ │ └── name: :b
│ │ │ ├── optionals: (length: 0) │ │ │ ├── optionals: (length: 0)
│ │ │ ├── rest: ∅ │ │ │ ├── rest: ∅
@ -360,8 +385,10 @@
│ │ │ └── @ MultiTargetNode (location: (27,4)-(27,10)) │ │ │ └── @ MultiTargetNode (location: (27,4)-(27,10))
│ │ │ ├── lefts: (length: 2) │ │ │ ├── lefts: (length: 2)
│ │ │ │ ├── @ RequiredParameterNode (location: (27,5)-(27,6)) │ │ │ │ ├── @ RequiredParameterNode (location: (27,5)-(27,6))
│ │ │ │ │ ├── flags: ∅
│ │ │ │ │ └── name: :a │ │ │ │ │ └── name: :a
│ │ │ │ └── @ RequiredParameterNode (location: (27,8)-(27,9)) │ │ │ │ └── @ RequiredParameterNode (location: (27,8)-(27,9))
│ │ │ │ ├── flags: ∅
│ │ │ │ └── name: :b │ │ │ │ └── name: :b
│ │ │ ├── rest: ∅ │ │ │ ├── rest: ∅
│ │ │ ├── rights: (length: 0) │ │ │ ├── rights: (length: 0)
@ -370,6 +397,7 @@
│ │ ├── optionals: (length: 0) │ │ ├── optionals: (length: 0)
│ │ ├── rest: │ │ ├── rest:
│ │ │ @ RestParameterNode (location: (27,12)-(27,14)) │ │ │ @ RestParameterNode (location: (27,12)-(27,14))
│ │ │ ├── flags: ∅
│ │ │ ├── name: :c │ │ │ ├── name: :c
│ │ │ ├── name_loc: (27,13)-(27,14) = "c" │ │ │ ├── name_loc: (27,13)-(27,14) = "c"
│ │ │ └── operator_loc: (27,12)-(27,13) = "*" │ │ │ └── operator_loc: (27,12)-(27,13) = "*"

View File

@ -0,0 +1,482 @@
@ ProgramNode (location: (1,0)-(38,3))
├── locals: []
└── statements:
@ StatementsNode (location: (1,0)-(38,3))
└── body: (length: 13)
├── @ DefNode (location: (1,0)-(2,3))
│ ├── name: :foo
│ ├── name_loc: (1,4)-(1,7) = "foo"
│ ├── receiver: ∅
│ ├── parameters:
│ │ @ ParametersNode (location: (1,8)-(1,12))
│ │ ├── requireds: (length: 2)
│ │ │ ├── @ RequiredParameterNode (location: (1,8)-(1,9))
│ │ │ │ ├── flags: ∅
│ │ │ │ └── name: :a
│ │ │ └── @ RequiredParameterNode (location: (1,11)-(1,12))
│ │ │ ├── flags: ∅
│ │ │ └── name: :_
│ │ ├── optionals: (length: 0)
│ │ ├── rest: ∅
│ │ ├── posts: (length: 0)
│ │ ├── keywords: (length: 0)
│ │ ├── keyword_rest: ∅
│ │ └── block: ∅
│ ├── body: ∅
│ ├── locals: [:a, :_]
│ ├── locals_body_index: 2
│ ├── def_keyword_loc: (1,0)-(1,3) = "def"
│ ├── operator_loc: ∅
│ ├── lparen_loc: (1,7)-(1,8) = "("
│ ├── rparen_loc: (1,12)-(1,13) = ")"
│ ├── equal_loc: ∅
│ └── end_keyword_loc: (2,0)-(2,3) = "end"
├── @ DefNode (location: (4,0)-(5,3))
│ ├── name: :foo
│ ├── name_loc: (4,4)-(4,7) = "foo"
│ ├── receiver: ∅
│ ├── parameters:
│ │ @ ParametersNode (location: (4,8)-(4,15))
│ │ ├── requireds: (length: 3)
│ │ │ ├── @ RequiredParameterNode (location: (4,8)-(4,9))
│ │ │ │ ├── flags: ∅
│ │ │ │ └── name: :a
│ │ │ ├── @ RequiredParameterNode (location: (4,11)-(4,12))
│ │ │ │ ├── flags: ∅
│ │ │ │ └── name: :_
│ │ │ └── @ RequiredParameterNode (location: (4,14)-(4,15))
│ │ │ ├── flags: repeated_parameter
│ │ │ └── name: :_
│ │ ├── optionals: (length: 0)
│ │ ├── rest: ∅
│ │ ├── posts: (length: 0)
│ │ ├── keywords: (length: 0)
│ │ ├── keyword_rest: ∅
│ │ └── block: ∅
│ ├── body: ∅
│ ├── locals: [:a, :_]
│ ├── locals_body_index: 2
│ ├── def_keyword_loc: (4,0)-(4,3) = "def"
│ ├── operator_loc: ∅
│ ├── lparen_loc: (4,7)-(4,8) = "("
│ ├── rparen_loc: (4,15)-(4,16) = ")"
│ ├── equal_loc: ∅
│ └── end_keyword_loc: (5,0)-(5,3) = "end"
├── @ DefNode (location: (7,0)-(8,3))
│ ├── name: :foo
│ ├── name_loc: (7,4)-(7,7) = "foo"
│ ├── receiver: ∅
│ ├── parameters:
│ │ @ ParametersNode (location: (7,8)-(7,19))
│ │ ├── requireds: (length: 4)
│ │ │ ├── @ RequiredParameterNode (location: (7,8)-(7,9))
│ │ │ │ ├── flags: ∅
│ │ │ │ └── name: :a
│ │ │ ├── @ RequiredParameterNode (location: (7,11)-(7,12))
│ │ │ │ ├── flags: ∅
│ │ │ │ └── name: :_
│ │ │ ├── @ RequiredParameterNode (location: (7,14)-(7,15))
│ │ │ │ ├── flags: repeated_parameter
│ │ │ │ └── name: :_
│ │ │ └── @ RequiredParameterNode (location: (7,17)-(7,19))
│ │ │ ├── flags: ∅
│ │ │ └── name: :_b
│ │ ├── optionals: (length: 0)
│ │ ├── rest: ∅
│ │ ├── posts: (length: 0)
│ │ ├── keywords: (length: 0)
│ │ ├── keyword_rest: ∅
│ │ └── block: ∅
│ ├── body: ∅
│ ├── locals: [:a, :_, :_b]
│ ├── locals_body_index: 3
│ ├── def_keyword_loc: (7,0)-(7,3) = "def"
│ ├── operator_loc: ∅
│ ├── lparen_loc: (7,7)-(7,8) = "("
│ ├── rparen_loc: (7,19)-(7,20) = ")"
│ ├── equal_loc: ∅
│ └── end_keyword_loc: (8,0)-(8,3) = "end"
├── @ DefNode (location: (10,0)-(11,3))
│ ├── name: :foo
│ ├── name_loc: (10,4)-(10,7) = "foo"
│ ├── receiver: ∅
│ ├── parameters:
│ │ @ ParametersNode (location: (10,8)-(10,23))
│ │ ├── requireds: (length: 5)
│ │ │ ├── @ RequiredParameterNode (location: (10,8)-(10,9))
│ │ │ │ ├── flags: ∅
│ │ │ │ └── name: :a
│ │ │ ├── @ RequiredParameterNode (location: (10,11)-(10,12))
│ │ │ │ ├── flags: ∅
│ │ │ │ └── name: :_
│ │ │ ├── @ RequiredParameterNode (location: (10,14)-(10,15))
│ │ │ │ ├── flags: repeated_parameter
│ │ │ │ └── name: :_
│ │ │ ├── @ RequiredParameterNode (location: (10,17)-(10,19))
│ │ │ │ ├── flags: ∅
│ │ │ │ └── name: :_b
│ │ │ └── @ RequiredParameterNode (location: (10,21)-(10,23))
│ │ │ ├── flags: repeated_parameter
│ │ │ └── name: :_b
│ │ ├── optionals: (length: 0)
│ │ ├── rest: ∅
│ │ ├── posts: (length: 0)
│ │ ├── keywords: (length: 0)
│ │ ├── keyword_rest: ∅
│ │ └── block: ∅
│ ├── body: ∅
│ ├── locals: [:a, :_, :_b]
│ ├── locals_body_index: 3
│ ├── def_keyword_loc: (10,0)-(10,3) = "def"
│ ├── operator_loc: ∅
│ ├── lparen_loc: (10,7)-(10,8) = "("
│ ├── rparen_loc: (10,23)-(10,24) = ")"
│ ├── equal_loc: ∅
│ └── end_keyword_loc: (11,0)-(11,3) = "end"
├── @ DefNode (location: (13,0)-(14,3))
│ ├── name: :foo
│ ├── name_loc: (13,4)-(13,7) = "foo"
│ ├── receiver: ∅
│ ├── parameters:
│ │ @ ParametersNode (location: (13,8)-(13,35))
│ │ ├── requireds: (length: 3)
│ │ │ ├── @ RequiredParameterNode (location: (13,8)-(13,9))
│ │ │ │ ├── flags: ∅
│ │ │ │ └── name: :a
│ │ │ ├── @ MultiTargetNode (location: (13,11)-(13,22))
│ │ │ │ ├── lefts: (length: 1)
│ │ │ │ │ └── @ RequiredParameterNode (location: (13,12)-(13,13))
│ │ │ │ │ ├── flags: ∅
│ │ │ │ │ └── name: :b
│ │ │ │ ├── rest:
│ │ │ │ │ @ SplatNode (location: (13,15)-(13,18))
│ │ │ │ │ ├── operator_loc: (13,15)-(13,16) = "*"
│ │ │ │ │ └── expression:
│ │ │ │ │ @ RequiredParameterNode (location: (13,16)-(13,18))
│ │ │ │ │ ├── flags: ∅
│ │ │ │ │ └── name: :_c
│ │ │ │ ├── rights: (length: 1)
│ │ │ │ │ └── @ RequiredParameterNode (location: (13,20)-(13,21))
│ │ │ │ │ ├── flags: ∅
│ │ │ │ │ └── name: :d
│ │ │ │ ├── lparen_loc: (13,11)-(13,12) = "("
│ │ │ │ └── rparen_loc: (13,21)-(13,22) = ")"
│ │ │ └── @ MultiTargetNode (location: (13,24)-(13,35))
│ │ │ ├── lefts: (length: 1)
│ │ │ │ └── @ RequiredParameterNode (location: (13,25)-(13,26))
│ │ │ │ ├── flags: ∅
│ │ │ │ └── name: :e
│ │ │ ├── rest:
│ │ │ │ @ SplatNode (location: (13,28)-(13,31))
│ │ │ │ ├── operator_loc: (13,28)-(13,29) = "*"
│ │ │ │ └── expression:
│ │ │ │ @ RequiredParameterNode (location: (13,29)-(13,31))
│ │ │ │ ├── flags: repeated_parameter
│ │ │ │ └── name: :_c
│ │ │ ├── rights: (length: 1)
│ │ │ │ └── @ RequiredParameterNode (location: (13,33)-(13,34))
│ │ │ │ ├── flags: ∅
│ │ │ │ └── name: :f
│ │ │ ├── lparen_loc: (13,24)-(13,25) = "("
│ │ │ └── rparen_loc: (13,34)-(13,35) = ")"
│ │ ├── optionals: (length: 0)
│ │ ├── rest: ∅
│ │ ├── posts: (length: 0)
│ │ ├── keywords: (length: 0)
│ │ ├── keyword_rest: ∅
│ │ └── block: ∅
│ ├── body: ∅
│ ├── locals: [:a, :b, :_c, :d, :e, :f]
│ ├── locals_body_index: 6
│ ├── def_keyword_loc: (13,0)-(13,3) = "def"
│ ├── operator_loc: ∅
│ ├── lparen_loc: (13,7)-(13,8) = "("
│ ├── rparen_loc: (13,35)-(13,36) = ")"
│ ├── equal_loc: ∅
│ └── end_keyword_loc: (14,0)-(14,3) = "end"
├── @ DefNode (location: (16,0)-(17,3))
│ ├── name: :foo
│ ├── name_loc: (16,4)-(16,7) = "foo"
│ ├── receiver: ∅
│ ├── parameters:
│ │ @ ParametersNode (location: (16,8)-(16,20))
│ │ ├── requireds: (length: 4)
│ │ │ ├── @ RequiredParameterNode (location: (16,8)-(16,10))
│ │ │ │ ├── flags: ∅
│ │ │ │ └── name: :_a
│ │ │ ├── @ RequiredParameterNode (location: (16,12)-(16,14))
│ │ │ │ ├── flags: repeated_parameter
│ │ │ │ └── name: :_a
│ │ │ ├── @ RequiredParameterNode (location: (16,16)-(16,17))
│ │ │ │ ├── flags: ∅
│ │ │ │ └── name: :b
│ │ │ └── @ RequiredParameterNode (location: (16,19)-(16,20))
│ │ │ ├── flags: ∅
│ │ │ └── name: :c
│ │ ├── optionals: (length: 0)
│ │ ├── rest: ∅
│ │ ├── posts: (length: 0)
│ │ ├── keywords: (length: 0)
│ │ ├── keyword_rest: ∅
│ │ └── block: ∅
│ ├── body: ∅
│ ├── locals: [:_a, :b, :c]
│ ├── locals_body_index: 3
│ ├── def_keyword_loc: (16,0)-(16,3) = "def"
│ ├── operator_loc: ∅
│ ├── lparen_loc: (16,7)-(16,8) = "("
│ ├── rparen_loc: (16,20)-(16,21) = ")"
│ ├── equal_loc: ∅
│ └── end_keyword_loc: (17,0)-(17,3) = "end"
├── @ DefNode (location: (19,0)-(20,3))
│ ├── name: :foo
│ ├── name_loc: (19,4)-(19,7) = "foo"
│ ├── receiver: ∅
│ ├── parameters:
│ │ @ ParametersNode (location: (19,8)-(19,32))
│ │ ├── requireds: (length: 2)
│ │ │ ├── @ MultiTargetNode (location: (19,8)-(19,19))
│ │ │ │ ├── lefts: (length: 1)
│ │ │ │ │ └── @ RequiredParameterNode (location: (19,9)-(19,10))
│ │ │ │ │ ├── flags: ∅
│ │ │ │ │ └── name: :a
│ │ │ │ ├── rest:
│ │ │ │ │ @ SplatNode (location: (19,12)-(19,15))
│ │ │ │ │ ├── operator_loc: (19,12)-(19,13) = "*"
│ │ │ │ │ └── expression:
│ │ │ │ │ @ RequiredParameterNode (location: (19,13)-(19,15))
│ │ │ │ │ ├── flags: ∅
│ │ │ │ │ └── name: :_b
│ │ │ │ ├── rights: (length: 1)
│ │ │ │ │ └── @ RequiredParameterNode (location: (19,17)-(19,18))
│ │ │ │ │ ├── flags: ∅
│ │ │ │ │ └── name: :c
│ │ │ │ ├── lparen_loc: (19,8)-(19,9) = "("
│ │ │ │ └── rparen_loc: (19,18)-(19,19) = ")"
│ │ │ └── @ MultiTargetNode (location: (19,21)-(19,32))
│ │ │ ├── lefts: (length: 1)
│ │ │ │ └── @ RequiredParameterNode (location: (19,22)-(19,23))
│ │ │ │ ├── flags: ∅
│ │ │ │ └── name: :d
│ │ │ ├── rest:
│ │ │ │ @ SplatNode (location: (19,25)-(19,28))
│ │ │ │ ├── operator_loc: (19,25)-(19,26) = "*"
│ │ │ │ └── expression:
│ │ │ │ @ RequiredParameterNode (location: (19,26)-(19,28))
│ │ │ │ ├── flags: repeated_parameter
│ │ │ │ └── name: :_b
│ │ │ ├── rights: (length: 1)
│ │ │ │ └── @ RequiredParameterNode (location: (19,30)-(19,31))
│ │ │ │ ├── flags: ∅
│ │ │ │ └── name: :e
│ │ │ ├── lparen_loc: (19,21)-(19,22) = "("
│ │ │ └── rparen_loc: (19,31)-(19,32) = ")"
│ │ ├── optionals: (length: 0)
│ │ ├── rest: ∅
│ │ ├── posts: (length: 0)
│ │ ├── keywords: (length: 0)
│ │ ├── keyword_rest: ∅
│ │ └── block: ∅
│ ├── body: ∅
│ ├── locals: [:a, :_b, :c, :d, :e]
│ ├── locals_body_index: 5
│ ├── def_keyword_loc: (19,0)-(19,3) = "def"
│ ├── operator_loc: ∅
│ ├── lparen_loc: (19,7)-(19,8) = "("
│ ├── rparen_loc: (19,32)-(19,33) = ")"
│ ├── equal_loc: ∅
│ └── end_keyword_loc: (20,0)-(20,3) = "end"
├── @ DefNode (location: (22,0)-(23,3))
│ ├── name: :foo
│ ├── name_loc: (22,4)-(22,7) = "foo"
│ ├── receiver: ∅
│ ├── parameters:
│ │ @ ParametersNode (location: (22,8)-(22,22))
│ │ ├── requireds: (length: 0)
│ │ ├── optionals: (length: 2)
│ │ │ ├── @ OptionalParameterNode (location: (22,8)-(22,14))
│ │ │ │ ├── flags: ∅
│ │ │ │ ├── name: :_a
│ │ │ │ ├── name_loc: (22,8)-(22,10) = "_a"
│ │ │ │ ├── operator_loc: (22,11)-(22,12) = "="
│ │ │ │ └── value:
│ │ │ │ @ IntegerNode (location: (22,13)-(22,14))
│ │ │ │ └── flags: decimal
│ │ │ └── @ OptionalParameterNode (location: (22,16)-(22,22))
│ │ │ ├── flags: repeated_parameter
│ │ │ ├── name: :_a
│ │ │ ├── name_loc: (22,16)-(22,18) = "_a"
│ │ │ ├── operator_loc: (22,19)-(22,20) = "="
│ │ │ └── value:
│ │ │ @ IntegerNode (location: (22,21)-(22,22))
│ │ │ └── flags: decimal
│ │ ├── rest: ∅
│ │ ├── posts: (length: 0)
│ │ ├── keywords: (length: 0)
│ │ ├── keyword_rest: ∅
│ │ └── block: ∅
│ ├── body: ∅
│ ├── locals: [:_a]
│ ├── locals_body_index: 1
│ ├── def_keyword_loc: (22,0)-(22,3) = "def"
│ ├── operator_loc: ∅
│ ├── lparen_loc: (22,7)-(22,8) = "("
│ ├── rparen_loc: (22,22)-(22,23) = ")"
│ ├── equal_loc: ∅
│ └── end_keyword_loc: (23,0)-(23,3) = "end"
├── @ DefNode (location: (25,0)-(26,3))
│ ├── name: :foo
│ ├── name_loc: (25,4)-(25,7) = "foo"
│ ├── receiver: ∅
│ ├── parameters:
│ │ @ ParametersNode (location: (25,8)-(25,16))
│ │ ├── requireds: (length: 0)
│ │ ├── optionals: (length: 0)
│ │ ├── rest: ∅
│ │ ├── posts: (length: 0)
│ │ ├── keywords: (length: 2)
│ │ │ ├── @ RequiredKeywordParameterNode (location: (25,8)-(25,11))
│ │ │ │ ├── flags: ∅
│ │ │ │ ├── name: :_a
│ │ │ │ └── name_loc: (25,8)-(25,11) = "_a:"
│ │ │ └── @ RequiredKeywordParameterNode (location: (25,13)-(25,16))
│ │ │ ├── flags: repeated_parameter
│ │ │ ├── name: :_a
│ │ │ └── name_loc: (25,13)-(25,16) = "_a:"
│ │ ├── keyword_rest: ∅
│ │ └── block: ∅
│ ├── body: ∅
│ ├── locals: [:_a]
│ ├── locals_body_index: 1
│ ├── def_keyword_loc: (25,0)-(25,3) = "def"
│ ├── operator_loc: ∅
│ ├── lparen_loc: (25,7)-(25,8) = "("
│ ├── rparen_loc: (25,16)-(25,17) = ")"
│ ├── equal_loc: ∅
│ └── end_keyword_loc: (26,0)-(26,3) = "end"
├── @ DefNode (location: (28,0)-(29,3))
│ ├── name: :foo
│ ├── name_loc: (28,4)-(28,7) = "foo"
│ ├── receiver: ∅
│ ├── parameters:
│ │ @ ParametersNode (location: (28,8)-(28,20))
│ │ ├── requireds: (length: 0)
│ │ ├── optionals: (length: 0)
│ │ ├── rest: ∅
│ │ ├── posts: (length: 0)
│ │ ├── keywords: (length: 2)
│ │ │ ├── @ OptionalKeywordParameterNode (location: (28,8)-(28,13))
│ │ │ │ ├── flags: ∅
│ │ │ │ ├── name: :_a
│ │ │ │ ├── name_loc: (28,8)-(28,11) = "_a:"
│ │ │ │ └── value:
│ │ │ │ @ IntegerNode (location: (28,12)-(28,13))
│ │ │ │ └── flags: decimal
│ │ │ └── @ OptionalKeywordParameterNode (location: (28,15)-(28,20))
│ │ │ ├── flags: repeated_parameter
│ │ │ ├── name: :_a
│ │ │ ├── name_loc: (28,15)-(28,18) = "_a:"
│ │ │ └── value:
│ │ │ @ IntegerNode (location: (28,19)-(28,20))
│ │ │ └── flags: decimal
│ │ ├── keyword_rest: ∅
│ │ └── block: ∅
│ ├── body: ∅
│ ├── locals: [:_a]
│ ├── locals_body_index: 1
│ ├── def_keyword_loc: (28,0)-(28,3) = "def"
│ ├── operator_loc: ∅
│ ├── lparen_loc: (28,7)-(28,8) = "("
│ ├── rparen_loc: (28,20)-(28,21) = ")"
│ ├── equal_loc: ∅
│ └── end_keyword_loc: (29,0)-(29,3) = "end"
├── @ DefNode (location: (31,0)-(32,3))
│ ├── name: :foo
│ ├── name_loc: (31,4)-(31,7) = "foo"
│ ├── receiver: ∅
│ ├── parameters:
│ │ @ ParametersNode (location: (31,8)-(31,16))
│ │ ├── requireds: (length: 1)
│ │ │ └── @ RequiredParameterNode (location: (31,8)-(31,10))
│ │ │ ├── flags: ∅
│ │ │ └── name: :_a
│ │ ├── optionals: (length: 0)
│ │ ├── rest: ∅
│ │ ├── posts: (length: 0)
│ │ ├── keywords: (length: 0)
│ │ ├── keyword_rest:
│ │ │ @ KeywordRestParameterNode (location: (31,12)-(31,16))
│ │ │ ├── flags: repeated_parameter
│ │ │ ├── name: :_a
│ │ │ ├── name_loc: (31,14)-(31,16) = "_a"
│ │ │ └── operator_loc: (31,12)-(31,14) = "**"
│ │ └── block: ∅
│ ├── body: ∅
│ ├── locals: [:_a]
│ ├── locals_body_index: 1
│ ├── def_keyword_loc: (31,0)-(31,3) = "def"
│ ├── operator_loc: ∅
│ ├── lparen_loc: (31,7)-(31,8) = "("
│ ├── rparen_loc: (31,16)-(31,17) = ")"
│ ├── equal_loc: ∅
│ └── end_keyword_loc: (32,0)-(32,3) = "end"
├── @ DefNode (location: (34,0)-(35,3))
│ ├── name: :foo
│ ├── name_loc: (34,4)-(34,7) = "foo"
│ ├── receiver: ∅
│ ├── parameters:
│ │ @ ParametersNode (location: (34,8)-(34,15))
│ │ ├── requireds: (length: 1)
│ │ │ └── @ RequiredParameterNode (location: (34,8)-(34,10))
│ │ │ ├── flags: ∅
│ │ │ └── name: :_a
│ │ ├── optionals: (length: 0)
│ │ ├── rest: ∅
│ │ ├── posts: (length: 0)
│ │ ├── keywords: (length: 0)
│ │ ├── keyword_rest: ∅
│ │ └── block:
│ │ @ BlockParameterNode (location: (34,12)-(34,15))
│ │ ├── flags: repeated_parameter
│ │ ├── name: :_a
│ │ ├── name_loc: (34,13)-(34,15) = "_a"
│ │ └── operator_loc: (34,12)-(34,13) = "&"
│ ├── body: ∅
│ ├── locals: [:_a]
│ ├── locals_body_index: 1
│ ├── def_keyword_loc: (34,0)-(34,3) = "def"
│ ├── operator_loc: ∅
│ ├── lparen_loc: (34,7)-(34,8) = "("
│ ├── rparen_loc: (34,15)-(34,16) = ")"
│ ├── equal_loc: ∅
│ └── end_keyword_loc: (35,0)-(35,3) = "end"
└── @ DefNode (location: (37,0)-(38,3))
├── name: :foo
├── name_loc: (37,4)-(37,7) = "foo"
├── receiver: ∅
├── parameters:
│ @ ParametersNode (location: (37,8)-(37,15))
│ ├── requireds: (length: 1)
│ │ └── @ RequiredParameterNode (location: (37,8)-(37,10))
│ │ ├── flags: ∅
│ │ └── name: :_a
│ ├── optionals: (length: 0)
│ ├── rest:
│ │ @ RestParameterNode (location: (37,12)-(37,15))
│ │ ├── flags: repeated_parameter
│ │ ├── name: :_a
│ │ ├── name_loc: (37,13)-(37,15) = "_a"
│ │ └── operator_loc: (37,12)-(37,13) = "*"
│ ├── posts: (length: 0)
│ ├── keywords: (length: 0)
│ ├── keyword_rest: ∅
│ └── block: ∅
├── body: ∅
├── locals: [:_a]
├── locals_body_index: 1
├── def_keyword_loc: (37,0)-(37,3) = "def"
├── operator_loc: ∅
├── lparen_loc: (37,7)-(37,8) = "("
├── rparen_loc: (37,15)-(37,16) = ")"
├── equal_loc: ∅
└── end_keyword_loc: (38,0)-(38,3) = "end"

View File

@ -170,6 +170,7 @@
│ │ │ @ ParametersNode (location: (18,8)-(18,9)) │ │ │ @ ParametersNode (location: (18,8)-(18,9))
│ │ │ ├── requireds: (length: 1) │ │ │ ├── requireds: (length: 1)
│ │ │ │ └── @ RequiredParameterNode (location: (18,8)-(18,9)) │ │ │ │ └── @ RequiredParameterNode (location: (18,8)-(18,9))
│ │ │ │ ├── flags: ∅
│ │ │ │ └── name: :x │ │ │ │ └── name: :x
│ │ │ ├── optionals: (length: 0) │ │ │ ├── optionals: (length: 0)
│ │ │ ├── rest: ∅ │ │ │ ├── rest: ∅

View File

@ -134,8 +134,10 @@
│ │ │ @ ParametersNode (location: (52,13)-(53,9)) │ │ │ @ ParametersNode (location: (52,13)-(53,9))
│ │ │ ├── requireds: (length: 2) │ │ │ ├── requireds: (length: 2)
│ │ │ │ ├── @ RequiredParameterNode (location: (52,13)-(52,14)) │ │ │ │ ├── @ RequiredParameterNode (location: (52,13)-(52,14))
│ │ │ │ │ ├── flags: ∅
│ │ │ │ │ └── name: :a │ │ │ │ │ └── name: :a
│ │ │ │ └── @ RequiredParameterNode (location: (53,8)-(53,9)) │ │ │ │ └── @ RequiredParameterNode (location: (53,8)-(53,9))
│ │ │ │ ├── flags: ∅
│ │ │ │ └── name: :b │ │ │ │ └── name: :b
│ │ │ ├── optionals: (length: 0) │ │ │ ├── optionals: (length: 0)
│ │ │ ├── rest: ∅ │ │ │ ├── rest: ∅
@ -227,8 +229,10 @@
│ │ │ @ ParametersNode (location: (67,8)-(68,9)) │ │ │ @ ParametersNode (location: (67,8)-(68,9))
│ │ │ ├── requireds: (length: 2) │ │ │ ├── requireds: (length: 2)
│ │ │ │ ├── @ RequiredParameterNode (location: (67,8)-(67,9)) │ │ │ │ ├── @ RequiredParameterNode (location: (67,8)-(67,9))
│ │ │ │ │ ├── flags: ∅
│ │ │ │ │ └── name: :a │ │ │ │ │ └── name: :a
│ │ │ │ └── @ RequiredParameterNode (location: (68,8)-(68,9)) │ │ │ │ └── @ RequiredParameterNode (location: (68,8)-(68,9))
│ │ │ │ ├── flags: ∅
│ │ │ │ └── name: :b │ │ │ │ └── name: :b
│ │ │ ├── optionals: (length: 0) │ │ │ ├── optionals: (length: 0)
│ │ │ ├── rest: ∅ │ │ │ ├── rest: ∅

View File

@ -15,6 +15,7 @@
│ ├── posts: (length: 0) │ ├── posts: (length: 0)
│ ├── keywords: (length: 1) │ ├── keywords: (length: 1)
│ │ └── @ OptionalKeywordParameterNode (location: (1,6)-(1,10)) │ │ └── @ OptionalKeywordParameterNode (location: (1,6)-(1,10))
│ │ ├── flags: ∅
│ │ ├── name: :a │ │ ├── name: :a
│ │ ├── name_loc: (1,6)-(1,8) = "a:" │ │ ├── name_loc: (1,6)-(1,8) = "a:"
│ │ └── value: │ │ └── value:
@ -23,6 +24,7 @@
│ ├── keyword_rest: ∅ │ ├── keyword_rest: ∅
│ └── block: │ └── block:
│ @ BlockParameterNode (location: (1,12)-(1,14)) │ @ BlockParameterNode (location: (1,12)-(1,14))
│ ├── flags: ∅
│ ├── name: :b │ ├── name: :b
│ ├── name_loc: (1,13)-(1,14) = "b" │ ├── name_loc: (1,13)-(1,14) = "b"
│ └── operator_loc: (1,12)-(1,13) = "&" │ └── operator_loc: (1,12)-(1,13) = "&"

View File

@ -17,6 +17,7 @@
│ ├── keyword_rest: ∅ │ ├── keyword_rest: ∅
│ └── block: │ └── block:
│ @ BlockParameterNode (location: (1,6)-(1,7)) │ @ BlockParameterNode (location: (1,6)-(1,7))
│ ├── flags: ∅
│ ├── name: ∅ │ ├── name: ∅
│ ├── name_loc: ∅ │ ├── name_loc: ∅
│ └── operator_loc: (1,6)-(1,7) = "&" │ └── operator_loc: (1,6)-(1,7) = "&"

View File

@ -27,6 +27,7 @@
│ │ ├── keywords: (length: 0) │ │ ├── keywords: (length: 0)
│ │ ├── keyword_rest: │ │ ├── keyword_rest:
│ │ │ @ KeywordRestParameterNode (location: (1,5)-(1,8)) │ │ │ @ KeywordRestParameterNode (location: (1,5)-(1,8))
│ │ │ ├── flags: ∅
│ │ │ ├── name: :b │ │ │ ├── name: :b
│ │ │ ├── name_loc: (1,7)-(1,8) = "b" │ │ │ ├── name_loc: (1,7)-(1,8) = "b"
│ │ │ └── operator_loc: (1,5)-(1,7) = "**" │ │ │ └── operator_loc: (1,5)-(1,7) = "**"

View File

@ -22,9 +22,11 @@
│ │ @ ParametersNode (location: (1,5)-(1,18)) │ │ @ ParametersNode (location: (1,5)-(1,18))
│ │ ├── requireds: (length: 1) │ │ ├── requireds: (length: 1)
│ │ │ └── @ RequiredParameterNode (location: (1,5)-(1,6)) │ │ │ └── @ RequiredParameterNode (location: (1,5)-(1,6))
│ │ │ ├── flags: ∅
│ │ │ └── name: :b │ │ │ └── name: :b
│ │ ├── optionals: (length: 1) │ │ ├── optionals: (length: 1)
│ │ │ └── @ OptionalParameterNode (location: (1,8)-(1,11)) │ │ │ └── @ OptionalParameterNode (location: (1,8)-(1,11))
│ │ │ ├── flags: ∅
│ │ │ ├── name: :c │ │ │ ├── name: :c
│ │ │ ├── name_loc: (1,8)-(1,9) = "c" │ │ │ ├── name_loc: (1,8)-(1,9) = "c"
│ │ │ ├── operator_loc: (1,9)-(1,10) = "=" │ │ │ ├── operator_loc: (1,9)-(1,10) = "="
@ -34,11 +36,13 @@
│ │ ├── rest: ∅ │ │ ├── rest: ∅
│ │ ├── posts: (length: 1) │ │ ├── posts: (length: 1)
│ │ │ └── @ RequiredParameterNode (location: (1,13)-(1,14)) │ │ │ └── @ RequiredParameterNode (location: (1,13)-(1,14))
│ │ │ ├── flags: ∅
│ │ │ └── name: :d │ │ │ └── name: :d
│ │ ├── keywords: (length: 0) │ │ ├── keywords: (length: 0)
│ │ ├── keyword_rest: ∅ │ │ ├── keyword_rest: ∅
│ │ └── block: │ │ └── block:
│ │ @ BlockParameterNode (location: (1,16)-(1,18)) │ │ @ BlockParameterNode (location: (1,16)-(1,18))
│ │ ├── flags: ∅
│ │ ├── name: :e │ │ ├── name: :e
│ │ ├── name_loc: (1,17)-(1,18) = "e" │ │ ├── name_loc: (1,17)-(1,18) = "e"
│ │ └── operator_loc: (1,16)-(1,17) = "&" │ │ └── operator_loc: (1,16)-(1,17) = "&"

View File

@ -22,9 +22,11 @@
│ │ @ ParametersNode (location: (1,5)-(1,17)) │ │ @ ParametersNode (location: (1,5)-(1,17))
│ │ ├── requireds: (length: 1) │ │ ├── requireds: (length: 1)
│ │ │ └── @ RequiredParameterNode (location: (1,5)-(1,6)) │ │ │ └── @ RequiredParameterNode (location: (1,5)-(1,6))
│ │ │ ├── flags: ∅
│ │ │ └── name: :b │ │ │ └── name: :b
│ │ ├── optionals: (length: 1) │ │ ├── optionals: (length: 1)
│ │ │ └── @ OptionalParameterNode (location: (1,8)-(1,13)) │ │ │ └── @ OptionalParameterNode (location: (1,8)-(1,13))
│ │ │ ├── flags: ∅
│ │ │ ├── name: :c │ │ │ ├── name: :c
│ │ │ ├── name_loc: (1,8)-(1,9) = "c" │ │ │ ├── name_loc: (1,8)-(1,9) = "c"
│ │ │ ├── operator_loc: (1,10)-(1,11) = "=" │ │ │ ├── operator_loc: (1,10)-(1,11) = "="
@ -33,6 +35,7 @@
│ │ │ └── flags: decimal │ │ │ └── flags: decimal
│ │ ├── rest: │ │ ├── rest:
│ │ │ @ RestParameterNode (location: (1,15)-(1,17)) │ │ │ @ RestParameterNode (location: (1,15)-(1,17))
│ │ │ ├── flags: ∅
│ │ │ ├── name: :d │ │ │ ├── name: :d
│ │ │ ├── name_loc: (1,16)-(1,17) = "d" │ │ │ ├── name_loc: (1,16)-(1,17) = "d"
│ │ │ └── operator_loc: (1,15)-(1,16) = "*" │ │ │ └── operator_loc: (1,15)-(1,16) = "*"

View File

@ -22,9 +22,11 @@
│ │ @ ParametersNode (location: (1,5)-(1,22)) │ │ @ ParametersNode (location: (1,5)-(1,22))
│ │ ├── requireds: (length: 1) │ │ ├── requireds: (length: 1)
│ │ │ └── @ RequiredParameterNode (location: (1,5)-(1,6)) │ │ │ └── @ RequiredParameterNode (location: (1,5)-(1,6))
│ │ │ ├── flags: ∅
│ │ │ └── name: :b │ │ │ └── name: :b
│ │ ├── optionals: (length: 1) │ │ ├── optionals: (length: 1)
│ │ │ └── @ OptionalParameterNode (location: (1,8)-(1,11)) │ │ │ └── @ OptionalParameterNode (location: (1,8)-(1,11))
│ │ │ ├── flags: ∅
│ │ │ ├── name: :c │ │ │ ├── name: :c
│ │ │ ├── name_loc: (1,8)-(1,9) = "c" │ │ │ ├── name_loc: (1,8)-(1,9) = "c"
│ │ │ ├── operator_loc: (1,9)-(1,10) = "=" │ │ │ ├── operator_loc: (1,9)-(1,10) = "="
@ -33,16 +35,19 @@
│ │ │ └── flags: decimal │ │ │ └── flags: decimal
│ │ ├── rest: │ │ ├── rest:
│ │ │ @ RestParameterNode (location: (1,13)-(1,15)) │ │ │ @ RestParameterNode (location: (1,13)-(1,15))
│ │ │ ├── flags: ∅
│ │ │ ├── name: :d │ │ │ ├── name: :d
│ │ │ ├── name_loc: (1,14)-(1,15) = "d" │ │ │ ├── name_loc: (1,14)-(1,15) = "d"
│ │ │ └── operator_loc: (1,13)-(1,14) = "*" │ │ │ └── operator_loc: (1,13)-(1,14) = "*"
│ │ ├── posts: (length: 1) │ │ ├── posts: (length: 1)
│ │ │ └── @ RequiredParameterNode (location: (1,17)-(1,18)) │ │ │ └── @ RequiredParameterNode (location: (1,17)-(1,18))
│ │ │ ├── flags: ∅
│ │ │ └── name: :e │ │ │ └── name: :e
│ │ ├── keywords: (length: 0) │ │ ├── keywords: (length: 0)
│ │ ├── keyword_rest: ∅ │ │ ├── keyword_rest: ∅
│ │ └── block: │ │ └── block:
│ │ @ BlockParameterNode (location: (1,20)-(1,22)) │ │ @ BlockParameterNode (location: (1,20)-(1,22))
│ │ ├── flags: ∅
│ │ ├── name: :f │ │ ├── name: :f
│ │ ├── name_loc: (1,21)-(1,22) = "f" │ │ ├── name_loc: (1,21)-(1,22) = "f"
│ │ └── operator_loc: (1,20)-(1,21) = "&" │ │ └── operator_loc: (1,20)-(1,21) = "&"

View File

@ -23,6 +23,7 @@
│ │ ├── requireds: (length: 0) │ │ ├── requireds: (length: 0)
│ │ ├── optionals: (length: 1) │ │ ├── optionals: (length: 1)
│ │ │ └── @ OptionalParameterNode (location: (1,5)-(1,10)) │ │ │ └── @ OptionalParameterNode (location: (1,5)-(1,10))
│ │ │ ├── flags: ∅
│ │ │ ├── name: :b │ │ │ ├── name: :b
│ │ │ ├── name_loc: (1,5)-(1,6) = "b" │ │ │ ├── name_loc: (1,5)-(1,6) = "b"
│ │ │ ├── operator_loc: (1,7)-(1,8) = "=" │ │ │ ├── operator_loc: (1,7)-(1,8) = "="

View File

@ -22,6 +22,7 @@
│ │ @ ParametersNode (location: (1,5)-(1,6)) │ │ @ ParametersNode (location: (1,5)-(1,6))
│ │ ├── requireds: (length: 1) │ │ ├── requireds: (length: 1)
│ │ │ └── @ RequiredParameterNode (location: (1,5)-(1,6)) │ │ │ └── @ RequiredParameterNode (location: (1,5)-(1,6))
│ │ │ ├── flags: ∅
│ │ │ └── name: :b │ │ │ └── name: :b
│ │ ├── optionals: (length: 0) │ │ ├── optionals: (length: 0)
│ │ ├── rest: ∅ │ │ ├── rest: ∅
@ -31,6 +32,7 @@
│ │ └── block: ∅ │ │ └── block: ∅
│ ├── locals: (length: 1) │ ├── locals: (length: 1)
│ │ └── @ BlockLocalVariableNode (location: (1,8)-(1,9)) │ │ └── @ BlockLocalVariableNode (location: (1,8)-(1,9))
│ │ ├── flags: ∅
│ │ └── name: :c │ │ └── name: :c
│ ├── opening_loc: (1,4)-(1,5) = "|" │ ├── opening_loc: (1,4)-(1,5) = "|"
│ └── closing_loc: (1,9)-(1,10) = "|" │ └── closing_loc: (1,9)-(1,10) = "|"

View File

@ -22,6 +22,7 @@
│ │ @ ParametersNode (location: (1,4)-(1,5)) │ │ @ ParametersNode (location: (1,4)-(1,5))
│ │ ├── requireds: (length: 1) │ │ ├── requireds: (length: 1)
│ │ │ └── @ RequiredParameterNode (location: (1,4)-(1,5)) │ │ │ └── @ RequiredParameterNode (location: (1,4)-(1,5))
│ │ │ ├── flags: ∅
│ │ │ └── name: :b │ │ │ └── name: :b
│ │ ├── optionals: (length: 0) │ │ ├── optionals: (length: 0)
│ │ ├── rest: ∅ │ │ ├── rest: ∅
@ -31,8 +32,10 @@
│ │ └── block: ∅ │ │ └── block: ∅
│ ├── locals: (length: 2) │ ├── locals: (length: 2)
│ │ ├── @ BlockLocalVariableNode (location: (1,7)-(1,8)) │ │ ├── @ BlockLocalVariableNode (location: (1,7)-(1,8))
│ │ │ ├── flags: ∅
│ │ │ └── name: :c │ │ │ └── name: :c
│ │ └── @ BlockLocalVariableNode (location: (1,10)-(1,11)) │ │ └── @ BlockLocalVariableNode (location: (1,10)-(1,11))
│ │ ├── flags: ∅
│ │ └── name: :d │ │ └── name: :d
│ ├── opening_loc: (1,3)-(1,4) = "|" │ ├── opening_loc: (1,3)-(1,4) = "|"
│ └── closing_loc: (1,11)-(1,12) = "|" │ └── closing_loc: (1,11)-(1,12) = "|"

View File

@ -22,15 +22,18 @@
│ │ @ ParametersNode (location: (1,5)-(1,13)) │ │ @ ParametersNode (location: (1,5)-(1,13))
│ │ ├── requireds: (length: 1) │ │ ├── requireds: (length: 1)
│ │ │ └── @ RequiredParameterNode (location: (1,5)-(1,6)) │ │ │ └── @ RequiredParameterNode (location: (1,5)-(1,6))
│ │ │ ├── flags: ∅
│ │ │ └── name: :b │ │ │ └── name: :b
│ │ ├── optionals: (length: 0) │ │ ├── optionals: (length: 0)
│ │ ├── rest: │ │ ├── rest:
│ │ │ @ RestParameterNode (location: (1,8)-(1,10)) │ │ │ @ RestParameterNode (location: (1,8)-(1,10))
│ │ │ ├── flags: ∅
│ │ │ ├── name: :c │ │ │ ├── name: :c
│ │ │ ├── name_loc: (1,9)-(1,10) = "c" │ │ │ ├── name_loc: (1,9)-(1,10) = "c"
│ │ │ └── operator_loc: (1,8)-(1,9) = "*" │ │ │ └── operator_loc: (1,8)-(1,9) = "*"
│ │ ├── posts: (length: 1) │ │ ├── posts: (length: 1)
│ │ │ └── @ RequiredParameterNode (location: (1,12)-(1,13)) │ │ │ └── @ RequiredParameterNode (location: (1,12)-(1,13))
│ │ │ ├── flags: ∅
│ │ │ └── name: :d │ │ │ └── name: :d
│ │ ├── keywords: (length: 0) │ │ ├── keywords: (length: 0)
│ │ ├── keyword_rest: ∅ │ │ ├── keyword_rest: ∅

View File

@ -27,6 +27,7 @@
│ │ ├── keywords: (length: 0) │ │ ├── keywords: (length: 0)
│ │ ├── keyword_rest: │ │ ├── keyword_rest:
│ │ │ @ KeywordRestParameterNode (location: (1,5)-(1,13)) │ │ │ @ KeywordRestParameterNode (location: (1,5)-(1,13))
│ │ │ ├── flags: ∅
│ │ │ ├── name: :kwargs │ │ │ ├── name: :kwargs
│ │ │ ├── name_loc: (1,7)-(1,13) = "kwargs" │ │ │ ├── name_loc: (1,7)-(1,13) = "kwargs"
│ │ │ └── operator_loc: (1,5)-(1,7) = "**" │ │ │ └── operator_loc: (1,5)-(1,7) = "**"

View File

@ -22,9 +22,11 @@
│ │ @ ParametersNode (location: (1,5)-(1,14)) │ │ @ ParametersNode (location: (1,5)-(1,14))
│ │ ├── requireds: (length: 1) │ │ ├── requireds: (length: 1)
│ │ │ └── @ RequiredParameterNode (location: (1,5)-(1,6)) │ │ │ └── @ RequiredParameterNode (location: (1,5)-(1,6))
│ │ │ ├── flags: ∅
│ │ │ └── name: :a │ │ │ └── name: :a
│ │ ├── optionals: (length: 1) │ │ ├── optionals: (length: 1)
│ │ │ └── @ OptionalParameterNode (location: (1,8)-(1,14)) │ │ │ └── @ OptionalParameterNode (location: (1,8)-(1,14))
│ │ │ ├── flags: ∅
│ │ │ ├── name: :b │ │ │ ├── name: :b
│ │ │ ├── name_loc: (1,8)-(1,9) = "b" │ │ │ ├── name_loc: (1,8)-(1,9) = "b"
│ │ │ ├── operator_loc: (1,10)-(1,11) = "=" │ │ │ ├── operator_loc: (1,10)-(1,11) = "="

View File

@ -23,6 +23,7 @@
│ │ ├── requireds: (length: 0) │ │ ├── requireds: (length: 0)
│ │ ├── optionals: (length: 2) │ │ ├── optionals: (length: 2)
│ │ │ ├── @ OptionalParameterNode (location: (1,6)-(1,9)) │ │ │ ├── @ OptionalParameterNode (location: (1,6)-(1,9))
│ │ │ │ ├── flags: ∅
│ │ │ │ ├── name: :b │ │ │ │ ├── name: :b
│ │ │ │ ├── name_loc: (1,6)-(1,7) = "b" │ │ │ │ ├── name_loc: (1,6)-(1,7) = "b"
│ │ │ │ ├── operator_loc: (1,7)-(1,8) = "=" │ │ │ │ ├── operator_loc: (1,7)-(1,8) = "="
@ -30,6 +31,7 @@
│ │ │ │ @ IntegerNode (location: (1,8)-(1,9)) │ │ │ │ @ IntegerNode (location: (1,8)-(1,9))
│ │ │ │ └── flags: decimal │ │ │ │ └── flags: decimal
│ │ │ └── @ OptionalParameterNode (location: (1,11)-(1,14)) │ │ │ └── @ OptionalParameterNode (location: (1,11)-(1,14))
│ │ │ ├── flags: ∅
│ │ │ ├── name: :c │ │ │ ├── name: :c
│ │ │ ├── name_loc: (1,11)-(1,12) = "c" │ │ │ ├── name_loc: (1,11)-(1,12) = "c"
│ │ │ ├── operator_loc: (1,12)-(1,13) = "=" │ │ │ ├── operator_loc: (1,12)-(1,13) = "="

View File

@ -22,9 +22,11 @@
│ │ @ ParametersNode (location: (1,5)-(1,22)) │ │ @ ParametersNode (location: (1,5)-(1,22))
│ │ ├── requireds: (length: 1) │ │ ├── requireds: (length: 1)
│ │ │ └── @ RequiredParameterNode (location: (1,5)-(1,6)) │ │ │ └── @ RequiredParameterNode (location: (1,5)-(1,6))
│ │ │ ├── flags: ∅
│ │ │ └── name: :a │ │ │ └── name: :a
│ │ ├── optionals: (length: 2) │ │ ├── optionals: (length: 2)
│ │ │ ├── @ OptionalParameterNode (location: (1,8)-(1,14)) │ │ │ ├── @ OptionalParameterNode (location: (1,8)-(1,14))
│ │ │ │ ├── flags: ∅
│ │ │ │ ├── name: :b │ │ │ │ ├── name: :b
│ │ │ │ ├── name_loc: (1,8)-(1,9) = "b" │ │ │ │ ├── name_loc: (1,8)-(1,9) = "b"
│ │ │ │ ├── operator_loc: (1,10)-(1,11) = "=" │ │ │ │ ├── operator_loc: (1,10)-(1,11) = "="
@ -32,6 +34,7 @@
│ │ │ │ @ IntegerNode (location: (1,12)-(1,14)) │ │ │ │ @ IntegerNode (location: (1,12)-(1,14))
│ │ │ │ └── flags: decimal │ │ │ │ └── flags: decimal
│ │ │ └── @ OptionalParameterNode (location: (1,16)-(1,22)) │ │ │ └── @ OptionalParameterNode (location: (1,16)-(1,22))
│ │ │ ├── flags: ∅
│ │ │ ├── name: :c │ │ │ ├── name: :c
│ │ │ ├── name_loc: (1,16)-(1,17) = "c" │ │ │ ├── name_loc: (1,16)-(1,17) = "c"
│ │ │ ├── operator_loc: (1,18)-(1,19) = "=" │ │ │ ├── operator_loc: (1,18)-(1,19) = "="

View File

@ -22,9 +22,11 @@
│ │ @ ParametersNode (location: (1,5)-(1,26)) │ │ @ ParametersNode (location: (1,5)-(1,26))
│ │ ├── requireds: (length: 1) │ │ ├── requireds: (length: 1)
│ │ │ └── @ RequiredParameterNode (location: (1,5)-(1,6)) │ │ │ └── @ RequiredParameterNode (location: (1,5)-(1,6))
│ │ │ ├── flags: ∅
│ │ │ └── name: :a │ │ │ └── name: :a
│ │ ├── optionals: (length: 2) │ │ ├── optionals: (length: 2)
│ │ │ ├── @ OptionalParameterNode (location: (1,8)-(1,14)) │ │ │ ├── @ OptionalParameterNode (location: (1,8)-(1,14))
│ │ │ │ ├── flags: ∅
│ │ │ │ ├── name: :b │ │ │ │ ├── name: :b
│ │ │ │ ├── name_loc: (1,8)-(1,9) = "b" │ │ │ │ ├── name_loc: (1,8)-(1,9) = "b"
│ │ │ │ ├── operator_loc: (1,10)-(1,11) = "=" │ │ │ │ ├── operator_loc: (1,10)-(1,11) = "="
@ -32,6 +34,7 @@
│ │ │ │ @ IntegerNode (location: (1,12)-(1,14)) │ │ │ │ @ IntegerNode (location: (1,12)-(1,14))
│ │ │ │ └── flags: decimal │ │ │ │ └── flags: decimal
│ │ │ └── @ OptionalParameterNode (location: (1,16)-(1,22)) │ │ │ └── @ OptionalParameterNode (location: (1,16)-(1,22))
│ │ │ ├── flags: ∅
│ │ │ ├── name: :c │ │ │ ├── name: :c
│ │ │ ├── name_loc: (1,16)-(1,17) = "c" │ │ │ ├── name_loc: (1,16)-(1,17) = "c"
│ │ │ ├── operator_loc: (1,18)-(1,19) = "=" │ │ │ ├── operator_loc: (1,18)-(1,19) = "="
@ -44,6 +47,7 @@
│ │ ├── keyword_rest: ∅ │ │ ├── keyword_rest: ∅
│ │ └── block: │ │ └── block:
│ │ @ BlockParameterNode (location: (1,24)-(1,26)) │ │ @ BlockParameterNode (location: (1,24)-(1,26))
│ │ ├── flags: ∅
│ │ ├── name: :d │ │ ├── name: :d
│ │ ├── name_loc: (1,25)-(1,26) = "d" │ │ ├── name_loc: (1,25)-(1,26) = "d"
│ │ └── operator_loc: (1,24)-(1,25) = "&" │ │ └── operator_loc: (1,24)-(1,25) = "&"

View File

@ -40,6 +40,7 @@
│ │ │ @ ParametersNode (location: (1,18)-(1,21)) │ │ │ @ ParametersNode (location: (1,18)-(1,21))
│ │ │ ├── requireds: (length: 1) │ │ │ ├── requireds: (length: 1)
│ │ │ │ └── @ RequiredParameterNode (location: (1,18)-(1,21)) │ │ │ │ └── @ RequiredParameterNode (location: (1,18)-(1,21))
│ │ │ │ ├── flags: ∅
│ │ │ │ └── name: :bar │ │ │ │ └── name: :bar
│ │ │ ├── optionals: (length: 0) │ │ │ ├── optionals: (length: 0)
│ │ │ ├── rest: ∅ │ │ │ ├── rest: ∅

View File

@ -22,6 +22,7 @@
│ │ │ @ ParametersNode (location: (1,8)-(1,9)) │ │ │ @ ParametersNode (location: (1,8)-(1,9))
│ │ │ ├── requireds: (length: 1) │ │ │ ├── requireds: (length: 1)
│ │ │ │ └── @ RequiredParameterNode (location: (1,8)-(1,9)) │ │ │ │ └── @ RequiredParameterNode (location: (1,8)-(1,9))
│ │ │ │ ├── flags: ∅
│ │ │ │ └── name: :c │ │ │ │ └── name: :c
│ │ │ ├── optionals: (length: 0) │ │ │ ├── optionals: (length: 0)
│ │ │ ├── rest: ∅ │ │ │ ├── rest: ∅

View File

@ -74,6 +74,7 @@
│ │ @ ParametersNode (location: (1,23)-(1,24)) │ │ @ ParametersNode (location: (1,23)-(1,24))
│ │ ├── requireds: (length: 1) │ │ ├── requireds: (length: 1)
│ │ │ └── @ RequiredParameterNode (location: (1,23)-(1,24)) │ │ │ └── @ RequiredParameterNode (location: (1,23)-(1,24))
│ │ │ ├── flags: ∅
│ │ │ └── name: :f │ │ │ └── name: :f
│ │ ├── optionals: (length: 0) │ │ ├── optionals: (length: 0)
│ │ ├── rest: ∅ │ │ ├── rest: ∅

View File

@ -87,6 +87,7 @@
│ │ @ ParametersNode (location: (1,25)-(1,26)) │ │ @ ParametersNode (location: (1,25)-(1,26))
│ │ ├── requireds: (length: 1) │ │ ├── requireds: (length: 1)
│ │ │ └── @ RequiredParameterNode (location: (1,25)-(1,26)) │ │ │ └── @ RequiredParameterNode (location: (1,25)-(1,26))
│ │ │ ├── flags: ∅
│ │ │ └── name: :g │ │ │ └── name: :g
│ │ ├── optionals: (length: 0) │ │ ├── optionals: (length: 0)
│ │ ├── rest: ∅ │ │ ├── rest: ∅

View File

@ -29,6 +29,7 @@
│ │ │ │ └── expression: ∅ │ │ │ │ └── expression: ∅
│ │ │ ├── rights: (length: 1) │ │ │ ├── rights: (length: 1)
│ │ │ │ └── @ RequiredParameterNode (location: (1,9)-(1,10)) │ │ │ │ └── @ RequiredParameterNode (location: (1,9)-(1,10))
│ │ │ │ ├── flags: ∅
│ │ │ │ └── name: :a │ │ │ │ └── name: :a
│ │ │ ├── lparen_loc: (1,5)-(1,6) = "(" │ │ │ ├── lparen_loc: (1,5)-(1,6) = "("
│ │ │ └── rparen_loc: (1,10)-(1,11) = ")" │ │ │ └── rparen_loc: (1,10)-(1,11) = ")"

View File

@ -24,6 +24,7 @@
│ │ │ └── @ MultiTargetNode (location: (1,5)-(1,11)) │ │ │ └── @ MultiTargetNode (location: (1,5)-(1,11))
│ │ │ ├── lefts: (length: 1) │ │ │ ├── lefts: (length: 1)
│ │ │ │ └── @ RequiredParameterNode (location: (1,6)-(1,7)) │ │ │ │ └── @ RequiredParameterNode (location: (1,6)-(1,7))
│ │ │ │ ├── flags: ∅
│ │ │ │ └── name: :b │ │ │ │ └── name: :b
│ │ │ ├── rest: │ │ │ ├── rest:
│ │ │ │ @ SplatNode (location: (1,9)-(1,10)) │ │ │ │ @ SplatNode (location: (1,9)-(1,10))

View File

@ -24,15 +24,18 @@
│ │ │ └── @ MultiTargetNode (location: (1,5)-(1,15)) │ │ │ └── @ MultiTargetNode (location: (1,5)-(1,15))
│ │ │ ├── lefts: (length: 1) │ │ │ ├── lefts: (length: 1)
│ │ │ │ └── @ RequiredParameterNode (location: (1,6)-(1,7)) │ │ │ │ └── @ RequiredParameterNode (location: (1,6)-(1,7))
│ │ │ │ ├── flags: ∅
│ │ │ │ └── name: :a │ │ │ │ └── name: :a
│ │ │ ├── rest: │ │ │ ├── rest:
│ │ │ │ @ SplatNode (location: (1,9)-(1,11)) │ │ │ │ @ SplatNode (location: (1,9)-(1,11))
│ │ │ │ ├── operator_loc: (1,9)-(1,10) = "*" │ │ │ │ ├── operator_loc: (1,9)-(1,10) = "*"
│ │ │ │ └── expression: │ │ │ │ └── expression:
│ │ │ │ @ RequiredParameterNode (location: (1,10)-(1,11)) │ │ │ │ @ RequiredParameterNode (location: (1,10)-(1,11))
│ │ │ │ ├── flags: ∅
│ │ │ │ └── name: :b │ │ │ │ └── name: :b
│ │ │ ├── rights: (length: 1) │ │ │ ├── rights: (length: 1)
│ │ │ │ └── @ RequiredParameterNode (location: (1,13)-(1,14)) │ │ │ │ └── @ RequiredParameterNode (location: (1,13)-(1,14))
│ │ │ │ ├── flags: ∅
│ │ │ │ └── name: :c │ │ │ │ └── name: :c
│ │ │ ├── lparen_loc: (1,5)-(1,6) = "(" │ │ │ ├── lparen_loc: (1,5)-(1,6) = "("
│ │ │ └── rparen_loc: (1,14)-(1,15) = ")" │ │ │ └── rparen_loc: (1,14)-(1,15) = ")"

View File

@ -28,6 +28,7 @@
│ │ │ │ ├── operator_loc: (1,6)-(1,7) = "*" │ │ │ │ ├── operator_loc: (1,6)-(1,7) = "*"
│ │ │ │ └── expression: │ │ │ │ └── expression:
│ │ │ │ @ RequiredParameterNode (location: (1,7)-(1,8)) │ │ │ │ @ RequiredParameterNode (location: (1,7)-(1,8))
│ │ │ │ ├── flags: ∅
│ │ │ │ └── name: :a │ │ │ │ └── name: :a
│ │ │ ├── rights: (length: 0) │ │ │ ├── rights: (length: 0)
│ │ │ ├── lparen_loc: (1,5)-(1,6) = "(" │ │ │ ├── lparen_loc: (1,5)-(1,6) = "("

View File

@ -26,6 +26,7 @@
│ │ ├── posts: (length: 0) │ │ ├── posts: (length: 0)
│ │ ├── keywords: (length: 1) │ │ ├── keywords: (length: 1)
│ │ │ └── @ OptionalKeywordParameterNode (location: (1,8)-(1,12)) │ │ │ └── @ OptionalKeywordParameterNode (location: (1,8)-(1,12))
│ │ │ ├── flags: ∅
│ │ │ ├── name: :k │ │ │ ├── name: :k
│ │ │ ├── name_loc: (1,8)-(1,10) = "k:" │ │ │ ├── name_loc: (1,8)-(1,10) = "k:"
│ │ │ └── value: │ │ │ └── value:

View File

@ -26,6 +26,7 @@
│ │ ├── posts: (length: 0) │ │ ├── posts: (length: 0)
│ │ ├── keywords: (length: 1) │ │ ├── keywords: (length: 1)
│ │ │ └── @ RequiredKeywordParameterNode (location: (1,9)-(1,11)) │ │ │ └── @ RequiredKeywordParameterNode (location: (1,9)-(1,11))
│ │ │ ├── flags: ∅
│ │ │ ├── name: :k │ │ │ ├── name: :k
│ │ │ └── name_loc: (1,9)-(1,11) = "k:" │ │ │ └── name_loc: (1,9)-(1,11) = "k:"
│ │ ├── keyword_rest: ∅ │ │ ├── keyword_rest: ∅

View File

@ -26,6 +26,7 @@
│ │ ├── posts: (length: 0) │ │ ├── posts: (length: 0)
│ │ ├── keywords: (length: 1) │ │ ├── keywords: (length: 1)
│ │ │ └── @ OptionalKeywordParameterNode (location: (1,6)-(1,14)) │ │ │ └── @ OptionalKeywordParameterNode (location: (1,6)-(1,14))
│ │ │ ├── flags: ∅
│ │ │ ├── name: :kw │ │ │ ├── name: :kw
│ │ │ ├── name_loc: (1,6)-(1,9) = "kw:" │ │ │ ├── name_loc: (1,6)-(1,9) = "kw:"
│ │ │ └── value: │ │ │ └── value:

View File

@ -26,6 +26,7 @@
│ │ ├── posts: (length: 0) │ │ ├── posts: (length: 0)
│ │ ├── keywords: (length: 2) │ │ ├── keywords: (length: 2)
│ │ │ ├── @ OptionalKeywordParameterNode (location: (1,6)-(1,14)) │ │ │ ├── @ OptionalKeywordParameterNode (location: (1,6)-(1,14))
│ │ │ │ ├── flags: ∅
│ │ │ │ ├── name: :kw │ │ │ │ ├── name: :kw
│ │ │ │ ├── name_loc: (1,6)-(1,9) = "kw:" │ │ │ │ ├── name_loc: (1,6)-(1,9) = "kw:"
│ │ │ │ └── value: │ │ │ │ └── value:
@ -36,6 +37,7 @@
│ │ │ │ ├── closing_loc: ∅ │ │ │ │ ├── closing_loc: ∅
│ │ │ │ └── unescaped: "val" │ │ │ │ └── unescaped: "val"
│ │ │ └── @ OptionalKeywordParameterNode (location: (1,16)-(1,26)) │ │ │ └── @ OptionalKeywordParameterNode (location: (1,16)-(1,26))
│ │ │ ├── flags: ∅
│ │ │ ├── name: :kw2 │ │ │ ├── name: :kw2
│ │ │ ├── name_loc: (1,16)-(1,20) = "kw2:" │ │ │ ├── name_loc: (1,16)-(1,20) = "kw2:"
│ │ │ └── value: │ │ │ └── value:

View File

@ -40,6 +40,7 @@
│ │ │ @ ParametersNode (location: (1,17)-(1,20)) │ │ │ @ ParametersNode (location: (1,17)-(1,20))
│ │ │ ├── requireds: (length: 1) │ │ │ ├── requireds: (length: 1)
│ │ │ │ └── @ RequiredParameterNode (location: (1,17)-(1,20)) │ │ │ │ └── @ RequiredParameterNode (location: (1,17)-(1,20))
│ │ │ │ ├── flags: ∅
│ │ │ │ └── name: :bar │ │ │ │ └── name: :bar
│ │ │ ├── optionals: (length: 0) │ │ │ ├── optionals: (length: 0)
│ │ │ ├── rest: ∅ │ │ │ ├── rest: ∅

View File

@ -23,6 +23,7 @@
│ │ ├── requireds: (length: 0) │ │ ├── requireds: (length: 0)
│ │ ├── optionals: (length: 1) │ │ ├── optionals: (length: 1)
│ │ │ └── @ OptionalParameterNode (location: (1,5)-(1,8)) │ │ │ └── @ OptionalParameterNode (location: (1,5)-(1,8))
│ │ │ ├── flags: ∅
│ │ │ ├── name: :b │ │ │ ├── name: :b
│ │ │ ├── name_loc: (1,5)-(1,6) = "b" │ │ │ ├── name_loc: (1,5)-(1,6) = "b"
│ │ │ ├── operator_loc: (1,6)-(1,7) = "=" │ │ │ ├── operator_loc: (1,6)-(1,7) = "="
@ -32,6 +33,7 @@
│ │ ├── rest: ∅ │ │ ├── rest: ∅
│ │ ├── posts: (length: 1) │ │ ├── posts: (length: 1)
│ │ │ └── @ RequiredParameterNode (location: (1,10)-(1,11)) │ │ │ └── @ RequiredParameterNode (location: (1,10)-(1,11))
│ │ │ ├── flags: ∅
│ │ │ └── name: :c │ │ │ └── name: :c
│ │ ├── keywords: (length: 0) │ │ ├── keywords: (length: 0)
│ │ ├── keyword_rest: ∅ │ │ ├── keyword_rest: ∅

View File

@ -23,6 +23,7 @@
│ │ ├── requireds: (length: 0) │ │ ├── requireds: (length: 0)
│ │ ├── optionals: (length: 1) │ │ ├── optionals: (length: 1)
│ │ │ └── @ OptionalParameterNode (location: (1,5)-(1,10)) │ │ │ └── @ OptionalParameterNode (location: (1,5)-(1,10))
│ │ │ ├── flags: ∅
│ │ │ ├── name: :b │ │ │ ├── name: :b
│ │ │ ├── name_loc: (1,5)-(1,6) = "b" │ │ │ ├── name_loc: (1,5)-(1,6) = "b"
│ │ │ ├── operator_loc: (1,7)-(1,8) = "=" │ │ │ ├── operator_loc: (1,7)-(1,8) = "="
@ -31,6 +32,7 @@
│ │ │ └── flags: decimal │ │ │ └── flags: decimal
│ │ ├── rest: │ │ ├── rest:
│ │ │ @ RestParameterNode (location: (1,12)-(1,14)) │ │ │ @ RestParameterNode (location: (1,12)-(1,14))
│ │ │ ├── flags: ∅
│ │ │ ├── name: :c │ │ │ ├── name: :c
│ │ │ ├── name_loc: (1,13)-(1,14) = "c" │ │ │ ├── name_loc: (1,13)-(1,14) = "c"
│ │ │ └── operator_loc: (1,12)-(1,13) = "*" │ │ │ └── operator_loc: (1,12)-(1,13) = "*"

View File

@ -23,6 +23,7 @@
│ │ ├── requireds: (length: 0) │ │ ├── requireds: (length: 0)
│ │ ├── optionals: (length: 1) │ │ ├── optionals: (length: 1)
│ │ │ └── @ OptionalParameterNode (location: (1,5)-(1,8)) │ │ │ └── @ OptionalParameterNode (location: (1,5)-(1,8))
│ │ │ ├── flags: ∅
│ │ │ ├── name: :b │ │ │ ├── name: :b
│ │ │ ├── name_loc: (1,5)-(1,6) = "b" │ │ │ ├── name_loc: (1,5)-(1,6) = "b"
│ │ │ ├── operator_loc: (1,6)-(1,7) = "=" │ │ │ ├── operator_loc: (1,6)-(1,7) = "="
@ -31,16 +32,19 @@
│ │ │ └── flags: decimal │ │ │ └── flags: decimal
│ │ ├── rest: │ │ ├── rest:
│ │ │ @ RestParameterNode (location: (1,10)-(1,12)) │ │ │ @ RestParameterNode (location: (1,10)-(1,12))
│ │ │ ├── flags: ∅
│ │ │ ├── name: :c │ │ │ ├── name: :c
│ │ │ ├── name_loc: (1,11)-(1,12) = "c" │ │ │ ├── name_loc: (1,11)-(1,12) = "c"
│ │ │ └── operator_loc: (1,10)-(1,11) = "*" │ │ │ └── operator_loc: (1,10)-(1,11) = "*"
│ │ ├── posts: (length: 1) │ │ ├── posts: (length: 1)
│ │ │ └── @ RequiredParameterNode (location: (1,14)-(1,15)) │ │ │ └── @ RequiredParameterNode (location: (1,14)-(1,15))
│ │ │ ├── flags: ∅
│ │ │ └── name: :d │ │ │ └── name: :d
│ │ ├── keywords: (length: 0) │ │ ├── keywords: (length: 0)
│ │ ├── keyword_rest: ∅ │ │ ├── keyword_rest: ∅
│ │ └── block: │ │ └── block:
│ │ @ BlockParameterNode (location: (1,17)-(1,19)) │ │ @ BlockParameterNode (location: (1,17)-(1,19))
│ │ ├── flags: ∅
│ │ ├── name: :e │ │ ├── name: :e
│ │ ├── name_loc: (1,18)-(1,19) = "e" │ │ ├── name_loc: (1,18)-(1,19) = "e"
│ │ └── operator_loc: (1,17)-(1,18) = "&" │ │ └── operator_loc: (1,17)-(1,18) = "&"

View File

@ -23,6 +23,7 @@
│ │ ├── requireds: (length: 0) │ │ ├── requireds: (length: 0)
│ │ ├── optionals: (length: 1) │ │ ├── optionals: (length: 1)
│ │ │ └── @ OptionalParameterNode (location: (1,5)-(1,11)) │ │ │ └── @ OptionalParameterNode (location: (1,5)-(1,11))
│ │ │ ├── flags: ∅
│ │ │ ├── name: :b │ │ │ ├── name: :b
│ │ │ ├── name_loc: (1,5)-(1,6) = "b" │ │ │ ├── name_loc: (1,5)-(1,6) = "b"
│ │ │ ├── operator_loc: (1,7)-(1,8) = "=" │ │ │ ├── operator_loc: (1,7)-(1,8) = "="

View File

@ -24,12 +24,14 @@
│ │ │ └── @ MultiTargetNode (location: (1,5)-(1,12)) │ │ │ └── @ MultiTargetNode (location: (1,5)-(1,12))
│ │ │ ├── lefts: (length: 1) │ │ │ ├── lefts: (length: 1)
│ │ │ │ └── @ RequiredParameterNode (location: (1,6)-(1,7)) │ │ │ │ └── @ RequiredParameterNode (location: (1,6)-(1,7))
│ │ │ │ ├── flags: ∅
│ │ │ │ └── name: :b │ │ │ │ └── name: :b
│ │ │ ├── rest: │ │ │ ├── rest:
│ │ │ │ @ SplatNode (location: (1,9)-(1,11)) │ │ │ │ @ SplatNode (location: (1,9)-(1,11))
│ │ │ │ ├── operator_loc: (1,9)-(1,10) = "*" │ │ │ │ ├── operator_loc: (1,9)-(1,10) = "*"
│ │ │ │ └── expression: │ │ │ │ └── expression:
│ │ │ │ @ RequiredParameterNode (location: (1,10)-(1,11)) │ │ │ │ @ RequiredParameterNode (location: (1,10)-(1,11))
│ │ │ │ ├── flags: ∅
│ │ │ │ └── name: :c │ │ │ │ └── name: :c
│ │ │ ├── rights: (length: 0) │ │ │ ├── rights: (length: 0)
│ │ │ ├── lparen_loc: (1,5)-(1,6) = "(" │ │ │ ├── lparen_loc: (1,5)-(1,6) = "("

View File

@ -22,9 +22,11 @@
│ │ @ ParametersNode (location: (1,5)-(1,14)) │ │ @ ParametersNode (location: (1,5)-(1,14))
│ │ ├── requireds: (length: 1) │ │ ├── requireds: (length: 1)
│ │ │ └── @ RequiredParameterNode (location: (1,5)-(1,6)) │ │ │ └── @ RequiredParameterNode (location: (1,5)-(1,6))
│ │ │ ├── flags: ∅
│ │ │ └── name: :b │ │ │ └── name: :b
│ │ ├── optionals: (length: 1) │ │ ├── optionals: (length: 1)
│ │ │ └── @ OptionalParameterNode (location: (1,8)-(1,14)) │ │ │ └── @ OptionalParameterNode (location: (1,8)-(1,14))
│ │ │ ├── flags: ∅
│ │ │ ├── name: :c │ │ │ ├── name: :c
│ │ │ ├── name_loc: (1,8)-(1,9) = "c" │ │ │ ├── name_loc: (1,8)-(1,9) = "c"
│ │ │ ├── operator_loc: (1,10)-(1,11) = "=" │ │ │ ├── operator_loc: (1,10)-(1,11) = "="

View File

@ -41,6 +41,7 @@
│ │ @ ParametersNode (location: (1,19)-(1,22)) │ │ @ ParametersNode (location: (1,19)-(1,22))
│ │ ├── requireds: (length: 1) │ │ ├── requireds: (length: 1)
│ │ │ └── @ RequiredParameterNode (location: (1,19)-(1,22)) │ │ │ └── @ RequiredParameterNode (location: (1,19)-(1,22))
│ │ │ ├── flags: ∅
│ │ │ └── name: :bar │ │ │ └── name: :bar
│ │ ├── optionals: (length: 0) │ │ ├── optionals: (length: 0)
│ │ ├── rest: ∅ │ │ ├── rest: ∅

View File

@ -21,6 +21,7 @@
│ ├── parameters: ∅ │ ├── parameters: ∅
│ ├── locals: (length: 1) │ ├── locals: (length: 1)
│ │ └── @ BlockLocalVariableNode (location: (1,6)-(1,7)) │ │ └── @ BlockLocalVariableNode (location: (1,6)-(1,7))
│ │ ├── flags: ∅
│ │ └── name: :b │ │ └── name: :b
│ ├── opening_loc: (1,4)-(1,5) = "|" │ ├── opening_loc: (1,4)-(1,5) = "|"
│ └── closing_loc: (1,7)-(1,8) = "|" │ └── closing_loc: (1,7)-(1,8) = "|"

View File

@ -24,11 +24,13 @@
│ │ ├── optionals: (length: 0) │ │ ├── optionals: (length: 0)
│ │ ├── rest: │ │ ├── rest:
│ │ │ @ RestParameterNode (location: (1,5)-(1,7)) │ │ │ @ RestParameterNode (location: (1,5)-(1,7))
│ │ │ ├── flags: ∅
│ │ │ ├── name: :b │ │ │ ├── name: :b
│ │ │ ├── name_loc: (1,6)-(1,7) = "b" │ │ │ ├── name_loc: (1,6)-(1,7) = "b"
│ │ │ └── operator_loc: (1,5)-(1,6) = "*" │ │ │ └── operator_loc: (1,5)-(1,6) = "*"
│ │ ├── posts: (length: 1) │ │ ├── posts: (length: 1)
│ │ │ └── @ RequiredParameterNode (location: (1,9)-(1,10)) │ │ │ └── @ RequiredParameterNode (location: (1,9)-(1,10))
│ │ │ ├── flags: ∅
│ │ │ └── name: :c │ │ │ └── name: :c
│ │ ├── keywords: (length: 0) │ │ ├── keywords: (length: 0)
│ │ ├── keyword_rest: ∅ │ │ ├── keyword_rest: ∅

View File

@ -22,6 +22,7 @@
│ │ │ @ ParametersNode (location: (1,3)-(1,5)) │ │ │ @ ParametersNode (location: (1,3)-(1,5))
│ │ │ ├── requireds: (length: 1) │ │ │ ├── requireds: (length: 1)
│ │ │ │ └── @ RequiredParameterNode (location: (1,3)-(1,4)) │ │ │ │ └── @ RequiredParameterNode (location: (1,3)-(1,4))
│ │ │ │ ├── flags: ∅
│ │ │ │ └── name: :a │ │ │ │ └── name: :a
│ │ │ ├── optionals: (length: 0) │ │ │ ├── optionals: (length: 0)
│ │ │ ├── rest: │ │ │ ├── rest:
@ -55,6 +56,7 @@
│ │ @ ParametersNode (location: (3,3)-(3,4)) │ │ @ ParametersNode (location: (3,3)-(3,4))
│ │ ├── requireds: (length: 1) │ │ ├── requireds: (length: 1)
│ │ │ └── @ RequiredParameterNode (location: (3,3)-(3,4)) │ │ │ └── @ RequiredParameterNode (location: (3,3)-(3,4))
│ │ │ ├── flags: ∅
│ │ │ └── name: :a │ │ │ └── name: :a
│ │ ├── optionals: (length: 0) │ │ ├── optionals: (length: 0)
│ │ ├── rest: ∅ │ │ ├── rest: ∅

View File

@ -24,8 +24,10 @@
│ │ │ └── @ MultiTargetNode (location: (1,5)-(1,11)) │ │ │ └── @ MultiTargetNode (location: (1,5)-(1,11))
│ │ │ ├── lefts: (length: 2) │ │ │ ├── lefts: (length: 2)
│ │ │ │ ├── @ RequiredParameterNode (location: (1,6)-(1,7)) │ │ │ │ ├── @ RequiredParameterNode (location: (1,6)-(1,7))
│ │ │ │ │ ├── flags: ∅
│ │ │ │ │ └── name: :a │ │ │ │ │ └── name: :a
│ │ │ │ └── @ RequiredParameterNode (location: (1,9)-(1,10)) │ │ │ │ └── @ RequiredParameterNode (location: (1,9)-(1,10))
│ │ │ │ ├── flags: ∅
│ │ │ │ └── name: :b │ │ │ │ └── name: :b
│ │ │ ├── rest: ∅ │ │ │ ├── rest: ∅
│ │ │ ├── rights: (length: 0) │ │ │ ├── rights: (length: 0)

View File

@ -24,14 +24,17 @@
│ │ │ ├── @ MultiTargetNode (location: (1,5)-(1,11)) │ │ │ ├── @ MultiTargetNode (location: (1,5)-(1,11))
│ │ │ │ ├── lefts: (length: 2) │ │ │ │ ├── lefts: (length: 2)
│ │ │ │ │ ├── @ RequiredParameterNode (location: (1,6)-(1,7)) │ │ │ │ │ ├── @ RequiredParameterNode (location: (1,6)-(1,7))
│ │ │ │ │ │ ├── flags: ∅
│ │ │ │ │ │ └── name: :a │ │ │ │ │ │ └── name: :a
│ │ │ │ │ └── @ RequiredParameterNode (location: (1,9)-(1,10)) │ │ │ │ │ └── @ RequiredParameterNode (location: (1,9)-(1,10))
│ │ │ │ │ ├── flags: ∅
│ │ │ │ │ └── name: :b │ │ │ │ │ └── name: :b
│ │ │ │ ├── rest: ∅ │ │ │ │ ├── rest: ∅
│ │ │ │ ├── rights: (length: 0) │ │ │ │ ├── rights: (length: 0)
│ │ │ │ ├── lparen_loc: (1,5)-(1,6) = "(" │ │ │ │ ├── lparen_loc: (1,5)-(1,6) = "("
│ │ │ │ └── rparen_loc: (1,10)-(1,11) = ")" │ │ │ │ └── rparen_loc: (1,10)-(1,11) = ")"
│ │ │ └── @ RequiredParameterNode (location: (1,13)-(1,14)) │ │ │ └── @ RequiredParameterNode (location: (1,13)-(1,14))
│ │ │ ├── flags: ∅
│ │ │ └── name: :c │ │ │ └── name: :c
│ │ ├── optionals: (length: 0) │ │ ├── optionals: (length: 0)
│ │ ├── rest: ∅ │ │ ├── rest: ∅

View File

@ -26,20 +26,24 @@
│ │ │ │ │ ├── @ MultiTargetNode (location: (1,6)-(1,12)) │ │ │ │ │ ├── @ MultiTargetNode (location: (1,6)-(1,12))
│ │ │ │ │ │ ├── lefts: (length: 2) │ │ │ │ │ │ ├── lefts: (length: 2)
│ │ │ │ │ │ │ ├── @ RequiredParameterNode (location: (1,7)-(1,8)) │ │ │ │ │ │ │ ├── @ RequiredParameterNode (location: (1,7)-(1,8))
│ │ │ │ │ │ │ │ ├── flags: ∅
│ │ │ │ │ │ │ │ └── name: :a │ │ │ │ │ │ │ │ └── name: :a
│ │ │ │ │ │ │ └── @ RequiredParameterNode (location: (1,10)-(1,11)) │ │ │ │ │ │ │ └── @ RequiredParameterNode (location: (1,10)-(1,11))
│ │ │ │ │ │ │ ├── flags: ∅
│ │ │ │ │ │ │ └── name: :b │ │ │ │ │ │ │ └── name: :b
│ │ │ │ │ │ ├── rest: ∅ │ │ │ │ │ │ ├── rest: ∅
│ │ │ │ │ │ ├── rights: (length: 0) │ │ │ │ │ │ ├── rights: (length: 0)
│ │ │ │ │ │ ├── lparen_loc: (1,6)-(1,7) = "(" │ │ │ │ │ │ ├── lparen_loc: (1,6)-(1,7) = "("
│ │ │ │ │ │ └── rparen_loc: (1,11)-(1,12) = ")" │ │ │ │ │ │ └── rparen_loc: (1,11)-(1,12) = ")"
│ │ │ │ │ └── @ RequiredParameterNode (location: (1,14)-(1,15)) │ │ │ │ │ └── @ RequiredParameterNode (location: (1,14)-(1,15))
│ │ │ │ │ ├── flags: ∅
│ │ │ │ │ └── name: :c │ │ │ │ │ └── name: :c
│ │ │ │ ├── rest: ∅ │ │ │ │ ├── rest: ∅
│ │ │ │ ├── rights: (length: 0) │ │ │ │ ├── rights: (length: 0)
│ │ │ │ ├── lparen_loc: (1,5)-(1,6) = "(" │ │ │ │ ├── lparen_loc: (1,5)-(1,6) = "("
│ │ │ │ └── rparen_loc: (1,15)-(1,16) = ")" │ │ │ │ └── rparen_loc: (1,15)-(1,16) = ")"
│ │ │ └── @ RequiredParameterNode (location: (1,18)-(1,19)) │ │ │ └── @ RequiredParameterNode (location: (1,18)-(1,19))
│ │ │ ├── flags: ∅
│ │ │ └── name: :d │ │ │ └── name: :d
│ │ ├── optionals: (length: 0) │ │ ├── optionals: (length: 0)
│ │ ├── rest: ∅ │ │ ├── rest: ∅

View File

@ -26,14 +26,17 @@
│ │ │ │ ├── @ MultiTargetNode (location: (1,6)-(1,12)) │ │ │ │ ├── @ MultiTargetNode (location: (1,6)-(1,12))
│ │ │ │ │ ├── lefts: (length: 2) │ │ │ │ │ ├── lefts: (length: 2)
│ │ │ │ │ │ ├── @ RequiredParameterNode (location: (1,7)-(1,8)) │ │ │ │ │ │ ├── @ RequiredParameterNode (location: (1,7)-(1,8))
│ │ │ │ │ │ │ ├── flags: ∅
│ │ │ │ │ │ │ └── name: :k │ │ │ │ │ │ │ └── name: :k
│ │ │ │ │ │ └── @ RequiredParameterNode (location: (1,10)-(1,11)) │ │ │ │ │ │ └── @ RequiredParameterNode (location: (1,10)-(1,11))
│ │ │ │ │ │ ├── flags: ∅
│ │ │ │ │ │ └── name: :v │ │ │ │ │ │ └── name: :v
│ │ │ │ │ ├── rest: ∅ │ │ │ │ │ ├── rest: ∅
│ │ │ │ │ ├── rights: (length: 0) │ │ │ │ │ ├── rights: (length: 0)
│ │ │ │ │ ├── lparen_loc: (1,6)-(1,7) = "(" │ │ │ │ │ ├── lparen_loc: (1,6)-(1,7) = "("
│ │ │ │ │ └── rparen_loc: (1,11)-(1,12) = ")" │ │ │ │ │ └── rparen_loc: (1,11)-(1,12) = ")"
│ │ │ │ └── @ RequiredParameterNode (location: (1,14)-(1,15)) │ │ │ │ └── @ RequiredParameterNode (location: (1,14)-(1,15))
│ │ │ │ ├── flags: ∅
│ │ │ │ └── name: :i │ │ │ │ └── name: :i
│ │ │ ├── rest: ∅ │ │ │ ├── rest: ∅
│ │ │ ├── rights: (length: 0) │ │ │ ├── rights: (length: 0)

View File

@ -22,12 +22,15 @@
│ │ @ ParametersNode (location: (1,5)-(1,14)) │ │ @ ParametersNode (location: (1,5)-(1,14))
│ │ ├── requireds: (length: 2) │ │ ├── requireds: (length: 2)
│ │ │ ├── @ RequiredParameterNode (location: (1,5)-(1,6)) │ │ │ ├── @ RequiredParameterNode (location: (1,5)-(1,6))
│ │ │ │ ├── flags: ∅
│ │ │ │ └── name: :a │ │ │ │ └── name: :a
│ │ │ └── @ MultiTargetNode (location: (1,8)-(1,14)) │ │ │ └── @ MultiTargetNode (location: (1,8)-(1,14))
│ │ │ ├── lefts: (length: 2) │ │ │ ├── lefts: (length: 2)
│ │ │ │ ├── @ RequiredParameterNode (location: (1,9)-(1,10)) │ │ │ │ ├── @ RequiredParameterNode (location: (1,9)-(1,10))
│ │ │ │ │ ├── flags: ∅
│ │ │ │ │ └── name: :b │ │ │ │ │ └── name: :b
│ │ │ │ └── @ RequiredParameterNode (location: (1,12)-(1,13)) │ │ │ │ └── @ RequiredParameterNode (location: (1,12)-(1,13))
│ │ │ │ ├── flags: ∅
│ │ │ │ └── name: :c │ │ │ │ └── name: :c
│ │ │ ├── rest: ∅ │ │ │ ├── rest: ∅
│ │ │ ├── rights: (length: 0) │ │ │ ├── rights: (length: 0)

View File

@ -557,6 +557,7 @@
│ │ │ │ │ │ │ @ ParametersNode (location: (70,7)-(70,8)) │ │ │ │ │ │ │ @ ParametersNode (location: (70,7)-(70,8))
│ │ │ │ │ │ │ ├── requireds: (length: 1) │ │ │ │ │ │ │ ├── requireds: (length: 1)
│ │ │ │ │ │ │ │ └── @ RequiredParameterNode (location: (70,7)-(70,8)) │ │ │ │ │ │ │ │ └── @ RequiredParameterNode (location: (70,7)-(70,8))
│ │ │ │ │ │ │ │ ├── flags: ∅
│ │ │ │ │ │ │ │ └── name: :b │ │ │ │ │ │ │ │ └── name: :b
│ │ │ │ │ │ │ ├── optionals: (length: 0) │ │ │ │ │ │ │ ├── optionals: (length: 0)
│ │ │ │ │ │ │ ├── rest: ∅ │ │ │ │ │ │ │ ├── rest: ∅

View File

@ -11,15 +11,18 @@
│ @ ParametersNode (location: (1,9)-(1,24)) │ @ ParametersNode (location: (1,9)-(1,24))
│ ├── requireds: (length: 1) │ ├── requireds: (length: 1)
│ │ └── @ RequiredParameterNode (location: (1,9)-(1,15)) │ │ └── @ RequiredParameterNode (location: (1,9)-(1,15))
│ │ ├── flags: ∅
│ │ └── name: :interp │ │ └── name: :interp
│ ├── optionals: (length: 0) │ ├── optionals: (length: 0)
│ ├── rest: │ ├── rest:
│ │ @ RestParameterNode (location: (1,17)-(1,18)) │ │ @ RestParameterNode (location: (1,17)-(1,18))
│ │ ├── flags: ∅
│ │ ├── name: ∅ │ │ ├── name: ∅
│ │ ├── name_loc: ∅ │ │ ├── name_loc: ∅
│ │ └── operator_loc: (1,17)-(1,18) = "*" │ │ └── operator_loc: (1,17)-(1,18) = "*"
│ ├── posts: (length: 1) │ ├── posts: (length: 1)
│ │ └── @ RequiredParameterNode (location: (1,20)-(1,24)) │ │ └── @ RequiredParameterNode (location: (1,20)-(1,24))
│ │ ├── flags: ∅
│ │ └── name: :args │ │ └── name: :args
│ ├── keywords: (length: 0) │ ├── keywords: (length: 0)
│ ├── keyword_rest: ∅ │ ├── keyword_rest: ∅

View File

@ -11,6 +11,7 @@
│ @ ParametersNode (location: (1,6)-(1,12)) │ @ ParametersNode (location: (1,6)-(1,12))
│ ├── requireds: (length: 1) │ ├── requireds: (length: 1)
│ │ └── @ RequiredParameterNode (location: (1,6)-(1,7)) │ │ └── @ RequiredParameterNode (location: (1,6)-(1,7))
│ │ ├── flags: ∅
│ │ └── name: :x │ │ └── name: :x
│ ├── optionals: (length: 0) │ ├── optionals: (length: 0)
│ ├── rest: ∅ │ ├── rest: ∅

View File

@ -11,10 +11,13 @@
│ @ ParametersNode (location: (1,6)-(1,18)) │ @ ParametersNode (location: (1,6)-(1,18))
│ ├── requireds: (length: 3) │ ├── requireds: (length: 3)
│ │ ├── @ RequiredParameterNode (location: (1,6)-(1,7)) │ │ ├── @ RequiredParameterNode (location: (1,6)-(1,7))
│ │ │ ├── flags: ∅
│ │ │ └── name: :x │ │ │ └── name: :x
│ │ ├── @ RequiredParameterNode (location: (1,9)-(1,10)) │ │ ├── @ RequiredParameterNode (location: (1,9)-(1,10))
│ │ │ ├── flags: ∅
│ │ │ └── name: :y │ │ │ └── name: :y
│ │ └── @ RequiredParameterNode (location: (1,12)-(1,13)) │ │ └── @ RequiredParameterNode (location: (1,12)-(1,13))
│ │ ├── flags: ∅
│ │ └── name: :z │ │ └── name: :z
│ ├── optionals: (length: 0) │ ├── optionals: (length: 0)
│ ├── rest: ∅ │ ├── rest: ∅

View File

@ -16,6 +16,7 @@
│ ├── keywords: (length: 0) │ ├── keywords: (length: 0)
│ ├── keyword_rest: │ ├── keyword_rest:
│ │ @ KeywordRestParameterNode (location: (1,9)-(1,18)) │ │ @ KeywordRestParameterNode (location: (1,9)-(1,18))
│ │ ├── flags: ∅
│ │ ├── name: :testing │ │ ├── name: :testing
│ │ ├── name_loc: (1,11)-(1,18) = "testing" │ │ ├── name_loc: (1,11)-(1,18) = "testing"
│ │ └── operator_loc: (1,9)-(1,11) = "**" │ │ └── operator_loc: (1,9)-(1,11) = "**"

View File

@ -11,18 +11,21 @@
│ @ ParametersNode (location: (1,6)-(1,19)) │ @ ParametersNode (location: (1,6)-(1,19))
│ ├── requireds: (length: 1) │ ├── requireds: (length: 1)
│ │ └── @ RequiredParameterNode (location: (1,6)-(1,7)) │ │ └── @ RequiredParameterNode (location: (1,6)-(1,7))
│ │ ├── flags: ∅
│ │ └── name: :a │ │ └── name: :a
│ ├── optionals: (length: 0) │ ├── optionals: (length: 0)
│ ├── rest: ∅ │ ├── rest: ∅
│ ├── posts: (length: 0) │ ├── posts: (length: 0)
│ ├── keywords: (length: 2) │ ├── keywords: (length: 2)
│ │ ├── @ OptionalKeywordParameterNode (location: (1,9)-(1,13)) │ │ ├── @ OptionalKeywordParameterNode (location: (1,9)-(1,13))
│ │ │ ├── flags: ∅
│ │ │ ├── name: :b │ │ │ ├── name: :b
│ │ │ ├── name_loc: (1,9)-(1,11) = "b:" │ │ │ ├── name_loc: (1,9)-(1,11) = "b:"
│ │ │ └── value: │ │ │ └── value:
│ │ │ @ IntegerNode (location: (1,12)-(1,13)) │ │ │ @ IntegerNode (location: (1,12)-(1,13))
│ │ │ └── flags: decimal │ │ │ └── flags: decimal
│ │ └── @ OptionalKeywordParameterNode (location: (1,15)-(1,19)) │ │ └── @ OptionalKeywordParameterNode (location: (1,15)-(1,19))
│ │ ├── flags: ∅
│ │ ├── name: :c │ │ ├── name: :c
│ │ ├── name_loc: (1,15)-(1,17) = "c:" │ │ ├── name_loc: (1,15)-(1,17) = "c:"
│ │ └── value: │ │ └── value:

View File

@ -15,6 +15,7 @@
│ ├── posts: (length: 0) │ ├── posts: (length: 0)
│ ├── keywords: (length: 1) │ ├── keywords: (length: 1)
│ │ └── @ OptionalKeywordParameterNode (location: (1,6)-(1,10)) │ │ └── @ OptionalKeywordParameterNode (location: (1,6)-(1,10))
│ │ ├── flags: ∅
│ │ ├── name: :b │ │ ├── name: :b
│ │ ├── name_loc: (1,6)-(1,8) = "b:" │ │ ├── name_loc: (1,6)-(1,8) = "b:"
│ │ └── value: │ │ └── value:
@ -22,6 +23,7 @@
│ │ └── flags: decimal │ │ └── flags: decimal
│ ├── keyword_rest: │ ├── keyword_rest:
│ │ @ KeywordRestParameterNode (location: (1,12)-(1,15)) │ │ @ KeywordRestParameterNode (location: (1,12)-(1,15))
│ │ ├── flags: ∅
│ │ ├── name: :c │ │ ├── name: :c
│ │ ├── name_loc: (1,14)-(1,15) = "c" │ │ ├── name_loc: (1,14)-(1,15) = "c"
│ │ └── operator_loc: (1,12)-(1,14) = "**" │ │ └── operator_loc: (1,12)-(1,14) = "**"

View File

@ -15,6 +15,7 @@
│ ├── posts: (length: 0) │ ├── posts: (length: 0)
│ ├── keywords: (length: 1) │ ├── keywords: (length: 1)
│ │ └── @ OptionalKeywordParameterNode (location: (1,6)-(1,10)) │ │ └── @ OptionalKeywordParameterNode (location: (1,6)-(1,10))
│ │ ├── flags: ∅
│ │ ├── name: :b │ │ ├── name: :b
│ │ ├── name_loc: (1,6)-(1,8) = "b:" │ │ ├── name_loc: (1,6)-(1,8) = "b:"
│ │ └── value: │ │ └── value:
@ -22,6 +23,7 @@
│ │ └── flags: decimal │ │ └── flags: decimal
│ ├── keyword_rest: │ ├── keyword_rest:
│ │ @ KeywordRestParameterNode (location: (1,12)-(1,14)) │ │ @ KeywordRestParameterNode (location: (1,12)-(1,14))
│ │ ├── flags: ∅
│ │ ├── name: ∅ │ │ ├── name: ∅
│ │ ├── name_loc: ∅ │ │ ├── name_loc: ∅
│ │ └── operator_loc: (1,12)-(1,14) = "**" │ │ └── operator_loc: (1,12)-(1,14) = "**"

View File

@ -15,6 +15,7 @@
│ ├── posts: (length: 0) │ ├── posts: (length: 0)
│ ├── keywords: (length: 1) │ ├── keywords: (length: 1)
│ │ └── @ OptionalKeywordParameterNode (location: (1,8)-(1,16)) │ │ └── @ OptionalKeywordParameterNode (location: (1,8)-(1,16))
│ │ ├── flags: ∅
│ │ ├── name: :kw │ │ ├── name: :kw
│ │ ├── name_loc: (1,8)-(1,11) = "kw:" │ │ ├── name_loc: (1,8)-(1,11) = "kw:"
│ │ └── value: │ │ └── value:

View File

@ -15,6 +15,7 @@
│ ├── posts: (length: 0) │ ├── posts: (length: 0)
│ ├── keywords: (length: 1) │ ├── keywords: (length: 1)
│ │ └── @ OptionalKeywordParameterNode (location: (1,6)-(1,10)) │ │ └── @ OptionalKeywordParameterNode (location: (1,6)-(1,10))
│ │ ├── flags: ∅
│ │ ├── name: :a │ │ ├── name: :a
│ │ ├── name_loc: (1,6)-(1,8) = "a:" │ │ ├── name_loc: (1,6)-(1,8) = "a:"
│ │ └── value: │ │ └── value:

View File

@ -11,12 +11,14 @@
│ @ ParametersNode (location: (1,6)-(1,12)) │ @ ParametersNode (location: (1,6)-(1,12))
│ ├── requireds: (length: 1) │ ├── requireds: (length: 1)
│ │ └── @ RequiredParameterNode (location: (1,6)-(1,7)) │ │ └── @ RequiredParameterNode (location: (1,6)-(1,7))
│ │ ├── flags: ∅
│ │ └── name: :a │ │ └── name: :a
│ ├── optionals: (length: 0) │ ├── optionals: (length: 0)
│ ├── rest: ∅ │ ├── rest: ∅
│ ├── posts: (length: 0) │ ├── posts: (length: 0)
│ ├── keywords: (length: 1) │ ├── keywords: (length: 1)
│ │ └── @ OptionalKeywordParameterNode (location: (1,9)-(1,12)) │ │ └── @ OptionalKeywordParameterNode (location: (1,9)-(1,12))
│ │ ├── flags: ∅
│ │ ├── name: :b │ │ ├── name: :b
│ │ ├── name_loc: (1,9)-(1,11) = "b:" │ │ ├── name_loc: (1,9)-(1,11) = "b:"
│ │ └── value: │ │ └── value:

View File

@ -11,6 +11,7 @@
│ @ ParametersNode (location: (1,9)-(1,12)) │ @ ParametersNode (location: (1,9)-(1,12))
│ ├── requireds: (length: 1) │ ├── requireds: (length: 1)
│ │ └── @ RequiredParameterNode (location: (1,9)-(1,12)) │ │ └── @ RequiredParameterNode (location: (1,9)-(1,12))
│ │ ├── flags: ∅
│ │ └── name: :cmd │ │ └── name: :cmd
│ ├── optionals: (length: 0) │ ├── optionals: (length: 0)
│ ├── rest: ∅ │ ├── rest: ∅

View File

@ -22,6 +22,7 @@
│ │ @ ParametersNode (location: (2,9)-(2,10)) │ │ @ ParametersNode (location: (2,9)-(2,10))
│ │ ├── requireds: (length: 1) │ │ ├── requireds: (length: 1)
│ │ │ └── @ RequiredParameterNode (location: (2,9)-(2,10)) │ │ │ └── @ RequiredParameterNode (location: (2,9)-(2,10))
│ │ │ ├── flags: ∅
│ │ │ └── name: :o │ │ │ └── name: :o
│ │ ├── optionals: (length: 0) │ │ ├── optionals: (length: 0)
│ │ ├── rest: ∅ │ │ ├── rest: ∅

View File

@ -11,6 +11,7 @@
│ │ @ ParametersNode (location: (1,9)-(1,12)) │ │ @ ParametersNode (location: (1,9)-(1,12))
│ │ ├── requireds: (length: 1) │ │ ├── requireds: (length: 1)
│ │ │ └── @ RequiredParameterNode (location: (1,9)-(1,12)) │ │ │ └── @ RequiredParameterNode (location: (1,9)-(1,12))
│ │ │ ├── flags: ∅
│ │ │ └── name: :cmd │ │ │ └── name: :cmd
│ │ ├── optionals: (length: 0) │ │ ├── optionals: (length: 0)
│ │ ├── rest: ∅ │ │ ├── rest: ∅
@ -70,6 +71,7 @@
│ │ @ ParametersNode (location: (8,9)-(8,12)) │ │ @ ParametersNode (location: (8,9)-(8,12))
│ │ ├── requireds: (length: 1) │ │ ├── requireds: (length: 1)
│ │ │ └── @ RequiredParameterNode (location: (8,9)-(8,12)) │ │ │ └── @ RequiredParameterNode (location: (8,9)-(8,12))
│ │ │ ├── flags: ∅
│ │ │ └── name: :cmd │ │ │ └── name: :cmd
│ │ ├── optionals: (length: 0) │ │ ├── optionals: (length: 0)
│ │ ├── rest: ∅ │ │ ├── rest: ∅
@ -117,6 +119,7 @@
│ @ ParametersNode (location: (13,9)-(13,12)) │ @ ParametersNode (location: (13,9)-(13,12))
│ ├── requireds: (length: 1) │ ├── requireds: (length: 1)
│ │ └── @ RequiredParameterNode (location: (13,9)-(13,12)) │ │ └── @ RequiredParameterNode (location: (13,9)-(13,12))
│ │ ├── flags: ∅
│ │ └── name: :cmd │ │ └── name: :cmd
│ ├── optionals: (length: 0) │ ├── optionals: (length: 0)
│ ├── rest: ∅ │ ├── rest: ∅

View File

@ -12,6 +12,7 @@
│ ├── requireds: (length: 0) │ ├── requireds: (length: 0)
│ ├── optionals: (length: 1) │ ├── optionals: (length: 1)
│ │ └── @ OptionalParameterNode (location: (1,6)-(1,17)) │ │ └── @ OptionalParameterNode (location: (1,6)-(1,17))
│ │ ├── flags: ∅
│ │ ├── name: :arg │ │ ├── name: :arg
│ │ ├── name_loc: (1,6)-(1,9) = "arg" │ │ ├── name_loc: (1,6)-(1,9) = "arg"
│ │ ├── operator_loc: (1,10)-(1,11) = "=" │ │ ├── operator_loc: (1,10)-(1,11) = "="

View File

@ -12,6 +12,7 @@
│ ├── requireds: (length: 0) │ ├── requireds: (length: 0)
│ ├── optionals: (length: 1) │ ├── optionals: (length: 1)
│ │ └── @ OptionalParameterNode (location: (1,6)-(1,11)) │ │ └── @ OptionalParameterNode (location: (1,6)-(1,11))
│ │ ├── flags: ∅
│ │ ├── name: :a │ │ ├── name: :a
│ │ ├── name_loc: (1,6)-(1,7) = "a" │ │ ├── name_loc: (1,6)-(1,7) = "a"
│ │ ├── operator_loc: (1,7)-(1,8) = "=" │ │ ├── operator_loc: (1,7)-(1,8) = "="
@ -20,6 +21,7 @@
│ ├── rest: ∅ │ ├── rest: ∅
│ ├── posts: (length: 1) │ ├── posts: (length: 1)
│ │ └── @ RequiredParameterNode (location: (1,13)-(1,14)) │ │ └── @ RequiredParameterNode (location: (1,13)-(1,14))
│ │ ├── flags: ∅
│ │ └── name: :b │ │ └── name: :b
│ ├── keywords: (length: 0) │ ├── keywords: (length: 0)
│ ├── keyword_rest: ∅ │ ├── keyword_rest: ∅

View File

@ -12,6 +12,7 @@
│ ├── requireds: (length: 0) │ ├── requireds: (length: 0)
│ ├── optionals: (length: 1) │ ├── optionals: (length: 1)
│ │ └── @ OptionalParameterNode (location: (1,7)-(1,12)) │ │ └── @ OptionalParameterNode (location: (1,7)-(1,12))
│ │ ├── flags: ∅
│ │ ├── name: :a │ │ ├── name: :a
│ │ ├── name_loc: (1,7)-(1,8) = "a" │ │ ├── name_loc: (1,7)-(1,8) = "a"
│ │ ├── operator_loc: (1,9)-(1,10) = "=" │ │ ├── operator_loc: (1,9)-(1,10) = "="
@ -20,11 +21,13 @@
│ │ └── flags: decimal │ │ └── flags: decimal
│ ├── rest: │ ├── rest:
│ │ @ RestParameterNode (location: (1,14)-(1,16)) │ │ @ RestParameterNode (location: (1,14)-(1,16))
│ │ ├── flags: ∅
│ │ ├── name: :b │ │ ├── name: :b
│ │ ├── name_loc: (1,15)-(1,16) = "b" │ │ ├── name_loc: (1,15)-(1,16) = "b"
│ │ └── operator_loc: (1,14)-(1,15) = "*" │ │ └── operator_loc: (1,14)-(1,15) = "*"
│ ├── posts: (length: 1) │ ├── posts: (length: 1)
│ │ └── @ RequiredParameterNode (location: (1,18)-(1,19)) │ │ └── @ RequiredParameterNode (location: (1,18)-(1,19))
│ │ ├── flags: ∅
│ │ └── name: :c │ │ └── name: :c
│ ├── keywords: (length: 0) │ ├── keywords: (length: 0)
│ ├── keyword_rest: ∅ │ ├── keyword_rest: ∅

View File

@ -16,6 +16,7 @@
│ ├── keywords: (length: 0) │ ├── keywords: (length: 0)
│ ├── keyword_rest: │ ├── keyword_rest:
│ │ @ KeywordRestParameterNode (location: (1,6)-(1,12)) │ │ @ KeywordRestParameterNode (location: (1,6)-(1,12))
│ │ ├── flags: ∅
│ │ ├── name: :opts │ │ ├── name: :opts
│ │ ├── name_loc: (1,8)-(1,12) = "opts" │ │ ├── name_loc: (1,8)-(1,12) = "opts"
│ │ └── operator_loc: (1,6)-(1,8) = "**" │ │ └── operator_loc: (1,6)-(1,8) = "**"

View File

@ -11,9 +11,11 @@
│ @ ParametersNode (location: (1,6)-(1,18)) │ @ ParametersNode (location: (1,6)-(1,18))
│ ├── requireds: (length: 1) │ ├── requireds: (length: 1)
│ │ └── @ RequiredParameterNode (location: (1,6)-(1,7)) │ │ └── @ RequiredParameterNode (location: (1,6)-(1,7))
│ │ ├── flags: ∅
│ │ └── name: :a │ │ └── name: :a
│ ├── optionals: (length: 1) │ ├── optionals: (length: 1)
│ │ └── @ OptionalParameterNode (location: (1,9)-(1,15)) │ │ └── @ OptionalParameterNode (location: (1,9)-(1,15))
│ │ ├── flags: ∅
│ │ ├── name: :b │ │ ├── name: :b
│ │ ├── name_loc: (1,9)-(1,10) = "b" │ │ ├── name_loc: (1,9)-(1,10) = "b"
│ │ ├── operator_loc: (1,11)-(1,12) = "=" │ │ ├── operator_loc: (1,11)-(1,12) = "="
@ -27,6 +29,7 @@
│ ├── rest: ∅ │ ├── rest: ∅
│ ├── posts: (length: 1) │ ├── posts: (length: 1)
│ │ └── @ RequiredParameterNode (location: (1,17)-(1,18)) │ │ └── @ RequiredParameterNode (location: (1,17)-(1,18))
│ │ ├── flags: ∅
│ │ └── name: :d │ │ └── name: :d
│ ├── keywords: (length: 0) │ ├── keywords: (length: 0)
│ ├── keyword_rest: ∅ │ ├── keyword_rest: ∅

View File

@ -13,11 +13,13 @@
│ ├── optionals: (length: 0) │ ├── optionals: (length: 0)
│ ├── rest: │ ├── rest:
│ │ @ RestParameterNode (location: (1,6)-(1,7)) │ │ @ RestParameterNode (location: (1,6)-(1,7))
│ │ ├── flags: ∅
│ │ ├── name: ∅ │ │ ├── name: ∅
│ │ ├── name_loc: ∅ │ │ ├── name_loc: ∅
│ │ └── operator_loc: (1,6)-(1,7) = "*" │ │ └── operator_loc: (1,6)-(1,7) = "*"
│ ├── posts: (length: 1) │ ├── posts: (length: 1)
│ │ └── @ RequiredParameterNode (location: (1,9)-(1,10)) │ │ └── @ RequiredParameterNode (location: (1,9)-(1,10))
│ │ ├── flags: ∅
│ │ └── name: :a │ │ └── name: :a
│ ├── keywords: (length: 0) │ ├── keywords: (length: 0)
│ ├── keyword_rest: ∅ │ ├── keyword_rest: ∅

View File

@ -16,6 +16,7 @@
│ ├── posts: (length: 0) │ ├── posts: (length: 0)
│ ├── keywords: (length: 1) │ ├── keywords: (length: 1)
│ │ └── @ OptionalKeywordParameterNode (location: (1,11)-(1,15)) │ │ └── @ OptionalKeywordParameterNode (location: (1,11)-(1,15))
│ │ ├── flags: ∅
│ │ ├── name: :b │ │ ├── name: :b
│ │ ├── name_loc: (1,11)-(1,13) = "b:" │ │ ├── name_loc: (1,11)-(1,13) = "b:"
│ │ └── value: │ │ └── value:

View File

@ -12,6 +12,7 @@
│ @ ParametersNode (location: (1,14)-(1,17)) │ @ ParametersNode (location: (1,14)-(1,17))
│ ├── requireds: (length: 1) │ ├── requireds: (length: 1)
│ │ └── @ RequiredParameterNode (location: (1,14)-(1,17)) │ │ └── @ RequiredParameterNode (location: (1,14)-(1,17))
│ │ ├── flags: ∅
│ │ └── name: :cmd │ │ └── name: :cmd
│ ├── optionals: (length: 0) │ ├── optionals: (length: 0)
│ ├── rest: ∅ │ ├── rest: ∅

View File

@ -23,6 +23,7 @@
│ │ @ ParametersNode (location: (2,14)-(2,15)) │ │ @ ParametersNode (location: (2,14)-(2,15))
│ │ ├── requireds: (length: 1) │ │ ├── requireds: (length: 1)
│ │ │ └── @ RequiredParameterNode (location: (2,14)-(2,15)) │ │ │ └── @ RequiredParameterNode (location: (2,14)-(2,15))
│ │ │ ├── flags: ∅
│ │ │ └── name: :o │ │ │ └── name: :o
│ │ ├── optionals: (length: 0) │ │ ├── optionals: (length: 0)
│ │ ├── rest: ∅ │ │ ├── rest: ∅

View File

@ -12,6 +12,7 @@
│ │ @ ParametersNode (location: (1,14)-(1,17)) │ │ @ ParametersNode (location: (1,14)-(1,17))
│ │ ├── requireds: (length: 1) │ │ ├── requireds: (length: 1)
│ │ │ └── @ RequiredParameterNode (location: (1,14)-(1,17)) │ │ │ └── @ RequiredParameterNode (location: (1,14)-(1,17))
│ │ │ ├── flags: ∅
│ │ │ └── name: :cmd │ │ │ └── name: :cmd
│ │ ├── optionals: (length: 0) │ │ ├── optionals: (length: 0)
│ │ ├── rest: ∅ │ │ ├── rest: ∅
@ -72,6 +73,7 @@
│ │ @ ParametersNode (location: (8,14)-(8,17)) │ │ @ ParametersNode (location: (8,14)-(8,17))
│ │ ├── requireds: (length: 1) │ │ ├── requireds: (length: 1)
│ │ │ └── @ RequiredParameterNode (location: (8,14)-(8,17)) │ │ │ └── @ RequiredParameterNode (location: (8,14)-(8,17))
│ │ │ ├── flags: ∅
│ │ │ └── name: :cmd │ │ │ └── name: :cmd
│ │ ├── optionals: (length: 0) │ │ ├── optionals: (length: 0)
│ │ ├── rest: ∅ │ │ ├── rest: ∅
@ -120,6 +122,7 @@
│ @ ParametersNode (location: (13,14)-(13,17)) │ @ ParametersNode (location: (13,14)-(13,17))
│ ├── requireds: (length: 1) │ ├── requireds: (length: 1)
│ │ └── @ RequiredParameterNode (location: (13,14)-(13,17)) │ │ └── @ RequiredParameterNode (location: (13,14)-(13,17))
│ │ ├── flags: ∅
│ │ └── name: :cmd │ │ └── name: :cmd
│ ├── optionals: (length: 0) │ ├── optionals: (length: 0)
│ ├── rest: ∅ │ ├── rest: ∅

View File

@ -22,16 +22,19 @@
│ │ @ ParametersNode (location: (1,5)-(1,15)) │ │ @ ParametersNode (location: (1,5)-(1,15))
│ │ ├── requireds: (length: 2) │ │ ├── requireds: (length: 2)
│ │ │ ├── @ RequiredParameterNode (location: (1,5)-(1,6)) │ │ │ ├── @ RequiredParameterNode (location: (1,5)-(1,6))
│ │ │ │ ├── flags: ∅
│ │ │ │ └── name: :a │ │ │ │ └── name: :a
│ │ │ └── @ MultiTargetNode (location: (1,8)-(1,15)) │ │ │ └── @ MultiTargetNode (location: (1,8)-(1,15))
│ │ │ ├── lefts: (length: 1) │ │ │ ├── lefts: (length: 1)
│ │ │ │ └── @ RequiredParameterNode (location: (1,9)-(1,10)) │ │ │ │ └── @ RequiredParameterNode (location: (1,9)-(1,10))
│ │ │ │ ├── flags: ∅
│ │ │ │ └── name: :b │ │ │ │ └── name: :b
│ │ │ ├── rest: │ │ │ ├── rest:
│ │ │ │ @ SplatNode (location: (1,12)-(1,14)) │ │ │ │ @ SplatNode (location: (1,12)-(1,14))
│ │ │ │ ├── operator_loc: (1,12)-(1,13) = "*" │ │ │ │ ├── operator_loc: (1,12)-(1,13) = "*"
│ │ │ │ └── expression: │ │ │ │ └── expression:
│ │ │ │ @ RequiredParameterNode (location: (1,13)-(1,14)) │ │ │ │ @ RequiredParameterNode (location: (1,13)-(1,14))
│ │ │ │ ├── flags: ∅
│ │ │ │ └── name: :c │ │ │ │ └── name: :c
│ │ │ ├── rights: (length: 0) │ │ │ ├── rights: (length: 0)
│ │ │ ├── lparen_loc: (1,8)-(1,9) = "(" │ │ │ ├── lparen_loc: (1,8)-(1,9) = "("

View File

@ -24,11 +24,13 @@
│ │ ├── optionals: (length: 0) │ │ ├── optionals: (length: 0)
│ │ ├── rest: │ │ ├── rest:
│ │ │ @ RestParameterNode (location: (1,5)-(1,7)) │ │ │ @ RestParameterNode (location: (1,5)-(1,7))
│ │ │ ├── flags: ∅
│ │ │ ├── name: :a │ │ │ ├── name: :a
│ │ │ ├── name_loc: (1,6)-(1,7) = "a" │ │ │ ├── name_loc: (1,6)-(1,7) = "a"
│ │ │ └── operator_loc: (1,5)-(1,6) = "*" │ │ │ └── operator_loc: (1,5)-(1,6) = "*"
│ │ ├── posts: (length: 1) │ │ ├── posts: (length: 1)
│ │ │ └── @ RequiredParameterNode (location: (1,9)-(1,10)) │ │ │ └── @ RequiredParameterNode (location: (1,9)-(1,10))
│ │ │ ├── flags: ∅
│ │ │ └── name: :b │ │ │ └── name: :b
│ │ ├── keywords: (length: 0) │ │ ├── keywords: (length: 0)
│ │ ├── keyword_rest: ∅ │ │ ├── keyword_rest: ∅

View File

@ -24,16 +24,19 @@
│ │ ├── optionals: (length: 0) │ │ ├── optionals: (length: 0)
│ │ ├── rest: │ │ ├── rest:
│ │ │ @ RestParameterNode (location: (1,5)-(1,7)) │ │ │ @ RestParameterNode (location: (1,5)-(1,7))
│ │ │ ├── flags: ∅
│ │ │ ├── name: :a │ │ │ ├── name: :a
│ │ │ ├── name_loc: (1,6)-(1,7) = "a" │ │ │ ├── name_loc: (1,6)-(1,7) = "a"
│ │ │ └── operator_loc: (1,5)-(1,6) = "*" │ │ │ └── operator_loc: (1,5)-(1,6) = "*"
│ │ ├── posts: (length: 1) │ │ ├── posts: (length: 1)
│ │ │ └── @ RequiredParameterNode (location: (1,9)-(1,10)) │ │ │ └── @ RequiredParameterNode (location: (1,9)-(1,10))
│ │ │ ├── flags: ∅
│ │ │ └── name: :b │ │ │ └── name: :b
│ │ ├── keywords: (length: 0) │ │ ├── keywords: (length: 0)
│ │ ├── keyword_rest: ∅ │ │ ├── keyword_rest: ∅
│ │ └── block: │ │ └── block:
│ │ @ BlockParameterNode (location: (1,12)-(1,14)) │ │ @ BlockParameterNode (location: (1,12)-(1,14))
│ │ ├── flags: ∅
│ │ ├── name: :c │ │ ├── name: :c
│ │ ├── name_loc: (1,13)-(1,14) = "c" │ │ ├── name_loc: (1,13)-(1,14) = "c"
│ │ └── operator_loc: (1,12)-(1,13) = "&" │ │ └── operator_loc: (1,12)-(1,13) = "&"

View File

@ -22,6 +22,7 @@
│ │ @ ParametersNode (location: (1,5)-(1,15)) │ │ @ ParametersNode (location: (1,5)-(1,15))
│ │ ├── requireds: (length: 2) │ │ ├── requireds: (length: 2)
│ │ │ ├── @ RequiredParameterNode (location: (1,5)-(1,6)) │ │ │ ├── @ RequiredParameterNode (location: (1,5)-(1,6))
│ │ │ │ ├── flags: ∅
│ │ │ │ └── name: :a │ │ │ │ └── name: :a
│ │ │ └── @ MultiTargetNode (location: (1,8)-(1,15)) │ │ │ └── @ MultiTargetNode (location: (1,8)-(1,15))
│ │ │ ├── lefts: (length: 0) │ │ │ ├── lefts: (length: 0)
@ -30,9 +31,11 @@
│ │ │ │ ├── operator_loc: (1,9)-(1,10) = "*" │ │ │ │ ├── operator_loc: (1,9)-(1,10) = "*"
│ │ │ │ └── expression: │ │ │ │ └── expression:
│ │ │ │ @ RequiredParameterNode (location: (1,10)-(1,11)) │ │ │ │ @ RequiredParameterNode (location: (1,10)-(1,11))
│ │ │ │ ├── flags: ∅
│ │ │ │ └── name: :b │ │ │ │ └── name: :b
│ │ │ ├── rights: (length: 1) │ │ │ ├── rights: (length: 1)
│ │ │ │ └── @ RequiredParameterNode (location: (1,13)-(1,14)) │ │ │ │ └── @ RequiredParameterNode (location: (1,13)-(1,14))
│ │ │ │ ├── flags: ∅
│ │ │ │ └── name: :c │ │ │ │ └── name: :c
│ │ │ ├── lparen_loc: (1,8)-(1,9) = "(" │ │ │ ├── lparen_loc: (1,8)-(1,9) = "("
│ │ │ └── rparen_loc: (1,14)-(1,15) = ")" │ │ │ └── rparen_loc: (1,14)-(1,15) = ")"

View File

@ -22,6 +22,7 @@
│ │ @ ParametersNode (location: (1,5)-(1,11)) │ │ @ ParametersNode (location: (1,5)-(1,11))
│ │ ├── requireds: (length: 2) │ │ ├── requireds: (length: 2)
│ │ │ ├── @ RequiredParameterNode (location: (1,5)-(1,6)) │ │ │ ├── @ RequiredParameterNode (location: (1,5)-(1,6))
│ │ │ │ ├── flags: ∅
│ │ │ │ └── name: :a │ │ │ │ └── name: :a
│ │ │ └── @ MultiTargetNode (location: (1,8)-(1,11)) │ │ │ └── @ MultiTargetNode (location: (1,8)-(1,11))
│ │ │ ├── lefts: (length: 0) │ │ │ ├── lefts: (length: 0)

View File

@ -22,6 +22,7 @@
│ │ @ ParametersNode (location: (1,5)-(1,14)) │ │ @ ParametersNode (location: (1,5)-(1,14))
│ │ ├── requireds: (length: 2) │ │ ├── requireds: (length: 2)
│ │ │ ├── @ RequiredParameterNode (location: (1,5)-(1,6)) │ │ │ ├── @ RequiredParameterNode (location: (1,5)-(1,6))
│ │ │ │ ├── flags: ∅
│ │ │ │ └── name: :a │ │ │ │ └── name: :a
│ │ │ └── @ MultiTargetNode (location: (1,8)-(1,14)) │ │ │ └── @ MultiTargetNode (location: (1,8)-(1,14))
│ │ │ ├── lefts: (length: 0) │ │ │ ├── lefts: (length: 0)
@ -31,6 +32,7 @@
│ │ │ │ └── expression: ∅ │ │ │ │ └── expression: ∅
│ │ │ ├── rights: (length: 1) │ │ │ ├── rights: (length: 1)
│ │ │ │ └── @ RequiredParameterNode (location: (1,12)-(1,13)) │ │ │ │ └── @ RequiredParameterNode (location: (1,12)-(1,13))
│ │ │ │ ├── flags: ∅
│ │ │ │ └── name: :b │ │ │ │ └── name: :b
│ │ │ ├── lparen_loc: (1,8)-(1,9) = "(" │ │ │ ├── lparen_loc: (1,8)-(1,9) = "("
│ │ │ └── rparen_loc: (1,13)-(1,14) = ")" │ │ │ └── rparen_loc: (1,13)-(1,14) = ")"

View File

@ -22,19 +22,23 @@
│ │ @ ParametersNode (location: (1,5)-(1,18)) │ │ @ ParametersNode (location: (1,5)-(1,18))
│ │ ├── requireds: (length: 2) │ │ ├── requireds: (length: 2)
│ │ │ ├── @ RequiredParameterNode (location: (1,5)-(1,6)) │ │ │ ├── @ RequiredParameterNode (location: (1,5)-(1,6))
│ │ │ │ ├── flags: ∅
│ │ │ │ └── name: :a │ │ │ │ └── name: :a
│ │ │ └── @ MultiTargetNode (location: (1,8)-(1,18)) │ │ │ └── @ MultiTargetNode (location: (1,8)-(1,18))
│ │ │ ├── lefts: (length: 1) │ │ │ ├── lefts: (length: 1)
│ │ │ │ └── @ RequiredParameterNode (location: (1,9)-(1,10)) │ │ │ │ └── @ RequiredParameterNode (location: (1,9)-(1,10))
│ │ │ │ ├── flags: ∅
│ │ │ │ └── name: :b │ │ │ │ └── name: :b
│ │ │ ├── rest: │ │ │ ├── rest:
│ │ │ │ @ SplatNode (location: (1,12)-(1,14)) │ │ │ │ @ SplatNode (location: (1,12)-(1,14))
│ │ │ │ ├── operator_loc: (1,12)-(1,13) = "*" │ │ │ │ ├── operator_loc: (1,12)-(1,13) = "*"
│ │ │ │ └── expression: │ │ │ │ └── expression:
│ │ │ │ @ RequiredParameterNode (location: (1,13)-(1,14)) │ │ │ │ @ RequiredParameterNode (location: (1,13)-(1,14))
│ │ │ │ ├── flags: ∅
│ │ │ │ └── name: :c │ │ │ │ └── name: :c
│ │ │ ├── rights: (length: 1) │ │ │ ├── rights: (length: 1)
│ │ │ │ └── @ RequiredParameterNode (location: (1,16)-(1,17)) │ │ │ │ └── @ RequiredParameterNode (location: (1,16)-(1,17))
│ │ │ │ ├── flags: ∅
│ │ │ │ └── name: :d │ │ │ │ └── name: :d
│ │ │ ├── lparen_loc: (1,8)-(1,9) = "(" │ │ │ ├── lparen_loc: (1,8)-(1,9) = "("
│ │ │ └── rparen_loc: (1,17)-(1,18) = ")" │ │ │ └── rparen_loc: (1,17)-(1,18) = ")"

View File

@ -22,10 +22,12 @@
│ │ @ ParametersNode (location: (1,5)-(1,14)) │ │ @ ParametersNode (location: (1,5)-(1,14))
│ │ ├── requireds: (length: 2) │ │ ├── requireds: (length: 2)
│ │ │ ├── @ RequiredParameterNode (location: (1,5)-(1,6)) │ │ │ ├── @ RequiredParameterNode (location: (1,5)-(1,6))
│ │ │ │ ├── flags: ∅
│ │ │ │ └── name: :a │ │ │ │ └── name: :a
│ │ │ └── @ MultiTargetNode (location: (1,8)-(1,14)) │ │ │ └── @ MultiTargetNode (location: (1,8)-(1,14))
│ │ │ ├── lefts: (length: 1) │ │ │ ├── lefts: (length: 1)
│ │ │ │ └── @ RequiredParameterNode (location: (1,9)-(1,10)) │ │ │ │ └── @ RequiredParameterNode (location: (1,9)-(1,10))
│ │ │ │ ├── flags: ∅
│ │ │ │ └── name: :b │ │ │ │ └── name: :b
│ │ │ ├── rest: │ │ │ ├── rest:
│ │ │ │ @ SplatNode (location: (1,12)-(1,13)) │ │ │ │ @ SplatNode (location: (1,12)-(1,13))

View File

@ -22,10 +22,12 @@
│ │ @ ParametersNode (location: (1,5)-(1,17)) │ │ @ ParametersNode (location: (1,5)-(1,17))
│ │ ├── requireds: (length: 2) │ │ ├── requireds: (length: 2)
│ │ │ ├── @ RequiredParameterNode (location: (1,5)-(1,6)) │ │ │ ├── @ RequiredParameterNode (location: (1,5)-(1,6))
│ │ │ │ ├── flags: ∅
│ │ │ │ └── name: :a │ │ │ │ └── name: :a
│ │ │ └── @ MultiTargetNode (location: (1,8)-(1,17)) │ │ │ └── @ MultiTargetNode (location: (1,8)-(1,17))
│ │ │ ├── lefts: (length: 1) │ │ │ ├── lefts: (length: 1)
│ │ │ │ └── @ RequiredParameterNode (location: (1,9)-(1,10)) │ │ │ │ └── @ RequiredParameterNode (location: (1,9)-(1,10))
│ │ │ │ ├── flags: ∅
│ │ │ │ └── name: :b │ │ │ │ └── name: :b
│ │ │ ├── rest: │ │ │ ├── rest:
│ │ │ │ @ SplatNode (location: (1,12)-(1,13)) │ │ │ │ @ SplatNode (location: (1,12)-(1,13))
@ -33,6 +35,7 @@
│ │ │ │ └── expression: ∅ │ │ │ │ └── expression: ∅
│ │ │ ├── rights: (length: 1) │ │ │ ├── rights: (length: 1)
│ │ │ │ └── @ RequiredParameterNode (location: (1,15)-(1,16)) │ │ │ │ └── @ RequiredParameterNode (location: (1,15)-(1,16))
│ │ │ │ ├── flags: ∅
│ │ │ │ └── name: :c │ │ │ │ └── name: :c
│ │ │ ├── lparen_loc: (1,8)-(1,9) = "(" │ │ │ ├── lparen_loc: (1,8)-(1,9) = "("
│ │ │ └── rparen_loc: (1,16)-(1,17) = ")" │ │ │ └── rparen_loc: (1,16)-(1,17) = ")"

View File

@ -22,6 +22,7 @@
│ │ @ ParametersNode (location: (1,5)-(1,12)) │ │ @ ParametersNode (location: (1,5)-(1,12))
│ │ ├── requireds: (length: 2) │ │ ├── requireds: (length: 2)
│ │ │ ├── @ RequiredParameterNode (location: (1,5)-(1,6)) │ │ │ ├── @ RequiredParameterNode (location: (1,5)-(1,6))
│ │ │ │ ├── flags: ∅
│ │ │ │ └── name: :a │ │ │ │ └── name: :a
│ │ │ └── @ MultiTargetNode (location: (1,8)-(1,12)) │ │ │ └── @ MultiTargetNode (location: (1,8)-(1,12))
│ │ │ ├── lefts: (length: 0) │ │ │ ├── lefts: (length: 0)
@ -30,6 +31,7 @@
│ │ │ │ ├── operator_loc: (1,9)-(1,10) = "*" │ │ │ │ ├── operator_loc: (1,9)-(1,10) = "*"
│ │ │ │ └── expression: │ │ │ │ └── expression:
│ │ │ │ @ RequiredParameterNode (location: (1,10)-(1,11)) │ │ │ │ @ RequiredParameterNode (location: (1,10)-(1,11))
│ │ │ │ ├── flags: ∅
│ │ │ │ └── name: :b │ │ │ │ └── name: :b
│ │ │ ├── rights: (length: 0) │ │ │ ├── rights: (length: 0)
│ │ │ ├── lparen_loc: (1,8)-(1,9) = "(" │ │ │ ├── lparen_loc: (1,8)-(1,9) = "("

View File

@ -15,9 +15,11 @@
│ │ @ ParametersNode (location: (1,3)-(1,11)) │ │ @ ParametersNode (location: (1,3)-(1,11))
│ │ ├── requireds: (length: 1) │ │ ├── requireds: (length: 1)
│ │ │ └── @ RequiredParameterNode (location: (1,3)-(1,4)) │ │ │ └── @ RequiredParameterNode (location: (1,3)-(1,4))
│ │ │ ├── flags: ∅
│ │ │ └── name: :a │ │ │ └── name: :a
│ │ ├── optionals: (length: 1) │ │ ├── optionals: (length: 1)
│ │ │ └── @ OptionalParameterNode (location: (1,6)-(1,11)) │ │ │ └── @ OptionalParameterNode (location: (1,6)-(1,11))
│ │ │ ├── flags: ∅
│ │ │ ├── name: :b │ │ │ ├── name: :b
│ │ │ ├── name_loc: (1,6)-(1,7) = "b" │ │ │ ├── name_loc: (1,6)-(1,7) = "b"
│ │ │ ├── operator_loc: (1,7)-(1,8) = "=" │ │ │ ├── operator_loc: (1,7)-(1,8) = "="

View File

@ -47,6 +47,7 @@
│ │ @ ParametersNode (location: (2,8)-(2,9)) │ │ @ ParametersNode (location: (2,8)-(2,9))
│ │ ├── requireds: (length: 1) │ │ ├── requireds: (length: 1)
│ │ │ └── @ RequiredParameterNode (location: (2,8)-(2,9)) │ │ │ └── @ RequiredParameterNode (location: (2,8)-(2,9))
│ │ │ ├── flags: ∅
│ │ │ └── name: :c │ │ │ └── name: :c
│ │ ├── optionals: (length: 0) │ │ ├── optionals: (length: 0)
│ │ ├── rest: ∅ │ │ ├── rest: ∅

View File

@ -15,6 +15,7 @@
│ ├── posts: (length: 0) │ ├── posts: (length: 0)
│ ├── keywords: (length: 1) │ ├── keywords: (length: 1)
│ │ └── @ OptionalKeywordParameterNode (location: (1,6)-(1,10)) │ │ └── @ OptionalKeywordParameterNode (location: (1,6)-(1,10))
│ │ ├── flags: ∅
│ │ ├── name: :k │ │ ├── name: :k
│ │ ├── name_loc: (1,6)-(1,8) = "k:" │ │ ├── name_loc: (1,6)-(1,8) = "k:"
│ │ └── value: │ │ └── value:

View File

@ -15,6 +15,7 @@
│ ├── posts: (length: 0) │ ├── posts: (length: 0)
│ ├── keywords: (length: 1) │ ├── keywords: (length: 1)
│ │ └── @ RequiredKeywordParameterNode (location: (1,6)-(1,8)) │ │ └── @ RequiredKeywordParameterNode (location: (1,6)-(1,8))
│ │ ├── flags: ∅
│ │ ├── name: :k │ │ ├── name: :k
│ │ └── name_loc: (1,6)-(1,8) = "k:" │ │ └── name_loc: (1,6)-(1,8) = "k:"
│ ├── keyword_rest: ∅ │ ├── keyword_rest: ∅

Some files were not shown because too many files have changed in this diff Show More