Have TypesBuilder::u32() return ast::U32
Bug: tint:724
Change-Id: I23a26dadcb6037e3eb2b4c46e727da37e84c1fc1
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/49342
Auto-Submit: Ben Clayton <bclayton@google.com>
Kokoro: Kokoro <noreply+kokoro@google.com>
Reviewed-by: Antonio Maiorano <amaiorano@google.com>
diff --git a/src/intrinsic_table_test.cc b/src/intrinsic_table_test.cc
index 8065f03..b84f1ab 100644
--- a/src/intrinsic_table_test.cc
+++ b/src/intrinsic_table_test.cc
@@ -53,13 +53,14 @@
}
TEST_F(IntrinsicTableTest, MatchU32) {
- auto result = table->Lookup(*this, IntrinsicType::kUnpack2x16Float,
- {ty.u32()}, Source{});
+ auto* u32 = create<sem::U32>();
+ auto result =
+ table->Lookup(*this, IntrinsicType::kUnpack2x16Float, {u32}, Source{});
ASSERT_NE(result.intrinsic, nullptr);
ASSERT_EQ(result.diagnostics.str(), "");
EXPECT_THAT(result.intrinsic->Type(), IntrinsicType::kUnpack2x16Float);
EXPECT_THAT(result.intrinsic->ReturnType(), ty.vec2<f32>());
- EXPECT_THAT(result.intrinsic->Parameters(), ElementsAre(Parameter{ty.u32()}));
+ EXPECT_THAT(result.intrinsic->Parameters(), ElementsAre(Parameter{u32}));
}
TEST_F(IntrinsicTableTest, MismatchU32) {
@@ -102,13 +103,14 @@
}
TEST_F(IntrinsicTableTest, MatchIU32AsU32) {
+ auto* u32 = create<sem::U32>();
auto result =
- table->Lookup(*this, IntrinsicType::kCountOneBits, {ty.u32()}, Source{});
+ table->Lookup(*this, IntrinsicType::kCountOneBits, {u32}, Source{});
ASSERT_NE(result.intrinsic, nullptr);
ASSERT_EQ(result.diagnostics.str(), "");
EXPECT_THAT(result.intrinsic->Type(), IntrinsicType::kCountOneBits);
- EXPECT_THAT(result.intrinsic->ReturnType(), ty.u32());
- EXPECT_THAT(result.intrinsic->Parameters(), ElementsAre(Parameter{ty.u32()}));
+ EXPECT_THAT(result.intrinsic->ReturnType(), u32);
+ EXPECT_THAT(result.intrinsic->Parameters(), ElementsAre(Parameter{u32}));
}
TEST_F(IntrinsicTableTest, MismatchIU32) {
@@ -131,15 +133,15 @@
}
TEST_F(IntrinsicTableTest, MatchFIU32AsU32) {
- auto result = table->Lookup(*this, IntrinsicType::kClamp,
- {ty.u32(), ty.u32(), ty.u32()}, Source{});
+ auto* u32 = create<sem::U32>();
+ auto result =
+ table->Lookup(*this, IntrinsicType::kClamp, {u32, u32, u32}, Source{});
ASSERT_NE(result.intrinsic, nullptr);
ASSERT_EQ(result.diagnostics.str(), "");
EXPECT_THAT(result.intrinsic->Type(), IntrinsicType::kClamp);
- EXPECT_THAT(result.intrinsic->ReturnType(), ty.u32());
+ EXPECT_THAT(result.intrinsic->ReturnType(), u32);
EXPECT_THAT(result.intrinsic->Parameters(),
- ElementsAre(Parameter{ty.u32()}, Parameter{ty.u32()},
- Parameter{ty.u32()}));
+ ElementsAre(Parameter{u32}, Parameter{u32}, Parameter{u32}));
}
TEST_F(IntrinsicTableTest, MatchFIU32AsF32) {
@@ -208,7 +210,7 @@
ASSERT_NE(result.intrinsic, nullptr);
ASSERT_EQ(result.diagnostics.str(), "");
EXPECT_THAT(result.intrinsic->Type(), IntrinsicType::kArrayLength);
- EXPECT_THAT(result.intrinsic->ReturnType(), ty.u32());
+ EXPECT_TRUE(result.intrinsic->ReturnType()->Is<sem::U32>());
ASSERT_EQ(result.intrinsic->Parameters().size(), 1u);
EXPECT_TRUE(result.intrinsic->Parameters()[0].type->Is<sem::Array>());
}
@@ -371,8 +373,9 @@
}
TEST_F(IntrinsicTableTest, MismatchOpenType) {
+ auto* u32 = create<sem::U32>();
auto result = table->Lookup(*this, IntrinsicType::kClamp,
- {ty.f32(), ty.u32(), ty.f32()}, Source{});
+ {ty.f32(), u32, ty.f32()}, Source{});
ASSERT_EQ(result.intrinsic, nullptr);
ASSERT_THAT(result.diagnostics.str(), HasSubstr("no matching call"));
}
@@ -391,9 +394,9 @@
}
TEST_F(IntrinsicTableTest, MismatchOpenSizeVector) {
- auto result =
- table->Lookup(*this, IntrinsicType::kClamp,
- {ty.vec2<f32>(), ty.vec2<u32>(), ty.vec2<f32>()}, Source{});
+ auto* u32 = create<sem::U32>();
+ auto result = table->Lookup(*this, IntrinsicType::kClamp,
+ {ty.vec2<f32>(), u32, ty.vec2<f32>()}, Source{});
ASSERT_EQ(result.intrinsic, nullptr);
ASSERT_THAT(result.diagnostics.str(), HasSubstr("no matching call"));
}
diff --git a/src/program_builder.h b/src/program_builder.h
index 05acee4..dddf340 100644
--- a/src/program_builder.h
+++ b/src/program_builder.h
@@ -388,14 +388,12 @@
}
/// @returns a u32 type
- typ::U32 u32() const {
- return {builder->create<ast::U32>(), builder->create<sem::U32>()};
- }
+ typ::U32 u32() const { return builder->create<ast::U32>(); }
/// @param source the Source of the node
/// @returns a u32 type
typ::U32 u32(const Source& source) const {
- return {builder->create<ast::U32>(source), builder->create<sem::U32>()};
+ return builder->create<ast::U32>(source);
}
/// @returns a void type
diff --git a/src/resolver/is_host_shareable_test.cc b/src/resolver/is_host_shareable_test.cc
index fef601b..9a434ef 100644
--- a/src/resolver/is_host_shareable_test.cc
+++ b/src/resolver/is_host_shareable_test.cc
@@ -33,7 +33,7 @@
TEST_F(ResolverIsHostShareable, NumericScalar) {
EXPECT_TRUE(r()->IsHostShareable(ty.i32()));
- EXPECT_TRUE(r()->IsHostShareable(ty.u32()));
+ EXPECT_TRUE(r()->IsHostShareable(create<sem::U32>()));
EXPECT_TRUE(r()->IsHostShareable(ty.f32()));
}
@@ -41,9 +41,9 @@
EXPECT_TRUE(r()->IsHostShareable(ty.vec2<i32>()));
EXPECT_TRUE(r()->IsHostShareable(ty.vec3<i32>()));
EXPECT_TRUE(r()->IsHostShareable(ty.vec4<i32>()));
- EXPECT_TRUE(r()->IsHostShareable(ty.vec2<u32>()));
- EXPECT_TRUE(r()->IsHostShareable(ty.vec3<u32>()));
- EXPECT_TRUE(r()->IsHostShareable(ty.vec4<u32>()));
+ EXPECT_TRUE(r()->IsHostShareable(create<sem::Vector>(create<sem::U32>(), 2)));
+ EXPECT_TRUE(r()->IsHostShareable(create<sem::Vector>(create<sem::U32>(), 3)));
+ EXPECT_TRUE(r()->IsHostShareable(create<sem::Vector>(create<sem::U32>(), 4)));
EXPECT_TRUE(r()->IsHostShareable(ty.vec2<f32>()));
EXPECT_TRUE(r()->IsHostShareable(ty.vec3<f32>()));
EXPECT_TRUE(r()->IsHostShareable(ty.vec4<f32>()));
diff --git a/src/resolver/is_storeable_test.cc b/src/resolver/is_storeable_test.cc
index 2b79ce4..9b25f82 100644
--- a/src/resolver/is_storeable_test.cc
+++ b/src/resolver/is_storeable_test.cc
@@ -30,7 +30,7 @@
TEST_F(ResolverIsStorableTest, Scalar) {
EXPECT_TRUE(r()->IsStorable(ty.bool_()));
EXPECT_TRUE(r()->IsStorable(ty.i32()));
- EXPECT_TRUE(r()->IsStorable(ty.u32()));
+ EXPECT_TRUE(r()->IsStorable(create<sem::U32>()));
EXPECT_TRUE(r()->IsStorable(ty.f32()));
}
@@ -38,9 +38,9 @@
EXPECT_TRUE(r()->IsStorable(ty.vec2<i32>()));
EXPECT_TRUE(r()->IsStorable(ty.vec3<i32>()));
EXPECT_TRUE(r()->IsStorable(ty.vec4<i32>()));
- EXPECT_TRUE(r()->IsStorable(ty.vec2<u32>()));
- EXPECT_TRUE(r()->IsStorable(ty.vec3<u32>()));
- EXPECT_TRUE(r()->IsStorable(ty.vec4<u32>()));
+ EXPECT_TRUE(r()->IsStorable(create<sem::Vector>(create<sem::U32>(), 2)));
+ EXPECT_TRUE(r()->IsStorable(create<sem::Vector>(create<sem::U32>(), 3)));
+ EXPECT_TRUE(r()->IsStorable(create<sem::Vector>(create<sem::U32>(), 4)));
EXPECT_TRUE(r()->IsStorable(ty.vec2<f32>()));
EXPECT_TRUE(r()->IsStorable(ty.vec3<f32>()));
EXPECT_TRUE(r()->IsStorable(ty.vec4<f32>()));
diff --git a/src/resolver/resolver_test.cc b/src/resolver/resolver_test.cc
index 41e15e2..8d7a610 100644
--- a/src/resolver/resolver_test.cc
+++ b/src/resolver/resolver_test.cc
@@ -761,7 +761,7 @@
EXPECT_EQ(func_sem->Parameters().size(), 3u);
EXPECT_EQ(func_sem->Parameters()[0]->Type(), ty.f32());
EXPECT_EQ(func_sem->Parameters()[1]->Type(), ty.i32());
- EXPECT_EQ(func_sem->Parameters()[2]->Type(), ty.u32());
+ EXPECT_TRUE(func_sem->Parameters()[2]->Type()->Is<sem::U32>());
EXPECT_EQ(func_sem->Parameters()[0]->Declaration(), param_a);
EXPECT_EQ(func_sem->Parameters()[1]->Declaration(), param_b);
EXPECT_EQ(func_sem->Parameters()[2]->Declaration(), param_c);
diff --git a/src/typepair.h b/src/typepair.h
index bcbf4c6..efe8acd 100644
--- a/src/typepair.h
+++ b/src/typepair.h
@@ -252,10 +252,11 @@
using StorageTexture = TypePair<ast::StorageTexture, sem::StorageTexture>;
using Struct = TypePair<ast::Struct, sem::Struct>;
using Texture = TypePair<ast::Texture, sem::Texture>;
-using U32 = TypePair<ast::U32, sem::U32>;
using Vector = TypePair<ast::Vector, sem::Vector>;
using Void = TypePair<ast::Void, sem::Void>;
+using U32 = Ptr<ast::U32>;
+
// Helpers
/// Makes a type pair, deducing the return type from input args
diff --git a/src/writer/hlsl/generator_impl_type_test.cc b/src/writer/hlsl/generator_impl_type_test.cc
index 288b604..4994859 100644
--- a/src/writer/hlsl/generator_impl_type_test.cc
+++ b/src/writer/hlsl/generator_impl_type_test.cc
@@ -282,7 +282,7 @@
}
TEST_F(HlslGeneratorImplTest_Type, EmitType_U32) {
- auto u32 = ty.u32();
+ auto* u32 = create<sem::U32>();
GeneratorImpl& gen = Build();
diff --git a/src/writer/wgsl/generator_impl_type_test.cc b/src/writer/wgsl/generator_impl_type_test.cc
index f0005c1..cdd291e 100644
--- a/src/writer/wgsl/generator_impl_type_test.cc
+++ b/src/writer/wgsl/generator_impl_type_test.cc
@@ -276,7 +276,6 @@
TEST_F(WgslGeneratorImplTest, EmitType_U32) {
auto u32 = ty.u32();
- AST().AddConstructedType(ty.alias("make_type_reachable", u32));
GeneratorImpl& gen = Build();