From 96f23306f0a9859c2e2b2f5d22cfab6eb74a0e5e Mon Sep 17 00:00:00 2001 From: Kevin Newton Date: Wed, 8 Jan 2025 15:39:03 -0500 Subject: [PATCH] [ruby/prism] Revert "Reject pattern match with unexpected double splat inside array" https://github.com/ruby/prism/commit/51e7c84124 --- prism/prism.c | 3 +-- ...ern_match_with_unexpected_splat_inside_arraytxt | 14 -------------- 2 files changed, 1 insertion(+), 16 deletions(-) delete mode 100644 test/prism/errors/pattern_match_with_unexpected_splat_inside_arraytxt diff --git a/prism/prism.c b/prism/prism.c index 6e3b41100b..e4ccfa9797 100644 --- a/prism/prism.c +++ b/prism/prism.c @@ -20513,13 +20513,12 @@ parse_expression_prefix(pm_parser_t *parser, pm_binding_power_t binding_power, b return (pm_node_t *) node; } case PM_TOKEN_UMINUS_NUM: { - pm_token_t prev = parser->previous; parser_lex(parser); pm_token_t operator = parser->previous; pm_node_t *node = parse_expression(parser, pm_binding_powers[parser->previous.type].right, false, false, PM_ERR_UNARY_RECEIVER, (uint16_t) (depth + 1)); - if ((prev.type != PM_TOKEN_BRACKET_LEFT_ARRAY) && (accept1(parser, PM_TOKEN_STAR_STAR))) { + if (accept1(parser, PM_TOKEN_STAR_STAR)) { pm_token_t exponent_operator = parser->previous; pm_node_t *exponent = parse_expression(parser, pm_binding_powers[exponent_operator.type].right, false, false, PM_ERR_EXPECT_ARGUMENT, (uint16_t) (depth + 1)); node = (pm_node_t *) pm_call_node_binary_create(parser, node, &exponent_operator, exponent, 0); diff --git a/test/prism/errors/pattern_match_with_unexpected_splat_inside_arraytxt b/test/prism/errors/pattern_match_with_unexpected_splat_inside_arraytxt deleted file mode 100644 index d19491e6bf..0000000000 --- a/test/prism/errors/pattern_match_with_unexpected_splat_inside_arraytxt +++ /dev/null @@ -1,14 +0,0 @@ -a => [-2*b] - ^ expected a `]` to close the pattern expression - ^ unexpected '*', expecting end-of-input - ^ unexpected '*', ignoring it - ^ unexpected ']', expecting end-of-input - ^ unexpected ']', ignoring it - -a => [-2**b] - ^ expected a `]` to close the pattern expression - ^~ unexpected '**', expecting end-of-input - ^~ unexpected '**', ignoring it - ^ unexpected ']', expecting end-of-input - ^ unexpected ']', ignoring it -