ast/types tests: Replace std::make_unique<T> -> create<T>

create() is currently just a simple forwarder to std::make_unique<>, but
will be later replaced with a function that returns a raw pointer,
and owned by the context.

Bug: tint:322
Change-Id: I39e7d1c9a1c64608d41dfd032c419e06d147e064
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/32666
Commit-Queue: Ben Clayton <bclayton@google.com>
Reviewed-by: dan sinclair <dsinclair@chromium.org>
diff --git a/src/ast/type/access_control_type_test.cc b/src/ast/type/access_control_type_test.cc
index 1f52fb5..11a2ae9 100644
--- a/src/ast/type/access_control_type_test.cc
+++ b/src/ast/type/access_control_type_test.cc
@@ -102,7 +102,7 @@
   U32Type u32;
   ArrayType array(&u32, 4);
   ArrayDecorationList decos;
-  decos.push_back(std::make_unique<StrideDecoration>(4, Source{}));
+  decos.push_back(create<StrideDecoration>(4, Source{}));
   array.set_decorations(std::move(decos));
   AccessControlType at{AccessControl::kReadOnly, &array};
   EXPECT_EQ(16u, at.MinBufferBindingSize(MemoryLayout::kUniformBuffer));
@@ -112,7 +112,7 @@
   U32Type u32;
   ArrayType array(&u32);
   ArrayDecorationList decos;
-  decos.push_back(std::make_unique<StrideDecoration>(4, Source{}));
+  decos.push_back(create<StrideDecoration>(4, Source{}));
   array.set_decorations(std::move(decos));
   AccessControlType at{AccessControl::kReadOnly, &array};
   EXPECT_EQ(4u, at.MinBufferBindingSize(MemoryLayout::kUniformBuffer));
@@ -123,19 +123,16 @@
   StructMemberList members;
 
   StructMemberDecorationList deco;
-  deco.push_back(std::make_unique<StructMemberOffsetDecoration>(0, Source{}));
-  members.push_back(
-      std::make_unique<StructMember>("foo", &u32, std::move(deco)));
+  deco.push_back(create<StructMemberOffsetDecoration>(0, Source{}));
+  members.push_back(create<StructMember>("foo", &u32, std::move(deco)));
 
   deco = StructMemberDecorationList();
-  deco.push_back(std::make_unique<StructMemberOffsetDecoration>(4, Source{}));
-  members.push_back(
-      std::make_unique<StructMember>("bar", &u32, std::move(deco)));
+  deco.push_back(create<StructMemberOffsetDecoration>(4, Source{}));
+  members.push_back(create<StructMember>("bar", &u32, std::move(deco)));
 
   ast::StructDecorationList decos;
 
-  auto str =
-      std::make_unique<ast::Struct>(std::move(decos), std::move(members));
+  auto str = create<ast::Struct>(std::move(decos), std::move(members));
   StructType struct_type("struct_type", std::move(str));
   AccessControlType at{AccessControl::kReadOnly, &struct_type};
   EXPECT_EQ(16u, at.MinBufferBindingSize(MemoryLayout::kUniformBuffer));
@@ -152,7 +149,7 @@
   U32Type u32;
   ArrayType array(&u32, 4);
   ArrayDecorationList decos;
-  decos.push_back(std::make_unique<StrideDecoration>(4, Source{}));
+  decos.push_back(create<StrideDecoration>(4, Source{}));
   array.set_decorations(std::move(decos));
   AccessControlType at{AccessControl::kReadOnly, &array};
   EXPECT_EQ(16u, at.BaseAlignment(MemoryLayout::kUniformBuffer));
@@ -162,7 +159,7 @@
   U32Type u32;
   ArrayType array(&u32);
   ArrayDecorationList decos;
-  decos.push_back(std::make_unique<StrideDecoration>(4, Source{}));
+  decos.push_back(create<StrideDecoration>(4, Source{}));
   array.set_decorations(std::move(decos));
   AccessControlType at{AccessControl::kReadOnly, &array};
   EXPECT_EQ(16u, at.BaseAlignment(MemoryLayout::kUniformBuffer));
