Commit 9b394a200a

mlugg <mlugg@mlugg.co.uk>
2023-11-07 01:43:18
Sema: allow destructuring vectors
This was intended to work when destructuring was first implemented, and was just unintentionally missed out.
1 parent bf0387b
Changed files (2)
src
test
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,
     };
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);
+}