From 808e26de4c3d3d89d4af46ac9b6a5ac59016f851 Mon Sep 17 00:00:00 2001 From: Brendan Hansen Date: Sun, 19 Jul 2020 11:49:18 -0500 Subject: [PATCH] code cleanup --- include/onyxmsgs.h | 72 +++++++------ include/onyxparser.h | 4 +- include/onyxsempass.h | 11 +- include/onyxwasm.h | 3 +- onyx | Bin 259144 -> 255864 bytes progs/arrays.onyx | 10 +- src/onyx.c | 19 ++-- src/onyxchecker.c | 212 ++++++++++++++++-------------------- src/onyxmsgs.c | 32 +++--- src/onyxparser.c | 27 ++--- src/onyxsempass.c | 20 ++-- src/onyxsymres.c | 243 +++++++++++++++++++++--------------------- src/onyxwasm.c | 3 +- 13 files changed, 307 insertions(+), 349 deletions(-) diff --git a/include/onyxmsgs.h b/include/onyxmsgs.h index 8c9afeee..9c98c2d0 100644 --- a/include/onyxmsgs.h +++ b/include/onyxmsgs.h @@ -8,38 +8,38 @@ #define ONYX_MSG_BUFFER_SIZE 256 -typedef enum OnyxMessageType { - ONYX_MESSAGE_TYPE_LITERAL, - ONYX_MESSAGE_TYPE_EXPECTED_TOKEN, - ONYX_MESSAGE_TYPE_UNEXPECTED_TOKEN, - ONYX_MESSAGE_TYPE_UNKNOWN_TYPE, - ONYX_MESSAGE_TYPE_NOT_LVAL, - ONYX_MESSAGE_TYPE_ASSIGN_CONST, - ONYX_MESSAGE_TYPE_UNKNOWN_SYMBOL, - ONYX_MESSAGE_TYPE_UNKNOWN_DIRECTIVE, - - ONYX_MESSAGE_TYPE_REDECLARE_SYMBOL, - ONYX_MESSAGE_TYPE_BINOP_MISMATCH_TYPE, - ONYX_MESSAGE_TYPE_ASSIGNMENT_TYPE_MISMATCH, - ONYX_MESSAGE_TYPE_GLOBAL_TYPE_MISMATCH, - ONYX_MESSAGE_TYPE_EXPECTED_EXPRESSION, - ONYX_MESSAGE_TYPE_CALL_NON_FUNCTION, - - ONYX_MESSAGE_TYPE_FUNCTION_RETURN_MISMATCH, - ONYX_MESSAGE_TYPE_FUNCTION_PARAM_TYPE_MISMATCH, - - ONYX_MESSAGE_TYPE_UNRESOLVED_TYPE, - ONYX_MESSAGE_TYPE_UNRESOLVED_SYMBOL, - - ONYX_MESSAGE_TYPE_COUNT, -} OnyxMessageType; - -typedef struct OnyxMessage { - OnyxMessageType type; +typedef enum MsgType { + Msg_Type_Literal, + Msg_Type_Expected_Token, + Msg_Type_Unexpected_Token, + Msg_Type_Unknown_Type, + Msg_Type_Not_Lval, + Msg_Type_Assign_Const, + Msg_Type_Unknown_Symbol, + Msg_Type_Unknown_Directive, + + Msg_Type_Redeclare_Symbol, + Msg_Type_Binop_Mismatch, + Msg_Type_Assignment_Mismatch, + Msg_Type_Global_Type_Mismatch, + Msg_Type_Expected_Expression, + Msg_Type_Call_Non_Function, + + Msg_Type_Function_Return_Mismatch, + Msg_Type_Function_Param_Mismatch, + + Msg_Type_Unresolved_Type, + Msg_Type_Unresolved_Symbol, + + Msg_Type_Count, +} MsgType; + +typedef struct Message { + MsgType type; OnyxFilePos pos; - struct OnyxMessage* next; + struct Message* next; char text[ONYX_MSG_BUFFER_SIZE]; -} OnyxMessage; +} Message; typedef struct OnyxMessages { bh_allocator allocator; @@ -48,12 +48,14 @@ typedef struct OnyxMessages { // their file contents. Used for better error messages bh_table(bh_file_contents)* file_contents; - OnyxMessage* first; + Message* first; } OnyxMessages; -void onyx_message_add(OnyxMessages* msgs, OnyxMessageType type, OnyxFilePos pos, ...); -void onyx_message_print(OnyxMessages* msgs); -b32 onyx_message_has_errors(OnyxMessages* msgs); -void onyx_message_create(bh_allocator allocator, OnyxMessages* msgs, bh_table(bh_file_contents)* files); +extern OnyxMessages msgs; + +void onyx_message_init(bh_allocator allocator, bh_table(bh_file_contents)* files); +void onyx_message_add(MsgType type, OnyxFilePos pos, ...); +void onyx_message_print(); +b32 onyx_message_has_errors(); #endif diff --git a/include/onyxparser.h b/include/onyxparser.h index 74ad6030..339c2549 100644 --- a/include/onyxparser.h +++ b/include/onyxparser.h @@ -26,14 +26,12 @@ typedef struct OnyxParser { OnyxToken *prev; OnyxToken *curr; - OnyxMessages *msgs; - ParseResults results; } OnyxParser; const char* onyx_ast_node_kind_string(AstKind kind); void* onyx_ast_node_new(bh_allocator alloc, i32 size, AstKind kind); -OnyxParser onyx_parser_create(bh_allocator alloc, OnyxTokenizer *tokenizer, OnyxMessages* msgs); +OnyxParser onyx_parser_create(bh_allocator alloc, OnyxTokenizer *tokenizer); void onyx_parser_free(OnyxParser* parser); ParseResults onyx_parse(OnyxParser *parser); diff --git a/include/onyxsempass.h b/include/onyxsempass.h index af2766f2..5b3356fb 100644 --- a/include/onyxsempass.h +++ b/include/onyxsempass.h @@ -11,7 +11,6 @@ typedef struct SemState { // NOTE: Adding node_allocator in case we need // to make any more node in the tree bh_allocator allocator, node_allocator; - OnyxMessages *msgs; // NOTE: Used in symbol resolution phase Scope* global_scope; @@ -22,14 +21,16 @@ typedef struct SemState { Type* expected_return_type; } SemState; +extern SemState semstate; + // NOTE: Resolving all symbols in the tree -void onyx_resolve_symbols(SemState* state, ProgramInfo* program); +void onyx_resolve_symbols(ProgramInfo* program); // NOTE: Inferring and checking types in the tree -void onyx_type_check(SemState* state, ProgramInfo* program); +void onyx_type_check(ProgramInfo* program); // NOTE: Full semantic pass -SemState onyx_sempass_create(bh_allocator alloc, bh_allocator node_alloc, OnyxMessages* msgs); -void onyx_sempass(SemState* state, ProgramInfo* program); +void onyx_sempass_init(bh_allocator alloc, bh_allocator node_alloc); +void onyx_sempass(ProgramInfo* program); #endif diff --git a/include/onyxwasm.h b/include/onyxwasm.h index 863ee1fa..4a5dfcb7 100644 --- a/include/onyxwasm.h +++ b/include/onyxwasm.h @@ -288,7 +288,6 @@ typedef struct WasmDatum { typedef struct OnyxWasmModule { bh_allocator allocator; - OnyxMessages* msgs; // NOTE: Mapping ptrs to function / global indicies bh_imap index_map; @@ -319,7 +318,7 @@ typedef struct OnyxWasmModule { u32 next_datum_offset; } OnyxWasmModule; -OnyxWasmModule onyx_wasm_module_create(bh_allocator alloc, OnyxMessages* msgs); +OnyxWasmModule onyx_wasm_module_create(bh_allocator alloc); void onyx_wasm_module_compile(OnyxWasmModule* module, ProgramInfo* program); void onyx_wasm_module_free(OnyxWasmModule* module); void onyx_wasm_module_write_to_file(OnyxWasmModule* module, bh_file file); diff --git a/onyx b/onyx index c60bce6eacbfad42fe9f260901f3ad5ef65ef89e..c4f9619980dcb2287a0145c8a1c02333f1b33a04 100755 GIT binary patch literal 255864 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 LaT!OXA{+l-s8}J# literal 259144 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 z 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

~Z`Xx33 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, compiler_state->loaded_files, 15); - onyx_message_create(compiler_state->msg_alloc, &compiler_state->msgs, &compiler_state->loaded_files); + onyx_message_init(compiler_state->msg_alloc, &compiler_state->loaded_files); compiler_state->token_alloc = opts->allocator; @@ -163,7 +162,7 @@ static ParseResults parse_source_file(CompilerState* compiler_state, bh_file_con if (compiler_state->options->verbose_output) bh_printf("[Parsing] %s\n", file_contents->filename); - OnyxParser parser = onyx_parser_create(compiler_state->ast_alloc, &tokenizer, &compiler_state->msgs); + OnyxParser parser = onyx_parser_create(compiler_state->ast_alloc, &tokenizer); return onyx_parse(&parser); } @@ -239,7 +238,7 @@ static CompilerProgress process_source_file(CompilerState* compiler_state, char* ParseResults results = parse_source_file(compiler_state, &fc); merge_parse_results(compiler_state, &results); - if (onyx_message_has_errors(&compiler_state->msgs)) { + if (onyx_message_has_errors()) { return ONYX_COMPILER_PROGRESS_FAILED_PARSE; } else { return ONYX_COMPILER_PROGRESS_SUCCESS; @@ -264,10 +263,10 @@ static i32 onyx_compile(CompilerState* compiler_state) { if (compiler_state->options->verbose_output) bh_printf("[Checking semantics]\n"); - SemState sp_state = onyx_sempass_create(compiler_state->sp_alloc, compiler_state->ast_alloc, &compiler_state->msgs); - onyx_sempass(&sp_state, &compiler_state->prog_info); + onyx_sempass_init(compiler_state->sp_alloc, compiler_state->ast_alloc); + onyx_sempass(&compiler_state->prog_info); - if (onyx_message_has_errors(&compiler_state->msgs)) { + if (onyx_message_has_errors()) { return ONYX_COMPILER_PROGRESS_FAILED_SEMPASS; } @@ -276,10 +275,10 @@ static i32 onyx_compile(CompilerState* compiler_state) { if (compiler_state->options->verbose_output) bh_printf("[Generating WASM]\n"); - compiler_state->wasm_mod = onyx_wasm_module_create(compiler_state->options->allocator, &compiler_state->msgs); + compiler_state->wasm_mod = onyx_wasm_module_create(compiler_state->options->allocator); onyx_wasm_module_compile(&compiler_state->wasm_mod, &compiler_state->prog_info); - if (onyx_message_has_errors(&compiler_state->msgs)) { + if (onyx_message_has_errors()) { return ONYX_COMPILER_PROGRESS_FAILED_BINARY_GEN; } @@ -334,7 +333,7 @@ int main(int argc, char *argv[]) { case ONYX_COMPILER_PROGRESS_FAILED_PARSE: case ONYX_COMPILER_PROGRESS_FAILED_SEMPASS: case ONYX_COMPILER_PROGRESS_FAILED_BINARY_GEN: - onyx_message_print(&compile_state.msgs); + onyx_message_print(); break; case ONYX_COMPILER_PROGRESS_FAILED_OUTPUT: diff --git a/src/onyxchecker.c b/src/onyxchecker.c index abaf0ede..759b677f 100644 --- a/src/onyxchecker.c +++ b/src/onyxchecker.c @@ -2,7 +2,7 @@ #include "onyxsempass.h" #include "onyxparser.h" -#define CHECK(kind, ...) static b32 check_ ## kind (SemState* state, __VA_ARGS__) +#define CHECK(kind, ...) static b32 check_ ## kind (__VA_ARGS__) CHECK(block, AstBlock* block); CHECK(statement_chain, AstNode* start); @@ -18,27 +18,25 @@ CHECK(global, AstGlobal* global); CHECK(function, AstFunction* func); CHECK(overloaded_function, AstOverloadedFunction* func); -static inline void fill_in_type(SemState* state, AstTyped* node) { +static inline void fill_in_type(AstTyped* node) { if (node->type == NULL) - node->type = type_build_from_ast(state->allocator, node->type_node); + node->type = type_build_from_ast(semstate.allocator, node->type_node); } CHECK(return, AstReturn* retnode) { if (retnode->expr) { - if (check_expression(state, retnode->expr)) return 1; + if (check_expression(retnode->expr)) return 1; - if (!types_are_compatible(retnode->expr->type, state->expected_return_type)) { - onyx_message_add(state->msgs, - ONYX_MESSAGE_TYPE_FUNCTION_RETURN_MISMATCH, + if (!types_are_compatible(retnode->expr->type, semstate.expected_return_type)) { + onyx_message_add(Msg_Type_Function_Return_Mismatch, retnode->expr->token->pos, type_get_name(retnode->expr->type), - type_get_name(state->expected_return_type)); + type_get_name(semstate.expected_return_type)); return 1; } } else { - if (state->expected_return_type->Basic.size > 0) { - onyx_message_add(state->msgs, - ONYX_MESSAGE_TYPE_LITERAL, + if (semstate.expected_return_type->Basic.size > 0) { + onyx_message_add(Msg_Type_Literal, retnode->token->pos, "returning from non-void function without value"); return 1; @@ -49,41 +47,39 @@ CHECK(return, AstReturn* retnode) { } CHECK(if, AstIf* ifnode) { - if (check_expression(state, ifnode->cond)) return 1; + if (check_expression(ifnode->cond)) return 1; if (!type_is_bool(ifnode->cond->type)) { - onyx_message_add(state->msgs, - ONYX_MESSAGE_TYPE_LITERAL, + onyx_message_add(Msg_Type_Literal, ifnode->cond->token->pos, "expected boolean type for condition"); return 1; } - if (ifnode->true_stmt) if (check_statement(state, ifnode->true_stmt)) return 1; - if (ifnode->false_stmt) if (check_statement(state, ifnode->false_stmt)) return 1; + if (ifnode->true_stmt) if (check_statement(ifnode->true_stmt)) return 1; + if (ifnode->false_stmt) if (check_statement(ifnode->false_stmt)) return 1; return 0; } CHECK(while, AstWhile* whilenode) { - if (check_expression(state, whilenode->cond)) return 1; + if (check_expression(whilenode->cond)) return 1; if (!type_is_bool(whilenode->cond->type)) { - onyx_message_add(state->msgs, - ONYX_MESSAGE_TYPE_LITERAL, + onyx_message_add(Msg_Type_Literal, whilenode->cond->token->pos, "expected boolean type for condition"); return 1; } - return check_statement(state, whilenode->stmt); + return check_statement(whilenode->stmt); } -static AstTyped* match_overloaded_function(SemState* state, AstCall* call, AstOverloadedFunction* ofunc) { +static AstTyped* match_overloaded_function(AstCall* call, AstOverloadedFunction* ofunc) { bh_arr_each(AstTyped *, node, ofunc->overloads) { AstFunction* overload = (AstFunction *) *node; - fill_in_type(state, (AstTyped *) overload); + fill_in_type((AstTyped *) overload); TypeFunction* ol_type = &overload->type->Function; @@ -92,7 +88,7 @@ static AstTyped* match_overloaded_function(SemState* state, AstCall* call, AstOv AstArgument* arg = call->arguments; Type** param_type = ol_type->params; while (arg != NULL) { - fill_in_type(state, (AstTyped *) arg); + fill_in_type((AstTyped *) arg); if (!types_are_compatible(*param_type, arg->type)) goto no_match; @@ -106,8 +102,7 @@ no_match: continue; } - onyx_message_add(state->msgs, - ONYX_MESSAGE_TYPE_LITERAL, + onyx_message_add(Msg_Type_Literal, call->token->pos, "unable to match overloaded function"); @@ -118,8 +113,7 @@ CHECK(call, AstCall* call) { AstFunction* callee = (AstFunction *) call->callee; if (callee->kind == Ast_Kind_Symbol) { - onyx_message_add(state->msgs, - ONYX_MESSAGE_TYPE_UNRESOLVED_SYMBOL, + onyx_message_add(Msg_Type_Unresolved_Symbol, callee->token->pos, callee->token->text, callee->token->length); return 1; @@ -128,23 +122,22 @@ CHECK(call, AstCall* call) { // NOTE: Check arguments AstArgument* actual_param = call->arguments; while (actual_param != NULL) { - if (check_expression(state, (AstTyped *) actual_param)) return 1; + if (check_expression((AstTyped *) actual_param)) return 1; actual_param = (AstArgument *) actual_param->next; } if (callee->kind == Ast_Kind_Overloaded_Function) { - call->callee = (AstNode *) match_overloaded_function(state, call, (AstOverloadedFunction *) callee); + call->callee = (AstNode *) match_overloaded_function(call, (AstOverloadedFunction *) callee); callee = (AstFunction *) call->callee; if (callee == NULL) return 1; } // NOTE: Build callee's type - fill_in_type(state, (AstTyped *) callee); + fill_in_type((AstTyped *) callee); if (callee->type->kind != Type_Kind_Function) { - onyx_message_add(state->msgs, - ONYX_MESSAGE_TYPE_CALL_NON_FUNCTION, + onyx_message_add(Msg_Type_Call_Non_Function, call->token->pos, callee->token->text, callee->token->length); return 1; @@ -220,11 +213,10 @@ CHECK(call, AstCall* call) { i32 arg_pos = 0; while (formal_param != NULL && actual_param != NULL) { - fill_in_type(state, (AstTyped *) formal_param); + fill_in_type((AstTyped *) formal_param); if (!types_are_compatible(formal_param->type, actual_param->type)) { - onyx_message_add(state->msgs, - ONYX_MESSAGE_TYPE_FUNCTION_PARAM_TYPE_MISMATCH, + onyx_message_add(Msg_Type_Function_Param_Mismatch, actual_param->token->pos, callee->token->text, callee->token->length, type_get_name(formal_param->type), @@ -239,16 +231,14 @@ CHECK(call, AstCall* call) { } if (formal_param != NULL && actual_param == NULL) { - onyx_message_add(state->msgs, - ONYX_MESSAGE_TYPE_LITERAL, + onyx_message_add(Msg_Type_Literal, call->token->pos, "too few arguments to function call"); return 1; } if (formal_param == NULL && actual_param != NULL) { - onyx_message_add(state->msgs, - ONYX_MESSAGE_TYPE_LITERAL, + onyx_message_add(Msg_Type_Literal, call->token->pos, "too many arguments to function call"); return 1; @@ -258,21 +248,19 @@ CHECK(call, AstCall* call) { } CHECK(binaryop, AstBinaryOp* binop) { - if (check_expression(state, binop->left)) return 1; - if (check_expression(state, binop->right)) return 1; + if (check_expression(binop->left)) return 1; + if (check_expression(binop->right)) return 1; if (binop_is_assignment(binop)) { if (!is_lval((AstNode *) binop->left)) { - onyx_message_add(state->msgs, - ONYX_MESSAGE_TYPE_NOT_LVAL, + onyx_message_add(Msg_Type_Not_Lval, binop->left->token->pos, binop->left->token->text, binop->left->token->length); return 1; } if ((binop->left->flags & Ast_Flag_Const) != 0 && binop->left->type != NULL) { - onyx_message_add(state->msgs, - ONYX_MESSAGE_TYPE_ASSIGN_CONST, + onyx_message_add(Msg_Type_Assign_Const, binop->token->pos, binop->left->token->text, binop->left->token->length); return 1; @@ -288,7 +276,7 @@ CHECK(binaryop, AstBinaryOp* binop) { // NOTE: +=, -=, ... AstBinaryOp* binop_node = onyx_ast_node_new( - state->node_allocator, + semstate.node_allocator, sizeof(AstBinaryOp), Ast_Kind_Binary_Op); @@ -310,8 +298,7 @@ CHECK(binaryop, AstBinaryOp* binop) { } else { if (type_is_pointer(binop->left->type) || type_is_pointer(binop->right->type)) { - onyx_message_add(state->msgs, - ONYX_MESSAGE_TYPE_LITERAL, + onyx_message_add(Msg_Type_Literal, binop->token->pos, "binary operations are not supported for pointers (yet)."); return 1; @@ -319,16 +306,14 @@ CHECK(binaryop, AstBinaryOp* binop) { } if (binop->left->type == NULL) { - onyx_message_add(state->msgs, - ONYX_MESSAGE_TYPE_UNRESOLVED_TYPE, + onyx_message_add(Msg_Type_Unresolved_Type, binop->token->pos, binop->left->token->text, binop->left->token->length); return 1; } if (binop->right->type == NULL) { - onyx_message_add(state->msgs, - ONYX_MESSAGE_TYPE_UNRESOLVED_TYPE, + onyx_message_add(Msg_Type_Unresolved_Type, binop->token->pos, binop->right->token->text, binop->right->token->length); return 1; @@ -336,8 +321,7 @@ CHECK(binaryop, AstBinaryOp* binop) { if (!types_are_compatible(binop->left->type, binop->right->type)) { - onyx_message_add(state->msgs, - ONYX_MESSAGE_TYPE_BINOP_MISMATCH_TYPE, + onyx_message_add(Msg_Type_Binop_Mismatch, binop->token->pos, type_get_name(binop->left->type), type_get_name(binop->right->type)); @@ -355,12 +339,11 @@ CHECK(binaryop, AstBinaryOp* binop) { } CHECK(array_access, AstArrayAccess* aa) { - check_expression(state, aa->addr); - check_expression(state, aa->expr); + check_expression(aa->addr); + check_expression(aa->expr); if (!type_is_pointer(aa->addr->type)) { - onyx_message_add(state->msgs, - ONYX_MESSAGE_TYPE_LITERAL, + onyx_message_add(Msg_Type_Literal, aa->token->pos, "expected pointer type for left of array access"); return 1; @@ -368,8 +351,7 @@ CHECK(array_access, AstArrayAccess* aa) { if (aa->expr->type->kind != Type_Kind_Basic || (aa->expr->type->Basic.flags & Basic_Flag_Integer) == 0) { - onyx_message_add(state->msgs, - ONYX_MESSAGE_TYPE_LITERAL, + onyx_message_add(Msg_Type_Literal, aa->token->pos, "expected integer type for index"); return 1; @@ -383,33 +365,31 @@ CHECK(array_access, AstArrayAccess* aa) { CHECK(expression, AstTyped* expr) { if (expr->kind > Ast_Kind_Type_Start && expr->kind < Ast_Kind_Type_End) { - onyx_message_add(state->msgs, - ONYX_MESSAGE_TYPE_LITERAL, + onyx_message_add(Msg_Type_Literal, (OnyxFilePos) { 0 }, "type used as part of an expression"); return 1; } - fill_in_type(state, expr); + fill_in_type(expr); i32 retval = 0; switch (expr->kind) { - case Ast_Kind_Binary_Op: retval = check_binaryop(state, (AstBinaryOp *) expr); break; + case Ast_Kind_Binary_Op: retval = check_binaryop((AstBinaryOp *) expr); break; case Ast_Kind_Unary_Op: - retval = check_expression(state, ((AstUnaryOp *) expr)->expr); + retval = check_expression(((AstUnaryOp *) expr)->expr); if (((AstUnaryOp *) expr)->operation != Unary_Op_Cast) { expr->type = ((AstUnaryOp *) expr)->expr->type; } break; - case Ast_Kind_Call: retval = check_call(state, (AstCall *) expr); break; - case Ast_Kind_Block: retval = check_block(state, (AstBlock *) expr); break; + case Ast_Kind_Call: retval = check_call((AstCall *) expr); break; + case Ast_Kind_Block: retval = check_block((AstBlock *) expr); break; case Ast_Kind_Symbol: - onyx_message_add(state->msgs, - ONYX_MESSAGE_TYPE_UNRESOLVED_SYMBOL, + onyx_message_add(Msg_Type_Unresolved_Symbol, expr->token->pos, expr->token->text, expr->token->length); retval = 1; @@ -417,8 +397,7 @@ CHECK(expression, AstTyped* expr) { case Ast_Kind_Param: if (expr->type == NULL) { - onyx_message_add(state->msgs, - ONYX_MESSAGE_TYPE_LITERAL, + onyx_message_add(Msg_Type_Literal, expr->token->pos, "local variable with unknown type"); retval = 1; @@ -428,13 +407,12 @@ CHECK(expression, AstTyped* expr) { case Ast_Kind_Local: break; case Ast_Kind_Array_Access: - retval = check_array_access(state, (AstArrayAccess *) expr); + retval = check_array_access((AstArrayAccess *) expr); break; case Ast_Kind_Global: if (expr->type == NULL) { - onyx_message_add(state->msgs, - ONYX_MESSAGE_TYPE_LITERAL, + onyx_message_add(Msg_Type_Literal, expr->token->pos, "global with unknown type"); retval = 1; @@ -442,7 +420,7 @@ CHECK(expression, AstTyped* expr) { break; case Ast_Kind_Argument: - retval = check_expression(state, ((AstArgument *) expr)->value); + retval = check_expression(((AstArgument *) expr)->value); expr->type = ((AstArgument *) expr)->value->type; break; @@ -466,11 +444,10 @@ CHECK(expression, AstTyped* expr) { } CHECK(global, AstGlobal* global) { - fill_in_type(state, (AstTyped *) global); + fill_in_type((AstTyped *) global); if (global->type == NULL) { - onyx_message_add(state->msgs, - ONYX_MESSAGE_TYPE_UNRESOLVED_TYPE, + onyx_message_add(Msg_Type_Unresolved_Type, global->token->pos, global->exported_name->text, global->exported_name->length); @@ -483,24 +460,24 @@ CHECK(global, AstGlobal* global) { CHECK(statement, AstNode* stmt) { switch (stmt->kind) { - case Ast_Kind_Return: return check_return(state, (AstReturn *) stmt); - case Ast_Kind_If: return check_if(state, (AstIf *) stmt); - case Ast_Kind_While: return check_while(state, (AstWhile *) stmt); - case Ast_Kind_Call: return check_call(state, (AstCall *) stmt); - case Ast_Kind_Block: return check_block(state, (AstBlock *) stmt); + case Ast_Kind_Return: return check_return((AstReturn *) stmt); + case Ast_Kind_If: return check_if((AstIf *) stmt); + case Ast_Kind_While: return check_while((AstWhile *) stmt); + case Ast_Kind_Call: return check_call((AstCall *) stmt); + case Ast_Kind_Block: return check_block((AstBlock *) stmt); case Ast_Kind_Break: return 0; case Ast_Kind_Continue: return 0; default: stmt->flags |= Ast_Flag_Expr_Ignored; - return check_expression(state, (AstTyped *) stmt); + return check_expression((AstTyped *) stmt); } } CHECK(statement_chain, AstNode* start) { while (start) { - if (check_statement(state, start)) return 1; + if (check_statement(start)) return 1; start = start->next; } @@ -508,12 +485,11 @@ CHECK(statement_chain, AstNode* start) { } CHECK(block, AstBlock* block) { - if (check_statement_chain(state, block->body)) return 1; + if (check_statement_chain(block->body)) return 1; bh_table_each_start(AstTyped *, block->scope->symbols); if (value->type == NULL) { - onyx_message_add(state->msgs, - ONYX_MESSAGE_TYPE_UNRESOLVED_TYPE, + onyx_message_add(Msg_Type_Unresolved_Type, value->token->pos, value->token->text, value->token->length); return 1; @@ -525,64 +501,58 @@ CHECK(block, AstBlock* block) { CHECK(function, AstFunction* func) { for (AstLocal *param = func->params; param != NULL; param = (AstLocal *) param->next) { - fill_in_type(state, (AstTyped *) param); + fill_in_type((AstTyped *) param); if (param->type == NULL) { - onyx_message_add(state->msgs, - ONYX_MESSAGE_TYPE_LITERAL, + 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(state->msgs, - ONYX_MESSAGE_TYPE_LITERAL, + onyx_message_add(Msg_Type_Literal, param->token->pos, "function parameters must have non-void types"); return 1; } } - fill_in_type(state, (AstTyped *) func); + fill_in_type((AstTyped *) func); if ((func->flags & Ast_Flag_Exported) != 0) { if ((func->flags & Ast_Flag_Foreign) != 0) { - onyx_message_add(state->msgs, - ONYX_MESSAGE_TYPE_LITERAL, + 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(state->msgs, - ONYX_MESSAGE_TYPE_LITERAL, + 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(state->msgs, - ONYX_MESSAGE_TYPE_LITERAL, + onyx_message_add(Msg_Type_Literal, func->token->pos, "exporting a inlined function"); return 1; } if (func->exported_name == NULL) { - onyx_message_add(state->msgs, - ONYX_MESSAGE_TYPE_LITERAL, + onyx_message_add(Msg_Type_Literal, func->token->pos, "exporting function without a name"); return 1; } } - state->expected_return_type = func->type->Function.return_type; + semstate.expected_return_type = func->type->Function.return_type; if (func->body) { - return check_block(state, func->body); + return check_block(func->body); } return 0; @@ -591,8 +561,7 @@ CHECK(function, AstFunction* func) { CHECK(overloaded_function, AstOverloadedFunction* func) { bh_arr_each(AstTyped *, node, func->overloads) { if ((*node)->kind == Ast_Kind_Overloaded_Function) { - onyx_message_add(state->msgs, - ONYX_MESSAGE_TYPE_LITERAL, + onyx_message_add(Msg_Type_Literal, (*node)->token->pos, "overload option can not be another overloaded function (yet)"); @@ -600,8 +569,7 @@ CHECK(overloaded_function, AstOverloadedFunction* func) { } if ((*node)->kind != Ast_Kind_Function) { - onyx_message_add(state->msgs, - ONYX_MESSAGE_TYPE_LITERAL, + onyx_message_add(Msg_Type_Literal, (*node)->token->pos, "overload option not function"); @@ -614,39 +582,39 @@ CHECK(overloaded_function, AstOverloadedFunction* func) { CHECK(node, AstNode* node) { switch (node->kind) { - case Ast_Kind_Function: return check_function(state, (AstFunction *) node); - case Ast_Kind_Overloaded_Function: return check_overloaded_function(state, (AstOverloadedFunction *) node); - case Ast_Kind_Block: return check_block(state, (AstBlock *) node); - case Ast_Kind_Return: return check_return(state, (AstReturn *) node); - case Ast_Kind_If: return check_if(state, (AstIf *) node); - case Ast_Kind_While: return check_while(state, (AstWhile *) node); - case Ast_Kind_Call: return check_call(state, (AstCall *) node); - case Ast_Kind_Binary_Op: return check_binaryop(state, (AstBinaryOp *) node); - default: return check_expression(state, (AstTyped *) node); + case Ast_Kind_Function: return check_function((AstFunction *) node); + case Ast_Kind_Overloaded_Function: return check_overloaded_function((AstOverloadedFunction *) node); + case Ast_Kind_Block: return check_block((AstBlock *) node); + case Ast_Kind_Return: return check_return((AstReturn *) node); + case Ast_Kind_If: return check_if((AstIf *) node); + case Ast_Kind_While: return check_while((AstWhile *) node); + case Ast_Kind_Call: return check_call((AstCall *) node); + case Ast_Kind_Binary_Op: return check_binaryop((AstBinaryOp *) node); + default: return check_expression((AstTyped *) node); } } -void onyx_type_check(SemState* state, ProgramInfo* program) { +void onyx_type_check(ProgramInfo* program) { bh_arr_each(Entity, entity, program->entities) { switch (entity->type) { case Entity_Type_Function: if (entity->function->flags & Ast_Kind_Foreign) program->foreign_func_count++; - if (check_function(state, entity->function)) return; + if (check_function(entity->function)) return; break; case Entity_Type_Overloaded_Function: - if (check_overloaded_function(state, entity->overloaded_function)) return; + if (check_overloaded_function(entity->overloaded_function)) return; break; case Entity_Type_Global: if (entity->global->flags & Ast_Kind_Foreign) program->foreign_global_count++; - if (check_global(state, entity->global)) return; + if (check_global(entity->global)) return; break; case Entity_Type_Expression: - if (check_expression(state, entity->expr)) return; + if (check_expression(entity->expr)) return; break; case Entity_Type_String_Literal: break; diff --git a/src/onyxmsgs.c b/src/onyxmsgs.c index 2ca0e761..2a979dff 100644 --- a/src/onyxmsgs.c +++ b/src/onyxmsgs.c @@ -4,6 +4,8 @@ #define MAX_MSGS 10 +OnyxMessages msgs; + static const char* msg_formats[] = { "%s", "expected token '%s', got '%s'", @@ -28,8 +30,14 @@ static const char* msg_formats[] = { "unable to resolve symbol '%b'", }; -void onyx_message_add(OnyxMessages* msgs, OnyxMessageType type, OnyxFilePos pos, ...) { - OnyxMessage* msg = bh_alloc_item(msgs->allocator, OnyxMessage); +void onyx_message_init(bh_allocator allocator, bh_table(bh_file_contents)* files) { + msgs.allocator = allocator; + msgs.first = NULL; + msgs.file_contents = files; +} + +void onyx_message_add(MsgType type, OnyxFilePos pos, ...) { + Message* msg = bh_alloc_item(msgs.allocator, Message); msg->type = type; msg->pos = pos; @@ -38,7 +46,7 @@ void onyx_message_add(OnyxMessages* msgs, OnyxMessageType type, OnyxFilePos pos, bh_snprintf_va(msg->text, ONYX_MSG_BUFFER_SIZE, msg_formats[type], arg_list); va_end(arg_list); - OnyxMessage** walker = &msgs->first; + Message** walker = &msgs.first; while (*walker && (*walker)->pos.line < pos.line) walker = &(*walker)->next; while (*walker && (*walker)->pos.line == pos.line && (*walker)->pos.column < pos.column) walker = &(*walker)->next; @@ -46,7 +54,7 @@ void onyx_message_add(OnyxMessages* msgs, OnyxMessageType type, OnyxFilePos pos, *walker = msg; } -static void print_detailed_message(OnyxMessage* msg, bh_file_contents* fc) { +static void print_detailed_message(Message* msg, bh_file_contents* fc) { bh_printf("(%s:%l:%l) %s\n", msg->pos.filename, msg->pos.line, msg->pos.column, msg->text); i32 linelength = 0; @@ -64,13 +72,13 @@ static void print_detailed_message(OnyxMessage* msg, bh_file_contents* fc) { bh_printf("| %s\n", pointer_str); } -void onyx_message_print(OnyxMessages* msgs) { - OnyxMessage* msg = msgs->first; +void onyx_message_print() { + Message* msg = msgs.first; i32 msg_count = MAX_MSGS; while (msg && msg_count-- > 0) { if (msg->pos.filename) { - bh_file_contents* fc = &bh_table_get(bh_file_contents, *msgs->file_contents, (char *) msg->pos.filename); + bh_file_contents* fc = &bh_table_get(bh_file_contents, *msgs.file_contents, (char *) msg->pos.filename); print_detailed_message(msg, fc); } else { @@ -80,12 +88,6 @@ void onyx_message_print(OnyxMessages* msgs) { } } -b32 onyx_message_has_errors(OnyxMessages* msgs) { - return msgs->first != NULL; -} - -void onyx_message_create(bh_allocator allocator, OnyxMessages* msgs, bh_table(bh_file_contents)* files) { - msgs->allocator = allocator; - msgs->first = NULL; - msgs->file_contents = files; +b32 onyx_message_has_errors() { + return msgs.first != NULL; } diff --git a/src/onyxparser.c b/src/onyxparser.c index d9260851..cb3c9d9f 100644 --- a/src/onyxparser.c +++ b/src/onyxparser.c @@ -76,8 +76,7 @@ static OnyxToken* expect_token(OnyxParser* parser, TokenType token_type) { consume_token(parser); if (token->type != token_type) { - onyx_message_add(parser->msgs, - ONYX_MESSAGE_TYPE_EXPECTED_TOKEN, + onyx_message_add(Msg_Type_Expected_Token, token->pos, token_name(token_type), token_name(token->type)); return NULL; @@ -210,8 +209,7 @@ static AstTyped* parse_factor(OnyxParser* parser) { break; if (parser->curr->type != ',') { - onyx_message_add(parser->msgs, - ONYX_MESSAGE_TYPE_EXPECTED_TOKEN, + onyx_message_add(Msg_Type_Expected_Token, parser->curr->pos, token_name(','), token_name(parser->curr->type)); @@ -265,8 +263,7 @@ static AstTyped* parse_factor(OnyxParser* parser) { } default: - onyx_message_add(parser->msgs, - ONYX_MESSAGE_TYPE_UNEXPECTED_TOKEN, + onyx_message_add(Msg_Type_Unexpected_Token, parser->curr->pos, token_name(parser->curr->type)); return NULL; @@ -512,8 +509,7 @@ static b32 parse_symbol_declaration(OnyxParser* parser, AstNode** ret) { AstTyped* expr = parse_expression(parser); if (expr == NULL) { token_toggle_end(parser->curr); - onyx_message_add(parser->msgs, - ONYX_MESSAGE_TYPE_EXPECTED_EXPRESSION, + onyx_message_add(Msg_Type_Expected_Expression, assignment->token->pos, parser->curr->text); token_toggle_end(parser->curr); @@ -611,8 +607,7 @@ static AstNode* parse_statement(OnyxParser* parser) { if (needs_semicolon) { if (parser->curr->type != ';') { - onyx_message_add(parser->msgs, - ONYX_MESSAGE_TYPE_EXPECTED_TOKEN, + onyx_message_add(Msg_Type_Expected_Token, parser->curr->pos, token_name(';'), token_name(parser->curr->type)); @@ -680,8 +675,7 @@ static AstType* parse_type(OnyxParser* parser) { else { token_toggle_end(parser->curr); - onyx_message_add(parser->msgs, - ONYX_MESSAGE_TYPE_UNEXPECTED_TOKEN, + onyx_message_add(Msg_Type_Unexpected_Token, parser->curr->pos, parser->curr->text); token_toggle_end(parser->curr); @@ -814,8 +808,7 @@ static AstFunction* parse_function_definition(OnyxParser* parser) { OnyxToken* directive_token = expect_token(parser, '#'); OnyxToken* symbol_token = expect_token(parser, Token_Type_Symbol); - onyx_message_add(parser->msgs, - ONYX_MESSAGE_TYPE_UNKNOWN_DIRECTIVE, + onyx_message_add(Msg_Type_Unknown_Directive, directive_token->pos, symbol_token->text, symbol_token->length); } @@ -883,8 +876,7 @@ static AstTyped* parse_global_declaration(OnyxParser* parser) { OnyxToken* directive_token = expect_token(parser, '#'); OnyxToken* symbol_token = expect_token(parser, Token_Type_Symbol); - onyx_message_add(parser->msgs, - ONYX_MESSAGE_TYPE_UNKNOWN_DIRECTIVE, + onyx_message_add(Msg_Type_Unknown_Directive, directive_token->pos, symbol_token->text, symbol_token->length); } @@ -989,14 +981,13 @@ void* onyx_ast_node_new(bh_allocator alloc, i32 size, AstKind kind) { return node; } -OnyxParser onyx_parser_create(bh_allocator alloc, OnyxTokenizer *tokenizer, OnyxMessages* msgs) { +OnyxParser onyx_parser_create(bh_allocator alloc, OnyxTokenizer *tokenizer) { OnyxParser parser; parser.allocator = alloc; parser.tokenizer = tokenizer; parser.curr = tokenizer->tokens; parser.prev = NULL; - parser.msgs = msgs; parser.results = (ParseResults) { .allocator = global_heap_allocator, diff --git a/src/onyxsempass.c b/src/onyxsempass.c index e19cfcb0..33d55d69 100644 --- a/src/onyxsempass.c +++ b/src/onyxsempass.c @@ -2,24 +2,22 @@ #include "onyxsempass.h" #include "onyxutils.h" -SemState onyx_sempass_create(bh_allocator alloc, bh_allocator node_alloc, OnyxMessages* msgs) { - SemState state = { +SemState semstate; + +void onyx_sempass_init(bh_allocator alloc, bh_allocator node_alloc) { + semstate = (SemState) { .allocator = alloc, .node_allocator = node_alloc, .global_scope = NULL, .curr_scope = NULL, - - .msgs = msgs, }; - - return state; } -void onyx_sempass(SemState* state, ProgramInfo* program) { - onyx_resolve_symbols(state, program); - if (onyx_message_has_errors(state->msgs)) return; +void onyx_sempass(ProgramInfo* program) { + onyx_resolve_symbols(program); + if (onyx_message_has_errors()) return; - onyx_type_check(state, program); - if (onyx_message_has_errors(state->msgs)) return; + onyx_type_check(program); + if (onyx_message_has_errors()) return; } diff --git a/src/onyxsymres.c b/src/onyxsymres.c index 5b03638b..e7245746 100644 --- a/src/onyxsymres.c +++ b/src/onyxsymres.c @@ -1,56 +1,55 @@ #define BH_DEBUG #include "onyxsempass.h" -static b32 symbol_introduce(SemState* state, OnyxToken* tkn, AstNode* symbol); -static AstNode* symbol_resolve(SemState* state, OnyxToken* tkn); -static void symbol_basic_type_introduce(SemState* state, AstBasicType* basic_type); -static void scope_enter(SemState* state, Scope* new_scope); -static void scope_leave(SemState* state); - -static AstType* symres_type(SemState* state, AstType* type); -static void symres_local(SemState* state, AstLocal** local); -static void symres_call(SemState* state, AstCall* call); -static void symres_expression(SemState* state, AstTyped** expr); -static void symres_return(SemState* state, AstReturn* ret); -static void symres_if(SemState* state, AstIf* ifnode); -static void symres_while(SemState* state, AstWhile* whilenode); -static void symres_statement_chain(SemState* state, AstNode* walker, AstNode** trailer); -static b32 symres_statement(SemState* state, AstNode* stmt); -static void symres_block(SemState* state, AstBlock* block); -static void symres_function(SemState* state, AstFunction* func); -static void symres_global(SemState* state, AstGlobal* global); -static void symres_overloaded_function(SemState* state, AstOverloadedFunction* ofunc); - -static b32 symbol_introduce(SemState* state, OnyxToken* tkn, AstNode* symbol) { +static b32 symbol_introduce(OnyxToken* tkn, AstNode* symbol); +static AstNode* symbol_resolve(OnyxToken* tkn); +static void symbol_basic_type_introduce(AstBasicType* basic_type); +static void scope_enter(Scope* new_scope); +static void scope_leave(); + +static AstType* symres_type(AstType* type); +static void symres_local(AstLocal** local); +static void symres_call(AstCall* call); +static void symres_expression(AstTyped** expr); +static void symres_return(AstReturn* ret); +static void symres_if(AstIf* ifnode); +static void symres_while(AstWhile* whilenode); +static void symres_statement_chain(AstNode* walker, AstNode** trailer); +static b32 symres_statement(AstNode* stmt); +static void symres_block(AstBlock* block); +static void symres_function(AstFunction* func); +static void symres_global(AstGlobal* global); +static void symres_overloaded_function(AstOverloadedFunction* ofunc); + +static b32 symbol_introduce(OnyxToken* tkn, AstNode* symbol) { token_toggle_end(tkn); - if (bh_table_has(AstNode *, state->curr_scope->symbols, tkn->text)) { - onyx_message_add(state->msgs, - ONYX_MESSAGE_TYPE_REDECLARE_SYMBOL, + if (bh_table_has(AstNode *, semstate.curr_scope->symbols, tkn->text)) { + onyx_message_add(Msg_Type_Redeclare_Symbol, tkn->pos, tkn->text); token_toggle_end(tkn); return 0; } - bh_table_put(AstNode *, state->curr_scope->symbols, tkn->text, symbol); + bh_table_put(AstNode *, semstate.curr_scope->symbols, tkn->text, symbol); if (symbol->kind == Ast_Kind_Local) - bh_arr_push(state->curr_function->locals, (AstLocal *) symbol); + bh_arr_push(semstate.curr_function->locals, (AstLocal *) symbol); token_toggle_end(tkn); return 1; } -static void symbol_basic_type_introduce(SemState* state, AstBasicType* basic_type) { - bh_table_put(AstNode *, state->curr_scope->symbols, basic_type->name, (AstNode *) basic_type); +static void symbol_basic_type_introduce(AstBasicType* basic_type) { + bh_table_put(AstNode *, semstate.curr_scope->symbols, basic_type->name, (AstNode *) basic_type); } -static AstNode* symbol_resolve(SemState* state, OnyxToken* tkn) { +static AstNode* symbol_resolve(OnyxToken* tkn) { token_toggle_end(tkn); AstNode* res = NULL; - Scope* scope = state->curr_scope; + Scope* scope = semstate.curr_scope; while (res == NULL && scope != NULL) { if (bh_table_has(AstNode *, scope->symbols, tkn->text)) { @@ -61,8 +60,7 @@ static AstNode* symbol_resolve(SemState* state, OnyxToken* tkn) { } if (res == NULL ) { - onyx_message_add(state->msgs, - ONYX_MESSAGE_TYPE_UNKNOWN_SYMBOL, + onyx_message_add(Msg_Type_Unknown_Symbol, tkn->pos, tkn->text); @@ -72,45 +70,45 @@ static AstNode* symbol_resolve(SemState* state, OnyxToken* tkn) { if (res->kind == Ast_Kind_Symbol) { token_toggle_end(tkn); - return symbol_resolve(state, res->token); + return symbol_resolve(res->token); } token_toggle_end(tkn); return res; } -static void scope_enter(SemState* state, Scope* new_scope) { - new_scope->parent = state->curr_scope; - state->curr_scope = new_scope; +static void scope_enter(Scope* new_scope) { + new_scope->parent = semstate.curr_scope; + semstate.curr_scope = new_scope; } -static void scope_leave(SemState* state) { - state->curr_scope = state->curr_scope->parent; +static void scope_leave() { + semstate.curr_scope = semstate.curr_scope->parent; } -static AstType* symres_type(SemState* state, AstType* type) { +static AstType* symres_type(AstType* type) { if (type == NULL) return NULL; if (type->kind == Ast_Kind_Symbol) { - return (AstType *) symbol_resolve(state, ((AstNode *) type)->token); + return (AstType *) symbol_resolve(((AstNode *) type)->token); } // NOTE: Already resolved if (type->kind == Ast_Kind_Basic_Type) return type; if (type->kind == Ast_Kind_Pointer_Type) { - ((AstPointerType *) type)->elem = symres_type(state, ((AstPointerType *) type)->elem); + ((AstPointerType *) type)->elem = symres_type(((AstPointerType *) type)->elem); return type; } if (type->kind == Ast_Kind_Function_Type) { AstFunctionType* ftype = (AstFunctionType *) type; - ftype->return_type = symres_type(state, ftype->return_type); + ftype->return_type = symres_type(ftype->return_type); if (ftype->param_count > 0) fori (i, 0, ftype->param_count - 1) { - ftype->params[i] = symres_type(state, ftype->params[i]); + ftype->params[i] = symres_type(ftype->params[i]); } return type; @@ -120,50 +118,49 @@ static AstType* symres_type(SemState* state, AstType* type) { return NULL; } -static void symres_local(SemState* state, AstLocal** local) { - (*local)->type_node = symres_type(state, (*local)->type_node); +static void symres_local(AstLocal** local) { + (*local)->type_node = symres_type((*local)->type_node); - symbol_introduce(state, (*local)->token, (AstNode *) *local); + symbol_introduce((*local)->token, (AstNode *) *local); } -static void symres_call(SemState* state, AstCall* call) { - AstNode* callee = symbol_resolve(state, call->callee->token); +static void symres_call(AstCall* call) { + AstNode* callee = symbol_resolve(call->callee->token); if (callee) call->callee = callee; else { token_toggle_end(call->callee->token); - onyx_message_add(state->msgs, - ONYX_MESSAGE_TYPE_UNKNOWN_SYMBOL, + onyx_message_add(Msg_Type_Unknown_Symbol, call->callee->token->pos, call->callee->token->text); token_toggle_end(call->callee->token); return; } - symres_statement_chain(state, (AstNode *) call->arguments, (AstNode **) &call->arguments); + symres_statement_chain((AstNode *) call->arguments, (AstNode **) &call->arguments); } -static void symres_unaryop(SemState* state, AstUnaryOp** unaryop) { +static void symres_unaryop(AstUnaryOp** unaryop) { if ((*unaryop)->operation == Unary_Op_Cast) { - (*unaryop)->type_node = symres_type(state, (*unaryop)->type_node); + (*unaryop)->type_node = symres_type((*unaryop)->type_node); } - symres_expression(state, &(*unaryop)->expr); + symres_expression(&(*unaryop)->expr); } -static void symres_expression(SemState* state, AstTyped** expr) { +static void symres_expression(AstTyped** expr) { switch ((*expr)->kind) { case Ast_Kind_Binary_Op: - symres_expression(state, &((AstBinaryOp *)(*expr))->left); - symres_expression(state, &((AstBinaryOp *)(*expr))->right); + symres_expression(&((AstBinaryOp *)(*expr))->left); + symres_expression(&((AstBinaryOp *)(*expr))->right); break; - case Ast_Kind_Unary_Op: symres_unaryop(state, (AstUnaryOp **) expr); break; - case Ast_Kind_Call: symres_call(state, (AstCall *) *expr); break; - case Ast_Kind_Block: symres_block(state, (AstBlock *) *expr); break; + case Ast_Kind_Unary_Op: symres_unaryop((AstUnaryOp **) expr); break; + case Ast_Kind_Call: symres_call((AstCall *) *expr); break; + case Ast_Kind_Block: symres_block((AstBlock *) *expr); break; case Ast_Kind_Symbol: - *expr = (AstTyped *) symbol_resolve(state, ((AstNode *) *expr)->token); + *expr = (AstTyped *) symbol_resolve(((AstNode *) *expr)->token); break; // NOTE: This is a good case, since it means the symbol is already resolved @@ -172,12 +169,12 @@ static void symres_expression(SemState* state, AstTyped** expr) { case Ast_Kind_Function: case Ast_Kind_NumLit: case Ast_Kind_StrLit: - (*expr)->type_node = symres_type(state, (*expr)->type_node); + (*expr)->type_node = symres_type((*expr)->type_node); break; case Ast_Kind_Array_Access: - symres_expression(state, &((AstArrayAccess *)(*expr))->addr); - symres_expression(state, &((AstArrayAccess *)(*expr))->expr); + symres_expression(&((AstArrayAccess *)(*expr))->addr); + symres_expression(&((AstArrayAccess *)(*expr))->expr); break; default: @@ -186,13 +183,13 @@ static void symres_expression(SemState* state, AstTyped** expr) { } } -static void symres_return(SemState* state, AstReturn* ret) { +static void symres_return(AstReturn* ret) { if (ret->expr) - symres_expression(state, &ret->expr); + symres_expression(&ret->expr); } -static void symres_if(SemState* state, AstIf* ifnode) { - symres_expression(state, &ifnode->cond); +static void symres_if(AstIf* ifnode) { + symres_expression(&ifnode->cond); // BUG: This will not work for the following case: // if cond foo := 10 @@ -200,36 +197,36 @@ static void symres_if(SemState* state, AstIf* ifnode) { // // The declaration will cause a problem but semantically the above // doesn't make sense. - if (ifnode->true_stmt != NULL) symres_statement(state, ifnode->true_stmt); - if (ifnode->false_stmt != NULL) symres_statement(state, ifnode->false_stmt); + if (ifnode->true_stmt != NULL) symres_statement(ifnode->true_stmt); + if (ifnode->false_stmt != NULL) symres_statement(ifnode->false_stmt); } -static void symres_while(SemState* state, AstWhile* whilenode) { - symres_expression(state, &whilenode->cond); - symres_statement(state, whilenode->stmt); +static void symres_while(AstWhile* whilenode) { + symres_expression(&whilenode->cond); + symres_statement(whilenode->stmt); } // NOTE: Returns 1 if the statment should be removed -static b32 symres_statement(SemState* state, AstNode* stmt) { +static b32 symres_statement(AstNode* stmt) { switch (stmt->kind) { - case Ast_Kind_Local: symres_local(state, (AstLocal **) &stmt); return 1; - case Ast_Kind_Return: symres_return(state, (AstReturn *) stmt); return 0; - case Ast_Kind_If: symres_if(state, (AstIf *) stmt); return 0; - case Ast_Kind_While: symres_while(state, (AstWhile *) stmt); return 0; - case Ast_Kind_Call: symres_call(state, (AstCall *) stmt); return 0; - case Ast_Kind_Argument: symres_expression(state, (AstTyped **) &((AstArgument *)stmt)->value); return 0; - case Ast_Kind_Block: symres_block(state, (AstBlock *) stmt); return 0; + case Ast_Kind_Local: symres_local((AstLocal **) &stmt); return 1; + case Ast_Kind_Return: symres_return((AstReturn *) stmt); return 0; + case Ast_Kind_If: symres_if((AstIf *) stmt); return 0; + case Ast_Kind_While: symres_while((AstWhile *) stmt); return 0; + case Ast_Kind_Call: symres_call((AstCall *) stmt); return 0; + case Ast_Kind_Argument: symres_expression((AstTyped **) &((AstArgument *)stmt)->value); return 0; + case Ast_Kind_Block: symres_block((AstBlock *) stmt); return 0; case Ast_Kind_Break: return 0; case Ast_Kind_Continue: return 0; - default: symres_expression(state, (AstTyped **) &stmt); return 0; + default: symres_expression((AstTyped **) &stmt); return 0; } } -static void symres_statement_chain(SemState* state, AstNode* walker, AstNode** trailer) { +static void symres_statement_chain(AstNode* walker, AstNode** trailer) { while (walker) { - if (symres_statement(state, walker)) { + if (symres_statement(walker)) { *trailer = walker->next; AstNode* tmp = walker->next; @@ -242,81 +239,81 @@ static void symres_statement_chain(SemState* state, AstNode* walker, AstNode** t } } -static void symres_block(SemState* state, AstBlock* block) { +static void symres_block(AstBlock* block) { if (block->scope == NULL) - block->scope = scope_create(state->node_allocator, state->curr_scope); + block->scope = scope_create(semstate.node_allocator, semstate.curr_scope); - scope_enter(state, block->scope); + scope_enter(block->scope); if (block->body) - symres_statement_chain(state, block->body, &block->body); + symres_statement_chain(block->body, &block->body); - scope_leave(state); + scope_leave(); } -static void symres_function(SemState* state, AstFunction* func) { +static void symres_function(AstFunction* func) { if (func->scope == NULL) - func->scope = scope_create(state->node_allocator, state->curr_scope); + func->scope = scope_create(semstate.node_allocator, semstate.curr_scope); - scope_enter(state, func->scope); + scope_enter(func->scope); for (AstLocal *param = func->params; param != NULL; param = (AstLocal *) param->next) { - param->type_node = symres_type(state, param->type_node); + param->type_node = symres_type(param->type_node); - symbol_introduce(state, param->token, (AstNode *) param); + symbol_introduce(param->token, (AstNode *) param); } if (func->type_node != NULL) { - func->type_node = symres_type(state, func->type_node); + func->type_node = symres_type(func->type_node); } - state->curr_function = func; - symres_block(state, func->body); + semstate.curr_function = func; + symres_block(func->body); - scope_leave(state); + scope_leave(); } -static void symres_global(SemState* state, AstGlobal* global) { - global->type_node = symres_type(state, global->type_node); +static void symres_global(AstGlobal* global) { + global->type_node = symres_type(global->type_node); } -static void symres_overloaded_function(SemState* state, AstOverloadedFunction* ofunc) { +static void symres_overloaded_function(AstOverloadedFunction* ofunc) { bh_arr_each(AstTyped *, node, ofunc->overloads) { if ((*node)->kind == Ast_Kind_Symbol) { - *node = (AstTyped *) symbol_resolve(state, (*node)->token); + *node = (AstTyped *) symbol_resolve((*node)->token); } } } -void onyx_resolve_symbols(SemState* state, ProgramInfo* program) { +void onyx_resolve_symbols(ProgramInfo* program) { - state->global_scope = scope_create(state->node_allocator, NULL); - scope_enter(state, state->global_scope); + semstate.global_scope = scope_create(semstate.node_allocator, NULL); + scope_enter(semstate.global_scope); // NOTE: Add types to global scope - symbol_basic_type_introduce(state, &basic_type_void); - symbol_basic_type_introduce(state, &basic_type_bool); - symbol_basic_type_introduce(state, &basic_type_i8); - symbol_basic_type_introduce(state, &basic_type_u8); - symbol_basic_type_introduce(state, &basic_type_i16); - symbol_basic_type_introduce(state, &basic_type_u16); - symbol_basic_type_introduce(state, &basic_type_i32); - symbol_basic_type_introduce(state, &basic_type_u32); - symbol_basic_type_introduce(state, &basic_type_i64); - symbol_basic_type_introduce(state, &basic_type_u64); - symbol_basic_type_introduce(state, &basic_type_f32); - symbol_basic_type_introduce(state, &basic_type_f64); - symbol_basic_type_introduce(state, &basic_type_rawptr); + symbol_basic_type_introduce(&basic_type_void); + symbol_basic_type_introduce(&basic_type_bool); + symbol_basic_type_introduce(&basic_type_i8); + symbol_basic_type_introduce(&basic_type_u8); + symbol_basic_type_introduce(&basic_type_i16); + symbol_basic_type_introduce(&basic_type_u16); + symbol_basic_type_introduce(&basic_type_i32); + symbol_basic_type_introduce(&basic_type_u32); + symbol_basic_type_introduce(&basic_type_i64); + symbol_basic_type_introduce(&basic_type_u64); + symbol_basic_type_introduce(&basic_type_f32); + symbol_basic_type_introduce(&basic_type_f64); + symbol_basic_type_introduce(&basic_type_rawptr); bh_arr_each(AstBinding *, binding, program->bindings) - if (!symbol_introduce(state, (*binding)->token, (*binding)->node)) return; + if (!symbol_introduce((*binding)->token, (*binding)->node)) return; bh_arr_each(Entity, entity, program->entities) { switch (entity->type) { - case Entity_Type_Function: symres_function(state, entity->function); break; - case Entity_Type_Overloaded_Function: symres_overloaded_function(state, entity->overloaded_function); break; - case Entity_Type_Global: symres_global(state, entity->global); break; - case Entity_Type_Expression: symres_expression(state, &entity->expr); break; + case Entity_Type_Function: symres_function(entity->function); break; + case Entity_Type_Overloaded_Function: symres_overloaded_function(entity->overloaded_function); break; + case Entity_Type_Global: symres_global(entity->global); break; + case Entity_Type_Expression: symres_expression(&entity->expr); break; default: break; } diff --git a/src/onyxwasm.c b/src/onyxwasm.c index 7117648d..3a9d81f2 100644 --- a/src/onyxwasm.c +++ b/src/onyxwasm.c @@ -1014,10 +1014,9 @@ static void compile_string_literal(OnyxWasmModule* mod, AstStrLit* strlit) { bh_arr_push(mod->data, datum); } -OnyxWasmModule onyx_wasm_module_create(bh_allocator alloc, OnyxMessages* msgs) { +OnyxWasmModule onyx_wasm_module_create(bh_allocator alloc) { OnyxWasmModule module = { .allocator = alloc, - .msgs = msgs, .type_map = NULL, .next_type_idx = 0, -- 2.25.1