@@ -19557,18 +19557,27 @@ parse_expression_prefix(pm_parser_t *parser, pm_binding_power_t binding_power, b
1955719557 pm_token_t lparen;
1955819558 pm_token_t rparen;
1955919559 pm_node_t *expression;
19560+
1956019561 context_push(parser, PM_CONTEXT_DEFINED);
19562+ bool newline = accept1(parser, PM_TOKEN_NEWLINE);
1956119563
1956219564 if (accept1(parser, PM_TOKEN_PARENTHESIS_LEFT)) {
1956319565 lparen = parser->previous;
19564- expression = parse_expression(parser, PM_BINDING_POWER_COMPOSITION, true, false, PM_ERR_DEFINED_EXPRESSION, (uint16_t) (depth + 1));
1956519566
19566- if (parser->recovering) {
19567+ if (newline && accept1(parser, PM_TOKEN_PARENTHESIS_RIGHT)) {
19568+ expression = (pm_node_t *) pm_parentheses_node_create(parser, &lparen, NULL, &parser->previous, 0);
19569+ lparen = not_provided(parser);
1956719570 rparen = not_provided(parser);
1956819571 } else {
19569- accept1(parser, PM_TOKEN_NEWLINE);
19570- expect1(parser, PM_TOKEN_PARENTHESIS_RIGHT, PM_ERR_EXPECT_RPAREN);
19571- rparen = parser->previous;
19572+ expression = parse_expression(parser, PM_BINDING_POWER_COMPOSITION, true, false, PM_ERR_DEFINED_EXPRESSION, (uint16_t) (depth + 1));
19573+
19574+ if (parser->recovering) {
19575+ rparen = not_provided(parser);
19576+ } else {
19577+ accept1(parser, PM_TOKEN_NEWLINE);
19578+ expect1(parser, PM_TOKEN_PARENTHESIS_RIGHT, PM_ERR_EXPECT_RPAREN);
19579+ rparen = parser->previous;
19580+ }
1957219581 }
1957319582 } else {
1957419583 lparen = not_provided(parser);
0 commit comments