From 9a4b2fab4d347bdd78928149998e78adb660934a Mon Sep 17 00:00:00 2001 From: Brendan Hansen Date: Thu, 3 Jun 2021 14:02:03 -0500 Subject: [PATCH] MAYBE BREAKING CHANGE; Polymorphic structure types are no longer known immediately --- bin/onyx | Bin 367056 -> 367056 bytes core/stdio.onyx | 2 +- include/onyxastnodes.h | 6 ++- src/onyxchecker.c | 111 ++++++++++++++++++++++++----------------- src/onyxtypes.c | 57 +++++++++++++++------ src/onyxutils.c | 51 ++++++------------- 6 files changed, 128 insertions(+), 99 deletions(-) diff --git a/bin/onyx b/bin/onyx index 8c7dc83053608610e844951eb4596635c3013ee9..201a94b120d9f13b7f02ce27549187fb0ee85dc5 100755 GIT binary patch delta 92405 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 XOYe3L>zKLPireVfvhi-`@vZ(p*1E5V delta 91789 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 == Unary_Op_Cast) { char* err; + if (unaryop->type == NULL) return Check_Yield_Macro; + if (!cast_is_legal(unaryop->expr->type, unaryop->type, &err)) { onyx_report_error(unaryop->token->pos, "Cast Error: %s", err); return Check_Error; @@ -1021,7 +1023,7 @@ CheckStatus check_struct_literal(AstStructLiteral* sl) { } fill_in_type((AstTyped *) sl); - if (sl->type == NULL) return Check_Error; + if (sl->type == NULL) return Check_Yield_Macro; } if (!type_is_structlike_strict(sl->type)) { @@ -1034,25 +1036,29 @@ CheckStatus check_struct_literal(AstStructLiteral* sl) { i32 mem_count = type_structlike_mem_count(sl->type); arguments_ensure_length(&sl->args, mem_count); - char* err_msg = NULL; - if (!fill_in_arguments(&sl->args, (AstNode *) sl, &err_msg)) { - onyx_report_error(sl->token->pos, err_msg); - - bh_arr_each(AstTyped *, value, sl->args.values) { - if (*value == NULL) { - i32 member_idx = value - sl->args.values; // Pointer subtraction hack - StructMember smem; - type_lookup_member_by_idx(sl->type, member_idx, &smem); - - onyx_report_error(sl->token->pos, - "Value not given for %d%s member, '%s', for type '%s'.", - member_idx + 1, bh_num_suffix(member_idx + 1), - smem.name, type_get_name(sl->type)); + // :Idempotency + if ((sl->flags & Ast_Flag_Has_Been_Checked) == 0) { + char* err_msg = NULL; + if (!fill_in_arguments(&sl->args, (AstNode *) sl, &err_msg)) { + onyx_report_error(sl->token->pos, err_msg); + + bh_arr_each(AstTyped *, value, sl->args.values) { + if (*value == NULL) { + i32 member_idx = value - sl->args.values; // Pointer subtraction hack + StructMember smem; + type_lookup_member_by_idx(sl->type, member_idx, &smem); + + onyx_report_error(sl->token->pos, + "Value not given for %d%s member, '%s', for type '%s'.", + member_idx + 1, bh_num_suffix(member_idx + 1), + smem.name, type_get_name(sl->type)); + } } - } - return Check_Error; + return Check_Error; + } } + sl->flags |= Ast_Flag_Has_Been_Checked; AstTyped** actual = sl->args.values; StructMember smem; @@ -1096,6 +1102,7 @@ CheckStatus check_struct_literal(AstStructLiteral* sl) { } CheckStatus check_array_literal(AstArrayLiteral* al) { + // :Idempotency if ((al->flags & Ast_Flag_Array_Literal_Typed) == 0) { if (al->atnode == NULL) return Check_Success; @@ -1105,7 +1112,7 @@ CheckStatus check_array_literal(AstArrayLiteral* al) { } fill_in_type((AstTyped *) al); - if (al->type == NULL) return Check_Error; + if (al->type == NULL) return Check_Yield_Macro; al->type = type_make_array(context.ast_alloc, al->type, bh_arr_length(al->values)); if (al->type == NULL || al->type->kind != Type_Kind_Array) { @@ -1128,6 +1135,13 @@ CheckStatus check_array_literal(AstArrayLiteral* al) { bh_arr_each(AstTyped *, expr, al->values) { CHECK(expression, expr); + // HACK HACK HACK + if ((*expr)->type == NULL && + (*expr)->entity != NULL && + (*expr)->entity->state <= Entity_State_Check_Types) { + return Check_Yield_Macro; + } + al->flags &= ((*expr)->flags & Ast_Flag_Comptime) | (al->flags &~ Ast_Flag_Comptime); if (!type_check_or_auto_cast(expr, elem_type)) { @@ -1353,21 +1367,25 @@ CheckStatus check_method_call(AstBinaryOp** mcall) { CHECK(expression, &(*mcall)->left); AstTyped* implicit_argument = (*mcall)->left; - - // Implicitly take the address of the value if it is not already a pointer type. - // This could be weird to think about semantically so some testing with real code - // would be good. - brendanfh 2020/02/05 - if (implicit_argument->type->kind != Type_Kind_Pointer) - implicit_argument = (AstTyped *) make_address_of(context.ast_alloc, implicit_argument); - - implicit_argument = (AstTyped *) make_argument(context.ast_alloc, implicit_argument); // Symbol resolution should have ensured that this is call node. AstCall* call_node = (AstCall *) (*mcall)->right; assert(call_node->kind == Ast_Kind_Call); - bh_arr_insertn(call_node->args.values, 0, 1); - call_node->args.values[0] = implicit_argument; + // :Idempotency + if (((*mcall)->flags & Ast_Flag_Has_Been_Checked) == 0) { + // Implicitly take the address of the value if it is not already a pointer type. + // This could be weird to think about semantically so some testing with real code + // would be good. - brendanfh 2020/02/05 + if (implicit_argument->type->kind != Type_Kind_Pointer) + implicit_argument = (AstTyped *) make_address_of(context.ast_alloc, implicit_argument); + + implicit_argument = (AstTyped *) make_argument(context.ast_alloc, implicit_argument); + + bh_arr_insertn(call_node->args.values, 0, 1); + call_node->args.values[0] = implicit_argument; + } + (*mcall)->flags |= Ast_Flag_Has_Been_Checked; CHECK(call, call_node); call_node->next = (*mcall)->next; @@ -1380,10 +1398,8 @@ CheckStatus check_size_of(AstSizeOf* so) { fill_in_array_count(so->so_ast_type); so->so_type = type_build_from_ast(context.ast_alloc, so->so_ast_type); - if (so->so_type == NULL) { - onyx_report_error(so->token->pos, "Error with type used here."); - return Check_Error; - } + if (so->so_type == NULL) return Check_Yield_Macro; + so->size = type_size_of(so->so_type); return Check_Success; @@ -1393,10 +1409,8 @@ CheckStatus check_align_of(AstAlignOf* ao) { fill_in_array_count(ao->ao_ast_type); ao->ao_type = type_build_from_ast(context.ast_alloc, ao->ao_ast_type); - if (ao->ao_type == NULL) { - onyx_report_error(ao->token->pos, "Error with type used here."); - return Check_Error; - } + if (ao->ao_type == NULL) return Check_Yield_Macro; + ao->alignment = type_alignment_of(ao->ao_type); return Check_Success; @@ -1555,9 +1569,12 @@ CheckStatus check_statement(AstNode** pstmt) { // in a block in order to efficiently allocate enough space and registers // for them all. Now with LocalAllocator, this is no longer necessary. // Therefore, locals stay in the tree and need to be passed along. - case Ast_Kind_Local: - fill_in_type((AstTyped *) stmt); + case Ast_Kind_Local: { + AstTyped* typed_stmt = (AstTyped *) stmt; + fill_in_type(typed_stmt); + if (typed_stmt->type_node != NULL && typed_stmt->type == NULL) return Check_Yield_Macro; return Check_Success; + } default: CHECK(expression, (AstTyped **) pstmt); @@ -1610,7 +1627,7 @@ CheckStatus check_function(AstFunction* func) { expected_return_type = func->type->Function.return_type; if (func->body) { CheckStatus status = check_block(func->body); - if (status != Check_Success && func->generated_from) + if (status == Check_Error && func->generated_from) onyx_report_error(func->generated_from->pos, "Error in polymorphic procedure generated from this location."); return status; @@ -1658,7 +1675,10 @@ CheckStatus check_struct(AstStructType* s_node) { bh_arr_each(AstStructMember *, smem, s_node->members) { if ((*smem)->type_node == NULL && (*smem)->initial_value != NULL) { CHECK(expression, &(*smem)->initial_value); + fill_in_type((*smem)->initial_value); + if ((*smem)->initial_value->type == NULL) return Check_Yield_Macro; + (*smem)->type = resolve_expression_type((*smem)->initial_value); if ((*smem)->type == NULL) { @@ -1757,13 +1777,12 @@ CheckStatus check_function_header(AstFunction* func) { if (local->type_node != NULL) CHECK(type, local->type_node); fill_in_type((AstTyped *) local); - if (local->type == NULL) { - onyx_report_error(param->local->token->pos, - "Unable to resolve type for parameter, '%b'", - local->token->text, - local->token->length); - return Check_Error; + // onyx_report_error(param->local->token->pos, + // "Unable to resolve type for parameter, '%b'", + // local->token->text, + // local->token->length); + return Check_Yield_Macro; } if (local->type->kind == Type_Kind_Compound) { @@ -1797,12 +1816,14 @@ CheckStatus check_function_header(AstFunction* func) { if (func->return_type != NULL) CHECK(type, func->return_type); func->type = type_build_function_type(context.ast_alloc, func); + if (func->type == NULL) return Check_Yield_Macro; return Check_Success; } CheckStatus check_memres_type(AstMemRes* memres) { fill_in_type((AstTyped *) memres); + if (memres->type_node && !memres->type) return Check_Yield_Macro; return Check_Success; } diff --git a/src/onyxtypes.c b/src/onyxtypes.c index bfb7b071..800ff538 100644 --- a/src/onyxtypes.c +++ b/src/onyxtypes.c @@ -227,17 +227,23 @@ Type* type_build_from_ast(bh_allocator alloc, AstType* type_node) { AstFunctionType* ftype_node = (AstFunctionType *) type_node; u64 param_count = ftype_node->param_count; + Type* return_type = type_build_from_ast(alloc, ftype_node->return_type); + if (return_type == NULL) return NULL; + Type* func_type = bh_alloc(alloc, sizeof(Type) + sizeof(Type *) * param_count); func_type->kind = Type_Kind_Function; func_type->ast_type = type_node; func_type->Function.param_count = param_count; func_type->Function.needed_param_count = param_count; - func_type->Function.return_type = type_build_from_ast(alloc, ftype_node->return_type); + func_type->Function.return_type = return_type; if (param_count > 0) fori (i, 0, (i64) param_count) { func_type->Function.params[i] = type_build_from_ast(alloc, ftype_node->params[i]); + + // LEAK LEAK LEAK + if (func_type->Function.params[i] == NULL) return NULL; } return func_type; @@ -281,22 +287,31 @@ Type* type_build_from_ast(bh_allocator alloc, AstType* type_node) { case Ast_Kind_Struct_Type: { AstStructType* s_node = (AstStructType *) type_node; - if (s_node->stcache != NULL) return s_node->stcache; + if (s_node->stcache != NULL && s_node->stcache_is_valid) return s_node->stcache; + + Type* s_type; + if (s_node->stcache == NULL) { + s_type = bh_alloc(alloc, sizeof(Type)); + s_node->stcache = s_type; - Type* s_type = bh_alloc(alloc, sizeof(Type)); - s_node->stcache = s_type; - s_type->kind = Type_Kind_Struct; - s_type->ast_type = type_node; + s_type->kind = Type_Kind_Struct; + s_type->ast_type = type_node; + s_type->Struct.name = s_node->name; + s_type->Struct.unique_id = next_unique_id++; + s_type->Struct.mem_count = bh_arr_length(s_node->members); + + } else { + s_type = s_node->stcache; + } - s_type->Struct.unique_id = next_unique_id++; - s_type->Struct.name = s_node->name; - s_type->Struct.mem_count = bh_arr_length(s_node->members); s_type->Struct.memarr = NULL; s_type->Struct.poly_sln = NULL; bh_table_init(global_heap_allocator, s_type->Struct.members, s_type->Struct.mem_count + 1); bh_arr_new(global_heap_allocator, s_type->Struct.memarr, s_type->Struct.mem_count); + s_node->stcache_is_valid = 1; + b32 is_union = (s_node->flags & Ast_Flag_Struct_Is_Union) != 0; u32 size = 0; u32 offset = 0; @@ -307,16 +322,15 @@ Type* type_build_from_ast(bh_allocator alloc, AstType* type_node) { (*member)->type = type_build_from_ast(alloc, (*member)->type_node); if ((*member)->type == NULL) { - // :ExplicitTyping - // onyx_report_error((*member)->token->pos, "Unable to resolve member type. Try adding it explicitly."); - s_node->stcache = NULL; + // LEAK LEAK LEAK + s_node->stcache_is_valid = 0; return NULL; } mem_alignment = type_alignment_of((*member)->type); if (mem_alignment <= 0) { onyx_report_error((*member)->token->pos, "Invalid member type: %s", type_get_name((*member)->type)); - return s_type; + return NULL; } if (mem_alignment > alignment) alignment = mem_alignment; @@ -455,9 +469,14 @@ Type* type_build_from_ast(bh_allocator alloc, AstType* type_node) { bh_arr_new(global_heap_allocator, slns, bh_arr_length(pc_type->params)); bh_arr_each(AstNode *, given, pc_type->params) { if (node_is_type(*given)) { + Type* param_type = type_build_from_ast(alloc, (AstType *) *given); + + // LEAK LEAK LEAK + if (param_type == NULL) return NULL; + bh_arr_push(slns, ((AstPolySolution) { .kind = PSK_Type, - .type = type_build_from_ast(alloc, (AstType *) *given), + .type = param_type, })); } else { bh_arr_push(slns, ((AstPolySolution) { @@ -492,6 +511,10 @@ Type* type_build_from_ast(bh_allocator alloc, AstType* type_node) { fori (i, 0, type_count) { assert(ctype->types[i] != NULL); comp_type->Compound.types[i] = type_build_from_ast(alloc, ctype->types[i]); + + // LEAK LEAK LEAK + if (comp_type->Compound.types[i] == NULL) return NULL; + comp_type->Compound.size += bh_max(type_size_of(comp_type->Compound.types[i]), 4); } @@ -512,15 +535,19 @@ Type* type_build_from_ast(bh_allocator alloc, AstType* type_node) { return NULL; } +// CLEANUP: This needs to be merged with the very similar code from up above. Type* type_build_function_type(bh_allocator alloc, AstFunction* func) { u64 param_count = bh_arr_length(func->params); + Type* return_type = type_build_from_ast(alloc, func->return_type); + if (return_type == NULL) return NULL; + Type* func_type = bh_alloc(alloc, sizeof(Type) + sizeof(Type *) * param_count); func_type->kind = Type_Kind_Function; func_type->Function.param_count = param_count; func_type->Function.needed_param_count = 0; - func_type->Function.return_type = type_build_from_ast(alloc, func->return_type); + func_type->Function.return_type = return_type; if (param_count > 0) { i32 i = 0; diff --git a/src/onyxutils.c b/src/onyxutils.c index 6717d882..b67a66f1 100644 --- a/src/onyxutils.c +++ b/src/onyxutils.c @@ -1225,50 +1225,29 @@ AstStructType* polymorphic_struct_lookup(AstPolyStructType* ps_type, bh_arr(AstP char* unique_key = build_poly_slns_unique_key(slns); if (bh_table_has(AstStructType *, ps_type->concrete_structs, unique_key)) { - return bh_table_get(AstStructType *, ps_type->concrete_structs, unique_key); - } + AstStructType* concrete_struct = bh_table_get(AstStructType *, ps_type->concrete_structs, unique_key); - scope_clear(ps_type->scope); - insert_poly_slns_into_scope(ps_type->scope, slns); + if (concrete_struct->entity_type->state < Entity_State_Check_Types) { + return NULL; + } - AstStructType* concrete_struct = (AstStructType *) ast_clone(context.ast_alloc, ps_type->base_struct); - bh_table_put(AstStructType *, ps_type->concrete_structs, unique_key, concrete_struct); + Type* cs_type = type_build_from_ast(context.ast_alloc, (AstType *) concrete_struct); + if (!cs_type) return NULL; - Entity struct_entity = { - .state = Entity_State_Resolve_Symbols, - .type = Entity_Type_Type_Alias, - .type_alias = (AstType *) concrete_struct, - .package = NULL, - .scope = ps_type->scope, - }; - Entity struct_default_entity = { - .state = Entity_State_Resolve_Symbols, - .type = Entity_Type_Struct_Member_Default, - .type_alias = (AstType *) concrete_struct, - .package = NULL, - .scope = ps_type->scope, - }; + if (cs_type->Struct.poly_sln == NULL) cs_type->Struct.poly_sln = bh_arr_copy(global_heap_allocator, slns); + if (cs_type->Struct.name == NULL) cs_type->Struct.name = build_poly_struct_name(ps_type, cs_type); - entity_bring_to_state(&struct_entity, Entity_State_Check_Types); - entity_bring_to_state(&struct_default_entity, Entity_State_Check_Types); - entity_bring_to_state(&struct_entity, Entity_State_Code_Gen); - entity_bring_to_state(&struct_default_entity, Entity_State_Code_Gen); - - if (onyx_has_errors()) { - onyx_report_error(pos, "Error in creating polymorphic struct instantiation here."); - bh_table_put(AstStructType *, ps_type->concrete_structs, unique_key, NULL); - return NULL; + return concrete_struct; } - Type* cs_type = type_build_from_ast(context.ast_alloc, (AstType *) concrete_struct); + Scope* sln_scope = scope_create(context.ast_alloc, ps_type->scope, ps_type->token->pos); + insert_poly_slns_into_scope(sln_scope, slns); - // CLEANUP: This should not be necessary since the only place this function can be - // called from is type_build_from_ast in the Ast_Kind_Poly_Call_Type case, which - // allocates the 'slns' array on the heap. So, duplicating it should not be necessary. - cs_type->Struct.poly_sln = bh_arr_copy(global_heap_allocator, slns); + AstStructType* concrete_struct = (AstStructType *) ast_clone(context.ast_alloc, ps_type->base_struct); + bh_table_put(AstStructType *, ps_type->concrete_structs, unique_key, concrete_struct); - cs_type->Struct.name = build_poly_struct_name(ps_type, cs_type); - return concrete_struct; + add_entities_for_node(NULL, (AstNode *) concrete_struct, sln_scope, NULL); + return NULL; } void entity_bring_to_state(Entity* ent, EntityState state) { -- 2.25.1