diff options
Diffstat (limited to '')
| -rw-r--r-- | dhall/src/semantics/phase/normalize.rs | 11 | ||||
| -rw-r--r-- | dhall/src/semantics/phase/typecheck.rs | 3 | 
2 files changed, 14 insertions, 0 deletions
diff --git a/dhall/src/semantics/phase/normalize.rs b/dhall/src/semantics/phase/normalize.rs index 6258ae8..5a0f566 100644 --- a/dhall/src/semantics/phase/normalize.rs +++ b/dhall/src/semantics/phase/normalize.rs @@ -1,4 +1,5 @@  use std::collections::HashMap; +use std::convert::TryInto;  use crate::semantics::core::value::Value;  use crate::semantics::core::value::ValueKind; @@ -141,6 +142,16 @@ pub(crate) fn apply_builtin(              }              _ => Ret::DoneAsIs,          }, +        (IntegerNegate, [n]) => match &*n.as_whnf() { +            IntegerLit(n) => Ret::ValueKind(IntegerLit(-n)), +            _ => Ret::DoneAsIs, +        }, +        (IntegerClamp, [n]) => match &*n.as_whnf() { +            IntegerLit(n) => { +                Ret::ValueKind(NaturalLit((*n).try_into().unwrap_or(0))) +            } +            _ => Ret::DoneAsIs, +        },          (DoubleShow, [n]) => {              match &*n.as_whnf() {                  DoubleLit(n) => Ret::ValueKind(TextLit(vec