diff options
author | John Hodge <tpg@mutabah.net> | 2016-08-10 15:49:20 +0800 |
---|---|---|
committer | John Hodge <tpg@mutabah.net> | 2016-08-10 15:49:20 +0800 |
commit | 9744f22c07c28d1577de9ee7034e337c1cfc46de (patch) | |
tree | 31718bf84fb46ee2398b9493872089171ce02d74 /src/hir | |
parent | 8f3fa5853e80590f666e4852f4f373c7b7826d3b (diff) | |
download | mrust-9744f22c07c28d1577de9ee7034e337c1cfc46de.tar.gz |
HIR - Add EnumValue variant to Pattern
Diffstat (limited to 'src/hir')
-rw-r--r-- | src/hir/pattern.cpp | 12 | ||||
-rw-r--r-- | src/hir/pattern.hpp | 5 | ||||
-rw-r--r-- | src/hir/visitor.cpp | 3 |
3 files changed, 17 insertions, 3 deletions
diff --git a/src/hir/pattern.cpp b/src/hir/pattern.cpp index 8a95fa53..386d1699 100644 --- a/src/hir/pattern.cpp +++ b/src/hir/pattern.cpp @@ -76,6 +76,9 @@ namespace HIR { os << e.start << " ... " << e.end; ), + (EnumValue, + os << e.path; + ), (EnumTuple, os << e.path; os << "("; @@ -84,7 +87,7 @@ namespace HIR { os << ")"; ), (EnumTupleWildcard, - os << e.path; + os << e.path << "(..)"; ), (EnumStruct, os << e.path; @@ -204,14 +207,17 @@ namespace { })); ), + (EnumValue, + 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.path.clone(), e.binding_ptr, e.binding_idx })); ), (EnumTupleWildcard, return Pattern(m_binding, Data::make_EnumTupleWildcard({ - e.path.clone() + e.path.clone(), e.binding_ptr, e.binding_idx })); ), (EnumStruct, diff --git a/src/hir/pattern.hpp b/src/hir/pattern.hpp index 72cb061d..b02721b2 100644 --- a/src/hir/pattern.hpp +++ b/src/hir/pattern.hpp @@ -79,6 +79,11 @@ struct Pattern // Refutable (Value, struct { Value val; } ), (Range, struct { Value start; Value end; } ), + (EnumValue, struct { + GenericPath path; + const Enum* binding_ptr; + unsigned binding_idx; + } ), (EnumTuple, struct { GenericPath path; const Enum* binding_ptr; diff --git a/src/hir/visitor.cpp b/src/hir/visitor.cpp index cb942123..9767996e 100644 --- a/src/hir/visitor.cpp +++ b/src/hir/visitor.cpp @@ -351,6 +351,9 @@ void ::HIR::Visitor::visit_pattern(::HIR::Pattern& pat) this->visit_pattern_val(e.start); this->visit_pattern_val(e.end); ), + (EnumValue, + this->visit_generic_path(e.path, ::HIR::Visitor::PathContext::TYPE); + ), (EnumTupleWildcard, this->visit_generic_path(e.path, ::HIR::Visitor::PathContext::TYPE); ), |