[ruby/prism] Ignore newlines in labelled lambda arguments

https://github.com/ruby/prism/commit/4ce6bcf182
This commit is contained in:
Haldun Bayhantopcu 2024-11-08 18:26:50 +01:00 committed by Kevin Newton
parent a21237571e
commit 0dc35f0d30
Notes: git 2024-12-16 15:51:42 +00:00
2 changed files with 17 additions and 3 deletions

View File

@ -14523,6 +14523,7 @@ parse_parameters(
bool allows_trailing_comma,
bool allows_forwarding_parameters,
bool accepts_blocks_in_defaults,
bool in_block,
uint16_t depth
) {
pm_do_loop_stack_push(parser, false);
@ -14687,7 +14688,7 @@ parse_parameters(
break;
}
case PM_TOKEN_LABEL: {
if (!uses_parentheses) parser->in_keyword_arg = true;
if (!uses_parentheses && !in_block) parser->in_keyword_arg = true;
update_parameter_state(parser, &parser->current, &order);
context_push(parser, PM_CONTEXT_DEFAULT_PARAMS);
@ -15251,6 +15252,7 @@ parse_block_parameters(
allows_trailing_comma,
false,
accepts_blocks_in_defaults,
true,
(uint16_t) (depth + 1)
);
}
@ -19405,7 +19407,7 @@ parse_expression_prefix(pm_parser_t *parser, pm_binding_power_t binding_power, b
if (match1(parser, PM_TOKEN_PARENTHESIS_RIGHT)) {
params = NULL;
} else {
params = parse_parameters(parser, PM_BINDING_POWER_DEFINED, true, false, true, true, (uint16_t) (depth + 1));
params = parse_parameters(parser, PM_BINDING_POWER_DEFINED, true, false, true, true, false, (uint16_t) (depth + 1));
}
lex_state_set(parser, PM_LEX_STATE_BEG);
@ -19430,7 +19432,7 @@ parse_expression_prefix(pm_parser_t *parser, pm_binding_power_t binding_power, b
lparen = not_provided(parser);
rparen = not_provided(parser);
params = parse_parameters(parser, PM_BINDING_POWER_DEFINED, false, false, true, true, (uint16_t) (depth + 1));
params = parse_parameters(parser, PM_BINDING_POWER_DEFINED, false, false, true, true, false, (uint16_t) (depth + 1));
context_pop(parser);
break;

View File

@ -9,3 +9,15 @@
-> foo = bar do end
-> foo: bar do end
p{|a:
b|}
->(a:
b){}
->a:
b{}
->a:
{}