Coerce pattern_element.key to be an identifier

This commit is contained in:
Asger F
2026-06-19 10:31:34 +02:00
parent 63e1cc90e9
commit c01264d05c
2 changed files with 3 additions and 7 deletions

View File

@@ -283,7 +283,7 @@ fn translation_rules() -> Vec<yeast::Rule> {
// `directly_assignable_expression` is just a wrapper; unwrap it
rule!((directly_assignable_expression expr: @inner) => {inner}),
// tuple_pattern_item → pattern_element (preserves optional name/key)
rule!((tuple_pattern_item name: _? @key pattern: @pat) => (pattern_element key: {..key} pattern: {pat})),
rule!((tuple_pattern_item name: @key pattern: @pat) => (pattern_element key: (identifier #{key}) pattern: {pat})),
rule!((tuple_pattern_item pattern: @pat) => (pattern_element pattern: {pat})),
// Pattern with 'let' or 'var' binding: extract the inner pattern
// TODO: Names in a pattern need to be translated to expr_equality_pattern if not under a 'var/let' but we lack a way to pass down context to do this.

View File

@@ -843,9 +843,7 @@ top_level
constructor_pattern
element:
pattern_element
key:
name_expr <-- ERROR: The field pattern_element.key should contain identifier, but got name_expr
identifier: identifier "isAcknowledged"
key: identifier "isAcknowledged"
pattern: tuple_pattern "false"
constructor:
member_access_expr
@@ -868,9 +866,7 @@ top_level
constructor_pattern
element:
pattern_element
key:
name_expr <-- ERROR: The field pattern_element.key should contain identifier, but got name_expr
identifier: identifier "threadRowId"
key: identifier "threadRowId"
pattern: tuple_pattern "_"
pattern_element
pattern: