diff options
Diffstat (limited to 'dhall/src/binary.rs')
-rw-r--r-- | dhall/src/binary.rs | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/dhall/src/binary.rs b/dhall/src/binary.rs index 8c5b902..1fa075e 100644 --- a/dhall/src/binary.rs +++ b/dhall/src/binary.rs @@ -1,6 +1,7 @@ use dhall_core::*; use itertools::*; use serde_cbor::value::value as cbor; +use std::path::PathBuf; use std::rc::Rc; type ParsedExpr = Rc<Expr<X, Import>>; @@ -175,6 +176,20 @@ fn cbor_value_to_dhall(data: &cbor::Value) -> Result<ParsedExpr, DecodeError> { .collect::<Result<_, _>>()?, ))) } + [U64(24), Null, U64(0), U64(3), rest..] => { + let mut path = PathBuf::new(); + for s in rest { + match s { + String(s) => path.push(s), + _ => Err(DecodeError::WrongFormatError)?, + } + } + Embed(Import { + mode: ImportMode::Code, + hash: None, + location: ImportLocation::Local(FilePrefix::Here, path), + }) + } [U64(25), bindings..] => { let mut tuples = bindings.iter().tuples(); let bindings = (&mut tuples) |