summaryrefslogtreecommitdiff
path: root/dhall/src/imports.rs
diff options
context:
space:
mode:
authorNadrieril2019-04-11 19:04:19 +0200
committerNadrieril2019-04-11 19:04:19 +0200
commita4ef23fd3e7a053def648dca05dfc9a043af9860 (patch)
treeb74c33df5699313380335aa3ef2e1dbd4af23c5a /dhall/src/imports.rs
parent61b2ac7fb35c2a8aca703d5a5f9a9a8f28def977 (diff)
Respect import boundaries
Closes #54
Diffstat (limited to '')
-rw-r--r--dhall/src/imports.rs12
1 files changed, 6 insertions, 6 deletions
diff --git a/dhall/src/imports.rs b/dhall/src/imports.rs
index e42bfec..b5546b2 100644
--- a/dhall/src/imports.rs
+++ b/dhall/src/imports.rs
@@ -21,7 +21,7 @@ pub enum ImportRoot {
fn resolve_import(
import: &Import,
root: &ImportRoot,
-) -> Result<Resolved, ImportError> {
+) -> Result<Normalized, ImportError> {
use self::ImportRoot::*;
use dhall_core::FilePrefix::*;
use dhall_core::ImportLocation::*;
@@ -44,24 +44,24 @@ fn resolve_import(
}
}
-fn load_import(f: &Path) -> Result<Resolved, Error> {
- Ok(Parsed::parse_file(f)?.resolve()?)
+fn load_import(f: &Path) -> Result<Normalized, Error> {
+ Ok(Parsed::parse_file(f)?.resolve()?.typecheck()?.normalize())
}
fn resolve_expr(
Parsed(expr, root): Parsed,
allow_imports: bool,
) -> Result<Resolved, ImportError> {
- let resolve = |import: &Import| -> Result<SubExpr<X, X>, ImportError> {
+ let resolve = |import: &Import| -> Result<Normalized, ImportError> {
if allow_imports {
let expr = resolve_import(import, &root)?;
- Ok(expr.0)
+ Ok(expr)
} else {
Err(ImportError::UnexpectedImport(import.clone()))
}
};
let expr = expr.as_ref().traverse_embed(&resolve)?;
- Ok(Resolved(expr.squash_embed()))
+ Ok(Resolved(rc(expr)))
}
impl Parsed {