Have TypesBuilder::void_() return ast::Void

Bug: tint:724
Change-Id: Ie4876c06f9b67601a9601b77bdcaeec94145938e
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/51661
Auto-Submit: Ben Clayton <bclayton@google.com>
Commit-Queue: Ben Clayton <bclayton@chromium.org>
Reviewed-by: Antonio Maiorano <amaiorano@google.com>
diff --git a/src/intrinsic_table_test.cc b/src/intrinsic_table_test.cc
index 7ee87e8..4db434d 100644
--- a/src/intrinsic_table_test.cc
+++ b/src/intrinsic_table_test.cc
@@ -373,7 +373,7 @@
   ASSERT_NE(result.intrinsic, nullptr);
   ASSERT_EQ(result.diagnostics.str(), "");
   EXPECT_THAT(result.intrinsic->Type(), IntrinsicType::kTextureStore);
-  EXPECT_THAT(result.intrinsic->ReturnType(), ty.void_());
+  EXPECT_TRUE(result.intrinsic->ReturnType()->Is<sem::Void>());
   EXPECT_THAT(result.intrinsic->Parameters(),
               ElementsAre(Parameter{tex, Parameter::Usage::kTexture},
                           Parameter{vec2_i32, Parameter::Usage::kCoords},
diff --git a/src/program_builder.h b/src/program_builder.h
index 186d6f9..1ddc135 100644
--- a/src/program_builder.h
+++ b/src/program_builder.h
@@ -391,14 +391,12 @@
     }
 
     /// @returns a void type
-    typ::Void void_() const {
-      return {builder->create<ast::Void>(), builder->create<sem::Void>()};
-    }
+    typ::Void void_() const { return {builder->create<ast::Void>()}; }
 
     /// @param source the Source of the node
     /// @returns a void type
     typ::Void void_(const Source& source) const {
-      return {builder->create<ast::Void>(source), builder->create<sem::Void>()};
+      return {builder->create<ast::Void>(source)};
     }
 
     /// @param type vector subtype
diff --git a/src/resolver/intrinsic_test.cc b/src/resolver/intrinsic_test.cc
index cbcc1fc..69a8001 100644
--- a/src/resolver/intrinsic_test.cc
+++ b/src/resolver/intrinsic_test.cc
@@ -1964,7 +1964,7 @@
   } else if (std::string(param.function) == "textureNumSamples") {
     EXPECT_TRUE(TypeOf(call)->Is<sem::I32>());
   } else if (std::string(param.function) == "textureStore") {
-    EXPECT_EQ(TypeOf(call), ty.void_());
+    EXPECT_TRUE(TypeOf(call)->Is<sem::Void>());
   } else {
     switch (param.texture_kind) {
       case ast::intrinsic::test::TextureKind::kRegular:
diff --git a/src/resolver/is_host_shareable_test.cc b/src/resolver/is_host_shareable_test.cc
index 0af2e5a..d3c7f17 100644
--- a/src/resolver/is_host_shareable_test.cc
+++ b/src/resolver/is_host_shareable_test.cc
@@ -24,7 +24,7 @@
 using ResolverIsHostShareable = ResolverTest;
 
 TEST_F(ResolverIsHostShareable, Void) {
-  EXPECT_FALSE(r()->IsHostShareable(ty.void_()));
+  EXPECT_FALSE(r()->IsHostShareable(create<sem::Void>()));
 }
 
 TEST_F(ResolverIsHostShareable, Bool) {
diff --git a/src/resolver/is_storeable_test.cc b/src/resolver/is_storeable_test.cc
index 55d3a78..084deb4 100644
--- a/src/resolver/is_storeable_test.cc
+++ b/src/resolver/is_storeable_test.cc
@@ -24,7 +24,7 @@
 using ResolverIsStorableTest = ResolverTest;
 
 TEST_F(ResolverIsStorableTest, Void) {
-  EXPECT_FALSE(r()->IsStorable(ty.void_()));
+  EXPECT_FALSE(r()->IsStorable(create<sem::Void>()));
 }
 
 TEST_F(ResolverIsStorableTest, Scalar) {
diff --git a/src/resolver/resolver.cc b/src/resolver/resolver.cc
index b2f589f..246c2da 100644
--- a/src/resolver/resolver.cc
+++ b/src/resolver/resolver.cc
@@ -2948,7 +2948,7 @@
   auto* func_type = current_function_->return_type;
 
   auto* ret_type = ret->has_value() ? TypeOf(ret->value())->UnwrapRef()
-                                    : builder_->ty.void_();
+                                    : builder_->create<sem::Void>();
 
   if (func_type->UnwrapRef() != ret_type) {
     diagnostics_.add_error("v-000y",
diff --git a/src/typepair.h b/src/typepair.h
index c8844b0..4a6762a 100644
--- a/src/typepair.h
+++ b/src/typepair.h
@@ -250,12 +250,12 @@
 using Struct = TypePair<ast::Struct, sem::Struct>;
 using Texture = TypePair<ast::Texture, sem::Texture>;
 using Vector = TypePair<ast::Vector, sem::Vector>;
-using Void = TypePair<ast::Void, sem::Void>;
 
 using Bool = Ptr<ast::Bool>;
 using U32 = Ptr<ast::U32>;
 using I32 = Ptr<ast::I32>;
 using F32 = Ptr<ast::F32>;
+using Void = Ptr<ast::Void>;
 
 // Helpers
 
diff --git a/src/writer/hlsl/generator_impl_type_test.cc b/src/writer/hlsl/generator_impl_type_test.cc
index 908c2a2..0418044 100644
--- a/src/writer/hlsl/generator_impl_type_test.cc
+++ b/src/writer/hlsl/generator_impl_type_test.cc
@@ -308,7 +308,7 @@
 }
 
 TEST_F(HlslGeneratorImplTest_Type, EmitType_Void) {
-  auto void_ = ty.void_();
+  auto* void_ = create<sem::Void>();
 
   GeneratorImpl& gen = Build();
 
@@ -319,22 +319,22 @@
 }
 
 TEST_F(HlslGeneratorImplTest_Type, EmitSampler) {
-  sem::Sampler sampler(ast::SamplerKind::kSampler);
+  auto* sampler = create<sem::Sampler>(ast::SamplerKind::kSampler);
 
   GeneratorImpl& gen = Build();
 
-  ASSERT_TRUE(gen.EmitType(out, &sampler, ast::StorageClass::kNone,
+  ASSERT_TRUE(gen.EmitType(out, sampler, ast::StorageClass::kNone,
                            ast::AccessControl::kInvalid, ""))
       << gen.error();
   EXPECT_EQ(result(), "SamplerState");
 }
 
 TEST_F(HlslGeneratorImplTest_Type, EmitSamplerComparison) {
-  sem::Sampler sampler(ast::SamplerKind::kComparisonSampler);
+  auto* sampler = create<sem::Sampler>(ast::SamplerKind::kComparisonSampler);
 
   GeneratorImpl& gen = Build();
 
-  ASSERT_TRUE(gen.EmitType(out, &sampler, ast::StorageClass::kNone,
+  ASSERT_TRUE(gen.EmitType(out, sampler, ast::StorageClass::kNone,
                            ast::AccessControl::kInvalid, ""))
       << gen.error();
   EXPECT_EQ(result(), "SamplerComparisonState");
diff --git a/src/writer/msl/generator_impl_type_test.cc b/src/writer/msl/generator_impl_type_test.cc
index 9e282ab..e9becc1 100644
--- a/src/writer/msl/generator_impl_type_test.cc
+++ b/src/writer/msl/generator_impl_type_test.cc
@@ -647,7 +647,7 @@
 }
 
 TEST_F(MslGeneratorImplTest, EmitType_Void) {
-  auto void_ = ty.void_();
+  auto* void_ = create<sem::Void>();
 
   GeneratorImpl& gen = Build();