-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/


-- | A simplified view on the haskell-src-exts AST
--   
--   This package provides a shim for haskell-src-exts (HSE), exposing the
--   same AST but without annotations, using ghc's pattern synonyms.
--   
--   See README.md for further information and compatibility
--   considerations.
@package haskell-src-exts-simple
@version 1.19.0.0


-- | This module reexports a simplified view on
--   <a>Language.Haskell.Exts.Syntax</a>. The idea is to expose datatypes
--   like
--   
--   <pre>
--   data Name l = Ident l String | Symbol l String
--   </pre>
--   
--   using ghc's pattern synonyms:
--   
--   <pre>
--   type Name = H.Name ()
--   pattern Ident a = H.Ident () a
--   pattern Symbol a = H.Symbol () a
--   </pre>
--   
--   This works nicely for all datatypes with two exception:
--   
--   <ul>
--   <li><a>ImportDecl</a> has a record constructor. Record type synonyms
--   are only supported ghc-8.0 and later, so for ghc-7.10 and earlier, the
--   constructor is exported as a plain constructor, and the record fields
--   as function.</li>
--   <li><a>Literal</a> has constructors with an extra <a>String</a>
--   argument that is not used by <a>Pretty</a>. This module uses
--   explicitly bidirectional pattern synonyms to support this type, but
--   support for that is only available in ghc-7.10 and later.</li>
--   </ul>
--   
--   <b>IMPORTANT</b>: if you require compatiblity with ghc 7.8, you should
--   use the functions <a>charL</a>, <a>stringL</a> etc. for constructing
--   <a>Literal</a> values!
module Language.Haskell.Exts.Simple.Syntax
type ModuleName = ModuleName ()
type SpecialCon = SpecialCon ()
type QName = QName ()
type Name = Name ()
type IPName = IPName ()
type QOp = QOp ()
type Op = Op ()
type CName = CName ()
type Module = Module ()
type ModuleHead = ModuleHead ()
type ExportSpecList = ExportSpecList ()
type ExportSpec = ExportSpec ()
type EWildcard = EWildcard ()
type Namespace = Namespace ()
type ImportDecl = ImportDecl ()

-- | Note, this is originally a record constructor, and we use a pattern
--   record synonym for ghc-8.0. But for earlier ghc versions,
--   <a>ImportDecl</a> is a plain pattern synonym, and the selectors are
--   exported as functions.
type ImportSpecList = ImportSpecList ()
type ImportSpec = ImportSpec ()
type Assoc = Assoc ()
type Decl = Decl ()
type PatternSynDirection = PatternSynDirection ()
type TypeEqn = TypeEqn ()
type Annotation = Annotation ()
type BooleanFormula = BooleanFormula ()
type Role = Role ()
type DataOrNew = DataOrNew ()
type InjectivityInfo = InjectivityInfo ()
type ResultSig = ResultSig ()
type DeclHead = DeclHead ()
type InstRule = InstRule ()
type InstHead = InstHead ()
type Deriving = Deriving ()
type Binds = Binds ()
type IPBind = IPBind ()
type Match = Match ()
type QualConDecl = QualConDecl ()
type ConDecl = ConDecl ()
type FieldDecl = FieldDecl ()
type GadtDecl = GadtDecl ()
type ClassDecl = ClassDecl ()
type InstDecl = InstDecl ()
type BangType = BangType ()
type Unpackedness = Unpackedness ()
type Rhs = Rhs ()
type GuardedRhs = GuardedRhs ()
type Type = Type ()
type Promoted = Promoted ()
type TyVarBind = TyVarBind ()
type Kind = Kind ()
type FunDep = FunDep ()
type Context = Context ()
type Asst = Asst ()

