diff --git a/lib/std/json/static_test.zig b/lib/std/json/static_test.zig index 25a3365627e254e313f85a566020408f85ab8182..b9b89eae2b60e21734a9c28c3de689a43a740f16 100644 --- a/lib/std/json/static_test.zig +++ b/lib/std/json/static_test.zig @@ -663,7 +663,7 @@ test "parse into tuple" { float: f64, string: []const u8, }; - const T = std.meta.Tuple(&.{ + const T = @Tuple(&.{ i64, f64, bool, @@ -673,7 +673,7 @@ test "parse into tuple" { foo: i32, bar: []const u8, }, - std.meta.Tuple(&.{ u8, []const u8, u8 }), + @Tuple(&.{ u8, []const u8, u8 }), Union, }); const str = diff --git a/lib/std/meta.zig b/lib/std/meta.zig index ff4c994ad6279ec3cecdbf1b0d6412bbee03a1ad..689888e31800c377c0e41acc68aad73d508ce79d 100644 --- a/lib/std/meta.zig +++ b/lib/std/meta.zig @@ -791,14 +791,7 @@ pub fn ArgsTuple(comptime Function: type) type { argument_field_list[i] = T; } - return Tuple(&argument_field_list); -} - -/// Deprecated; use `@Tuple` instead. -/// -/// To be removed after Zig 0.16.0 releases. -pub fn Tuple(comptime types: []const type) type { - return @Tuple(types); + return @Tuple(&argument_field_list); } const TupleTester = struct { @@ -834,33 +827,13 @@ test ArgsTuple { TupleTester.assertTuple(.{u32}, ArgsTuple(fn (comptime a: u32) []const u8)); } -test Tuple { - TupleTester.assertTuple(.{}, Tuple(&[_]type{})); - TupleTester.assertTuple(.{u32}, Tuple(&[_]type{u32})); - TupleTester.assertTuple(.{ u32, f16 }, Tuple(&[_]type{ u32, f16 })); - TupleTester.assertTuple(.{ u32, f16, []const u8, void }, Tuple(&[_]type{ u32, f16, []const u8, void })); -} - -test "Tuple deduplication" { - const T1 = std.meta.Tuple(&.{ u32, f32, i8 }); - const T2 = std.meta.Tuple(&.{ u32, f32, i8 }); - const T3 = std.meta.Tuple(&.{ u32, f32, i7 }); - - if (T1 != T2) { - @compileError("std.meta.Tuple doesn't deduplicate tuple types."); - } - if (T1 == T3) { - @compileError("std.meta.Tuple fails to generate different types."); - } -} - test "ArgsTuple forwarding" { - const T1 = std.meta.Tuple(&.{ u32, f32, i8 }); + const T1 = @Tuple(&.{ u32, f32, i8 }); const T2 = std.meta.ArgsTuple(fn (u32, f32, i8) void); const T3 = std.meta.ArgsTuple(fn (u32, f32, i8) callconv(.c) noreturn); if (T1 != T2) { - @compileError("std.meta.ArgsTuple produces different types than std.meta.Tuple"); + @compileError("std.meta.ArgsTuple produces different types than @Tuple"); } if (T1 != T3) { @compileError("std.meta.ArgsTuple produces different types for the same argument lists."); diff --git a/test/behavior/tuple.zig b/test/behavior/tuple.zig index 7bd78391a937907e38c9aafe3d121a0ea37a575d..42c3cbf101cea43a2e18fa66af2b2474127570b4 100644 --- a/test/behavior/tuple.zig +++ b/test/behavior/tuple.zig @@ -233,7 +233,7 @@ test "tuple in tuple passed to generic function" { if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest; const S = struct { - fn pair(x: f32, y: f32) std.meta.Tuple(&.{ f32, f32 }) { + fn pair(x: f32, y: f32) @Tuple(&.{ f32, f32 }) { return .{ x, y }; } @@ -251,7 +251,7 @@ test "coerce tuple to tuple" { if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest; - const T = std.meta.Tuple(&.{u8}); + const T = @Tuple(&.{u8}); const S = struct { fn foo(x: T) !void { try expect(x[0] == 123); @@ -265,7 +265,7 @@ test "tuple type with void field" { if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest; - const T = std.meta.Tuple(&[_]type{void}); + const T = @Tuple(&.{void}); const x = T{{}}; try expect(@TypeOf(x[0]) == void); } @@ -290,7 +290,7 @@ test "tuple type with void field and a runtime field" { if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest; - const T = std.meta.Tuple(&[_]type{ usize, void }); + const T = @Tuple(&.{ usize, void }); var t: T = .{ 5, {} }; _ = &t; try expect(t[0] == 5);