packages feed

dhall-nix 1.1.7 → 1.1.8

raw patch · 2 files changed

+37/−15 lines, 2 filesdep ~dhallPVP ok

version bump matches the API change (PVP)

Dependency ranges changed: dhall

API changes (from Hackage documentation)

Files

dhall-nix.cabal view
@@ -1,5 +1,5 @@ Name: dhall-nix-Version: 1.1.7+Version: 1.1.8 Cabal-Version: >=1.8.0.2 Build-Type: Simple Tested-With: GHC == 8.0.1@@ -30,14 +30,16 @@         base                      >= 4.8.0.0 && < 5   ,         containers                              < 0.7 ,         data-fix                                < 0.3 ,-        dhall                     >= 1.25    && < 1.26,+        dhall                     >= 1.26    && < 1.27,         hnix                      >= 0.6.1   && < 0.7 ,         neat-interpolation                      < 0.4 ,         text                      >= 0.8.0.0 && < 1.3     Exposed-Modules:         Dhall.Nix     GHC-Options: -Wall-+    if os(windows)+        Buildable: False+         Executable dhall-to-nix     Hs-Source-Dirs: exec     Main-Is: Main.hs@@ -49,3 +51,5 @@         optparse-generic >= 1.1.1   && < 1.4,         text     GHC-Options: -Wall+    if os(windows)+        Buildable: False
src/Dhall/Nix.hs view
@@ -53,7 +53,7 @@      Unions are Church-encoded: -> $ dhall-to-nix <<< "< Left = True | Right : Natural >"+> $ dhall-to-nix <<< "< Left : Bool | Right : Natural >.Left True" > { Left, Right }: Left true      Also, all Dhall expressions are normalized before translation to Nix:@@ -95,8 +95,9 @@ import Data.Fix (Fix(..)) import Data.Traversable (for) import Data.Typeable (Typeable)-import Dhall.Core (Chunks(..), Const(..), Expr(..), Var(..))-import Dhall.TypeCheck (X(..))+import Data.Void (absurd)+import Dhall.Core (Chunks(..), Const(..), Expr(..), MultiLet(..), Var(..))+import Dhall.TypeCheck (X) import Nix.Atoms (NAtom(..)) import Nix.Expr     ( Antiquoted(..)@@ -229,7 +230,8 @@         a' <- loop a         b' <- loop b         return (Fix (NBinary NApp a' b'))-    loop (Let as b) = do+    loop (Let a0 b0) = do+        let MultiLet as b = Dhall.Core.multiLet a0 b0         as' <- for as $ \a -> do           val <- loop $ Dhall.Core.value a           pure $ NamedVar [StaticKey $ Dhall.Core.variable a] val Nix.nullPos@@ -300,6 +302,14 @@         return (Fix (NLet [e5] e8))     loop NaturalShow = do         return "toString"+    loop NaturalSubtract = do+        let e0 = NamedVar ["z"] (Fix (NBinary NMinus "y" "x")) Nix.nullPos+        let e1 = Fix (NBinary NLt "z" (Fix (NConstant (NInt 0))))+        let e2 = Fix (NConstant (NInt 0))+        let e3 = "z"+        let e4 = Fix (NIf e1 e2 e3)+        let e5 = Fix (NLet [e0] e4)+        return (Fix (NAbs "x" (Fix (NAbs "y" e5))))     loop NaturalToInteger = do         return (Fix (NAbs "n" "n"))     loop (NaturalPlus a b) = do@@ -444,13 +454,6 @@                 return (NamedVar [StaticKey k] v Nix.nullPos)         return (Fix (NSet a''))     loop (Union _) = return (Fix (NSet []))-    loop (UnionLit k v kts) = do-        v' <- loop v-        let e0 = do-                k' <- k : Dhall.Map.keys kts-                return (k', Nothing)-        let e2 = Fix (NBinary NApp (Fix (NSym k)) v')-        return (Fix (NAbs (ParamSet e0 False Nothing) e2))     loop (Combine a b) = do         a' <- loop a         b' <- loop b@@ -497,6 +500,17 @@         a' <- loop a         b' <- loop b         return (Fix (NBinary NApp b' a'))+    loop (ToMap a _) = do+        a' <- loop a+        let ks = Fix (NBinary NApp "builtins.attrNames" "kvs")+        let v = Fix (NBinary NApp (Fix (NBinary NApp "builtins.getAttr" "k")) "kvs")+        let setBindings =+                [ NamedVar [StaticKey "mapKey"] "k" Nix.nullPos+                , NamedVar [StaticKey "mapValue"] v Nix.nullPos+                ]+        let map_ = Fix (NBinary NApp "map" (Fix (NAbs "k" (Fix (NSet setBindings)))))+        let toMap = Fix (NAbs "kvs" (Fix (NBinary NApp map_ ks)))+        return (Fix (NBinary NApp toMap a'))     loop (Prefer a b) = do         a' <- loop a         b' <- loop b@@ -530,6 +544,10 @@         return (Fix (NSet [Inherit (Just a') b' Nix.nullPos]))     loop (Project _ (Right _)) = do         Left CannotProjectByType+    loop (Assert _) = do+        return (Fix (NSet []))+    loop (Equivalent _ _) = do+        return (Fix (NSet []))     loop (ImportAlt a _) = loop a     loop (Note _ b) = loop b-    loop (Embed (X x)) = x+    loop (Embed x) = absurd x