void TraversingVisitor::visit(Assignment &assign)
{
- visit(static_cast<BinaryExpression &>(assign));
+ assign.left->visit(*this);
+ assign.right->visit(*this);
}
void TraversingVisitor::visit(FunctionCall &call)
void TraversingVisitor::visit(InterfaceBlock &iface)
{
- iface.members.visit(*this);
+ if(iface.members)
+ iface.members->visit(*this);
}
void TraversingVisitor::visit(FunctionDeclaration &func)
{
if(to_remove->count(&iface))
{
- remove_from_map(stage->interface_blocks, iface.name, iface);
+ remove_from_map(stage->interface_blocks, iface.interface+iface.name, iface);
if(!iface.instance_name.empty())
- remove_from_map(stage->interface_blocks, iface.instance_name, iface);
+ remove_from_map(stage->interface_blocks, "_"+iface.instance_name, iface);
}
SetFlag set_recursive(recursive_remove, recursive_remove || to_remove->count(&iface));
TraversingVisitor::visit(iface);