aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Faust <david.faust@oracle.com>2022-10-05 10:10:18 -0700
committerDavid Faust <david.faust@oracle.com>2022-10-05 10:10:18 -0700
commitd55f22d046f5b54ec6d77af040aa1805e12ea9d1 (patch)
treef9415c638a22bd990fbb734172c9e2d149d2d724
parent8ff035ddc55079161d24941785114aa0f5056260 (diff)
downloadgcc-d55f22d046f5b54ec6d77af040aa1805e12ea9d1.zip
gcc-d55f22d046f5b54ec6d77af040aa1805e12ea9d1.tar.gz
gcc-d55f22d046f5b54ec6d77af040aa1805e12ea9d1.tar.bz2
ast: dump assignment and compound assignment expr
-rw-r--r--gcc/rust/ast/rust-ast-dump.cc56
1 files changed, 54 insertions, 2 deletions
diff --git a/gcc/rust/ast/rust-ast-dump.cc b/gcc/rust/ast/rust-ast-dump.cc
index 8ad00b5..f137f4e 100644
--- a/gcc/rust/ast/rust-ast-dump.cc
+++ b/gcc/rust/ast/rust-ast-dump.cc
@@ -281,11 +281,63 @@ Dump::visit (TypeCastExpr &expr)
void
Dump::visit (AssignmentExpr &expr)
-{}
+{
+ expr.visit_lhs (*this);
+ stream << " = ";
+ expr.visit_rhs (*this);
+}
void
Dump::visit (CompoundAssignmentExpr &expr)
-{}
+{
+ auto op = "";
+ switch (expr.get_expr_type ())
+ {
+ case CompoundAssignmentOperator::ADD:
+ op = "+";
+ break;
+
+ case CompoundAssignmentOperator::SUBTRACT:
+ op = "-";
+ break;
+
+ case CompoundAssignmentOperator::MULTIPLY:
+ op = "*";
+ break;
+
+ case CompoundAssignmentOperator::DIVIDE:
+ op = "/";
+ break;
+
+ case CompoundAssignmentOperator::MODULUS:
+ op = "%";
+ break;
+
+ case CompoundAssignmentOperator::BITWISE_AND:
+ op = "&";
+ break;
+
+ case CompoundAssignmentOperator::BITWISE_OR:
+ op = "|";
+ break;
+
+ case CompoundAssignmentOperator::BITWISE_XOR:
+ op = "^";
+ break;
+
+ case CompoundAssignmentOperator::LEFT_SHIFT:
+ op = "<<";
+ break;
+
+ case CompoundAssignmentOperator::RIGHT_SHIFT:
+ op = ">>";
+ break;
+ }
+
+ expr.get_left_expr ()->accept_vis (*this);
+ stream << " " << op << "= ";
+ expr.get_right_expr ()->accept_vis (*this);
+}
void
Dump::visit (GroupedExpr &expr)