diff options
| author | Andrew Kelley <andrew@ziglang.org> | 2023-04-10 12:21:55 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-04-10 12:21:55 -0400 |
| commit | a2793f8ab831b4a9ffba24540e40a862f32b9d90 (patch) | |
| tree | a2f8a128ca8445ef19f3ad5061ca7c53ae2936ad /test/behavior/vector.zig | |
| parent | 2c639d657002ac66749d08c4977cbb201d113ce1 (diff) | |
| parent | 0606f0aa5576122204886f1a3c9530c0ce75c044 (diff) | |
| download | zig-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.zig | 38 |
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 |
