summaryrefslogtreecommitdiff
path: root/dhall/src/imports.rs
diff options
context:
space:
mode:
authorNadrieril2019-05-06 22:09:55 +0200
committerNadrieril2019-05-06 22:09:55 +0200
commit423fdeebe9247b16744fae4b50df415bbd08be04 (patch)
treef2f16407d7e365e6fecee400a1959ca08b2a5156 /dhall/src/imports.rs
parent2075cba6d883278a534afd2d8fe8f0a5e9b2f0d0 (diff)
Reorganize dhall into a phase structure
Diffstat (limited to '')
-rw-r--r--dhall/src/phase/resolve.rs (renamed from dhall/src/imports.rs)53
1 files changed, 11 insertions, 42 deletions
diff --git a/dhall/src/imports.rs b/dhall/src/phase/resolve.rs
index 87642a2..afb49cb 100644
--- a/dhall/src/imports.rs
+++ b/dhall/src/phase/resolve.rs
@@ -1,11 +1,10 @@
-use crate::error::Error;
-use crate::expr::*;
-use dhall_syntax::*;
use std::collections::HashMap;
-use std::fs::File;
-use std::io::Read;
-use std::path::Path;
-use std::path::PathBuf;
+use std::path::{Path, PathBuf};
+
+use dhall_syntax::Import;
+
+use crate::error::Error;
+use crate::phase::{Normalized, Parsed, Resolved};
#[derive(Debug)]
pub enum ImportError {
@@ -97,7 +96,11 @@ fn do_resolve_expr(
Ok(Resolved(expr))
}
-fn skip_resolve_expr(
+pub(crate) fn resolve(e: Parsed) -> Result<Resolved, ImportError> {
+ do_resolve_expr(e, &mut HashMap::new(), &Vec::new())
+}
+
+pub(crate) fn skip_resolve_expr(
Parsed(expr, _root): Parsed,
) -> Result<Resolved, ImportError> {
let resolve = |import: &Import| -> Result<Normalized, ImportError> {
@@ -107,40 +110,6 @@ fn skip_resolve_expr(
Ok(Resolved(expr))
}
-impl Parsed {
- pub fn parse_file(f: &Path) -> Result<Parsed, Error> {
- let mut buffer = String::new();
- File::open(f)?.read_to_string(&mut buffer)?;
- let expr = parse_expr(&*buffer)?;
- let root = ImportRoot::LocalDir(f.parent().unwrap().to_owned());
- Ok(Parsed(expr.unnote().note_absurd(), root))
- }
-
- pub fn parse_str(s: &str) -> Result<Parsed, Error> {
- let expr = parse_expr(s)?;
- let root = ImportRoot::LocalDir(std::env::current_dir()?);
- Ok(Parsed(expr, root))
- }
-
- #[allow(dead_code)]
- pub fn parse_binary_file(f: &Path) -> Result<Parsed, Error> {
- let mut buffer = Vec::new();
- File::open(f)?.read_to_end(&mut buffer)?;
- let expr = crate::binary::decode(&buffer)?;
- let root = ImportRoot::LocalDir(f.parent().unwrap().to_owned());
- Ok(Parsed(expr.note_absurd(), root))
- }
-
- pub fn resolve(self) -> Result<Resolved, ImportError> {
- crate::imports::do_resolve_expr(self, &mut HashMap::new(), &Vec::new())
- }
-
- #[allow(dead_code)]
- pub fn skip_resolve(self) -> Result<Resolved, ImportError> {
- crate::imports::skip_resolve_expr(self)
- }
-}
-
#[cfg(test)]
mod spec_tests {
#![rustfmt::skip]