aboutsummaryrefslogtreecommitdiff
path: root/src/compiler.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/compiler.c')
-rw-r--r--src/compiler.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/src/compiler.c b/src/compiler.c
index 8dda1c6..6e6bc4b 100644
--- a/src/compiler.c
+++ b/src/compiler.c
@@ -44,6 +44,7 @@ static CHECK_RESULT int create_default_type(amal_compiler *compiler, const char
expr->resolve_data.type.type = RESOLVED_TYPE_LHS_EXPR;
expr->resolve_data.type.value.lhs_expr = lhs_expr;
expr->resolve_data.status = AST_RESOLVED;
+ lhs_expr->rhs_expr->resolve_data = expr->resolve_data;
return scope_add_child(&compiler->root_scope, expr);
}
@@ -58,12 +59,12 @@ static CHECK_RESULT int create_default_type_fixed_size(amal_compiler *compiler,
static CHECK_RESULT int init_default_types(amal_compiler *compiler) {
return_if_error(create_default_type_fixed_size(compiler, "i8", 1, &compiler->default_types.i8));
return_if_error(create_default_type_fixed_size(compiler, "i16", 2, &compiler->default_types.i16));
- return_if_error(create_default_type_fixed_size(compiler, "i32", 3, &compiler->default_types.i32));
- return_if_error(create_default_type_fixed_size(compiler, "i64", 4, &compiler->default_types.i64));
+ return_if_error(create_default_type_fixed_size(compiler, "i32", 4, &compiler->default_types.i32));
+ return_if_error(create_default_type_fixed_size(compiler, "i64", 8, &compiler->default_types.i64));
return_if_error(create_default_type_fixed_size(compiler, "u8", 1, &compiler->default_types.u8));
return_if_error(create_default_type_fixed_size(compiler, "u16", 2, &compiler->default_types.u16));
- return_if_error(create_default_type_fixed_size(compiler, "u32", 3, &compiler->default_types.u32));
- return_if_error(create_default_type_fixed_size(compiler, "u64", 4, &compiler->default_types.u64));
+ return_if_error(create_default_type_fixed_size(compiler, "u32", 4, &compiler->default_types.u32));
+ return_if_error(create_default_type_fixed_size(compiler, "u64", 8, &compiler->default_types.u64));
return_if_error(create_default_type_num_pointers(compiler, "isize", 1, &compiler->default_types.isize));
return_if_error(create_default_type_num_pointers(compiler, "usize", 1, &compiler->default_types.usize));
return_if_error(create_default_type_fixed_size(compiler, "f32", 4, &compiler->default_types.f32));
@@ -185,7 +186,7 @@ static CHECK_RESULT int amal_compiler_load_in_this_thread(amal_compiler *compile
result = AMAL_COMPILER_ERR;
cleanup_if_error(amal_mutex_lock(&compiler->mutex, "amal_compiler_load_in_this_thread, create arena allocator"));
- return_if_error(arena_allocator_alloc(&compiler->allocator, sizeof(ArenaAllocator), (void**)&parser_allocator));
+ cleanup_if_error(arena_allocator_alloc(&compiler->allocator, sizeof(ArenaAllocator), (void**)&parser_allocator));
amal_mutex_tryunlock(&compiler->mutex);
return_if_error(arena_allocator_init(parser_allocator));