module Language.Haskell.Tools.AST.TH where
import Language.Haskell.Tools.AST.Decls
import Language.Haskell.Tools.AST.Binds
import Language.Haskell.Tools.AST.Exprs
import Language.Haskell.Tools.AST.Patterns
import Language.Haskell.Tools.AST.Types
import Language.Haskell.Tools.AST.Base
import Language.Haskell.Tools.AST.Ann
data Splice dom stage
= IdSplice { _spliceId :: Ann Name dom stage
}
| ParenSplice { _spliceExpr :: Ann Expr dom stage
}
data QuasiQuote dom stage
= QuasiQuote { _qqExprName :: Ann Name dom stage
, _qqExprBody :: Ann QQString dom stage
}
data QQString dom stage
= QQString { _qqString :: String
}
data Bracket dom stage
= ExprBracket { _bracketExpr :: Ann Expr dom stage
}
| PatternBracket { _bracketPattern :: Ann Pattern dom stage
}
| TypeBracket { _bracketType :: Ann Type dom stage
}
| DeclsBracket { _bracketDecl :: AnnList Decl dom stage
}