aboutsummaryrefslogtreecommitdiff
path: root/src/sema
diff options
context:
space:
mode:
Diffstat (limited to 'src/sema')
-rw-r--r--src/sema/sema.c12
1 files changed, 7 insertions, 5 deletions
diff --git a/src/sema/sema.c b/src/sema/sema.c
index 99ec4f1..55f4a93 100644
--- a/src/sema/sema.c
+++ b/src/sema/sema.c
@@ -49,14 +49,16 @@ static bool check_duplicate_names(struct Program* program)
static bool check_entry_point(struct Program* program)
{
+ if (!program->config.has_entry)
+ return true;
+
+ struct Token entry = program->config.entry;
for (size_t i = 0; i < program->proc_count; i += 1)
- {
- struct Token name = program->procs[i].name;
- if (name.length == 4 && memcmp(name.start, "main", 4) == 0)
+ if (names_equal(program->procs[i].name, entry))
return true;
- }
- fprintf(stderr, "error: no 'main' procedure defined\n");
+ fprintf(stderr, "error: line %u: entry point '%.*s' is not defined\n",
+ entry.line, (int)entry.length, entry.start);
return false;
}