[tint] Use templated types for Composite() where possible

Change-Id: I49e759e468a0dbd6eded8188f92074727d2ecb90
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/189124
Commit-Queue: Ben Clayton <bclayton@google.com>
Reviewed-by: James Price <jrprice@google.com>
diff --git a/src/tint/lang/msl/writer/printer/constant_test.cc b/src/tint/lang/msl/writer/printer/constant_test.cc
index 1ce484b..70c75b2 100644
--- a/src/tint/lang/msl/writer/printer/constant_test.cc
+++ b/src/tint/lang/msl/writer/printer/constant_test.cc
@@ -150,7 +150,7 @@
 }
 
 TEST_F(MslPrinterTest, Constant_Vector_Composite) {
-    auto* c = b.Composite(ty.vec3<f32>(), 1.5_f, 1.0_f, 1.5_f);
+    auto* c = b.Composite<vec3<f32>>(1.5_f, 1.0_f, 1.5_f);
     auto* func = b.Function("foo", ty.void_());
     b.Append(func->Block(), [&] {
         b.Let("a", c);
@@ -166,7 +166,7 @@
 }
 
 TEST_F(MslPrinterTest, Constant_Vector_Composite_AnyZero) {
-    auto* c = b.Composite(ty.vec3<f32>(), 1.0_f, 0.0_f, 1.5_f);
+    auto* c = b.Composite<vec3<f32>>(1.0_f, 0.0_f, 1.5_f);
     auto* func = b.Function("foo", ty.void_());
     b.Append(func->Block(), [&] {
         b.Let("a", c);
@@ -182,7 +182,7 @@
 }
 
 TEST_F(MslPrinterTest, Constant_Vector_Composite_AllZero) {
-    auto* c = b.Composite(ty.vec3<f32>(), 0.0_f, 0.0_f, 0.0_f);
+    auto* c = b.Composite<vec3<f32>>(0.0_f, 0.0_f, 0.0_f);
     auto* func = b.Function("foo", ty.void_());
     b.Append(func->Block(), [&] {
         b.Let("a", c);
@@ -214,10 +214,10 @@
 }
 
 TEST_F(MslPrinterTest, Constant_Matrix_Composite) {
-    auto* c = b.Composite(ty.mat3x2<f32>(),                           //
-                          b.Composite(ty.vec2<f32>(), 1.5_f, 1.0_f),  //
-                          b.Composite(ty.vec2<f32>(), 1.5_f, 2.0_f),  //
-                          b.Composite(ty.vec2<f32>(), 2.5_f, 3.5_f));
+    auto* c = b.Composite<mat3x2<f32>>(        //
+        b.Composite<vec2<f32>>(1.5_f, 1.0_f),  //
+        b.Composite<vec2<f32>>(1.5_f, 2.0_f),  //
+        b.Composite<vec2<f32>>(2.5_f, 3.5_f));
     auto* func = b.Function("foo", ty.void_());
     b.Append(func->Block(), [&] {
         b.Let("a", c);
@@ -233,9 +233,9 @@
 }
 
 TEST_F(MslPrinterTest, Constant_Matrix_Composite_AnyZero) {
-    auto* c = b.Composite(ty.mat2x2<f32>(),                           //
-                          b.Composite(ty.vec2<f32>(), 1.0_f, 0.0_f),  //
-                          b.Composite(ty.vec2<f32>(), 1.5_f, 2.5_f));
+    auto* c = b.Composite<mat2x2<f32>>(        //
+        b.Composite<vec2<f32>>(1.0_f, 0.0_f),  //
+        b.Composite<vec2<f32>>(1.5_f, 2.5_f));
     auto* func = b.Function("foo", ty.void_());
     b.Append(func->Block(), [&] {
         b.Let("a", c);
@@ -251,10 +251,10 @@
 }
 
 TEST_F(MslPrinterTest, Constant_Matrix_Composite_AllZero) {
-    auto* c = b.Composite(ty.mat3x2<f32>(),                           //
-                          b.Composite(ty.vec2<f32>(), 0.0_f, 0.0_f),  //
-                          b.Composite(ty.vec2<f32>(), 0.0_f, 0.0_f),  //
-                          b.Composite(ty.vec2<f32>(), 0.0_f, 0.0_f));
+    auto* c = b.Composite<mat3x2<f32>>(        //
+        b.Composite<vec2<f32>>(0.0_f, 0.0_f),  //
+        b.Composite<vec2<f32>>(0.0_f, 0.0_f),  //
+        b.Composite<vec2<f32>>(0.0_f, 0.0_f));
     auto* func = b.Function("foo", ty.void_());
     b.Append(func->Block(), [&] {
         b.Let("a", c);
@@ -286,7 +286,7 @@
 }
 
 TEST_F(MslPrinterTest, Constant_Array_Composite) {
-    auto* c = b.Composite(ty.array<f32, 3>(), 1.5_f, 1.0_f, 2.0_f);
+    auto* c = b.Composite<array<f32, 3>>(1.5_f, 1.0_f, 2.0_f);
     auto* func = b.Function("foo", ty.void_());
     b.Append(func->Block(), [&] {
         b.Let("a", c);
@@ -302,7 +302,7 @@
 }
 
 TEST_F(MslPrinterTest, Constant_Array_Composite_AnyZero) {
-    auto* c = b.Composite(ty.array<f32, 2>(), 1.0_f, 0.0_f);
+    auto* c = b.Composite<array<f32, 2>>(1.0_f, 0.0_f);
     auto* func = b.Function("foo", ty.void_());
     b.Append(func->Block(), [&] {
         b.Let("a", c);
@@ -318,7 +318,7 @@
 }
 
 TEST_F(MslPrinterTest, Constant_Array_Composite_AllZero) {
-    auto* c = b.Composite(ty.array<f32, 3>(), 0.0_f, 0.0_f, 0.0_f);
+    auto* c = b.Composite<array<f32, 3>>(0.0_f, 0.0_f, 0.0_f);
     auto* func = b.Function("foo", ty.void_());
     b.Append(func->Block(), [&] {
         b.Let("a", c);
diff --git a/src/tint/lang/msl/writer/printer/let_test.cc b/src/tint/lang/msl/writer/printer/let_test.cc
index 0221bf7..85248bb 100644
--- a/src/tint/lang/msl/writer/printer/let_test.cc
+++ b/src/tint/lang/msl/writer/printer/let_test.cc
@@ -114,7 +114,7 @@
 TEST_F(MslPrinterTest, LetVec3F32) {
     auto* func = b.Function("foo", ty.void_());
     b.Append(func->Block(), [&] {
-        b.Let("l", b.Composite(ty.vec3<f32>(), 1_f, 2_f, 3_f));
+        b.Let("l", b.Composite<vec3<f32>>(1_f, 2_f, 3_f));
         b.Return(func);
     });
 
@@ -130,7 +130,7 @@
     // Enable f16?
     auto* func = b.Function("foo", ty.void_());
     b.Append(func->Block(), [&] {
-        b.Let("l", b.Composite(ty.vec3<f16>(), 1_h, 2_h, 3_h));
+        b.Let("l", b.Composite<vec3<f16>>(1_h, 2_h, 3_h));
         b.Return(func);
     });
 
@@ -145,9 +145,8 @@
 TEST_F(MslPrinterTest, LetMat2x3F32) {
     auto* func = b.Function("foo", ty.void_());
     b.Append(func->Block(), [&] {
-        b.Let("l", b.Composite(ty.mat2x3<f32>(),  //
-                               b.Composite(ty.vec3<f32>(), 1_f, 2_f, 3_f),
-                               b.Composite(ty.vec3<f32>(), 4_f, 5_f, 6_f)));
+        b.Let("l", b.Composite<mat2x3<f32>>(b.Composite<vec3<f32>>(1_f, 2_f, 3_f),
+                                            b.Composite<vec3<f32>>(4_f, 5_f, 6_f)));
         b.Return(func);
     });
 
@@ -163,9 +162,8 @@
     // Enable f16?
     auto* func = b.Function("foo", ty.void_());
     b.Append(func->Block(), [&] {
-        b.Let("l", b.Composite(ty.mat2x3<f16>(),  //
-                               b.Composite(ty.vec3<f16>(), 1_h, 2_h, 3_h),
-                               b.Composite(ty.vec3<f16>(), 4_h, 5_h, 6_h)));
+        b.Let("l", b.Composite<mat2x3<f16>>(b.Composite<vec3<f16>>(1_h, 2_h, 3_h),
+                                            b.Composite<vec3<f16>>(4_h, 5_h, 6_h)));
         b.Return(func);
     });
 
@@ -180,7 +178,7 @@
 TEST_F(MslPrinterTest, LetArrF32) {
     auto* func = b.Function("foo", ty.void_());
     b.Append(func->Block(), [&] {
-        b.Let("l", b.Composite(ty.array<f32, 3>(), 1_f, 2_f, 3_f));
+        b.Let("l", b.Composite<array<f32, 3>>(1_f, 2_f, 3_f));
         b.Return(func);
     });
 
@@ -195,10 +193,9 @@
 TEST_F(MslPrinterTest, LetArrVec2Bool) {
     auto* func = b.Function("foo", ty.void_());
     b.Append(func->Block(), [&] {
-        b.Let("l", b.Composite(ty.array<vec2<bool>, 3>(),  //
-                               b.Composite(ty.vec2<bool>(), true, false),
-                               b.Composite(ty.vec2<bool>(), false, true),
-                               b.Composite(ty.vec2<bool>(), true, false)));
+        b.Let("l", b.Composite<array<vec2<bool>, 3>>(b.Composite<vec2<bool>>(true, false),
+                                                     b.Composite<vec2<bool>>(false, true),
+                                                     b.Composite<vec2<bool>>(true, false)));
         b.Return(func);
     });
 
diff --git a/src/tint/lang/msl/writer/printer/var_test.cc b/src/tint/lang/msl/writer/printer/var_test.cc
index 1bfdbdc..b91c2bd 100644
--- a/src/tint/lang/msl/writer/printer/var_test.cc
+++ b/src/tint/lang/msl/writer/printer/var_test.cc
@@ -217,7 +217,7 @@
     b.Append(func->Block(), [&] {
         auto* v = b.Var("a", ty.ptr<core::AddressSpace::kFunction, mat2x3<f32>>());
         v->SetInitializer(
-            b.Composite(ty.mat2x3<f32>(), b.Splat<vec3<f32>>(0_f), b.Splat<vec3<f32>>(0_f)));
+            b.Composite<mat2x3<f32>>(b.Splat<vec3<f32>>(0_f), b.Splat<vec3<f32>>(0_f)));
         b.Return(func);
     });
 
@@ -235,7 +235,7 @@
     b.Append(func->Block(), [&] {
         auto* v = b.Var("a", ty.ptr<core::AddressSpace::kFunction, mat2x3<f16>>());
         v->SetInitializer(
-            b.Composite(ty.mat2x3<f16>(), b.Splat<vec3<f16>>(0_h), b.Splat<vec3<f16>>(0_h)));
+            b.Composite<mat2x3<f16>>(b.Splat<vec3<f16>>(0_h), b.Splat<vec3<f16>>(0_h)));
         b.Return(func);
     });
 
diff --git a/src/tint/lang/spirv/writer/constant_test.cc b/src/tint/lang/spirv/writer/constant_test.cc
index 9f24475..a194261 100644
--- a/src/tint/lang/spirv/writer/constant_test.cc
+++ b/src/tint/lang/spirv/writer/constant_test.cc
@@ -86,7 +86,7 @@
 
 TEST_F(SpirvWriterTest, Constant_Vec4Bool) {
     b.Append(b.ir.root_block, [&] {
-        b.Var<private_, read_write>("v", b.Composite(ty.vec4<bool>(), true, false, false, true));
+        b.Var<private_, read_write>("v", b.Composite<vec4<bool>>(true, false, false, true));
     });
     ASSERT_TRUE(Generate()) << Error() << output_;
     EXPECT_INST(" = OpConstantComposite %v4bool %true %false %false %true");
@@ -94,14 +94,14 @@
 
 TEST_F(SpirvWriterTest, Constant_Vec2i) {
     b.Append(b.ir.root_block,
-             [&] { b.Var<private_, read_write>("v", b.Composite(ty.vec2<i32>(), 42_i, -1_i)); });
+             [&] { b.Var<private_, read_write>("v", b.Composite<vec2<i32>>(42_i, -1_i)); });
     ASSERT_TRUE(Generate()) << Error() << output_;
     EXPECT_INST(" = OpConstantComposite %v2int %int_42 %int_n1");
 }
 
 TEST_F(SpirvWriterTest, Constant_Vec3u) {
     b.Append(b.ir.root_block, [&] {
-        b.Var<private_, read_write>("v", b.Composite(ty.vec3<u32>(), 42_u, 0_u, 4000000000_u));
+        b.Var<private_, read_write>("v", b.Composite<vec3<u32>>(42_u, 0_u, 4000000000_u));
     });
     ASSERT_TRUE(Generate()) << Error() << output_;
     EXPECT_INST(" = OpConstantComposite %v3uint %uint_42 %uint_0 %uint_4000000000");
@@ -109,7 +109,7 @@
 
 TEST_F(SpirvWriterTest, Constant_Vec4f) {
     b.Append(b.ir.root_block, [&] {
-        b.Var<private_, read_write>("v", b.Composite(ty.vec4<f32>(), 42_f, 0_f, 0.25_f, -1_f));
+        b.Var<private_, read_write>("v", b.Composite<vec4<f32>>(42_f, 0_f, 0.25_f, -1_f));
     });
     ASSERT_TRUE(Generate()) << Error() << output_;
     EXPECT_INST(" = OpConstantComposite %v4float %float_42 %float_0 %float_0_25 %float_n1");
@@ -117,7 +117,7 @@
 
 TEST_F(SpirvWriterTest, Constant_Vec2h) {
     b.Append(b.ir.root_block,
-             [&] { b.Var<private_, read_write>("v", b.Composite(ty.vec2<f16>(), 42_h, 0.25_h)); });
+             [&] { b.Var<private_, read_write>("v", b.Composite<vec2<f16>>(42_h, 0.25_h)); });
     ASSERT_TRUE(Generate()) << Error() << output_;
     EXPECT_INST(" = OpConstantComposite %v2half %half_0x1_5p_5 %half_0x1pn2");
 }
@@ -125,9 +125,9 @@
 TEST_F(SpirvWriterTest, Constant_Mat2x3f) {
     b.Append(b.ir.root_block, [&] {
         b.Var<private_, read_write>("v",
-                                    b.Composite(ty.mat2x3<f32>(),  //
-                                                b.Composite(ty.vec3<f32>(), 42_f, -1_f, 0.25_f),
-                                                b.Composite(ty.vec3<f32>(), -42_f, 0_f, -0.25_f)));
+                                    b.Composite<mat2x3<f32>>(  //
+                                        b.Composite<vec3<f32>>(42_f, -1_f, 0.25_f),
+                                        b.Composite<vec3<f32>>(-42_f, 0_f, -0.25_f)));
     });
     ASSERT_TRUE(Generate()) << Error() << output_;
     EXPECT_INST(R"(
@@ -145,11 +145,11 @@
 
 TEST_F(SpirvWriterTest, Constant_Mat4x2h) {
     b.Append(b.ir.root_block, [&] {
-        b.Var<private_, read_write>("v", b.Composite(ty.mat4x2<f16>(),                          //
-                                                     b.Composite(ty.vec2<f16>(), 42_h, -1_h),   //
-                                                     b.Composite(ty.vec2<f16>(), 0_h, 0.25_h),  //
-                                                     b.Composite(ty.vec2<f16>(), -42_h, 1_h),   //
-                                                     b.Composite(ty.vec2<f16>(), 0.5_h, f16(-0))));
+        b.Var<private_, read_write>("v", b.Composite<mat4x2<f16>>(                 //
+                                             b.Composite<vec2<f16>>(42_h, -1_h),   //
+                                             b.Composite<vec2<f16>>(0_h, 0.25_h),  //
+                                             b.Composite<vec2<f16>>(-42_h, 1_h),   //
+                                             b.Composite<vec2<f16>>(0.5_h, f16(-0))));
     });
     ASSERT_TRUE(Generate()) << Error() << output_;
     EXPECT_INST(R"(
@@ -170,7 +170,7 @@
 
 TEST_F(SpirvWriterTest, Constant_Array_I32) {
     b.Append(b.ir.root_block, [&] {
-        b.Var<private_, read_write>("v", b.Composite(ty.array<i32, 4>(), 1_i, 2_i, 3_i, 4_i));
+        b.Var<private_, read_write>("v", b.Composite<array<i32, 4>>(1_i, 2_i, 3_i, 4_i));
     });
     ASSERT_TRUE(Generate()) << Error() << output_;
     EXPECT_INST(" = OpConstantComposite %_arr_int_uint_4 %int_1 %int_2 %int_3 %int_4");
@@ -178,9 +178,9 @@
 
 TEST_F(SpirvWriterTest, Constant_Array_Array_I32) {
     b.Append(b.ir.root_block, [&] {
-        auto* inner = b.Composite(ty.array<i32, 4>(), 1_i, 2_i, 3_i, 4_i);
+        auto* inner = b.Composite<array<i32, 4>>(1_i, 2_i, 3_i, 4_i);
         b.Var<private_, read_write>(
-            "v", b.Composite(ty.array(ty.array<i32, 4>(), 4), inner, inner, inner, inner));
+            "v", b.Composite<array<array<i32, 4>, 4>>(inner, inner, inner, inner));
     });
     ASSERT_TRUE(Generate()) << Error() << output_;
     EXPECT_INST(R"(