authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2020-12-03 17:07:13-07:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2020-12-03 17:46:21-07:00
log2ce5f84c2f2ca5470e34194d853d6950f42cf0e8
treed9ca01166ba32ac7e98a2218fda8d75946f8cd0f
parent05265160ae7a43a1dd15a061138501621cf1da3d

stage1: compile error for pointer arithmetic on ptr-to-array

See #2018

2 files changed, 11 insertions(+), 1 deletions(-)

src/stage1/ir.cpp+1-1
......@@ -17778,7 +17778,7 @@ static bool is_pointer_arithmetic_allowed(ZigType *lhs_type, IrBinOp op) {
1777817778 return false;
1777917779 switch (lhs_type->data.pointer.ptr_len) {
1778017780 case PtrLenSingle:
17781 return lhs_type->data.pointer.child_type->id == ZigTypeIdArray;
17781 return false;
1778217782 case PtrLenUnknown:
1778317783 case PtrLenC:
1778417784 return true;
test/compile_errors.zig+10
......@@ -2,6 +2,16 @@ const tests = @import("tests.zig");
22const std = @import("std");
33
44pub fn addCases(cases: *tests.CompileErrorContext) void {
5 cases.add("pointer arithmetic on pointer-to-array",
6 \\export fn foo() void {
7 \\ var x: [10]u8 = undefined;
8 \\ var y = &x;
9 \\ var z = y + 1;
10 \\}
11 , &[_][]const u8{
12 "tmp.zig:4:17: error: integer value 1 cannot be coerced to type '*[10]u8'",
13 });
14
515 cases.add("@Type() union payload is undefined",
616 \\const Foo = @Type(@import("std").builtin.TypeInfo{
717 \\ .Struct = undefined,