transform 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: I630ce57017fe84b5d00e9bd74902f47547a13f3a
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/32669
Commit-Queue: Ben Clayton <bclayton@google.com>
Reviewed-by: dan sinclair <dsinclair@chromium.org>
diff --git a/src/transform/bound_array_accessors_transform_test.cc b/src/transform/bound_array_accessors_transform_test.cc
index cf013a7..e165ef0 100644
--- a/src/transform/bound_array_accessors_transform_test.cc
+++ b/src/transform/bound_array_accessors_transform_test.cc
@@ -52,9 +52,8 @@
BoundArrayAccessorsTest() : td_(&ctx_, &mod_), transform_(&ctx_, &mod_) {}
ast::BlockStatement* SetupFunctionAndBody() {
- auto func = std::make_unique<ast::Function>("func", ast::VariableList{},
- &void_type_);
- auto block = std::make_unique<ast::BlockStatement>();
+ auto func = create<ast::Function>("func", ast::VariableList{}, &void_type_);
+ auto block = create<ast::BlockStatement>();
body_ = block.get();
func->set_body(std::move(block));
mod_.AddFunction(std::move(func));
@@ -63,13 +62,20 @@
void DeclareVariable(std::unique_ptr<ast::Variable> var) {
ASSERT_NE(body_, nullptr);
- body_->append(std::make_unique<ast::VariableDeclStatement>(std::move(var)));
+ body_->append(create<ast::VariableDeclStatement>(std::move(var)));
}
TypeDeterminer* td() { return &td_; }
BoundArrayAccessorsTransform* transform() { return &transform_; }
+ /// @return a `std::unique_ptr` to a new `T` constructed with `args`
+ /// @param args the arguments to forward to the constructor for `T`
+ template <typename T, typename... ARGS>
+ std::unique_ptr<T> create(ARGS&&... args) {
+ return std::make_unique<T>(std::forward<ARGS>(args)...);
+ }
+
private:
Context ctx_;
ast::Module mod_;
@@ -93,22 +99,20 @@
SetupFunctionAndBody();
DeclareVariable(
- std::make_unique<ast::Variable>("a", ast::StorageClass::kFunction, &ary));
+ create<ast::Variable>("a", ast::StorageClass::kFunction, &ary));
- auto c_var =
- std::make_unique<ast::Variable>("c", ast::StorageClass::kFunction, &u32);
+ auto c_var = create<ast::Variable>("c", ast::StorageClass::kFunction, &u32);
c_var->set_is_const(true);
DeclareVariable(std::move(c_var));
- auto access_idx = std::make_unique<ast::IdentifierExpression>("c");
+ auto access_idx = create<ast::IdentifierExpression>("c");
auto* access_ptr = access_idx.get();
- auto accessor = std::make_unique<ast::ArrayAccessorExpression>(
- std::make_unique<ast::IdentifierExpression>("a"), std::move(access_idx));
+ auto accessor = create<ast::ArrayAccessorExpression>(
+ create<ast::IdentifierExpression>("a"), std::move(access_idx));
auto* ptr = accessor.get();
- auto b = std::make_unique<ast::Variable>("b", ast::StorageClass::kFunction,
- &ptr_type);
+ auto b = create<ast::Variable>("b", ast::StorageClass::kFunction, &ptr_type);
b->set_constructor(std::move(accessor));
b->set_is_const(true);
DeclareVariable(std::move(b));
@@ -156,27 +160,24 @@
ast::type::ArrayType ary5(&f32, 5);
SetupFunctionAndBody();
- DeclareVariable(std::make_unique<ast::Variable>(
- "a", ast::StorageClass::kFunction, &ary3));
- DeclareVariable(std::make_unique<ast::Variable>(
- "b", ast::StorageClass::kFunction, &ary5));
DeclareVariable(
- std::make_unique<ast::Variable>("i", ast::StorageClass::kFunction, &u32));
+ create<ast::Variable>("a", ast::StorageClass::kFunction, &ary3));
+ DeclareVariable(
+ create<ast::Variable>("b", ast::StorageClass::kFunction, &ary5));
+ DeclareVariable(
+ create<ast::Variable>("i", ast::StorageClass::kFunction, &u32));
- auto b_access_idx = std::make_unique<ast::IdentifierExpression>("i");
+ auto b_access_idx = create<ast::IdentifierExpression>("i");
auto* b_access_ptr = b_access_idx.get();
- auto a_access_idx = std::make_unique<ast::ArrayAccessorExpression>(
- std::make_unique<ast::IdentifierExpression>("b"),
- std::move(b_access_idx));
+ auto a_access_idx = create<ast::ArrayAccessorExpression>(
+ create<ast::IdentifierExpression>("b"), std::move(b_access_idx));
- auto accessor = std::make_unique<ast::ArrayAccessorExpression>(
- std::make_unique<ast::IdentifierExpression>("a"),
- std::move(a_access_idx));
+ auto accessor = create<ast::ArrayAccessorExpression>(
+ create<ast::IdentifierExpression>("a"), std::move(a_access_idx));
auto* ptr = accessor.get();
- auto b =
- std::make_unique<ast::Variable>("c", ast::StorageClass::kFunction, &f32);
+ auto b = create<ast::Variable>("c", ast::StorageClass::kFunction, &f32);
b->set_constructor(std::move(accessor));
DeclareVariable(std::move(b));
@@ -241,16 +242,15 @@
SetupFunctionAndBody();
DeclareVariable(
- std::make_unique<ast::Variable>("a", ast::StorageClass::kFunction, &ary));
+ create<ast::Variable>("a", ast::StorageClass::kFunction, &ary));
- auto accessor = std::make_unique<ast::ArrayAccessorExpression>(
- std::make_unique<ast::IdentifierExpression>("a"),
- std::make_unique<ast::ScalarConstructorExpression>(
- std::make_unique<ast::UintLiteral>(&u32, 1u)));
+ auto accessor = create<ast::ArrayAccessorExpression>(
+ create<ast::IdentifierExpression>("a"),
+ create<ast::ScalarConstructorExpression>(
+ create<ast::UintLiteral>(&u32, 1u)));
auto* ptr = accessor.get();
- auto b =
- std::make_unique<ast::Variable>("b", ast::StorageClass::kFunction, &f32);
+ auto b = create<ast::Variable>("b", ast::StorageClass::kFunction, &f32);
b->set_constructor(std::move(accessor));
DeclareVariable(std::move(b));
@@ -282,26 +282,24 @@
SetupFunctionAndBody();
DeclareVariable(
- std::make_unique<ast::Variable>("a", ast::StorageClass::kFunction, &ary));
+ create<ast::Variable>("a", ast::StorageClass::kFunction, &ary));
DeclareVariable(
- std::make_unique<ast::Variable>("c", ast::StorageClass::kFunction, &u32));
+ create<ast::Variable>("c", ast::StorageClass::kFunction, &u32));
- auto access_idx = std::make_unique<ast::BinaryExpression>(
- ast::BinaryOp::kAdd, std::make_unique<ast::IdentifierExpression>("c"),
- std::make_unique<ast::BinaryExpression>(
- ast::BinaryOp::kSubtract,
- std::make_unique<ast::ScalarConstructorExpression>(
- std::make_unique<ast::UintLiteral>(&u32, 2)),
- std::make_unique<ast::ScalarConstructorExpression>(
- std::make_unique<ast::UintLiteral>(&u32, 3))));
+ auto access_idx = create<ast::BinaryExpression>(
+ ast::BinaryOp::kAdd, create<ast::IdentifierExpression>("c"),
+ create<ast::BinaryExpression>(ast::BinaryOp::kSubtract,
+ create<ast::ScalarConstructorExpression>(
+ create<ast::UintLiteral>(&u32, 2)),
+ create<ast::ScalarConstructorExpression>(
+ create<ast::UintLiteral>(&u32, 3))));
auto* access_ptr = access_idx.get();
- auto accessor = std::make_unique<ast::ArrayAccessorExpression>(
- std::make_unique<ast::IdentifierExpression>("a"), std::move(access_idx));
+ auto accessor = create<ast::ArrayAccessorExpression>(
+ create<ast::IdentifierExpression>("a"), std::move(access_idx));
auto* ptr = accessor.get();
- auto b =
- std::make_unique<ast::Variable>("b", ast::StorageClass::kFunction, &f32);
+ auto b = create<ast::Variable>("b", ast::StorageClass::kFunction, &f32);
b->set_constructor(std::move(accessor));
DeclareVariable(std::move(b));
@@ -346,16 +344,15 @@
SetupFunctionAndBody();
DeclareVariable(
- std::make_unique<ast::Variable>("a", ast::StorageClass::kFunction, &ary));
+ create<ast::Variable>("a", ast::StorageClass::kFunction, &ary));
- auto accessor = std::make_unique<ast::ArrayAccessorExpression>(
- std::make_unique<ast::IdentifierExpression>("a"),
- std::make_unique<ast::ScalarConstructorExpression>(
- std::make_unique<ast::SintLiteral>(&i32, -1)));
+ auto accessor = create<ast::ArrayAccessorExpression>(
+ create<ast::IdentifierExpression>("a"),
+ create<ast::ScalarConstructorExpression>(
+ create<ast::SintLiteral>(&i32, -1)));
auto* ptr = accessor.get();
- auto b =
- std::make_unique<ast::Variable>("b", ast::StorageClass::kFunction, &f32);
+ auto b = create<ast::Variable>("b", ast::StorageClass::kFunction, &f32);
b->set_constructor(std::move(accessor));
DeclareVariable(std::move(b));
@@ -386,16 +383,15 @@
SetupFunctionAndBody();
DeclareVariable(
- std::make_unique<ast::Variable>("a", ast::StorageClass::kFunction, &ary));
+ create<ast::Variable>("a", ast::StorageClass::kFunction, &ary));
- auto accessor = std::make_unique<ast::ArrayAccessorExpression>(
- std::make_unique<ast::IdentifierExpression>("a"),
- std::make_unique<ast::ScalarConstructorExpression>(
- std::make_unique<ast::UintLiteral>(&u32, 3u)));
+ auto accessor = create<ast::ArrayAccessorExpression>(
+ create<ast::IdentifierExpression>("a"),
+ create<ast::ScalarConstructorExpression>(
+ create<ast::UintLiteral>(&u32, 3u)));
auto* ptr = accessor.get();
- auto b =
- std::make_unique<ast::Variable>("b", ast::StorageClass::kFunction, &f32);
+ auto b = create<ast::Variable>("b", ast::StorageClass::kFunction, &f32);
b->set_constructor(std::move(accessor));
DeclareVariable(std::move(b));
@@ -426,16 +422,15 @@
SetupFunctionAndBody();
DeclareVariable(
- std::make_unique<ast::Variable>("a", ast::StorageClass::kFunction, &vec));
+ create<ast::Variable>("a", ast::StorageClass::kFunction, &vec));
- auto accessor = std::make_unique<ast::ArrayAccessorExpression>(
- std::make_unique<ast::IdentifierExpression>("a"),
- std::make_unique<ast::ScalarConstructorExpression>(
- std::make_unique<ast::UintLiteral>(&u32, 1u)));
+ auto accessor = create<ast::ArrayAccessorExpression>(
+ create<ast::IdentifierExpression>("a"),
+ create<ast::ScalarConstructorExpression>(
+ create<ast::UintLiteral>(&u32, 1u)));
auto* ptr = accessor.get();
- auto b =
- std::make_unique<ast::Variable>("b", ast::StorageClass::kFunction, &f32);
+ auto b = create<ast::Variable>("b", ast::StorageClass::kFunction, &f32);
b->set_constructor(std::move(accessor));
DeclareVariable(std::move(b));
@@ -467,26 +462,24 @@
SetupFunctionAndBody();
DeclareVariable(
- std::make_unique<ast::Variable>("a", ast::StorageClass::kFunction, &vec));
+ create<ast::Variable>("a", ast::StorageClass::kFunction, &vec));
DeclareVariable(
- std::make_unique<ast::Variable>("c", ast::StorageClass::kFunction, &u32));
+ create<ast::Variable>("c", ast::StorageClass::kFunction, &u32));
- auto access_idx = std::make_unique<ast::BinaryExpression>(
- ast::BinaryOp::kAdd, std::make_unique<ast::IdentifierExpression>("c"),
- std::make_unique<ast::BinaryExpression>(
- ast::BinaryOp::kSubtract,
- std::make_unique<ast::ScalarConstructorExpression>(
- std::make_unique<ast::UintLiteral>(&u32, 2)),
- std::make_unique<ast::ScalarConstructorExpression>(
- std::make_unique<ast::UintLiteral>(&u32, 3))));
+ auto access_idx = create<ast::BinaryExpression>(
+ ast::BinaryOp::kAdd, create<ast::IdentifierExpression>("c"),
+ create<ast::BinaryExpression>(ast::BinaryOp::kSubtract,
+ create<ast::ScalarConstructorExpression>(
+ create<ast::UintLiteral>(&u32, 2)),
+ create<ast::ScalarConstructorExpression>(
+ create<ast::UintLiteral>(&u32, 3))));
auto* access_ptr = access_idx.get();
- auto accessor = std::make_unique<ast::ArrayAccessorExpression>(
- std::make_unique<ast::IdentifierExpression>("a"), std::move(access_idx));
+ auto accessor = create<ast::ArrayAccessorExpression>(
+ create<ast::IdentifierExpression>("a"), std::move(access_idx));
auto* ptr = accessor.get();
- auto b =
- std::make_unique<ast::Variable>("b", ast::StorageClass::kFunction, &f32);
+ auto b = create<ast::Variable>("b", ast::StorageClass::kFunction, &f32);
b->set_constructor(std::move(accessor));
DeclareVariable(std::move(b));
@@ -530,16 +523,15 @@
SetupFunctionAndBody();
DeclareVariable(
- std::make_unique<ast::Variable>("a", ast::StorageClass::kFunction, &vec));
+ create<ast::Variable>("a", ast::StorageClass::kFunction, &vec));
- auto accessor = std::make_unique<ast::ArrayAccessorExpression>(
- std::make_unique<ast::IdentifierExpression>("a"),
- std::make_unique<ast::ScalarConstructorExpression>(
- std::make_unique<ast::SintLiteral>(&i32, -1)));
+ auto accessor = create<ast::ArrayAccessorExpression>(
+ create<ast::IdentifierExpression>("a"),
+ create<ast::ScalarConstructorExpression>(
+ create<ast::SintLiteral>(&i32, -1)));
auto* ptr = accessor.get();
- auto b =
- std::make_unique<ast::Variable>("b", ast::StorageClass::kFunction, &f32);
+ auto b = create<ast::Variable>("b", ast::StorageClass::kFunction, &f32);
b->set_constructor(std::move(accessor));
DeclareVariable(std::move(b));
@@ -570,16 +562,15 @@
SetupFunctionAndBody();
DeclareVariable(
- std::make_unique<ast::Variable>("a", ast::StorageClass::kFunction, &vec));
+ create<ast::Variable>("a", ast::StorageClass::kFunction, &vec));
- auto accessor = std::make_unique<ast::ArrayAccessorExpression>(
- std::make_unique<ast::IdentifierExpression>("a"),
- std::make_unique<ast::ScalarConstructorExpression>(
- std::make_unique<ast::UintLiteral>(&u32, 3u)));
+ auto accessor = create<ast::ArrayAccessorExpression>(
+ create<ast::IdentifierExpression>("a"),
+ create<ast::ScalarConstructorExpression>(
+ create<ast::UintLiteral>(&u32, 3u)));
auto* ptr = accessor.get();
- auto b =
- std::make_unique<ast::Variable>("b", ast::StorageClass::kFunction, &f32);
+ auto b = create<ast::Variable>("b", ast::StorageClass::kFunction, &f32);
b->set_constructor(std::move(accessor));
DeclareVariable(std::move(b));
@@ -610,19 +601,18 @@
SetupFunctionAndBody();
DeclareVariable(
- std::make_unique<ast::Variable>("a", ast::StorageClass::kFunction, &mat));
+ create<ast::Variable>("a", ast::StorageClass::kFunction, &mat));
- auto accessor = std::make_unique<ast::ArrayAccessorExpression>(
- std::make_unique<ast::ArrayAccessorExpression>(
- std::make_unique<ast::IdentifierExpression>("a"),
- std::make_unique<ast::ScalarConstructorExpression>(
- std::make_unique<ast::UintLiteral>(&u32, 2u))),
- std::make_unique<ast::ScalarConstructorExpression>(
- std::make_unique<ast::UintLiteral>(&u32, 1u)));
+ auto accessor = create<ast::ArrayAccessorExpression>(
+ create<ast::ArrayAccessorExpression>(
+ create<ast::IdentifierExpression>("a"),
+ create<ast::ScalarConstructorExpression>(
+ create<ast::UintLiteral>(&u32, 2u))),
+ create<ast::ScalarConstructorExpression>(
+ create<ast::UintLiteral>(&u32, 1u)));
auto* ptr = accessor.get();
- auto b =
- std::make_unique<ast::Variable>("b", ast::StorageClass::kFunction, &f32);
+ auto b = create<ast::Variable>("b", ast::StorageClass::kFunction, &f32);
b->set_constructor(std::move(accessor));
DeclareVariable(std::move(b));
@@ -667,30 +657,27 @@
SetupFunctionAndBody();
DeclareVariable(
- std::make_unique<ast::Variable>("a", ast::StorageClass::kFunction, &mat));
+ create<ast::Variable>("a", ast::StorageClass::kFunction, &mat));
DeclareVariable(
- std::make_unique<ast::Variable>("c", ast::StorageClass::kFunction, &u32));
+ create<ast::Variable>("c", ast::StorageClass::kFunction, &u32));
- auto access_idx = std::make_unique<ast::BinaryExpression>(
- ast::BinaryOp::kAdd, std::make_unique<ast::IdentifierExpression>("c"),
- std::make_unique<ast::BinaryExpression>(
- ast::BinaryOp::kSubtract,
- std::make_unique<ast::ScalarConstructorExpression>(
- std::make_unique<ast::UintLiteral>(&u32, 2)),
- std::make_unique<ast::ScalarConstructorExpression>(
- std::make_unique<ast::UintLiteral>(&u32, 3))));
+ auto access_idx = create<ast::BinaryExpression>(
+ ast::BinaryOp::kAdd, create<ast::IdentifierExpression>("c"),
+ create<ast::BinaryExpression>(ast::BinaryOp::kSubtract,
+ create<ast::ScalarConstructorExpression>(
+ create<ast::UintLiteral>(&u32, 2)),
+ create<ast::ScalarConstructorExpression>(
+ create<ast::UintLiteral>(&u32, 3))));
auto* access_ptr = access_idx.get();
- auto accessor = std::make_unique<ast::ArrayAccessorExpression>(
- std::make_unique<ast::ArrayAccessorExpression>(
- std::make_unique<ast::IdentifierExpression>("a"),
- std::move(access_idx)),
- std::make_unique<ast::ScalarConstructorExpression>(
- std::make_unique<ast::UintLiteral>(&u32, 1u)));
+ auto accessor = create<ast::ArrayAccessorExpression>(
+ create<ast::ArrayAccessorExpression>(
+ create<ast::IdentifierExpression>("a"), std::move(access_idx)),
+ create<ast::ScalarConstructorExpression>(
+ create<ast::UintLiteral>(&u32, 1u)));
auto* ptr = accessor.get();
- auto b =
- std::make_unique<ast::Variable>("b", ast::StorageClass::kFunction, &f32);
+ auto b = create<ast::Variable>("b", ast::StorageClass::kFunction, &f32);
b->set_constructor(std::move(accessor));
DeclareVariable(std::move(b));
@@ -749,30 +736,28 @@
SetupFunctionAndBody();
DeclareVariable(
- std::make_unique<ast::Variable>("a", ast::StorageClass::kFunction, &mat));
+ create<ast::Variable>("a", ast::StorageClass::kFunction, &mat));
DeclareVariable(
- std::make_unique<ast::Variable>("c", ast::StorageClass::kFunction, &u32));
+ create<ast::Variable>("c", ast::StorageClass::kFunction, &u32));
- auto access_idx = std::make_unique<ast::BinaryExpression>(
- ast::BinaryOp::kAdd, std::make_unique<ast::IdentifierExpression>("c"),
- std::make_unique<ast::BinaryExpression>(
- ast::BinaryOp::kSubtract,
- std::make_unique<ast::ScalarConstructorExpression>(
- std::make_unique<ast::UintLiteral>(&u32, 2)),
- std::make_unique<ast::ScalarConstructorExpression>(
- std::make_unique<ast::UintLiteral>(&u32, 3))));
+ auto access_idx = create<ast::BinaryExpression>(
+ ast::BinaryOp::kAdd, create<ast::IdentifierExpression>("c"),
+ create<ast::BinaryExpression>(ast::BinaryOp::kSubtract,
+ create<ast::ScalarConstructorExpression>(
+ create<ast::UintLiteral>(&u32, 2)),
+ create<ast::ScalarConstructorExpression>(
+ create<ast::UintLiteral>(&u32, 3))));
auto* access_ptr = access_idx.get();
- auto accessor = std::make_unique<ast::ArrayAccessorExpression>(
- std::make_unique<ast::ArrayAccessorExpression>(
- std::make_unique<ast::IdentifierExpression>("a"),
- std::make_unique<ast::ScalarConstructorExpression>(
- std::make_unique<ast::UintLiteral>(&u32, 1u))),
+ auto accessor = create<ast::ArrayAccessorExpression>(
+ create<ast::ArrayAccessorExpression>(
+ create<ast::IdentifierExpression>("a"),
+ create<ast::ScalarConstructorExpression>(
+ create<ast::UintLiteral>(&u32, 1u))),
std::move(access_idx));
auto* ptr = accessor.get();
- auto b =
- std::make_unique<ast::Variable>("b", ast::StorageClass::kFunction, &f32);
+ auto b = create<ast::Variable>("b", ast::StorageClass::kFunction, &f32);
b->set_constructor(std::move(accessor));
DeclareVariable(std::move(b));
@@ -829,19 +814,18 @@
SetupFunctionAndBody();
DeclareVariable(
- std::make_unique<ast::Variable>("a", ast::StorageClass::kFunction, &mat));
+ create<ast::Variable>("a", ast::StorageClass::kFunction, &mat));
- auto accessor = std::make_unique<ast::ArrayAccessorExpression>(
- std::make_unique<ast::ArrayAccessorExpression>(
- std::make_unique<ast::IdentifierExpression>("a"),
- std::make_unique<ast::ScalarConstructorExpression>(
- std::make_unique<ast::SintLiteral>(&i32, -1))),
- std::make_unique<ast::ScalarConstructorExpression>(
- std::make_unique<ast::SintLiteral>(&i32, 1)));
+ auto accessor = create<ast::ArrayAccessorExpression>(
+ create<ast::ArrayAccessorExpression>(
+ create<ast::IdentifierExpression>("a"),
+ create<ast::ScalarConstructorExpression>(
+ create<ast::SintLiteral>(&i32, -1))),
+ create<ast::ScalarConstructorExpression>(
+ create<ast::SintLiteral>(&i32, 1)));
auto* ptr = accessor.get();
- auto b =
- std::make_unique<ast::Variable>("b", ast::StorageClass::kFunction, &f32);
+ auto b = create<ast::Variable>("b", ast::StorageClass::kFunction, &f32);
b->set_constructor(std::move(accessor));
DeclareVariable(std::move(b));
@@ -884,19 +868,18 @@
SetupFunctionAndBody();
DeclareVariable(
- std::make_unique<ast::Variable>("a", ast::StorageClass::kFunction, &mat));
+ create<ast::Variable>("a", ast::StorageClass::kFunction, &mat));
- auto accessor = std::make_unique<ast::ArrayAccessorExpression>(
- std::make_unique<ast::ArrayAccessorExpression>(
- std::make_unique<ast::IdentifierExpression>("a"),
- std::make_unique<ast::ScalarConstructorExpression>(
- std::make_unique<ast::SintLiteral>(&i32, 2))),
- std::make_unique<ast::ScalarConstructorExpression>(
- std::make_unique<ast::SintLiteral>(&i32, -1)));
+ auto accessor = create<ast::ArrayAccessorExpression>(
+ create<ast::ArrayAccessorExpression>(
+ create<ast::IdentifierExpression>("a"),
+ create<ast::ScalarConstructorExpression>(
+ create<ast::SintLiteral>(&i32, 2))),
+ create<ast::ScalarConstructorExpression>(
+ create<ast::SintLiteral>(&i32, -1)));
auto* ptr = accessor.get();
- auto b =
- std::make_unique<ast::Variable>("b", ast::StorageClass::kFunction, &f32);
+ auto b = create<ast::Variable>("b", ast::StorageClass::kFunction, &f32);
b->set_constructor(std::move(accessor));
DeclareVariable(std::move(b));
@@ -940,19 +923,18 @@
SetupFunctionAndBody();
DeclareVariable(
- std::make_unique<ast::Variable>("a", ast::StorageClass::kFunction, &mat));
+ create<ast::Variable>("a", ast::StorageClass::kFunction, &mat));
- auto accessor = std::make_unique<ast::ArrayAccessorExpression>(
- std::make_unique<ast::ArrayAccessorExpression>(
- std::make_unique<ast::IdentifierExpression>("a"),
- std::make_unique<ast::ScalarConstructorExpression>(
- std::make_unique<ast::UintLiteral>(&u32, 5u))),
- std::make_unique<ast::ScalarConstructorExpression>(
- std::make_unique<ast::UintLiteral>(&u32, 1u)));
+ auto accessor = create<ast::ArrayAccessorExpression>(
+ create<ast::ArrayAccessorExpression>(
+ create<ast::IdentifierExpression>("a"),
+ create<ast::ScalarConstructorExpression>(
+ create<ast::UintLiteral>(&u32, 5u))),
+ create<ast::ScalarConstructorExpression>(
+ create<ast::UintLiteral>(&u32, 1u)));
auto* ptr = accessor.get();
- auto b =
- std::make_unique<ast::Variable>("b", ast::StorageClass::kFunction, &f32);
+ auto b = create<ast::Variable>("b", ast::StorageClass::kFunction, &f32);
b->set_constructor(std::move(accessor));
DeclareVariable(std::move(b));
@@ -996,19 +978,18 @@
SetupFunctionAndBody();
DeclareVariable(
- std::make_unique<ast::Variable>("a", ast::StorageClass::kFunction, &mat));
+ create<ast::Variable>("a", ast::StorageClass::kFunction, &mat));
- auto accessor = std::make_unique<ast::ArrayAccessorExpression>(
- std::make_unique<ast::ArrayAccessorExpression>(
- std::make_unique<ast::IdentifierExpression>("a"),
- std::make_unique<ast::ScalarConstructorExpression>(
- std::make_unique<ast::UintLiteral>(&u32, 2u))),
- std::make_unique<ast::ScalarConstructorExpression>(
- std::make_unique<ast::UintLiteral>(&u32, 5u)));
+ auto accessor = create<ast::ArrayAccessorExpression>(
+ create<ast::ArrayAccessorExpression>(
+ create<ast::IdentifierExpression>("a"),
+ create<ast::ScalarConstructorExpression>(
+ create<ast::UintLiteral>(&u32, 2u))),
+ create<ast::ScalarConstructorExpression>(
+ create<ast::UintLiteral>(&u32, 5u)));
auto* ptr = accessor.get();
- auto b =
- std::make_unique<ast::Variable>("b", ast::StorageClass::kFunction, &f32);
+ auto b = create<ast::Variable>("b", ast::StorageClass::kFunction, &f32);
b->set_constructor(std::move(accessor));
DeclareVariable(std::move(b));
diff --git a/src/transform/vertex_pulling_transform_test.cc b/src/transform/vertex_pulling_transform_test.cc
index 4a5715e..a9b0c8c 100644
--- a/src/transform/vertex_pulling_transform_test.cc
+++ b/src/transform/vertex_pulling_transform_test.cc
@@ -35,17 +35,17 @@
class VertexPullingTransformHelper {
public:
VertexPullingTransformHelper() {
- mod_ = std::make_unique<ast::Module>();
+ mod_ = create<ast::Module>();
transform_ = std::make_unique<VertexPullingTransform>(&ctx_, mod_.get());
}
// Create basic module with an entry point and vertex function
void InitBasicModule() {
- auto func = std::make_unique<ast::Function>(
+ auto func = create<ast::Function>(
"main", ast::VariableList{},
ctx_.type_mgr().Get(std::make_unique<ast::type::VoidType>()));
- func->add_decoration(std::make_unique<ast::StageDecoration>(
- ast::PipelineStage ::kVertex, Source{}));
+ func->add_decoration(
+ create<ast::StageDecoration>(ast::PipelineStage ::kVertex, Source{}));
mod()->AddFunction(std::move(func));
}
@@ -65,12 +65,11 @@
void AddVertexInputVariable(uint32_t location,
std::string name,
ast::type::Type* type) {
- auto var = std::make_unique<ast::DecoratedVariable>(
- std::make_unique<ast::Variable>(name, ast::StorageClass::kInput, type));
+ auto var = create<ast::DecoratedVariable>(
+ create<ast::Variable>(name, ast::StorageClass::kInput, type));
ast::VariableDecorationList decorations;
- decorations.push_back(
- std::make_unique<ast::LocationDecoration>(location, Source{}));
+ decorations.push_back(create<ast::LocationDecoration>(location, Source{}));
var->set_decorations(std::move(decorations));
mod_->AddGlobalVariable(std::move(var));
@@ -80,6 +79,13 @@
ast::Module* mod() { return mod_.get(); }
VertexPullingTransform* transform() { return transform_.get(); }
+ /// @return a `std::unique_ptr` to a new `T` constructed with `args`
+ /// @param args the arguments to forward to the constructor for `T`
+ template <typename T, typename... ARGS>
+ std::unique_ptr<T> create(ARGS&&... args) {
+ return std::make_unique<T>(std::forward<ARGS>(args)...);
+ }
+
private:
Context ctx_;
std::unique_ptr<ast::Module> mod_;
@@ -110,11 +116,11 @@
}
TEST_F(VertexPullingTransformTest, Error_EntryPointWrongStage) {
- auto func = std::make_unique<ast::Function>(
+ auto func = create<ast::Function>(
"main", ast::VariableList{},
ctx()->type_mgr().Get(std::make_unique<ast::type::VoidType>()));
- func->add_decoration(std::make_unique<ast::StageDecoration>(
- ast::PipelineStage::kFragment, Source{}));
+ func->add_decoration(
+ create<ast::StageDecoration>(ast::PipelineStage::kFragment, Source{}));
mod()->AddFunction(std::move(func));
InitTransform({});
@@ -392,26 +398,26 @@
ast::type::I32Type i32;
{
- auto vertex_index_var = std::make_unique<ast::DecoratedVariable>(
- std::make_unique<ast::Variable>("custom_vertex_index",
- ast::StorageClass::kInput, &i32));
+ auto vertex_index_var =
+ create<ast::DecoratedVariable>(create<ast::Variable>(
+ "custom_vertex_index", ast::StorageClass::kInput, &i32));
ast::VariableDecorationList decorations;
- decorations.push_back(std::make_unique<ast::BuiltinDecoration>(
- ast::Builtin::kVertexIdx, Source{}));
+ decorations.push_back(
+ create<ast::BuiltinDecoration>(ast::Builtin::kVertexIdx, Source{}));
vertex_index_var->set_decorations(std::move(decorations));
mod()->AddGlobalVariable(std::move(vertex_index_var));
}
{
- auto instance_index_var = std::make_unique<ast::DecoratedVariable>(
- std::make_unique<ast::Variable>("custom_instance_index",
- ast::StorageClass::kInput, &i32));
+ auto instance_index_var =
+ create<ast::DecoratedVariable>(create<ast::Variable>(
+ "custom_instance_index", ast::StorageClass::kInput, &i32));
ast::VariableDecorationList decorations;
- decorations.push_back(std::make_unique<ast::BuiltinDecoration>(
- ast::Builtin::kInstanceIdx, Source{}));
+ decorations.push_back(
+ create<ast::BuiltinDecoration>(ast::Builtin::kInstanceIdx, Source{}));
instance_index_var->set_decorations(std::move(decorations));
mod()->AddGlobalVariable(std::move(instance_index_var));