summaryrefslogtreecommitdiff
path: root/src/ast/pattern.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/ast/pattern.cpp')
-rw-r--r--src/ast/pattern.cpp19
1 files changed, 15 insertions, 4 deletions
diff --git a/src/ast/pattern.cpp b/src/ast/pattern.cpp
index bfcc6eeb..b3c4f2f2 100644
--- a/src/ast/pattern.cpp
+++ b/src/ast/pattern.cpp
@@ -75,11 +75,23 @@ namespace AST {
}
return os;
}
+::std::ostream& operator<<(::std::ostream& os, const PatternBinding& pb)
+{
+ if( pb.m_mutable )
+ os << "mut ";
+ switch(pb.m_type)
+ {
+ case PatternBinding::Type::MOVE: break;
+ case PatternBinding::Type::REF: os << "ref "; break;
+ case PatternBinding::Type::MUTREF: os << "ref mut "; break;
+ }
+ os << pb.m_name;
+ return os;
+}
::std::ostream& operator<<(::std::ostream& os, const Pattern& pat)
{
- os << "Pattern(";
if( pat.m_binding.is_valid() ) {
- os << pat.m_binding.m_name << " @ ";
+ os << pat.m_binding << " @ ";
}
TU_MATCH(Pattern::Data, (pat.m_data), (ent),
(MaybeBind,
@@ -128,7 +140,7 @@ namespace AST {
os << ", ";
}
if( ent.extra_bind.is_valid() )
- os << ent.extra_bind.m_name;
+ os << ent.extra_bind;
os << "..";
needs_comma = true;
@@ -141,7 +153,6 @@ namespace AST {
os << "]";
)
)
- os << ")";
return os;
}
void operator%(Serialiser& s, Pattern::Value::Tag c) {