summaryrefslogtreecommitdiff
path: root/src/theory/builtin
diff options
context:
space:
mode:
authorMorgan Deters <mdeters@gmail.com>2011-04-20 11:19:50 +0000
committerMorgan Deters <mdeters@gmail.com>2011-04-20 11:19:50 +0000
commit2499bd64a5ac688573ebbcd6114983f64a8094eb (patch)
tree0d49608cf7c21298fbeb8606fa1943c96beb8652 /src/theory/builtin
parent5a98094e8eee680d4f489e901107dfc484a1679f (diff)
numerous bugfixes
Diffstat (limited to 'src/theory/builtin')
-rw-r--r--src/theory/builtin/theory_builtin_type_rules.h11
1 files changed, 9 insertions, 2 deletions
diff --git a/src/theory/builtin/theory_builtin_type_rules.h b/src/theory/builtin/theory_builtin_type_rules.h
index ec98e61d2..0d313594c 100644
--- a/src/theory/builtin/theory_builtin_type_rules.h
+++ b/src/theory/builtin/theory_builtin_type_rules.h
@@ -48,9 +48,15 @@ class ApplyTypeRule {
TNode::iterator argument_it = n.begin();
TNode::iterator argument_it_end = n.end();
TypeNode::iterator argument_type_it = fType.begin();
- for(; argument_it != argument_it_end; ++argument_it) {
+ for(; argument_it != argument_it_end; ++argument_it, ++argument_type_it) {
if((*argument_it).getType() != *argument_type_it) {
- throw TypeCheckingExceptionPrivate(n, "argument types do not match the function type");
+ std::stringstream ss;
+ ss << Expr::setlanguage(language::toOutputLanguage(Options::current()->inputLanguage));
+ ss << "argument types do not match the function type:\n"
+ << "argument: " << *argument_it << "\n"
+ << "has type: " << (*argument_it).getType() << "\n"
+ << "not equal: " << *argument_type_it;
+ throw TypeCheckingExceptionPrivate(n, ss.str());
}
}
} else {
@@ -75,6 +81,7 @@ class EqualityTypeRule {
if ( lhsType != rhsType ) {
std::stringstream ss;
+ ss << Expr::setlanguage(language::toOutputLanguage(Options::current()->inputLanguage));
ss << "Types do not match in equation ";
ss << "[" << lhsType << "<>" << rhsType << "]";
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback