diff options
| author | Nadrieril | 2019-08-16 11:11:28 +0200 |
|---|---|---|
| committer | Nadrieril | 2019-08-16 11:11:28 +0200 |
| commit | 509743469035582d916e6a2f331fd5018c81447e (patch) | |
| tree | 7689c8ff696e8c6c28bd864ec6b46a2ef941f8de | |
| parent | 91ba644fa47c29feb57dba957ee8aa115ed95fef (diff) | |
Use `!` type instead of custom empty type
| -rw-r--r-- | dhall/src/phase/mod.rs | 6 | ||||
| -rw-r--r-- | dhall_syntax/src/core/expr.rs | 14 | ||||
| -rw-r--r-- | dhall_syntax/src/core/visitor.rs | 2 | ||||
| -rw-r--r-- | dhall_syntax/src/lib.rs | 1 | ||||
| -rw-r--r-- | dhall_syntax/src/parser.rs | 4 |
5 files changed, 9 insertions, 18 deletions
diff --git a/dhall/src/phase/mod.rs b/dhall/src/phase/mod.rs index b73597c..2700e99 100644 --- a/dhall/src/phase/mod.rs +++ b/dhall/src/phase/mod.rs @@ -2,7 +2,7 @@ use std::borrow::Cow; use std::fmt::Display; use std::path::Path; -use dhall_syntax::{Const, SubExpr, Void}; +use dhall_syntax::{Const, SubExpr}; use crate::core::thunk::{Thunk, TypedThunk}; use crate::core::value::Value; @@ -17,8 +17,8 @@ pub(crate) mod parse; pub(crate) mod resolve; pub(crate) mod typecheck; -pub type ParsedSubExpr = SubExpr<Void>; -pub type DecodedSubExpr = SubExpr<Void>; +pub type ParsedSubExpr = SubExpr<!>; +pub type DecodedSubExpr = SubExpr<!>; pub type ResolvedSubExpr = SubExpr<Normalized>; pub type NormalizedSubExpr = SubExpr<Normalized>; diff --git a/dhall_syntax/src/core/expr.rs b/dhall_syntax/src/core/expr.rs index 30ac4eb..efbcee2 100644 --- a/dhall_syntax/src/core/expr.rs +++ b/dhall_syntax/src/core/expr.rs @@ -8,20 +8,10 @@ pub type Integer = isize; pub type Natural = usize; pub type Double = NaiveDouble; -/// An empty type -#[derive(Debug, Copy, Clone, PartialEq, Eq)] -pub enum Void {} - -impl std::fmt::Display for Void { - fn fmt(&self, _f: &mut std::fmt::Formatter) -> Result<(), std::fmt::Error> { - match *self {} - } -} - -pub fn trivial_result<T>(x: Result<T, Void>) -> T { +pub fn trivial_result<T>(x: Result<T, !>) -> T { match x { Ok(x) => x, - Err(e) => match e {}, + Err(e) => e, } } diff --git a/dhall_syntax/src/core/visitor.rs b/dhall_syntax/src/core/visitor.rs index 7b4ed4b..5a5fcc9 100644 --- a/dhall_syntax/src/core/visitor.rs +++ b/dhall_syntax/src/core/visitor.rs @@ -176,7 +176,7 @@ impl<'a, T, SE1, SE2, E1, E2> ExprFFallibleVisitor<'a, SE1, SE2, E1, E2> where T: ExprFInFallibleVisitor<'a, SE1, SE2, E1, E2>, { - type Error = Void; + type Error = !; fn visit_subexpr(&mut self, subexpr: &'a SE1) -> Result<SE2, Self::Error> { Ok(self.0.visit_subexpr(subexpr)) diff --git a/dhall_syntax/src/lib.rs b/dhall_syntax/src/lib.rs index 8406595..4566e64 100644 --- a/dhall_syntax/src/lib.rs +++ b/dhall_syntax/src/lib.rs @@ -1,6 +1,7 @@ #![feature(trace_macros)] #![feature(slice_patterns)] #![feature(try_blocks)] +#![feature(never_type)] #