From: Brendan Hansen Date: Thu, 8 Feb 2024 23:05:54 +0000 (-0600) Subject: fixed: random bugs with expected semi-colons X-Git-Url: https://git.brendanfh.com/?a=commitdiff_plain;h=ef2bba349ac62c7ffecaeaf970083537493dd2b8;p=onyx.git fixed: random bugs with expected semi-colons --- diff --git a/compiler/src/parser.c b/compiler/src/parser.c index e3979118..d63bd07f 100644 --- a/compiler/src/parser.c +++ b/compiler/src/parser.c @@ -3857,6 +3857,7 @@ static void parse_top_level_statement(OnyxParser* parser) { injection_point->alias = parse_expression(parser, 0); injection_point->token = injection_point->alias->token; + consume_token_if_next(parser, Token_Type_Inserted_Semicolon); if (peek_token(0)->type == '{') { if (parser->injection_point) { onyx_report_error(dir_token->pos, Error_Critical, "#inject blocks cannot be nested."); @@ -3952,7 +3953,14 @@ static void parse_top_level_statement(OnyxParser* parser) { break; } - default: break; + case ';': + case Token_Type_Inserted_Semicolon: + break; + + default: + onyx_report_error(parser->curr->pos, Error_Critical, "Unexpected token in top-level statement, '%s'", token_name(parser->curr)); + parser->hit_unexpected_token = 1; + break; } return; @@ -4059,6 +4067,7 @@ static void parse_import_statement(OnyxParser* parser, OnyxToken *token) { import_node->imported_package = package_node; import_node->import_package_itself = 1; + consume_token_if_next(parser, Token_Type_Inserted_Semicolon); if (consume_token_if_next(parser, '{')) { import_node->specified_imports = 1; import_node->import_package_itself = 0; diff --git a/tests/bugs/injecting_global_symbol_order.onyx b/tests/bugs/injecting_global_symbol_order.onyx index d1351865..60c0fcf2 100644 --- a/tests/bugs/injecting_global_symbol_order.onyx +++ b/tests/bugs/injecting_global_symbol_order.onyx @@ -8,7 +8,7 @@ use core { isPrime :: (n: i64) => { max := math.sqrt(n); - for x: iter.range(cast(u64, 2), max) { + for x in iter.range(cast(u64, 2), max) { if n % x == 0 { return false; } @@ -25,7 +25,7 @@ prime_generator :: () => iter.counter(2, i64)->filter(isPrime) } main :: () { - for prime: prime_generator() |> iter.take(10) { + for prime in prime_generator() |> iter.take(10) { println(prime); } }