summaryrefslogtreecommitdiff
path: root/dhall
diff options
context:
space:
mode:
authorNadrieril2019-11-11 13:49:47 +0000
committerNadrieril2019-11-11 13:55:48 +0000
commitc9c248a4cab21fa1ae7692cd193e3b2c698d431d (patch)
tree186a0dd0598d53334bf46fb81280248edbbb7ded /dhall
parent207d10c4b7d838d712b135dca56bc31f3fe5b648 (diff)
Add a few more pretty errors
Diffstat (limited to 'dhall')
-rw-r--r--dhall/src/core/value.rs3
-rw-r--r--dhall/src/error/mod.rs16
-rw-r--r--dhall/tests/type-errors/hurkensParadox.txt2
-rw-r--r--dhall/tests/type-errors/unit/FunctionApplicationArgumentNotMatch.txt2
-rw-r--r--dhall/tests/type-errors/unit/FunctionApplicationIsNotFunction.txt7
-rw-r--r--dhall/tests/type-errors/unit/FunctionArgumentTypeNotAType.txt7
-rw-r--r--dhall/tests/type-errors/unit/FunctionTypeArgumentTypeNotAType.txt7
-rw-r--r--dhall/tests/type-errors/unit/ListLiteralEmptyNotType.txt7
-rw-r--r--dhall/tests/type-errors/unit/MergeHandlerNotFunction.txt2
-rw-r--r--dhall/tests/type-errors/unit/MergeHandlerNotMatchAlternativeType.txt2
-rw-r--r--dhall/tests/type-errors/unit/NaturalSubtractNotNatural.txt7
11 files changed, 45 insertions, 17 deletions
diff --git a/dhall/src/core/value.rs b/dhall/src/core/value.rs
index 61c7015..d4f5131 100644
--- a/dhall/src/core/value.rs
+++ b/dhall/src/core/value.rs
@@ -165,6 +165,9 @@ impl Value {
_ => None,
}
}
+ pub(crate) fn span(&self) -> Span {
+ self.as_internal().span.clone()
+ }
fn as_internal(&self) -> Ref<ValueInternal> {
self.0.borrow()
diff --git a/dhall/src/error/mod.rs b/dhall/src/error/mod.rs
index 02e8ed3..4d59cbb 100644
--- a/dhall/src/error/mod.rs
+++ b/dhall/src/error/mod.rs
@@ -104,16 +104,16 @@ impl std::fmt::Display for TypeError {
use TypeMessage::*;
let msg = match &self.message {
UnboundVariable(span) => span.error("Type error: Unbound variable"),
- InvalidInputType(_) => {
- "Type error: Invalid function input".to_string()
+ InvalidInputType(v) => {
+ v.span().error("Type error: Invalid function input")
}
- InvalidOutputType(_) => {
- "Type error: Invalid function output".to_string()
- }
- NotAFunction(_) => "Type error: Not a function".to_string(),
- TypeMismatch(_, _, _) => {
- "Type error: Wrong type of function argument".to_string()
+ InvalidOutputType(v) => {
+ 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"),
_ => "Type error: Unhandled error".to_string(),
};
write!(f, "{}", msg)
diff --git a/dhall/tests/type-errors/hurkensParadox.txt b/dhall/tests/type-errors/hurkensParadox.txt
index ab75f15..69428b8 100644
--- a/dhall/tests/type-errors/hurkensParadox.txt
+++ b/dhall/tests/type-errors/hurkensParadox.txt
@@ -1 +1 @@
-Type error: Wrong type of function argument
+[unknown location] Type error: Wrong type of function argument
diff --git a/dhall/tests/type-errors/unit/FunctionApplicationArgumentNotMatch.txt b/dhall/tests/type-errors/unit/FunctionApplicationArgumentNotMatch.txt
index ab75f15..69428b8 100644
--- a/dhall/tests/type-errors/unit/FunctionApplicationArgumentNotMatch.txt
+++ b/dhall/tests/type-errors/unit/FunctionApplicationArgumentNotMatch.txt
@@ -1 +1 @@
-Type error: Wrong type of function argument
+[unknown location] Type error: Wrong type of function argument
diff --git a/dhall/tests/type-errors/unit/FunctionApplicationIsNotFunction.txt b/dhall/tests/type-errors/unit/FunctionApplicationIsNotFunction.txt
index 4757d2d..062f9de 100644
--- a/dhall/tests/type-errors/unit/FunctionApplicationIsNotFunction.txt
+++ b/dhall/tests/type-errors/unit/FunctionApplicationIsNotFunction.txt
@@ -1 +1,6 @@
-Type error: Not a function
+ --> 1:1
+ |
+1 | True True␊
+ | ^--^
+ |
+ = Type error: Not a function
diff --git a/dhall/tests/type-errors/unit/FunctionArgumentTypeNotAType.txt b/dhall/tests/type-errors/unit/FunctionArgumentTypeNotAType.txt
index faea460..9e43c33 100644
--- a/dhall/tests/type-errors/unit/FunctionArgumentTypeNotAType.txt
+++ b/dhall/tests/type-errors/unit/FunctionArgumentTypeNotAType.txt
@@ -1 +1,6 @@
-Type error: Invalid function input
+ --> 1:7
+ |
+1 | λ(_ : 1) → _␊
+ | ^
+ |
+ = Type error: Invalid function input
diff --git a/dhall/tests/type-errors/unit/FunctionTypeArgumentTypeNotAType.txt b/dhall/tests/type-errors/unit/FunctionTypeArgumentTypeNotAType.txt
index faea460..dd2e758 100644
--- a/dhall/tests/type-errors/unit/FunctionTypeArgumentTypeNotAType.txt
+++ b/dhall/tests/type-errors/unit/FunctionTypeArgumentTypeNotAType.txt
@@ -1 +1,6 @@
-Type error: Invalid function input
+ --> 1:1
+ |
+1 | 2 → _␊
+ | ^
+ |
+ = Type error: Invalid function input
diff --git a/dhall/tests/type-errors/unit/ListLiteralEmptyNotType.txt b/dhall/tests/type-errors/unit/ListLiteralEmptyNotType.txt
index ab75f15..bc5cc40 100644
--- a/dhall/tests/type-errors/unit/ListLiteralEmptyNotType.txt
+++ b/dhall/tests/type-errors/unit/ListLiteralEmptyNotType.txt
@@ -1 +1,6 @@
-Type error: Wrong type of function argument
+ --> 1:6
+ |
+1 | [] : List Type␊
+ | ^--^
+ |
+ = Type error: Wrong type of function argument
diff --git a/dhall/tests/type-errors/unit/MergeHandlerNotFunction.txt b/dhall/tests/type-errors/unit/MergeHandlerNotFunction.txt
index 4757d2d..c5ed223 100644
--- a/dhall/tests/type-errors/unit/MergeHandlerNotFunction.txt
+++ b/dhall/tests/type-errors/unit/MergeHandlerNotFunction.txt
@@ -1 +1 @@
-Type error: Not a function
+[unknown location] Type error: Not a function
diff --git a/dhall/tests/type-errors/unit/MergeHandlerNotMatchAlternativeType.txt b/dhall/tests/type-errors/unit/MergeHandlerNotMatchAlternativeType.txt
index ab75f15..69428b8 100644
--- a/dhall/tests/type-errors/unit/MergeHandlerNotMatchAlternativeType.txt
+++ b/dhall/tests/type-errors/unit/MergeHandlerNotMatchAlternativeType.txt
@@ -1 +1 @@
-Type error: Wrong type of function argument
+[unknown location] Type error: Wrong type of function argument
diff --git a/dhall/tests/type-errors/unit/NaturalSubtractNotNatural.txt b/dhall/tests/type-errors/unit/NaturalSubtractNotNatural.txt
index ab75f15..fd906bf 100644
--- a/dhall/tests/type-errors/unit/NaturalSubtractNotNatural.txt
+++ b/dhall/tests/type-errors/unit/NaturalSubtractNotNatural.txt
@@ -1 +1,6 @@
-Type error: Wrong type of function argument
+ --> 1:1
+ |
+1 | Natural/subtract True True␊
+ | ^--------------^
+ |
+ = Type error: Wrong type of function argument