diff options
author | Nadrieril Feneanar | 2019-08-31 22:09:07 +0200 |
---|---|---|
committer | GitHub | 2019-08-31 22:09:07 +0200 |
commit | 774d1affe13b50945517ccc43f9d4e771841e4a2 (patch) | |
tree | 6c257318d9706ed1ea1336eef2059ac826719194 /dhall/src/phase/binary.rs | |
parent | a2c2cd76d256a4e6ca66b9b1bd756fb17e600ef5 (diff) | |
parent | aba7e62e49ac9dead0a2868f739091d2d15ff0d1 (diff) |
Merge pull request #109 from Nadrieril/tomap-parsing
Implement parsing of `toMap` keyword
Diffstat (limited to 'dhall/src/phase/binary.rs')
-rw-r--r-- | dhall/src/phase/binary.rs | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/dhall/src/phase/binary.rs b/dhall/src/phase/binary.rs index 7dc9be2..40219d9 100644 --- a/dhall/src/phase/binary.rs +++ b/dhall/src/phase/binary.rs @@ -366,6 +366,15 @@ fn cbor_value_to_dhall(data: &cbor::Value) -> Result<DecodedExpr, DecodeError> { let y = cbor_value_to_dhall(&y)?; Annot(x, y) } + [U64(27), x] => { + let x = cbor_value_to_dhall(&x)?; + ToMap(x, None) + } + [U64(27), x, y] => { + let x = cbor_value_to_dhall(&x)?; + let y = cbor_value_to_dhall(&y)?; + ToMap(x, Some(y)) + } [U64(28), x] => { let x = cbor_value_to_dhall(&x)?; EmptyListLit(x) @@ -550,6 +559,8 @@ where Merge(x, y, Some(z)) => { ser_seq!(ser; tag(6), expr(x), expr(y), expr(z)) } + ToMap(x, None) => ser_seq!(ser; tag(27), expr(x)), + ToMap(x, Some(y)) => ser_seq!(ser; tag(27), expr(x), expr(y)), Projection(x, ls) => ser.collect_seq( once(tag(10)) .chain(once(expr(x))) |