Add ProgramBuilder::Alias()
Combines the calls to ty.alias() and AST().AddConstructedType()
Change-Id: I84eaf6275d37141cf8973db7e04d25d9cb9c6351
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/53801
Commit-Queue: Ben Clayton <bclayton@google.com>
Kokoro: Kokoro <noreply+kokoro@google.com>
Reviewed-by: Antonio Maiorano <amaiorano@google.com>
diff --git a/src/resolver/assignment_validation_test.cc b/src/resolver/assignment_validation_test.cc
index b270ec9..7c124b4 100644
--- a/src/resolver/assignment_validation_test.cc
+++ b/src/resolver/assignment_validation_test.cc
@@ -111,8 +111,7 @@
// alias myint = i32;
// var a : myint = 2;
// a = 2
- auto* myint = ty.alias("myint", ty.i32());
- AST().AddConstructedType(myint);
+ auto* myint = Alias("myint", ty.i32());
auto* var = Var("a", myint, ast::StorageClass::kNone, Expr(2));
WrapInFunction(var, Assign(Source{{12, 34}}, "a", 2));
diff --git a/src/resolver/control_block_validation_test.cc b/src/resolver/control_block_validation_test.cc
index a999fbb..a7e7847 100644
--- a/src/resolver/control_block_validation_test.cc
+++ b/src/resolver/control_block_validation_test.cc
@@ -294,7 +294,7 @@
// default: {}
// }
- auto* my_int = ty.alias("MyInt", ty.u32());
+ auto* my_int = Alias("MyInt", ty.u32());
auto* var = Var("a", my_int, ast::StorageClass::kNone, Expr(2u));
ast::CaseSelectorList default_csl;
@@ -304,7 +304,6 @@
default_csl, block_default));
auto* block = Block(Decl(var), create<ast::SwitchStatement>(Expr("a"), body));
- AST().AddConstructedType(my_int);
WrapInFunction(block);
diff --git a/src/resolver/function_validation_test.cc b/src/resolver/function_validation_test.cc
index 1bb927c..94e6791 100644
--- a/src/resolver/function_validation_test.cc
+++ b/src/resolver/function_validation_test.cc
@@ -230,8 +230,7 @@
FunctionTypeMustMatchReturnStatementTypeF32Alias_pass) {
// type myf32 = f32;
// fn func -> myf32 { return 2.0; }
- auto* myf32 = ty.alias("myf32", ty.f32());
- AST().AddConstructedType(myf32);
+ auto* myf32 = Alias("myf32", ty.f32());
Func("func", ast::VariableList{}, myf32,
ast::StatementList{
Return(Source{Source::Location{12, 34}}, Expr(2.f)),
@@ -245,8 +244,7 @@
FunctionTypeMustMatchReturnStatementTypeF32Alias_fail) {
// type myf32 = f32;
// fn func -> myf32 { return 2; }
- auto* myf32 = ty.alias("myf32", ty.f32());
- AST().AddConstructedType(myf32);
+ auto* myf32 = Alias("myf32", ty.f32());
Func("func", ast::VariableList{}, myf32,
ast::StatementList{
Return(Source{Source::Location{12, 34}}, Expr(2u)),
diff --git a/src/resolver/host_shareable_validation_test.cc b/src/resolver/host_shareable_validation_test.cc
index 57e6fbc..e783f1d 100644
--- a/src/resolver/host_shareable_validation_test.cc
+++ b/src/resolver/host_shareable_validation_test.cc
@@ -66,12 +66,10 @@
}
TEST_F(ResolverHostShareableValidationTest, Aliases) {
- auto* a1 = ty.alias("a1", ty.bool_());
- AST().AddConstructedType(a1);
+ auto* a1 = Alias("a1", ty.bool_());
auto* s = Structure("S", {Member(Source{{12, 34}}, "x", a1)},
{create<ast::StructBlockDecoration>()});
- auto* a2 = ty.alias("a2", s);
- AST().AddConstructedType(a2);
+ auto* a2 = Alias("a2", s);
Global(Source{{56, 78}}, "g", a2, ast::StorageClass::kStorage,
ast::Access::kRead,
ast::DecorationList{
@@ -122,14 +120,12 @@
Member(Source{{2, 1}}, "y1", ty.vec3<f32>()),
Member(Source{{3, 1}}, "z1", ty.array<i32, 4>()),
});
- auto* a1 = ty.alias("a1", i1);
- AST().AddConstructedType(a1);
+ auto* a1 = Alias("a1", i1);
auto* i2 = Structure("I2", {
Member(Source{{4, 1}}, "x2", ty.mat2x2<f32>()),
Member(Source{{5, 1}}, "y2", i1),
});
- auto* a2 = ty.alias("a2", i2);
- AST().AddConstructedType(a2);
+ auto* a2 = Alias("a2", i2);
auto* i3 = Structure("I3", {
Member(Source{{4, 1}}, "x3", a1),
Member(Source{{5, 1}}, "y3", i2),
diff --git a/src/resolver/resolver_test.cc b/src/resolver/resolver_test.cc
index 91b8195..f7ed724 100644
--- a/src/resolver/resolver_test.cc
+++ b/src/resolver/resolver_test.cc
@@ -293,8 +293,7 @@
}
TEST_F(ResolverTest, Stmt_VariableDecl_Alias) {
- auto* my_int = ty.alias("MyInt", ty.i32());
- AST().AddConstructedType(my_int);
+ auto* my_int = Alias("MyInt", ty.i32());
auto* var = Var("my_var", my_int, ast::StorageClass::kNone, Expr(2));
auto* init = var->constructor();
@@ -308,10 +307,8 @@
}
TEST_F(ResolverTest, Stmt_VariableDecl_AliasRedeclared) {
- auto* my_int1 = ty.alias(Source{{12, 34}}, "MyInt", ty.i32());
- auto* my_int2 = ty.alias(Source{{56, 78}}, "MyInt", ty.i32());
- AST().AddConstructedType(my_int1);
- AST().AddConstructedType(my_int2);
+ Alias(Source{{12, 34}}, "MyInt", ty.i32());
+ Alias(Source{{56, 78}}, "MyInt", ty.i32());
WrapInFunction();
EXPECT_FALSE(r()->Resolve());
@@ -450,8 +447,7 @@
}
TEST_F(ResolverTest, Expr_ArrayAccessor_Alias_Array) {
- auto* aary = ty.alias("myarrty", ty.array<f32, 3>());
- AST().AddConstructedType(aary);
+ auto* aary = Alias("myarrty", ty.array<f32, 3>());
Global("my_var", aary, ast::StorageClass::kPrivate);
@@ -1124,8 +1120,7 @@
TEST_F(ResolverTest, Expr_MemberAccessor_Struct_Alias) {
auto* st = Structure("S", {Member("first_member", ty.i32()),
Member("second_member", ty.f32())});
- auto* alias = ty.alias("alias", st);
- AST().AddConstructedType(alias);
+ auto* alias = Alias("alias", st);
Global("my_struct", alias, ast::StorageClass::kInput);
auto* mem = MemberAccessor("my_struct", "second_member");
diff --git a/src/resolver/storage_class_validation_test.cc b/src/resolver/storage_class_validation_test.cc
index 29c8945..033e7f6 100644
--- a/src/resolver/storage_class_validation_test.cc
+++ b/src/resolver/storage_class_validation_test.cc
@@ -86,8 +86,7 @@
TEST_F(ResolverStorageClassValidationTest, StorageBufferBoolAlias) {
// type a = bool;
// var<storage, read> g : a;
- auto* a = ty.alias("a", ty.bool_());
- AST().AddConstructedType(a);
+ auto* a = Alias("a", ty.bool_());
Global(Source{{56, 78}}, "g", a, ast::StorageClass::kStorage,
ast::DecorationList{
create<ast::BindingDecoration>(0),
@@ -141,10 +140,8 @@
// var<storage, read> g : a1;
auto* s = Structure("S", {Member(Source{{12, 34}}, "x", ty.i32())},
{create<ast::StructBlockDecoration>()});
- auto* a1 = ty.alias("a1", s);
- AST().AddConstructedType(a1);
- auto* a2 = ty.alias("a2", a1);
- AST().AddConstructedType(a2);
+ auto* a1 = Alias("a1", s);
+ auto* a2 = Alias("a2", a1);
Global(Source{{56, 78}}, "g", a2, ast::StorageClass::kStorage,
ast::Access::kRead,
ast::DecorationList{
@@ -208,8 +205,7 @@
TEST_F(ResolverStorageClassValidationTest, UniformBufferBoolAlias) {
// type a = bool;
// var<uniform> g : a;
- auto* a = ty.alias("a", ty.bool_());
- AST().AddConstructedType(a);
+ auto* a = Alias("a", ty.bool_());
Global(Source{{56, 78}}, "g", a, ast::StorageClass::kUniform,
ast::DecorationList{
create<ast::BindingDecoration>(0),
@@ -261,8 +257,7 @@
// var<uniform> g : a1;
auto* s = Structure("S", {Member(Source{{12, 34}}, "x", ty.i32())},
{create<ast::StructBlockDecoration>()});
- auto* a1 = ty.alias("a1", s);
- AST().AddConstructedType(a1);
+ auto* a1 = Alias("a1", s);
Global(Source{{56, 78}}, "g", a1, ast::StorageClass::kUniform,
ast::DecorationList{
create<ast::BindingDecoration>(0),
diff --git a/src/resolver/struct_layout_test.cc b/src/resolver/struct_layout_test.cc
index 667020c..be0e808 100644
--- a/src/resolver/struct_layout_test.cc
+++ b/src/resolver/struct_layout_test.cc
@@ -52,10 +52,8 @@
}
TEST_F(ResolverStructLayoutTest, Alias) {
- auto* alias_a = ty.alias("a", ty.f32());
- AST().AddConstructedType(alias_a);
- auto* alias_b = ty.alias("b", ty.f32());
- AST().AddConstructedType(alias_b);
+ auto* alias_a = Alias("a", ty.f32());
+ auto* alias_b = Alias("b", ty.f32());
auto* s = Structure("S", {
Member("a", alias_a),
diff --git a/src/resolver/struct_pipeline_stage_use_test.cc b/src/resolver/struct_pipeline_stage_use_test.cc
index b6d5655..4c481a5 100644
--- a/src/resolver/struct_pipeline_stage_use_test.cc
+++ b/src/resolver/struct_pipeline_stage_use_test.cc
@@ -158,8 +158,7 @@
TEST_F(ResolverPipelineStageUseTest, StructUsedAsShaderParamViaAlias) {
auto* s = Structure("S", {Member("a", ty.f32(), {Location(0)})});
- auto* s_alias = ty.alias("S_alias", s);
- AST().AddConstructedType(s_alias);
+ auto* s_alias = Alias("S_alias", s);
Func("main", {Param("param", s_alias)}, ty.void_(), {},
{Stage(ast::PipelineStage::kFragment)});
@@ -174,8 +173,7 @@
TEST_F(ResolverPipelineStageUseTest, StructUsedAsShaderReturnTypeViaAlias) {
auto* s = Structure("S", {Member("a", ty.f32(), {Location(0)})});
- auto* s_alias = ty.alias("S_alias", s);
- AST().AddConstructedType(s_alias);
+ auto* s_alias = Alias("S_alias", s);
Func("main", {}, s_alias, {Return(Construct(s_alias, Expr(0.f)))},
{Stage(ast::PipelineStage::kFragment)});
diff --git a/src/resolver/struct_storage_class_use_test.cc b/src/resolver/struct_storage_class_use_test.cc
index 7a83ab0..8af99be 100644
--- a/src/resolver/struct_storage_class_use_test.cc
+++ b/src/resolver/struct_storage_class_use_test.cc
@@ -78,8 +78,7 @@
TEST_F(ResolverStorageClassUseTest, StructReachableViaGlobalAlias) {
auto* s = Structure("S", {Member("a", ty.f32())});
- auto* a = ty.alias("A", s);
- AST().AddConstructedType(a);
+ auto* a = Alias("A", s);
Global("g", a, ast::StorageClass::kPrivate);
ASSERT_TRUE(r()->Resolve()) << r()->error();
@@ -131,8 +130,7 @@
TEST_F(ResolverStorageClassUseTest, StructReachableViaLocalAlias) {
auto* s = Structure("S", {Member("a", ty.f32())});
- auto* a = ty.alias("A", s);
- AST().AddConstructedType(a);
+ auto* a = Alias("A", s);
WrapInFunction(Var("g", a));
ASSERT_TRUE(r()->Resolve()) << r()->error();
diff --git a/src/resolver/type_validation_test.cc b/src/resolver/type_validation_test.cc
index 5c9973e..2eb0707 100644
--- a/src/resolver/type_validation_test.cc
+++ b/src/resolver/type_validation_test.cc
@@ -338,9 +338,7 @@
// a: u32;
//}
- auto* alias = ty.alias("RTArr", ty.array<u32>());
- AST().AddConstructedType(alias);
-
+ auto* alias = Alias("RTArr", ty.array<u32>());
Structure("s",
{
Member(Source{{12, 34}}, "b", alias),
@@ -365,9 +363,7 @@
// b: RTArr;
//}
- auto* alias = ty.alias("RTArr", ty.array<u32>());
- AST().AddConstructedType(alias);
-
+ auto* alias = Alias("RTArr", ty.array<u32>());
Structure("s",
{
Member("a", ty.u32()),
diff --git a/src/resolver/validation_test.cc b/src/resolver/validation_test.cc
index 07356a7..e271bdc 100644
--- a/src/resolver/validation_test.cc
+++ b/src/resolver/validation_test.cc
@@ -1708,8 +1708,7 @@
}
TEST_F(ResolverValidationTest, Expr_Constructor_Vector_Alias_Argument_Error) {
- auto* alias = ty.alias("UnsignedInt", ty.u32());
- AST().AddConstructedType(alias);
+ auto* alias = Alias("UnsignedInt", ty.u32());
Global("uint_var", alias, ast::StorageClass::kInput);
auto* tc = vec2<f32>(Expr(Source{{12, 34}}, "uint_var"));
@@ -1722,10 +1721,8 @@
}
TEST_F(ResolverValidationTest, Expr_Constructor_Vector_Alias_Argument_Success) {
- auto* f32_alias = ty.alias("Float32", ty.f32());
- auto* vec2_alias = ty.alias("VectorFloat2", ty.vec2<f32>());
- AST().AddConstructedType(f32_alias);
- AST().AddConstructedType(vec2_alias);
+ auto* f32_alias = Alias("Float32", ty.f32());
+ auto* vec2_alias = Alias("VectorFloat2", ty.vec2<f32>());
Global("my_f32", f32_alias, ast::StorageClass::kInput);
Global("my_vec2", vec2_alias, ast::StorageClass::kInput);
@@ -1735,8 +1732,7 @@
}
TEST_F(ResolverValidationTest, Expr_Constructor_Vector_ElementTypeAlias_Error) {
- auto* f32_alias = ty.alias("Float32", ty.f32());
- AST().AddConstructedType(f32_alias);
+ auto* f32_alias = Alias("Float32", ty.f32());
// vec2<Float32>(1.0f, 1u)
auto* vec_type = ty.vec(f32_alias, 2);
@@ -1754,8 +1750,7 @@
TEST_F(ResolverValidationTest,
Expr_Constructor_Vector_ElementTypeAlias_Success) {
- auto* f32_alias = ty.alias("Float32", ty.f32());
- AST().AddConstructedType(f32_alias);
+ auto* f32_alias = Alias("Float32", ty.f32());
// vec2<Float32>(1.0f, 1.0f)
auto* vec_type = ty.vec(f32_alias, 2);
@@ -1768,8 +1763,7 @@
TEST_F(ResolverValidationTest,
Expr_Constructor_Vector_ArgumentElementTypeAlias_Error) {
- auto* f32_alias = ty.alias("Float32", ty.f32());
- AST().AddConstructedType(f32_alias);
+ auto* f32_alias = Alias("Float32", ty.f32());
// vec3<u32>(vec<Float32>(), 1.0f)
auto* vec_type = ty.vec(f32_alias, 2);
@@ -1786,8 +1780,7 @@
TEST_F(ResolverValidationTest,
Expr_Constructor_Vector_ArgumentElementTypeAlias_Success) {
- auto* f32_alias = ty.alias("Float32", ty.f32());
- AST().AddConstructedType(f32_alias);
+ auto* f32_alias = Alias("Float32", ty.f32());
// vec3<f32>(vec<Float32>(), 1.0f)
auto* vec_type = ty.vec(f32_alias, 2);
@@ -2017,8 +2010,7 @@
// matNxM<Float32>(vecM<u32>(), ...); with N arguments
const auto param = GetParam();
- auto* f32_alias = ty.alias("Float32", ty.f32());
- AST().AddConstructedType(f32_alias);
+ auto* f32_alias = Alias("Float32", ty.f32());
ast::ExpressionList args;
for (uint32_t i = 1; i <= param.columns; i++) {
@@ -2043,8 +2035,7 @@
// matNxM<Float32>(vecM<f32>(), ...); with N arguments
const auto param = GetParam();
- auto* f32_alias = ty.alias("Float32", ty.f32());
- AST().AddConstructedType(f32_alias);
+ auto* f32_alias = Alias("Float32", ty.f32());
ast::ExpressionList args;
for (uint32_t i = 1; i <= param.columns; i++) {
@@ -2062,8 +2053,7 @@
}
TEST_F(ResolverValidationTest, Expr_MatrixConstructor_ArgumentTypeAlias_Error) {
- auto* alias = ty.alias("VectorUnsigned2", ty.vec2<u32>());
- AST().AddConstructedType(alias);
+ auto* alias = Alias("VectorUnsigned2", ty.vec2<u32>());
auto* tc = mat2x2<f32>(
create<ast::TypeConstructorExpression>(
Source{{12, 34}}, ty.MaybeCreateTypename(alias), ExprList()),
@@ -2080,8 +2070,7 @@
const auto param = GetParam();
auto* matrix_type = ty.mat<f32>(param.columns, param.rows);
auto* vec_type = ty.vec<f32>(param.rows);
- auto* vec_alias = ty.alias("VectorFloat2", vec_type);
- AST().AddConstructedType(vec_alias);
+ auto* vec_alias = Alias("VectorFloat2", vec_type);
ast::ExpressionList args;
for (uint32_t i = 1; i <= param.columns; i++) {
@@ -2099,8 +2088,7 @@
TEST_P(MatrixConstructorTest, Expr_Constructor_ArgumentElementTypeAlias_Error) {
const auto param = GetParam();
auto* matrix_type = ty.mat<f32>(param.columns, param.rows);
- auto* f32_alias = ty.alias("UnsignedInt", ty.u32());
- AST().AddConstructedType(f32_alias);
+ auto* f32_alias = Alias("UnsignedInt", ty.u32());
ast::ExpressionList args;
for (uint32_t i = 1; i <= param.columns; i++) {
@@ -2123,8 +2111,7 @@
TEST_P(MatrixConstructorTest,
Expr_Constructor_ArgumentElementTypeAlias_Success) {
const auto param = GetParam();
- auto* f32_alias = ty.alias("Float32", ty.f32());
- AST().AddConstructedType(f32_alias);
+ auto* f32_alias = Alias("Float32", ty.f32());
ast::ExpressionList args;
for (uint32_t i = 1; i <= param.columns; i++) {
diff --git a/src/resolver/var_let_test.cc b/src/resolver/var_let_test.cc
index a351ac3..84b4ae7 100644
--- a/src/resolver/var_let_test.cc
+++ b/src/resolver/var_let_test.cc
@@ -39,8 +39,7 @@
// }
auto* S = Structure("S", {Member("i", ty.i32())});
- auto* A = ty.alias("A", S);
- AST().AddConstructedType(A);
+ auto* A = Alias("A", S);
auto* i = Var("i", ty.i32(), ast::StorageClass::kNone);
auto* u = Var("u", ty.u32(), ast::StorageClass::kNone);
@@ -91,8 +90,7 @@
// }
auto* S = Structure("S", {Member("i", ty.i32())});
- auto* A = ty.alias("A", S);
- AST().AddConstructedType(A);
+ auto* A = Alias("A", S);
auto* v = Var("v", ty.i32(), ast::StorageClass::kNone);
auto* i = Const("i", ty.i32(), Expr(1));
diff --git a/src/resolver/var_let_validation_test.cc b/src/resolver/var_let_validation_test.cc
index 96ada20..0fa67e8 100644
--- a/src/resolver/var_let_validation_test.cc
+++ b/src/resolver/var_let_validation_test.cc
@@ -80,8 +80,7 @@
}
TEST_F(ResolverVarLetValidationTest, LetConstructorWrongTypeViaAlias) {
- auto* a = ty.alias("I32", ty.i32());
- AST().AddConstructedType(a);
+ auto* a = Alias("I32", ty.i32());
WrapInFunction(Const(Source{{3, 3}}, "v", a, Expr(2u)));
EXPECT_FALSE(r()->Resolve());
@@ -91,8 +90,7 @@
}
TEST_F(ResolverVarLetValidationTest, VarConstructorWrongTypeViaAlias) {
- auto* a = ty.alias("I32", ty.i32());
- AST().AddConstructedType(a);
+ auto* a = Alias("I32", ty.i32());
WrapInFunction(
Var(Source{{3, 3}}, "v", a, ast::StorageClass::kNone, Expr(2u)));