From 4e3100f89d90277b1719f13002b18a596089db66 Mon Sep 17 00:00:00 2001 From: Brendan Hansen Date: Fri, 19 Jun 2020 12:37:49 -0500 Subject: [PATCH] Bugfixes for foreign function calls --- include/onyxparser.h | 1 + onyx | Bin 152816 -> 152896 bytes progs/minimal.onyx | 16 +++++++++++++--- src/onyxparser.c | 5 ++++- src/onyxwasm.c | 4 +++- 5 files changed, 21 insertions(+), 5 deletions(-) diff --git a/include/onyxparser.h b/include/onyxparser.h index b80e2cb9..df4adab6 100644 --- a/include/onyxparser.h +++ b/include/onyxparser.h @@ -57,6 +57,7 @@ typedef enum OnyxAstNodeKind { ONYX_AST_NODE_KIND_LITERAL, ONYX_AST_NODE_KIND_CAST, ONYX_AST_NODE_KIND_PARAM, + ONYX_AST_NODE_KIND_ARGUMENT, ONYX_AST_NODE_KIND_CALL, ONYX_AST_NODE_KIND_ASSIGNMENT, ONYX_AST_NODE_KIND_RETURN, diff --git a/onyx b/onyx index be18df102da38964c6521c4c42c8cebd0f0ac8d6..86ccaf9ebe9972c33c0e141faf14cae4bed9c0cb 100755 GIT binary patch delta 39164 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 M%B1P&eH$YF109eXng9R* delta 38917 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 i32 { return 10 as i32; @@ -21,10 +23,18 @@ export do_stuff :: proc -> i32 { res := diff_square((4 + 5) as i32, (2 + 3) as i32); res = res + foo(); // res should be 66 - return res; + return res * (0 - 1); +} + +export float_test :: proc -> f32 { + return (1.2f + 5.3f); } export main :: proc { - output := do_stuff() * (0 - 2); + output := do_stuff(); + print(output); + print_float(float_test()); + + print_if(output, float_test()); } diff --git a/src/onyxparser.c b/src/onyxparser.c index c98c1609..4a65939a 100644 --- a/src/onyxparser.c +++ b/src/onyxparser.c @@ -23,6 +23,7 @@ static const char* ast_node_names[] = { "LITERAL", "CAST", "PARAM", + "ARGUMENT", "CALL", "ASSIGN", "RETURN", @@ -269,7 +270,9 @@ static OnyxAstNode* parse_factor(OnyxParser* parser) { OnyxAstNode** prev = &call_node->arguments; OnyxAstNode* curr = NULL; while (parser->curr_token->type != TOKEN_TYPE_CLOSE_PAREN) { - curr = parse_expression(parser); + curr = onyx_ast_node_new(parser->allocator, ONYX_AST_NODE_KIND_ARGUMENT); + curr->left = parse_expression(parser); + curr->type = curr->left->type; if (curr != NULL && curr->kind != ONYX_AST_NODE_KIND_ERROR) { *prev = curr; diff --git a/src/onyxwasm.c b/src/onyxwasm.c index e4577803..27760df3 100644 --- a/src/onyxwasm.c +++ b/src/onyxwasm.c @@ -373,7 +373,7 @@ static void process_expression(OnyxWasmModule* mod, WasmFunc* func, OnyxAstNode* { OnyxAstNodeCall* call = &expr->as_call; forll (OnyxAstNode, arg, call->arguments, next) { - process_expression(mod, func, arg); + process_expression(mod, func, arg->left); } i32 func_idx = (i32) bh_imap_get(&mod->func_map, (u64) call->callee); @@ -553,6 +553,8 @@ static void process_foreign(OnyxWasmModule* module, OnyxAstNodeForeign* foreign) if (foreign->import->kind == ONYX_AST_NODE_KIND_FUNCDEF) { i32 type_idx = generate_type_idx(module, &foreign->import->as_funcdef); + bh_imap_put(&module->func_map, (u64) &foreign->import->as_funcdef, module->next_import_func_idx++); + WasmImport import = { .kind = WASM_FOREIGN_FUNCTION, .idx = type_idx, -- 2.25.1