-- | Beware that the constructors only work in a pattern context in
--   ghc-7.8, because that version does not support explicitly
--   bidirectional pattern synonyms.
--   
--   For code that needs to work with ghc-7.8, we provide functions
--   <a>charL</a>, <a>stringL</a>, <a>intL</a>, <a>fracL</a>, etc. for
--   constructing <a>Literal</a> values.
type Literal = Literal ()
charL :: Char -> Literal
stringL :: String -> Literal
intL :: Integer -> Literal
fracL :: Rational -> Literal
primIntL :: Integer -> Literal
primWordL :: Integer -> Literal
primFloatL :: Rational -> Literal
primDoubleL :: Rational -> Literal
primCharL :: Char -> Literal
primStringL :: String -> Literal
type Sign = Sign ()
type Exp = Exp ()
type XName = XName ()
type XAttr = XAttr ()
type Bracket = Bracket ()
type Splice = Splice ()
type Safety = Safety ()
type CallConv = CallConv ()
type ModulePragma = ModulePragma ()
type Overlap = Overlap ()
type Activation = Activation ()
type Rule = Rule ()
type RuleVar = RuleVar ()
type WarningText = WarningText ()
type Pat = Pat ()
type PXAttr = PXAttr ()
type RPatOp = RPatOp ()
type RPat = RPat ()
type PatField = PatField ()
type Stmt = Stmt ()
type QualStmt = QualStmt ()
type FieldUpdate = FieldUpdate ()
type Alt = Alt ()
prelude_mod :: ModuleName
main_mod :: ModuleName
main_name :: Name
unit_con_name :: QName
tuple_con_name :: Boxed -> Int -> QName
list_cons_name :: QName
unboxed_singleton_con_name :: QName
unit_con :: Exp
tuple_con :: Boxed -> Int -> Exp
unboxed_singleton_con :: Exp
as_name :: Name
qualified_name :: Name
hiding_name :: Name
minus_name :: Name
bang_name :: Name
dot_name :: Name
star_name :: Name
export_name :: Name
safe_name :: Name
unsafe_name :: Name
interruptible_name :: Name
threadsafe_name :: Name
stdcall_name :: Name
ccall_name :: Name
cplusplus_name :: Name
dotnet_name :: Name
jvm_name :: Name
js_name :: Name
javascript_name :: Name
capi_name :: Name
forall_name :: Name
family_name :: Name
role_name :: Name
unit_tycon_name :: QName
fun_tycon_name :: QName
list_tycon_name :: QName
unboxed_singleton_tycon_name :: QName
tuple_tycon_name :: Boxed -> Int -> QName
unit_tycon :: Type
fun_tycon :: Type
list_tycon :: Type
unboxed_singleton_tycon :: Type
tuple_tycon :: Boxed -> Int -> Type


-- | This module reexports <a>Language.Haskell.Exts.Pretty</a>.
module Language.Haskell.Exts.Simple.Pretty


-- | This module reexports <a>Language.Haskell.Exts.Parser</a> with
--   adaptations.
--   
--   <b>IMPORTANT</b>: if you require compatiblity with ghc 7.8, you should
--   use the function <a>listOf</a> for constructing <a>ListOf</a> values!
module Language.Haskell.Exts.Simple.Parser

-- | Beware that the <a>ListOf</a> constructor only works in a pattern
--   context in ghc-7.8, because that version does not support explicitly
--   bidirectional pattern synonyms.
--   
--   For code that needs to work with ghc-7.8, we provide the <a>listOf</a>
--   function constructing <a>ListOf</a> values.
type ListOf = ListOf
listOf :: [a] -> ListOf a
type PragmasAndModuleName = PragmasAndModuleName ()
type PragmasAndModuleHead = PragmasAndModuleHead ()
type ModuleHeadAndImports = ModuleHeadAndImports ()
parse :: (Parseable (ast SrcSpanInfo), Functor ast) => String -> ParseResult (ast ())
parseWithMode :: (Parseable (ast SrcSpanInfo), Functor ast) => ParseMode -> String -> ParseResult (ast ())
parseModule :: String -> ParseResult Module
parseModuleWithMode :: ParseMode -> String -> ParseResult Module
parseExp :: String -> ParseResult Exp
parseExpWithMode :: ParseMode -> String -> ParseResult Exp
parseStmt :: String -> ParseResult Stmt
parseStmtWithMode :: ParseMode -> String -> ParseResult Stmt
parsePat :: String -> ParseResult Pat
parsePatWithMode :: ParseMode -> String -> ParseResult Pat
parseDecl :: String -> ParseResult Decl
parseDeclWithMode :: ParseMode -> String -> ParseResult Decl
parseType :: String -> ParseResult Type
parseTypeWithMode :: ParseMode -> String -> ParseResult Type
parseImportDecl :: String -> ParseResult ImportDecl
parseImportDeclWithMode :: ParseMode -> String -> ParseResult ImportDecl
getTopPragmas :: String -> ParseResult [ModulePragma]


-- | This module reexports <a>Language.Haskell.Exts.Fixity</a>, adapting
--   <tt>applyFixityies</tt>.
module Language.Haskell.Exts.Simple.Fixity
applyFixities :: (AppFixity ast, Functor ast, Monad m) => [Fixity] -> ast () -> m (ast ())


-- | This module reexports <a>Language.Haskell.Exts.Extension</a>.
module Language.Haskell.Exts.Simple.Extension


-- | This module reexports <a>Language.Haskell.Exts.Build</a>.
module Language.Haskell.Exts.Simple.Build


-- | This module exports all relevant modules of the
--   haskell-src-exts-simple package.
--   
--   The most important module is
--   <a>Language.Haskell.Exts.Simple.Syntax</a>.
module Language.Haskell.Exts.Simple
parseFile :: FilePath -> IO (ParseResult Module)
parseFileWithExts :: [Extension] -> FilePath -> IO (ParseResult Module)
parseFileWithMode :: ParseMode -> FilePath -> IO (ParseResult Module)
parseFileContents :: String -> ParseResult Module
parseFileContentsWithExts :: [Extension] -> String -> ParseResult Module
parseFileContentsWithMode :: ParseMode -> String -> ParseResult Module
