inspector_test: 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: Ibb9f437b9cb8b9883e05d1a266fa69141dc200d0
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/32668
Commit-Queue: Ben Clayton <bclayton@google.com>
Reviewed-by: dan sinclair <dsinclair@chromium.org>
This commit is contained in:
Ben Clayton 2020-11-13 22:13:08 +00:00 committed by Commit Bot service account
parent 6262592297
commit 68f6afe2a4
1 changed files with 233 additions and 243 deletions

View File

@ -79,10 +79,10 @@ class InspectorHelper {
/// @param name name of the function created
/// @returns a function object
std::unique_ptr<ast::Function> MakeEmptyBodyFunction(std::string name) {
auto body = std::make_unique<ast::BlockStatement>();
body->append(std::make_unique<ast::ReturnStatement>());
auto body = create<ast::BlockStatement>();
body->append(create<ast::ReturnStatement>());
std::unique_ptr<ast::Function> func =
std::make_unique<ast::Function>(name, ast::VariableList(), void_type());
create<ast::Function>(name, ast::VariableList(), void_type());
func->set_body(std::move(body));
return func;
}
@ -93,14 +93,14 @@ class InspectorHelper {
/// @returns a function object
std::unique_ptr<ast::Function> MakeCallerBodyFunction(std::string caller,
std::string callee) {
auto body = std::make_unique<ast::BlockStatement>();
auto ident_expr = std::make_unique<ast::IdentifierExpression>(callee);
auto call_expr = std::make_unique<ast::CallExpression>(
std::move(ident_expr), ast::ExpressionList());
body->append(std::make_unique<ast::CallStatement>(std::move(call_expr)));
body->append(std::make_unique<ast::ReturnStatement>());
std::unique_ptr<ast::Function> func = std::make_unique<ast::Function>(
caller, ast::VariableList(), void_type());
auto body = create<ast::BlockStatement>();
auto ident_expr = create<ast::IdentifierExpression>(callee);
auto call_expr = create<ast::CallExpression>(std::move(ident_expr),
ast::ExpressionList());
body->append(create<ast::CallStatement>(std::move(call_expr)));
body->append(create<ast::ReturnStatement>());
std::unique_ptr<ast::Function> func =
create<ast::Function>(caller, ast::VariableList(), void_type());
func->set_body(std::move(body));
return func;
}
@ -113,10 +113,10 @@ class InspectorHelper {
for (auto inout : inout_vars) {
std::string in, out;
std::tie(in, out) = inout;
auto in_var = std::make_unique<ast::Variable>(
in, ast::StorageClass::kInput, u32_type());
auto out_var = std::make_unique<ast::Variable>(
out, ast::StorageClass::kOutput, u32_type());
auto in_var =
create<ast::Variable>(in, ast::StorageClass::kInput, u32_type());
auto out_var =
create<ast::Variable>(out, ast::StorageClass::kOutput, u32_type());
mod()->AddGlobalVariable(std::move(in_var));
mod()->AddGlobalVariable(std::move(out_var));
}
@ -130,17 +130,16 @@ class InspectorHelper {
std::unique_ptr<ast::Function> MakeInOutVariableBodyFunction(
std::string name,
std::vector<std::tuple<std::string, std::string>> inout_vars) {
auto body = std::make_unique<ast::BlockStatement>();
auto body = create<ast::BlockStatement>();
for (auto inout : inout_vars) {
std::string in, out;
std::tie(in, out) = inout;
body->append(std::make_unique<ast::AssignmentStatement>(
std::make_unique<ast::IdentifierExpression>(out),
std::make_unique<ast::IdentifierExpression>(in)));
body->append(create<ast::AssignmentStatement>(
create<ast::IdentifierExpression>(out),
create<ast::IdentifierExpression>(in)));
}
body->append(std::make_unique<ast::ReturnStatement>());
auto func =
std::make_unique<ast::Function>(name, ast::VariableList(), void_type());
body->append(create<ast::ReturnStatement>());
auto func = create<ast::Function>(name, ast::VariableList(), void_type());
func->set_body(std::move(body));
return func;
}
@ -156,21 +155,20 @@ class InspectorHelper {
std::string caller,
std::string callee,
std::vector<std::tuple<std::string, std::string>> inout_vars) {
auto body = std::make_unique<ast::BlockStatement>();
auto body = create<ast::BlockStatement>();
for (auto inout : inout_vars) {
std::string in, out;
std::tie(in, out) = inout;
body->append(std::make_unique<ast::AssignmentStatement>(
std::make_unique<ast::IdentifierExpression>(out),
std::make_unique<ast::IdentifierExpression>(in)));
body->append(create<ast::AssignmentStatement>(
create<ast::IdentifierExpression>(out),
create<ast::IdentifierExpression>(in)));
}
auto ident_expr = std::make_unique<ast::IdentifierExpression>(callee);
auto call_expr = std::make_unique<ast::CallExpression>(
std::move(ident_expr), ast::ExpressionList());
body->append(std::make_unique<ast::CallStatement>(std::move(call_expr)));
body->append(std::make_unique<ast::ReturnStatement>());
auto func = std::make_unique<ast::Function>(caller, ast::VariableList(),
void_type());
auto ident_expr = create<ast::IdentifierExpression>(callee);
auto call_expr = create<ast::CallExpression>(std::move(ident_expr),
ast::ExpressionList());
body->append(create<ast::CallStatement>(std::move(call_expr)));
body->append(create<ast::ReturnStatement>());
auto func = create<ast::Function>(caller, ast::VariableList(), void_type());
func->set_body(std::move(body));
return func;
}
@ -186,15 +184,15 @@ class InspectorHelper {
uint32_t id,
ast::type::Type* type,
T* val) {
auto dvar = std::make_unique<ast::DecoratedVariable>(
std::make_unique<ast::Variable>(name, ast::StorageClass::kNone, type));
auto dvar = create<ast::DecoratedVariable>(
create<ast::Variable>(name, ast::StorageClass::kNone, type));
dvar->set_is_const(true);
ast::VariableDecorationList decos;
decos.push_back(std::make_unique<ast::ConstantIdDecoration>(id, Source{}));
decos.push_back(create<ast::ConstantIdDecoration>(id, Source{}));
dvar->set_decorations(std::move(decos));
if (val) {
dvar->set_constructor(std::make_unique<ast::ScalarConstructorExpression>(
MakeLiteral(type, val)));
dvar->set_constructor(
create<ast::ScalarConstructorExpression>(MakeLiteral(type, val)));
}
mod()->AddGlobalVariable(std::move(dvar));
}
@ -203,7 +201,7 @@ class InspectorHelper {
/// @param val scalar value for the literal to contain
/// @returns a Literal of the expected type and value
std::unique_ptr<ast::Literal> MakeLiteral(ast::type::Type* type, bool* val) {
return std::make_unique<ast::BoolLiteral>(type, *val);
return create<ast::BoolLiteral>(type, *val);
}
/// @param type AST type of the literal, must resolve to UIntLiteral
@ -211,7 +209,7 @@ class InspectorHelper {
/// @returns a Literal of the expected type and value
std::unique_ptr<ast::Literal> MakeLiteral(ast::type::Type* type,
uint32_t* val) {
return std::make_unique<ast::UintLiteral>(type, *val);
return create<ast::UintLiteral>(type, *val);
}
/// @param type AST type of the literal, must resolve to IntLiteral
@ -219,14 +217,14 @@ class InspectorHelper {
/// @returns a Literal of the expected type and value
std::unique_ptr<ast::Literal> MakeLiteral(ast::type::Type* type,
int32_t* val) {
return std::make_unique<ast::SintLiteral>(type, *val);
return create<ast::SintLiteral>(type, *val);
}
/// @param type AST type of the literal, must resolve to FloattLiteral
/// @param val scalar value for the literal to contain
/// @returns a Literal of the expected type and value
std::unique_ptr<ast::Literal> MakeLiteral(ast::type::Type* type, float* val) {
return std::make_unique<ast::FloatLiteral>(type, *val);
return create<ast::FloatLiteral>(type, *val);
}
/// @param vec Vector of strings to be searched
@ -267,20 +265,19 @@ class InspectorHelper {
std::tie(type, offset) = member_info;
ast::StructMemberDecorationList deco;
deco.push_back(std::make_unique<ast::StructMemberOffsetDecoration>(
offset, Source{}));
deco.push_back(
create<ast::StructMemberOffsetDecoration>(offset, Source{}));
members.push_back(std::make_unique<ast::StructMember>(
members.push_back(create<ast::StructMember>(
StructMemberName(members.size(), type), type, std::move(deco)));
}
ast::StructDecorationList decos;
if (is_block) {
decos.push_back(std::make_unique<ast::StructBlockDecoration>(Source{}));
decos.push_back(create<ast::StructBlockDecoration>(Source{}));
}
auto str =
std::make_unique<ast::Struct>(std::move(decos), std::move(members));
auto str = create<ast::Struct>(std::move(decos), std::move(members));
return std::make_unique<ast::type::StructType>(name, std::move(str));
}
@ -350,13 +347,12 @@ class InspectorHelper {
ast::StorageClass storage_class,
uint32_t set,
uint32_t binding) {
auto var = std::make_unique<ast::DecoratedVariable>(
std::make_unique<ast::Variable>(name, storage_class, type));
auto var = create<ast::DecoratedVariable>(
create<ast::Variable>(name, storage_class, type));
ast::VariableDecorationList decorations;
decorations.push_back(
std::make_unique<ast::BindingDecoration>(binding, Source{}));
decorations.push_back(std::make_unique<ast::SetDecoration>(set, Source{}));
decorations.push_back(create<ast::BindingDecoration>(binding, Source{}));
decorations.push_back(create<ast::SetDecoration>(set, Source{}));
var->set_decorations(std::move(decorations));
mod()->AddGlobalVariable(std::move(var));
@ -395,16 +391,15 @@ class InspectorHelper {
std::string func_name,
std::string struct_name,
std::vector<std::tuple<size_t, ast::type::Type*>> members) {
auto body = std::make_unique<ast::BlockStatement>();
auto body = create<ast::BlockStatement>();
for (auto member : members) {
size_t member_idx;
ast::type::Type* member_type;
std::tie(member_idx, member_type) = member;
std::string member_name = StructMemberName(member_idx, member_type);
body->append(std::make_unique<ast::VariableDeclStatement>(
std::make_unique<ast::Variable>(
"local" + member_name, ast::StorageClass::kNone, member_type)));
body->append(create<ast::VariableDeclStatement>(create<ast::Variable>(
"local" + member_name, ast::StorageClass::kNone, member_type)));
}
for (auto member : members) {
@ -412,16 +407,16 @@ class InspectorHelper {
ast::type::Type* member_type;
std::tie(member_idx, member_type) = member;
std::string member_name = StructMemberName(member_idx, member_type);
body->append(std::make_unique<ast::AssignmentStatement>(
std::make_unique<ast::IdentifierExpression>("local" + member_name),
std::make_unique<ast::MemberAccessorExpression>(
std::make_unique<ast::IdentifierExpression>(struct_name),
std::make_unique<ast::IdentifierExpression>(member_name))));
body->append(create<ast::AssignmentStatement>(
create<ast::IdentifierExpression>("local" + member_name),
create<ast::MemberAccessorExpression>(
create<ast::IdentifierExpression>(struct_name),
create<ast::IdentifierExpression>(member_name))));
}
body->append(std::make_unique<ast::ReturnStatement>());
auto func = std::make_unique<ast::Function>(func_name, ast::VariableList(),
void_type());
body->append(create<ast::ReturnStatement>());
auto func =
create<ast::Function>(func_name, ast::VariableList(), void_type());
func->set_body(std::move(body));
return func;
}
@ -499,16 +494,16 @@ class InspectorHelper {
}
void AddGlobalVariable(const std::string& name, ast::type::Type* type) {
mod()->AddGlobalVariable(std::make_unique<ast::Variable>(
name, ast::StorageClass::kUniformConstant, type));
mod()->AddGlobalVariable(
create<ast::Variable>(name, ast::StorageClass::kUniformConstant, type));
}
/// Adds a depth texture variable to the module
/// @param name the name of the variable
/// @param type the type to use
void AddDepthTexture(const std::string& name, ast::type::Type* type) {
mod()->AddGlobalVariable(std::make_unique<ast::Variable>(
name, ast::StorageClass::kUniformConstant, type));
mod()->AddGlobalVariable(
create<ast::Variable>(name, ast::StorageClass::kUniformConstant, type));
}
/// Generates a function that references a specific sampler variable
@ -525,31 +520,27 @@ class InspectorHelper {
ast::type::Type* base_type) {
std::string result_name = "sampler_result";
auto body = std::make_unique<ast::BlockStatement>();
auto body = create<ast::BlockStatement>();
auto call_result = std::make_unique<ast::Variable>(
auto call_result = create<ast::Variable>(
"sampler_result", ast::StorageClass::kFunction, vec_type(base_type, 4));
body->append(
std::make_unique<ast::VariableDeclStatement>(std::move(call_result)));
body->append(create<ast::VariableDeclStatement>(std::move(call_result)));
ast::ExpressionList call_params;
call_params.push_back(
std::make_unique<ast::IdentifierExpression>(texture_name));
call_params.push_back(
std::make_unique<ast::IdentifierExpression>(sampler_name));
call_params.push_back(
std::make_unique<ast::IdentifierExpression>(coords_name));
auto call_expr = std::make_unique<ast::CallExpression>(
std::make_unique<ast::IdentifierExpression>("textureSample"),
call_params.push_back(create<ast::IdentifierExpression>(texture_name));
call_params.push_back(create<ast::IdentifierExpression>(sampler_name));
call_params.push_back(create<ast::IdentifierExpression>(coords_name));
auto call_expr = create<ast::CallExpression>(
create<ast::IdentifierExpression>("textureSample"),
std::move(call_params));
body->append(std::make_unique<ast::AssignmentStatement>(
std::make_unique<ast::IdentifierExpression>("sampler_result"),
body->append(create<ast::AssignmentStatement>(
create<ast::IdentifierExpression>("sampler_result"),
std::move(call_expr)));
body->append(std::make_unique<ast::ReturnStatement>());
body->append(create<ast::ReturnStatement>());
auto func = std::make_unique<ast::Function>(func_name, ast::VariableList(),
void_type());
auto func =
create<ast::Function>(func_name, ast::VariableList(), void_type());
func->set_body(std::move(body));
return func;
}
@ -571,33 +562,28 @@ class InspectorHelper {
ast::type::Type* base_type) {
std::string result_name = "sampler_result";
auto body = std::make_unique<ast::BlockStatement>();
auto body = create<ast::BlockStatement>();
auto call_result = std::make_unique<ast::Variable>(
auto call_result = create<ast::Variable>(
"sampler_result", ast::StorageClass::kFunction, base_type);
body->append(
std::make_unique<ast::VariableDeclStatement>(std::move(call_result)));
body->append(create<ast::VariableDeclStatement>(std::move(call_result)));
ast::ExpressionList call_params;
call_params.push_back(
std::make_unique<ast::IdentifierExpression>(texture_name));
call_params.push_back(
std::make_unique<ast::IdentifierExpression>(sampler_name));
call_params.push_back(
std::make_unique<ast::IdentifierExpression>(coords_name));
call_params.push_back(
std::make_unique<ast::IdentifierExpression>(depth_name));
auto call_expr = std::make_unique<ast::CallExpression>(
std::make_unique<ast::IdentifierExpression>("textureSampleCompare"),
call_params.push_back(create<ast::IdentifierExpression>(texture_name));
call_params.push_back(create<ast::IdentifierExpression>(sampler_name));
call_params.push_back(create<ast::IdentifierExpression>(coords_name));
call_params.push_back(create<ast::IdentifierExpression>(depth_name));
auto call_expr = create<ast::CallExpression>(
create<ast::IdentifierExpression>("textureSampleCompare"),
std::move(call_params));
body->append(std::make_unique<ast::AssignmentStatement>(
std::make_unique<ast::IdentifierExpression>("sampler_result"),
body->append(create<ast::AssignmentStatement>(
create<ast::IdentifierExpression>("sampler_result"),
std::move(call_expr)));
body->append(std::make_unique<ast::ReturnStatement>());
body->append(create<ast::ReturnStatement>());
auto func = std::make_unique<ast::Function>(func_name, ast::VariableList(),
void_type());
auto func =
create<ast::Function>(func_name, ast::VariableList(), void_type());
func->set_body(std::move(body));
return func;
}
@ -650,7 +636,7 @@ class InspectorHelper {
array_type_memo_[count] =
std::make_unique<ast::type::ArrayType>(u32_type(), count);
ast::ArrayDecorationList decos;
decos.push_back(std::make_unique<ast::StrideDecoration>(4, Source{}));
decos.push_back(create<ast::StrideDecoration>(4, Source{}));
array_type_memo_[count]->set_decorations(std::move(decos));
}
return array_type_memo_[count].get();
@ -669,6 +655,13 @@ class InspectorHelper {
return &comparison_sampler_type_;
}
/// @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_;
@ -743,8 +736,8 @@ TEST_F(InspectorGetEntryPointTest, NoEntryPoints) {
TEST_F(InspectorGetEntryPointTest, OneEntryPoint) {
auto foo = MakeEmptyBodyFunction("foo");
foo->add_decoration(std::make_unique<ast::StageDecoration>(
ast::PipelineStage::kVertex, Source{}));
foo->add_decoration(
create<ast::StageDecoration>(ast::PipelineStage::kVertex, Source{}));
mod()->AddFunction(std::move(foo));
auto result = inspector()->GetEntryPoints();
@ -758,13 +751,13 @@ TEST_F(InspectorGetEntryPointTest, OneEntryPoint) {
TEST_F(InspectorGetEntryPointTest, MultipleEntryPoints) {
auto foo = MakeEmptyBodyFunction("foo");
foo->add_decoration(std::make_unique<ast::StageDecoration>(
ast::PipelineStage::kVertex, Source{}));
foo->add_decoration(
create<ast::StageDecoration>(ast::PipelineStage::kVertex, Source{}));
mod()->AddFunction(std::move(foo));
auto bar = MakeEmptyBodyFunction("bar");
bar->add_decoration(std::make_unique<ast::StageDecoration>(
ast::PipelineStage::kCompute, Source{}));
bar->add_decoration(
create<ast::StageDecoration>(ast::PipelineStage::kCompute, Source{}));
mod()->AddFunction(std::move(bar));
auto result = inspector()->GetEntryPoints();
@ -784,13 +777,13 @@ TEST_F(InspectorGetEntryPointTest, MixFunctionsAndEntryPoints) {
mod()->AddFunction(std::move(func));
auto foo = MakeCallerBodyFunction("foo", "func");
foo->add_decoration(std::make_unique<ast::StageDecoration>(
ast::PipelineStage::kVertex, Source{}));
foo->add_decoration(
create<ast::StageDecoration>(ast::PipelineStage::kVertex, Source{}));
mod()->AddFunction(std::move(foo));
auto bar = MakeCallerBodyFunction("bar", "func");
bar->add_decoration(std::make_unique<ast::StageDecoration>(
ast::PipelineStage::kFragment, Source{}));
bar->add_decoration(
create<ast::StageDecoration>(ast::PipelineStage::kFragment, Source{}));
mod()->AddFunction(std::move(bar));
auto result = inspector()->GetEntryPoints();
@ -807,8 +800,8 @@ TEST_F(InspectorGetEntryPointTest, MixFunctionsAndEntryPoints) {
TEST_F(InspectorGetEntryPointTest, DefaultWorkgroupSize) {
auto foo = MakeCallerBodyFunction("foo", "func");
foo->add_decoration(std::make_unique<ast::StageDecoration>(
ast::PipelineStage::kVertex, Source{}));
foo->add_decoration(
create<ast::StageDecoration>(ast::PipelineStage::kVertex, Source{}));
mod()->AddFunction(std::move(foo));
auto result = inspector()->GetEntryPoints();
@ -824,10 +817,9 @@ TEST_F(InspectorGetEntryPointTest, DefaultWorkgroupSize) {
TEST_F(InspectorGetEntryPointTest, NonDefaultWorkgroupSize) {
auto foo = MakeEmptyBodyFunction("foo");
foo->add_decoration(std::make_unique<ast::StageDecoration>(
ast::PipelineStage::kCompute, Source{}));
foo->add_decoration(
std::make_unique<ast::WorkgroupDecoration>(8u, 2u, 1u, Source{}));
create<ast::StageDecoration>(ast::PipelineStage::kCompute, Source{}));
foo->add_decoration(create<ast::WorkgroupDecoration>(8u, 2u, 1u, Source{}));
mod()->AddFunction(std::move(foo));
auto result = inspector()->GetEntryPoints();
@ -846,8 +838,8 @@ TEST_F(InspectorGetEntryPointTest, NoInOutVariables) {
mod()->AddFunction(std::move(func));
auto foo = MakeCallerBodyFunction("foo", "func");
foo->add_decoration(std::make_unique<ast::StageDecoration>(
ast::PipelineStage::kVertex, Source{}));
foo->add_decoration(
create<ast::StageDecoration>(ast::PipelineStage::kVertex, Source{}));
mod()->AddFunction(std::move(foo));
auto result = inspector()->GetEntryPoints();
@ -862,8 +854,8 @@ TEST_F(InspectorGetEntryPointTest, EntryPointInOutVariables) {
AddInOutVariables({{"in_var", "out_var"}});
auto foo = MakeInOutVariableBodyFunction("foo", {{"in_var", "out_var"}});
foo->add_decoration(std::make_unique<ast::StageDecoration>(
ast::PipelineStage::kVertex, Source{}));
foo->add_decoration(
create<ast::StageDecoration>(ast::PipelineStage::kVertex, Source{}));
mod()->AddFunction(std::move(foo));
ASSERT_TRUE(td()->Determine()) << td()->error();
@ -886,8 +878,8 @@ TEST_F(InspectorGetEntryPointTest, FunctionInOutVariables) {
mod()->AddFunction(std::move(func));
auto foo = MakeCallerBodyFunction("foo", "func");
foo->add_decoration(std::make_unique<ast::StageDecoration>(
ast::PipelineStage::kVertex, Source{}));
foo->add_decoration(
create<ast::StageDecoration>(ast::PipelineStage::kVertex, Source{}));
mod()->AddFunction(std::move(foo));
ASSERT_TRUE(td()->Determine()) << td()->error();
@ -911,8 +903,8 @@ TEST_F(InspectorGetEntryPointTest, RepeatedInOutVariables) {
auto foo = MakeInOutVariableCallerBodyFunction("foo", "func",
{{"in_var", "out_var"}});
foo->add_decoration(std::make_unique<ast::StageDecoration>(
ast::PipelineStage::kVertex, Source{}));
foo->add_decoration(
create<ast::StageDecoration>(ast::PipelineStage::kVertex, Source{}));
mod()->AddFunction(std::move(foo));
ASSERT_TRUE(td()->Determine()) << td()->error();
@ -933,8 +925,8 @@ TEST_F(InspectorGetEntryPointTest, EntryPointMultipleInOutVariables) {
auto foo = MakeInOutVariableBodyFunction(
"foo", {{"in_var", "out_var"}, {"in2_var", "out2_var"}});
foo->add_decoration(std::make_unique<ast::StageDecoration>(
ast::PipelineStage::kVertex, Source{}));
foo->add_decoration(
create<ast::StageDecoration>(ast::PipelineStage::kVertex, Source{}));
mod()->AddFunction(std::move(foo));
ASSERT_TRUE(td()->Determine()) << td()->error();
@ -960,8 +952,8 @@ TEST_F(InspectorGetEntryPointTest, FunctionMultipleInOutVariables) {
mod()->AddFunction(std::move(func));
auto foo = MakeCallerBodyFunction("foo", "func");
foo->add_decoration(std::make_unique<ast::StageDecoration>(
ast::PipelineStage::kVertex, Source{}));
foo->add_decoration(
create<ast::StageDecoration>(ast::PipelineStage::kVertex, Source{}));
mod()->AddFunction(std::move(foo));
ASSERT_TRUE(td()->Determine()) << td()->error();
@ -983,13 +975,13 @@ TEST_F(InspectorGetEntryPointTest, MultipleEntryPointsInOutVariables) {
AddInOutVariables({{"in_var", "out_var"}, {"in2_var", "out2_var"}});
auto foo = MakeInOutVariableBodyFunction("foo", {{"in_var", "out2_var"}});
foo->add_decoration(std::make_unique<ast::StageDecoration>(
ast::PipelineStage::kVertex, Source{}));
foo->add_decoration(
create<ast::StageDecoration>(ast::PipelineStage::kVertex, Source{}));
mod()->AddFunction(std::move(foo));
auto bar = MakeInOutVariableBodyFunction("bar", {{"in2_var", "out_var"}});
bar->add_decoration(std::make_unique<ast::StageDecoration>(
ast::PipelineStage::kCompute, Source{}));
bar->add_decoration(
create<ast::StageDecoration>(ast::PipelineStage::kCompute, Source{}));
mod()->AddFunction(std::move(bar));
ASSERT_TRUE(td()->Determine()) << td()->error();
@ -1022,13 +1014,13 @@ TEST_F(InspectorGetEntryPointTest, MultipleEntryPointsSharedInOutVariables) {
auto foo = MakeInOutVariableCallerBodyFunction("foo", "func",
{{"in_var", "out_var"}});
foo->add_decoration(std::make_unique<ast::StageDecoration>(
ast::PipelineStage::kVertex, Source{}));
foo->add_decoration(
create<ast::StageDecoration>(ast::PipelineStage::kVertex, Source{}));
mod()->AddFunction(std::move(foo));
auto bar = MakeCallerBodyFunction("bar", "func");
bar->add_decoration(std::make_unique<ast::StageDecoration>(
ast::PipelineStage::kCompute, Source{}));
bar->add_decoration(
create<ast::StageDecoration>(ast::PipelineStage::kCompute, Source{}));
mod()->AddFunction(std::move(bar));
ASSERT_TRUE(td()->Determine()) << td()->error();
@ -1079,8 +1071,8 @@ TEST_F(InspectorGetRemappedNameForEntryPointTest, DISABLED_NoEntryPoints) {
// through
TEST_F(InspectorGetRemappedNameForEntryPointTest, DISABLED_OneEntryPoint) {
auto foo = MakeEmptyBodyFunction("foo");
foo->add_decoration(std::make_unique<ast::StageDecoration>(
ast::PipelineStage::kVertex, Source{}));
foo->add_decoration(
create<ast::StageDecoration>(ast::PipelineStage::kVertex, Source{}));
mod()->AddFunction(std::move(foo));
auto result = inspector()->GetRemappedNameForEntryPoint("foo");
@ -1094,13 +1086,13 @@ TEST_F(InspectorGetRemappedNameForEntryPointTest, DISABLED_OneEntryPoint) {
TEST_F(InspectorGetRemappedNameForEntryPointTest,
DISABLED_MultipleEntryPoints) {
auto foo = MakeEmptyBodyFunction("foo");
foo->add_decoration(std::make_unique<ast::StageDecoration>(
ast::PipelineStage::kVertex, Source{}));
foo->add_decoration(
create<ast::StageDecoration>(ast::PipelineStage::kVertex, Source{}));
mod()->AddFunction(std::move(foo));
auto bar = MakeEmptyBodyFunction("bar");
bar->add_decoration(std::make_unique<ast::StageDecoration>(
ast::PipelineStage::kCompute, Source{}));
bar->add_decoration(
create<ast::StageDecoration>(ast::PipelineStage::kCompute, Source{}));
mod()->AddFunction(std::move(bar));
{
@ -1222,8 +1214,8 @@ TEST_F(InspectorGetUniformBufferResourceBindingsTest, NonEntryPointFunc) {
mod()->AddFunction(std::move(ub_func));
auto ep_func = MakeCallerBodyFunction("ep_func", "ub_func");
ep_func->add_decoration(std::make_unique<ast::StageDecoration>(
ast::PipelineStage::kVertex, Source{}));
ep_func->add_decoration(
create<ast::StageDecoration>(ast::PipelineStage::kVertex, Source{}));
mod()->AddFunction(std::move(ep_func));
ASSERT_TRUE(td()->Determine()) << td()->error();
@ -1236,17 +1228,15 @@ TEST_F(InspectorGetUniformBufferResourceBindingsTest, NonEntryPointFunc) {
TEST_F(InspectorGetUniformBufferResourceBindingsTest, MissingBlockDeco) {
ast::StructMemberList members;
ast::StructMemberDecorationList deco;
deco.push_back(
std::make_unique<ast::StructMemberOffsetDecoration>(0, Source{}));
deco.push_back(create<ast::StructMemberOffsetDecoration>(0, Source{}));
members.push_back(std::make_unique<ast::StructMember>(
StructMemberName(members.size(), i32_type()), i32_type(),
std::move(deco)));
members.push_back(
create<ast::StructMember>(StructMemberName(members.size(), i32_type()),
i32_type(), 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));
auto foo_type =
std::make_unique<ast::type::StructType>("foo_type", std::move(str));
@ -1257,8 +1247,8 @@ TEST_F(InspectorGetUniformBufferResourceBindingsTest, MissingBlockDeco) {
mod()->AddFunction(std::move(ub_func));
auto ep_func = MakeCallerBodyFunction("ep_func", "ub_func");
ep_func->add_decoration(std::make_unique<ast::StageDecoration>(
ast::PipelineStage::kVertex, Source{}));
ep_func->add_decoration(
create<ast::StageDecoration>(ast::PipelineStage::kVertex, Source{}));
mod()->AddFunction(std::move(ep_func));
ASSERT_TRUE(td()->Determine()) << td()->error();
@ -1280,8 +1270,8 @@ TEST_F(InspectorGetUniformBufferResourceBindingsTest, Simple) {
mod()->AddFunction(std::move(ub_func));
auto ep_func = MakeCallerBodyFunction("ep_func", "ub_func");
ep_func->add_decoration(std::make_unique<ast::StageDecoration>(
ast::PipelineStage::kVertex, Source{}));
ep_func->add_decoration(
create<ast::StageDecoration>(ast::PipelineStage::kVertex, Source{}));
mod()->AddFunction(std::move(ep_func));
ASSERT_TRUE(td()->Determine()) << td()->error();
@ -1307,8 +1297,8 @@ TEST_F(InspectorGetUniformBufferResourceBindingsTest, MultipleMembers) {
mod()->AddFunction(std::move(ub_func));
auto ep_func = MakeCallerBodyFunction("ep_func", "ub_func");
ep_func->add_decoration(std::make_unique<ast::StageDecoration>(
ast::PipelineStage::kVertex, Source{}));
ep_func->add_decoration(
create<ast::StageDecoration>(ast::PipelineStage::kVertex, Source{}));
mod()->AddFunction(std::move(ep_func));
ASSERT_TRUE(td()->Determine()) << td()->error();
@ -1342,25 +1332,25 @@ TEST_F(InspectorGetUniformBufferResourceBindingsTest, MultipleUniformBuffers) {
AddReferenceFunc("ub_bar_func", "ub_bar");
AddReferenceFunc("ub_baz_func", "ub_baz");
auto AddFuncCall = [](ast::BlockStatement* body, const std::string& callee) {
auto ident_expr = std::make_unique<ast::IdentifierExpression>(callee);
auto call_expr = std::make_unique<ast::CallExpression>(
std::move(ident_expr), ast::ExpressionList());
body->append(std::make_unique<ast::CallStatement>(std::move(call_expr)));
auto AddFuncCall = [&](ast::BlockStatement* body, const std::string& callee) {
auto ident_expr = create<ast::IdentifierExpression>(callee);
auto call_expr = create<ast::CallExpression>(std::move(ident_expr),
ast::ExpressionList());
body->append(create<ast::CallStatement>(std::move(call_expr)));
};
auto body = std::make_unique<ast::BlockStatement>();
auto body = create<ast::BlockStatement>();
AddFuncCall(body.get(), "ub_foo_func");
AddFuncCall(body.get(), "ub_bar_func");
AddFuncCall(body.get(), "ub_baz_func");
body->append(std::make_unique<ast::ReturnStatement>());
std::unique_ptr<ast::Function> func = std::make_unique<ast::Function>(
"ep_func", ast::VariableList(), void_type());
body->append(create<ast::ReturnStatement>());
std::unique_ptr<ast::Function> func =
create<ast::Function>("ep_func", ast::VariableList(), void_type());
func->set_body(std::move(body));
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));
ASSERT_TRUE(td()->Determine()) << td()->error();
@ -1394,8 +1384,8 @@ TEST_F(InspectorGetUniformBufferResourceBindingsTest, ContainingArray) {
mod()->AddFunction(std::move(ub_func));
auto ep_func = MakeCallerBodyFunction("ep_func", "ub_func");
ep_func->add_decoration(std::make_unique<ast::StageDecoration>(
ast::PipelineStage::kVertex, Source{}));
ep_func->add_decoration(
create<ast::StageDecoration>(ast::PipelineStage::kVertex, Source{}));
mod()->AddFunction(std::move(ep_func));
ASSERT_TRUE(td()->Determine()) << td()->error();
@ -1421,8 +1411,8 @@ TEST_F(InspectorGetStorageBufferResourceBindingsTest, Simple) {
mod()->AddFunction(std::move(sb_func));
auto ep_func = MakeCallerBodyFunction("ep_func", "sb_func");
ep_func->add_decoration(std::make_unique<ast::StageDecoration>(
ast::PipelineStage::kVertex, Source{}));
ep_func->add_decoration(
create<ast::StageDecoration>(ast::PipelineStage::kVertex, Source{}));
mod()->AddFunction(std::move(ep_func));
ASSERT_TRUE(td()->Determine()) << td()->error();
@ -1448,8 +1438,8 @@ TEST_F(InspectorGetStorageBufferResourceBindingsTest, MultipleMembers) {
mod()->AddFunction(std::move(sb_func));
auto ep_func = MakeCallerBodyFunction("ep_func", "sb_func");
ep_func->add_decoration(std::make_unique<ast::StageDecoration>(
ast::PipelineStage::kVertex, Source{}));
ep_func->add_decoration(
create<ast::StageDecoration>(ast::PipelineStage::kVertex, Source{}));
mod()->AddFunction(std::move(ep_func));
ASSERT_TRUE(td()->Determine()) << td()->error();
@ -1483,25 +1473,25 @@ TEST_F(InspectorGetStorageBufferResourceBindingsTest, MultipleStorageBuffers) {
AddReferenceFunc("sb_bar_func", "sb_bar");
AddReferenceFunc("sb_baz_func", "sb_baz");
auto AddFuncCall = [](ast::BlockStatement* body, const std::string& callee) {
auto ident_expr = std::make_unique<ast::IdentifierExpression>(callee);
auto call_expr = std::make_unique<ast::CallExpression>(
std::move(ident_expr), ast::ExpressionList());
body->append(std::make_unique<ast::CallStatement>(std::move(call_expr)));
auto AddFuncCall = [&](ast::BlockStatement* body, const std::string& callee) {
auto ident_expr = create<ast::IdentifierExpression>(callee);
auto call_expr = create<ast::CallExpression>(std::move(ident_expr),
ast::ExpressionList());
body->append(create<ast::CallStatement>(std::move(call_expr)));
};
auto body = std::make_unique<ast::BlockStatement>();
auto body = create<ast::BlockStatement>();
AddFuncCall(body.get(), "sb_foo_func");
AddFuncCall(body.get(), "sb_bar_func");
AddFuncCall(body.get(), "sb_baz_func");
body->append(std::make_unique<ast::ReturnStatement>());
std::unique_ptr<ast::Function> func = std::make_unique<ast::Function>(
"ep_func", ast::VariableList(), void_type());
body->append(create<ast::ReturnStatement>());
std::unique_ptr<ast::Function> func =
create<ast::Function>("ep_func", ast::VariableList(), void_type());
func->set_body(std::move(body));
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));
ASSERT_TRUE(td()->Determine()) << td()->error();
@ -1535,8 +1525,8 @@ TEST_F(InspectorGetStorageBufferResourceBindingsTest, ContainingArray) {
mod()->AddFunction(std::move(sb_func));
auto ep_func = MakeCallerBodyFunction("ep_func", "sb_func");
ep_func->add_decoration(std::make_unique<ast::StageDecoration>(
ast::PipelineStage::kVertex, Source{}));
ep_func->add_decoration(
create<ast::StageDecoration>(ast::PipelineStage::kVertex, Source{}));
mod()->AddFunction(std::move(ep_func));
ASSERT_TRUE(td()->Determine()) << td()->error();
@ -1562,8 +1552,8 @@ TEST_F(InspectorGetStorageBufferResourceBindingsTest, ContainingRuntimeArray) {
mod()->AddFunction(std::move(sb_func));
auto ep_func = MakeCallerBodyFunction("ep_func", "sb_func");
ep_func->add_decoration(std::make_unique<ast::StageDecoration>(
ast::PipelineStage::kVertex, Source{}));
ep_func->add_decoration(
create<ast::StageDecoration>(ast::PipelineStage::kVertex, Source{}));
mod()->AddFunction(std::move(ep_func));
ASSERT_TRUE(td()->Determine()) << td()->error();
@ -1589,8 +1579,8 @@ TEST_F(InspectorGetStorageBufferResourceBindingsTest, SkipReadOnly) {
mod()->AddFunction(std::move(sb_func));
auto ep_func = MakeCallerBodyFunction("ep_func", "sb_func");
ep_func->add_decoration(std::make_unique<ast::StageDecoration>(
ast::PipelineStage::kVertex, Source{}));
ep_func->add_decoration(
create<ast::StageDecoration>(ast::PipelineStage::kVertex, Source{}));
mod()->AddFunction(std::move(ep_func));
ASSERT_TRUE(td()->Determine()) << td()->error();
@ -1612,8 +1602,8 @@ TEST_F(InspectorGetReadOnlyStorageBufferResourceBindingsTest, Simple) {
mod()->AddFunction(std::move(sb_func));
auto ep_func = MakeCallerBodyFunction("ep_func", "sb_func");
ep_func->add_decoration(std::make_unique<ast::StageDecoration>(
ast::PipelineStage::kVertex, Source{}));
ep_func->add_decoration(
create<ast::StageDecoration>(ast::PipelineStage::kVertex, Source{}));
mod()->AddFunction(std::move(ep_func));
ASSERT_TRUE(td()->Determine()) << td()->error();
@ -1649,25 +1639,25 @@ TEST_F(InspectorGetReadOnlyStorageBufferResourceBindingsTest,
AddReferenceFunc("sb_bar_func", "sb_bar");
AddReferenceFunc("sb_baz_func", "sb_baz");
auto AddFuncCall = [](ast::BlockStatement* body, const std::string& callee) {
auto ident_expr = std::make_unique<ast::IdentifierExpression>(callee);
auto call_expr = std::make_unique<ast::CallExpression>(
std::move(ident_expr), ast::ExpressionList());
body->append(std::make_unique<ast::CallStatement>(std::move(call_expr)));
auto AddFuncCall = [&](ast::BlockStatement* body, const std::string& callee) {
auto ident_expr = create<ast::IdentifierExpression>(callee);
auto call_expr = create<ast::CallExpression>(std::move(ident_expr),
ast::ExpressionList());
body->append(create<ast::CallStatement>(std::move(call_expr)));
};
auto body = std::make_unique<ast::BlockStatement>();
auto body = create<ast::BlockStatement>();
AddFuncCall(body.get(), "sb_foo_func");
AddFuncCall(body.get(), "sb_bar_func");
AddFuncCall(body.get(), "sb_baz_func");
body->append(std::make_unique<ast::ReturnStatement>());
std::unique_ptr<ast::Function> func = std::make_unique<ast::Function>(
"ep_func", ast::VariableList(), void_type());
body->append(create<ast::ReturnStatement>());
std::unique_ptr<ast::Function> func =
create<ast::Function>("ep_func", ast::VariableList(), void_type());
func->set_body(std::move(body));
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));
ASSERT_TRUE(td()->Determine()) << td()->error();
@ -1702,8 +1692,8 @@ TEST_F(InspectorGetReadOnlyStorageBufferResourceBindingsTest, ContainingArray) {
mod()->AddFunction(std::move(sb_func));
auto ep_func = MakeCallerBodyFunction("ep_func", "sb_func");
ep_func->add_decoration(std::make_unique<ast::StageDecoration>(
ast::PipelineStage::kVertex, Source{}));
ep_func->add_decoration(
create<ast::StageDecoration>(ast::PipelineStage::kVertex, Source{}));
mod()->AddFunction(std::move(ep_func));
ASSERT_TRUE(td()->Determine()) << td()->error();
@ -1731,8 +1721,8 @@ TEST_F(InspectorGetReadOnlyStorageBufferResourceBindingsTest,
mod()->AddFunction(std::move(sb_func));
auto ep_func = MakeCallerBodyFunction("ep_func", "sb_func");
ep_func->add_decoration(std::make_unique<ast::StageDecoration>(
ast::PipelineStage::kVertex, Source{}));
ep_func->add_decoration(
create<ast::StageDecoration>(ast::PipelineStage::kVertex, Source{}));
mod()->AddFunction(std::move(ep_func));
ASSERT_TRUE(td()->Determine()) << td()->error();
@ -1759,8 +1749,8 @@ TEST_F(InspectorGetReadOnlyStorageBufferResourceBindingsTest, SkipNonReadOnly) {
mod()->AddFunction(std::move(sb_func));
auto ep_func = MakeCallerBodyFunction("ep_func", "sb_func");
ep_func->add_decoration(std::make_unique<ast::StageDecoration>(
ast::PipelineStage::kVertex, Source{}));
ep_func->add_decoration(
create<ast::StageDecoration>(ast::PipelineStage::kVertex, Source{}));
mod()->AddFunction(std::move(ep_func));
ASSERT_TRUE(td()->Determine()) << td()->error();
@ -1780,8 +1770,8 @@ TEST_F(InspectorGetSamplerResourceBindingsTest, Simple) {
auto func = MakeSamplerReferenceBodyFunction(
"ep", "foo_texture", "foo_sampler", "foo_coords", f32_type());
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));
ASSERT_TRUE(td()->Determine()) << td()->error();
@ -1796,8 +1786,8 @@ TEST_F(InspectorGetSamplerResourceBindingsTest, Simple) {
TEST_F(InspectorGetSamplerResourceBindingsTest, NoSampler) {
auto func = MakeEmptyBodyFunction("ep_func");
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));
ASSERT_TRUE(td()->Determine()) << td()->error();
@ -1820,8 +1810,8 @@ TEST_F(InspectorGetSamplerResourceBindingsTest, InFunction) {
mod()->AddFunction(std::move(foo_func));
auto ep_func = MakeCallerBodyFunction("ep_func", "foo_func");
ep_func->add_decoration(std::make_unique<ast::StageDecoration>(
ast::PipelineStage::kVertex, Source{}));
ep_func->add_decoration(
create<ast::StageDecoration>(ast::PipelineStage::kVertex, Source{}));
mod()->AddFunction(std::move(ep_func));
ASSERT_TRUE(td()->Determine()) << td()->error();
@ -1843,8 +1833,8 @@ TEST_F(InspectorGetSamplerResourceBindingsTest, UnknownEntryPoint) {
auto func = MakeSamplerReferenceBodyFunction(
"ep", "foo_texture", "foo_sampler", "foo_coords", f32_type());
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));
ASSERT_TRUE(td()->Determine()) << td()->error();
@ -1864,8 +1854,8 @@ TEST_F(InspectorGetSamplerResourceBindingsTest, SkipsComparisonSamplers) {
auto func = MakeComparisonSamplerReferenceBodyFunction(
"ep", "foo_texture", "foo_sampler", "foo_coords", "foo_depth",
f32_type());
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));
ASSERT_TRUE(td()->Determine()) << td()->error();
@ -1887,8 +1877,8 @@ TEST_F(InspectorGetComparisonSamplerResourceBindingsTest, Simple) {
auto func = MakeComparisonSamplerReferenceBodyFunction(
"ep", "foo_texture", "foo_sampler", "foo_coords", "foo_depth",
f32_type());
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));
ASSERT_TRUE(td()->Determine()) << td()->error();
@ -1903,8 +1893,8 @@ TEST_F(InspectorGetComparisonSamplerResourceBindingsTest, Simple) {
TEST_F(InspectorGetComparisonSamplerResourceBindingsTest, NoSampler) {
auto func = MakeEmptyBodyFunction("ep_func");
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));
ASSERT_TRUE(td()->Determine()) << td()->error();
@ -1929,8 +1919,8 @@ TEST_F(InspectorGetComparisonSamplerResourceBindingsTest, InFunction) {
mod()->AddFunction(std::move(foo_func));
auto ep_func = MakeCallerBodyFunction("ep_func", "foo_func");
ep_func->add_decoration(std::make_unique<ast::StageDecoration>(
ast::PipelineStage::kVertex, Source{}));
ep_func->add_decoration(
create<ast::StageDecoration>(ast::PipelineStage::kVertex, Source{}));
mod()->AddFunction(std::move(ep_func));
ASSERT_TRUE(td()->Determine()) << td()->error();
@ -1954,8 +1944,8 @@ TEST_F(InspectorGetComparisonSamplerResourceBindingsTest, UnknownEntryPoint) {
auto func = MakeComparisonSamplerReferenceBodyFunction(
"ep", "foo_texture", "foo_sampler", "foo_coords", "foo_depth",
f32_type());
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));
ASSERT_TRUE(td()->Determine()) << td()->error();
@ -1973,8 +1963,8 @@ TEST_F(InspectorGetComparisonSamplerResourceBindingsTest, SkipsSamplers) {
auto func = MakeSamplerReferenceBodyFunction(
"ep", "foo_texture", "foo_sampler", "foo_coords", f32_type());
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));
ASSERT_TRUE(td()->Determine()) << td()->error();
@ -1987,8 +1977,8 @@ TEST_F(InspectorGetComparisonSamplerResourceBindingsTest, SkipsSamplers) {
TEST_F(InspectorGetSampledTextureResourceBindingsTest, Empty) {
auto foo = MakeEmptyBodyFunction("foo");
foo->add_decoration(std::make_unique<ast::StageDecoration>(
ast::PipelineStage::kVertex, Source{}));
foo->add_decoration(
create<ast::StageDecoration>(ast::PipelineStage::kVertex, Source{}));
mod()->AddFunction(std::move(foo));
auto result = inspector()->GetSampledTextureResourceBindings("foo");
@ -2009,8 +1999,8 @@ TEST_P(InspectorGetSampledTextureResourceBindingsTestWithParam, textureSample) {
auto func = MakeSamplerReferenceBodyFunction(
"ep", "foo_texture", "foo_sampler", "foo_coords",
GetBaseType(GetParam().sampled_kind));
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));
ASSERT_TRUE(td()->Determine()) << td()->error();
@ -2116,8 +2106,8 @@ INSTANTIATE_TEST_SUITE_P(
TEST_F(InspectorGetMultisampledTextureResourceBindingsTest, Empty) {
auto foo = MakeEmptyBodyFunction("foo");
foo->add_decoration(std::make_unique<ast::StageDecoration>(
ast::PipelineStage::kVertex, Source{}));
foo->add_decoration(
create<ast::StageDecoration>(ast::PipelineStage::kVertex, Source{}));
mod()->AddFunction(std::move(foo));
auto result = inspector()->GetSampledTextureResourceBindings("foo");
@ -2139,8 +2129,8 @@ TEST_P(InspectorGetMultisampledTextureResourceBindingsTestWithParam,
auto func = MakeSamplerReferenceBodyFunction(
"ep", "foo_texture", "foo_sampler", "foo_coords",
GetBaseType(GetParam().sampled_kind));
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));
ASSERT_TRUE(td()->Determine()) << td()->error();