@@ -174,20 +171,17 @@
 
   {
     StructMemberDecorationList deco;
-    deco.push_back(std::make_unique<StructMemberOffsetDecoration>(0, Source{}));
-    members.push_back(
-        std::make_unique<StructMember>("foo", &u32, std::move(deco)));
+    deco.push_back(create<StructMemberOffsetDecoration>(0, Source{}));
+    members.push_back(create<StructMember>("foo", &u32, std::move(deco)));
   }
   {
     StructMemberDecorationList deco;
-    deco.push_back(std::make_unique<StructMemberOffsetDecoration>(4, Source{}));
-    members.push_back(
-        std::make_unique<StructMember>("bar", &u32, std::move(deco)));
+    deco.push_back(create<StructMemberOffsetDecoration>(4, Source{}));
+    members.push_back(create<StructMember>("bar", &u32, std::move(deco)));
   }
   ast::StructDecorationList decos;
 
-  auto str =
-      std::make_unique<ast::Struct>(std::move(decos), std::move(members));
+  auto str = create<ast::Struct>(std::move(decos), std::move(members));
   StructType struct_type("struct_type", std::move(str));
   AccessControlType at{AccessControl::kReadOnly, &struct_type};
   EXPECT_EQ(16u, at.BaseAlignment(MemoryLayout::kUniformBuffer));
diff --git a/src/ast/type/alias_type_test.cc b/src/ast/type/alias_type_test.cc
index 348728b..e0ff50b 100644
--- a/src/ast/type/alias_type_test.cc
+++ b/src/ast/type/alias_type_test.cc
@@ -165,7 +165,7 @@
   U32Type u32;
   ArrayType array(&u32, 4);
   ArrayDecorationList decos;
-  decos.push_back(std::make_unique<StrideDecoration>(4, Source{}));
+  decos.push_back(create<StrideDecoration>(4, Source{}));
   array.set_decorations(std::move(decos));
   AliasType alias{"alias", &array};
   EXPECT_EQ(16u, alias.MinBufferBindingSize(MemoryLayout::kUniformBuffer));
@@ -175,7 +175,7 @@
   U32Type u32;
   ArrayType array(&u32);
   ArrayDecorationList decos;
-  decos.push_back(std::make_unique<StrideDecoration>(4, Source{}));
+  decos.push_back(create<StrideDecoration>(4, Source{}));
   array.set_decorations(std::move(decos));
   AliasType alias{"alias", &array};
   EXPECT_EQ(4u, alias.MinBufferBindingSize(MemoryLayout::kUniformBuffer));
@@ -187,20 +187,17 @@
 
   {
     StructMemberDecorationList deco;
-    deco.push_back(std::make_unique<StructMemberOffsetDecoration>(0, Source{}));
-    members.push_back(
-        std::make_unique<StructMember>("foo", &u32, std::move(deco)));
+    deco.push_back(create<StructMemberOffsetDecoration>(0, Source{}));
+    members.push_back(create<StructMember>("foo", &u32, std::move(deco)));
   }
   {
     StructMemberDecorationList deco;
-    deco.push_back(std::make_unique<StructMemberOffsetDecoration>(4, Source{}));
-    members.push_back(
-        std::make_unique<StructMember>("bar", &u32, std::move(deco)));
+    deco.push_back(create<StructMemberOffsetDecoration>(4, Source{}));
+    members.push_back(create<StructMember>("bar", &u32, std::move(deco)));
   }
   ast::StructDecorationList decos;
 
-  auto str =
-      std::make_unique<ast::Struct>(std::move(decos), std::move(members));
+  auto str = create<ast::Struct>(std::move(decos), std::move(members));
   StructType struct_type("struct_type", std::move(str));
   AliasType alias{"alias", &struct_type};
   EXPECT_EQ(16u, alias.MinBufferBindingSize(MemoryLayout::kUniformBuffer));
@@ -217,7 +214,7 @@
   U32Type u32;
   ArrayType array(&u32, 4);
   ArrayDecorationList decos;
-  decos.push_back(std::make_unique<StrideDecoration>(4, Source{}));
+  decos.push_back(create<StrideDecoration>(4, Source{}));
   array.set_decorations(std::move(decos));
   AliasType alias{"alias", &array};
   EXPECT_EQ(16u, alias.BaseAlignment(MemoryLayout::kUniformBuffer));
@@ -227,7 +224,7 @@
   U32Type u32;
   ArrayType array(&u32);
   ArrayDecorationList decos;
