summaryrefslogtreecommitdiff
path: root/src/hir/pattern.cpp
diff options
context:
space:
mode:
authorJohn Hodge <tpg@mutabah.net>2016-08-18 21:40:06 +0800
committerJohn Hodge <tpg@mutabah.net>2016-08-18 21:40:06 +0800
commitc0d8141930e95f71a6d4fb84114fdc8a449527b7 (patch)
tree828892e2cbee599bc15227ba3270f6ddc82d2581 /src/hir/pattern.cpp
parent65aba167033019994e35f43b819d8fbd3620e9ff (diff)
downloadmrust-c0d8141930e95f71a6d4fb84114fdc8a449527b7.tar.gz
All - Support tuple patterns with .. at the start/end - TODO: Support in the middle
Diffstat (limited to 'src/hir/pattern.cpp')
-rw-r--r--src/hir/pattern.cpp29
1 files changed, 10 insertions, 19 deletions
diff --git a/src/hir/pattern.cpp b/src/hir/pattern.cpp
index f3ad277e..d6715f0c 100644
--- a/src/hir/pattern.cpp
+++ b/src/hir/pattern.cpp
@@ -47,8 +47,12 @@ namespace HIR {
),
(Tuple,
os << "(";
+ if(e.glob_pos == ::HIR::Pattern::GlobPos::Start)
+ os << ".., ";
for(const auto& s : e.sub_patterns)
os << s << ", ";
+ if(e.glob_pos == ::HIR::Pattern::GlobPos::End)
+ os << ".., ";
os << ")";
),
(StructValue,
@@ -61,9 +65,6 @@ namespace HIR {
os << s << ", ";
os << ")";
),
- (StructTupleWildcard,
- os << e.path << "(..)";
- ),
(Struct,
os << e.path;
os << "{ ";
@@ -89,9 +90,6 @@ namespace HIR {
os << s << ", ";
os << ")";
),
- (EnumTupleWildcard,
- os << e.path << "(..)";
- ),
(EnumStruct,
os << e.path;
os << "{ ";
@@ -173,6 +171,7 @@ namespace {
),
(Tuple,
return Pattern(m_binding, Data::make_Tuple({
+ e.glob_pos,
clone_pat_vec(e.sub_patterns)
}));
),
@@ -188,12 +187,6 @@ namespace {
clone_pat_vec(e.sub_patterns)
}));
),
- (StructTupleWildcard,
- return Pattern(m_binding, Data::make_StructTupleWildcard({
- e.path.clone(),
- e.binding
- }));
- ),
(Struct,
return Pattern(m_binding, Data::make_Struct({
e.path.clone(),
@@ -219,13 +212,11 @@ namespace {
return Pattern(m_binding, Data::make_EnumValue({ e.path.clone(), e.binding_ptr, e.binding_idx }));
),
(EnumTuple,
- return Pattern(m_binding, Data::make_EnumTupleWildcard({
- e.path.clone(), e.binding_ptr, e.binding_idx
- }));
- ),
- (EnumTupleWildcard,
- return Pattern(m_binding, Data::make_EnumTupleWildcard({
- e.path.clone(), e.binding_ptr, e.binding_idx
+ return Pattern(m_binding, Data::make_EnumTuple({
+ e.path.clone(),
+ e.binding_ptr,
+ e.binding_idx,
+ clone_pat_vec(e.sub_patterns)
}));
),
(EnumStruct,