Skip to content

Commit

Permalink
Merge pull request #1226 from ruby/splat-rhs
Browse files Browse the repository at this point in the history
Make lone splat on RHS an array
  • Loading branch information
kddnewton authored Aug 10, 2023
2 parents e7c9378 + 2335326 commit 9171a95
Show file tree
Hide file tree
Showing 4 changed files with 34 additions and 12 deletions.
6 changes: 3 additions & 3 deletions src/yarp.c
Original file line number Diff line number Diff line change
Expand Up @@ -12227,18 +12227,18 @@ static inline yp_node_t *
parse_assignment_value(yp_parser_t *parser, yp_binding_power_t previous_binding_power, yp_binding_power_t binding_power, const char *message) {
yp_node_t *value = parse_starred_expression(parser, binding_power, message);

if (previous_binding_power == YP_BINDING_POWER_STATEMENT && accept(parser, YP_TOKEN_COMMA)) {
if (previous_binding_power == YP_BINDING_POWER_STATEMENT && (YP_NODE_TYPE_P(value, YP_NODE_SPLAT_NODE) || match_type_p(parser, YP_TOKEN_COMMA))) {
yp_token_t opening = not_provided(parser);
yp_array_node_t *array = yp_array_node_create(parser, &opening);

yp_array_node_elements_append(array, value);
value = (yp_node_t *) array;

do {
while (accept(parser, YP_TOKEN_COMMA)) {
yp_node_t *element = parse_starred_expression(parser, binding_power, "Expected an element for the array.");
yp_array_node_elements_append(array, element);
if (YP_NODE_TYPE_P(element, YP_NODE_MISSING_NODE)) break;
} while (accept(parser, YP_TOKEN_COMMA));
}
}

return value;
Expand Down
10 changes: 7 additions & 3 deletions test/snapshots/variables.txt

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

10 changes: 7 additions & 3 deletions test/snapshots/whitequark/asgn_mrhs.txt

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

20 changes: 17 additions & 3 deletions test/snapshots/whitequark/masgn_splat.txt

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

0 comments on commit 9171a95

Please sign in to comment.