diff --git a/src/check_decl.cpp b/src/check_decl.cpp index 2673a4d17..6cb51102a 100644 --- a/src/check_decl.cpp +++ b/src/check_decl.cpp @@ -362,6 +362,8 @@ void check_proc_decl(Checker *c, Entity *e, DeclInfo *d) { GB_ASSERT(pd->body->kind == AstNode_BlockStmt); check_procedure_later(c, c->curr_ast_file, e->token, d, proc_type, pd->body, pd->tags); + } else if (!is_foreign) { + error(e->token, "Only a foreign procedure cannot have a body"); } if (pt->result_count == 0 && is_require_results) { diff --git a/src/checker.cpp b/src/checker.cpp index 7fc849237..0f8c2606a 100644 --- a/src/checker.cpp +++ b/src/checker.cpp @@ -1696,19 +1696,14 @@ void check_collect_entities(Checker *c, Array nodes, bool is_file_sco case_ast_node(fb, ForeignBlockDecl, decl); AstNode *foreign_library = fb->foreign_library; - bool ok = true; if (foreign_library->kind != AstNode_Ident) { error_node(foreign_library, "foreign library name must be an identifier"); - ok = false; + foreign_library = NULL; } CheckerContext prev_context = c->context; - if (ok) { - c->context.curr_foreign_library = foreign_library; - } - + c->context.curr_foreign_library = foreign_library; check_collect_entities(c, fb->decls, is_file_scope); - c->context = prev_context; case_end;