Replace Type::(Is|As)Sampler with Castable Change-Id: Iaa43e607199e25308ecb121c61bb7a37abff197c Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/34270 Reviewed-by: dan sinclair <dsinclair@chromium.org>
diff --git a/src/ast/function.cc b/src/ast/function.cc index da18d53..2dc9c21 100644 --- a/src/ast/function.cc +++ b/src/ast/function.cc
@@ -281,8 +281,8 @@ for (auto* var : referenced_module_variables()) { auto* unwrapped_type = var->type()->UnwrapIfNeeded(); - if (!var->IsDecorated() || !unwrapped_type->IsSampler() || - unwrapped_type->AsSampler()->kind() != kind) { + if (!var->IsDecorated() || !unwrapped_type->Is<ast::type::SamplerType>() || + unwrapped_type->As<ast::type::SamplerType>()->kind() != kind) { continue; }
diff --git a/src/ast/type/access_control_type_test.cc b/src/ast/type/access_control_type_test.cc index 5ea362d..2557a53 100644 --- a/src/ast/type/access_control_type_test.cc +++ b/src/ast/type/access_control_type_test.cc
@@ -59,7 +59,7 @@ EXPECT_FALSE(ty->Is<I32Type>()); EXPECT_FALSE(ty->Is<MatrixType>()); EXPECT_FALSE(ty->Is<PointerType>()); - EXPECT_FALSE(ty->IsSampler()); + EXPECT_FALSE(ty->Is<SamplerType>()); EXPECT_FALSE(ty->IsStruct()); EXPECT_FALSE(ty->IsTexture()); EXPECT_FALSE(ty->IsU32());
diff --git a/src/ast/type/alias_type_test.cc b/src/ast/type/alias_type_test.cc index b4507ca..8be31d0 100644 --- a/src/ast/type/alias_type_test.cc +++ b/src/ast/type/alias_type_test.cc
@@ -60,7 +60,7 @@ EXPECT_FALSE(ty->Is<I32Type>()); EXPECT_FALSE(ty->Is<MatrixType>()); EXPECT_FALSE(ty->Is<PointerType>()); - EXPECT_FALSE(ty->IsSampler()); + EXPECT_FALSE(ty->Is<SamplerType>()); EXPECT_FALSE(ty->IsStruct()); EXPECT_FALSE(ty->IsTexture()); EXPECT_FALSE(ty->IsU32());
diff --git a/src/ast/type/array_type_test.cc b/src/ast/type/array_type_test.cc index f45bc15..8ade7c4 100644 --- a/src/ast/type/array_type_test.cc +++ b/src/ast/type/array_type_test.cc
@@ -65,7 +65,7 @@ EXPECT_FALSE(ty->Is<I32Type>()); EXPECT_FALSE(ty->Is<MatrixType>()); EXPECT_FALSE(ty->Is<PointerType>()); - EXPECT_FALSE(ty->IsSampler()); + EXPECT_FALSE(ty->Is<SamplerType>()); EXPECT_FALSE(ty->IsStruct()); EXPECT_FALSE(ty->IsTexture()); EXPECT_FALSE(ty->IsU32());
diff --git a/src/ast/type/bool_type_test.cc b/src/ast/type/bool_type_test.cc index 3952c9a..9aa14a4 100644 --- a/src/ast/type/bool_type_test.cc +++ b/src/ast/type/bool_type_test.cc
@@ -40,7 +40,7 @@ EXPECT_FALSE(ty->Is<I32Type>()); EXPECT_FALSE(ty->Is<MatrixType>()); EXPECT_FALSE(ty->Is<PointerType>()); - EXPECT_FALSE(ty->IsSampler()); + EXPECT_FALSE(ty->Is<SamplerType>()); EXPECT_FALSE(ty->IsStruct()); EXPECT_FALSE(ty->IsTexture()); EXPECT_FALSE(ty->IsU32());
diff --git a/src/ast/type/depth_texture_type_test.cc b/src/ast/type/depth_texture_type_test.cc index 3a58197..089c696 100644 --- a/src/ast/type/depth_texture_type_test.cc +++ b/src/ast/type/depth_texture_type_test.cc
@@ -42,7 +42,7 @@ EXPECT_FALSE(ty->Is<I32Type>()); EXPECT_FALSE(ty->Is<MatrixType>()); EXPECT_FALSE(ty->Is<PointerType>()); - EXPECT_FALSE(ty->IsSampler()); + EXPECT_FALSE(ty->Is<SamplerType>()); EXPECT_FALSE(ty->IsStruct()); EXPECT_TRUE(ty->IsTexture()); EXPECT_FALSE(ty->IsU32());
diff --git a/src/ast/type/f32_type_test.cc b/src/ast/type/f32_type_test.cc index 01622af..6918a1f 100644 --- a/src/ast/type/f32_type_test.cc +++ b/src/ast/type/f32_type_test.cc
@@ -40,7 +40,7 @@ EXPECT_FALSE(ty->Is<I32Type>()); EXPECT_FALSE(ty->Is<MatrixType>()); EXPECT_FALSE(ty->Is<PointerType>()); - EXPECT_FALSE(ty->IsSampler()); + EXPECT_FALSE(ty->Is<SamplerType>()); EXPECT_FALSE(ty->IsStruct()); EXPECT_FALSE(ty->IsTexture()); EXPECT_FALSE(ty->IsU32());
diff --git a/src/ast/type/i32_type_test.cc b/src/ast/type/i32_type_test.cc index ff22000..d0fa3fe 100644 --- a/src/ast/type/i32_type_test.cc +++ b/src/ast/type/i32_type_test.cc
@@ -40,7 +40,7 @@ EXPECT_TRUE(ty->Is<I32Type>()); EXPECT_FALSE(ty->Is<MatrixType>()); EXPECT_FALSE(ty->Is<PointerType>()); - EXPECT_FALSE(ty->IsSampler()); + EXPECT_FALSE(ty->Is<SamplerType>()); EXPECT_FALSE(ty->IsStruct()); EXPECT_FALSE(ty->IsTexture()); EXPECT_FALSE(ty->IsU32());
diff --git a/src/ast/type/matrix_type_test.cc b/src/ast/type/matrix_type_test.cc index e203c36..c1af49f 100644 --- a/src/ast/type/matrix_type_test.cc +++ b/src/ast/type/matrix_type_test.cc
@@ -49,7 +49,7 @@ EXPECT_FALSE(ty->Is<I32Type>()); EXPECT_TRUE(ty->Is<MatrixType>()); EXPECT_FALSE(ty->Is<PointerType>()); - EXPECT_FALSE(ty->IsSampler()); + EXPECT_FALSE(ty->Is<SamplerType>()); EXPECT_FALSE(ty->IsStruct()); EXPECT_FALSE(ty->IsTexture()); EXPECT_FALSE(ty->IsU32());
diff --git a/src/ast/type/multisampled_texture_type_test.cc b/src/ast/type/multisampled_texture_type_test.cc index 1e9b67e..52fca6f 100644 --- a/src/ast/type/multisampled_texture_type_test.cc +++ b/src/ast/type/multisampled_texture_type_test.cc
@@ -42,7 +42,7 @@ EXPECT_FALSE(ty->Is<I32Type>()); EXPECT_FALSE(ty->Is<MatrixType>()); EXPECT_FALSE(ty->Is<PointerType>()); - EXPECT_FALSE(ty->IsSampler()); + EXPECT_FALSE(ty->Is<SamplerType>()); EXPECT_FALSE(ty->IsStruct()); EXPECT_TRUE(ty->IsTexture()); EXPECT_FALSE(ty->IsU32());
diff --git a/src/ast/type/pointer_type_test.cc b/src/ast/type/pointer_type_test.cc index 7350824..3166db5 100644 --- a/src/ast/type/pointer_type_test.cc +++ b/src/ast/type/pointer_type_test.cc
@@ -48,7 +48,7 @@ EXPECT_FALSE(ty->Is<I32Type>()); EXPECT_FALSE(ty->Is<MatrixType>()); EXPECT_TRUE(ty->Is<PointerType>()); - EXPECT_FALSE(ty->IsSampler()); + EXPECT_FALSE(ty->Is<SamplerType>()); EXPECT_FALSE(ty->IsStruct()); EXPECT_FALSE(ty->IsTexture()); EXPECT_FALSE(ty->IsU32());
diff --git a/src/ast/type/sampled_texture_type_test.cc b/src/ast/type/sampled_texture_type_test.cc index be16aeb..4790229 100644 --- a/src/ast/type/sampled_texture_type_test.cc +++ b/src/ast/type/sampled_texture_type_test.cc
@@ -42,7 +42,7 @@ EXPECT_FALSE(ty->Is<I32Type>()); EXPECT_FALSE(ty->Is<MatrixType>()); EXPECT_FALSE(ty->Is<PointerType>()); - EXPECT_FALSE(ty->IsSampler()); + EXPECT_FALSE(ty->Is<SamplerType>()); EXPECT_FALSE(ty->IsStruct()); EXPECT_TRUE(ty->IsTexture()); EXPECT_FALSE(ty->IsU32());
diff --git a/src/ast/type/sampler_type.cc b/src/ast/type/sampler_type.cc index ccbd3fa..c183b43 100644 --- a/src/ast/type/sampler_type.cc +++ b/src/ast/type/sampler_type.cc
@@ -36,10 +36,6 @@ SamplerType::~SamplerType() = default; -bool SamplerType::IsSampler() const { - return true; -} - std::string SamplerType::type_name() const { return std::string("__sampler_") + (kind_ == SamplerKind::kSampler ? "sampler" : "comparison");
diff --git a/src/ast/type/sampler_type.h b/src/ast/type/sampler_type.h index d064a88..c83c44a 100644 --- a/src/ast/type/sampler_type.h +++ b/src/ast/type/sampler_type.h
@@ -43,9 +43,6 @@ SamplerType(SamplerType&&); ~SamplerType() override; - /// @returns true if the type is a sampler type - bool IsSampler() const override; - /// @returns the sampler type SamplerKind kind() const { return kind_; }
diff --git a/src/ast/type/sampler_type_test.cc b/src/ast/type/sampler_type_test.cc index 42210bc..4bdc6e4 100644 --- a/src/ast/type/sampler_type_test.cc +++ b/src/ast/type/sampler_type_test.cc
@@ -52,7 +52,7 @@ EXPECT_FALSE(ty->Is<I32Type>()); EXPECT_FALSE(ty->Is<MatrixType>()); EXPECT_FALSE(ty->Is<PointerType>()); - EXPECT_TRUE(ty->IsSampler()); + EXPECT_TRUE(ty->Is<SamplerType>()); EXPECT_FALSE(ty->IsStruct()); EXPECT_FALSE(ty->IsTexture()); EXPECT_FALSE(ty->IsU32());
diff --git a/src/ast/type/storage_texture_type_test.cc b/src/ast/type/storage_texture_type_test.cc index f7764d1..43a0d29 100644 --- a/src/ast/type/storage_texture_type_test.cc +++ b/src/ast/type/storage_texture_type_test.cc
@@ -46,7 +46,7 @@ EXPECT_FALSE(ty->Is<I32Type>()); EXPECT_FALSE(ty->Is<MatrixType>()); EXPECT_FALSE(ty->Is<PointerType>()); - EXPECT_FALSE(ty->IsSampler()); + EXPECT_FALSE(ty->Is<SamplerType>()); EXPECT_FALSE(ty->IsStruct()); EXPECT_TRUE(ty->IsTexture()); EXPECT_FALSE(ty->IsU32());
diff --git a/src/ast/type/struct_type_test.cc b/src/ast/type/struct_type_test.cc index 8667acf..c13caa2 100644 --- a/src/ast/type/struct_type_test.cc +++ b/src/ast/type/struct_type_test.cc
@@ -57,7 +57,7 @@ EXPECT_FALSE(ty->Is<I32Type>()); EXPECT_FALSE(ty->Is<MatrixType>()); EXPECT_FALSE(ty->Is<PointerType>()); - EXPECT_FALSE(ty->IsSampler()); + EXPECT_FALSE(ty->Is<SamplerType>()); EXPECT_TRUE(ty->IsStruct()); EXPECT_FALSE(ty->IsTexture()); EXPECT_FALSE(ty->IsU32());
diff --git a/src/ast/type/type.cc b/src/ast/type/type.cc index affca72..1e8ed5c 100644 --- a/src/ast/type/type.cc +++ b/src/ast/type/type.cc
@@ -66,10 +66,6 @@ return UnwrapIfNeeded()->UnwrapPtrIfNeeded()->UnwrapIfNeeded(); } -bool Type::IsSampler() const { - return false; -} - bool Type::IsStruct() const { return false; } @@ -142,11 +138,6 @@ return is_unsigned_scalar_or_vector() || is_signed_scalar_or_vector(); } -const SamplerType* Type::AsSampler() const { - assert(IsSampler()); - return static_cast<const SamplerType*>(this); -} - const StructType* Type::AsStruct() const { assert(IsStruct()); return static_cast<const StructType*>(this); @@ -172,11 +163,6 @@ return static_cast<const VoidType*>(this); } -SamplerType* Type::AsSampler() { - assert(IsSampler()); - return static_cast<SamplerType*>(this); -} - StructType* Type::AsStruct() { assert(IsStruct()); return static_cast<StructType*>(this);
diff --git a/src/ast/type/type.h b/src/ast/type/type.h index 93a9fb8..805c058 100644 --- a/src/ast/type/type.h +++ b/src/ast/type/type.h
@@ -23,7 +23,6 @@ namespace ast { namespace type { -class SamplerType; class StructType; class TextureType; class U32Type; @@ -40,8 +39,6 @@ Type(Type&&); ~Type() override; - /// @returns true if the type is a sampler - virtual bool IsSampler() const; /// @returns true if the type is a struct type virtual bool IsStruct() const; /// @returns true if the type is a texture type @@ -107,8 +104,6 @@ /// @returns true if this type is an integer scalar or vector bool is_integer_scalar_or_vector(); - /// @returns the type as a sampler type - const SamplerType* AsSampler() const; /// @returns the type as a struct type const StructType* AsStruct() const; /// @returns the type as a texture type @@ -120,8 +115,6 @@ /// @returns the type as a void type const VoidType* AsVoid() const; - /// @returns the type as a sampler type - SamplerType* AsSampler(); /// @returns the type as a struct type StructType* AsStruct(); /// @returns the type as a texture type
diff --git a/src/ast/type/u32_type_test.cc b/src/ast/type/u32_type_test.cc index 60a946b..77b2e40 100644 --- a/src/ast/type/u32_type_test.cc +++ b/src/ast/type/u32_type_test.cc
@@ -22,6 +22,7 @@ #include "src/ast/type/i32_type.h" #include "src/ast/type/matrix_type.h" #include "src/ast/type/pointer_type.h" +#include "src/ast/type/sampler_type.h" namespace tint { namespace ast { @@ -41,7 +42,7 @@ EXPECT_FALSE(ty->Is<I32Type>()); EXPECT_FALSE(ty->Is<MatrixType>()); EXPECT_FALSE(ty->Is<PointerType>()); - EXPECT_FALSE(ty->IsSampler()); + EXPECT_FALSE(ty->Is<SamplerType>()); EXPECT_FALSE(ty->IsStruct()); EXPECT_FALSE(ty->IsTexture()); EXPECT_TRUE(ty->IsU32());
diff --git a/src/ast/type/vector_type_test.cc b/src/ast/type/vector_type_test.cc index d59d96f..94a8b3f 100644 --- a/src/ast/type/vector_type_test.cc +++ b/src/ast/type/vector_type_test.cc
@@ -49,7 +49,7 @@ EXPECT_FALSE(ty->Is<I32Type>()); EXPECT_FALSE(ty->Is<MatrixType>()); EXPECT_FALSE(ty->Is<PointerType>()); - EXPECT_FALSE(ty->IsSampler()); + EXPECT_FALSE(ty->Is<SamplerType>()); EXPECT_FALSE(ty->IsStruct()); EXPECT_FALSE(ty->IsTexture()); EXPECT_FALSE(ty->IsU32());
diff --git a/src/reader/wgsl/parser_impl_sampler_type_test.cc b/src/reader/wgsl/parser_impl_sampler_type_test.cc index 76e376a..5b17627 100644 --- a/src/reader/wgsl/parser_impl_sampler_type_test.cc +++ b/src/reader/wgsl/parser_impl_sampler_type_test.cc
@@ -37,8 +37,8 @@ EXPECT_TRUE(t.matched); EXPECT_FALSE(t.errored); ASSERT_NE(t.value, nullptr); - ASSERT_TRUE(t->IsSampler()); - EXPECT_FALSE(t->AsSampler()->IsComparison()); + ASSERT_TRUE(t->Is<ast::type::SamplerType>()); + EXPECT_FALSE(t->As<ast::type::SamplerType>()->IsComparison()); EXPECT_FALSE(p->has_error()); } @@ -48,8 +48,8 @@ EXPECT_TRUE(t.matched); EXPECT_FALSE(t.errored); ASSERT_NE(t.value, nullptr); - ASSERT_TRUE(t->IsSampler()); - EXPECT_TRUE(t->AsSampler()->IsComparison()); + ASSERT_TRUE(t->Is<ast::type::SamplerType>()); + EXPECT_TRUE(t->As<ast::type::SamplerType>()->IsComparison()); EXPECT_FALSE(p->has_error()); }
diff --git a/src/reader/wgsl/parser_impl_texture_sampler_types_test.cc b/src/reader/wgsl/parser_impl_texture_sampler_types_test.cc index c1eb2c6..463533d 100644 --- a/src/reader/wgsl/parser_impl_texture_sampler_types_test.cc +++ b/src/reader/wgsl/parser_impl_texture_sampler_types_test.cc
@@ -42,8 +42,8 @@ EXPECT_TRUE(t.matched); EXPECT_FALSE(t.errored); ASSERT_NE(t.value, nullptr); - ASSERT_TRUE(t->IsSampler()); - ASSERT_FALSE(t->AsSampler()->IsComparison()); + ASSERT_TRUE(t->Is<ast::type::SamplerType>()); + ASSERT_FALSE(t->As<ast::type::SamplerType>()->IsComparison()); } TEST_F(ParserImplTest, TextureSamplerTypes_SamplerComparison) { @@ -53,8 +53,8 @@ EXPECT_TRUE(t.matched); EXPECT_FALSE(t.errored); ASSERT_NE(t.value, nullptr); - ASSERT_TRUE(t->IsSampler()); - ASSERT_TRUE(t->AsSampler()->IsComparison()); + ASSERT_TRUE(t->Is<ast::type::SamplerType>()); + ASSERT_TRUE(t->As<ast::type::SamplerType>()->IsComparison()); } TEST_F(ParserImplTest, TextureSamplerTypes_DepthTexture) {
diff --git a/src/reader/wgsl/parser_impl_type_decl_test.cc b/src/reader/wgsl/parser_impl_type_decl_test.cc index 5943dab..0472dae 100644 --- a/src/reader/wgsl/parser_impl_type_decl_test.cc +++ b/src/reader/wgsl/parser_impl_type_decl_test.cc
@@ -747,8 +747,8 @@ EXPECT_FALSE(t.errored); ASSERT_NE(t.value, nullptr) << p->error(); EXPECT_EQ(t.value, type); - ASSERT_TRUE(t->IsSampler()); - ASSERT_FALSE(t->AsSampler()->IsComparison()); + ASSERT_TRUE(t->Is<ast::type::SamplerType>()); + ASSERT_FALSE(t->As<ast::type::SamplerType>()->IsComparison()); } TEST_F(ParserImplTest, TypeDecl_Texture_Old) {
diff --git a/src/writer/hlsl/generator_impl.cc b/src/writer/hlsl/generator_impl.cc index a697caa..525d8a1 100644 --- a/src/writer/hlsl/generator_impl.cc +++ b/src/writer/hlsl/generator_impl.cc
@@ -2079,8 +2079,8 @@ // https://bugs.chromium.org/p/tint/issues/detail?id=183 error_ = "pointers not supported in HLSL"; return false; - } else if (type->IsSampler()) { - auto* sampler = type->AsSampler(); + } else if (type->Is<ast::type::SamplerType>()) { + auto* sampler = type->As<ast::type::SamplerType>(); out << "Sampler"; if (sampler->IsComparison()) { out << "Comparison";
diff --git a/src/writer/msl/generator_impl.cc b/src/writer/msl/generator_impl.cc index 762cd9a..695ccfd 100644 --- a/src/writer/msl/generator_impl.cc +++ b/src/writer/msl/generator_impl.cc
@@ -1832,7 +1832,7 @@ return false; } out_ << "*"; - } else if (type->IsSampler()) { + } else if (type->Is<ast::type::SamplerType>()) { out_ << "sampler"; } else if (type->IsStruct()) { // The struct type emits as just the name. The declaration would be emitted
diff --git a/src/writer/spirv/builder.cc b/src/writer/spirv/builder.cc index 0906c6f..590f467 100644 --- a/src/writer/spirv/builder.cc +++ b/src/writer/spirv/builder.cc
@@ -734,7 +734,7 @@ break; } } - } else if (!type->IsSampler()) { + } else if (!type->Is<ast::type::SamplerType>()) { // Certain cases require us to generate a constructor value. // // 1- ConstantId's must be attached to the OpConstant, if we have a @@ -2452,7 +2452,7 @@ if (!GenerateTextureType(type->AsTexture(), result)) { return 0; } - } else if (type->IsSampler()) { + } else if (type->Is<ast::type::SamplerType>()) { push_type(spv::Op::OpTypeSampler, {result}); // Register both of the sampler type names. In SPIR-V they're the same
diff --git a/src/writer/wgsl/generator_impl.cc b/src/writer/wgsl/generator_impl.cc index e9ed0e8..52fa961 100644 --- a/src/writer/wgsl/generator_impl.cc +++ b/src/writer/wgsl/generator_impl.cc
@@ -453,8 +453,8 @@ return false; } out_ << ">"; - } else if (type->IsSampler()) { - auto* sampler = type->AsSampler(); + } else if (type->Is<ast::type::SamplerType>()) { + auto* sampler = type->As<ast::type::SamplerType>(); out_ << "sampler"; if (sampler->IsComparison()) {