@@ -19607,18 +19607,27 @@ parse_expression_prefix(pm_parser_t *parser, pm_binding_power_t binding_power, b
1960719607 pm_token_t lparen;
1960819608 pm_token_t rparen;
1960919609 pm_node_t *expression;
19610+
1961019611 context_push(parser, PM_CONTEXT_DEFINED);
19612+ bool newline = accept1(parser, PM_TOKEN_NEWLINE);
1961119613
1961219614 if (accept1(parser, PM_TOKEN_PARENTHESIS_LEFT)) {
1961319615 lparen = parser->previous;
19614- expression = parse_expression(parser, PM_BINDING_POWER_COMPOSITION, true, false, PM_ERR_DEFINED_EXPRESSION, (uint16_t) (depth + 1));
1961519616
19616- if (parser->recovering) {
19617+ if (newline && accept1(parser, PM_TOKEN_PARENTHESIS_RIGHT)) {
19618+ expression = (pm_node_t *) pm_parentheses_node_create(parser, &lparen, NULL, &parser->previous, 0);
19619+ lparen = not_provided(parser);
1961719620 rparen = not_provided(parser);
1961819621 } else {
19619- accept1(parser, PM_TOKEN_NEWLINE);
19620- expect1(parser, PM_TOKEN_PARENTHESIS_RIGHT, PM_ERR_EXPECT_RPAREN);
19621- rparen = parser->previous;
19622+ expression = parse_expression(parser, PM_BINDING_POWER_COMPOSITION, true, false, PM_ERR_DEFINED_EXPRESSION, (uint16_t) (depth + 1));
19623+
19624+ if (parser->recovering) {
19625+ rparen = not_provided(parser);
19626+ } else {
19627+ accept1(parser, PM_TOKEN_NEWLINE);
19628+ expect1(parser, PM_TOKEN_PARENTHESIS_RIGHT, PM_ERR_EXPECT_RPAREN);
19629+ rparen = parser->previous;
19630+ }
1962219631 }
1962319632 } else {
1962419633 lparen = not_provided(parser);
0 commit comments