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 +7/−3
- src/Dhall/Nix.hs +30/−12
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