diff options
| author | Nadrieril | 2019-08-13 20:54:15 +0200 | 
|---|---|---|
| committer | Nadrieril | 2019-08-13 20:54:15 +0200 | 
| commit | 77af0bbc171618f48531cc6b1d77e18089928885 (patch) | |
| tree | 8bac17d4b3f1f1adf5f823708d322876eef6cfee /dhall_syntax | |
| parent | 5895c3aa6552f75d7e5202be561f9734fe8945e7 (diff) | |
Stop tracking the absence of Embed values at the type level
Diffstat (limited to 'dhall_syntax')
| -rw-r--r-- | dhall_syntax/src/core/context.rs | 2 | ||||
| -rw-r--r-- | dhall_syntax/src/core/expr.rs | 16 | ||||
| -rw-r--r-- | dhall_syntax/src/core/visitor.rs | 15 | ||||
| -rw-r--r-- | dhall_syntax/src/printer.rs | 6 | 
4 files changed, 4 insertions, 35 deletions
diff --git a/dhall_syntax/src/core/context.rs b/dhall_syntax/src/core/context.rs index eeec121..6844baa 100644 --- a/dhall_syntax/src/core/context.rs +++ b/dhall_syntax/src/core/context.rs @@ -4,7 +4,7 @@ use std::hash::Hash;  /// A `(Context a)` associates `Text` labels with values of type `a`  /// -/// The `Context` is used for type-checking when `(a = Expr X)` +/// The `Context` is used for type-checking when `(a = Expr)`  ///  /// * You create a `Context` using `empty` and `insert`  /// * You transform a `Context` using `fmap` diff --git a/dhall_syntax/src/core/expr.rs b/dhall_syntax/src/core/expr.rs index 0cbece3..e08d816 100644 --- a/dhall_syntax/src/core/expr.rs +++ b/dhall_syntax/src/core/expr.rs @@ -10,9 +10,9 @@ pub type Double = NaiveDouble;  /// An empty type  #[derive(Debug, Copy, Clone, PartialEq, Eq)] -pub enum X {} +pub enum Void {} -pub fn trivial_result<T>(x: Result<T, X>) -> T { +pub fn trivial_result<T>(x: Result<T, Void>) -> T {      match x {          Ok(x) => x,          Err(e) => match e {}, @@ -351,12 +351,6 @@ impl<E> Expr<E> {      }  } -impl Expr<X> { -    pub fn absurd<E>(&self) -> Expr<E> { -        self.visit(&mut visitor::AbsurdVisitor) -    } -} -  impl<E> SubExpr<E> {      pub fn as_ref(&self) -> &Expr<E> {          &self.0.as_ref().0 @@ -416,12 +410,6 @@ impl<E> SubExpr<E> {      }  } -impl SubExpr<X> { -    pub fn absurd<T>(&self) -> SubExpr<T> { -        SubExpr::from_expr_no_span(self.as_ref().absurd()) -    } -} -  impl<E> Clone for SubExpr<E> {      fn clone(&self) -> Self {          SubExpr(Rc::clone(&self.0)) diff --git a/dhall_syntax/src/core/visitor.rs b/dhall_syntax/src/core/visitor.rs index 50ec68a..e39e95b 100644 --- a/dhall_syntax/src/core/visitor.rs +++ b/dhall_syntax/src/core/visitor.rs @@ -243,7 +243,7 @@ impl<'a, T, SE1, SE2, E1, E2> ExprFFallibleVisitor<'a, SE1, SE2, E1, E2>  where      T: ExprFInFallibleVisitor<'a, SE1, SE2, E1, E2>,  { -    type Error = X; +    type Error = Void;      fn visit_subexpr(&mut self, subexpr: &'a SE1) -> Result<SE2, Self::Error> {          Ok(self.0.visit_subexpr(subexpr)) @@ -379,16 +379,3 @@ where          (self.0)(embed)      }  } - -pub struct AbsurdVisitor; - -impl<'a, 'b, E> ExprFInFallibleVisitor<'a, SubExpr<X>, SubExpr<E>, X, E> -    for &'b mut AbsurdVisitor -{ -    fn visit_subexpr(&mut self, subexpr: &'a SubExpr<X>) -> SubExpr<E> { -        SubExpr::from_expr_no_span(subexpr.as_ref().visit(&mut **self)) -    } -    fn visit_embed(self, embed: &'a X) -> E { -        match *embed {} -    } -} diff --git a/dhall_syntax/src/printer.rs b/dhall_syntax/src/printer.rs index 95eafe5..25d4ca8 100644 --- a/dhall_syntax/src/printer.rs +++ b/dhall_syntax/src/printer.rs @@ -491,9 +491,3 @@ impl<Label: Display> Display for V<Label> {          Ok(())      }  } - -impl Display for X { -    fn fmt(&self, _: &mut fmt::Formatter) -> Result<(), fmt::Error> { -        match *self {} -    } -}  | 
