diff options
| author | Bruce Hill <bruce@bruce-hill.com> | 2025-12-07 18:44:58 -0500 |
|---|---|---|
| committer | Bruce Hill <bruce@bruce-hill.com> | 2025-12-07 18:44:58 -0500 |
| commit | 85d1507d8b7e0139135e040b7b4b23c02097a155 (patch) | |
| tree | 8eb7268aa29dd37846f16edbeb32c093efe1d63e /src/compile/whens.c | |
| parent | 43b0a91664fc0b9a5222805c68c3505fd9634689 (diff) | |
Consolidate logic for enums with and without tags with fields.
Diffstat (limited to 'src/compile/whens.c')
| -rw-r--r-- | src/compile/whens.c | 8 |
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; } |
