From d4b7f5e52a33f2d15aafca7f1b040f3f2821fd0c Mon Sep 17 00:00:00 2001 From: Eugen Wissner Date: Thu, 8 Oct 2026 01:29:37 +0200 Subject: Move record constructor type into the braces --- boot/parser.yy | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) (limited to 'boot/parser.yy') diff --git a/boot/parser.yy b/boot/parser.yy index e8c3590..f416d57 100644 --- a/boot/parser.yy +++ b/boot/parser.yy @@ -424,14 +424,9 @@ simple_expression: } | call_expression { $$ = $1; } | "(" expression ")" { $$ = $2; } - | name_reference "{" field_initializers "}" + | "{" type_expression field_initializers "}" { - boot::named_expression *reference = $1; - - $$ = new boot::record_constructor_expression(boot::make_position(@$), - boot::identifier(reference->name, reference->position()), - std::move(reference->arguments), $3); - delete reference; + $$ = new boot::record_constructor_expression(boot::make_position(@$), $2, $3); } | "[" required_expressions "]" { @@ -644,12 +639,13 @@ field_declarations: field_initializer: identifier ":" expression { $$ = std::make_unique(std::move(*$1), $3); } field_initializers: - field_initializer "," field_initializers + ";" field_initializer { $$.push_back(std::move(*$2)); } + | field_initializers "," field_initializer { - $$ = $3; - $$.emplace($$.cbegin(), std::move(*$1)); + $$ = $1; + $$.push_back(std::move(*$3)); } - | field_initializer { $$.push_back(std::move(*$1)); } + | %empty {} array_type_expression: "[" expression "]" type_expression { $$ = new boot::array_type_expression(boot::make_position(@$), $4, $2); } -- cgit v1.2.3