| author | |
| committer | |
| log | 434226c89d45570842e9b9f34d1163b4d40156af |
| tree | c5a272cb00ac6dbc25b84e7e62162ff21dbc0c7a |
| parent | 93d7fd95477b4a4803b52d5f52d3da9bda1926c8 |
4 files changed, 29 insertions(+), 28 deletions(-)
src/type.zig+2-2| ... | @@ -1843,7 +1843,7 @@ pub const Type = extern union { | ... | @@ -1843,7 +1843,7 @@ pub const Type = extern union { |
| 1843 | if (payload.@"align" != 0 or payload.host_size != 0) { | 1843 | if (payload.@"align" != 0 or payload.host_size != 0) { |
| 1844 | try writer.print("align({d}", .{payload.@"align"}); | 1844 | try writer.print("align({d}", .{payload.@"align"}); |
| 1845 | 1845 | ||
| 1846 | if (payload.bit_offset != 0) { | 1846 | if (payload.bit_offset != 0 or payload.host_size != 0) { |
| 1847 | try writer.print(":{d}:{d}", .{ payload.bit_offset, payload.host_size }); | 1847 | try writer.print(":{d}:{d}", .{ payload.bit_offset, payload.host_size }); |
| 1848 | } | 1848 | } |
| 1849 | try writer.writeAll(") "); | 1849 | try writer.writeAll(") "); |
| ... | @@ -2167,7 +2167,7 @@ pub const Type = extern union { | ... | @@ -2167,7 +2167,7 @@ pub const Type = extern union { |
| 2167 | if (info.@"align" != 0 or info.host_size != 0) { | 2167 | if (info.@"align" != 0 or info.host_size != 0) { |
| 2168 | try writer.print("align({d}", .{info.@"align"}); | 2168 | try writer.print("align({d}", .{info.@"align"}); |
| 2169 | 2169 | ||
| 2170 | if (info.bit_offset != 0) { | 2170 | if (info.bit_offset != 0 or info.host_size != 0) { |
| 2171 | try writer.print(":{d}:{d}", .{ info.bit_offset, info.host_size }); | 2171 | try writer.print(":{d}:{d}", .{ info.bit_offset, info.host_size }); |
| 2172 | } | 2172 | } |
| 2173 | try writer.writeAll(") "); | 2173 | try writer.writeAll(") "); |
test/behavior.zig-1| ... | @@ -27,7 +27,6 @@ test { | ... | @@ -27,7 +27,6 @@ test { |
| 27 | _ = @import("behavior/bugs/1025.zig"); | 27 | _ = @import("behavior/bugs/1025.zig"); |
| 28 | _ = @import("behavior/bugs/1076.zig"); | 28 | _ = @import("behavior/bugs/1076.zig"); |
| 29 | _ = @import("behavior/bugs/1111.zig"); | 29 | _ = @import("behavior/bugs/1111.zig"); |
| 30 | _ = @import("behavior/bugs/1120.zig"); | ||
| 31 | _ = @import("behavior/bugs/1277.zig"); | 30 | _ = @import("behavior/bugs/1277.zig"); |
| 32 | _ = @import("behavior/bugs/1310.zig"); | 31 | _ = @import("behavior/bugs/1310.zig"); |
| 33 | _ = @import("behavior/bugs/1381.zig"); | 32 | _ = @import("behavior/bugs/1381.zig"); |
test/behavior/bugs/1120.zig deleted-25| ... | @@ -1,25 +0,0 @@ | ||
| 1 | const std = @import("std"); | ||
| 2 | const expect = std.testing.expect; | ||
| 3 | |||
| 4 | const A = packed struct { | ||
| 5 | a: u2, | ||
| 6 | b: u6, | ||
| 7 | }; | ||
| 8 | const B = packed struct { | ||
| 9 | q: u8, | ||
| 10 | a: u2, | ||
| 11 | b: u6, | ||
| 12 | }; | ||
| 13 | test "bug 1120" { | ||
| 14 | if (@import("builtin").zig_backend != .stage1) return error.SkipZigTest; // TODO | ||
| 15 | |||
| 16 | var a = A{ .a = 2, .b = 2 }; | ||
| 17 | var b = B{ .q = 22, .a = 3, .b = 2 }; | ||
| 18 | var t: usize = 0; | ||
| 19 | const ptr = switch (t) { | ||
| 20 | 0 => &a.a, | ||
| 21 | 1 => &b.a, | ||
| 22 | else => unreachable, | ||
| 23 | }; | ||
| 24 | try expect(ptr.* == 2); | ||
| 25 | } | ||
test/cases/compile_errors/incompatible sub-byte fields.zig	 created+27| ... | @@ -0,0 +1,27 @@ | ||
| 1 | const A = packed struct { | ||
| 2 | a: u2, | ||
| 3 | b: u6, | ||
| 4 | }; | ||
| 5 | const B = packed struct { | ||
| 6 | q: u8, | ||
| 7 | a: u2, | ||
| 8 | b: u6, | ||
| 9 | }; | ||
| 10 | export fn entry() void { | ||
| 11 | var a = A{ .a = 2, .b = 2 }; | ||
| 12 | var b = B{ .q = 22, .a = 3, .b = 2 }; | ||
| 13 | var t: usize = 0; | ||
| 14 | const ptr = switch (t) { | ||
| 15 | 0 => &a.a, | ||
| 16 | 1 => &b.a, | ||
| 17 | else => unreachable, | ||
| 18 | }; | ||
| 19 | if (ptr.* == 2) { | ||
| 20 | @compileError("wrong compile error"); | ||
| 21 | } | ||
| 22 | } | ||
| 23 | // error | ||
| 24 | // backend=stage2 | ||
| 25 | // target=native | ||
| 26 | // | ||
| 27 | // :14:17: error: incompatible types: '*align(0:0:1) u2' and '*align(2:8:2) u2' | ||