module Language.Haskell.Tools.Rewrite.Match.Types where
import Language.Haskell.Tools.AST
import Language.Haskell.Tools.Rewrite.ElementTypes
pattern ForallType :: TyVarList -> Type -> Type
pattern ForallType vars t <- Ann _ (UTyForall vars t)
pattern CtxType :: Context -> Type -> Type
pattern CtxType ctx t <- Ann _ (UTyCtx ctx t)
pattern FunctionType :: Type -> Type -> Type
pattern FunctionType at rt <- Ann _ (UTyFun at rt)
pattern TupleType :: TypeList -> Type
pattern TupleType args <- Ann _ (UTyTuple args)
pattern UnboxedTupleType :: TypeList -> Type
pattern UnboxedTupleType args <- Ann _ (UTyUnbTuple args)
pattern ListType :: Type -> Type
pattern ListType t <- Ann _ (UTyList t)
pattern ParArrayType :: Type -> Type
pattern ParArrayType t <- Ann _ (UTyParArray t)
pattern TypeApp :: Type -> Type -> Type
pattern TypeApp ft at <- Ann _ (UTyApp ft at)
pattern InfixTypeApp :: Type -> Operator -> Type -> Type
pattern InfixTypeApp left op right <- Ann _ (UTyInfix left op right)
pattern ParenType :: Type -> Type
pattern ParenType t <- Ann _ (UTyParen t)
pattern VarType :: Name -> Type
pattern VarType n <- Ann _ (UTyVar n)
pattern KindedType :: Type -> Kind -> Type
pattern KindedType t k <- Ann _ (UTyKinded t k)
pattern BangType :: Type -> Type
pattern BangType n <- Ann _ (UTyBang n)
pattern LazyType :: Type -> Type
pattern LazyType n <- Ann _ (UTyLazy n)
pattern UnpackType :: Type -> Type
pattern UnpackType n <- Ann _ (UTyUnpack n)
pattern NoUnpackType :: Type -> Type
pattern NoUnpackType t <- Ann _ (UTyNoUnpack t)
pattern WildcardType :: Type
pattern WildcardType <- Ann _ UTyWildcard
pattern NamedWildcardType :: Name -> Type
pattern NamedWildcardType n <- Ann _ (UTyNamedWildc n)
pattern SpliceType :: Splice -> Type
pattern SpliceType spl <- Ann _ (UTySplice spl)
pattern QuasiQuoteType :: QuasiQuote -> Type
pattern QuasiQuoteType spl <- Ann _ (UTyQuasiQuote spl)
pattern PromotedIntType :: Integer -> Type
pattern PromotedIntType i <- Ann _ (UTyPromoted (Ann _ (UPromotedInt i)))
pattern PromotedStringType :: String -> Type
pattern PromotedStringType s <- Ann _ (UTyPromoted (Ann _ (UPromotedString s)))
pattern PromotedConType :: Name -> Type
pattern PromotedConType s <- Ann _ (UTyPromoted (Ann _ (UPromotedCon s)))
pattern PromotedListType :: TypeList -> Type
pattern PromotedListType elems <- Ann _ (UTyPromoted (Ann _ (UPromotedList elems)))
pattern PromotedTupleType :: TypeList -> Type
pattern PromotedTupleType elems <- Ann _ (UTyPromoted (Ann _ (UPromotedTuple elems)))
pattern PromotedUnitType :: Type
pattern PromotedUnitType <- Ann _ (UTyPromoted (Ann _ UPromotedUnit))
pattern TyVarDecl :: Name -> TyVar
pattern TyVarDecl n <- Ann _ (UTyVarDecl n _)
pattern KindedTyVarDecl :: Name -> Kind -> TyVar
pattern KindedTyVarDecl n k <- Ann _ (UTyVarDecl n (AnnJust (Ann _ (UKindConstraint k))))
pattern Context :: Assertion -> Context
pattern Context n <- Ann _ (UContext n)
pattern ClassAssert :: Name -> TypeList -> Assertion
pattern ClassAssert n args <- Ann _ (UClassAssert n args)
pattern InfixAssert :: Type -> Operator -> Type -> Assertion
pattern InfixAssert left op right <- Ann _ (UInfixAssert left op right)
pattern ImplicitAssert :: Name -> Type -> Assertion
pattern ImplicitAssert n t <- Ann _ (UImplicitAssert n t)
pattern TupleAssert :: [Assertion] -> Assertion
pattern TupleAssert ass <- Ann _ (UTupleAssert (AnnList ass))