summaryrefslogtreecommitdiff
path: root/src/ast/pattern.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/ast/pattern.hpp')
-rw-r--r--src/ast/pattern.hpp6
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) }) )