From 0e8dfdb4d6cd256f8b3e4d6a381c9fb7001c701b Mon Sep 17 00:00:00 2001 From: Brendan Hansen Date: Fri, 31 Dec 2021 12:05:23 -0600 Subject: [PATCH] made enums behave better with static ifs --- core/builtin.onyx | 4 +-- core/os/os.onyx | 4 +-- core/os/process.onyx | 2 +- core/runtime/build_opts.onyx | 38 +++++++++------------------ core/std.onyx | 10 +++---- core/stdio.onyx | 2 +- core/wasi/clock.onyx | 4 +-- core/wasi/env.onyx | 4 +-- core/wasi/wasi_fs.onyx | 2 +- include/astnodes.h | 2 ++ misc/vscode/onyx-0.0.2.vsix | Bin 247203 -> 249892 bytes misc/vscode/out/extension.js | 1 + misc/vscode/syntaxes/onyx.tmLanguage | 2 +- modules/webgl2/webgl2.onyx | 2 +- scripts/run_tests.onyx | 8 +++--- src/builtins.c | 21 +++++++++++++-- src/checker.c | 29 ++++++++++++-------- src/entities.c | 1 + src/onyx.c | 7 +++++ tests/caller_location.onyx | 2 +- 20 files changed, 84 insertions(+), 61 deletions(-) diff --git a/core/builtin.onyx b/core/builtin.onyx index f1a674ff..5bdb9641 100644 --- a/core/builtin.onyx +++ b/core/builtin.onyx @@ -62,7 +62,7 @@ OnyxContext :: struct { thread_id : i32; } -#if runtime.Runtime != runtime.Runtime_Custom { +#if runtime.runtime != .Custom { #local default_logger :: (data: rawptr, msg: str) { use package core println(msg); @@ -135,7 +135,7 @@ cresize :: (ptr: rawptr, size: u32) -> rawptr do return raw_resize(context.alloc cfree :: (ptr: rawptr) do raw_free(context.allocator, ptr); // CLEANUP: Does this really need to be limited to a non-custom runtime? -#if runtime.Runtime != runtime.Runtime_Custom { +#if runtime.runtime != .Custom { new :: ($T: type_expr, allocator := context.allocator) -> ^T { use package core.intrinsics.onyx { __initialize } diff --git a/core/os/os.onyx b/core/os/os.onyx index 23c77f80..c5aacf79 100644 --- a/core/os/os.onyx +++ b/core/os/os.onyx @@ -1,7 +1,7 @@ package core.os -#if runtime.Runtime != runtime.Runtime_Wasi - && runtime.Runtime != runtime.Runtime_Onyx { +#if runtime.runtime != .Wasi + && runtime.runtime != .Onyx { #error "The os library is currently only available on the WASI runtime, and should only be included if that is the chosen runtime." } diff --git a/core/os/process.onyx b/core/os/process.onyx index 5f66ab4a..76186568 100644 --- a/core/os/process.onyx +++ b/core/os/process.onyx @@ -1,6 +1,6 @@ package core.os -#if runtime.Runtime != runtime.Runtime_Onyx { +#if runtime.runtime != .Onyx { #error "This file can only be included in the 'onyx' runtime, because Wasi has not defined how to spawn and manage processes."; } diff --git a/core/runtime/build_opts.onyx b/core/runtime/build_opts.onyx index af42c699..1016bdb9 100644 --- a/core/runtime/build_opts.onyx +++ b/core/runtime/build_opts.onyx @@ -1,27 +1,15 @@ -// This following sybmols are not meant to be included in any compilation. -// Instead, all of the commented out symbols are defined automatically by the compiler -// and can be used in compile time #if statements. - -// Runtime :: Runtime_Wasi OR Runtime_Js OR Runtime_Custom - - - - - package runtime - -// At some point, these will become an enum. The problem at the moment is that -// compile-time if statements are not well integrated into other language features -// such as enums. They can only really handle compile time number math and boolean -// logic. - brendanfh 2020/02/08 - -Runtime_Onyx :: 1 -Runtime_Wasi :: 2 -Runtime_Js :: 3 -Runtime_Custom :: 4 - - - -OS_Linux :: 1 -OS_Windows :: 2 \ No newline at end of file +// runtime: Runtime This is set by the compiler +Runtime :: enum { + Onyx :: 1; + Wasi :: 2; + Js :: 3; + Custom :: 4; +} + +// compiler_os This is set by the compiler. It is not called 'os' because that conflicts with the 'core.os' package. +OS :: enum { + Linux :: 1; + Windows :: 2; +} \ No newline at end of file diff --git a/core/std.onyx b/core/std.onyx index 91f67e4d..e4db4636 100644 --- a/core/std.onyx +++ b/core/std.onyx @@ -38,26 +38,26 @@ package core #load "./type_info/helper" #local runtime :: package runtime -#if runtime.Runtime == runtime.Runtime_Wasi || runtime.Runtime == runtime.Runtime_Onyx { +#if runtime.runtime == .Wasi || runtime.runtime == .Onyx { #load "./os/file" #load "./os/os" #load "./os/dir" } -#if runtime.Runtime == runtime.Runtime_Onyx { +#if runtime.runtime == .Onyx { #load "./runtime/onyx_run" #load "./os/process" #load "./os/onyx_fs" } -#if runtime.Runtime == runtime.Runtime_Wasi { +#if runtime.runtime == .Wasi { #load "./wasi/wasi" #load "./runtime/wasi" #load "./wasi/clock" #load "./wasi/env" #load "./wasi/wasi_fs" } -#if runtime.Runtime == runtime.Runtime_Js { #load "./runtime/js" } -#if runtime.Runtime != runtime.Runtime_Custom { #load "./stdio" } +#if runtime.runtime == .Js { #load "./runtime/js" } +#if runtime.runtime != .Custom { #load "./stdio" } #if runtime.Multi_Threading_Enabled { #load "./intrinsics/atomics" diff --git a/core/stdio.onyx b/core/stdio.onyx index edc82140..6e7b19ff 100644 --- a/core/stdio.onyx +++ b/core/stdio.onyx @@ -8,7 +8,7 @@ package core #local runtime :: package runtime -#if runtime.Runtime == runtime.Runtime_Custom { +#if runtime.runtime == .Custom { #error "'stdio' can only be included in the 'wasi' or 'js' runtime." } diff --git a/core/wasi/clock.onyx b/core/wasi/clock.onyx index e3dd7080..468327f4 100644 --- a/core/wasi/clock.onyx +++ b/core/wasi/clock.onyx @@ -1,8 +1,8 @@ package core.clock #local runtime :: package runtime -#if runtime.Runtime != runtime.Runtime_Wasi - && runtime.Runtime != runtime.Runtime_Onyx { +#if runtime.runtime != .Wasi + && runtime.runtime != .Onyx { #error "'core.clock' is only available with the 'wasi' or 'onyx' runtimes."; } diff --git a/core/wasi/env.onyx b/core/wasi/env.onyx index 09dfa057..7cd5b3bc 100644 --- a/core/wasi/env.onyx +++ b/core/wasi/env.onyx @@ -1,8 +1,8 @@ package core.env #local runtime :: package runtime -#if runtime.Runtime != runtime.Runtime_Wasi - && runtime.Runtime != runtime.Runtime_Onyx { +#if runtime.runtime != .Wasi + && runtime.runtime != .Onyx { #error "'core.env' is only available with the 'wasi' and 'onyx' runtimes."; } diff --git a/core/wasi/wasi_fs.onyx b/core/wasi/wasi_fs.onyx index 501840a4..7c7c2f6a 100644 --- a/core/wasi/wasi_fs.onyx +++ b/core/wasi/wasi_fs.onyx @@ -1,7 +1,7 @@ package runtime.fs #local runtime :: package runtime -#if runtime.Runtime != runtime.Runtime_Wasi { +#if runtime.runtime != .Wasi { #error "The file system library is currently only available on the WASI runtime, and should only be included if that is the chosen runtime." } diff --git a/include/astnodes.h b/include/astnodes.h index 04c18923..2bdbe975 100644 --- a/include/astnodes.h +++ b/include/astnodes.h @@ -962,6 +962,8 @@ struct AstMemRes { u64 addr; AstTyped *initial_value; + struct Entity *type_entity; + b32 threadlocal : 1; }; struct AstGlobal { diff --git a/misc/vscode/onyx-0.0.2.vsix b/misc/vscode/onyx-0.0.2.vsix index 083a8045f0cc809bb5181150a00c68273e39d5e2..1802361b50f482a9e9d2987443d1e88bfd75c670 100644 GIT binary patch delta 53074 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 K;tHrSvi}2M5=v44 delta 50395 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

