summaryrefslogtreecommitdiff
path: root/src/hir/pattern.cpp
diff options
context:
space:
mode:
authorJohn Hodge <tpg@mutabah.net>2016-08-12 23:40:36 +0800
committerJohn Hodge <tpg@mutabah.net>2016-08-12 23:40:36 +0800
commit53ebabd01b6cc8aca39c48cb616c17fa23a0782d (patch)
tree5e2c03f349344c32ac314b6a73cf1c52247f6d70 /src/hir/pattern.cpp
parentb337562448d2dccd2a634b8dba50aeab76376f4b (diff)
downloadmrust-53ebabd01b6cc8aca39c48cb616c17fa23a0782d.tar.gz
HIR Patterns - Support binding Value::Named to targets
Diffstat (limited to 'src/hir/pattern.cpp')
-rw-r--r--src/hir/pattern.cpp14
1 files changed, 11 insertions, 3 deletions
diff --git a/src/hir/pattern.cpp b/src/hir/pattern.cpp
index 386d1699..f3ad277e 100644
--- a/src/hir/pattern.cpp
+++ b/src/hir/pattern.cpp
@@ -12,7 +12,7 @@ namespace HIR {
os << "\"" << e << "\"";
),
(Named,
- os << e;
+ os << e.path;
)
)
return os;
@@ -51,6 +51,9 @@ namespace HIR {
os << s << ", ";
os << ")";
),
+ (StructValue,
+ os << e.path;
+ ),
(StructTuple,
os << e.path;
os << "(";
@@ -59,7 +62,7 @@ namespace HIR {
os << ")";
),
(StructTupleWildcard,
- os << e.path;
+ os << e.path << "(..)";
),
(Struct,
os << e.path;
@@ -145,7 +148,7 @@ namespace {
return ::HIR::Pattern::Value::make_String(e);
),
(Named,
- return ::HIR::Pattern::Value::make_Named(e.clone());
+ return ::HIR::Pattern::Value::make_Named({ e.path.clone(), e.binding });
)
)
throw "";
@@ -173,6 +176,11 @@ namespace {
clone_pat_vec(e.sub_patterns)
}));
),
+ (StructValue,
+ return Pattern(m_binding, Data::make_StructValue({
+ e.path.clone(), e.binding
+ }));
+ ),
(StructTuple,
return Pattern(m_binding, Data::make_StructTuple({
e.path.clone(),