From 62636576bce8e8121a3d70f63547fae40a52f697 Mon Sep 17 00:00:00 2001 From: hachem Date: Mon, 12 Oct 2026 11:41:05 +0200 Subject: chore: refactor --- src/sema.c | 30 ++++++++++++------------------ 1 file changed, 12 insertions(+), 18 deletions(-) (limited to 'src/sema.c') diff --git a/src/sema.c b/src/sema.c index 01fe644..342fe44 100644 --- a/src/sema.c +++ b/src/sema.c @@ -180,14 +180,14 @@ static void ref_error(struct RefCheck* check, struct Token token, const char* fo static bool is_arch_register(struct Token token) { static const char* names[] = { - "rax", "eax", "ax", "al", "ah", - "rbx", "ebx", "bx", "bl", "bh", - "rcx", "ecx", "cx", "cl", "ch", - "rdx", "edx", "dx", "dl", "dh", - "rsi", "esi", "si", "sil", - "rdi", "edi", "di", "dil", - "rbp", "ebp", "bp", "bpl", - "rsp", "esp", "sp", "spl", + "rax", "eax", "ax", "al", "ah", + "rbx", "ebx", "bx", "bl", "bh", + "rcx", "ecx", "cx", "cl", "ch", + "rdx", "edx", "dx", "dl", "dh", + "rsi", "esi", "si", "sil", + "rdi", "edi", "di", "dil", + "rbp", "ebp", "bp", "bpl", + "rsp", "esp", "sp", "spl", "r8", "r8d", "r8w", "r8b", "r9", "r9d", "r9w", "r9b", "r10", "r10d", "r10w", "r10b", @@ -411,8 +411,6 @@ static void check_target(struct RefCheck* check, struct Token target) ref_error(check, target, "cannot assign to '%.*s': not a register", (int)target.length, target.start); } -// a stack size must be a compile-time constant: integer/char literals, other -// constants, enum values, struct sizes/offsets, and arithmetic over them static void check_stack_size(struct RefCheck* check, struct Expr* expr) { switch (expr->kind) @@ -427,9 +425,9 @@ static void check_stack_size(struct RefCheck* check, struct Expr* expr) case EXPR_MEMBER: { const struct Expr* object = expr->member.object; - if (object->kind == EXPR_PRIMARY - && (find_enum(check, object->primary.token) != NULL - || find_struct(check, object->primary.token) != NULL)) + if (object->kind == EXPR_PRIMARY && + (find_enum(check, object->primary.token) != NULL || + find_struct(check, object->primary.token) != NULL)) check_expr(check, expr); else ref_error(check, first_token(expr), "stack size must be a constant"); @@ -500,9 +498,7 @@ static void check_statement(struct RefCheck* check, struct Statement* statement) case STATEMENT_SYSCALL: break; case STATEMENT_INSTRUCTION: - // a raw instruction is an escape hatch; its operands may name asm - // symbols or registers hdass does not model, so leave them to the - // assembler rather than flagging them as undefined + // escape hatch break; case STATEMENT_SELECT: check_target(check, statement->select.target); @@ -533,7 +529,6 @@ static bool check_references(struct Source source, struct Program* program) bool analyze_program(struct Source source, struct Program* program) { bool ok = true; - if (!check_duplicate_names(source, program)) ok = false; if (!check_entry_point(source, program)) @@ -542,6 +537,5 @@ bool analyze_program(struct Source source, struct Program* program) ok = false; if (!check_references(source, program)) ok = false; - return ok; } -- cgit v1.3