aboutsummaryrefslogtreecommitdiff
path: root/test/behavior/vector.zig
diff options
context:
space:
mode:
authorAndrew Kelley <andrew@ziglang.org>2023-04-10 12:21:55 -0400
committerGitHub <noreply@github.com>2023-04-10 12:21:55 -0400
commita2793f8ab831b4a9ffba24540e40a862f32b9d90 (patch)
treea2f8a128ca8445ef19f3ad5061ca7c53ae2936ad /test/behavior/vector.zig
parent2c639d657002ac66749d08c4977cbb201d113ce1 (diff)
parent0606f0aa5576122204886f1a3c9530c0ce75c044 (diff)
downloadzig-a2793f8ab831b4a9ffba24540e40a862f32b9d90.tar.gz
zig-a2793f8ab831b4a9ffba24540e40a862f32b9d90.zip
Merge pull request #14853 from schmee/vector-peer-type-resolution
Vector type resolution/coercion fixes
Diffstat (limited to 'test/behavior/vector.zig')
-rw-r--r--test/behavior/vector.zig38
1 files changed, 38 insertions, 0 deletions
diff --git a/test/behavior/vector.zig b/test/behavior/vector.zig
index 70faceffee..9c58fd1a36 100644
--- a/test/behavior/vector.zig
+++ b/test/behavior/vector.zig
@@ -175,6 +175,44 @@ test "array to vector" {
comptime try S.doTheTest();
}
+test "array to vector with element type coercion" {
+ if (builtin.zig_backend == .stage2_wasm) 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
+ if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
+
+ const S = struct {
+ fn doTheTest() !void {
+ var foo: f16 = 3.14;
+ var arr32 = [4]f32{ foo, 1.5, 0.0, 0.0 };
+ var vec: @Vector(4, f32) = [4]f16{ foo, 1.5, 0.0, 0.0 };
+ try std.testing.expect(std.mem.eql(f32, &@as([4]f32, vec), &arr32));
+ }
+ };
+ try S.doTheTest();
+ comptime try S.doTheTest();
+}
+
+test "peer type resolution with coercible element types" {
+ if (builtin.zig_backend == .stage2_wasm) 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
+ if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
+
+ const S = struct {
+ fn doTheTest() !void {
+ var b: @Vector(2, u8) = .{ 1, 2 };
+ var a: @Vector(2, u16) = .{ 2, 1 };
+ var t: bool = true;
+ var c = if (t) a else b;
+ try std.testing.expect(@TypeOf(c) == @Vector(2, u16));
+ }
+ };
+ comptime try S.doTheTest();
+}
+
test "tuple to vector" {
if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO