Skip to content

Commit a6fdb8a

Browse files
committed
Constants on rest parameter nodes
1 parent 5e1a8fb commit a6fdb8a

40 files changed

+83
-80
lines changed

config.yml

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2063,10 +2063,12 @@ nodes:
20632063
`ex` is in the `exception` field.
20642064
- name: RestParameterNode
20652065
fields:
2066-
- name: operator_loc
2067-
type: location
2066+
- name: name
2067+
type: constant?
20682068
- name: name_loc
20692069
type: location?
2070+
- name: operator_loc
2071+
type: location
20702072
comment: |
20712073
Represents a rest parameter to a method, block, or lambda definition.
20722074

lib/yarp.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -540,7 +540,7 @@ def self.yarp_locals(source)
540540
sorted = [
541541
*params.requireds.grep(RequiredParameterNode).map(&:name),
542542
*params.optionals.map(&:name),
543-
*((params.rest.name ? params.rest.name.to_sym : :*) if params.rest && params.rest.operator != ","),
543+
*((params.rest.name || :*) if params.rest && params.rest.operator != ","),
544544
*params.posts.grep(RequiredParameterNode).map(&:name),
545545
*params.keywords.reject(&:value).map(&:name),
546546
*params.keywords.select(&:value).map(&:name)

src/yarp.c

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3904,8 +3904,9 @@ yp_rest_parameter_node_create(yp_parser_t *parser, const yp_token_t *operator, c
39043904
.end = (name->type == YP_TOKEN_NOT_PROVIDED ? operator->end : name->end)
39053905
}
39063906
},
3907-
.operator_loc = YP_LOCATION_TOKEN_VALUE(operator),
3908-
.name_loc = YP_OPTIONAL_LOCATION_TOKEN_VALUE(name)
3907+
.name = yp_parser_optional_constant_id_token(parser, name),
3908+
.name_loc = YP_OPTIONAL_LOCATION_TOKEN_VALUE(name),
3909+
.operator_loc = YP_LOCATION_TOKEN_VALUE(operator)
39093910
};
39103911

39113912
return node;

test/yarp/errors_test.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1051,7 +1051,7 @@ def test_duplicated_parameter_names
10511051
expected = DefNode(
10521052
Location(),
10531053
nil,
1054-
ParametersNode([RequiredParameterNode(:a), RequiredParameterNode(:b)], [], [], RestParameterNode(Location(), Location()), [], nil, nil),
1054+
ParametersNode([RequiredParameterNode(:a), RequiredParameterNode(:b)], [], [], RestParameterNode(:a, Location(), Location()), [], nil, nil),
10551055
nil,
10561056
[:a, :b],
10571057
Location(),
@@ -1105,7 +1105,7 @@ def test_duplicated_parameter_names
11051105
expected = DefNode(
11061106
Location(),
11071107
nil,
1108-
ParametersNode([], [OptionalParameterNode(:a, Location(), Location(), IntegerNode())], [RequiredParameterNode(:b)], RestParameterNode(Location(), Location()), [], nil, nil),
1108+
ParametersNode([], [OptionalParameterNode(:a, Location(), Location(), IntegerNode())], [RequiredParameterNode(:b)], RestParameterNode(:c, Location(), Location()), [], nil, nil),
11091109
nil,
11101110
[:a, :b, :c],
11111111
Location(),

test/yarp/snapshots/blocks.txt

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

test/yarp/snapshots/methods.txt

Lines changed: 3 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

test/yarp/snapshots/procs.txt

Lines changed: 3 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

test/yarp/snapshots/seattlerb/block_arg_opt_splat.txt

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

test/yarp/snapshots/seattlerb/block_arg_opt_splat_arg_block_omfg.txt

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

test/yarp/snapshots/seattlerb/block_arg_splat_arg.txt

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)