mirror of
https://github.com/ziglang/zig.git
synced 2025-12-26 08:03:08 +00:00
stage2: coerce tuple to vector
This commit is contained in:
parent
69e2cac0d3
commit
b66247c97a
@ -19988,6 +19988,11 @@ fn coerce(
|
||||
},
|
||||
.Vector => switch (inst_ty.zigTypeTag()) {
|
||||
.Array, .Vector => return sema.coerceArrayLike(block, dest_ty, dest_ty_src, inst, inst_src),
|
||||
.Struct => {
|
||||
if (inst_ty.isTuple()) {
|
||||
return sema.coerceTupleToArray(block, dest_ty, dest_ty_src, inst, inst_src);
|
||||
}
|
||||
},
|
||||
.Undefined => {
|
||||
return sema.addConstUndef(dest_ty);
|
||||
},
|
||||
|
||||
@ -167,6 +167,31 @@ test "array to vector" {
|
||||
comptime try S.doTheTest();
|
||||
}
|
||||
|
||||
test "tuple to vector" {
|
||||
if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
|
||||
if (builtin.zig_backend == .stage2_c) 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
|
||||
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
|
||||
|
||||
const S = struct {
|
||||
fn doTheTest() !void {
|
||||
const Vec3 = @Vector(3, i32);
|
||||
var v: Vec3 = .{ 1, 0, 0 };
|
||||
for ([_]Vec3{ .{ 0, 1, 0 }, .{ 0, 0, 1 } }) |it| {
|
||||
v += it;
|
||||
}
|
||||
|
||||
try std.testing.expectEqual(v, Vec3{ 1, 1, 1 });
|
||||
if (builtin.zig_backend != .stage1) {
|
||||
try std.testing.expectEqual(v, .{ 1, 1, 1 });
|
||||
}
|
||||
}
|
||||
};
|
||||
try S.doTheTest();
|
||||
comptime try S.doTheTest();
|
||||
}
|
||||
|
||||
test "vector casts of sizes not divisible by 8" {
|
||||
if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
|
||||
if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user