aboutsummaryrefslogtreecommitdiff
path: root/src/checker.cpp
diff options
context:
space:
mode:
authorgingerBill <gingerBill@users.noreply.github.com>2024-08-30 09:56:36 +0100
committerGitHub <noreply@github.com>2024-08-30 09:56:36 +0100
commit291048cb3bdb7f1dc7d57383a1efd6fe77677768 (patch)
tree1f0e991dbef2475a4533381b76cf8b7f58eeaf3c /src/checker.cpp
parent94a1a7aed567dd20eddfdc62044f4154d4530bab (diff)
parent3135c89a0aed7528baba4ec8d45a6c2549862007 (diff)
Merge pull request #4165 from avanspector/master
Add missing lexer checking delay for foreign blocks
Diffstat (limited to 'src/checker.cpp')
-rw-r--r--src/checker.cpp9
1 files changed, 4 insertions, 5 deletions
diff --git a/src/checker.cpp b/src/checker.cpp
index fdc1ce840..d5234c01c 100644
--- a/src/checker.cpp
+++ b/src/checker.cpp
@@ -5228,9 +5228,9 @@ gb_internal bool collect_file_decl(CheckerContext *ctx, Ast *decl) {
case_end;
case_ast_node(fb, ForeignBlockDecl, decl);
- if (check_add_foreign_block_decl(ctx, decl)) {
- return true;
- }
+ GB_ASSERT(ctx->collect_delayed_decls);
+ decl->state_flags |= StateFlag_BeenHandled;
+ array_add(&curr_file->delayed_decls_queues[AstDelayQueue_ForeignBlock], decl);
case_end;
case_ast_node(ws, WhenStmt, decl);
@@ -5513,8 +5513,6 @@ gb_internal void check_import_entities(Checker *c) {
for_array(i, pkg->files) {
AstFile *f = pkg->files[i];
reset_checker_context(&ctx, f, &untyped);
- ctx.collect_delayed_decls = false;
-
correct_type_aliases_in_scope(&ctx, pkg->scope);
}
@@ -5522,6 +5520,7 @@ gb_internal void check_import_entities(Checker *c) {
AstFile *f = pkg->files[i];
reset_checker_context(&ctx, f, &untyped);
+ ctx.collect_delayed_decls = true;
for (Ast *decl : f->delayed_decls_queues[AstDelayQueue_ForeignBlock]) {
check_add_foreign_block_decl(&ctx, decl);
}