{-# LANGUAGE PatternSynonyms #-}
module Language.Haskell.Tools.Rewrite.Match.Exprs where
import Language.Haskell.Tools.AST
import Language.Haskell.Tools.Rewrite.ElementTypes
import Language.Haskell.Tools.Rewrite.Match.Stmts
pattern Var :: Name -> Expr
pattern Var name <- Ann _ (UVar name)
pattern Lit :: Literal -> Expr
pattern Lit lit <- Ann _ (ULit lit)
pattern InfixApp :: Expr -> Operator -> Expr -> Expr
pattern InfixApp lhs op rhs <- Ann _ (UInfixApp lhs op rhs)
pattern PrefixApp :: Operator -> Expr -> Expr
pattern PrefixApp op rhs <- Ann _ (UPrefixApp op rhs)
pattern App :: Expr -> Expr -> Expr
pattern App f e <- Ann _ (UApp f e)
pattern Lambda :: PatternList -> Expr -> Expr
pattern Lambda pats rhs <- Ann _ (ULambda pats rhs)
pattern Let :: LocalBindList -> Expr -> Expr
pattern Let pats expr <- Ann _ (ULet pats expr)
pattern If :: Expr -> Expr -> Expr -> Expr
pattern If cond then_ else_ <- Ann _ (UIf cond then_ else_)
pattern MultiIf :: GuardedCaseRhsList -> Expr
pattern MultiIf cases <- Ann _ (UMultiIf cases)
pattern Case :: Expr -> AltList -> Expr
pattern Case expr cases <- Ann _ (UCase expr cases)
pattern Do :: StmtList -> Expr
pattern Do stmts <- Ann _ (UDo DoKeyword stmts)
pattern MDo :: StmtList -> Expr
pattern MDo stmts <- Ann _ (UDo MDoKeyword stmts)
pattern ParArrayComp :: Expr -> ListCompBodyList -> Expr
pattern ParArrayComp expr stmts <- Ann _ (UParArrayComp expr stmts)
pattern Tuple :: ExprList -> Expr
pattern Tuple exprs <- Ann _ (UTuple exprs)
pattern UnboxedTuple :: ExprList -> Expr
pattern UnboxedTuple exprs <- Ann _ (UUnboxedTuple exprs)
pattern TupleSection :: TupSecElemList -> Expr
pattern TupleSection elems <- Ann _ (UTupleSection elems)
pattern UnboxedTupleSection :: TupSecElemList -> Expr
pattern UnboxedTupleSection elems <- Ann _ (UUnboxedTupSec elems)
pattern List :: ExprList -> Expr
pattern List exprs <- Ann _ (UList exprs)
pattern ParArray :: ExprList -> Expr
pattern ParArray exprs <- Ann _ (UParArray exprs)
pattern Paren :: Expr -> Expr
pattern Paren expr <- Ann _ (UParen expr)
pattern LeftSection :: Expr -> Operator -> Expr
pattern LeftSection lhs op <- Ann _ (ULeftSection lhs op)
pattern RightSection :: Operator -> Expr -> Expr
pattern RightSection op lhs <- Ann _ (URightSection op lhs)
pattern RecCon :: Name -> FieldUpdateList -> Expr
pattern RecCon name flds <- Ann _ (URecCon name flds)
pattern RecUpdate :: Expr -> FieldUpdateList -> Expr
pattern RecUpdate expr flds <- Ann _ (URecUpdate expr flds)
pattern Enum :: Expr -> MaybeExpr -> MaybeExpr -> Expr
pattern Enum from step to <- Ann _ (UEnum from step to)
pattern ParArrayEnum :: Expr -> MaybeExpr -> Expr -> Expr
pattern ParArrayEnum from step to <- Ann _ (UParArrayEnum from step to)
pattern ListComp :: Expr -> ListCompBodyList -> Expr
pattern ListComp expr bodies <- Ann _ (UListComp expr bodies)
pattern ParArrayListComp :: Expr -> ListCompBodyList -> Expr
pattern ParArrayListComp expr bodies <- Ann _ (UParArrayComp expr bodies)
pattern TypeSig :: Expr -> Type -> Expr
pattern TypeSig lhs typ <- Ann _ (UTypeSig lhs typ)
pattern ExplicitTypeApp :: Expr -> Type -> Expr
pattern ExplicitTypeApp lhs typ <- Ann _ (UExplTypeApp lhs typ)
pattern VarQuote :: Name -> Expr
pattern VarQuote name <- Ann _ (UVarQuote name)
pattern TypeQuote :: Name -> Expr
pattern TypeQuote name <- Ann _ (UTypeQuote name)
pattern BracketExpr :: Bracket -> Expr
pattern BracketExpr brack <- Ann _ (UBracketExpr brack)
pattern SpliceExpr :: Splice -> Expr
pattern SpliceExpr splice <- Ann _ (USplice splice)
pattern QuasiQuoteExpr :: QuasiQuote -> Expr
pattern QuasiQuoteExpr qq <- Ann _ (UQuasiQuoteExpr qq)
pattern ExprPragma :: ExprPragma -> Expr -> Expr
pattern ExprPragma pragma expr <- Ann _ (UExprPragma pragma expr)
pattern Proc :: Pattern -> Cmd -> Expr
pattern Proc pat cmd <- Ann _ (UProc pat cmd)
pattern ArrowApp :: Expr -> ArrowApp -> Expr -> Expr
pattern ArrowApp lhs arrow rhs <- Ann _ (UArrowApp lhs arrow rhs)
pattern LambdaCase :: AltList -> Expr
pattern LambdaCase alts <- Ann _ (ULamCase alts)
pattern StaticPointer :: Expr -> Expr
pattern StaticPointer expr <- Ann _ (UStaticPtr expr)
pattern NormalFieldUpdate :: Name -> Expr -> FieldUpdate
pattern NormalFieldUpdate n e <- Ann _ (UNormalFieldUpdate n e)
pattern FieldPun :: Name -> FieldUpdate
pattern FieldPun n <- Ann _ (UFieldPun n)
pattern FieldWildcard :: FieldWildcard -> FieldUpdate
pattern FieldWildcard wc <- Ann _ (UFieldWildcard wc)
pattern TupSecPresent :: Expr -> TupSecElem
pattern TupSecPresent expr <- Ann _ (Present expr)
pattern TupSecMissing :: TupSecElem
pattern TupSecMissing <- Ann _ Missing
pattern Alt :: Pattern -> CaseRhs -> MaybeLocalBinds -> Alt
pattern Alt pat rhs locals <- Ann _ (UAlt pat rhs locals)
pattern CaseRhs :: Expr -> CaseRhs
pattern CaseRhs e <- Ann _ (UUnguardedCaseRhs e)
pattern GuardedCaseRhss :: GuardedCaseRhsList -> CaseRhs
pattern GuardedCaseRhss cases <- Ann _ (UGuardedCaseRhss cases)
pattern GuardedCaseRhs :: RhsGuardList -> Expr -> GuardedCaseRhs
pattern GuardedCaseRhs guards expr <- Ann _ (UGuardedCaseRhs guards expr)
pattern CorePragma :: String -> ExprPragma
pattern CorePragma str <- Ann _ (UCorePragma (Ann _ (UStringNode str)))
pattern SccPragma :: String -> ExprPragma
pattern SccPragma str <- Ann _ (USccPragma (Ann _ (UStringNode str)))
pattern GeneratedPragma :: SourceRange -> ExprPragma
pattern GeneratedPragma rng <- Ann _ (UGeneratedPragma rng)
pattern SourceRange :: String -> Integer -> Integer -> Integer -> Integer -> SourceRange
pattern SourceRange file fromLine fromCol toLine toCol
<- Ann _ (USourceRange
(Ann _ (UStringNode file))
(Ann _ (Number fromLine))
(Ann _ (Number fromCol))
(Ann _ (Number toLine))
(Ann _ (Number toCol)))
pattern ArrowAppCmd :: Expr -> ArrowApp -> Expr -> Cmd
pattern ArrowAppCmd lhs arrow rhs <- Ann _ (UArrowAppCmd lhs arrow rhs)
pattern ArrowFormCmd :: Expr -> CmdList -> Cmd
pattern ArrowFormCmd expr cmds <- Ann _ (UArrowFormCmd expr cmds)
pattern AppCmd :: Cmd -> Expr -> Cmd
pattern AppCmd cmd expr <- Ann _ (UAppCmd cmd expr)
pattern InfixCmd :: Cmd -> Name -> Cmd -> Cmd
pattern InfixCmd lhs op rhs <- Ann _ (UInfixCmd lhs op rhs)
pattern LambdaCmd :: PatternList -> Cmd -> Cmd
pattern LambdaCmd pats cmd <- Ann _ (ULambdaCmd pats cmd)
pattern ParenCmd :: Cmd -> Cmd
pattern ParenCmd cmd <- Ann _ (UParenCmd cmd)
pattern CaseCmd :: Expr -> CmdAltList -> Cmd
pattern CaseCmd expr alts <- Ann _ (UCaseCmd expr alts)
pattern IfCmd :: Expr -> Cmd -> Cmd -> Cmd
pattern IfCmd pred then_ else_ <- Ann _ (UIfCmd pred then_ else_)
pattern LetCmd :: LocalBindList -> Cmd -> Cmd
pattern LetCmd locals cmd <- Ann _ (ULetCmd locals cmd)
pattern DoCmd :: CmdStmtList -> Cmd
pattern DoCmd stmts <- Ann _ (UDoCmd stmts)
pattern LeftAppl :: ArrowApp
pattern LeftAppl <- Ann _ ULeftAppl
pattern RightAppl :: ArrowApp
pattern RightAppl <- Ann _ URightAppl
pattern LeftHighApp :: ArrowApp
pattern LeftHighApp <- Ann _ ULeftHighApp
pattern RightHighApp :: ArrowApp
pattern RightHighApp <- Ann _ URightHighApp
pattern Hole :: Expr
pattern Hole <- Ann _ UHole