From 49bce28c9c07bd359fc5ba047c5cd6f3f17e3f5a Mon Sep 17 00:00:00 2001 From: Anton-Latukha Date: Tue, 18 Jan 2022 00:28:15 +0200 Subject: [PATCH] Builtins: add unsafeDiscardOutputDependency Courtesy of `layus`, ported from implementation in https://github.com/haskell-nix/hnix/pull/755. --- src/Nix/Builtins.hs | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/src/Nix/Builtins.hs b/src/Nix/Builtins.hs index efca92473..7a707ef1b 100644 --- a/src/Nix/Builtins.hs +++ b/src/Nix/Builtins.hs @@ -46,6 +46,7 @@ import Data.Char ( isDigit ) import Data.Foldable ( foldrM ) import Data.Fix ( foldFix ) import Data.List ( partition ) +import qualified Data.HashSet as HS import qualified Data.HashMap.Lazy as M import Data.Scientific import qualified Data.Set as S @@ -471,6 +472,20 @@ getAttrNix x y = attrsetGet key aset +unsafeDiscardOutputDependencyNix + :: forall e t f m + . MonadNix e t f m + => NValue t f m + -> m (NValue t f m) +unsafeDiscardOutputDependencyNix nv = + do + (nc, ns) <- (getStringContext &&& ignoreContext) <$> fromValue nv + toValue $ mkNixString (HS.map discard nc) ns + where + discard :: StringContext -> StringContext + discard (StringContext AllOutputs a) = StringContext DirectPath a + discard x = x + unsafeGetAttrPosNix :: forall e t f m . MonadNix e t f m @@ -1906,7 +1921,7 @@ builtinsList = , add0 Normal "true" (pure $ mkNVBool True) , add Normal "tryEval" tryEvalNix , add Normal "typeOf" typeOfNix - --, add0 Normal "unsafeDiscardOutputDependency" unsafeDiscardOutputDependency + , add Normal "unsafeDiscardOutputDependency" unsafeDiscardOutputDependencyNix , add Normal "unsafeDiscardStringContext" unsafeDiscardStringContextNix , add2 Normal "unsafeGetAttrPos" unsafeGetAttrPosNix , add Normal "valueSize" getRecursiveSizeNix