From 22fe17e12d0a0891bc6452e0a55dc474ae74c4e8 Mon Sep 17 00:00:00 2001 From: Leo Tenenbaum Date: Sat, 24 Aug 2019 21:22:22 -0400 Subject: Added main function --- types_cgen.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) (limited to 'types_cgen.c') diff --git a/types_cgen.c b/types_cgen.c index fb1e690..0eaa4b3 100644 --- a/types_cgen.c +++ b/types_cgen.c @@ -57,9 +57,14 @@ static bool cgen_types_stmt(CGenerator *g, Statement *s) { /* e.g. foo @= fn() {}; (we want to set the function's name to "foo") */ if (d->expr.kind == EXPR_FN) { d->expr.fn.name = *(Identifier*)d->idents.data; + if (ident_eq_str(d->expr.fn.name, "main") && g->block != NULL) { + /* TODO (eventually): Consider just renaming the function */ + err_print(d->where, "main function defined in local scope."); + return false; + } } } - cgen_types_expr(g, &d->expr); + return cgen_types_expr(g, &d->expr); } break; } @@ -68,7 +73,9 @@ static bool cgen_types_stmt(CGenerator *g, Statement *s) { static bool cgen_types(CGenerator *g, ParsedFile *f) { arr_foreach(&f->stmts, Statement, s) { - cgen_types_stmt(g, s); + if (!cgen_types_stmt(g, s)) { + return false; + } } return true; } -- cgit v1.2.3