From c2b4a2d9b40efbe4f6cb6fd04f6cb90639f4985f Mon Sep 17 00:00:00 2001 From: Nadrieril Date: Sun, 12 May 2019 18:44:28 +0200 Subject: Implement binary encoding Closes #39 --- dhall/src/phase/mod.rs | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) (limited to 'dhall/src/phase/mod.rs') diff --git a/dhall/src/phase/mod.rs b/dhall/src/phase/mod.rs index 63480c5..681b7fe 100644 --- a/dhall/src/phase/mod.rs +++ b/dhall/src/phase/mod.rs @@ -8,7 +8,7 @@ use crate::core::context::TypecheckContext; use crate::core::thunk::Thunk; use crate::core::value::Value; use crate::core::var::{AlphaVar, Shift, Subst}; -use crate::error::{Error, ImportError, TypeError, TypeMessage}; +use crate::error::{EncodeError, Error, ImportError, TypeError, TypeMessage}; use resolve::ImportRoot; use typecheck::type_of_const; @@ -20,6 +20,7 @@ pub(crate) mod resolve; pub(crate) mod typecheck; pub type ParsedSubExpr = SubExpr; +pub type DecodedSubExpr = SubExpr; pub type ResolvedSubExpr = SubExpr; pub type NormalizedSubExpr = SubExpr; @@ -55,24 +56,30 @@ impl Parsed { pub fn parse_file(f: &Path) -> Result { parse::parse_file(f) } - pub fn parse_str(s: &str) -> Result { parse::parse_str(s) } - #[allow(dead_code)] pub fn parse_binary_file(f: &Path) -> Result { parse::parse_binary_file(f) } + #[allow(dead_code)] + pub fn parse_binary(data: &[u8]) -> Result { + parse::parse_binary(data) + } pub fn resolve(self) -> Result { resolve::resolve(self) } - #[allow(dead_code)] pub fn skip_resolve(self) -> Result { resolve::skip_resolve_expr(self) } + + #[allow(dead_code)] + pub fn encode(&self) -> Result, EncodeError> { + crate::phase::binary::encode(&self.0) + } } impl Resolved { -- cgit v1.2.3