aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBruce Hill <bruce@bruce-hill.com>2024-08-19 13:14:36 -0400
committerBruce Hill <bruce@bruce-hill.com>2024-08-19 13:14:36 -0400
commit178dca6e88810d48c441638028aa04a39899dd0b (patch)
treef4a68830d9fc78bc85fd1788b7a38ff6fd1cf549
parent69d913a56a56900457d8094de78eed6762e0b79e (diff)
Clean up codegen for strings that are just a single interpolated value
-rw-r--r--compile.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/compile.c b/compile.c
index 873cae32..06e89329 100644
--- a/compile.c
+++ b/compile.c
@@ -1785,7 +1785,7 @@ CORD compile(env_t *env, ast_t *ast)
} else if (!chunks->next && chunks->ast->tag == TextLiteral) {
return compile(env, chunks->ast);
} else {
- CORD code = "CORD_all(";
+ CORD code = CORD_EMPTY;
for (ast_list_t *chunk = chunks; chunk; chunk = chunk->next) {
CORD chunk_code;
type_t *chunk_t = get_type(env, chunk->ast);
@@ -1818,7 +1818,10 @@ CORD compile(env_t *env, ast_t *ast)
code = CORD_cat(code, chunk_code);
if (chunk->next) code = CORD_cat(code, ", ");
}
- return CORD_cat(code, ")");
+ if (chunks->next)
+ return CORD_all("CORD_all(", code, ")");
+ else
+ return code;
}
}
case Block: {