summaryrefslogtreecommitdiff
path: root/src/dump_as_rust.cpp
diff options
context:
space:
mode:
authorJohn Hodge <tpg@mutabah.net>2015-03-08 17:53:17 +0800
committerJohn Hodge <tpg@mutabah.net>2015-03-08 17:53:17 +0800
commit54ab187e82a41f7221660c7b1dc7777ce8a17228 (patch)
tree7666a9f00e43a29a709cac83643519824a8a6aad /src/dump_as_rust.cpp
parent6817bc18309f903a07cb86dbd13eeed97b1ca995 (diff)
downloadmrust-54ab187e82a41f7221660c7b1dc7777ce8a17228.tar.gz
Correct parsing of macro expansion template.
Diffstat (limited to 'src/dump_as_rust.cpp')
-rw-r--r--src/dump_as_rust.cpp22
1 files changed, 22 insertions, 0 deletions
diff --git a/src/dump_as_rust.cpp b/src/dump_as_rust.cpp
index cfe9b5d6..1a7737ba 100644
--- a/src/dump_as_rust.cpp
+++ b/src/dump_as_rust.cpp
@@ -274,11 +274,18 @@ public:
{
case AST::ExprNode_BinOp::CMPEQU: m_os << "=="; break;
case AST::ExprNode_BinOp::CMPNEQU:m_os << "!="; break;
+ case AST::ExprNode_BinOp::CMPLT: m_os << "<"; break;
+ case AST::ExprNode_BinOp::CMPLTE: m_os << "<="; break;
+ case AST::ExprNode_BinOp::CMPGT: m_os << ">"; break;
+ case AST::ExprNode_BinOp::CMPGTE: m_os << ">="; break;
case AST::ExprNode_BinOp::BITAND: m_os << "&"; break;
case AST::ExprNode_BinOp::BITOR: m_os << "|"; break;
case AST::ExprNode_BinOp::BITXOR: m_os << "^"; break;
case AST::ExprNode_BinOp::SHL: m_os << "<<"; break;
case AST::ExprNode_BinOp::SHR: m_os << ">>"; break;
+ case AST::ExprNode_BinOp::MULTIPLY: m_os << "*"; break;
+ case AST::ExprNode_BinOp::DIVIDE: m_os << "/"; break;
+ case AST::ExprNode_BinOp::MODULO: m_os << "%"; break;
}
m_os << " ";
if( IS(*n.m_right, AST::ExprNode_BinOp) )
@@ -286,6 +293,21 @@ public:
else
AST::NodeVisitor::visit(n.m_right);
}
+ virtual void visit(AST::ExprNode_UniOp& n) override {
+ m_expr_root = false;
+ switch(n.m_type)
+ {
+ case AST::ExprNode_UniOp::NEGATE: m_os << "-"; break;
+ case AST::ExprNode_UniOp::INVERT: m_os << "!"; break;
+ case AST::ExprNode_UniOp::BOX: m_os << "box "; break;
+ case AST::ExprNode_UniOp::REF: m_os << "&"; break;
+ //case AST::ExprNode_UniOp::REFMUT: m_os << "&mut "; break;
+ }
+
+ if( IS(*n.m_value, AST::ExprNode_BinOp) )
+ m_os << " ";
+ AST::NodeVisitor::visit(n.m_value);
+ }
private: