mirror of
https://github.com/ziglang/zig.git
synced 2024-11-28 08:02:32 +00:00
581d292381
* allow file level `union {}` to parse as tuple field this was found while fuzzing zls. * before this patch the input `union {}` crashed the parser. after this, it parses correctly just like `struct {}`. * adds behavior tests for both inputs `struct {}` and `union {}`, checking that each becomes a file level tuple field.
27 lines
1.2 KiB
Zig
27 lines
1.2 KiB
Zig
const std = @import("std");
|
|
const builtin = @import("builtin");
|
|
|
|
test "empty file level struct" {
|
|
if (builtin.zig_backend == .stage2_arm) 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
|
|
|
|
const T = @import("empty_file_level_struct.zig");
|
|
const info = @typeInfo(T);
|
|
try std.testing.expectEqual(@as(usize, 1), info.Struct.fields.len);
|
|
try std.testing.expectEqualStrings("0", info.Struct.fields[0].name);
|
|
try std.testing.expect(@typeInfo(info.Struct.fields[0].type) == .Struct);
|
|
}
|
|
|
|
test "empty file level union" {
|
|
if (builtin.zig_backend == .stage2_arm) 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
|
|
|
|
const T = @import("empty_file_level_union.zig");
|
|
const info = @typeInfo(T);
|
|
try std.testing.expectEqual(@as(usize, 1), info.Struct.fields.len);
|
|
try std.testing.expectEqualStrings("0", info.Struct.fields[0].name);
|
|
try std.testing.expect(@typeInfo(info.Struct.fields[0].type) == .Union);
|
|
}
|