From be94299666e57486be6bdb8fee2b79dbf3623c5d Mon Sep 17 00:00:00 2001 From: Andrew Kelley Date: Tue, 29 Aug 2017 15:19:15 -0400 Subject: prevent implicitly increasing pointer alignment See #37 --- test/compile_errors.zig | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) (limited to 'test/compile_errors.zig') diff --git a/test/compile_errors.zig b/test/compile_errors.zig index ac5e06d9f3..03110f98e7 100644 --- a/test/compile_errors.zig +++ b/test/compile_errors.zig @@ -1976,4 +1976,39 @@ pub fn addCases(cases: &tests.CompileErrorContext) { \\} , ".tmp_source.zig:1:1: error: declaration shadows type 'u16'"); + + cases.add("implicitly increasing pointer alignment", + \\const Foo = packed struct { + \\ a: u8, + \\ b: u32, + \\}; + \\ + \\export fn entry() { + \\ var foo = Foo { .a = 1, .b = 10 }; + \\ bar(&foo.b); + \\} + \\ + \\fn bar(x: &u32) { + \\ *x += 1; + \\} + , + ".tmp_source.zig:8:13: error: expected type '&u32', found '&align 1 u32'"); + + cases.add("implicitly increasing slice alignment", + \\const Foo = packed struct { + \\ a: u8, + \\ b: u32, + \\}; + \\ + \\export fn entry() { + \\ var foo = Foo { .a = 1, .b = 10 }; + \\ foo.b += 1; + \\ bar((&foo.b)[0..1]); + \\} + \\ + \\fn bar(x: []u32) { + \\ x[0] += 1; + \\} + , + ".tmp_source.zig:9:17: error: expected type '[]u32', found '[]align 1 u32'"); } -- cgit v1.2.3