-- |
-- This module partially reexports "Language.Haskell.Exts.Fixity", adapting `applyFixityies`.

module Language.Haskell.Exts.Simple.Fixity (
    module Language.Haskell.Exts.Simple.Fixity,
    module Language.Haskell.Exts.Fixity
) where

import qualified Language.Haskell.Exts.Fixity as H
import Language.Haskell.Exts.Fixity (
    Fixity(..),
    infix_, infixl_, infixr_,
    preludeFixities, baseFixities,
    AppFixity,
 )
import Language.Haskell.Exts.Simple.Syntax
import Language.Haskell.Exts.SrcLoc
import Control.Monad
import Control.Monad.Fail

-- * Functions

applyFixities :: (AppFixity ast, Functor ast, MonadFail m) => [Fixity] -> ast () -> m (ast ())
applyFixities :: forall (ast :: * -> *) (m :: * -> *).
(AppFixity ast, Functor ast, MonadFail m) =>
[Fixity] -> ast () -> m (ast ())
applyFixities [Fixity]
fixs = (ast SrcSpanInfo -> ast ()) -> m (ast SrcSpanInfo) -> m (ast ())
forall (m :: * -> *) a1 r. Monad m => (a1 -> r) -> m a1 -> m r
liftM ((SrcSpanInfo -> ()) -> ast SrcSpanInfo -> ast ()
forall a b. (a -> b) -> ast a -> ast b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (() -> SrcSpanInfo -> ()
forall a b. a -> b -> a
const ())) (m (ast SrcSpanInfo) -> m (ast ()))
-> (ast () -> m (ast SrcSpanInfo)) -> ast () -> m (ast ())
forall b c a. (b -> c) -> (a -> b) -> a -> c
. [Fixity] -> ast SrcSpanInfo -> m (ast SrcSpanInfo)
forall (m :: * -> *).
MonadFail m =>
[Fixity] -> ast SrcSpanInfo -> m (ast SrcSpanInfo)
forall (ast :: * -> *) (m :: * -> *).
(AppFixity ast, MonadFail m) =>
[Fixity] -> ast SrcSpanInfo -> m (ast SrcSpanInfo)
H.applyFixities [Fixity]
fixs (ast SrcSpanInfo -> m (ast SrcSpanInfo))
-> (ast () -> ast SrcSpanInfo) -> ast () -> m (ast SrcSpanInfo)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (() -> SrcSpanInfo) -> ast () -> ast SrcSpanInfo
forall a b. (a -> b) -> ast a -> ast b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (SrcSpanInfo -> () -> SrcSpanInfo
forall a b. a -> b -> a
const SrcSpanInfo
noSrcSpan)