summaryrefslogtreecommitdiff
path: root/dhall/src
diff options
context:
space:
mode:
authorNadrieril2019-11-11 18:20:52 +0000
committerNadrieril2019-11-11 18:20:52 +0000
commitb33e1fc80bb0e7191c1ea3378569ed8c0fe4af6d (patch)
tree6393fec65f1576a8c9fcea28e38b4a0ae1b256a3 /dhall/src
parentd5b28bf2b4a5a26de67e4de731ad19699f33e75e (diff)
Add more detail to TypeMismatch error
Diffstat (limited to 'dhall/src')
-rw-r--r--dhall/src/error/mod.rs17
1 files changed, 14 insertions, 3 deletions
diff --git a/dhall/src/error/mod.rs b/dhall/src/error/mod.rs
index 4d59cbb..e4baea0 100644
--- a/dhall/src/error/mod.rs
+++ b/dhall/src/error/mod.rs
@@ -111,9 +111,20 @@ impl std::fmt::Display for TypeError {
v.span().error("Type error: Invalid function output")
}
NotAFunction(v) => v.span().error("Type error: Not a function"),
- TypeMismatch(v, _, _) => v
- .span()
- .error("Type error: Wrong type of function argument"),
+ TypeMismatch(x, y, z) => {
+ x.span()
+ .error("Type error: Wrong type of function argument")
+ + "\n"
+ + &z.span().error(format!(
+ "This argument has type {:?}",
+ z.get_type().unwrap()
+ ))
+ + "\n"
+ + &y.span().error(format!(
+ "But the function expected an argument of type {:?}",
+ y
+ ))
+ }
_ => "Type error: Unhandled error".to_string(),
};
write!(f, "{}", msg)