mirror of
https://codeberg.org/ziglang/zig.git
synced 2025-12-08 14:54:42 +00:00
Some tests are now failing due to debug info changes, some tests now pass due to improved compiler functionality.
56 lines
1.9 KiB
Zig
56 lines
1.9 KiB
Zig
const std = @import("std");
|
|
const builtin = @import("builtin");
|
|
const testing = std.testing;
|
|
const expect = testing.expect;
|
|
const expectEqualStrings = testing.expectEqualStrings;
|
|
|
|
test "tuple declaration type info" {
|
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
|
|
|
|
{
|
|
const T = struct { comptime u32 align(2) = 1, []const u8 };
|
|
const info = @typeInfo(T).Struct;
|
|
|
|
try expect(info.layout == .Auto);
|
|
try expect(info.backing_integer == null);
|
|
try expect(info.fields.len == 2);
|
|
try expect(info.decls.len == 0);
|
|
try expect(info.is_tuple);
|
|
|
|
try expectEqualStrings(info.fields[0].name, "0");
|
|
try expect(info.fields[0].type == u32);
|
|
try expect(@as(*const u32, @ptrCast(@alignCast(info.fields[0].default_value))).* == 1);
|
|
try expect(info.fields[0].is_comptime);
|
|
try expect(info.fields[0].alignment == 2);
|
|
|
|
try expectEqualStrings(info.fields[1].name, "1");
|
|
try expect(info.fields[1].type == []const u8);
|
|
try expect(info.fields[1].default_value == null);
|
|
try expect(!info.fields[1].is_comptime);
|
|
try expect(info.fields[1].alignment == @alignOf([]const u8));
|
|
}
|
|
}
|
|
|
|
test "Tuple declaration usage" {
|
|
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
|
|
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
|
|
|
|
const T = struct { u32, []const u8 };
|
|
var t: T = .{ 1, "foo" };
|
|
try expect(t[0] == 1);
|
|
try expectEqualStrings(t[1], "foo");
|
|
|
|
var mul = t ** 3;
|
|
try expect(@TypeOf(mul) != T);
|
|
try expect(mul.len == 6);
|
|
try expect(mul[2] == 1);
|
|
try expectEqualStrings(mul[3], "foo");
|
|
|
|
var t2: T = .{ 2, "bar" };
|
|
var cat = t ++ t2;
|
|
try expect(@TypeOf(cat) != T);
|
|
try expect(cat.len == 4);
|
|
try expect(cat[2] == 2);
|
|
try expectEqualStrings(cat[3], "bar");
|
|
}
|