While throwing a TypeCheckingExceptionPrivate, an IllegalArgumentException was thrown when
trying calling toString() on a malformed node. Fixed by printing the kind of the node and its children
rather than calling toString() on the malformed node.
: Exception(message), d_node(new Node(node))
{
#ifdef CVC4_DEBUG
+ std::stringstream ss;
LastExceptionBuffer* current = LastExceptionBuffer::getCurrent();
if(current != NULL){
- current->setContents(toString().c_str());
+ // Since this node is malformed, we cannot use toString().
+ // Instead, we print the kind and the children.
+ ss << "node kind: " << node.getKind() << ". children: ";
+ int i = 0;
+ for (const TNode& child : node)
+ {
+ ss << "child[" << i << "]: " << child << ". ";
+ i++;
+ }
+ string ssstring = ss.str();
+ current->setContents(ssstring.c_str());
}
#endif /* CVC4_DEBUG */
}