error message bugfix; better top level parsing
authorBrendan Hansen <brendan.f.hansen@gmail.com>
Wed, 23 Dec 2020 02:32:39 +0000 (20:32 -0600)
committerBrendan Hansen <brendan.f.hansen@gmail.com>
Wed, 23 Dec 2020 02:32:39 +0000 (20:32 -0600)
onyx
src/onyxchecker.c
src/onyxparser.c

diff --git a/onyx b/onyx
index 20ed83eb90b5eadcc350d55edb596ea86f263501..1ae07bcc524c07076828cca628df310216a1b647 100755 (executable)
Binary files a/onyx and b/onyx differ
index c82b6cedd65dc9174c92b5fb436f95229c028ce4..7af9ab8839537b55389dbd3da5f568a183e09b95 100644 (file)
@@ -1477,8 +1477,8 @@ b32 check_memres(AstMemRes* memres) {
             if (!type_check_or_auto_cast(&memres->initial_value, memres_type)) {
                 onyx_report_error(memres->token->pos,
                         "Cannot assign value of type '%s' to a '%s'.",
-                        type_get_name(memres_type),
-                        type_get_name(memres->initial_value->type));
+                        type_get_name(memres->initial_value->type),
+                        type_get_name(memres_type));
                 return 1;
             }
 
index 465c8b3b6db1a2159ba6e3b2ac51358ef5014c5c..33a547975533b8e32337302abb34acdd605cfce0 100644 (file)
@@ -2073,7 +2073,7 @@ static AstNode* parse_top_level_statement(OnyxParser* parser) {
         default: break;
     }
 
-    consume_token(parser);
+    expect_token(parser, ';');
     return NULL;
 }
 
@@ -2220,6 +2220,7 @@ ParseResults onyx_parse(OnyxParser *parser) {
 
         if (curr_stmt != NULL && curr_stmt != &error_node) {
             while (curr_stmt != NULL) {
+                if (parser->hit_unexpected_token) return parser->results;
 
                 switch (curr_stmt->kind) {
                     case Ast_Kind_Include_File: