mirror of
https://github.com/ziglang/zig.git
synced 2025-12-25 07:33:08 +00:00
* Identify the ones that are passing and stop skipping them. * Flatten out the main behavior.zig file and have each individual test disable itself if it is not passing.
69 lines
1.4 KiB
Zig
69 lines
1.4 KiB
Zig
const builtin = @import("builtin");
|
|
const std = @import("std");
|
|
|
|
const A = packed struct {
|
|
a: bool,
|
|
b: bool,
|
|
c: bool,
|
|
d: bool,
|
|
|
|
e: bool,
|
|
f: bool,
|
|
g: bool,
|
|
h: bool,
|
|
};
|
|
|
|
const X = union {
|
|
x: A,
|
|
y: u64,
|
|
};
|
|
|
|
pub fn a(
|
|
x0: i32,
|
|
x1: i32,
|
|
x2: i32,
|
|
x3: i32,
|
|
x4: i32,
|
|
flag_a: bool,
|
|
flag_b: bool,
|
|
) !void {
|
|
_ = x0;
|
|
_ = x1;
|
|
_ = x2;
|
|
_ = x3;
|
|
_ = x4;
|
|
_ = flag_a;
|
|
// With this bug present, `flag_b` would actually contain the value 17.
|
|
// Note: this bug only presents itself on debug mode.
|
|
try std.testing.expect(@ptrCast(*const u8, &flag_b).* == 1);
|
|
}
|
|
|
|
pub fn b(x: *X) !void {
|
|
try a(0, 1, 2, 3, 4, x.x.a, x.x.b);
|
|
}
|
|
|
|
test {
|
|
if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
|
|
if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
|
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
|
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
|
if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
|
|
|
|
var flags = A{
|
|
.a = false,
|
|
.b = true,
|
|
.c = false,
|
|
.d = false,
|
|
|
|
.e = false,
|
|
.f = true,
|
|
.g = false,
|
|
.h = false,
|
|
};
|
|
var x = X{
|
|
.x = flags,
|
|
};
|
|
try b(&x);
|
|
comptime if (@sizeOf(A) != 1) unreachable;
|
|
}
|