1zfyIf-=DSo)h~U`O{eZ#`8o3(mz$< zN6#TXT121dBT={)Yh(S-ifaFjC$gkG#!f_qUgNt84d(ci7ye(V67U(}1FvPc_KK$ebBnC^? zK&)t2PzSfHsWzS=S^43jT3|tu%`cP`hmbldFcP?nj}47t#^tPQz(3&xeDV9UN2)OB zMic03(zQe`scRF0!pF28y2 zaGi`5cw>OAp5M#mR-Xdndj(ABc*C0c8^a^d2jG-Oa`(q(6U^EQygih(*hn1yv`s)D zS!xmq8~&-r=~BGFV<3RdXS@+RPfLO_z`0Gtbxa+?!~V@E^94@PdCAS2N9^=%*YQiN6JsK%Iw$R*)*kg{6Xb z3*4|q8)yP#o5vX0&u;%qVulmifSwQ%y44-ZOUi{lh`_{py!>c97>MNu#KJpX*8F66 zgO^}@Abv+jMw^Tn!0LkmjGwSn1H3haDFl+%*)$c?|{BT$cadOQ-Qa6cWsc&0| z&4~{AIW$!s?LVfY*KKuyaESAbA3s$RSYGhLg1DQBbon$yJ62K{>2)iySN&{`JHiDx zgoB=l_c20b5hyo|-T?qFG0284`Mm;s^RDkE%jDD!@t~sax!&M}>}Dt zWF|v0Jhq>C>0b7{=|L#Ms z1p-w>d)^w7*Ut*eE8#$FEVL)p*4=LY2UPP75Cz}3tkxJF*{VX78_5$~a0@`gfNj8g zeaCDuiNS>j?3jIX+^+~^zu+8D2!4cXog_gS;KSWS)_R11Hv<4m3-%-M6O!<05}qD@ z&`oqhy3bsB;0O4t0a5T$8@XWk`EJab!mK^00p@cf<3l=0a>s}v=g5fQ!Uk4fvBGdy nZ(t+x!7sj$8Fw-~xXeKfGxb6=OkXL!QoOdHpm^#5lu7Y_a match - \b(void)\b + \b(void|rawptr)\b name storage.type.onyx diff --git a/modules/webgl2/webgl2.onyx b/modules/webgl2/webgl2.onyx index 637bec2f..863cb225 100644 --- a/modules/webgl2/webgl2.onyx +++ b/modules/webgl2/webgl2.onyx @@ -4,7 +4,7 @@ package gl // There are many things that are missing but this suffices for me. #local runtime :: package runtime -#if runtime.Runtime != runtime.Runtime_Js { +#if runtime.runtime != .Js { #error "'webgl' can only be used with the 'js' runtime." } diff --git a/scripts/run_tests.onyx b/scripts/run_tests.onyx index 01569939..b36bf39d 100644 --- a/scripts/run_tests.onyx +++ b/scripts/run_tests.onyx @@ -69,7 +69,7 @@ print_color :: (color: Color, format: str, args: ..any) { buffer: [2048] u8; output := conv.str_format_va(buffer, format, args); - if runtime.OS == runtime.OS_Linux && !settings.no_color { + if runtime.compiler_os == .Linux && !settings.no_color { color_code: str; switch color { case .Red do color_code = "\x1b[91m"; @@ -226,12 +226,12 @@ main :: (args) => { args_parse(args, ^settings); printf("Using {p*}\n", ^settings); - switch runtime.OS { - case runtime.OS_Linux { + switch runtime.compiler_os { + case .Linux { onyx_cmd = "./bin/onyx"; if settings.debug do onyx_cmd = "./bin/onyx-debug"; } - case runtime.OS_Windows do onyx_cmd = "onyx.exe"; + case .Windows do onyx_cmd = "onyx.exe"; } cases := array.make(Test_Case, capacity=256); diff --git a/src/builtins.c b/src/builtins.c index b1ded77d..ec6f217d 100644 --- a/src/builtins.c +++ b/src/builtins.c @@ -474,8 +474,16 @@ void initialize_builtins(bh_allocator a) { void introduce_build_options(bh_allocator a) { Package* p = package_lookup_or_create("runtime", context.global_scope, a); + AstType* Runtime_Type = (AstType *) symbol_raw_resolve(p->scope, "Runtime"); + if (Runtime_Type == NULL) { + onyx_report_error((OnyxFilePos) {0}, "'Runtime' type not found in package runtime."); + return; + } + AstNumLit* runtime_type = make_int_literal(a, context.options->runtime); - symbol_builtin_introduce(p->scope, "Runtime", (AstNode *) runtime_type); + runtime_type->type_node = Runtime_Type; + add_entities_for_node(NULL, (AstNode *) runtime_type, NULL, NULL); + symbol_builtin_introduce(p->scope, "runtime", (AstNode *) runtime_type); AstNumLit* multi_threaded = make_int_literal(a, context.options->use_multi_threading); multi_threaded->type_node = (AstType *) &basic_type_bool; @@ -492,6 +500,15 @@ void introduce_build_options(bh_allocator a) { #ifdef _BH_WINDOWS os = 2; #endif + + AstType* OS_Type = (AstType *) symbol_raw_resolve(p->scope, "OS"); + if (OS_Type == NULL) { + onyx_report_error((OnyxFilePos) {0}, "'OS' type not found in package runtime."); + return; + } + AstNumLit* os_type = make_int_literal(a, os); - symbol_builtin_introduce(p->scope, "OS", (AstNode *) os_type); + os_type->type_node = OS_Type; + add_entities_for_node(NULL, (AstNode *) os_type, NULL, NULL); + symbol_builtin_introduce(p->scope, "compiler_os", (AstNode *) os_type); } diff --git a/src/checker.c b/src/checker.c index f9ffff11..8f25ee7e 100644 --- a/src/checker.c +++ b/src/checker.c @@ -743,6 +743,10 @@ CheckStatus check_binaryop_assignment(AstBinaryOp** pbinop) { // If a left operand has an unknown type, fill it in with the type of // the right hand side. if (binop->left->type == NULL) { + if (binop->left->type_node != NULL && binop->left->entity && binop->left->entity->state <= Entity_State_Check_Types) { + YIELD(binop->token->pos, "Waiting for type to be constructed on left hand side."); + } + resolve_expression_type(binop->right); Type* right_type = get_expression_type(binop->right); @@ -970,16 +974,6 @@ CheckStatus check_binaryop(AstBinaryOp** pbinop) { CHECK(expression, &binop->right); current_checking_level = current_checking_level_store; - if ((binop->left->flags & Ast_Flag_Comptime) && (binop->right->flags & Ast_Flag_Comptime)) { - binop->flags |= Ast_Flag_Comptime; - } - - if (expression_types_must_be_known) { - if (binop->left->type == NULL || binop->right->type == NULL) { - ERROR(binop->token->pos, "Internal compiler error: one of the operands types is unknown here."); - } - } - // :UnaryFieldAccessIsGross if (binop->left->kind == Ast_Kind_Unary_Field_Access || binop->right->kind == Ast_Kind_Unary_Field_Access) { TYPE_CHECK(&binop->left, binop->right->type) { @@ -989,6 +983,16 @@ CheckStatus check_binaryop(AstBinaryOp** pbinop) { } } } + + if ((binop->left->flags & Ast_Flag_Comptime) && (binop->right->flags & Ast_Flag_Comptime)) { + binop->flags |= Ast_Flag_Comptime; + } + + if (expression_types_must_be_known) { + if (binop->left->type == NULL || binop->right->type == NULL) { + ERROR(binop->token->pos, "Internal compiler error: one of the operands types is unknown here."); + } + } // NOTE: Try operator overloading before checking everything else. if ((binop->left->type != NULL && binop->left->type->kind != Type_Kind_Basic) @@ -2245,6 +2249,9 @@ CheckStatus check_memres_type(AstMemRes* memres) { } CheckStatus check_memres(AstMemRes* memres) { + assert(memres->type_entity); + if (memres->type_entity->state < Entity_State_Code_Gen) YIELD(memres->token->pos, "Waiting for global to pass type construction."); + if (memres->initial_value != NULL) { if (memres->threadlocal) { onyx_report_error(memres->token->pos, "'#thread_local' variables cannot have an initializer at the moment."); @@ -2368,8 +2375,8 @@ CheckStatus check_type(AstType* type) { CheckStatus check_static_if(AstIf* static_if) { expression_types_must_be_known = 1; CheckStatus result = check_expression(&static_if->cond); - if (result == Check_Yield_Macro) return Check_Yield_Macro; expression_types_must_be_known = 0; + if (result == Check_Yield_Macro) return Check_Yield_Macro; if (result > Check_Errors_Start || !(static_if->cond->flags & Ast_Flag_Comptime)) { ERROR(static_if->token->pos, "Expected this condition to be compile time known."); diff --git a/src/entities.c b/src/entities.c index 172e8099..f58da9fc 100644 --- a/src/entities.c +++ b/src/entities.c @@ -293,6 +293,7 @@ void add_entities_for_node(bh_arr(Entity *) *target_arr, AstNode* node, Scope* s ent.type = Entity_Type_Memory_Reservation_Type; ent.mem_res = (AstMemRes *) node; ENTITY_INSERT(ent); + ((AstMemRes *) node)->type_entity = entity; ent.id = entities->next_id++; ent.type = Entity_Type_Memory_Reservation; diff --git a/src/onyx.c b/src/onyx.c index d091f884..60327a1a 100644 --- a/src/onyx.c +++ b/src/onyx.c @@ -251,6 +251,13 @@ static void context_init(CompileOptions* opts) { .package = NULL, .include = create_load(context.ast_alloc, "core/type_info/type_info"), })); + + entity_heap_insert(&context.entities, ((Entity) { + .state = Entity_State_Parse_Builtin, + .type = Entity_Type_Load_File, + .package = NULL, + .include = create_load(context.ast_alloc, "core/runtime/build_opts"), + })); add_entities_for_node(NULL, (AstNode *) &builtin_stack_top, context.global_scope, NULL); add_entities_for_node(NULL, (AstNode *) &builtin_tls_base, context.global_scope, NULL); diff --git a/tests/caller_location.onyx b/tests/caller_location.onyx index ec628d09..be91947a 100644 --- a/tests/caller_location.onyx +++ b/tests/caller_location.onyx @@ -4,7 +4,7 @@ use package core using_callsite :: (value: $T, site := #callsite) { println(value); - path := string.split(site.file, ~~(#char "\\" if runtime.OS == runtime.OS_Windows else #char "/")); + path := string.split(site.file, ~~(#char "\\" if runtime.compiler_os == .Windows else #char "/")); printf("I was called from {}:{}:{}\n", path[path.count - 1], site.line, site.column); } -- 2.25.1