diff options
| -rw-r--r-- | src/check_stmt.c | 6 | ||||
| -rw-r--r-- | src/parser.c | 3 |
2 files changed, 5 insertions, 4 deletions
diff --git a/src/check_stmt.c b/src/check_stmt.c index 8b64ef30f..f34c4c837 100644 --- a/src/check_stmt.c +++ b/src/check_stmt.c @@ -125,15 +125,13 @@ bool check_is_terminating(AstNode *node) { case_end; case_ast_node(fs, ForStmt, node); - if (!check_has_break(fs->body, true)) { + if (fs->cond == NULL && !check_has_break(fs->body, true)) { return check_is_terminating(fs->body); } case_end; case_ast_node(rs, RangeStmt, node); - if (!check_has_break(rs->body, true)) { - return check_is_terminating(rs->body); - } + return false; case_end; case_ast_node(ms, MatchStmt, node); diff --git a/src/parser.c b/src/parser.c index 277d4069c..962a04afd 100644 --- a/src/parser.c +++ b/src/parser.c @@ -17,6 +17,8 @@ typedef enum ParseFileError { typedef Array(AstNode *) AstNodeArray; +gb_global i32 global_file_id = 0; + typedef struct AstFile { i32 id; gbArena arena; @@ -3639,6 +3641,7 @@ ParseFileError init_ast_file(AstFile *f, String fullpath) { gb_arena_init_from_allocator(&f->arena, heap_allocator(), arena_size); f->curr_proc = NULL; + f->id = ++global_file_id; return ParseFile_None; } |