From 386f34af802a812c2af8ece2cc427cfb5a7c1fe8 Mon Sep 17 00:00:00 2001 From: Nadrieril Date: Sun, 1 Mar 2020 17:26:59 +0000 Subject: Implement `missing` and `env:VAR` imports --- dhall/src/error/mod.rs | 2 ++ 1 file changed, 2 insertions(+) (limited to 'dhall/src/error/mod.rs') diff --git a/dhall/src/error/mod.rs b/dhall/src/error/mod.rs index 8829d47..5632ea6 100644 --- a/dhall/src/error/mod.rs +++ b/dhall/src/error/mod.rs @@ -26,6 +26,8 @@ pub(crate) enum ErrorKind { #[derive(Debug)] pub(crate) enum ImportError { + Missing, + MissingEnvVar, UnexpectedImport(Import<()>), ImportCycle(ImportStack, Import<()>), } -- cgit v1.2.3 From 903d6c0bba36a6696eb337ae84b962f4cc48b5b5 Mon Sep 17 00:00:00 2001 From: Nadrieril Date: Wed, 4 Mar 2020 21:26:01 +0000 Subject: Implement remote imports and cleanup import chaining --- dhall/src/error/mod.rs | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'dhall/src/error/mod.rs') diff --git a/dhall/src/error/mod.rs b/dhall/src/error/mod.rs index 5632ea6..29dd5ad 100644 --- a/dhall/src/error/mod.rs +++ b/dhall/src/error/mod.rs @@ -30,6 +30,7 @@ pub(crate) enum ImportError { MissingEnvVar, UnexpectedImport(Import<()>), ImportCycle(ImportStack, Import<()>), + Url(url::ParseError), } #[derive(Debug)] @@ -111,6 +112,11 @@ impl From for Error { ErrorKind::Parse(err).into() } } +impl From for Error { + fn from(err: url::ParseError) -> Error { + ErrorKind::Resolve(ImportError::Url(err)).into() + } +} impl From for Error { fn from(err: DecodeError) -> Error { ErrorKind::Decode(err).into() -- cgit v1.2.3 From 31cefbdf0364a3d224420365049885051734669b Mon Sep 17 00:00:00 2001 From: Nadrieril Date: Wed, 4 Mar 2020 21:36:41 +0000 Subject: Cache imports correctly --- dhall/src/error/mod.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'dhall/src/error/mod.rs') diff --git a/dhall/src/error/mod.rs b/dhall/src/error/mod.rs index 29dd5ad..6dd8393 100644 --- a/dhall/src/error/mod.rs +++ b/dhall/src/error/mod.rs @@ -1,6 +1,6 @@ use std::io::Error as IOError; -use crate::semantics::resolve::ImportStack; +use crate::semantics::resolve::{ImportLocation, ImportStack}; use crate::syntax::{Import, ParseError}; mod builder; @@ -29,7 +29,7 @@ pub(crate) enum ImportError { Missing, MissingEnvVar, UnexpectedImport(Import<()>), - ImportCycle(ImportStack, Import<()>), + ImportCycle(ImportStack, ImportLocation), Url(url::ParseError), } -- cgit v1.2.3 From 104a8a4a0632ee69e642521ea03239af88366346 Mon Sep 17 00:00:00 2001 From: Nadrieril Date: Wed, 4 Mar 2020 21:54:34 +0000 Subject: Implement conservative sanity checking --- dhall/src/error/mod.rs | 1 + 1 file changed, 1 insertion(+) (limited to 'dhall/src/error/mod.rs') diff --git a/dhall/src/error/mod.rs b/dhall/src/error/mod.rs index 6dd8393..e28b98b 100644 --- a/dhall/src/error/mod.rs +++ b/dhall/src/error/mod.rs @@ -28,6 +28,7 @@ pub(crate) enum ErrorKind { pub(crate) enum ImportError { Missing, MissingEnvVar, + SanityCheck, UnexpectedImport(Import<()>), ImportCycle(ImportStack, ImportLocation), Url(url::ParseError), -- cgit v1.2.3