module Language.Haskell.Tools.AST.Match.Decls where
import Language.Haskell.Tools.AST
import Language.Haskell.Tools.AST.ElementTypes
pattern TypeDecl :: DeclHead dom -> Type dom -> Decl dom
pattern TypeDecl dh typ <- Ann _ (UTypeDecl dh typ)
pattern StandaloneDeriving :: InstanceRule dom -> Decl dom
pattern StandaloneDeriving instRule <- Ann _ (UDerivDecl _ instRule)
pattern FixityDecl :: FixitySignature dom -> Decl dom
pattern FixityDecl fixity <- Ann _ (UFixityDecl fixity)
pattern DefaultDecl :: TypeList dom -> Decl dom
pattern DefaultDecl types <- Ann _ (UDefaultDecl types)
pattern TypeSigDecl :: TypeSignature dom -> Decl dom
pattern TypeSigDecl typeSig <- Ann _ (UTypeSigDecl typeSig)
pattern ValueBinding :: ValueBind dom -> Decl dom
pattern ValueBinding bind <- Ann _ (UValueBinding bind)
pattern SpliceDecl :: Splice dom -> Decl dom
pattern SpliceDecl sp <- Ann _ (USpliceDecl sp)
pattern DataDecl :: DataOrNewtypeKeyword dom -> MaybeContext dom -> DeclHead dom -> ConDeclList dom -> MaybeDeriving dom -> Decl dom
pattern DataDecl keyw ctx dh cons derivs <- Ann _ (UDataDecl keyw ctx dh cons derivs)
pattern GADTDataDecl :: DataOrNewtypeKeyword dom -> MaybeContext dom -> DeclHead dom -> MaybeKindConstraint dome -> AnnListG UGadtConDecl dom stage -> MaybeDeriving dom -> Decl dom
pattern GADTDataDecl keyw ctx dh kind cons derivs <- Ann _ (UGDataDecl keyw ctx dh kind cons derivs )
pattern GadtConDecl :: NameList dom -> Type dom -> GadtConDecl dom
pattern GadtConDecl names typ <- Ann _ (UGadtConDecl names _ _ (Ann _ (UGadtNormalType typ)))
pattern GadtRecordConDecl :: NameList dom -> FieldDeclList dom -> Type dom -> GadtConDecl dom
pattern GadtRecordConDecl names fields typ <- Ann _ (UGadtConDecl names _ _ (Ann _ (UGadtRecordType fields typ)))
pattern ConDecl :: Name dom -> TypeList dom -> ConDecl dom
pattern ConDecl name args <- Ann _ (UConDecl _ _ name args)
pattern RecordConDecl :: Name dom -> FieldDeclList dom -> ConDecl dom
pattern RecordConDecl name fields <- Ann _ (URecordDecl _ _ name fields)
pattern InfixConDecl :: Type dom -> Operator dom -> Type dom -> ConDecl dom
pattern InfixConDecl lhs op rhs <- Ann _ (UInfixConDecl _ _ lhs op rhs)
pattern FieldDecl :: NameList dom -> Type dom -> FieldDecl dom
pattern FieldDecl names typ <- Ann _ (UFieldDecl names typ)
pattern DerivingOne :: InstanceHead dom -> Deriving dom
pattern DerivingOne deriv <- Ann _ (UDerivingOne deriv)
pattern DerivingMulti :: InstanceHeadList dom -> Deriving dom
pattern DerivingMulti derivs <- Ann _ (UDerivings derivs)
pattern DataKeyword :: DataOrNewtypeKeyword dom
pattern DataKeyword <- Ann _ UDataKeyword
pattern NewtypeKeyword :: DataOrNewtypeKeyword dom
pattern NewtypeKeyword <- Ann _ UNewtypeKeyword
pattern FunDeps :: FunDepList dom -> FunDeps dom
pattern FunDeps fds <- Ann _ (UFunDeps fds)
pattern FunDep :: NameList dom -> NameList dom -> FunDep dom
pattern FunDep lhs rhs <- Ann _ (UFunDep lhs rhs)
pattern ClassDecl :: MaybeContext dom -> DeclHead dom -> MaybeFunDeps dom -> MaybeClassBody dom -> Decl dom
pattern ClassDecl ctx dh fdeps body <- Ann _ (UClassDecl ctx dh fdeps body)
pattern ClassBody :: ClassElementList dom -> ClassBody dom
pattern ClassBody body <- Ann _ (UClassBody body)
pattern ClassElemSig :: TypeSignature dom -> ClassElement dom
pattern ClassElemSig typeSig <- Ann _ (UClsSig typeSig)
pattern ClassElemDef :: ValueBind dom -> ClassElement dom
pattern ClassElemDef def <- Ann _ (UClsDef def)
pattern ClassElemTypeFam :: DeclHead dom -> MaybeTypeFamilySpec dom -> ClassElement dom
pattern ClassElemTypeFam dh tfSpec <- Ann _ (UClsTypeFam (Ann _ (UTypeFamily dh tfSpec)))
pattern ClassElemDataFam :: DeclHead dom -> MaybeKindConstraint dome -> ClassElement dom
pattern ClassElemDataFam dh kind <- Ann _ (UClsTypeFam (Ann _ (UDataFamily dh kind)))
pattern ClsDefaultType :: DeclHead dom -> Type dom -> ClassElement dom
pattern ClsDefaultType dh typ <- Ann _ (UClsTypeDef dh typ)
pattern ClsDefaultSig :: Name dom -> Type dom -> ClassElement dom
pattern ClsDefaultSig name typ <- Ann _ (UClsDefSig name typ)
pattern ClsMinimal :: MinimalFormula dom -> ClassElement dom
pattern ClsMinimal min <- Ann _ (UClsMinimal min)
pattern MinimalName :: Name dom -> MinimalFormula dom
pattern MinimalName name <- Ann _ (UMinimalName name)
pattern MinimalParen :: MinimalFormula dom -> MinimalFormula dom
pattern MinimalParen min <- Ann _ (UMinimalParen min)
pattern MinimalOr :: MinimalFormulaList dom -> MinimalFormula dom
pattern MinimalOr mins <- Ann _ (UMinimalOr mins)
pattern MinimalAnd :: MinimalFormulaList dom -> MinimalFormula dom
pattern MinimalAnd mins <- Ann _ (UMinimalAnd mins)
pattern NameDeclHead :: Name dom -> DeclHead dom
pattern NameDeclHead name <- Ann _ (UDeclHead name)
pattern ParenDeclHead :: DeclHead dom -> DeclHead dom
pattern ParenDeclHead dh <- Ann _ (UDHParen dh)
pattern DeclHeadApp :: DeclHead dom -> TyVar dom -> DeclHead dom
pattern DeclHeadApp dh tv <- Ann _ (UDHApp dh tv)
pattern InfixDeclHead :: TyVar dom -> Operator dom -> TyVar dom -> DeclHead dom
pattern InfixDeclHead lhs op rhs <- Ann _ (UDHInfix lhs op rhs)
pattern InstanceDecl :: InstanceRule dom -> MaybeInstBody dom -> Decl dom
pattern InstanceDecl instRule body <- Ann _ (UInstDecl _ instRule body)
pattern InstanceBody :: InstBodyDeclList dom -> InstBody dom
pattern InstanceBody defs <- Ann _ (UInstBody defs)
pattern InstanceBind :: ValueBind dom -> InstBodyDecl dom
pattern InstanceBind bind <- Ann _ (UInstBodyNormalDecl bind)
pattern InstanceTypeSig :: TypeSignature dom -> InstBodyDecl dom
pattern InstanceTypeSig typeSig <- Ann _ (UInstBodyTypeSig typeSig)
pattern InstanceTypeFamilyDef :: TypeEqn dom -> InstBodyDecl dom
pattern InstanceTypeFamilyDef typeEq <- Ann _ (UInstBodyTypeDecl typeEq)
pattern InstanceDataFamilyDef :: DataOrNewtypeKeyword dom -> InstanceRule dom -> ConDeclList dom -> MaybeDeriving dom -> InstBodyDecl dom
pattern InstanceDataFamilyDef keyw instRule cons derivs <- Ann _ (UInstBodyDataDecl keyw instRule cons derivs )
pattern InstanceDataFamilyGADTDef :: DataOrNewtypeKeyword dom -> InstanceRule dom -> MaybeKindConstraint dome -> AnnListG UGadtConDecl dom stage
-> MaybeDeriving dom -> InstBodyDecl dom
pattern InstanceDataFamilyGADTDef keyw instRule kind cons derivs <- Ann _ (UInstBodyGadtDataDecl keyw instRule kind cons derivs)
pattern InstanceSpecializePragma :: Type dom -> InstBodyDecl dom
pattern InstanceSpecializePragma typ <- Ann _ (USpecializeInstance typ)
pattern InstanceRule :: AnnMaybeG (AnnListG UTyVar) dom stage -> MaybeContext dom -> InstanceHead dom -> InstanceRule dom
pattern InstanceRule tvs ctx ih <- Ann _ (UInstanceRule tvs ctx ih)
pattern InstanceHead :: Name dom -> InstanceHead dom
pattern InstanceHead name <- Ann _ (UInstanceHeadCon name)
pattern InfixInstanceHead :: Type dom -> Operator dom -> InstanceHead dom
pattern InfixInstanceHead typ n <- Ann _ (UInstanceHeadInfix typ n)
pattern ParenInstanceHead :: InstanceHead dom -> InstanceHead dom
pattern ParenInstanceHead ih <- Ann _ (UInstanceHeadParen ih)
pattern AppInstanceHead :: InstanceHead dom -> Type dom -> InstanceHead dom
pattern AppInstanceHead fun arg <- Ann _ (UInstanceHeadApp fun arg)
pattern EnableOverlap :: OverlapPragma dom
pattern EnableOverlap <- Ann _ UEnableOverlap
pattern DisableOverlap :: OverlapPragma dom
pattern DisableOverlap <- Ann _ UDisableOverlap
pattern Overlappable :: OverlapPragma dom
pattern Overlappable <- Ann _ UOverlappable
pattern Overlapping :: OverlapPragma dom
pattern Overlapping <- Ann _ UOverlapping
pattern Overlaps :: OverlapPragma dom
pattern Overlaps <- Ann _ UOverlaps
pattern IncoherentOverlap :: OverlapPragma dom
pattern IncoherentOverlap <- Ann _ UIncoherentOverlap
pattern RoleDecl :: QualifiedName dom -> RoleList dom -> Decl dom
pattern RoleDecl name roles <- Ann _ (URoleDecl name roles)
pattern NominalRole :: Role dom
pattern NominalRole <- Ann _ UNominal
pattern RepresentationalRole :: Role dom
pattern RepresentationalRole <- Ann _ URepresentational
pattern PhantomRole :: Role dom
pattern PhantomRole <- Ann _ UPhantom
pattern ForeignImport :: CallConv dom -> MaybeSafety dom -> Name dom -> Type dom -> Decl dom
pattern ForeignImport cc safety name typ <- Ann _ (UForeignImport cc safety name typ)
pattern ForeignExport :: CallConv dom -> Name dom -> Type dom -> Decl dom
pattern ForeignExport cc name typ <- Ann _ (UForeignExport cc name typ)
pattern StdCall :: CallConv dom
pattern StdCall <- Ann _ UStdCall
pattern CCall :: CallConv dom
pattern CCall <- Ann _ UCCall
pattern CApi :: CallConv dom
pattern CApi <- Ann _ UCApi
pattern Unsafe :: Safety dom
pattern Unsafe <- Ann _ UUnsafe
pattern PatternSynonym :: PatSynLhs dom -> PatSynRhs dom -> Decl dom
pattern PatternSynonym lhs rhs <- Ann _ (UPatternSynonymDecl (Ann _ (UPatternSynonym lhs rhs)))
pattern ConPatSyn :: Name dom -> NameList dom -> PatSynLhs dom
pattern ConPatSyn con args <- Ann _ (UNormalPatSyn con args)
pattern InfixPatSyn :: Name dom -> Operator dom -> Name dom -> PatSynLhs dom
pattern InfixPatSyn lhs op rhs <- Ann _ (UInfixPatSyn lhs op rhs)
pattern RecordPatSyn :: Name dom -> NameList dom -> PatSynLhs dom
pattern RecordPatSyn con args <- Ann _ (URecordPatSyn con args)
pattern SymmetricPatSyn :: Pattern dom -> PatSynRhs dom
pattern SymmetricPatSyn pat <- Ann _ (UBidirectionalPatSyn pat AnnNothing)
pattern OneWayPatSyn :: Pattern dom -> PatSynRhs dom
pattern OneWayPatSyn pat <- Ann _ (UOneDirectionalPatSyn pat)
pattern TwoWayPatSyn :: Pattern dom -> MatchList dom -> PatSynRhs dom
pattern TwoWayPatSyn pat match <- Ann _ (UBidirectionalPatSyn pat (AnnJust (Ann _ (UPatSynWhere match))))
pattern PatternSignatureDecl :: PatternSignature dom -> Decl dom
pattern PatternSignatureDecl patsig <- Ann _ (UPatTypeSigDecl patsig)
pattern PatternSignature :: Name dom -> Type dom -> PatternSignature dom
pattern PatternSignature name typ <- Ann _ (UPatternTypeSignature name typ)
pattern TypeFamily :: DeclHead dom -> MaybeTypeFamilySpec dom -> Decl dom
pattern TypeFamily dh famSpec <- Ann _ (UTypeFamilyDecl (Ann _ (UTypeFamily dh famSpec)))
pattern DataFamily :: DeclHead dom -> MaybeKindConstraint dom -> Decl dom
pattern DataFamily dh kind <- Ann _ (UTypeFamilyDecl (Ann _ (UDataFamily dh kind)))
pattern TypeInstance :: InstanceRule dom -> Type dom -> Decl dom
pattern TypeInstance instRule typ <- Ann _ (UTypeInstDecl instRule typ)
pattern DataInstance :: DataOrNewtypeKeyword dom -> InstanceRule dom -> ConDeclList dom -> MaybeDeriving dom -> Decl dom
pattern DataInstance keyw instRule cons derivs <- Ann _ (UDataInstDecl keyw instRule cons derivs )
pattern GadtDataInstance :: DataOrNewtypeKeyword dom -> InstanceRule dom -> MaybeKindConstraint dome -> GadtConDeclList dom -> Decl dom
pattern GadtDataInstance keyw instRule kind cons <- Ann _ (UGDataInstDecl keyw instRule kind cons )
pattern ClosedTypeFamily :: DeclHead dom -> MaybeTypeFamilySpec dom -> TypeEqnList dom -> Decl dom
pattern ClosedTypeFamily dh kind typeqs <- Ann _ (UClosedTypeFamilyDecl dh kind typeqs)
pattern TypeFamilyKindSpec :: KindConstraint dom -> TypeFamilySpec dom
pattern TypeFamilyKindSpec kind <- Ann _ (UTypeFamilyKind kind)
pattern TypeFamilyInjectivitySpec :: TyVar dom -> NameList dom -> TypeFamilySpec dom
pattern TypeFamilyInjectivitySpec res dependent <- Ann _ (UTypeFamilyInjectivity (Ann _ (UInjectivityAnn res dependent)))
pattern TypeEqn :: Type dom -> Type dom -> TypeEqn dom
pattern TypeEqn lhs rhs <- Ann _ (UTypeEqn lhs rhs)
pattern PragmaDecl :: TopLevelPragma dom -> Decl dom
pattern PragmaDecl pragma <- Ann _ (UPragmaDecl pragma)
pattern RulePragma :: RuleList dom -> TopLevelPragma dom
pattern RulePragma rules <- Ann _ (URulePragma rules)
pattern DeprPragma :: NameList dom -> String -> TopLevelPragma dom
pattern DeprPragma defs msg <- Ann _ (UDeprPragma defs (AnnList [Ann _ (UStringNode msg)]))
pattern WarningPragma :: NameList dom -> String -> TopLevelPragma dom
pattern WarningPragma defs msg <- Ann _ (UWarningPragma defs (AnnList [Ann _ (UStringNode msg)]))
pattern AnnPragma :: AnnotationSubject dom -> Expr dom -> TopLevelPragma dom
pattern AnnPragma subj ann <- Ann _ (UAnnPragma subj ann)
pattern InlinePragma :: MaybeConlikeAnnot dom -> MaybePhaseControl dom -> Name dom -> TopLevelPragma dom
pattern InlinePragma conlike phase name <- Ann _ (UInlinePragmaDecl (Ann _ (UInlinePragma conlike phase name)))
pattern NoInlinePragma :: Name dom -> TopLevelPragma dom
pattern NoInlinePragma name <- Ann _ (UInlinePragmaDecl (Ann _ (UNoInlinePragma name)))
pattern InlinablePragma :: MaybePhaseControl dom -> Name dom -> TopLevelPragma dom
pattern InlinablePragma phase name <- Ann _ (UInlinePragmaDecl (Ann _ (UInlinablePragma phase name)))
pattern LinePragma :: Int -> MaybeStringNode dom -> TopLevelPragma dom
pattern LinePragma line filename <- Ann _ (ULinePragma (Ann _ (LineNumber line)) filename)
pattern SpecializePragma :: MaybePhaseControl dom -> Name dom -> TypeList dom -> TopLevelPragma dom
pattern SpecializePragma phase def specTypes <- Ann _ (USpecializeDecl (Ann _ (USpecializePragma phase def specTypes)))
pattern PhaseControlFrom :: Integer -> PhaseControl dom
pattern PhaseControlFrom phaseNum <- Ann _ (UPhaseControl AnnNothing (AnnJust (Ann _ (PhaseNumber phaseNum))))
pattern PhaseControlUntil :: Integer -> PhaseControl dom
pattern PhaseControlUntil phaseNum <- Ann _ (UPhaseControl (AnnJust _) (AnnJust (Ann _ (PhaseNumber phaseNum))))
pattern RewriteRule :: String -> MaybePhaseControl dom -> RuleVarList dom -> Expr dom -> Expr dom -> Rule dom
pattern RewriteRule name phase vars lhs rhs <- Ann _ (URule (Ann _ (UStringNode name)) phase vars lhs rhs)
pattern NameAnnotation :: Name dom -> AnnotationSubject dom
pattern NameAnnotation name <- Ann _ (UNameAnnotation name)
pattern TypeAnnotation :: Name dom -> AnnotationSubject dom
pattern TypeAnnotation name <- Ann _ (UTypeAnnotation name)
pattern ModuleAnnotation :: AnnotationSubject dom
pattern ModuleAnnotation <- Ann _ UModuleAnnotation
pattern ConlikeAnnotation :: ConlikeAnnot dom
pattern ConlikeAnnotation <- Ann _ UConlikeAnnot