Skip to content

Commit 49bce28

Browse files
committed
Builtins: add unsafeDiscardOutputDependency
Courtesy of `layus`, ported from implementation in #755.
1 parent 4ca4b94 commit 49bce28

File tree

1 file changed

+16
-1
lines changed

1 file changed

+16
-1
lines changed

src/Nix/Builtins.hs

+16-1
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ import Data.Char ( isDigit )
4646
import Data.Foldable ( foldrM )
4747
import Data.Fix ( foldFix )
4848
import Data.List ( partition )
49+
import qualified Data.HashSet as HS
4950
import qualified Data.HashMap.Lazy as M
5051
import Data.Scientific
5152
import qualified Data.Set as S
@@ -471,6 +472,20 @@ getAttrNix x y =
471472

472473
attrsetGet key aset
473474

475+
unsafeDiscardOutputDependencyNix
476+
:: forall e t f m
477+
. MonadNix e t f m
478+
=> NValue t f m
479+
-> m (NValue t f m)
480+
unsafeDiscardOutputDependencyNix nv =
481+
do
482+
(nc, ns) <- (getStringContext &&& ignoreContext) <$> fromValue nv
483+
toValue $ mkNixString (HS.map discard nc) ns
484+
where
485+
discard :: StringContext -> StringContext
486+
discard (StringContext AllOutputs a) = StringContext DirectPath a
487+
discard x = x
488+
474489
unsafeGetAttrPosNix
475490
:: forall e t f m
476491
. MonadNix e t f m
@@ -1906,7 +1921,7 @@ builtinsList =
19061921
, add0 Normal "true" (pure $ mkNVBool True)
19071922
, add Normal "tryEval" tryEvalNix
19081923
, add Normal "typeOf" typeOfNix
1909-
--, add0 Normal "unsafeDiscardOutputDependency" unsafeDiscardOutputDependency
1924+
, add Normal "unsafeDiscardOutputDependency" unsafeDiscardOutputDependencyNix
19101925
, add Normal "unsafeDiscardStringContext" unsafeDiscardStringContextNix
19111926
, add2 Normal "unsafeGetAttrPos" unsafeGetAttrPosNix
19121927
, add Normal "valueSize" getRecursiveSizeNix

0 commit comments

Comments
 (0)