commit 32c89531b1475ce8e3b8efdf7a07745da7bc854a (tree)
parent 345042ecbc7fb645fd17b69df4e57ffefa5be5a5
Author: Andrew Kelley <andrew@ziglang.org>
Date: Thu, 24 Oct 2019 16:23:33 -0400
Add missing compile error when ptr used instead of array
in array literals.
Fixes #3524
Diffstat:
2 files changed, 17 insertions(+), 1 deletion(-)
diff --git a/src/ir.cpp b/src/ir.cpp
@@ -17590,7 +17590,10 @@ static IrInstruction *ir_analyze_instruction_elem_ptr(IrAnalyze *ira, IrInstruct
false);
array_ptr_val->data.x_struct.fields[slice_ptr_index].data.x_ptr.mut = ConstPtrMutInfer;
} else {
- zig_unreachable();
+ ir_add_error(ira, elem_ptr_instruction->init_array_type,
+ buf_sprintf("expected array type or [_], found '%s'",
+ buf_ptr(&array_type->name)));
+ return ira->codegen->invalid_instruction;
}
}
diff --git a/test/compile_errors.zig b/test/compile_errors.zig
@@ -3,6 +3,19 @@ const builtin = @import("builtin");
pub fn addCases(cases: *tests.CompileErrorContext) void {
cases.add(
+ "using an unknown len ptr type instead of array",
+ \\const resolutions = [*][*]const u8{
+ \\ c"[320 240 ]",
+ \\ null,
+ \\};
+ \\comptime {
+ \\ _ = resolutions;
+ \\}
+ ,
+ "tmp.zig:1:21: error: expected array type or [_], found '[*][*]const u8'",
+ );
+
+ cases.add(
"comparison with error union and error value",
\\export fn entry() void {
\\ var number_or_error: anyerror!i32 = error.SomethingAwful;