Files
zig/test/cases/compile_errors/tuple_init_edge_cases.zig
2023-10-16 14:00:18 +03:00

73 lines
1.6 KiB
Zig

pub export fn entry1() void {
const T = @TypeOf(.{ 123, 3 });
var b = T{ .@"1" = 3 };
_ = b;
var c = T{ 123, 3 };
_ = c;
var d = T{};
_ = d;
}
pub export fn entry2() void {
var a: u32 = 2;
const T = @TypeOf(.{ 123, a });
var b = T{ .@"1" = 3 };
_ = b;
var c = T{ 123, 3 };
_ = c;
var d = T{};
_ = d;
}
pub export fn entry3() void {
var a: u32 = 2;
const T = @TypeOf(.{ 123, a });
var b = T{ .@"0" = 123 };
_ = b;
}
comptime {
var a: u32 = 2;
const T = @TypeOf(.{ 123, a });
var b = T{ .@"0" = 123 };
_ = b;
var c = T{ 123, 2 };
_ = c;
var d = T{};
_ = d;
}
pub export fn entry4() void {
var a: u32 = 2;
const T = @TypeOf(.{ 123, a });
var b = T{ 123, 4, 5 };
_ = b;
}
pub export fn entry5() void {
var a: u32 = 2;
const T = @TypeOf(.{ 123, a });
var b = T{ .@"0" = 123, .@"2" = 123, .@"1" = 123 };
_ = b;
}
pub const Consideration = struct {
curve: Curve,
pub const Curve = union(enum) {
logistic: Parameters,
pub const Parameters = struct { f32, f32, f32, f32 };
};
};
pub export fn entry6() void {
const cons: []Consideration = &.{
.{ .curve = .{ .logistic = .{ -7, 1.0, 0 } } },
};
_ = cons;
}
// error
// backend=stage2
// target=native
//
// :17:14: error: missing tuple field with index 1
// :23:14: error: missing tuple field with index 1
// :39:14: error: expected at most 2 tuple fields; found 3
// :45:30: error: index '2' out of bounds of tuple 'struct{comptime comptime_int = 123, u32}'
// :58:37: error: missing tuple field with index 3
// :53:32: note: struct declared here