diff options
author | Nadrieril | 2019-08-06 22:36:43 +0200 |
---|---|---|
committer | Nadrieril | 2019-08-06 22:36:43 +0200 |
commit | 705433487da3cd3b4517fcf74b0497c76dbb4080 (patch) | |
tree | 32a55f2824cd24d90211873c5bda42a14ae4824f /dhall/src/phase/binary.rs | |
parent | 0a1cf5554e8c06d05d24bdcdcf1eb71f0ac6d8f2 (diff) |
Prepare for https://github.com/dhall-lang/dhall-lang/pull/630
Diffstat (limited to '')
-rw-r--r-- | dhall/src/phase/binary.rs | 11 |
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)), ), |