fay-0.24.2.0: src/Fay/Exts.hs
module Fay.Exts where
import qualified Language.Haskell.Exts as A
type X = A.SrcSpanInfo
type Alt = A.Alt X
type BangType = A.BangType X
type ClassDecl = A.ClassDecl X
type Decl = A.Decl X
type DeclHead = A.DeclHead X
type Ex = A.Exp X
type Exp = A.Exp X
type ExportSpec = A.ExportSpec X
type FieldDecl = A.FieldDecl X
type FieldUpdate = A.FieldUpdate X
type GadtDecl = A.GadtDecl X
type GuardedRhs = A.GuardedRhs X
type ImportDecl = A.ImportDecl X
type ImportSpec = A.ImportSpec X
type Literal = A.Literal X
type Match = A.Match X
type Module = A.Module X
type ModuleName = A.ModuleName X
type ModulePragma = A.ModulePragma X
type Name = A.Name X
type Pat = A.Pat X
type PatField = A.PatField X
type QName = A.QName X
type QOp = A.QOp X
type QualConDecl = A.QualConDecl X
type QualStmt = A.QualStmt X
type Rhs = A.Rhs X
type SpecialCon = A.SpecialCon X
type SrcLoc = A.SrcLoc
type Stmt = A.Stmt X
type TyVarBind = A.TyVarBind X
type Type = A.Type X
moduleName :: A.SrcInfo a => A.Module a -> A.ModuleName a
moduleName (A.Module _ (Just (A.ModuleHead _ n _ _)) _ _ _) = n
moduleName (A.Module a Nothing _ _ _) = A.ModuleName a "Main"
moduleName m = error $ "moduleName: " ++ A.prettyPrint m
moduleExports :: A.Module X -> Maybe (A.ExportSpecList X)
moduleExports (A.Module _ (Just (A.ModuleHead _ _ _ e)) _ _ _) = e
moduleExports (A.Module _ Nothing _ _ _) = Nothing
moduleExports m = error $ "moduleExports: " ++ A.prettyPrint m
moduleNameString :: A.ModuleName t -> String
moduleNameString (A.ModuleName _ n) = n
mkIdent :: String -> A.Name A.SrcSpanInfo
mkIdent = A.Ident noI
noI :: A.SrcSpanInfo
noI = A.noInfoSpan (A.mkSrcSpan A.noLoc A.noLoc)
convertFieldDecl :: A.FieldDecl a -> ([A.Name a], A.Type a)
convertFieldDecl (A.FieldDecl _ ns b) = (ns, b)
fieldDeclNames :: A.FieldDecl a -> [A.Name a]
fieldDeclNames (A.FieldDecl _ ns _) = ns
declHeadName :: A.DeclHead a -> A.Name a
declHeadName d = case d of
A.DHead _ n -> n
A.DHInfix _ _ n -> n
A.DHParen _ h -> declHeadName h
A.DHApp _ h _ -> declHeadName h