authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2017-06-14 19:32:52-04:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2017-06-14 19:32:52-04:00
logae61e26680b967414194b4fa65568a8023108678
tree53f2d8441dc55dc7ba22e68c92e050c63c181687
parent7f0620a20fc431717d017d0c19f1e1f29723d93f

fix compiler segfault on `null ?? x`

closes #390

2 files changed, 6 insertions(+), 0 deletions(-)

src/codegen.cpp+1
...@@ -4224,6 +4224,7 @@ static void define_builtin_types(CodeGen *g) {...@@ -4224,6 +4224,7 @@ static void define_builtin_types(CodeGen *g) {
4224 {4224 {
4225 TypeTableEntry *entry = new_type_table_entry(TypeTableEntryIdNullLit);4225 TypeTableEntry *entry = new_type_table_entry(TypeTableEntryIdNullLit);
4226 buf_init_from_str(&entry->name, "(null)");4226 buf_init_from_str(&entry->name, "(null)");
4227 entry->zero_bits = true;
4227 g->builtin_types.entry_null = entry;4228 g->builtin_types.entry_null = entry;
4228 }4229 }
4229 {4230 {
test/cases/null.zig+5
...@@ -143,3 +143,8 @@ test "unwrap nullable which is field of global var" {...@@ -143,3 +143,8 @@ test "unwrap nullable which is field of global var" {
143 unreachable;143 unreachable;
144 }144 }
145}145}
146
147test "null with default unwrap" {
148 const x: i32 = null ?? 1;
149 assert(x == 1);
150}