}
}
break;
- case kind::APPLY_TESTER:
- toStream(op, n.getOperator(), depth, types, false);
+ case kind::APPLY_TESTER: {
+ Assert( !n.getType().isTuple() && !n.getType().isRecord() );
+ op << "is_";
+ unsigned cindex = Datatype::indexOf(n.getOperator().toExpr());
+ const Datatype& dt = Datatype::datatypeOf(n.getOperator().toExpr());
+ toStream(op, Node::fromExpr(dt[cindex].getConstructor()), depth, types, false);
+ }
break;
case kind::CONSTRUCTOR_TYPE:
case kind::SELECTOR_TYPE:
tmp.replace(pos, 8, "::");
}
out << tmp;
+ }else if( n.getKind()==kind::APPLY_TESTER ){
+ unsigned cindex = Datatype::indexOf(n.getOperator().toExpr());
+ const Datatype& dt = Datatype::datatypeOf(n.getOperator().toExpr());
+ out << "is-";
+ toStream(out, Node::fromExpr(dt[cindex].getConstructor()), toDepth < 0 ? toDepth : toDepth - 1, types);
}else{
toStream(out, n.getOperator(), toDepth < 0 ? toDepth : toDepth - 1, types);
}