Skip to content

Commit 2f9d12e

Browse files
committed
Value: fx MonadFail for GHC 8.6
1 parent 919e8ec commit 2f9d12e

File tree

3 files changed

+46
-13
lines changed

3 files changed

+46
-13
lines changed

src/Nix/Reduce.hs

Lines changed: 39 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -32,26 +32,39 @@ module Nix.Reduce
3232

3333
import Control.Applicative
3434
import Control.Arrow ( second )
35-
import Control.Monad
36-
import Control.Monad.Catch
35+
import Control.Monad ( MonadPlus
36+
, join
37+
)
38+
import Control.Monad.Catch ( MonadCatch(catch) )
3739
#if !MIN_VERSION_base(4,13,0)
40+
import Prelude hiding ( fail )
3841
import Control.Monad.Fail
3942
#endif
40-
import Control.Monad.Fix
41-
import Control.Monad.IO.Class
42-
import Control.Monad.Reader
43+
import Control.Monad.Fix ( MonadFix )
44+
import Control.Monad.IO.Class ( MonadIO(liftIO) )
45+
import Control.Monad.Reader ( MonadReader(local)
46+
, ReaderT(runReaderT)
47+
, asks
48+
)
4349
import Control.Monad.State.Strict ( MonadState
4450
, StateT
4551
, gets
4652
, modify
4753
, evalStateT
4854
)
4955
import Data.Bifunctor ( first )
50-
import Data.Fix ( Fix(..), foldFix, foldFixM )
56+
import Data.Fix ( Fix(..)
57+
, foldFix
58+
, foldFixM
59+
)
5160
import Data.HashMap.Lazy ( HashMap )
5261
import qualified Data.HashMap.Lazy as M
5362
import qualified Data.HashMap.Strict as MS
54-
import Data.IORef
63+
import Data.IORef ( IORef
64+
, newIORef
65+
, readIORef
66+
, writeIORef
67+
)
5568
import Data.List.NonEmpty ( NonEmpty(..) )
5669
import qualified Data.List.NonEmpty as NE
5770
import Data.Maybe ( fromMaybe
@@ -74,12 +87,25 @@ import System.Directory
7487
import System.FilePath
7588

7689
newtype Reducer m a = Reducer
77-
{ runReducer :: ReaderT (Maybe FilePath, Scopes (Reducer m) NExprLoc)
78-
(StateT (HashMap FilePath NExprLoc, MS.HashMap Text Text) m) a }
79-
deriving (Functor, Applicative, Alternative, Monad, MonadPlus,
80-
MonadFix, MonadIO, MonadFail,
81-
MonadReader (Maybe FilePath, Scopes (Reducer m) NExprLoc),
82-
MonadState (HashMap FilePath NExprLoc, MS.HashMap Text Text))
90+
{ runReducer ::
91+
ReaderT
92+
( Maybe FilePath
93+
, Scopes (Reducer m) NExprLoc
94+
)
95+
( StateT
96+
( HashMap FilePath NExprLoc
97+
, MS.HashMap Text Text
98+
)
99+
m
100+
)
101+
a
102+
}
103+
deriving
104+
( Functor, Applicative, Alternative
105+
, Monad, MonadPlus, MonadFix, MonadIO, MonadFail
106+
, MonadReader (Maybe FilePath, Scopes (Reducer m) NExprLoc)
107+
, MonadState (HashMap FilePath NExprLoc, MS.HashMap Text Text)
108+
)
83109

84110
staticImport
85111
:: forall m

src/Nix/Utils.hs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,9 @@ import Prelude as X
4040
hiding ( putStr
4141
, putStrLn
4242
, print
43+
#if !MIN_VERSION_base(4,13,0)
44+
, fail
45+
#endif
4346
)
4447
trace :: String -> a -> a
4548
trace = const id

src/Nix/Value.hs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
{-# LANGUAGE CPP #-}
12
{-# LANGUAGE DeriveAnyClass #-}
23
{-# LANGUAGE KindSignatures #-}
34
{-# LANGUAGE ConstraintKinds #-}
@@ -34,6 +35,9 @@ import Control.Monad.Free ( Free(..)
3435
import Control.Monad.Trans.Class ( MonadTrans
3536
, lift
3637
)
38+
#if !MIN_VERSION_base(4,13,0)
39+
import Control.Monad.Fail
40+
#endif
3741
import qualified Data.Aeson as Aeson
3842
import Data.Functor.Classes ( Show1
3943
, liftShowsPrec

0 commit comments

Comments
 (0)