@@ -4159,9 +4159,6 @@
if (t != NULL
&& Type::traverse(t, traverse) == TRAVERSE_EXIT)
return TRAVERSE_EXIT;
- }
- if ((traverse_mask & Traverse::traverse_expressions) != 0)
- {
if (p->const_value()->traverse_expression(traverse)
== TRAVERSE_EXIT)
return TRAVERSE_EXIT;
@@ -4188,7 +4185,8 @@
return TRAVERSE_EXIT;
}
if (p->is_variable()
- && (traverse_mask & Traverse::traverse_expressions) != 0)
+ && ((traverse_mask & Traverse::traverse_types) != 0
+ || (traverse_mask & Traverse::traverse_expressions) != 0))
{
if (p->var_value()->traverse_expression(traverse)
== TRAVERSE_EXIT)
@@ -108,7 +108,8 @@
{
if (expr_list == NULL)
return TRAVERSE_CONTINUE;
- if ((traverse->traverse_mask() & Traverse::traverse_expressions) == 0)
+ if ((traverse->traverse_mask()
+ & (Traverse::traverse_types | Traverse::traverse_expressions)) == 0)
return TRAVERSE_CONTINUE;
return expr_list->traverse(traverse);
}
@@ -3010,7 +3011,8 @@
Case_clauses::Case_clause::traverse(Traverse* traverse)
{
if (this->cases_ != NULL
- && (traverse->traverse_mask() & Traverse::traverse_expressions) != 0)
+ && (traverse->traverse_mask()
+ & (Traverse::traverse_types | Traverse::traverse_expressions)) != 0)
{
if (this->cases_->traverse(traverse) == TRAVERSE_EXIT)
return TRAVERSE_EXIT;
@@ -3941,7 +3943,8 @@
Select_clauses::Select_clause::traverse(Traverse* traverse)
{
if (!this->is_lowered_
- && (traverse->traverse_mask() & Traverse::traverse_expressions) != 0)
+ && (traverse->traverse_mask()
+ & (Traverse::traverse_types | Traverse::traverse_expressions)) != 0)
{
if (this->channel_ != NULL)
{