@@ -10231,11 +10231,11 @@ static pm_node_t *
10231
10231
parse_starred_expression(pm_parser_t *parser, pm_binding_power_t binding_power, pm_diagnostic_id_t diag_id) {
10232
10232
if (accept1(parser, PM_TOKEN_USTAR)) {
10233
10233
pm_token_t operator = parser->previous;
10234
- pm_node_t *expression = parse_expression (parser, binding_power, PM_ERR_EXPECT_EXPRESSION_AFTER_STAR);
10234
+ pm_node_t *expression = parse_value_expression (parser, binding_power, PM_ERR_EXPECT_EXPRESSION_AFTER_STAR);
10235
10235
return (pm_node_t *) pm_splat_node_create(parser, &operator, expression);
10236
10236
}
10237
10237
10238
- return parse_expression (parser, binding_power, diag_id);
10238
+ return parse_value_expression (parser, binding_power, diag_id);
10239
10239
}
10240
10240
10241
10241
/**
@@ -10726,7 +10726,7 @@ parse_assocs(pm_parser_t *parser, pm_node_t *node) {
10726
10726
pm_node_t *value = NULL;
10727
10727
10728
10728
if (token_begins_expression_p(parser->current.type)) {
10729
- value = parse_expression (parser, PM_BINDING_POWER_DEFINED, PM_ERR_EXPECT_EXPRESSION_AFTER_SPLAT_HASH);
10729
+ value = parse_value_expression (parser, PM_BINDING_POWER_DEFINED, PM_ERR_EXPECT_EXPRESSION_AFTER_SPLAT_HASH);
10730
10730
} else if (pm_parser_local_depth(parser, &operator) == -1) {
10731
10731
pm_parser_err_token(parser, &operator, PM_ERR_EXPECT_EXPRESSION_AFTER_SPLAT_HASH);
10732
10732
}
@@ -10744,7 +10744,7 @@ parse_assocs(pm_parser_t *parser, pm_node_t *node) {
10744
10744
pm_node_t *value = NULL;
10745
10745
10746
10746
if (token_begins_expression_p(parser->current.type)) {
10747
- value = parse_expression (parser, PM_BINDING_POWER_DEFINED, PM_ERR_HASH_EXPRESSION_AFTER_LABEL);
10747
+ value = parse_value_expression (parser, PM_BINDING_POWER_DEFINED, PM_ERR_HASH_EXPRESSION_AFTER_LABEL);
10748
10748
} else {
10749
10749
if (parser->encoding.isupper_char(label.start, (label.end - 1) - label.start)) {
10750
10750
pm_token_t constant = { .type = PM_TOKEN_CONSTANT, .start = label.start, .end = label.end - 1 };
@@ -10768,7 +10768,7 @@ parse_assocs(pm_parser_t *parser, pm_node_t *node) {
10768
10768
break;
10769
10769
}
10770
10770
default: {
10771
- pm_node_t *key = parse_expression (parser, PM_BINDING_POWER_DEFINED, PM_ERR_HASH_KEY);
10771
+ pm_node_t *key = parse_value_expression (parser, PM_BINDING_POWER_DEFINED, PM_ERR_HASH_KEY);
10772
10772
pm_token_t operator;
10773
10773
10774
10774
if (pm_symbol_node_label_p(key)) {
@@ -10778,7 +10778,7 @@ parse_assocs(pm_parser_t *parser, pm_node_t *node) {
10778
10778
operator = parser->previous;
10779
10779
}
10780
10780
10781
- pm_node_t *value = parse_expression (parser, PM_BINDING_POWER_DEFINED, PM_ERR_HASH_VALUE);
10781
+ pm_node_t *value = parse_value_expression (parser, PM_BINDING_POWER_DEFINED, PM_ERR_HASH_VALUE);
10782
10782
element = (pm_node_t *) pm_assoc_node_create(parser, key, &operator, value);
10783
10783
break;
10784
10784
}
@@ -10874,7 +10874,7 @@ parse_arguments(pm_parser_t *parser, pm_arguments_t *arguments, bool accepts_for
10874
10874
pm_node_t *expression = NULL;
10875
10875
10876
10876
if (token_begins_expression_p(parser->current.type)) {
10877
- expression = parse_expression (parser, PM_BINDING_POWER_DEFINED, PM_ERR_EXPECT_ARGUMENT);
10877
+ expression = parse_value_expression (parser, PM_BINDING_POWER_DEFINED, PM_ERR_EXPECT_ARGUMENT);
10878
10878
} else if (pm_parser_local_depth(parser, &operator) == -1) {
10879
10879
pm_parser_err_token(parser, &operator, PM_ERR_ARGUMENT_NO_FORWARDING_AMP);
10880
10880
}
@@ -10900,7 +10900,7 @@ parse_arguments(pm_parser_t *parser, pm_arguments_t *arguments, bool accepts_for
10900
10900
10901
10901
argument = (pm_node_t *) pm_splat_node_create(parser, &operator, NULL);
10902
10902
} else {
10903
- pm_node_t *expression = parse_expression (parser, PM_BINDING_POWER_DEFINED, PM_ERR_EXPECT_EXPRESSION_AFTER_SPLAT);
10903
+ pm_node_t *expression = parse_value_expression (parser, PM_BINDING_POWER_DEFINED, PM_ERR_EXPECT_EXPRESSION_AFTER_SPLAT);
10904
10904
10905
10905
if (parsed_bare_hash) {
10906
10906
pm_parser_err(parser, operator.start, expression->location.end, PM_ERR_ARGUMENT_SPLAT_AFTER_ASSOC_SPLAT);
@@ -10936,7 +10936,7 @@ parse_arguments(pm_parser_t *parser, pm_arguments_t *arguments, bool accepts_for
10936
10936
/* fallthrough */
10937
10937
default: {
10938
10938
if (argument == NULL) {
10939
- argument = parse_expression (parser, PM_BINDING_POWER_DEFINED, PM_ERR_EXPECT_ARGUMENT);
10939
+ argument = parse_value_expression (parser, PM_BINDING_POWER_DEFINED, PM_ERR_EXPECT_ARGUMENT);
10940
10940
}
10941
10941
10942
10942
bool contains_keyword_splat = false;
@@ -10955,7 +10955,7 @@ parse_arguments(pm_parser_t *parser, pm_arguments_t *arguments, bool accepts_for
10955
10955
pm_keyword_hash_node_t *bare_hash = pm_keyword_hash_node_create(parser);
10956
10956
10957
10957
// Finish parsing the one we are part way through
10958
- pm_node_t *value = parse_expression (parser, PM_BINDING_POWER_DEFINED, PM_ERR_HASH_VALUE);
10958
+ pm_node_t *value = parse_value_expression (parser, PM_BINDING_POWER_DEFINED, PM_ERR_HASH_VALUE);
10959
10959
10960
10960
argument = (pm_node_t *) pm_assoc_node_create(parser, argument, &operator, value);
10961
10961
pm_keyword_hash_node_elements_append(bare_hash, argument);
@@ -11259,7 +11259,7 @@ parse_parameters(
11259
11259
if (accept1(parser, PM_TOKEN_EQUAL)) {
11260
11260
pm_token_t operator = parser->previous;
11261
11261
context_push(parser, PM_CONTEXT_DEFAULT_PARAMS);
11262
- pm_node_t *value = parse_expression (parser, binding_power, PM_ERR_PARAMETER_NO_DEFAULT);
11262
+ pm_node_t *value = parse_value_expression (parser, binding_power, PM_ERR_PARAMETER_NO_DEFAULT);
11263
11263
11264
11264
pm_optional_parameter_node_t *param = pm_optional_parameter_node_create(parser, &name, &operator, value);
11265
11265
pm_parameters_node_optionals_append(params, param);
@@ -11318,7 +11318,7 @@ parse_parameters(
11318
11318
11319
11319
if (token_begins_expression_p(parser->current.type)) {
11320
11320
context_push(parser, PM_CONTEXT_DEFAULT_PARAMS);
11321
- pm_node_t *value = parse_expression (parser, binding_power, PM_ERR_PARAMETER_NO_DEFAULT_KW);
11321
+ pm_node_t *value = parse_value_expression (parser, binding_power, PM_ERR_PARAMETER_NO_DEFAULT_KW);
11322
11322
context_pop(parser);
11323
11323
param = (pm_node_t *) pm_optional_keyword_parameter_node_create(parser, &name, value);
11324
11324
}
@@ -13953,14 +13953,14 @@ parse_expression_prefix(pm_parser_t *parser, pm_binding_power_t binding_power) {
13953
13953
do {
13954
13954
if (accept1(parser, PM_TOKEN_USTAR)) {
13955
13955
pm_token_t operator = parser->previous;
13956
- pm_node_t *expression = parse_expression (parser, PM_BINDING_POWER_DEFINED, PM_ERR_EXPECT_EXPRESSION_AFTER_STAR);
13956
+ pm_node_t *expression = parse_value_expression (parser, PM_BINDING_POWER_DEFINED, PM_ERR_EXPECT_EXPRESSION_AFTER_STAR);
13957
13957
13958
13958
pm_splat_node_t *splat_node = pm_splat_node_create(parser, &operator, expression);
13959
13959
pm_when_node_conditions_append(when_node, (pm_node_t *) splat_node);
13960
13960
13961
13961
if (PM_NODE_TYPE_P(expression, PM_MISSING_NODE)) break;
13962
13962
} else {
13963
- pm_node_t *condition = parse_expression (parser, PM_BINDING_POWER_DEFINED, PM_ERR_CASE_EXPRESSION_AFTER_WHEN);
13963
+ pm_node_t *condition = parse_value_expression (parser, PM_BINDING_POWER_DEFINED, PM_ERR_CASE_EXPRESSION_AFTER_WHEN);
13964
13964
pm_when_node_conditions_append(when_node, condition);
13965
13965
13966
13966
if (PM_NODE_TYPE_P(condition, PM_MISSING_NODE)) break;
@@ -14001,11 +14001,11 @@ parse_expression_prefix(pm_parser_t *parser, pm_binding_power_t binding_power) {
14001
14001
// for guard clauses in the form of `if` or `unless` statements.
14002
14002
if (accept1(parser, PM_TOKEN_KEYWORD_IF_MODIFIER)) {
14003
14003
pm_token_t keyword = parser->previous;
14004
- pm_node_t *predicate = parse_expression (parser, PM_BINDING_POWER_DEFINED, PM_ERR_CONDITIONAL_IF_PREDICATE);
14004
+ pm_node_t *predicate = parse_value_expression (parser, PM_BINDING_POWER_DEFINED, PM_ERR_CONDITIONAL_IF_PREDICATE);
14005
14005
pattern = (pm_node_t *) pm_if_node_modifier_create(parser, pattern, &keyword, predicate);
14006
14006
} else if (accept1(parser, PM_TOKEN_KEYWORD_UNLESS_MODIFIER)) {
14007
14007
pm_token_t keyword = parser->previous;
14008
- pm_node_t *predicate = parse_expression (parser, PM_BINDING_POWER_DEFINED, PM_ERR_CONDITIONAL_UNLESS_PREDICATE);
14008
+ pm_node_t *predicate = parse_value_expression (parser, PM_BINDING_POWER_DEFINED, PM_ERR_CONDITIONAL_UNLESS_PREDICATE);
14009
14009
pattern = (pm_node_t *) pm_unless_node_modifier_create(parser, pattern, &keyword, predicate);
14010
14010
}
14011
14011
@@ -14362,7 +14362,7 @@ parse_expression_prefix(pm_parser_t *parser, pm_binding_power_t binding_power) {
14362
14362
case PM_TOKEN_PARENTHESIS_LEFT: {
14363
14363
parser_lex(parser);
14364
14364
pm_token_t lparen = parser->previous;
14365
- pm_node_t *expression = parse_expression (parser, PM_BINDING_POWER_STATEMENT, PM_ERR_DEF_RECEIVER);
14365
+ pm_node_t *expression = parse_value_expression (parser, PM_BINDING_POWER_STATEMENT, PM_ERR_DEF_RECEIVER);
14366
14366
14367
14367
expect1(parser, PM_TOKEN_PARENTHESIS_RIGHT, PM_ERR_EXPECT_RPAREN);
14368
14368
pm_token_t rparen = parser->previous;
0 commit comments