diff --git a/test/expressions/zero_init/struct/array.wgsl b/test/expressions/zero_init/struct/array.wgsl
new file mode 100644
index 0000000..148b457
--- /dev/null
+++ b/test/expressions/zero_init/struct/array.wgsl
@@ -0,0 +1,7 @@
+struct S {
+    a : array<f32, 4>;
+};
+
+fn f() {
+    var v = S();
+}
diff --git a/test/expressions/zero_init/struct/array.wgsl.expected.hlsl b/test/expressions/zero_init/struct/array.wgsl.expected.hlsl
new file mode 100644
index 0000000..6bb77c6
--- /dev/null
+++ b/test/expressions/zero_init/struct/array.wgsl.expected.hlsl
@@ -0,0 +1,15 @@
+[numthreads(1, 1, 1)]
+void unused_entry_point() {
+  return;
+}
+
+struct tint_array_wrapper {
+  float arr[4];
+};
+struct S {
+  tint_array_wrapper a;
+};
+
+void f() {
+  S v = {{{0.0f, 0.0f, 0.0f, 0.0f}}};
+}
diff --git a/test/expressions/zero_init/struct/array.wgsl.expected.msl b/test/expressions/zero_init/struct/array.wgsl.expected.msl
new file mode 100644
index 0000000..61b9dc1
--- /dev/null
+++ b/test/expressions/zero_init/struct/array.wgsl.expected.msl
@@ -0,0 +1,14 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_array_wrapper {
+  float arr[4];
+};
+struct S {
+  tint_array_wrapper a;
+};
+
+void f() {
+  S v = {};
+}
+
diff --git a/test/expressions/zero_init/struct/array.wgsl.expected.spvasm b/test/expressions/zero_init/struct/array.wgsl.expected.spvasm
new file mode 100644
index 0000000..bb96631
--- /dev/null
+++ b/test/expressions/zero_init/struct/array.wgsl.expected.spvasm
@@ -0,0 +1,35 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 15
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint GLCompute %unused_entry_point "unused_entry_point"
+               OpExecutionMode %unused_entry_point LocalSize 1 1 1
+               OpName %unused_entry_point "unused_entry_point"
+               OpName %f "f"
+               OpName %S "S"
+               OpMemberName %S 0 "a"
+               OpName %v "v"
+               OpMemberDecorate %S 0 Offset 0
+               OpDecorate %_arr_float_uint_4 ArrayStride 4
+       %void = OpTypeVoid
+          %1 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+       %uint = OpTypeInt 32 0
+     %uint_4 = OpConstant %uint 4
+%_arr_float_uint_4 = OpTypeArray %float %uint_4
+          %S = OpTypeStruct %_arr_float_uint_4
+         %12 = OpConstantNull %S
+%_ptr_Function_S = OpTypePointer Function %S
+%unused_entry_point = OpFunction %void None %1
+          %4 = OpLabel
+               OpReturn
+               OpFunctionEnd
+          %f = OpFunction %void None %1
+          %6 = OpLabel
+          %v = OpVariable %_ptr_Function_S Function %12
+               OpStore %v %12
+               OpReturn
+               OpFunctionEnd
diff --git a/test/expressions/zero_init/struct/array.wgsl.expected.wgsl b/test/expressions/zero_init/struct/array.wgsl.expected.wgsl
new file mode 100644
index 0000000..522939f
--- /dev/null
+++ b/test/expressions/zero_init/struct/array.wgsl.expected.wgsl
@@ -0,0 +1,7 @@
+struct S {
+  a : array<f32, 4>;
+};
+
+fn f() {
+  var v = S();
+}
diff --git a/test/expressions/zero_init/struct/scalar.wgsl b/test/expressions/zero_init/struct/scalar.wgsl
new file mode 100644
index 0000000..a1c58b3
--- /dev/null
+++ b/test/expressions/zero_init/struct/scalar.wgsl
@@ -0,0 +1,10 @@
+struct S {
+    i : i32;
+    u : u32;
+    f : f32;
+    b : bool;
+};
+
+fn f() {
+    var v = S();
+}
diff --git a/test/expressions/zero_init/struct/scalar.wgsl.expected.hlsl b/test/expressions/zero_init/struct/scalar.wgsl.expected.hlsl
new file mode 100644
index 0000000..29925ff
--- /dev/null
+++ b/test/expressions/zero_init/struct/scalar.wgsl.expected.hlsl
@@ -0,0 +1,15 @@
+[numthreads(1, 1, 1)]
+void unused_entry_point() {
+  return;
+}
+
+struct S {
+  int i;
+  uint u;
+  float f;
+  bool b;
+};
+
+void f() {
+  S v = {0, 0u, 0.0f, false};
+}
diff --git a/test/expressions/zero_init/struct/scalar.wgsl.expected.msl b/test/expressions/zero_init/struct/scalar.wgsl.expected.msl
new file mode 100644
index 0000000..b72ea5e
--- /dev/null
+++ b/test/expressions/zero_init/struct/scalar.wgsl.expected.msl
@@ -0,0 +1,14 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct S {
+  int i;
+  uint u;
+  float f;
+  bool b;
+};
+
+void f() {
+  S v = {};
+}
+
diff --git a/test/expressions/zero_init/struct/scalar.wgsl.expected.spvasm b/test/expressions/zero_init/struct/scalar.wgsl.expected.spvasm
new file mode 100644
index 0000000..1990f38
--- /dev/null
+++ b/test/expressions/zero_init/struct/scalar.wgsl.expected.spvasm
@@ -0,0 +1,40 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 15
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint GLCompute %unused_entry_point "unused_entry_point"
+               OpExecutionMode %unused_entry_point LocalSize 1 1 1
+               OpName %unused_entry_point "unused_entry_point"
+               OpName %f "f"
+               OpName %S "S"
+               OpMemberName %S 0 "i"
+               OpMemberName %S 1 "u"
+               OpMemberName %S 2 "f"
+               OpMemberName %S 3 "b"
+               OpName %v "v"
+               OpMemberDecorate %S 0 Offset 0
+               OpMemberDecorate %S 1 Offset 4
+               OpMemberDecorate %S 2 Offset 8
+               OpMemberDecorate %S 3 Offset 12
+       %void = OpTypeVoid
+          %1 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+       %uint = OpTypeInt 32 0
+      %float = OpTypeFloat 32
+       %bool = OpTypeBool
+          %S = OpTypeStruct %int %uint %float %bool
+         %12 = OpConstantNull %S
+%_ptr_Function_S = OpTypePointer Function %S
+%unused_entry_point = OpFunction %void None %1
+          %4 = OpLabel
+               OpReturn
+               OpFunctionEnd
+          %f = OpFunction %void None %1
+          %6 = OpLabel
+          %v = OpVariable %_ptr_Function_S Function %12
+               OpStore %v %12
+               OpReturn
+               OpFunctionEnd
diff --git a/test/expressions/zero_init/struct/scalar.wgsl.expected.wgsl b/test/expressions/zero_init/struct/scalar.wgsl.expected.wgsl
new file mode 100644
index 0000000..0da534f
--- /dev/null
+++ b/test/expressions/zero_init/struct/scalar.wgsl.expected.wgsl
@@ -0,0 +1,10 @@
+struct S {
+  i : i32;
+  u : u32;
+  f : f32;
+  b : bool;
+};
+
+fn f() {
+  var v = S();
+}
