mirror of
https://codeberg.org/ziglang/zig.git
synced 2025-12-07 06:14:33 +00:00
The compiler actually doesn't need any functional changes for this: Sema does reification based on the tag indices of `std.builtin.Type` already! So, no zig1.wasm update is necessary. This change is necessary to disallow name clashes between fields and decls on a type, which is a prerequisite of #9938.
28 lines
1.4 KiB
Zig
28 lines
1.4 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_aarch64) return error.SkipZigTest; // TODO
|
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
|
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
|
|
|
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_aarch64) return error.SkipZigTest; // TODO
|
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
|
if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
|
|
|
|
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");
|
|
}
|