diff options
author | John Hodge <tpg@mutabah.net> | 2016-08-18 21:40:06 +0800 |
---|---|---|
committer | John Hodge <tpg@mutabah.net> | 2016-08-18 21:40:06 +0800 |
commit | c0d8141930e95f71a6d4fb84114fdc8a449527b7 (patch) | |
tree | 828892e2cbee599bc15227ba3270f6ddc82d2581 /src/hir/pattern.cpp | |
parent | 65aba167033019994e35f43b819d8fbd3620e9ff (diff) | |
download | mrust-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.cpp | 29 |
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, |