summaryrefslogtreecommitdiff
path: root/types_cgen.c
diff options
context:
space:
mode:
authorLeo Tenenbaum <pommicket@gmail.com>2019-08-24 21:22:22 -0400
committerLeo Tenenbaum <pommicket@gmail.com>2019-08-24 21:22:22 -0400
commit22fe17e12d0a0891bc6452e0a55dc474ae74c4e8 (patch)
treee62b110c26845881858dbc05755467fe8e4c6f40 /types_cgen.c
parent32ab8c03cc4382401f4b0a5948354c6d14d08650 (diff)
Added main function
Diffstat (limited to 'types_cgen.c')
-rw-r--r--types_cgen.c11
1 files changed, 9 insertions, 2 deletions
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;
}