on master help sign in
Merge pull request #176 from mcschroeder/master

Add missing MonadFail constraints

commit66a2f0102ab6b5ea4be31af7fcecbac5e464ccd9 authorJonathan Daugherty <cygnus@foobox.com> dateWed 18 Sep 2019, 09:10 (7 years ago) parent3ce0db6dff0490
4 files changed+14−10
src/Graphics/Vty/Output.hs+4−3 src/Graphics/Vty/Output/Interface.hs+2−1 src/Graphics/Vty/Output/TerminfoBased.hs+5−4 vty.cabal+3−2
src/Graphics/Vty/Output.hs+4−3
@@ -38,6 +38,7 @@ import Graphics.Vty.Output.TerminfoBased as TerminfoBased
3838
3939import Blaze.ByteString.Builder (writeToByteString)
4040
41+import Control.Monad.Fail (MonadFail)
4142import Control.Monad.Trans
4243
4344import Data.List (isPrefixOf)
@@ -84,7 +85,7 @@ outputForConfig config = (<> config) <$> standardIOConfig >>= outputForConfig
8485-- Currently, the only way to set the cursor position to a given
8586-- character coordinate is to specify the coordinate in the Picture
8687-- instance provided to 'outputPicture' or 'refresh'.
87−setCursorPos :: MonadIO m => Output -> Int -> Int -> m ()
88+setCursorPos :: (MonadIO m, MonadFail m) => Output -> Int -> Int -> m ()
8889setCursorPos t x y = do
8990 bounds <- displayBounds t
9091 when (x >= 0 && x < regionWidth bounds && y >= 0 && y < regionHeight bounds) $ do
@@ -92,14 +93,14 @@ setCursorPos t x y = do
9293 liftIO $ outputByteBuffer t $ writeToByteString $ writeMoveCursor dc x y
9394
9495-- | Hides the cursor.
95−hideCursor :: MonadIO m => Output -> m ()
96+hideCursor :: (MonadIO m, MonadFail m) => Output -> m ()
9697hideCursor t = do
9798 bounds <- displayBounds t
9899 dc <- displayContext t bounds
99100 liftIO $ outputByteBuffer t $ writeToByteString $ writeHideCursor dc
100101
101102-- | Shows the cursor.
102−showCursor :: MonadIO m => Output -> m ()
103+showCursor :: (MonadIO m, MonadFail m) => Output -> m ()
103104showCursor t = do
104105 bounds <- displayBounds t
105106 dc <- displayContext t bounds
src/Graphics/Vty/Output/Interface.hs+2−1
@@ -29,6 +29,7 @@ import Graphics.Vty.DisplayAttributes
2929import Blaze.ByteString.Builder (Write, writeToByteString)
3030import Blaze.ByteString.Builder.ByteString (writeByteString)
3131
32+import Control.Monad.Fail (MonadFail)
3233import Control.Monad.Trans
3334
3435import qualified Data.ByteString as BS
@@ -76,7 +77,7 @@ data Output = Output
7677 -- previous state then set the display state to the initial state.
7778 , releaseDisplay :: forall m. MonadIO m => m ()
7879 -- | Returns the current display bounds.
79− , displayBounds :: forall m. MonadIO m => m DisplayRegion
80+ , displayBounds :: forall m. (MonadIO m, MonadFail m) => m DisplayRegion
8081 -- | Output the bytestring to the terminal device.
8182 , outputByteBuffer :: BS.ByteString -> IO ()
8283 -- | Specifies the maximum number of colors supported by the
src/Graphics/Vty/Output/TerminfoBased.hs+5−4
@@ -25,6 +25,7 @@ import Graphics.Vty.Output.Interface
2525
2626import Blaze.ByteString.Builder (Write, writeToByteString, writeStorable)
2727
28+import Control.Monad.Fail (MonadFail)
2829import Control.Monad.Trans
2930
3031import Data.Bits ((.&.))
@@ -203,25 +204,25 @@ reserveTerminal termName outFd = liftIO $ do
203204 maybeSendCap s = when (isJust $ s terminfoCaps) . sendCap (fromJust . s)
204205 return t
205206
206−requireCap :: (Applicative m, MonadIO m) => Terminfo.Terminal -> String -> m CapExpression
207+requireCap :: (Applicative m, MonadIO m, MonadFail m) => Terminfo.Terminal -> String -> m CapExpression
207208requireCap ti capName
208209 = case Terminfo.getCapability ti (Terminfo.tiGetStr capName) of
209210 Nothing -> fail $ "Terminal does not define required capability \"" ++ capName ++ "\""
210211 Just capStr -> parseCap capStr
211212
212−probeCap :: (Applicative m, MonadIO m) => Terminfo.Terminal -> String -> m (Maybe CapExpression)
213+probeCap :: (Applicative m, MonadIO m, MonadFail m) => Terminfo.Terminal -> String -> m (Maybe CapExpression)
213214probeCap ti capName
214215 = case Terminfo.getCapability ti (Terminfo.tiGetStr capName) of
215216 Nothing -> return Nothing
216217 Just capStr -> Just <$> parseCap capStr
217218
218−parseCap :: (Applicative m, MonadIO m) => String -> m CapExpression
219+parseCap :: (Applicative m, MonadIO m, MonadFail m) => String -> m CapExpression
219220parseCap capStr = do
220221 case parseCapExpression capStr of
221222 Left e -> fail $ show e
222223 Right cap -> return cap
223224
224−currentDisplayAttrCaps :: ( Applicative m, MonadIO m )
225+currentDisplayAttrCaps :: ( Applicative m, MonadIO m, MonadFail m )
225226 => Terminfo.Terminal
226227 -> m DisplayAttrCaps
227228currentDisplayAttrCaps ti
vty.cabal+3−2
@@ -30,7 +30,7 @@ extra-doc-files: README.md,
3030 AUTHORS,
3131 CHANGELOG.md,
3232 LICENSE
33−tested-with: GHC==7.10.3, GHC==8.0.2, GHC==8.2.2, GHC==8.4.3
33+tested-with: GHC==7.10.3, GHC==8.0.2, GHC==8.2.2, GHC==8.4.3, GHC==8.6.5
3434
3535source-repository head
3636 type: git
@@ -62,7 +62,8 @@ library
6262 vector >= 0.7
6363
6464 if !impl(ghc >= 8.0)
65− build-depends: semigroups >= 0.16
65+ build-depends: semigroups >= 0.16,
66+ fail
6667
6768 exposed-modules: Graphics.Vty
6869 Graphics.Vty.Attributes