diff options
author | Nadrieril | 2019-05-02 17:23:40 +0200 |
---|---|---|
committer | Nadrieril | 2019-05-02 17:23:40 +0200 |
commit | 9d3c0d6aa23e4123515a1d7e949fc71509db803c (patch) | |
tree | d657fd50678dd8a562621d91c3caecbb2396fc7a /dhall/src/traits/dynamic_type.rs | |
parent | 9042db26ced0c56714c48bf2f6322e0a1c2a6973 (diff) | |
parent | 17ab417aeb5aea6cd21240a491607b9017194737 (diff) |
Merge branch 'refactor-typechecking'
Diffstat (limited to 'dhall/src/traits/dynamic_type.rs')
-rw-r--r-- | dhall/src/traits/dynamic_type.rs | 33 |
1 files changed, 6 insertions, 27 deletions
diff --git a/dhall/src/traits/dynamic_type.rs b/dhall/src/traits/dynamic_type.rs index d4faf45..74c2e0a 100644 --- a/dhall/src/traits/dynamic_type.rs +++ b/dhall/src/traits/dynamic_type.rs @@ -1,7 +1,8 @@ use crate::expr::*; use crate::traits::StaticType; -use crate::typecheck::{type_of_const, TypeError, TypeMessage}; -use dhall_core::context::Context; +#[allow(unused_imports)] +use crate::typecheck::{TypeError, TypeMessage, TypecheckContext}; +#[allow(unused_imports)] use dhall_core::{Const, ExprF}; use std::borrow::Cow; @@ -17,40 +18,18 @@ impl<T: StaticType> DynamicType for T { impl<'a> DynamicType for Type<'a> { fn get_type(&self) -> Result<Cow<'_, Type<'static>>, TypeError> { - match &self.0 { - TypeInternal::Expr(e) => e.get_type(), - TypeInternal::Const(c) => Ok(Cow::Owned(type_of_const(*c))), - TypeInternal::SuperType => Err(TypeError::new( - &Context::new(), - dhall_core::rc(ExprF::Const(Const::Sort)), - TypeMessage::Untyped, - )), - } + self.get_type() } } impl<'a> DynamicType for Normalized<'a> { fn get_type(&self) -> Result<Cow<'_, Type<'static>>, TypeError> { - match &self.1 { - Some(t) => Ok(Cow::Borrowed(t)), - None => Err(TypeError::new( - &Context::new(), - self.0.embed_absurd(), - TypeMessage::Untyped, - )), - } + self.0.get_type() } } impl<'a> DynamicType for Typed<'a> { fn get_type(&self) -> Result<Cow<'_, Type<'static>>, TypeError> { - match &self.1 { - Some(t) => Ok(Cow::Borrowed(t)), - None => Err(TypeError::new( - &Context::new(), - self.0.clone(), - TypeMessage::Untyped, - )), - } + self.0.get_type() } } |