expect_token(parser, ':');
if (parser->curr->type == ':' && !member_is_used) {
- consume_token(parser);
if (!s_node->scope) {
// NOTE: The parent scope will be filled out during symbol resolution.
s_node->scope = scope_create(context.ast_alloc, NULL, s_node->token->pos);
}
- AstTyped* expression = parse_top_level_expression(parser);
- symbol_introduce(s_node->scope, member_name, (AstNode *) expression);
+ AstBinding* binding = parse_top_level_binding(parser, member_name);
+ symbol_introduce(s_node->scope, binding->token, binding->node);
+
+ if (parser->curr->type == ';') consume_token(parser);
} else {
AstStructMember* mem = make_node(AstStructMember, Ast_Kind_Struct_Member);
EMIT_FUNC(compound_load, Type* type, u64 offset) {
bh_arr(WasmInstruction) code = *pcode;
- u32 mem_count = type_linear_member_count(type);
+ i32 mem_count = type_linear_member_count(type);
TypeWithOffset two;
if (mem_count == 1) {
u64 loc_idx = local_raw_allocate(mod->local_alloc, WASM_TYPE_INT32);
if (location_first) WIL(WI_LOCAL_SET, loc_idx);
- u32 elem_count = type_linear_member_count(type);
+ i32 elem_count = type_linear_member_count(type);
forir (i, elem_count - 1, 0) {
type_linear_member_lookup(type, i, &two);