diff options
author | John Hodge <tpg@mutabah.net> | 2015-03-26 09:48:23 +0800 |
---|---|---|
committer | John Hodge <tpg@mutabah.net> | 2015-03-26 09:48:23 +0800 |
commit | 100c843c70d9ee4c8e142cb45ba9b177b7da158d (patch) | |
tree | a9a12fc5357479eac1f8a26f7d39a11c5ce17dc3 /src/dump_as_rust.cpp | |
parent | 0dec25af084dcb27500d840e4afabe6ad7e65a9e (diff) | |
download | mrust-100c843c70d9ee4c8e142cb45ba9b177b7da158d.tar.gz |
Cleaning up rust source output
Diffstat (limited to 'src/dump_as_rust.cpp')
-rw-r--r-- | src/dump_as_rust.cpp | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/src/dump_as_rust.cpp b/src/dump_as_rust.cpp index f3fd8f83..20dc3ab5 100644 --- a/src/dump_as_rust.cpp +++ b/src/dump_as_rust.cpp @@ -34,6 +34,10 @@ public: virtual void visit(AST::ExprNode_Block& n) override { m_os << "{"; inc_indent(); + if( n.m_inner_mod.get() ) + { + handle_module(*n.m_inner_mod); + } bool is_first = true; for( auto& child : n.m_nodes ) { @@ -89,13 +93,28 @@ public: m_expr_root = false; m_os << "let "; print_pattern(n.m_pat); + m_os << ": "; + print_type(n.m_type); m_os << " = "; AST::NodeVisitor::visit(n.m_value); } virtual void visit(AST::ExprNode_Assign& n) override { m_expr_root = false; AST::NodeVisitor::visit(n.m_slot); - m_os << " = "; + switch(n.m_op) + { + case AST::ExprNode_Assign::NONE: m_os << " = "; break; + case AST::ExprNode_Assign::ADD: m_os << " += "; break; + case AST::ExprNode_Assign::SUB: m_os << " -= "; break; + case AST::ExprNode_Assign::MUL: m_os << " *= "; break; + case AST::ExprNode_Assign::DIV: m_os << " /= "; break; + case AST::ExprNode_Assign::MOD: m_os << " %= "; break; + case AST::ExprNode_Assign::AND: m_os << " &= "; break; + case AST::ExprNode_Assign::OR: m_os << " |= "; break; + case AST::ExprNode_Assign::XOR: m_os << " ^= "; break; + case AST::ExprNode_Assign::SHR: m_os << " >>= "; break; + case AST::ExprNode_Assign::SHL: m_os << " <<= "; break; + } AST::NodeVisitor::visit(n.m_value); } virtual void visit(AST::ExprNode_CallPath& n) override { |