diff options
Diffstat (limited to 'src/ast/pattern.hpp')
-rw-r--r-- | src/ast/pattern.hpp | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/src/ast/pattern.hpp b/src/ast/pattern.hpp index 6b89aa35..f28fe8e3 100644 --- a/src/ast/pattern.hpp +++ b/src/ast/pattern.hpp @@ -21,6 +21,7 @@ public: TAGGED_UNION(Data, Any, (Any, () ), (MaybeBind, () ), + (Box, (unique_ptr<Pattern> sub;) ), (Ref, (bool mut; unique_ptr<Pattern> sub;) ), (Value, (unique_ptr<ExprNode> start; unique_ptr<ExprNode> end;) ), (Tuple, (::std::vector<Pattern> sub_patterns;) ), @@ -52,6 +53,11 @@ public: m_data( Data::make_MaybeBind({}) ) {} + struct TagBox {}; + Pattern(TagBox, Pattern sub): + m_data( Data::make_Box({ unique_ptr<Pattern>(new Pattern(mv$(sub))) }) ) + {} + struct TagValue {}; Pattern(TagValue, unique_ptr<ExprNode> node, unique_ptr<ExprNode> node2 = 0): m_data( Data::make_Value({ ::std::move(node), ::std::move(node2) }) ) |