From ee8a128b690f60a74894c2f04d53bd63c3df3aaf Mon Sep 17 00:00:00 2001 From: Brendan Hansen Date: Tue, 13 Apr 2021 18:48:54 -0500 Subject: [PATCH] package expressions --- bin/onyx | Bin 348768 -> 348824 bytes core/array.onyx | 23 ++++++- core/builtin.onyx | 2 +- core/env.onyx | 9 ++- core/intrinsics/simd.onyx | 2 +- core/io/file.onyx | 3 +- core/io/writer.onyx | 2 +- core/js/webgl.onyx | 2 +- core/map.onyx | 4 +- core/math.onyx | 2 +- core/runtime/js.onyx | 3 +- core/runtime/wasi.onyx | 3 +- core/std.onyx | 2 +- core/stdio.onyx | 2 +- core/string/builder.onyx | 6 +- include/onyxastnodes.h | 8 ++- src/onyxparser.c | 135 ++++++++++++++++++++------------------ src/onyxsymres.c | 47 ++++++++----- src/onyxutils.c | 6 ++ 19 files changed, 154 insertions(+), 107 deletions(-) diff --git a/bin/onyx b/bin/onyx index d65379e6bef26769a5cc99665db366d6b4eee585..ca0e7fbf7d2e656e2319aba58b8a08701418f8ff 100755 GIT binary patch delta 71779 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 delta 70632 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 T) { - for ^it: *arr do *it = f(*it, data); +map :: proc { + (arr: ^[..] $T, f: (T) -> T) { + for ^it: *arr do *it = f(*it); + }, + + (arr: ^[..] $T, f: (^T) -> void) { + for ^it: *arr do f(it); + }, + + (arr: ^[..] $T, data: $R, f: (T, R) -> T) { + for ^it: *arr do *it = f(*it, data); + }, } #private_file diff --git a/core/builtin.onyx b/core/builtin.onyx index aa742eb8..e0ba3704 100644 --- a/core/builtin.onyx +++ b/core/builtin.onyx @@ -3,7 +3,7 @@ package builtin // CLEANUP: Should builtin.onyx really be including other files in the compilation? // Does that complicate things too much? #load "core/runtime/build_opts" -use package runtime as runtime +#private_file runtime :: package runtime str :: #type []u8; cstr :: #type ^u8; diff --git a/core/env.onyx b/core/env.onyx index e1b2770c..568dea45 100644 --- a/core/env.onyx +++ b/core/env.onyx @@ -1,15 +1,14 @@ package core.env -use package runtime as runtime -#if runtime.Runtime != runtime.Runtime_Wasi { +#if (package runtime).Runtime != (package runtime).Runtime_Wasi { #error "'core.env' is only available with the 'wasi' runtime."; } use package wasi { environ_get, environ_sizes_get, Size } -use package core.map as map -use package core.memory as memory -use package core.string as string +#private map :: package core.map +#private memory :: package core.memory +#private string :: package core.string Environment :: struct { vars : map.Map(str, str); diff --git a/core/intrinsics/simd.onyx b/core/intrinsics/simd.onyx index 55297ad4..adf65f53 100644 --- a/core/intrinsics/simd.onyx +++ b/core/intrinsics/simd.onyx @@ -1,6 +1,6 @@ package core.intrinsics.simd -use package simd as simd +simd :: package simd i8x16 :: #type simd.i8x16 i16x8 :: #type simd.i16x8 diff --git a/core/io/file.onyx b/core/io/file.onyx index 36d7b404..cee57a7d 100644 --- a/core/io/file.onyx +++ b/core/io/file.onyx @@ -6,7 +6,8 @@ use package runtime as runtime } use package core -use package wasi as wasi + +#private_file wasi :: package wasi use package wasi { FileDescriptor, FDFlags, OFlags, Rights, diff --git a/core/io/writer.onyx b/core/io/writer.onyx index 374572e5..53dc88e5 100644 --- a/core/io/writer.onyx +++ b/core/io/writer.onyx @@ -1,6 +1,6 @@ package core.io -use package core.conv as conv +#private_file conv :: package core.conv Writer :: struct { stream : ^Stream; diff --git a/core/js/webgl.onyx b/core/js/webgl.onyx index b0befbef..8ec5a144 100644 --- a/core/js/webgl.onyx +++ b/core/js/webgl.onyx @@ -3,7 +3,7 @@ package gl // To be used with the corresponding gl.js // There are many things that are missing but this suffices for me. -use package runtime as runtime +#private_file runtime :: package runtime #if runtime.Runtime != runtime.Runtime_Js { #error "'webgl' can only be used with the 'js' runtime." } diff --git a/core/map.onyx b/core/map.onyx index e8ac3db8..1153597a 100644 --- a/core/map.onyx +++ b/core/map.onyx @@ -1,7 +1,7 @@ package core.map -use package core.array as array -use package core.string as string +#private_file array :: package core.array +#private_file string :: package core.string Map :: struct (K: type_expr, V: type_expr) { hashes : [..] i32; diff --git a/core/math.onyx b/core/math.onyx index b7b48a57..1fc8a7a8 100644 --- a/core/math.onyx +++ b/core/math.onyx @@ -1,6 +1,6 @@ package core.math -use package core.intrinsics.wasm as wasm +#private_file wasm :: package core.intrinsics.wasm // Things that are useful in any math library: // - Trigonometry diff --git a/core/runtime/js.onyx b/core/runtime/js.onyx index 2891881d..f109614f 100644 --- a/core/runtime/js.onyx +++ b/core/runtime/js.onyx @@ -3,7 +3,6 @@ package runtime #load "core/runtime/common" use package core -use package main as main __output_string :: (s: str) -> u32 #foreign "host" "print_str" --- __exit :: (status: i32) -> void #foreign "host" "exit" --- @@ -14,7 +13,7 @@ _start :: () -> void #export "_start" { __runtime_initialize(); args: [] cstr = .{ null, 0 }; - main.main(args); + (package main).main(args); __flush_stdio(); } diff --git a/core/runtime/wasi.onyx b/core/runtime/wasi.onyx index a28b73cf..c6a20399 100644 --- a/core/runtime/wasi.onyx +++ b/core/runtime/wasi.onyx @@ -5,7 +5,6 @@ package runtime use package wasi use package core -use package main as main __output_string :: (s: str) -> u32 { STDOUT_FILENO :: 1 @@ -46,7 +45,7 @@ _start :: () -> void #export "_start" { args[i] = cast(cstr) (cast(^u32) args.data)[i]; } - main.main(args); + (package main).main(args); __flush_stdio(); } diff --git a/core/std.onyx b/core/std.onyx index d10f13e1..2632c73c 100644 --- a/core/std.onyx +++ b/core/std.onyx @@ -27,7 +27,7 @@ package core #load "core/runtime/build_opts" #load "core/runtime/common" -use package runtime as runtime +#private_file runtime :: package runtime #if runtime.Runtime == runtime.Runtime_Wasi { #load "core/runtime/wasi" #load "core/wasi" diff --git a/core/stdio.onyx b/core/stdio.onyx index f2721437..f92d4603 100644 --- a/core/stdio.onyx +++ b/core/stdio.onyx @@ -7,7 +7,7 @@ package core // in anyway. -use package runtime as runtime +#private_file runtime :: package runtime #if runtime.Runtime == runtime.Runtime_Custom { #error "'stdio' can only be included in the 'wasi' or 'js' runtime." } diff --git a/core/string/builder.onyx b/core/string/builder.onyx index 575a296e..3f15861a 100644 --- a/core/string/builder.onyx +++ b/core/string/builder.onyx @@ -3,9 +3,9 @@ package core.string.builder // DEPRECATED: This package is deprecated in favor of using // an io.DynamicStringStream with an io.Writer. -use package core.array as array -use package core.string as string -use package core.conv as conv +#private_file array :: package core.array +#private_file string :: package core.string +#private_file conv :: package core.conv Builder :: struct { data : [..] u8; diff --git a/include/onyxastnodes.h b/include/onyxastnodes.h index c010109e..cdd4047c 100644 --- a/include/onyxastnodes.h +++ b/include/onyxastnodes.h @@ -712,8 +712,7 @@ struct AstInclude { AstNode_base; char* name; }; struct AstUsePackage { AstNode_base; - OnyxToken *package_name; - Package *package; + AstPackage *package; OnyxToken *alias; AstPackage *alias_node; @@ -803,7 +802,10 @@ struct AstPackage { AstNode_base; // Allocated in the ast arena - char* package_name; + char * package_name; + + // NOTE: Symbol nodes + bh_arr(OnyxToken *) path; Package* package; }; diff --git a/src/onyxparser.c b/src/onyxparser.c index 25c9314b..f878f16a 100644 --- a/src/onyxparser.c +++ b/src/onyxparser.c @@ -67,7 +67,7 @@ static AstEnumType* parse_enum_declaration(OnyxParser* parser); static AstTyped* parse_top_level_expression(OnyxParser* parser); static AstBinding* parse_top_level_binding(OnyxParser* parser, OnyxToken* symbol); static void parse_top_level_statement(OnyxParser* parser); -static AstPackage* parse_package_name(OnyxParser* parser); +static AstPackage* parse_package_expression(OnyxParser* parser); static void consume_token(OnyxParser* parser) { if (parser->hit_unexpected_token) return; @@ -459,11 +459,10 @@ static AstTyped* parse_factor(OnyxParser* parser) { break; } - // case Token_Type_Keyword_Package: { - // AstPackage* package_node = make_node(AstPackage, Ast_Kind_Package); - // package_node->token - // break; - // } + case Token_Type_Keyword_Package: { + retval = (AstTyped *) parse_package_expression(parser); + break; + } // :TypeValueInterchange case '<': { @@ -1156,29 +1155,10 @@ static AstReturn* parse_return_stmt(OnyxParser* parser) { static AstNode* parse_use_stmt(OnyxParser* parser) { OnyxToken* use_token = expect_token(parser, Token_Type_Keyword_Use); - if (consume_token_if_next(parser, Token_Type_Keyword_Package)) { - // CLEANUP: This logic should be acceptable but because parse_package_name - // will declare and initialize packages as it parses them. There should be - // some reusable logic to be pulled out of it however. - // AstUsePackage* upack = make_node(AstUsePackage, Ast_Kind_Use_Package); - // upack->token = use_token; - // upack->package = parse_package_name(parser); - + if (parser->curr->type == Token_Type_Keyword_Package) { AstUsePackage* upack = make_node(AstUsePackage, Ast_Kind_Use_Package); upack->token = use_token; - - OnyxToken* package_name = expect_token(parser, Token_Type_Symbol); - - // CLEANUP: This is just gross. - while (consume_token_if_next(parser, '.')) { - if (parser->hit_unexpected_token) break; - package_name->length += 1; - - OnyxToken* symbol = expect_token(parser, Token_Type_Symbol); - package_name->length += symbol->length; - } - - upack->package_name = package_name; + upack->package = parse_package_expression(parser); if (consume_token_if_next(parser, Token_Type_Keyword_As)) upack->alias = expect_token(parser, Token_Type_Symbol); @@ -2351,60 +2331,85 @@ submit_binding_to_entities: } } -static AstPackage* parse_package_name(OnyxParser* parser) { +static AstPackage* parse_package_expression(OnyxParser* parser) { AstPackage* package_node = make_node(AstPackage, Ast_Kind_Package); - - if (parser->curr->type != Token_Type_Keyword_Package) { - Package *package = package_lookup_or_create("main", context.global_scope, parser->allocator); - - package_node->token = NULL; - package_node->package = package; - return package_node; - } - - // CLEANUP - char package_name[1024]; // CLEANUP: This could overflow, if someone decides to be dumb - // with their package names - brendanfh 2020/12/06 - package_name[0] = 0; package_node->token = expect_token(parser, Token_Type_Keyword_Package); - Package *package = NULL; + bh_arr_new(global_heap_allocator, package_node->path, 2); - while (1) { + while (parser->curr->type == Token_Type_Symbol) { if (parser->hit_unexpected_token) return package_node; OnyxToken* symbol = expect_token(parser, Token_Type_Symbol); - // This logic will need to accessible elsewhere - token_toggle_end(symbol); - strncat(package_name, symbol->text, 1023); - token_toggle_end(symbol); + bh_arr_push(package_node->path, symbol); + + if (consume_token_if_next(parser, '.')); + else break; + } - Package *newpackage = package_lookup_or_create(package_name, context.global_scope, parser->allocator); + i32 total_package_name_length = 0; + bh_arr_each(OnyxToken *, token, package_node->path) { + total_package_name_length += (*token)->length + 1; + } - if (package != NULL) { - AstPackage* pnode = make_node(AstPackage, Ast_Kind_Package); - pnode->token = symbol; - pnode->package = newpackage; + char* package_name = bh_alloc_array(context.ast_alloc, char, total_package_name_length); + *package_name = '\0'; - token_toggle_end(symbol); - symbol_subpackage_introduce(package->scope, symbol->text, pnode); - token_toggle_end(symbol); + bh_arr_each(OnyxToken *, token, package_node->path) { + token_toggle_end(*token); + strncat(package_name, (*token)->text, total_package_name_length - 1); + token_toggle_end(*token); - package_reinsert_use_packages(package); + if (token != &bh_arr_last(package_node->path)) { + strncat(package_name, ".", total_package_name_length - 1); } - - package = newpackage; - - if (consume_token_if_next(parser, '.')) strncat(package_name, ".", 1023); - else break; } - package_node->package = package; + package_node->package_name = package_name; + package_node->package = package_lookup(package_name); + return package_node; } +static Package* parse_file_package(OnyxParser* parser) { + if (parser->curr->type != Token_Type_Keyword_Package) { + return package_lookup_or_create("main", context.global_scope, parser->allocator); + } + + AstPackage* package_node = parse_package_expression(parser); + + char aggregate_name[2048]; + aggregate_name[0] = '\0'; + + Package* prevpackage = NULL; + bh_arr_each(OnyxToken *, symbol, package_node->path) { + token_toggle_end(*symbol); + + strncat(aggregate_name, (*symbol)->text, 2047); + Package* newpackage = package_lookup_or_create(aggregate_name, context.global_scope, parser->allocator); + + AstPackage* pnode = make_node(AstPackage, Ast_Kind_Package); + pnode->token = *symbol; + pnode->package = newpackage; + pnode->package_name = newpackage->name; + + if (prevpackage != NULL) { + symbol_subpackage_introduce(prevpackage->scope, (*symbol)->text, pnode); + package_reinsert_use_packages(prevpackage); + } + + token_toggle_end(*symbol); + strncat(aggregate_name, ".", 2047); + + prevpackage = newpackage; + } + + package_node->package = prevpackage; + + return package_node->package; +} // NOTE: This returns a void* so I don't need to cast it everytime I use it @@ -2447,12 +2452,14 @@ void onyx_parse(OnyxParser *parser) { // NOTE: Skip comments at the beginning of the file while (consume_token_if_next(parser, Token_Type_Comment)); - parser->package = parse_package_name(parser)->package; + parser->package = parse_file_package(parser); parser->file_scope = scope_create(parser->allocator, parser->package->private_scope, parser->tokenizer->tokens[0].pos); bh_arr_push(parser->scope_stack, parser->file_scope); AstUsePackage* implicit_use_builtin = make_node(AstUsePackage, Ast_Kind_Use_Package); - implicit_use_builtin->package_name = &builtin_package_token; + AstPackage* implicit_builtin_package = make_node(AstPackage, Ast_Kind_Package); + implicit_builtin_package->package_name = "builtin"; + implicit_use_builtin->package = implicit_builtin_package; ENTITY_SUBMIT(implicit_use_builtin); while (parser->curr->type != Token_Type_End_Stream) { diff --git a/src/onyxsymres.c b/src/onyxsymres.c index beaa4806..80bcb118 100644 --- a/src/onyxsymres.c +++ b/src/onyxsymres.c @@ -53,6 +53,7 @@ static SymresStatus symres_function(AstFunction* func); static SymresStatus symres_global(AstGlobal* global); static SymresStatus symres_overloaded_function(AstOverloadedFunction* ofunc); static SymresStatus symres_use_package(AstUsePackage* package); +static SymresStatus symres_package(AstPackage* package); static SymresStatus symres_enum(AstEnumType* enum_node); static SymresStatus symres_memres_type(AstMemRes** memres); static SymresStatus symres_memres(AstMemRes** memres); @@ -487,6 +488,10 @@ static SymresStatus symres_expression(AstTyped** expr) { SYMRES(compound, (AstCompound *) *expr); break; + case Ast_Kind_Package: + SYMRES(package, (AstPackage *) *expr); + break; + default: break; } @@ -882,22 +887,10 @@ static SymresStatus symres_overloaded_function(AstOverloadedFunction* ofunc) { } static SymresStatus symres_use_package(AstUsePackage* package) { - if (package->package == NULL) { - token_toggle_end(package->package_name); - package->package = package_lookup(package->package_name->text); - token_toggle_end(package->package_name); - } + SYMRES(package, package->package); - Package* p = package->package; - - if (p == NULL) { // :SymresStall - if (report_unresolved_symbols) { - onyx_report_error(package->package_name->pos, "package not found in included source files"); - return Symres_Error; - } else { - return Symres_Yield_Macro; - } - } + // CLEANUP: Oofta that name + Package* p = package->package->package; if (p->scope == curr_scope) return Symres_Success; @@ -939,6 +932,27 @@ static SymresStatus symres_use_package(AstUsePackage* package) { return Symres_Success; } +static SymresStatus symres_package(AstPackage* package) { + if (package->package == NULL) { + if (!package->package_name) return Symres_Error; + + package->package = package_lookup(package->package_name); + } + + if (package->package) { + return Symres_Success; + } else { + if (report_unresolved_symbols) { + onyx_report_error(package->token->pos, + "Package '%s' not found in included source files.", + package->package_name); + return Symres_Error; + } else { + return Symres_Yield_Macro; + } + } +} + static SymresStatus symres_enum(AstEnumType* enum_node) { if (enum_node->backing->kind == Ast_Kind_Symbol) SYMRES(symbol, (AstNode **) &enum_node->backing); if (enum_node->backing == NULL) return Symres_Error; @@ -1087,7 +1101,8 @@ void symres_entity(Entity* ent) { case Entity_Type_Global_Header: ss = symres_global(ent->global); break; case Entity_Type_Use_Package: ss = symres_use_package(ent->use_package); - if (ent->use_package->package) package_track_use_package(ent->use_package->package, ent); + if (ent->use_package->package && ent->use_package->package->package) + package_track_use_package(ent->use_package->package->package, ent); next_state = Entity_State_Finalized; break; diff --git a/src/onyxutils.c b/src/onyxutils.c index e1557180..92290fdd 100644 --- a/src/onyxutils.c +++ b/src/onyxutils.c @@ -175,6 +175,12 @@ AstNode* try_symbol_raw_resolve_from_node(AstNode* node, char* symbol) { switch (node->kind) { case Ast_Kind_Package: { AstPackage* package = (AstPackage *) node; + + // CLEANUP + if (package->package == NULL) { + package->package = package_lookup(package->package_name); + } + return symbol_raw_resolve(package->package->scope, symbol); } -- 2.25.1