{-# LANGUAGE FlexibleContexts , FlexibleInstances , MultiParamTypeClasses , StandaloneDeriving , DeriveGeneric , UndecidableInstances #-} module Language.Haskell.Tools.Refactor.ASTDebug.Instances where import Language.Haskell.Tools.Refactor.ASTDebug import GHC.Generics import Control.Reference import Language.Haskell.Tools.AST -- Annotations instance (ASTDebug e a, Show (e a)) => ASTDebug (Ann e) a where astDebug' (Ann a e) = traversal&nodeSubtree&nodeInfo .= a $ astDebug' e instance (ASTDebug e a, Show (e a)) => ASTDebug (AnnList e) a where astDebug' (AnnList a ls) = [TreeNode "" (TreeDebugNode "*" a (concatMap astDebug' ls))] instance (ASTDebug e a, Show (e a)) => ASTDebug (AnnMaybe e) a where astDebug' (AnnMaybe a e) = [TreeNode "" (TreeDebugNode "?" a (maybe [] astDebug' e))] -- Modules instance (Generic a, Show a) => ASTDebug Module a instance (Generic a, Show a) => ASTDebug ModuleHead a instance (Generic a, Show a) => ASTDebug ExportSpecList a instance (Generic a, Show a) => ASTDebug ExportSpec a instance (Generic a, Show a) => ASTDebug IESpec a instance (Generic a, Show a) => ASTDebug SubSpec a instance (Generic a, Show a) => ASTDebug ModulePragma a instance (Generic a, Show a) => ASTDebug FilePragma a instance (Generic a, Show a) => ASTDebug ImportDecl a instance (Generic a, Show a) => ASTDebug ImportSpec a instance (Generic a, Show a) => ASTDebug ImportQualified a instance (Generic a, Show a) => ASTDebug ImportSource a instance (Generic a, Show a) => ASTDebug ImportSafe a instance (Generic a, Show a) => ASTDebug TypeNamespace a instance (Generic a, Show a) => ASTDebug ImportRenaming a -- Declarations instance (Generic a, Show a) => ASTDebug Decl a instance (Generic a, Show a) => ASTDebug ClassBody a instance (Generic a, Show a) => ASTDebug ClassElement a instance (Generic a, Show a) => ASTDebug DeclHead a instance (Generic a, Show a) => ASTDebug InstBody a instance (Generic a, Show a) => ASTDebug InstBodyDecl a instance (Generic a, Show a) => ASTDebug GadtConDecl a instance (Generic a, Show a) => ASTDebug GadtConType a instance (Generic a, Show a) => ASTDebug GadtField a instance (Generic a, Show a) => ASTDebug FunDeps a instance (Generic a, Show a) => ASTDebug FunDep a instance (Generic a, Show a) => ASTDebug ConDecl a instance (Generic a, Show a) => ASTDebug FieldDecl a instance (Generic a, Show a) => ASTDebug Deriving a instance (Generic a, Show a) => ASTDebug InstanceRule a instance (Generic a, Show a) => ASTDebug InstanceHead a instance (Generic a, Show a) => ASTDebug TypeEqn a instance (Generic a, Show a) => ASTDebug KindConstraint a instance (Generic a, Show a) => ASTDebug TyVar a instance (Generic a, Show a) => ASTDebug Type a instance (Generic a, Show a) => ASTDebug Kind a instance (Generic a, Show a) => ASTDebug Context a instance (Generic a, Show a) => ASTDebug Assertion a instance (Generic a, Show a) => ASTDebug Expr a instance (Generic a, Show a, ASTDebug expr a, Show (expr a), Generic (expr a)) => ASTDebug (Stmt' expr) a instance (Generic a, Show a) => ASTDebug CompStmt a instance (Generic a, Show a) => ASTDebug ValueBind a instance (Generic a, Show a) => ASTDebug Pattern a instance (Generic a, Show a) => ASTDebug PatternField a instance (Generic a, Show a) => ASTDebug Splice a instance (Generic a, Show a) => ASTDebug QQString a instance (Generic a, Show a) => ASTDebug Match a instance (Generic a, Show a, ASTDebug expr a, Show (expr a), Generic (expr a)) => ASTDebug (Alt' expr) a instance (Generic a, Show a) => ASTDebug Rhs a instance (Generic a, Show a) => ASTDebug GuardedRhs a instance (Generic a, Show a) => ASTDebug FieldUpdate a instance (Generic a, Show a) => ASTDebug Bracket a instance (Generic a, Show a) => ASTDebug TopLevelPragma a instance (Generic a, Show a) => ASTDebug Rule a instance (Generic a, Show a) => ASTDebug AnnotationSubject a instance (Generic a, Show a) => ASTDebug MinimalFormula a instance (Generic a, Show a) => ASTDebug ExprPragma a instance (Generic a, Show a) => ASTDebug SourceRange a instance (Generic a, Show a) => ASTDebug Number a instance (Generic a, Show a) => ASTDebug QuasiQuote a instance (Generic a, Show a) => ASTDebug RhsGuard a instance (Generic a, Show a) => ASTDebug LocalBind a instance (Generic a, Show a) => ASTDebug LocalBinds a instance (Generic a, Show a) => ASTDebug FixitySignature a instance (Generic a, Show a) => ASTDebug TypeSignature a instance (Generic a, Show a) => ASTDebug ListCompBody a instance (Generic a, Show a) => ASTDebug TupSecElem a instance (Generic a, Show a) => ASTDebug TypeFamily a instance (Generic a, Show a) => ASTDebug TypeFamilySpec a instance (Generic a, Show a) => ASTDebug InjectivityAnn a instance (Generic a, Show a, ASTDebug expr a, Show (expr a), Generic (expr a)) => ASTDebug (CaseRhs' expr) a instance (Generic a, Show a, ASTDebug expr a, Show (expr a), Generic (expr a)) => ASTDebug (GuardedCaseRhs' expr) a instance (Generic a, Show a) => ASTDebug PatternSynonym a instance (Generic a, Show a) => ASTDebug PatSynRhs a instance (Generic a, Show a) => ASTDebug PatSynLhs a instance (Generic a, Show a) => ASTDebug PatSynWhere a instance (Generic a, Show a) => ASTDebug PatternTypeSignature a instance (Generic a, Show a) => ASTDebug Role a instance (Generic a, Show a) => ASTDebug Cmd a instance (Generic a, Show a) => ASTDebug LanguageExtension a instance (Generic a, Show a) => ASTDebug MatchLhs a -- Literal instance (Generic a, Show a) => ASTDebug Literal a instance (Generic a, Show a, ASTDebug k a, Show (k a), Generic (k a)) => ASTDebug (Promoted k) a -- Base instance (Generic a, Show a) => ASTDebug Operator a instance (Generic a, Show a) => ASTDebug Name a instance (Generic a, Show a) => ASTDebug SimpleName a instance (Generic a, Show a) => ASTDebug UnqualName a instance (Generic a, Show a) => ASTDebug StringNode a instance (Generic a, Show a) => ASTDebug DataOrNewtypeKeyword a instance (Generic a, Show a) => ASTDebug DoKind a instance (Generic a, Show a) => ASTDebug TypeKeyword a instance (Generic a, Show a) => ASTDebug OverlapPragma a instance (Generic a, Show a) => ASTDebug CallConv a instance (Generic a, Show a) => ASTDebug ArrowAppl a instance (Generic a, Show a) => ASTDebug Safety a instance (Generic a, Show a) => ASTDebug ConlikeAnnot a instance (Generic a, Show a) => ASTDebug Assoc a instance (Generic a, Show a) => ASTDebug Precedence a instance (Generic a, Show a) => ASTDebug LineNumber a instance (Generic a, Show a) => ASTDebug PhaseControl a instance (Generic a, Show a) => ASTDebug PhaseNumber a instance (Generic a, Show a) => ASTDebug PhaseInvert a