-- |
-- 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])