aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorLemonBoy <thatlemon@gmail.com>2020-10-25 12:25:34 +0100
committerVeikka Tuominen <git@vexu.eu>2020-10-28 21:56:28 +0200
commit7bc95316982da0da6fd5d935645972fe5464e46e (patch)
tree8ba243f467260d4cb3847b59facd0b252e32d6fe /src
parent0adc144f88b567054e63df808aac0227445e88bb (diff)
downloadzig-7bc95316982da0da6fd5d935645972fe5464e46e.tar.gz
zig-7bc95316982da0da6fd5d935645972fe5464e46e.zip
stage1: Correctly generated optional constant values
Closes #6799
Diffstat (limited to 'src')
-rw-r--r--src/stage1/ir.cpp3
1 files changed, 3 insertions, 0 deletions
diff --git a/src/stage1/ir.cpp b/src/stage1/ir.cpp
index 00600c7e43..c1d89444a3 100644
--- a/src/stage1/ir.cpp
+++ b/src/stage1/ir.cpp
@@ -16313,6 +16313,9 @@ static void set_optional_payload(ZigValue *opt_val, ZigValue *payload) {
assert(opt_val->type->id == ZigTypeIdOptional);
if (payload == nullptr) {
set_optional_value_to_null(opt_val);
+ } else if (get_src_ptr_type(opt_val->type)) {
+ assert(get_src_ptr_type(payload->type));
+ opt_val->data.x_ptr = payload->data.x_ptr;
} else if (is_opt_err_set(opt_val->type)) {
assert(payload->type->id == ZigTypeIdErrorSet);
opt_val->data.x_err_set = payload->data.x_err_set;