-  decos.push_back(std::make_unique<StrideDecoration>(4, Source{}));
+  decos.push_back(create<StrideDecoration>(4, Source{}));
   array.set_decorations(std::move(decos));
   AliasType alias{"alias", &array};
   EXPECT_EQ(16u, alias.BaseAlignment(MemoryLayout::kUniformBuffer));
@@ -239,20 +236,17 @@
 
   {
     StructMemberDecorationList deco;
-    deco.push_back(std::make_unique<StructMemberOffsetDecoration>(0, Source{}));
-    members.push_back(
-        std::make_unique<StructMember>("foo", &u32, std::move(deco)));
+    deco.push_back(create<StructMemberOffsetDecoration>(0, Source{}));
+    members.push_back(create<StructMember>("foo", &u32, std::move(deco)));
   }
   {
     StructMemberDecorationList deco;
-    deco.push_back(std::make_unique<StructMemberOffsetDecoration>(4, Source{}));
-    members.push_back(
-        std::make_unique<StructMember>("bar", &u32, std::move(deco)));
+    deco.push_back(create<StructMemberOffsetDecoration>(4, Source{}));
+    members.push_back(create<StructMember>("bar", &u32, std::move(deco)));
   }
   ast::StructDecorationList decos;
 
-  auto str =
-      std::make_unique<ast::Struct>(std::move(decos), std::move(members));
+  auto str = create<ast::Struct>(std::move(decos), std::move(members));
   StructType struct_type("struct_type", std::move(str));
   AliasType alias{"alias", &struct_type};
   EXPECT_EQ(16u, alias.BaseAlignment(MemoryLayout::kUniformBuffer));
