From 58f0dac22781486db3a6f411f145746be39ad2d8 Mon Sep 17 00:00:00 2001 From: Brendan Hansen Date: Wed, 22 Jul 2020 10:15:13 -0500 Subject: [PATCH] Added 'splatting' of struct members to call arguments --- include/onyxastnodes.h | 4 +- include/onyxtypes.h | 14 +++- onyx | Bin 299664 -> 300184 bytes progs/structs.onyx | 12 +++- src/onyxchecker.c | 143 ++++++++++++++++++++++++++--------------- src/onyxmsgs.c | 6 +- src/onyxtypes.c | 3 + 7 files changed, 121 insertions(+), 61 deletions(-) diff --git a/include/onyxastnodes.h b/include/onyxastnodes.h index 7c80e385..e13af87d 100644 --- a/include/onyxastnodes.h +++ b/include/onyxastnodes.h @@ -331,11 +331,11 @@ struct AstOverloadedFunction { // processed later down the pipeline. typedef enum EntityType { Entity_Type_Unknown, + Entity_Type_String_Literal, + Entity_Type_Struct, Entity_Type_Function_Header, Entity_Type_Global_Header, Entity_Type_Expression, - Entity_Type_String_Literal, - Entity_Type_Struct, Entity_Type_Global, Entity_Type_Overloaded_Function, Entity_Type_Function, diff --git a/include/onyxtypes.h b/include/onyxtypes.h index cb21fb14..d90faefb 100644 --- a/include/onyxtypes.h +++ b/include/onyxtypes.h @@ -54,8 +54,18 @@ typedef struct StructMember { #define TYPE_KINDS \ TYPE_KIND(Basic, TypeBasic) \ TYPE_KIND(Pointer, struct { TypeBasic base; Type *elem; }) \ - TYPE_KIND(Function, struct { Type *return_type; u64 param_count; Type* params[]; }) \ - TYPE_KIND(Struct, struct { char* name; u32 size; u32 mem_count; bh_table(StructMember) members; }) \ + TYPE_KIND(Function, struct { \ + Type *return_type; \ + u64 param_count; \ + Type* params[]; \ + }) \ + TYPE_KIND(Struct, struct { \ + char* name; \ + u32 size; \ + u32 mem_count; \ + bh_table(StructMember) members; \ + bh_arr(StructMember *) memarr; \ + }) \ TYPE_KIND(Array, struct { u32 size; u32 count; Type *elem; }) typedef enum TypeKind { diff --git a/onyx b/onyx index 7e20302084da8389fec557c6b1daa23b601b856c..8e1d6afeb1e6ffdf56be82e1c5fc7ccc7a1e3ac1 100755 GIT binary patch delta 78160 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 delta 77162 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

sHzzL`XcwYB;zAkiH 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 == NULL) @@ -163,10 +164,40 @@ CHECK(call, AstCall* call) { return 1; } - // NOTE: Check arguments + // NOTE: Check arguments and splat structs + AstNode** prev_param = (AstNode **) &call->arguments; AstArgument* actual_param = call->arguments; while (actual_param != NULL) { if (check_expression((AstTyped *) actual_param)) return 1; + + // NOTE: Splat structures into multiple arguments + if (actual_param->type->kind == Type_Kind_Struct) { + bh_arr_each(StructMember *, smem, actual_param->type->Struct.memarr) { + AstFieldAccess* field = onyx_ast_node_new(semstate.node_allocator, sizeof(AstFieldAccess), Ast_Kind_Field_Access); + field->expr = actual_param->value; + + // HACK: Since dereferences are not used for struct types, we need a + // special case here. + if (field->expr->kind == Ast_Kind_Dereference) { + field->expr = ((AstDereference *) field->expr)->expr; + } + + field->offset = (*smem)->offset; + field->type = (*smem)->type; + + AstArgument* arg = onyx_ast_node_new(semstate.node_allocator, sizeof(AstArgument), Ast_Kind_Argument); + arg->value = (AstTyped *) field; + arg->type = field->type; + arg->token = actual_param->token; + arg->next = actual_param->next; + + *prev_param = (AstNode *) arg; + prev_param = (AstNode **) &arg->next; + } + } else { + prev_param = (AstNode **) &actual_param->next; + } + actual_param = (AstArgument *) actual_param->next; } @@ -641,56 +672,6 @@ CHECK(block, AstBlock* block) { } CHECK(function, AstFunction* func) { - for (AstLocal *param = func->params; param != NULL; param = (AstLocal *) param->next) { - fill_in_type((AstTyped *) param); - - if (param->type == NULL) { - onyx_message_add(Msg_Type_Literal, - param->token->pos, - "function parameter types must be known"); - return 1; - } - - if (param->type->Basic.size == 0) { - onyx_message_add(Msg_Type_Literal, - param->token->pos, - "function parameters must have non-void types"); - return 1; - } - } - - fill_in_type((AstTyped *) func); - - if ((func->flags & Ast_Flag_Exported) != 0) { - if ((func->flags & Ast_Flag_Foreign) != 0) { - onyx_message_add(Msg_Type_Literal, - func->token->pos, - "exporting a foreign function"); - return 1; - } - - if ((func->flags & Ast_Flag_Intrinsic) != 0) { - onyx_message_add(Msg_Type_Literal, - func->token->pos, - "exporting a intrinsic function"); - return 1; - } - - if ((func->flags & Ast_Flag_Inline) != 0) { - onyx_message_add(Msg_Type_Literal, - func->token->pos, - "exporting a inlined function"); - return 1; - } - - if (func->exported_name == NULL) { - onyx_message_add(Msg_Type_Literal, - func->token->pos, - "exporting function without a name"); - return 1; - } - } - semstate.expected_return_type = func->type->Function.return_type; if (func->body) { return check_block(func->body); @@ -749,6 +730,60 @@ CHECK(struct, AstStructType* s_node) { return 0; } +CHECK(function_header, AstFunction* func) { + for (AstLocal *param = func->params; param != NULL; param = (AstLocal *) param->next) { + fill_in_type((AstTyped *) param); + + if (param->type == NULL) { + onyx_message_add(Msg_Type_Literal, + param->token->pos, + "function parameter types must be known"); + return 1; + } + + if (param->type->Basic.size == 0) { + onyx_message_add(Msg_Type_Literal, + param->token->pos, + "function parameters must have non-void types"); + return 1; + } + } + + fill_in_type((AstTyped *) func); + + if ((func->flags & Ast_Flag_Exported) != 0) { + if ((func->flags & Ast_Flag_Foreign) != 0) { + onyx_message_add(Msg_Type_Literal, + func->token->pos, + "exporting a foreign function"); + return 1; + } + + if ((func->flags & Ast_Flag_Intrinsic) != 0) { + onyx_message_add(Msg_Type_Literal, + func->token->pos, + "exporting a intrinsic function"); + return 1; + } + + if ((func->flags & Ast_Flag_Inline) != 0) { + onyx_message_add(Msg_Type_Literal, + func->token->pos, + "exporting a inlined function"); + return 1; + } + + if (func->exported_name == NULL) { + onyx_message_add(Msg_Type_Literal, + func->token->pos, + "exporting function without a name"); + return 1; + } + } + + return 0; +} + CHECK(node, AstNode* node) { switch (node->kind) { case Ast_Kind_Function: return check_function((AstFunction *) node); @@ -766,9 +801,12 @@ CHECK(node, AstNode* node) { void onyx_type_check(ProgramInfo* program) { bh_arr_each(Entity, entity, program->entities) { switch (entity->type) { - case Entity_Type_Function: + case Entity_Type_Function_Header: if (entity->function->flags & Ast_Kind_Foreign) program->foreign_func_count++; + if (check_function_header(entity->function)) return; + break; + case Entity_Type_Function: if (check_function(entity->function)) return; break; @@ -792,7 +830,6 @@ void onyx_type_check(ProgramInfo* program) { case Entity_Type_String_Literal: break; - case Entity_Type_Function_Header: break; case Entity_Type_Global_Header: break; default: DEBUG_HERE; break; diff --git a/src/onyxmsgs.c b/src/onyxmsgs.c index 37f0fd97..a79f4e11 100644 --- a/src/onyxmsgs.c +++ b/src/onyxmsgs.c @@ -67,13 +67,13 @@ static void print_detailed_message(Message* msg, bh_file_contents* fc) { char* walker = msg->pos.line_start; while (*walker != '\n') linelength++, walker++; - i32 numlen = bh_printf(" %d |", msg->pos.line); + i32 numlen = bh_printf(" %d | ", msg->pos.line); bh_printf("%b\n", msg->pos.line_start, linelength); char* pointer_str = bh_alloc_array(global_scratch_allocator, char, linelength + numlen); memset(pointer_str, ' ', linelength + numlen); - memset(pointer_str + msg->pos.column + numlen, '~', msg->pos.length - 1); - pointer_str[msg->pos.column + numlen - 1] = '^'; + memset(pointer_str + msg->pos.column + numlen - 1, '~', msg->pos.length - 1); + pointer_str[msg->pos.column + numlen - 2] = '^'; pointer_str[msg->pos.column + numlen + msg->pos.length - 1] = 0; bh_printf("%s\n", pointer_str); diff --git a/src/onyxtypes.c b/src/onyxtypes.c index 4a56ecc5..dbd6db84 100644 --- a/src/onyxtypes.c +++ b/src/onyxtypes.c @@ -213,7 +213,9 @@ Type* type_build_from_ast(bh_allocator alloc, AstType* type_node) { s_type->Struct.name = s_node->name; s_type->Struct.mem_count = bh_arr_length(s_node->members); + s_type->Struct.memarr = NULL; bh_table_init(global_heap_allocator, s_type->Struct.members, s_type->Struct.mem_count); + bh_arr_new(global_heap_allocator, s_type->Struct.memarr, s_type->Struct.mem_count); u32 offset = 0; u32 min_alignment = 1; @@ -229,6 +231,7 @@ Type* type_build_from_ast(bh_allocator alloc, AstType* type_node) { token_toggle_end((*member)->token); bh_table_put(StructMember, s_type->Struct.members, (*member)->token->text, smem); + bh_arr_push(s_type->Struct.memarr, &bh_table_get(StructMember, s_type->Struct.members, (*member)->token->text)); token_toggle_end((*member)->token); offset += type_size_of((*member)->type); -- 2.25.1