summaryrefslogtreecommitdiff
path: root/dhall/src/semantics/phase/typecheck.rs
diff options
context:
space:
mode:
authorNadrieril2020-01-17 16:09:35 +0000
committerNadrieril2020-01-17 16:20:55 +0000
commit37acac4b972b38e8dbe2d174dae1031e5a8eda67 (patch)
tree02a9105c005d57af110a47130501078254411d0e /dhall/src/semantics/phase/typecheck.rs
parent06f619e8b1654e506840d17dc1cbff4f2d9795c3 (diff)
Tweak: handle empty lists in typeck
Diffstat (limited to 'dhall/src/semantics/phase/typecheck.rs')
-rw-r--r--dhall/src/semantics/phase/typecheck.rs14
1 files changed, 10 insertions, 4 deletions
diff --git a/dhall/src/semantics/phase/typecheck.rs b/dhall/src/semantics/phase/typecheck.rs
index c77d9c4..852f41b 100644
--- a/dhall/src/semantics/phase/typecheck.rs
+++ b/dhall/src/semantics/phase/typecheck.rs
@@ -433,12 +433,18 @@ fn type_last_layer(
RetTypeOnly(y.get_type()?)
}
EmptyListLit(t) => {
- match &*t.as_whnf() {
+ let arg = match &*t.as_whnf() {
ValueKind::AppliedBuiltin(syntax::Builtin::List, args)
- if args.len() == 1 => {}
+ if args.len() == 1 =>
+ {
+ args[0].clone()
+ }
_ => return mkerr(InvalidListType(t.clone())),
- }
- RetTypeOnly(t.clone())
+ };
+ RetWhole(Value::from_kind_and_type(
+ ValueKind::EmptyListLit(arg),
+ t.clone(),
+ ))
}
NEListLit(xs) => {
let mut iter = xs.iter().enumerate();