    -- |
    -- This module exports all relevant modules of the haskell-src-exts-simple package.
    --
    -- The most important module is "Language.Haskell.Exts.Simple.Syntax".

    {-# LANGUAGE PatternSynonyms #-}
    module Language.Haskell.Exts.Simple (
        module Language.Haskell.Exts.Simple.Syntax,
        module Language.Haskell.Exts.Simple.Build,
        module Language.Haskell.Exts.Simple.Pretty,
        module Language.Haskell.Exts.Simple.Fixity,
        module Language.Haskell.Exts.Simple.Extension,
        module Language.Haskell.Exts.Simple.Parser,
        module Language.Haskell.Exts.SrcLoc,
        module Language.Haskell.Exts.Simple
    ) where

    import qualified Language.Haskell.Exts as H
    import Language.Haskell.Exts (
        readExtensions,
     )

    import Language.Haskell.Exts.Simple.Syntax
    import Language.Haskell.Exts.Simple.Build
    import Language.Haskell.Exts.Simple.Pretty
    import Language.Haskell.Exts.Simple.Fixity
    import Language.Haskell.Exts.Simple.Extension
    import Language.Haskell.Exts.Simple.Parser
    import Language.Haskell.Exts.SrcLoc -- useful for interpreting parse errors

    -- * Functions

    parseFile :: FilePath -> IO (ParseResult Module)
    parseFile :: FilePath -> IO (ParseResult Module)
    parseFile = (ParseResult (Module SrcSpanInfo) -> ParseResult Module)
    -> IO (ParseResult (Module SrcSpanInfo)) -> IO (ParseResult Module)
    forall a b. (a -> b) -> IO a -> IO b
    forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
    fmap ((Module SrcSpanInfo -> Module)
    -> ParseResult (Module SrcSpanInfo) -> ParseResult Module
    forall a b. (a -> b) -> ParseResult a -> ParseResult b
    forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
    fmap ((SrcSpanInfo -> ()) -> Module SrcSpanInfo -> Module
    forall a b. (a -> b) -> Module a -> Module b
    forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
    fmap (() -> SrcSpanInfo -> ()
    forall a b. a -> b -> a
    const ()))) (IO (ParseResult (Module SrcSpanInfo)) -> IO (ParseResult Module))
    -> (FilePath -> IO (ParseResult (Module SrcSpanInfo)))
    -> FilePath
    -> IO (ParseResult Module)
    forall b c a. (b -> c) -> (a -> b) -> a -> c
    . FilePath -> IO (ParseResult (Module SrcSpanInfo))
    H.parseFile

    parseFileWithExts :: [Extension] -> FilePath -> IO (ParseResult Module)
    parseFileWithExts :: [Extension] -> FilePath -> IO (ParseResult Module)
    parseFileWithExts [Extension]
    e = (ParseResult (Module SrcSpanInfo) -> ParseResult Module)
    -> IO (ParseResult (Module SrcSpanInfo)) -> IO (ParseResult Module)
    forall a b. (a -> b) -> IO a -> IO b
    forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
    fmap ((Module SrcSpanInfo -> Module)
    -> ParseResult (Module SrcSpanInfo) -> ParseResult Module
    forall a b. (a -> b) -> ParseResult a -> ParseResult b
    forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
    fmap ((SrcSpanInfo -> ()) -> Module SrcSpanInfo -> Module
    forall a b. (a -> b) -> Module a -> Module b
    forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
    fmap (() -> SrcSpanInfo -> ()
    forall a b. a -> b -> a
    const ()))) (IO (ParseResult (Module SrcSpanInfo)) -> IO (ParseResult Module))
    -> (FilePath -> IO (ParseResult (Module SrcSpanInfo)))
    -> FilePath
    -> IO (ParseResult Module)
    forall b c a. (b -> c) -> (a -> b) -> a -> c
    . [Extension] -> FilePath -> IO (ParseResult (Module SrcSpanInfo))
    H.parseFileWithExts [Extension]
    e

    parseFileWithMode :: ParseMode -> FilePath -> IO (ParseResult Module)
    parseFileWithMode :: ParseMode -> FilePath -> IO (ParseResult Module)
    parseFileWithMode ParseMode
    m = (ParseResult (Module SrcSpanInfo) -> ParseResult Module)
    -> IO (ParseResult (Module SrcSpanInfo)) -> IO (ParseResult Module)
    forall a b. (a -> b) -> IO a -> IO b
    forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
    fmap ((Module SrcSpanInfo -> Module)
    -> ParseResult (Module SrcSpanInfo) -> ParseResult Module
    forall a b. (a -> b) -> ParseResult a -> ParseResult b
    forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
    fmap ((SrcSpanInfo -> ()) -> Module SrcSpanInfo -> Module
    forall a b. (a -> b) -> Module a -> Module b
    forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
    fmap (() -> SrcSpanInfo -> ()
    forall a b. a -> b -> a
    const ()))) (IO (ParseResult (Module SrcSpanInfo)) -> IO (ParseResult Module))
    -> (FilePath -> IO (ParseResult (Module SrcSpanInfo)))
    -> FilePath
    -> IO (ParseResult Module)
    forall b c a. (b -> c) -> (a -> b) -> a -> c
    . ParseMode -> FilePath -> IO (ParseResult (Module SrcSpanInfo))
    H.parseFileWithMode ParseMode
    m

    parseFileContents :: String -> ParseResult Module
    parseFileContents :: FilePath -> ParseResult Module
    parseFileContents = (Module SrcSpanInfo -> Module)
    -> ParseResult (Module SrcSpanInfo) -> ParseResult Module
    forall a b. (a -> b) -> ParseResult a -> ParseResult b
    forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
    fmap ((SrcSpanInfo -> ()) -> Module SrcSpanInfo -> Module
    forall a b. (a -> b) -> Module a -> Module b
    forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
    fmap (() -> SrcSpanInfo -> ()
    forall a b. a -> b -> a
    const ())) (ParseResult (Module SrcSpanInfo) -> ParseResult Module)
    -> (FilePath -> ParseResult (Module SrcSpanInfo))
    -> FilePath
    -> ParseResult Module
    forall b c a. (b -> c) -> (a -> b) -> a -> c
    . FilePath -> ParseResult (Module SrcSpanInfo)
    H.parseFileContents

    parseFileContentsWithExts :: [Extension] -> String -> ParseResult Module
    parseFileContentsWithExts :: [Extension] -> FilePath -> ParseResult Module
    parseFileContentsWithExts [Extension]
    e =
        (Module SrcSpanInfo -> Module)
    -> ParseResult (Module SrcSpanInfo) -> ParseResult Module
    forall a b. (a -> b) -> ParseResult a -> ParseResult b
    forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
    fmap ((SrcSpanInfo -> ()) -> Module SrcSpanInfo -> Module
    forall a b. (a -> b) -> Module a -> Module b
    forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
    fmap (() -> SrcSpanInfo -> ()
    forall a b. a -> b -> a
    const ())) (ParseResult (Module SrcSpanInfo) -> ParseResult Module)
    -> (FilePath -> ParseResult (Module SrcSpanInfo))
    -> FilePath
    -> ParseResult Module
    forall b c a. (b -> c) -> (a -> b) -> a -> c
    . [Extension] -> FilePath -> ParseResult (Module SrcSpanInfo)
    H.parseFileContentsWithExts [Extension]
    e

    parseFileContentsWithMode :: ParseMode -> String -> ParseResult Module
    parseFileContentsWithMode :: ParseMode -> FilePath -> ParseResult Module
    parseFileContentsWithMode ParseMode
    m =
        (Module SrcSpanInfo -> Module)
    -> ParseResult (Module SrcSpanInfo) -> ParseResult Module
    forall a b. (a -> b) -> ParseResult a -> ParseResult b
    forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
    fmap ((SrcSpanInfo -> ()) -> Module SrcSpanInfo -> Module
    forall a b. (a -> b) -> Module a -> Module b
    forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
    fmap (() -> SrcSpanInfo -> ()
    forall a b. a -> b -> a
    const ())) (ParseResult (Module SrcSpanInfo) -> ParseResult Module)
    -> (FilePath -> ParseResult (Module SrcSpanInfo))
    -> FilePath
    -> ParseResult Module
    forall b c a. (b -> c) -> (a -> b) -> a -> c
    . ParseMode -> FilePath -> ParseResult (Module SrcSpanInfo)
    H.parseFileContentsWithMode ParseMode
    m

    -- omitted: parseFileWithComments :: ParseMode -> FilePath -> IO (ParseResult (Module, [Comment]))
    -- omitted: parseFileWithCommentsAndPragmas :: ParseMode -> FilePath -> IO (ParseResult (Module, [Comment], [UnknownPragma]))
    -- omitted: parseFileContentsWithComments :: ParseMode -> String -> ParseResult (Module, [Comment])