mirror of
https://github.com/encounter/dawn-cmake.git
synced 2025-12-21 02:39:11 +00:00
Replace Type::(Is|As)Alias with Castable
Change-Id: I10f1d3d0757661a41b44517d55d6f159aced04ce Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/34263 Reviewed-by: dan sinclair <dsinclair@chromium.org>
This commit is contained in:
@@ -56,8 +56,8 @@ bool Module::IsValid() const {
|
||||
if (ty == nullptr) {
|
||||
return false;
|
||||
}
|
||||
if (ty->IsAlias()) {
|
||||
auto* alias = ty->AsAlias();
|
||||
if (ty->Is<ast::type::AliasType>()) {
|
||||
auto* alias = ty->As<ast::type::AliasType>();
|
||||
if (alias->type() == nullptr) {
|
||||
return false;
|
||||
}
|
||||
@@ -91,8 +91,8 @@ std::string Module::to_str() const {
|
||||
for (size_t i = 0; i < indent; ++i) {
|
||||
out << " ";
|
||||
}
|
||||
if (ty->IsAlias()) {
|
||||
auto* alias = ty->AsAlias();
|
||||
if (ty->Is<ast::type::AliasType>()) {
|
||||
auto* alias = ty->As<ast::type::AliasType>();
|
||||
out << alias->name() << " -> " << alias->type()->type_name() << std::endl;
|
||||
if (alias->type()->IsStruct()) {
|
||||
alias->type()->AsStruct()->impl()->to_str(out, indent);
|
||||
|
||||
@@ -47,19 +47,20 @@ TEST_F(AccessControlTypeTest, Is) {
|
||||
I32Type i32;
|
||||
|
||||
AccessControlType at{AccessControl::kReadOnly, &i32};
|
||||
EXPECT_TRUE(at.Is<AccessControlType>());
|
||||
EXPECT_FALSE(at.IsAlias());
|
||||
EXPECT_FALSE(at.IsArray());
|
||||
EXPECT_FALSE(at.IsBool());
|
||||
EXPECT_FALSE(at.IsF32());
|
||||
EXPECT_FALSE(at.IsI32());
|
||||
EXPECT_FALSE(at.IsMatrix());
|
||||
EXPECT_FALSE(at.IsPointer());
|
||||
EXPECT_FALSE(at.IsSampler());
|
||||
EXPECT_FALSE(at.IsStruct());
|
||||
EXPECT_FALSE(at.IsTexture());
|
||||
EXPECT_FALSE(at.IsU32());
|
||||
EXPECT_FALSE(at.IsVector());
|
||||
Type* ty = &at;
|
||||
EXPECT_TRUE(ty->Is<AccessControlType>());
|
||||
EXPECT_FALSE(ty->Is<AliasType>());
|
||||
EXPECT_FALSE(ty->IsArray());
|
||||
EXPECT_FALSE(ty->IsBool());
|
||||
EXPECT_FALSE(ty->IsF32());
|
||||
EXPECT_FALSE(ty->IsI32());
|
||||
EXPECT_FALSE(ty->IsMatrix());
|
||||
EXPECT_FALSE(ty->IsPointer());
|
||||
EXPECT_FALSE(ty->IsSampler());
|
||||
EXPECT_FALSE(ty->IsStruct());
|
||||
EXPECT_FALSE(ty->IsTexture());
|
||||
EXPECT_FALSE(ty->IsU32());
|
||||
EXPECT_FALSE(ty->IsVector());
|
||||
}
|
||||
|
||||
TEST_F(AccessControlTypeTest, AccessRead) {
|
||||
|
||||
@@ -29,10 +29,6 @@ AliasType::AliasType(AliasType&&) = default;
|
||||
|
||||
AliasType::~AliasType() = default;
|
||||
|
||||
bool AliasType::IsAlias() const {
|
||||
return true;
|
||||
}
|
||||
|
||||
std::string AliasType::type_name() const {
|
||||
return "__alias_" + name_ + subtype_->type_name();
|
||||
}
|
||||
|
||||
@@ -34,9 +34,6 @@ class AliasType : public Castable<AliasType, Type> {
|
||||
AliasType(AliasType&&);
|
||||
~AliasType() override;
|
||||
|
||||
/// @returns true if the type is an alias type
|
||||
bool IsAlias() const override;
|
||||
|
||||
/// @returns the alias name
|
||||
const std::string& name() const { return name_; }
|
||||
/// @returns the alias type
|
||||
|
||||
@@ -50,7 +50,7 @@ TEST_F(AliasTypeTest, Is) {
|
||||
AliasType at{"a", &i32};
|
||||
Type* ty = &at;
|
||||
EXPECT_FALSE(ty->Is<AccessControlType>());
|
||||
EXPECT_TRUE(ty->IsAlias());
|
||||
EXPECT_TRUE(ty->Is<AliasType>());
|
||||
EXPECT_FALSE(ty->IsArray());
|
||||
EXPECT_FALSE(ty->IsBool());
|
||||
EXPECT_FALSE(ty->IsF32());
|
||||
|
||||
@@ -54,7 +54,7 @@ TEST_F(ArrayTypeTest, Is) {
|
||||
ArrayType arr{&i32, 3};
|
||||
Type* ty = &arr;
|
||||
EXPECT_FALSE(ty->Is<AccessControlType>());
|
||||
EXPECT_FALSE(ty->IsAlias());
|
||||
EXPECT_FALSE(ty->Is<AliasType>());
|
||||
EXPECT_TRUE(ty->IsArray());
|
||||
EXPECT_FALSE(ty->IsBool());
|
||||
EXPECT_FALSE(ty->IsF32());
|
||||
|
||||
@@ -28,7 +28,7 @@ TEST_F(BoolTypeTest, Is) {
|
||||
BoolType b;
|
||||
Type* ty = &b;
|
||||
EXPECT_FALSE(ty->Is<AccessControlType>());
|
||||
EXPECT_FALSE(ty->IsAlias());
|
||||
EXPECT_FALSE(ty->Is<AliasType>());
|
||||
EXPECT_FALSE(ty->IsArray());
|
||||
EXPECT_TRUE(ty->IsBool());
|
||||
EXPECT_FALSE(ty->IsF32());
|
||||
|
||||
@@ -29,7 +29,7 @@ TEST_F(DepthTextureTypeTest, Is) {
|
||||
DepthTextureType d(TextureDimension::kCube);
|
||||
Type* ty = &d;
|
||||
EXPECT_FALSE(ty->Is<AccessControlType>());
|
||||
EXPECT_FALSE(ty->IsAlias());
|
||||
EXPECT_FALSE(ty->Is<AliasType>());
|
||||
EXPECT_FALSE(ty->IsArray());
|
||||
EXPECT_FALSE(ty->IsBool());
|
||||
EXPECT_FALSE(ty->IsF32());
|
||||
|
||||
@@ -28,7 +28,7 @@ TEST_F(F32TypeTest, Is) {
|
||||
F32Type f;
|
||||
Type* ty = &f;
|
||||
EXPECT_FALSE(ty->Is<AccessControlType>());
|
||||
EXPECT_FALSE(ty->IsAlias());
|
||||
EXPECT_FALSE(ty->Is<AliasType>());
|
||||
EXPECT_FALSE(ty->IsArray());
|
||||
EXPECT_FALSE(ty->IsBool());
|
||||
EXPECT_TRUE(ty->IsF32());
|
||||
|
||||
@@ -28,7 +28,7 @@ TEST_F(I32TypeTest, Is) {
|
||||
I32Type i;
|
||||
Type* ty = &i;
|
||||
EXPECT_FALSE(ty->Is<AccessControlType>());
|
||||
EXPECT_FALSE(ty->IsAlias());
|
||||
EXPECT_FALSE(ty->Is<AliasType>());
|
||||
EXPECT_FALSE(ty->IsArray());
|
||||
EXPECT_FALSE(ty->IsBool());
|
||||
EXPECT_FALSE(ty->IsF32());
|
||||
|
||||
@@ -38,7 +38,7 @@ TEST_F(MatrixTypeTest, Is) {
|
||||
MatrixType m{&i32, 2, 3};
|
||||
Type* ty = &m;
|
||||
EXPECT_FALSE(ty->Is<AccessControlType>());
|
||||
EXPECT_FALSE(ty->IsAlias());
|
||||
EXPECT_FALSE(ty->Is<AliasType>());
|
||||
EXPECT_FALSE(ty->IsArray());
|
||||
EXPECT_FALSE(ty->IsBool());
|
||||
EXPECT_FALSE(ty->IsF32());
|
||||
|
||||
@@ -30,7 +30,7 @@ TEST_F(MultisampledTextureTypeTest, Is) {
|
||||
MultisampledTextureType s(TextureDimension::kCube, &f32);
|
||||
Type* ty = &s;
|
||||
EXPECT_FALSE(ty->Is<AccessControlType>());
|
||||
EXPECT_FALSE(ty->IsAlias());
|
||||
EXPECT_FALSE(ty->Is<AliasType>());
|
||||
EXPECT_FALSE(ty->IsArray());
|
||||
EXPECT_FALSE(ty->IsBool());
|
||||
EXPECT_FALSE(ty->IsF32());
|
||||
|
||||
@@ -37,7 +37,7 @@ TEST_F(PointerTypeTest, Is) {
|
||||
PointerType p{&i32, StorageClass::kFunction};
|
||||
Type* ty = &p;
|
||||
EXPECT_FALSE(ty->Is<AccessControlType>());
|
||||
EXPECT_FALSE(ty->IsAlias());
|
||||
EXPECT_FALSE(ty->Is<AliasType>());
|
||||
EXPECT_FALSE(ty->IsArray());
|
||||
EXPECT_FALSE(ty->IsBool());
|
||||
EXPECT_FALSE(ty->IsF32());
|
||||
|
||||
@@ -30,7 +30,7 @@ TEST_F(SampledTextureTypeTest, Is) {
|
||||
SampledTextureType s(TextureDimension::kCube, &f32);
|
||||
Type* ty = &s;
|
||||
EXPECT_FALSE(ty->Is<AccessControlType>());
|
||||
EXPECT_FALSE(ty->IsAlias());
|
||||
EXPECT_FALSE(ty->Is<AliasType>());
|
||||
EXPECT_FALSE(ty->IsArray());
|
||||
EXPECT_FALSE(ty->IsBool());
|
||||
EXPECT_FALSE(ty->IsF32());
|
||||
|
||||
@@ -39,7 +39,7 @@ TEST_F(SamplerTypeTest, Is) {
|
||||
SamplerType s{SamplerKind::kSampler};
|
||||
Type* ty = &s;
|
||||
EXPECT_FALSE(ty->Is<AccessControlType>());
|
||||
EXPECT_FALSE(ty->IsAlias());
|
||||
EXPECT_FALSE(ty->Is<AliasType>());
|
||||
EXPECT_FALSE(ty->IsArray());
|
||||
EXPECT_FALSE(ty->IsBool());
|
||||
EXPECT_FALSE(ty->IsF32());
|
||||
|
||||
@@ -33,7 +33,7 @@ TEST_F(StorageTextureTypeTest, Is) {
|
||||
ImageFormat::kRgba32Float);
|
||||
Type* ty = &s;
|
||||
EXPECT_FALSE(ty->Is<AccessControlType>());
|
||||
EXPECT_FALSE(ty->IsAlias());
|
||||
EXPECT_FALSE(ty->Is<AliasType>());
|
||||
EXPECT_FALSE(ty->IsArray());
|
||||
EXPECT_FALSE(ty->IsBool());
|
||||
EXPECT_FALSE(ty->IsF32());
|
||||
|
||||
@@ -46,7 +46,7 @@ TEST_F(StructTypeTest, Is) {
|
||||
StructType s{"S", impl};
|
||||
Type* ty = &s;
|
||||
EXPECT_FALSE(ty->Is<AccessControlType>());
|
||||
EXPECT_FALSE(ty->IsAlias());
|
||||
EXPECT_FALSE(ty->Is<AliasType>());
|
||||
EXPECT_FALSE(ty->IsArray());
|
||||
EXPECT_FALSE(ty->IsBool());
|
||||
EXPECT_FALSE(ty->IsF32());
|
||||
|
||||
@@ -51,8 +51,8 @@ Type* Type::UnwrapPtrIfNeeded() {
|
||||
Type* Type::UnwrapIfNeeded() {
|
||||
auto* where = this;
|
||||
while (true) {
|
||||
if (where->IsAlias()) {
|
||||
where = where->AsAlias()->type();
|
||||
if (where->Is<AliasType>()) {
|
||||
where = where->As<AliasType>()->type();
|
||||
} else if (where->Is<AccessControlType>()) {
|
||||
where = where->As<AccessControlType>()->type();
|
||||
} else {
|
||||
@@ -66,10 +66,6 @@ Type* Type::UnwrapAll() {
|
||||
return UnwrapIfNeeded()->UnwrapPtrIfNeeded()->UnwrapIfNeeded();
|
||||
}
|
||||
|
||||
bool Type::IsAlias() const {
|
||||
return false;
|
||||
}
|
||||
|
||||
bool Type::IsArray() const {
|
||||
return false;
|
||||
}
|
||||
@@ -170,11 +166,6 @@ bool Type::is_integer_scalar_or_vector() {
|
||||
return is_unsigned_scalar_or_vector() || is_signed_scalar_or_vector();
|
||||
}
|
||||
|
||||
const AliasType* Type::AsAlias() const {
|
||||
assert(IsAlias());
|
||||
return static_cast<const AliasType*>(this);
|
||||
}
|
||||
|
||||
const ArrayType* Type::AsArray() const {
|
||||
assert(IsArray());
|
||||
return static_cast<const ArrayType*>(this);
|
||||
@@ -235,11 +226,6 @@ const VoidType* Type::AsVoid() const {
|
||||
return static_cast<const VoidType*>(this);
|
||||
}
|
||||
|
||||
AliasType* Type::AsAlias() {
|
||||
assert(IsAlias());
|
||||
return static_cast<AliasType*>(this);
|
||||
}
|
||||
|
||||
ArrayType* Type::AsArray() {
|
||||
assert(IsArray());
|
||||
return static_cast<ArrayType*>(this);
|
||||
|
||||
@@ -23,7 +23,6 @@ namespace tint {
|
||||
namespace ast {
|
||||
namespace type {
|
||||
|
||||
class AliasType;
|
||||
class ArrayType;
|
||||
class BoolType;
|
||||
class F32Type;
|
||||
@@ -47,8 +46,6 @@ class Type : public Castable<Type> {
|
||||
Type(Type&&);
|
||||
~Type() override;
|
||||
|
||||
/// @returns true if the type is an alias type
|
||||
virtual bool IsAlias() const;
|
||||
/// @returns true if the type is an array type
|
||||
virtual bool IsArray() const;
|
||||
/// @returns true if the type is a bool type
|
||||
@@ -128,8 +125,6 @@ class Type : public Castable<Type> {
|
||||
/// @returns true if this type is an integer scalar or vector
|
||||
bool is_integer_scalar_or_vector();
|
||||
|
||||
/// @returns the type as an alias type
|
||||
const AliasType* AsAlias() const;
|
||||
/// @returns the type as an array type
|
||||
const ArrayType* AsArray() const;
|
||||
/// @returns the type as a bool type
|
||||
@@ -155,8 +150,6 @@ class Type : public Castable<Type> {
|
||||
/// @returns the type as a void type
|
||||
const VoidType* AsVoid() const;
|
||||
|
||||
/// @returns the type as an alias type
|
||||
AliasType* AsAlias();
|
||||
/// @returns the type as an array type
|
||||
ArrayType* AsArray();
|
||||
/// @returns the type as a bool type
|
||||
|
||||
@@ -28,7 +28,7 @@ TEST_F(U32TypeTest, Is) {
|
||||
U32Type u;
|
||||
Type* ty = &u;
|
||||
EXPECT_FALSE(ty->Is<AccessControlType>());
|
||||
EXPECT_FALSE(ty->IsAlias());
|
||||
EXPECT_FALSE(ty->Is<AliasType>());
|
||||
EXPECT_FALSE(ty->IsArray());
|
||||
EXPECT_FALSE(ty->IsBool());
|
||||
EXPECT_FALSE(ty->IsF32());
|
||||
|
||||
@@ -37,7 +37,7 @@ TEST_F(VectorTypeTest, Is) {
|
||||
VectorType v{&i32, 4};
|
||||
Type* ty = &v;
|
||||
EXPECT_FALSE(ty->Is<AccessControlType>());
|
||||
EXPECT_FALSE(ty->IsAlias());
|
||||
EXPECT_FALSE(ty->Is<AliasType>());
|
||||
EXPECT_FALSE(ty->IsArray());
|
||||
EXPECT_FALSE(ty->IsBool());
|
||||
EXPECT_FALSE(ty->IsF32());
|
||||
|
||||
Reference in New Issue
Block a user