mirror of
https://github.com/ziglang/zig.git
synced 2025-12-13 09:43:09 +00:00
Some tests are now failing due to debug info changes, some tests now pass due to improved compiler functionality.
63 lines
1.3 KiB
Zig
63 lines
1.3 KiB
Zig
const builtin = @import("builtin");
|
|
const std = @import("std");
|
|
const expect = std.testing.expect;
|
|
|
|
test "switch on empty enum" {
|
|
const E = enum {};
|
|
var e: E = undefined;
|
|
switch (e) {}
|
|
}
|
|
|
|
test "switch on empty enum with a specified tag type" {
|
|
const E = enum(u8) {};
|
|
var e: E = undefined;
|
|
switch (e) {}
|
|
}
|
|
|
|
test "switch on empty auto numbered tagged union" {
|
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
|
|
|
const U = union(enum(u8)) {};
|
|
var u: U = undefined;
|
|
switch (u) {}
|
|
}
|
|
|
|
test "switch on empty tagged union" {
|
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
|
|
|
const E = enum {};
|
|
const U = union(E) {};
|
|
var u: U = undefined;
|
|
switch (u) {}
|
|
}
|
|
|
|
test "empty union" {
|
|
const U = union {};
|
|
try expect(@sizeOf(U) == 0);
|
|
try expect(@alignOf(U) == 1);
|
|
}
|
|
|
|
test "empty extern union" {
|
|
const U = extern union {};
|
|
try expect(@sizeOf(U) == 0);
|
|
try expect(@alignOf(U) == 1);
|
|
}
|
|
|
|
test "empty union passed as argument" {
|
|
const U = union(enum) {
|
|
fn f(u: @This()) void {
|
|
switch (u) {}
|
|
}
|
|
};
|
|
U.f(@as(U, undefined));
|
|
}
|
|
|
|
test "empty enum passed as argument" {
|
|
const E = enum {
|
|
fn f(e: @This()) void {
|
|
switch (e) {}
|
|
}
|
|
};
|
|
E.f(@as(E, undefined));
|
|
}
|