aboutsummaryrefslogtreecommitdiff
path: root/src/compile/whens.c
diff options
context:
space:
mode:
authorBruce Hill <bruce@bruce-hill.com>2025-12-07 18:44:58 -0500
committerBruce Hill <bruce@bruce-hill.com>2025-12-07 18:44:58 -0500
commit85d1507d8b7e0139135e040b7b4b23c02097a155 (patch)
tree8eb7268aa29dd37846f16edbeb32c093efe1d63e /src/compile/whens.c
parent43b0a91664fc0b9a5222805c68c3505fd9634689 (diff)
Consolidate logic for enums with and without tags with fields.
Diffstat (limited to 'src/compile/whens.c')
-rw-r--r--src/compile/whens.c8
1 files changed, 2 insertions, 6 deletions
diff --git a/src/compile/whens.c b/src/compile/whens.c
index 122c581c..618a667c 100644
--- a/src/compile/whens.c
+++ b/src/compile/whens.c
@@ -43,11 +43,7 @@ Text_t compile_when_statement(env_t *env, ast_t *ast) {
DeclareMatch(enum_t, subject_t, EnumType);
- Text_t code;
- if (enum_has_fields(subject_t))
- code = Texts("WHEN(", compile_type(subject_t), ", ", compile(env, when->subject), ", _when_subject, {\n");
- else code = Texts("switch(", compile(env, when->subject), ") {\n");
-
+ Text_t code = Texts("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;
@@ -132,7 +128,7 @@ Text_t compile_when_statement(env_t *env, ast_t *ast) {
} else {
code = Texts(code, "default: errx(1, \"Invalid tag!\");\n");
}
- code = Texts(code, "\n}", enum_has_fields(subject_t) ? Text(")") : EMPTY_TEXT, "\n");
+ code = Texts(code, "\n}", Text(")"), "\n");
return code;
}