From a4ef23fd3e7a053def648dca05dfc9a043af9860 Mon Sep 17 00:00:00 2001 From: Nadrieril Date: Thu, 11 Apr 2019 19:04:19 +0200 Subject: Respect import boundaries Closes #54 --- dhall/src/imports.rs | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'dhall/src/imports.rs') 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 { +) -> Result { use self::ImportRoot::*; use dhall_core::FilePrefix::*; use dhall_core::ImportLocation::*; @@ -44,24 +44,24 @@ fn resolve_import( } } -fn load_import(f: &Path) -> Result { - Ok(Parsed::parse_file(f)?.resolve()?) +fn load_import(f: &Path) -> Result { + Ok(Parsed::parse_file(f)?.resolve()?.typecheck()?.normalize()) } fn resolve_expr( Parsed(expr, root): Parsed, allow_imports: bool, ) -> Result { - let resolve = |import: &Import| -> Result, ImportError> { + let resolve = |import: &Import| -> Result { 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 { -- cgit v1.2.3