module Language.Haskell.Tools.AST.Representation.TH where
import Language.Haskell.Tools.AST.Ann (Ann, AnnListG)
import Language.Haskell.Tools.AST.Representation.Decls (UDecl)
import Language.Haskell.Tools.AST.Representation.Exprs (UExpr)
import Language.Haskell.Tools.AST.Representation.Names (UName)
import Language.Haskell.Tools.AST.Representation.Patterns (UPattern)
import Language.Haskell.Tools.AST.Representation.Types (UType)
data USplice dom stage
= UIdSplice { _spliceId :: Ann UName dom stage
}
| UParenSplice { _spliceExpr :: Ann UExpr dom stage
}
data UQuasiQuote dom stage
= UQuasiQuote { _qqExprName :: Ann UName dom stage
, _qqExprBody :: Ann QQString dom stage
}
data QQString dom stage
= QQString { _qqString :: String
}
data UBracket dom stage
= UExprBracket { _bracketExpr :: Ann UExpr dom stage
}
| UPatternBracket { _bracketPattern :: Ann UPattern dom stage
}
| UTypeBracket { _bracketType :: Ann UType dom stage
}
| UDeclsBracket { _bracketDecl :: AnnListG UDecl dom stage
}