From 9d88212801e7ca4aa8bccf2a20073db7082eeaae Mon Sep 17 00:00:00 2001 From: Brendan Hansen Date: Wed, 1 Jul 2020 09:16:20 -0500 Subject: [PATCH] Bug fixes and additions to globals --- onyx | Bin 220656 -> 220808 bytes progs/other.onyx | 2 +- progs/test.onyx | 20 ++++++++++---------- src/onyx.c | 1 - src/onyxparser.c | 14 +++++++++++++- src/onyxtypecheck.c | 2 +- src/onyxwasm.c | 15 +++++++++++++++ 7 files changed, 40 insertions(+), 14 deletions(-) diff --git a/onyx b/onyx index 58c12bc7527a5e1e8d8915fb9b5ba72aae880c16..eb5f54188bf77f3602b68b7d3035a7919f85bbc0 100755 GIT binary patch delta 41081 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

M_r3(lC?Z6>Eb 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 delta 40527 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 i32 { - return 8675309 + something_else(n); + return 8675309 + something_else(n) + global_value; } export fib :: proc (n i32) -> i32 { diff --git a/progs/test.onyx b/progs/test.onyx index 2cc07c3e..54069430 100644 --- a/progs/test.onyx +++ b/progs/test.onyx @@ -11,7 +11,7 @@ print_i64 :: foreign "host" "print" proc (value i64) --- print_f64 :: foreign "host" "print" proc (value f64) --- something_else :: proc (n i32) -> i32 { - return 100 * n; + return 100 * n + global_value; } // symbol :: proc {} Global function @@ -20,16 +20,11 @@ something_else :: proc (n i32) -> i32 { // symbol :: foreign "" "" i32 Global foreign mutable i32 // symbol :: 5 Global constant value // symbol := 5 Global mutable variable -// symbol : i32 Global mutable i32 (defaults to 0 initial value) -global_value := 5; -foreign_global :: foreign "dummy" "global" i32 +export global_value := 100 // This is the entry point -export main :: proc { - print_i32(global_value); - print_i32(foreign_global); - +export main2 :: proc { i := 0; while i < 10 { res :: fib(i); @@ -65,14 +60,19 @@ export main :: proc { } } -export main2 :: proc { +export main :: proc { big_num := fib(factorial(4)); - something :: other_value(3); + something :: other_value(0); + + global_value = 1000; + something_else :: other_value(0); condition := big_num < something; if condition { print_i32(big_num); print_i32(something); + print_i32(something_else); } } + diff --git a/src/onyx.c b/src/onyx.c index c63b3178..4d3fafca 100644 --- a/src/onyx.c +++ b/src/onyx.c @@ -221,7 +221,6 @@ int main(int argc, char *argv[]) { case ONYX_COMPILE_ACTION_COMPILE: compiler_progress = onyx_compile(&compile_opts, &compile_state); - break; default: break; diff --git a/src/onyxparser.c b/src/onyxparser.c index af39eb91..3a698b6a 100644 --- a/src/onyxparser.c +++ b/src/onyxparser.c @@ -278,6 +278,8 @@ static OnyxAstNode* parse_factor(OnyxParser* parser) { } if (parser->curr_token->type == TOKEN_TYPE_KEYWORD_CAST) { + parser_next_token(parser); + OnyxAstNodeUnaryOp* cast_node = onyx_ast_node_new(parser->allocator, ONYX_AST_NODE_KIND_UNARY_OP); cast_node->operation = ONYX_UNARY_OP_CAST; cast_node->type = parse_type(parser); @@ -784,11 +786,21 @@ static OnyxAstNode* parse_top_level_statement(OnyxParser* parser) { expect(parser, TOKEN_TYPE_SYM_COLON); + OnyxTypeInfo* type = &builtin_types[ONYX_TYPE_INFO_KIND_UNKNOWN]; + + if (parser->curr_token->type == TOKEN_TYPE_SYMBOL) { + type = parse_type(parser); + } + if (parser->curr_token->type == TOKEN_TYPE_SYM_COLON) { parser_next_token(parser); OnyxAstNode* node = parse_top_level_constant_symbol(parser); + if (node->kind == ONYX_AST_NODE_KIND_GLOBAL) { + node->type = type; + } + if (node->kind == ONYX_AST_NODE_KIND_FOREIGN) { node->as_foreign.import->token = symbol; @@ -805,7 +817,7 @@ static OnyxAstNode* parse_top_level_statement(OnyxParser* parser) { global->token = symbol; global->flags |= ONYX_AST_FLAG_LVAL; global->initial_value = parse_expression(parser); - global->type = &builtin_types[ONYX_TYPE_INFO_KIND_UNKNOWN]; + global->type = type; return (OnyxAstNode *) global; diff --git a/src/onyxtypecheck.c b/src/onyxtypecheck.c index 7730a486..b64bc427 100644 --- a/src/onyxtypecheck.c +++ b/src/onyxtypecheck.c @@ -270,7 +270,7 @@ static void typecheck_global(OnyxSemPassState* state, OnyxAstNodeGlobal* global) ONYX_MESSAGE_TYPE_GLOBAL_TYPE_MISMATCH, global->token->pos, global->token->token, global->token->length, - global->type->name, global->initial_value->type); + global->type->name, global->initial_value->type->name); return; } } else { diff --git a/src/onyxwasm.c b/src/onyxwasm.c index 55af1186..fd9690bf 100644 --- a/src/onyxwasm.c +++ b/src/onyxwasm.c @@ -766,6 +766,21 @@ static void compile_global_declaration(OnyxWasmModule* module, OnyxAstNodeGlobal return; } + if ((global->flags & ONYX_AST_FLAG_EXPORTED) != 0) { + onyx_token_null_toggle(*global->token); + + i32 global_idx = (i32) bh_imap_get(&module->func_map, (u64) global); + + WasmExport wasm_export = { + .kind = WASM_FOREIGN_GLOBAL, + .idx = global_idx, + }; + bh_table_put(WasmExport, module->exports, global->token->token, wasm_export); + module->export_count++; + + onyx_token_null_toggle(*global->token); + } + compile_expression(module, &glob.initial_value, global->initial_value); bh_arr_push(module->globals, glob); } -- 2.25.1