diff --git a/src/ast/type/array_type_test.cc b/src/ast/type/array_type_test.cc
index 958bf41..a0f745c 100644
--- a/src/ast/type/array_type_test.cc
+++ b/src/ast/type/array_type_test.cc
@@ -81,7 +81,7 @@
 TEST_F(ArrayTypeTest, TypeName_WithStride) {
   I32Type i32;
   ArrayDecorationList decos;
-  decos.push_back(std::make_unique<StrideDecoration>(16, Source{}));
+  decos.push_back(create<StrideDecoration>(16, Source{}));
 
   ArrayType arr{&i32, 3};
   arr.set_decorations(std::move(decos));
@@ -97,7 +97,7 @@
 TEST_F(ArrayTypeTest, MinBufferBindingSizeArray) {
   U32Type u32;
   ArrayDecorationList decos;
-  decos.push_back(std::make_unique<StrideDecoration>(4, Source{}));
+  decos.push_back(create<StrideDecoration>(4, Source{}));
 
   ArrayType arr(&u32, 4);
   arr.set_decorations(std::move(decos));
@@ -107,7 +107,7 @@
 TEST_F(ArrayTypeTest, MinBufferBindingSizeRuntimeArray) {
   U32Type u32;
   ArrayDecorationList decos;
-  decos.push_back(std::make_unique<StrideDecoration>(4, Source{}));
+  decos.push_back(create<StrideDecoration>(4, Source{}));
 
   ArrayType arr(&u32);
   arr.set_decorations(std::move(decos));
@@ -117,7 +117,7 @@
 TEST_F(ArrayTypeTest, BaseAlignmentArray) {
   U32Type u32;
   ArrayDecorationList decos;
-  decos.push_back(std::make_unique<StrideDecoration>(4, Source{}));
+  decos.push_back(create<StrideDecoration>(4, Source{}));
 
   ArrayType arr(&u32, 4);
   arr.set_decorations(std::move(decos));
@@ -128,7 +128,7 @@
 TEST_F(ArrayTypeTest, BaseAlignmentRuntimeArray) {
   U32Type u32;
   ArrayDecorationList decos;
-  decos.push_back(std::make_unique<StrideDecoration>(4, Source{}));
+  decos.push_back(create<StrideDecoration>(4, Source{}));
 
   ArrayType arr(&u32);
   arr.set_decorations(std::move(decos));
diff --git a/src/ast/type/struct_type_test.cc b/src/ast/type/struct_type_test.cc
index 9189bf4..adbc30c 100644
--- a/src/ast/type/struct_type_test.cc
+++ b/src/ast/type/struct_type_test.cc
@@ -34,14 +34,14 @@
 using StructTypeTest = TestHelper;
 
 TEST_F(StructTypeTest, Creation) {
-  auto impl = std::make_unique<Struct>();
+  auto impl = create<Struct>();
   auto* ptr = impl.get();
   StructType s{"S", std::move(impl)};
   EXPECT_EQ(s.impl(), ptr);
 }
 
 TEST_F(StructTypeTest, Is) {
-  auto impl = std::make_unique<Struct>();
+  auto impl = create<Struct>();
   StructType s{"S", std::move(impl)};
   EXPECT_FALSE(s.IsAccessControl());
   EXPECT_FALSE(s.IsAlias());
@@ -59,7 +59,7 @@
 }
 
 TEST_F(StructTypeTest, TypeName) {
-  auto impl = std::make_unique<Struct>();
+  auto impl = create<Struct>();
   StructType s{"my_struct", std::move(impl)};
   EXPECT_EQ(s.type_name(), "__struct_my_struct");
 }
@@ -70,20 +70,17 @@
 
   {
     StructMemberDecorationList deco;
-    deco.push_back(std::make_unique<StructMemberOffsetDecoration>(0, Source{}));
-    members.push_back(
-        std::make_unique<StructMember>("foo", &u32, std::move(deco)));
+    deco.push_back(create<StructMemberOffsetDecoration>(0, Source{}));
+    members.push_back(create<StructMember>("foo", &u32, std::move(deco)));
   }
   {
     StructMemberDecorationList deco;
-    deco.push_back(std::make_unique<StructMemberOffsetDecoration>(4, Source{}));
-    members.push_back(
-        std::make_unique<StructMember>("bar", &u32, std::move(deco)));
+    deco.push_back(create<StructMemberOffsetDecoration>(4, Source{}));
+    members.push_back(create<StructMember>("bar", &u32, std::move(deco)));
   }
   ast::StructDecorationList decos;
 
-  auto str =
-      std::make_unique<ast::Struct>(std::move(decos), std::move(members));
+  auto str = create<ast::Struct>(std::move(decos), std::move(members));
   StructType struct_type("struct_type", std::move(str));
   EXPECT_EQ(16u,
             struct_type.MinBufferBindingSize(MemoryLayout::kUniformBuffer));
@@ -95,33 +92,29 @@
   ArrayType arr(&u32, 4);
   {
     ArrayDecorationList decos;
-    decos.push_back(std::make_unique<StrideDecoration>(4, Source{}));
+    decos.push_back(create<StrideDecoration>(4, Source{}));
     arr.set_decorations(std::move(decos));
   }
 
   StructMemberList members;
   {
     StructMemberDecorationList deco;
-    deco.push_back(std::make_unique<StructMemberOffsetDecoration>(0, Source{}));
-    members.push_back(
-        std::make_unique<StructMember>("foo", &u32, std::move(deco)));
+    deco.push_back(create<StructMemberOffsetDecoration>(0, Source{}));
+    members.push_back(create<StructMember>("foo", &u32, std::move(deco)));
   }
   {
     StructMemberDecorationList deco;
-    deco.push_back(std::make_unique<StructMemberOffsetDecoration>(4, Source{}));
-    members.push_back(
-        std::make_unique<StructMember>("bar", &u32, std::move(deco)));
+    deco.push_back(create<StructMemberOffsetDecoration>(4, Source{}));
+    members.push_back(create<StructMember>("bar", &u32, std::move(deco)));
   }
   {
     StructMemberDecorationList deco;
-    deco.push_back(std::make_unique<StructMemberOffsetDecoration>(8, Source{}));
-    members.push_back(
-        std::make_unique<StructMember>("bar", &arr, std::move(deco)));
+    deco.push_back(create<StructMemberOffsetDecoration>(8, Source{}));
+    members.push_back(create<StructMember>("bar", &arr, std::move(deco)));
   }
   ast::StructDecorationList decos;
 
-  auto str =
-      std::make_unique<ast::Struct>(std::move(decos), std::move(members));
+  auto str = create<ast::Struct>(std::move(decos), std::move(members));
   StructType struct_type("struct_type", std::move(str));
   EXPECT_EQ(32u,
             struct_type.MinBufferBindingSize(MemoryLayout::kUniformBuffer));
@@ -134,33 +127,29 @@
   ArrayType arr(&u32);
   {
     ArrayDecorationList decos;
-    decos.push_back(std::make_unique<StrideDecoration>(4, Source{}));
+    decos.push_back(create<StrideDecoration>(4, Source{}));
     arr.set_decorations(std::move(decos));
   }
 
   StructMemberList members;
   {
     StructMemberDecorationList deco;
-    deco.push_back(std::make_unique<StructMemberOffsetDecoration>(0, Source{}));
-    members.push_back(
-        std::make_unique<StructMember>("foo", &u32, std::move(deco)));
+    deco.push_back(create<StructMemberOffsetDecoration>(0, Source{}));
+    members.push_back(create<StructMember>("foo", &u32, std::move(deco)));
   }
   {
     StructMemberDecorationList deco;
-    deco.push_back(std::make_unique<StructMemberOffsetDecoration>(4, Source{}));
-    members.push_back(
-        std::make_unique<StructMember>("bar", &u32, std::move(deco)));
+    deco.push_back(create<StructMemberOffsetDecoration>(4, Source{}));
+    members.push_back(create<StructMember>("bar", &u32, std::move(deco)));
   }
   {
     StructMemberDecorationList deco;
-    deco.push_back(std::make_unique<StructMemberOffsetDecoration>(8, Source{}));
-    members.push_back(
-        std::make_unique<StructMember>("bar", &u32, std::move(deco)));
+    deco.push_back(create<StructMemberOffsetDecoration>(8, Source{}));
+    members.push_back(create<StructMember>("bar", &u32, std::move(deco)));
   }
   ast::StructDecorationList decos;
 
-  auto str =
-      std::make_unique<ast::Struct>(std::move(decos), std::move(members));
+  auto str = create<ast::Struct>(std::move(decos), std::move(members));
   StructType struct_type("struct_type", std::move(str));
   EXPECT_EQ(12u,
             struct_type.MinBufferBindingSize(MemoryLayout::kStorageBuffer));
@@ -173,14 +162,12 @@
   StructMemberList members;
   {
     StructMemberDecorationList deco;
-    deco.push_back(std::make_unique<StructMemberOffsetDecoration>(0, Source{}));
-    members.push_back(
-        std::make_unique<StructMember>("foo", &vec2, std::move(deco)));
+    deco.push_back(create<StructMemberOffsetDecoration>(0, Source{}));
+    members.push_back(create<StructMember>("foo", &vec2, std::move(deco)));
   }
   ast::StructDecorationList decos;
 
-  auto str =
-      std::make_unique<ast::Struct>(std::move(decos), std::move(members));
+  auto str = create<ast::Struct>(std::move(decos), std::move(members));
   StructType struct_type("struct_type", std::move(str));
   EXPECT_EQ(16u,
             struct_type.MinBufferBindingSize(MemoryLayout::kUniformBuffer));
@@ -194,14 +181,12 @@
   StructMemberList members;
   {
     StructMemberDecorationList deco;
-    deco.push_back(std::make_unique<StructMemberOffsetDecoration>(0, Source{}));
-    members.push_back(
-        std::make_unique<StructMember>("foo", &vec3, std::move(deco)));
+    deco.push_back(create<StructMemberOffsetDecoration>(0, Source{}));
+    members.push_back(create<StructMember>("foo", &vec3, std::move(deco)));
   }
   ast::StructDecorationList decos;
 
-  auto str =
-      std::make_unique<ast::Struct>(std::move(decos), std::move(members));
+  auto str = create<ast::Struct>(std::move(decos), std::move(members));
   StructType struct_type("struct_type", std::move(str));
   EXPECT_EQ(16u,
             struct_type.MinBufferBindingSize(MemoryLayout::kUniformBuffer));
@@ -216,14 +201,12 @@
   StructMemberList members;
   {
     StructMemberDecorationList deco;
-    deco.push_back(std::make_unique<StructMemberOffsetDecoration>(0, Source{}));
-    members.push_back(
-        std::make_unique<StructMember>("foo", &vec4, std::move(deco)));
+    deco.push_back(create<StructMemberOffsetDecoration>(0, Source{}));
+    members.push_back(create<StructMember>("foo", &vec4, std::move(deco)));
   }
   ast::StructDecorationList decos;
 
-  auto str =
-      std::make_unique<ast::Struct>(std::move(decos), std::move(members));
+  auto str = create<ast::Struct>(std::move(decos), std::move(members));
   StructType struct_type("struct_type", std::move(str));
   EXPECT_EQ(16u,
             struct_type.MinBufferBindingSize(MemoryLayout::kUniformBuffer));
@@ -237,20 +220,17 @@
 
   {
     StructMemberDecorationList deco;
-    deco.push_back(std::make_unique<StructMemberOffsetDecoration>(0, Source{}));
-    members.push_back(
-        std::make_unique<StructMember>("foo", &u32, std::move(deco)));
+    deco.push_back(create<StructMemberOffsetDecoration>(0, Source{}));
+    members.push_back(create<StructMember>("foo", &u32, std::move(deco)));
   }
   {
     StructMemberDecorationList deco;
-    deco.push_back(std::make_unique<StructMemberOffsetDecoration>(4, Source{}));
-    members.push_back(
-        std::make_unique<StructMember>("bar", &u32, std::move(deco)));
+    deco.push_back(create<StructMemberOffsetDecoration>(4, Source{}));
+    members.push_back(create<StructMember>("bar", &u32, std::move(deco)));
   }
   ast::StructDecorationList decos;
 
-  auto str =
-      std::make_unique<ast::Struct>(std::move(decos), std::move(members));
+  auto str = create<ast::Struct>(std::move(decos), std::move(members));
   StructType struct_type("struct_type", std::move(str));
   EXPECT_EQ(16u, struct_type.BaseAlignment(MemoryLayout::kUniformBuffer));
   EXPECT_EQ(4u, struct_type.BaseAlignment(MemoryLayout::kStorageBuffer));
@@ -261,33 +241,29 @@
   ArrayType arr(&u32, 4);
   {
     ArrayDecorationList decos;
-    decos.push_back(std::make_unique<StrideDecoration>(4, Source{}));
+    decos.push_back(create<StrideDecoration>(4, Source{}));
     arr.set_decorations(std::move(decos));
   }
 
   StructMemberList members;
   {
     StructMemberDecorationList deco;
-    deco.push_back(std::make_unique<StructMemberOffsetDecoration>(0, Source{}));
-    members.push_back(
-        std::make_unique<StructMember>("foo", &u32, std::move(deco)));
+    deco.push_back(create<StructMemberOffsetDecoration>(0, Source{}));
+    members.push_back(create<StructMember>("foo", &u32, std::move(deco)));
   }
   {
     StructMemberDecorationList deco;
-    deco.push_back(std::make_unique<StructMemberOffsetDecoration>(4, Source{}));
-    members.push_back(
-        std::make_unique<StructMember>("bar", &u32, std::move(deco)));
+    deco.push_back(create<StructMemberOffsetDecoration>(4, Source{}));
+    members.push_back(create<StructMember>("bar", &u32, std::move(deco)));
   }
   {
     StructMemberDecorationList deco;
-    deco.push_back(std::make_unique<StructMemberOffsetDecoration>(8, Source{}));
-    members.push_back(
-        std::make_unique<StructMember>("bar", &arr, std::move(deco)));
+    deco.push_back(create<StructMemberOffsetDecoration>(8, Source{}));
+    members.push_back(create<StructMember>("bar", &arr, std::move(deco)));
   }
   ast::StructDecorationList decos;
 
-  auto str =
-      std::make_unique<ast::Struct>(std::move(decos), std::move(members));
+  auto str = create<ast::Struct>(std::move(decos), std::move(members));
   StructType struct_type("struct_type", std::move(str));
   EXPECT_EQ(16u, struct_type.BaseAlignment(MemoryLayout::kUniformBuffer));
   EXPECT_EQ(4u, struct_type.BaseAlignment(MemoryLayout::kStorageBuffer));
@@ -298,33 +274,29 @@
   ArrayType arr(&u32);
   {
     ArrayDecorationList decos;
-    decos.push_back(std::make_unique<StrideDecoration>(4, Source{}));
+    decos.push_back(create<StrideDecoration>(4, Source{}));
     arr.set_decorations(std::move(decos));
   }
 
   StructMemberList members;
   {
     StructMemberDecorationList deco;
-    deco.push_back(std::make_unique<StructMemberOffsetDecoration>(0, Source{}));
-    members.push_back(
-        std::make_unique<StructMember>("foo", &u32, std::move(deco)));
+    deco.push_back(create<StructMemberOffsetDecoration>(0, Source{}));
+    members.push_back(create<StructMember>("foo", &u32, std::move(deco)));
   }
   {
     StructMemberDecorationList deco;
-    deco.push_back(std::make_unique<StructMemberOffsetDecoration>(4, Source{}));
-    members.push_back(
-        std::make_unique<StructMember>("bar", &u32, std::move(deco)));
+    deco.push_back(create<StructMemberOffsetDecoration>(4, Source{}));
+    members.push_back(create<StructMember>("bar", &u32, std::move(deco)));
   }
   {
     StructMemberDecorationList deco;
-    deco.push_back(std::make_unique<StructMemberOffsetDecoration>(8, Source{}));
-    members.push_back(
-        std::make_unique<StructMember>("bar", &u32, std::move(deco)));
+    deco.push_back(create<StructMemberOffsetDecoration>(8, Source{}));
+    members.push_back(create<StructMember>("bar", &u32, std::move(deco)));
   }
   ast::StructDecorationList decos;
 
-  auto str =
-      std::make_unique<ast::Struct>(std::move(decos), std::move(members));
+  auto str = create<ast::Struct>(std::move(decos), std::move(members));
   StructType struct_type("struct_type", std::move(str));
   EXPECT_EQ(4u, struct_type.BaseAlignment(MemoryLayout::kStorageBuffer));
 }
@@ -336,14 +308,12 @@
   StructMemberList members;
   {
     StructMemberDecorationList deco;
-    deco.push_back(std::make_unique<StructMemberOffsetDecoration>(0, Source{}));
-    members.push_back(
-        std::make_unique<StructMember>("foo", &vec2, std::move(deco)));
+    deco.push_back(create<StructMemberOffsetDecoration>(0, Source{}));
+    members.push_back(create<StructMember>("foo", &vec2, std::move(deco)));
   }
   ast::StructDecorationList decos;
 
-  auto str =
-      std::make_unique<ast::Struct>(std::move(decos), std::move(members));
+  auto str = create<ast::Struct>(std::move(decos), std::move(members));
   StructType struct_type("struct_type", std::move(str));
   EXPECT_EQ(16u, struct_type.BaseAlignment(MemoryLayout::kUniformBuffer));
   EXPECT_EQ(8u, struct_type.BaseAlignment(MemoryLayout::kStorageBuffer));
@@ -356,14 +326,12 @@
   StructMemberList members;
   {
     StructMemberDecorationList deco;
-    deco.push_back(std::make_unique<StructMemberOffsetDecoration>(0, Source{}));
-    members.push_back(
-        std::make_unique<StructMember>("foo", &vec3, std::move(deco)));
+    deco.push_back(create<StructMemberOffsetDecoration>(0, Source{}));
+    members.push_back(create<StructMember>("foo", &vec3, std::move(deco)));
   }
   ast::StructDecorationList decos;
 
-  auto str =
-      std::make_unique<ast::Struct>(std::move(decos), std::move(members));
+  auto str = create<ast::Struct>(std::move(decos), std::move(members));
   StructType struct_type("struct_type", std::move(str));
   EXPECT_EQ(16u, struct_type.BaseAlignment(MemoryLayout::kUniformBuffer));
   EXPECT_EQ(16u, struct_type.BaseAlignment(MemoryLayout::kStorageBuffer));
@@ -376,14 +344,12 @@
   StructMemberList members;
   {
     StructMemberDecorationList deco;
-    deco.push_back(std::make_unique<StructMemberOffsetDecoration>(0, Source{}));
-    members.push_back(
-        std::make_unique<StructMember>("foo", &vec4, std::move(deco)));
+    deco.push_back(create<StructMemberOffsetDecoration>(0, Source{}));
+    members.push_back(create<StructMember>("foo", &vec4, std::move(deco)));
   }
   ast::StructDecorationList decos;
 
-  auto str =
-      std::make_unique<ast::Struct>(std::move(decos), std::move(members));
+  auto str = create<ast::Struct>(std::move(decos), std::move(members));
   StructType struct_type("struct_type", std::move(str));
   EXPECT_EQ(16u, struct_type.BaseAlignment(MemoryLayout::kUniformBuffer));
   EXPECT_EQ(16u, struct_type.BaseAlignment(MemoryLayout::kStorageBuffer));