Replace VariableDecoration::(Is|As)Set with Castable
Change-Id: I9808e31f3842b70b3df9ed0398583e09e4f2ca42 Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/34310 Reviewed-by: dan sinclair <dsinclair@chromium.org>
This commit is contained in:
parent
2c1d7d5be7
commit
c24ac2720d
|
@ -35,7 +35,7 @@ TEST_F(BindingDecorationTest, Is) {
|
|||
EXPECT_FALSE(d->Is<BuiltinDecoration>());
|
||||
EXPECT_FALSE(d->Is<ConstantIdDecoration>());
|
||||
EXPECT_FALSE(d->Is<LocationDecoration>());
|
||||
EXPECT_FALSE(bd.IsSet());
|
||||
EXPECT_FALSE(d->Is<SetDecoration>());
|
||||
}
|
||||
|
||||
TEST_F(BindingDecorationTest, ToStr) {
|
||||
|
|
|
@ -35,7 +35,7 @@ TEST_F(BuiltinDecorationTest, Is) {
|
|||
EXPECT_TRUE(d->Is<BuiltinDecoration>());
|
||||
EXPECT_FALSE(d->Is<ConstantIdDecoration>());
|
||||
EXPECT_FALSE(d->Is<LocationDecoration>());
|
||||
EXPECT_FALSE(bd.IsSet());
|
||||
EXPECT_FALSE(d->Is<SetDecoration>());
|
||||
}
|
||||
|
||||
TEST_F(BuiltinDecorationTest, ToStr) {
|
||||
|
|
|
@ -34,7 +34,7 @@ TEST_F(ConstantIdDecorationTest, Is) {
|
|||
EXPECT_FALSE(d->Is<BuiltinDecoration>());
|
||||
EXPECT_TRUE(d->Is<ConstantIdDecoration>());
|
||||
EXPECT_FALSE(d->Is<LocationDecoration>());
|
||||
EXPECT_FALSE(cd.IsSet());
|
||||
EXPECT_FALSE(d->Is<SetDecoration>());
|
||||
}
|
||||
|
||||
TEST_F(ConstantIdDecorationTest, ToStr) {
|
||||
|
|
|
@ -37,7 +37,7 @@ TEST_F(LocationDecorationTest, Is) {
|
|||
EXPECT_FALSE(d->Is<BuiltinDecoration>());
|
||||
EXPECT_FALSE(d->Is<ConstantIdDecoration>());
|
||||
EXPECT_TRUE(d->Is<LocationDecoration>());
|
||||
EXPECT_FALSE(ld.IsSet());
|
||||
EXPECT_FALSE(d->Is<SetDecoration>());
|
||||
}
|
||||
|
||||
TEST_F(LocationDecorationTest, ToStr) {
|
||||
|
|
|
@ -22,10 +22,6 @@ SetDecoration::SetDecoration(uint32_t val, const Source& source)
|
|||
|
||||
SetDecoration::~SetDecoration() = default;
|
||||
|
||||
bool SetDecoration::IsSet() const {
|
||||
return true;
|
||||
}
|
||||
|
||||
void SetDecoration::to_str(std::ostream& out, size_t indent) const {
|
||||
make_indent(out, indent);
|
||||
out << "SetDecoration{" << value_ << "}" << std::endl;
|
||||
|
|
|
@ -31,9 +31,6 @@ class SetDecoration : public Castable<SetDecoration, VariableDecoration> {
|
|||
SetDecoration(uint32_t value, const Source& source);
|
||||
~SetDecoration() override;
|
||||
|
||||
/// @returns true if this is a set decoration
|
||||
bool IsSet() const override;
|
||||
|
||||
/// @returns the set value
|
||||
uint32_t value() const { return value_; }
|
||||
|
||||
|
|
|
@ -35,7 +35,7 @@ TEST_F(SetDecorationTest, Is) {
|
|||
EXPECT_FALSE(d->Is<BuiltinDecoration>());
|
||||
EXPECT_FALSE(d->Is<ConstantIdDecoration>());
|
||||
EXPECT_FALSE(d->Is<LocationDecoration>());
|
||||
EXPECT_TRUE(sd.IsSet());
|
||||
EXPECT_TRUE(d->Is<SetDecoration>());
|
||||
}
|
||||
|
||||
TEST_F(SetDecorationTest, ToStr) {
|
||||
|
|
|
@ -16,8 +16,6 @@
|
|||
|
||||
#include <assert.h>
|
||||
|
||||
#include "src/ast/set_decoration.h"
|
||||
|
||||
namespace tint {
|
||||
namespace ast {
|
||||
|
||||
|
@ -31,14 +29,5 @@ DecorationKind VariableDecoration::GetKind() const {
|
|||
return Kind;
|
||||
}
|
||||
|
||||
bool VariableDecoration::IsSet() const {
|
||||
return false;
|
||||
}
|
||||
|
||||
SetDecoration* VariableDecoration::AsSet() {
|
||||
assert(IsSet());
|
||||
return static_cast<SetDecoration*>(this);
|
||||
}
|
||||
|
||||
} // namespace ast
|
||||
} // namespace tint
|
||||
|
|
|
@ -25,8 +25,6 @@
|
|||
namespace tint {
|
||||
namespace ast {
|
||||
|
||||
class SetDecoration;
|
||||
|
||||
/// A decoration attached to a variable
|
||||
class VariableDecoration : public Castable<VariableDecoration, Decoration> {
|
||||
public:
|
||||
|
@ -38,12 +36,6 @@ class VariableDecoration : public Castable<VariableDecoration, Decoration> {
|
|||
/// @return the decoration kind
|
||||
DecorationKind GetKind() const override;
|
||||
|
||||
/// @returns true if this is a set decoration
|
||||
virtual bool IsSet() const;
|
||||
|
||||
/// @returns the decoration as a set decoration
|
||||
SetDecoration* AsSet();
|
||||
|
||||
protected:
|
||||
/// Constructor
|
||||
/// @param source the source of this decoration
|
||||
|
|
|
@ -105,7 +105,7 @@ TEST_F(ParserImplTest, GlobalVariableDecl_WithDecoration) {
|
|||
auto& decorations = v->decorations();
|
||||
ASSERT_EQ(decorations.size(), 2u);
|
||||
ASSERT_TRUE(decorations[0]->Is<ast::BindingDecoration>());
|
||||
ASSERT_TRUE(decorations[1]->IsSet());
|
||||
ASSERT_TRUE(decorations[1]->Is<ast::SetDecoration>());
|
||||
}
|
||||
|
||||
TEST_F(ParserImplTest, GlobalVariableDecl_WithDecoration_MulitpleGroups) {
|
||||
|
@ -139,7 +139,7 @@ TEST_F(ParserImplTest, GlobalVariableDecl_WithDecoration_MulitpleGroups) {
|
|||
auto& decorations = v->decorations();
|
||||
ASSERT_EQ(decorations.size(), 2u);
|
||||
ASSERT_TRUE(decorations[0]->Is<ast::BindingDecoration>());
|
||||
ASSERT_TRUE(decorations[1]->IsSet());
|
||||
ASSERT_TRUE(decorations[1]->Is<ast::SetDecoration>());
|
||||
}
|
||||
|
||||
TEST_F(ParserImplTest, GlobalVariableDecl_InvalidDecoration) {
|
||||
|
|
|
@ -240,9 +240,9 @@ TEST_F(ParserImplTest, VariableDecoration_set) {
|
|||
auto* var_deco = deco.value->As<ast::VariableDecoration>();
|
||||
ASSERT_FALSE(p->has_error());
|
||||
ASSERT_NE(var_deco, nullptr);
|
||||
ASSERT_TRUE(var_deco->IsSet());
|
||||
ASSERT_TRUE(var_deco->Is<ast::SetDecoration>());
|
||||
|
||||
auto* set = var_deco->AsSet();
|
||||
auto* set = var_deco->As<ast::SetDecoration>();
|
||||
EXPECT_EQ(set->value(), 4u);
|
||||
}
|
||||
|
||||
|
|
|
@ -792,11 +792,11 @@ bool Builder::GenerateGlobalVariable(ast::Variable* var) {
|
|||
push_annot(spv::Op::OpDecorate,
|
||||
{Operand::Int(var_id), Operand::Int(SpvDecorationBinding),
|
||||
Operand::Int(binding->value())});
|
||||
} else if (deco->IsSet()) {
|
||||
} else if (auto* set = deco->As<ast::SetDecoration>()) {
|
||||
push_annot(
|
||||
spv::Op::OpDecorate,
|
||||
{Operand::Int(var_id), Operand::Int(SpvDecorationDescriptorSet),
|
||||
Operand::Int(deco->AsSet()->value())});
|
||||
Operand::Int(set->value())});
|
||||
} else if (deco->Is<ast::ConstantIdDecoration>()) {
|
||||
// Spec constants are handled elsewhere
|
||||
} else {
|
||||
|
|
|
@ -643,8 +643,8 @@ bool GeneratorImpl::EmitVariableDecorations(ast::DecoratedVariable* var) {
|
|||
|
||||
if (auto* binding = deco->As<ast::BindingDecoration>()) {
|
||||
out_ << "binding(" << binding->value() << ")";
|
||||
} else if (deco->IsSet()) {
|
||||
out_ << "set(" << deco->AsSet()->value() << ")";
|
||||
} else if (auto* set = deco->As<ast::SetDecoration>()) {
|
||||
out_ << "set(" << set->value() << ")";
|
||||
} else if (auto* location = deco->As<ast::LocationDecoration>()) {
|
||||
out_ << "location(" << location->value() << ")";
|
||||
} else if (auto* builtin = deco->As<ast::BuiltinDecoration>()) {
|
||||
|
|
Loading…
Reference in New Issue