summaryrefslogtreecommitdiff
path: root/dhall/src/lib.rs
diff options
context:
space:
mode:
authorNadrieril2019-03-09 00:42:46 +0100
committerNadrieril2019-03-09 00:43:13 +0100
commit505e6a34cc5aadac1831d31ef64b94b61c2ace13 (patch)
tree1cca4b507552df613c9852d755e9ada8dee67d7d /dhall/src/lib.rs
parentc6aafe818ca56ec8bc6d3cd27824eba0a2d6b874 (diff)
First import works !
Diffstat (limited to 'dhall/src/lib.rs')
-rw-r--r--dhall/src/lib.rs47
1 files changed, 1 insertions, 46 deletions
diff --git a/dhall/src/lib.rs b/dhall/src/lib.rs
index 95f7f6f..8add5b6 100644
--- a/dhall/src/lib.rs
+++ b/dhall/src/lib.rs
@@ -7,49 +7,4 @@ pub use crate::normalize::*;
pub mod imports;
pub mod typecheck;
-use dhall_core::*;
-use std::fmt;
-use std::fs::File;
-use std::io::Read;
-use std::path::Path;
-
-#[derive(Debug)]
-pub enum DhallError {
- ParseError(parser::ParseError),
- IOError(std::io::Error),
-}
-impl From<parser::ParseError> for DhallError {
- fn from(e: parser::ParseError) -> Self {
- DhallError::ParseError(e)
- }
-}
-impl From<std::io::Error> for DhallError {
- fn from(e: std::io::Error) -> Self {
- DhallError::IOError(e)
- }
-}
-impl fmt::Display for DhallError {
- fn fmt(&self, f: &mut fmt::Formatter) -> Result<(), fmt::Error> {
- use self::DhallError::*;
- match self {
- ParseError(e) => e.fmt(f),
- IOError(e) => e.fmt(f),
- }
- }
-}
-
-/// `source_pool` is a Vec of strings to be used to store the contents of imported files.
-/// No ideal but necessary for lifetime reasons for now.
-pub fn load_dhall_file<'i, 'a: 'i>(
- f: &Path,
- source_pool: &'a mut Vec<String>,
- _resolve_imports: bool,
-) -> Result<Expr<String, X, X>, DhallError> {
- source_pool.push(String::new());
- let mut buffer = source_pool.last_mut().unwrap();
- File::open(f)?.read_to_string(&mut buffer)?;
- let expr = parser::parse_expr(&*buffer)?;
- let expr = expr.take_ownership_of_labels();
- let expr = imports::resolve_imports(&expr);
- Ok(expr)
-}
+pub use crate::imports::{load_dhall_file, DhallError};