From 19a187fa90946da7867254cb055b534c66271df7 Mon Sep 17 00:00:00 2001 From: Maciej Suminski Date: Fri, 22 Jan 2016 10:15:12 +0100 Subject: [PATCH] vhdlpp: Fixed the Expression visitor code. --- vhdlpp/expression.cc | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/vhdlpp/expression.cc b/vhdlpp/expression.cc index 1a0475f27..811d42457 100644 --- a/vhdlpp/expression.cc +++ b/vhdlpp/expression.cc @@ -88,11 +88,13 @@ list*ExpAttribute::clone_args() const { void ExpAttribute::visit_args(ExprVisitor& func) { if(args_) { - for(list::iterator it = args_->begin(); + for(list::iterator it = args_->begin(); it != args_->end(); ++it) { - func(*it); - } + (*it)->visit(func); + } } + + func(this); } ExpObjAttribute::ExpObjAttribute(ExpName*base, perm_string name, list*args) @@ -405,9 +407,8 @@ Expression*ExpConditional::clone() const void ExpConditional::visit(ExprVisitor& func) { for(std::list::iterator it = options_.begin(); - it != options_.end(); ++it) { + it != options_.end(); ++it) (*it)->visit(func); - } func(this); } @@ -474,12 +475,11 @@ Expression*ExpSelected::clone() const void ExpConditional::case_t::visit(ExprVisitor& func) { if(cond_) - func(cond_); + cond_->visit(func); for(std::list::iterator it = true_clause_.begin(); - it != true_clause_.end(); ++it) { - func(*it); - } + it != true_clause_.end(); ++it) + (*it)->visit(func); } ExpEdge::ExpEdge(ExpEdge::fun_t typ, Expression*op)