Commit b4e40cb59a

Andrew Kelley <andrew@ziglang.org>
2019-06-26 06:36:24
fix peer type resolution with null
1 parent fd4c5f5
Changed files (2)
src
test
stage1
behavior
src/ir.cpp
@@ -10399,6 +10399,7 @@ static ZigType *ir_resolve_peer_types(IrAnalyze *ira, AstNode *source_node, ZigT
 
         if (prev_type->id == ZigTypeIdNull) {
             prev_inst = cur_inst;
+            any_are_null = true;
             continue;
         }
 
test/stage1/behavior/cast.zig
@@ -482,3 +482,17 @@ test "@intCast to u0 and use the result" {
     S.doTheTest(0, 1, 0);
     comptime S.doTheTest(0, 1, 0);
 }
+
+test "peer type resolution: unreachable, null, slice" {
+    const S = struct {
+        fn doTheTest(num: usize, word: []const u8) void {
+            const result = switch (num) {
+                0 => null,
+                1 => word,
+                else => unreachable,
+            };
+            expect(mem.eql(u8, result.?, "hi"));
+        }
+    };
+    S.doTheTest(1, "hi");
+}