Commit 5c15c5fc48

Andrew Kelley <superjoe30@gmail.com>
2018-09-22 16:04:47
add compile error for slice of undefined slice
closes #1293
1 parent 2e27407
Changed files (2)
src/ir.cpp
@@ -19229,6 +19229,11 @@ static ZigType *ir_analyze_instruction_slice(IrAnalyze *ira, IrInstructionSlice
                 return ira->codegen->builtin_types.entry_invalid;
 
             parent_ptr = &slice_ptr->data.x_struct.fields[slice_ptr_index];
+            if (parent_ptr->special == ConstValSpecialUndef) {
+                ir_add_error(ira, &instruction->base, buf_sprintf("slice of undefined"));
+                return ira->codegen->builtin_types.entry_invalid;
+            }
+
             ConstExprValue *len_val = &slice_ptr->data.x_struct.fields[slice_len_index];
 
             switch (parent_ptr->data.x_ptr.special) {
test/compile_errors.zig
@@ -1,6 +1,16 @@
 const tests = @import("tests.zig");
 
 pub fn addCases(cases: *tests.CompileErrorContext) void {
+    cases.add(
+        "comptime slice of an undefined slice",
+        \\comptime {
+        \\    var a: []u8 = undefined;
+        \\    var b = a[0..10];
+        \\}
+    ,
+        ".tmp_source.zig:3:14: error: slice of undefined",
+    );
+
     cases.add(
         "implicit cast const array to mutable slice",
         \\export fn entry() void {