summaryrefslogtreecommitdiff
path: root/dhall/src/phase/binary.rs
diff options
context:
space:
mode:
authorNadrieril2019-08-06 22:36:43 +0200
committerNadrieril2019-08-06 22:36:43 +0200
commit705433487da3cd3b4517fcf74b0497c76dbb4080 (patch)
tree32a55f2824cd24d90211873c5bda42a14ae4824f /dhall/src/phase/binary.rs
parent0a1cf5554e8c06d05d24bdcdcf1eb71f0ac6d8f2 (diff)
Prepare for https://github.com/dhall-lang/dhall-lang/pull/630
Diffstat (limited to '')
-rw-r--r--dhall/src/phase/binary.rs11
1 files changed, 9 insertions, 2 deletions
diff --git a/dhall/src/phase/binary.rs b/dhall/src/phase/binary.rs
index bab3fd8..66b235f 100644
--- a/dhall/src/phase/binary.rs
+++ b/dhall/src/phase/binary.rs
@@ -106,7 +106,7 @@ fn cbor_value_to_dhall(
}
[U64(4), t] => {
let t = cbor_value_to_dhall(&t)?;
- EmptyListLit(t)
+ EmptyListLit(rc(App(rc(ExprF::Builtin(Builtin::List)), t)))
}
[U64(4), Null, rest..] => {
let rest = rest
@@ -413,6 +413,7 @@ where
S: serde::ser::Serializer,
{
use cbor::Value::{String, I64, U64};
+ use dhall_syntax::Builtin;
use dhall_syntax::ExprF::*;
use std::iter::once;
@@ -471,7 +472,13 @@ where
}
Annot(x, y) => ser_seq!(ser; tag(26), expr(x), expr(y)),
SomeLit(x) => ser_seq!(ser; tag(5), null(), expr(x)),
- EmptyListLit(x) => ser_seq!(ser; tag(4), expr(x)),
+ EmptyListLit(x) => match x.as_ref() {
+ App(f, a) => match f.as_ref() {
+ ExprF::Builtin(Builtin::List) => ser_seq!(ser; tag(4), expr(a)),
+ _ => unreachable!(),
+ },
+ _ => unreachable!(),
+ },
NEListLit(xs) => ser.collect_seq(
once(tag(4)).chain(once(null())).chain(xs.iter().map(expr)),
),