summaryrefslogtreecommitdiff
path: root/src/hir/pattern.cpp
diff options
context:
space:
mode:
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(),