diff options
| author | Bruce Hill <bruce@bruce-hill.com> | 2025-04-15 11:05:41 -0400 |
|---|---|---|
| committer | Bruce Hill <bruce@bruce-hill.com> | 2025-04-15 11:05:41 -0400 |
| commit | 2d81cd41e190f106645e905cf5ec356c30c5e1a8 (patch) | |
| tree | 516c02934c48f6e77869e708211bbdad96e44f64 /src/compile.c | |
| parent | 4a604a298c0cde9667c483e93106a209b4cd3055 (diff) | |
Bring back TCC support!
Diffstat (limited to 'src/compile.c')
| -rw-r--r-- | src/compile.c | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/src/compile.c b/src/compile.c index 95a79ec5..052fe309 100644 --- a/src/compile.c +++ b/src/compile.c @@ -1044,7 +1044,7 @@ static CORD _compile_statement(env_t *env, ast_t *ast) } auto enum_t = Match(subject_t, EnumType); - CORD code = CORD_all("WHEN(", compile(env, when->subject), ", _when_subject, {\n"); + CORD code = CORD_all("WHEN(", compile_type(subject_t), ", ", compile(env, when->subject), ", _when_subject, {\n"); for (when_clause_t *clause = when->clauses; clause; clause = clause->next) { if (clause->pattern->tag == Var) { const char *clause_tag_name = Match(clause->pattern, Var)->name; @@ -1207,19 +1207,26 @@ static CORD _compile_statement(env_t *env, ast_t *ast) } if (test->expected) { return CORD_asprintf( - "%rtest(%r, %r, %r, %ld, %ld);", - setup, test_code, + "%rtest(%r, %r, %r, %r, %ld, %ld);", + setup, compile_type(expr_t), test_code, compile_to_type(env, test->expected, expr_t), compile_type_info(expr_t), (int64_t)(test->expr->start - test->expr->file->text), (int64_t)(test->expr->end - test->expr->file->text)); } else { - return CORD_asprintf( - "%rinspect(%r, %r, %ld, %ld);", + if (expr_t->tag == VoidType || expr_t->tag == AbortType) { + return CORD_asprintf("%rinspect_void(%r, %r, %ld, %ld);", setup, test_code, compile_type_info(expr_t), (int64_t)(test->expr->start - test->expr->file->text), (int64_t)(test->expr->end - test->expr->file->text)); + } + return CORD_asprintf( + "%rinspect(%r, %r, %r, %ld, %ld);", + setup, compile_type(expr_t), test_code, + compile_type_info(expr_t), + (int64_t)(test->expr->start - test->expr->file->text), + (int64_t)(test->expr->end - test->expr->file->text)); } } case Declare: { @@ -2998,7 +3005,7 @@ CORD compile(env_t *env, ast_t *ast) CORD userdata; if (Table$length(closed_vars) == 0) { - code = CORD_cat(code, "void *)"); + code = CORD_cat(code, "void *_)"); userdata = "NULL"; } else { userdata = CORD_all("new(", name, "$userdata_t"); |
