aboutsummaryrefslogtreecommitdiff
path: root/src/ir.cpp
diff options
context:
space:
mode:
authorgingerBill <bill@gingerbill.org>2020-11-20 16:24:23 +0000
committergingerBill <bill@gingerbill.org>2020-11-20 16:24:23 +0000
commit63e4a2341f1409eec1f2e58036cd01b24b66b8f0 (patch)
tree93801df8d25cb3c09c77d293fa4a53a513bb4383 /src/ir.cpp
parent6416a6f39cce4c65c80e29bb4ff4b93a3e463947 (diff)
Support string literals for fixed arrays of runes; Add %q support for arrays/slices of bytes
Diffstat (limited to 'src/ir.cpp')
-rw-r--r--src/ir.cpp8
1 files changed, 5 insertions, 3 deletions
diff --git a/src/ir.cpp b/src/ir.cpp
index e8378bb97..24fe15afb 100644
--- a/src/ir.cpp
+++ b/src/ir.cpp
@@ -7801,9 +7801,11 @@ irValue *ir_build_expr_internal(irProcedure *proc, Ast *expr) {
if (tv.value.kind != ExactValue_Invalid) {
// NOTE(bill): Edge case
- if (is_type_u8_array(tv.type) && tv.value.kind == ExactValue_String) {
- return ir_add_module_constant(proc->module, tv.type, tv.value);
- } else if (tv.value.kind != ExactValue_Compound &&
+ if (is_type_u8_array(tv.type) && tv.value.kind == ExactValue_String) {
+ return ir_add_module_constant(proc->module, tv.type, tv.value);
+ } else if (is_type_rune_array(tv.type) && tv.value.kind == ExactValue_String) {
+ return ir_add_module_constant(proc->module, tv.type, tv.value);
+ } else if (tv.value.kind != ExactValue_Compound &&
is_type_array(tv.type)) {
Type *elem = core_array_type(tv.type);
ExactValue value = convert_exact_value_for_type(tv.value, elem);