зеркало из https://github.com/github/ruby.git
[ruby/prism] Specific error message for symbol literal with interpolation in hash patterns
https://github.com/ruby/prism/commit/31f0201bae
This commit is contained in:
Родитель
8cc733dff7
Коммит
8ec1c416f7
|
@ -215,6 +215,7 @@ errors:
|
||||||
- PATTERN_EXPRESSION_AFTER_REST
|
- PATTERN_EXPRESSION_AFTER_REST
|
||||||
- PATTERN_HASH_KEY
|
- PATTERN_HASH_KEY
|
||||||
- PATTERN_HASH_KEY_DUPLICATE
|
- PATTERN_HASH_KEY_DUPLICATE
|
||||||
|
- PATTERN_HASH_KEY_INTERPOLATED
|
||||||
- PATTERN_HASH_KEY_LABEL
|
- PATTERN_HASH_KEY_LABEL
|
||||||
- PATTERN_HASH_KEY_LOCALS
|
- PATTERN_HASH_KEY_LOCALS
|
||||||
- PATTERN_IDENT_AFTER_HROCKET
|
- PATTERN_IDENT_AFTER_HROCKET
|
||||||
|
|
|
@ -16240,7 +16240,8 @@ parse_pattern_hash(pm_parser_t *parser, pm_constant_id_list_t *captures, pm_node
|
||||||
// If we get anything else, then this is an error. For this we'll
|
// If we get anything else, then this is an error. For this we'll
|
||||||
// create a missing node for the value and create an assoc node for
|
// create a missing node for the value and create an assoc node for
|
||||||
// the first node in the list.
|
// the first node in the list.
|
||||||
pm_parser_err_node(parser, first_node, PM_ERR_PATTERN_HASH_KEY_LABEL);
|
pm_diagnostic_id_t diag_id = PM_NODE_TYPE_P(first_node, PM_INTERPOLATED_SYMBOL_NODE) ? PM_ERR_PATTERN_HASH_KEY_INTERPOLATED : PM_ERR_PATTERN_HASH_KEY_LABEL;
|
||||||
|
pm_parser_err_node(parser, first_node, diag_id);
|
||||||
|
|
||||||
pm_token_t operator = not_provided(parser);
|
pm_token_t operator = not_provided(parser);
|
||||||
pm_node_t *value = (pm_node_t *) pm_missing_node_create(parser, first_node->location.start, first_node->location.end);
|
pm_node_t *value = (pm_node_t *) pm_missing_node_create(parser, first_node->location.start, first_node->location.end);
|
||||||
|
|
|
@ -298,7 +298,8 @@ static const pm_diagnostic_data_t diagnostic_messages[PM_DIAGNOSTIC_ID_MAX] = {
|
||||||
[PM_ERR_PATTERN_EXPRESSION_AFTER_REST] = { "unexpected pattern expression after the `**` expression", PM_ERROR_LEVEL_SYNTAX },
|
[PM_ERR_PATTERN_EXPRESSION_AFTER_REST] = { "unexpected pattern expression after the `**` expression", PM_ERROR_LEVEL_SYNTAX },
|
||||||
[PM_ERR_PATTERN_HASH_KEY] = { "expected a key in the hash pattern", PM_ERROR_LEVEL_SYNTAX },
|
[PM_ERR_PATTERN_HASH_KEY] = { "expected a key in the hash pattern", PM_ERROR_LEVEL_SYNTAX },
|
||||||
[PM_ERR_PATTERN_HASH_KEY_DUPLICATE] = { "duplicated key name", PM_ERROR_LEVEL_SYNTAX },
|
[PM_ERR_PATTERN_HASH_KEY_DUPLICATE] = { "duplicated key name", PM_ERROR_LEVEL_SYNTAX },
|
||||||
[PM_ERR_PATTERN_HASH_KEY_LABEL] = { "expected a label as the key in the hash pattern", PM_ERROR_LEVEL_SYNTAX }, // TODO // THIS // AND // ABOVE // IS WEIRD
|
[PM_ERR_PATTERN_HASH_KEY_INTERPOLATED] = { "symbol literal with interpolation is not allowed", PM_ERROR_LEVEL_SYNTAX },
|
||||||
|
[PM_ERR_PATTERN_HASH_KEY_LABEL] = { "expected a label as the key in the hash pattern", PM_ERROR_LEVEL_SYNTAX },
|
||||||
[PM_ERR_PATTERN_HASH_KEY_LOCALS] = { "key must be valid as local variables", PM_ERROR_LEVEL_SYNTAX },
|
[PM_ERR_PATTERN_HASH_KEY_LOCALS] = { "key must be valid as local variables", PM_ERROR_LEVEL_SYNTAX },
|
||||||
[PM_ERR_PATTERN_IDENT_AFTER_HROCKET] = { "expected an identifier after the `=>` operator", PM_ERROR_LEVEL_SYNTAX },
|
[PM_ERR_PATTERN_IDENT_AFTER_HROCKET] = { "expected an identifier after the `=>` operator", PM_ERROR_LEVEL_SYNTAX },
|
||||||
[PM_ERR_PATTERN_LABEL_AFTER_COMMA] = { "expected a label after the `,` in the hash pattern", PM_ERROR_LEVEL_SYNTAX },
|
[PM_ERR_PATTERN_LABEL_AFTER_COMMA] = { "expected a label after the `,` in the hash pattern", PM_ERROR_LEVEL_SYNTAX },
|
||||||
|
|
Загрузка…
Ссылка в новой задаче