Add AST::TuplePatternItems::TuplePatternItemType to differentiate between them

This commit is contained in:
Philip Herron 2022-04-20 18:03:15 +01:00
parent 03ec66cf11
commit 4eaec85303
1 changed files with 18 additions and 0 deletions

View File

@ -1135,6 +1135,12 @@ protected:
class TuplePatternItems
{
public:
enum TuplePatternItemType
{
MULTIPLE,
RANGED,
};
virtual ~TuplePatternItems () {}
// TODO: should this store location data?
@ -1150,6 +1156,8 @@ public:
virtual void accept_vis (ASTVisitor &vis) = 0;
virtual TuplePatternItemType get_pattern_type () const = 0;
protected:
// pure virtual clone implementation
virtual TuplePatternItems *clone_tuple_pattern_items_impl () const = 0;
@ -1234,6 +1242,11 @@ public:
return patterns;
}
TuplePatternItemType get_pattern_type () const override
{
return TuplePatternItemType::MULTIPLE;
}
protected:
/* Use covariance to implement clone function as returning this object rather
* than base */
@ -1312,6 +1325,11 @@ public:
return upper_patterns;
}
TuplePatternItemType get_pattern_type () const override
{
return TuplePatternItemType::RANGED;
}
protected:
/* Use covariance to implement clone function as returning this object rather
* than base */