diff options
| author | mlugg <mlugg@mlugg.co.uk> | 2023-11-07 00:43:18 +0000 |
|---|---|---|
| committer | Matthew Lugg <mlugg@mlugg.co.uk> | 2023-11-07 06:11:01 +0000 |
| commit | 9b394a200a55c8347e32607dcff568e8482ada48 (patch) | |
| tree | 5dcce4e6c5620e1dcabff2d2daa20e7ea7e42751 | |
| parent | bf0387b6bb9c65c30f14e699a2f2cfbfea27184e (diff) | |
| download | zig-9b394a200a55c8347e32607dcff568e8482ada48.tar.gz zig-9b394a200a55c8347e32607dcff568e8482ada48.zip | |
Sema: allow destructuring vectors
This was intended to work when destructuring was first implemented, and
was just unintentionally missed out.
| -rw-r--r-- | src/Sema.zig | 2 | ||||
| -rw-r--r-- | test/behavior/destructure.zig | 11 |
2 files changed, 12 insertions, 1 deletions
diff --git a/src/Sema.zig b/src/Sema.zig index 6feb679f4b..047f8c2c96 100644 --- a/src/Sema.zig +++ b/src/Sema.zig @@ -5205,7 +5205,7 @@ fn zirValidateDestructure(sema: *Sema, block: *Block, inst: Zir.Inst.Index) Comp const operand_ty = sema.typeOf(operand); const can_destructure = switch (operand_ty.zigTypeTag(mod)) { - .Array => true, + .Array, .Vector => true, .Struct => operand_ty.isTuple(mod), else => false, }; diff --git a/test/behavior/destructure.zig b/test/behavior/destructure.zig index 174f9ffc24..4d7c336daa 100644 --- a/test/behavior/destructure.zig +++ b/test/behavior/destructure.zig @@ -138,3 +138,14 @@ test "destructure of tuple with comptime fields results in some comptime-known v try expect(b == 42); try expect(d == 42); } + +test "destructure vector" { + const vec: @Vector(2, i32) = .{ 1, 2 }; + const x, const y = vec; + + comptime assert(@TypeOf(x) == i32); + comptime assert(@TypeOf(y) == i32); + + try expect(x == 1); + try expect(y == 2); +} |
