From 7fbba1b7901fcd9b9363132b99ada636cddbfad9 Mon Sep 17 00:00:00 2001 From: Bruce Hill Date: Sun, 9 Mar 2025 18:17:57 -0400 Subject: [PATCH] Check for main func return values (and error if it has any) --- tomo.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/tomo.c b/tomo.c index dea0e60..4d89c54 100644 --- a/tomo.c +++ b/tomo.c @@ -562,6 +562,10 @@ void transpile_code(env_t *base_env, Text_t filename, bool force_retranspile) binding_t *main_binding = get_binding(module_env, "main"); if (main_binding && main_binding->type->tag == FunctionType) { + type_t *ret = Match(main_binding->type, FunctionType)->ret; + if (ret->tag != VoidType && ret->tag != AbortType) + compiler_err(ast->file, ast->start, ast->end, "The main() function in this file has a return type of %T, but it should not have any return value!", ret); + CORD_put(CORD_all( "int ", main_binding->code, "$parse_and_run(int argc, char *argv[]) {\n" "#line 1\n"