-- | Generating instances for traversing the semantic information of the Haskell Representation
{-# LANGUAGE TemplateHaskell
           #-}
module Language.Haskell.Tools.AST.Instances.SourceInfoTraversal where

import Language.Haskell.Tools.AST.TH.SourceInfoTraversal
import Control.Applicative

import Language.Haskell.Tools.AST.Modules
import Language.Haskell.Tools.AST.TH
import Language.Haskell.Tools.AST.Decls
import Language.Haskell.Tools.AST.Binds
import Language.Haskell.Tools.AST.Exprs
import Language.Haskell.Tools.AST.Stmts
import Language.Haskell.Tools.AST.Patterns
import Language.Haskell.Tools.AST.Types
import Language.Haskell.Tools.AST.Kinds
import Language.Haskell.Tools.AST.Literals
import Language.Haskell.Tools.AST.Base
import Language.Haskell.Tools.AST.Ann


-- Modules
deriveSourceInfoTraversal ''Module
deriveSourceInfoTraversal ''ModuleHead
deriveSourceInfoTraversal ''ExportSpecList
deriveSourceInfoTraversal ''ExportSpec
deriveSourceInfoTraversal ''IESpec
deriveSourceInfoTraversal ''SubSpec
deriveSourceInfoTraversal ''ModulePragma
deriveSourceInfoTraversal ''FilePragma
deriveSourceInfoTraversal ''ImportDecl
deriveSourceInfoTraversal ''ImportSpec
deriveSourceInfoTraversal ''ImportQualified
deriveSourceInfoTraversal ''ImportSource
deriveSourceInfoTraversal ''ImportSafe
deriveSourceInfoTraversal ''TypeNamespace
deriveSourceInfoTraversal ''ImportRenaming

-- Declarations
deriveSourceInfoTraversal ''Decl
deriveSourceInfoTraversal ''ClassBody
deriveSourceInfoTraversal ''ClassElement
deriveSourceInfoTraversal ''DeclHead
deriveSourceInfoTraversal ''InstBody
deriveSourceInfoTraversal ''InstBodyDecl
deriveSourceInfoTraversal ''GadtConDecl
deriveSourceInfoTraversal ''GadtConType
deriveSourceInfoTraversal ''FieldWildcard
deriveSourceInfoTraversal ''FunDeps
deriveSourceInfoTraversal ''FunDep
deriveSourceInfoTraversal ''ConDecl
deriveSourceInfoTraversal ''FieldDecl
deriveSourceInfoTraversal ''Deriving
deriveSourceInfoTraversal ''InstanceRule
deriveSourceInfoTraversal ''InstanceHead
deriveSourceInfoTraversal ''TypeEqn
deriveSourceInfoTraversal ''KindConstraint
deriveSourceInfoTraversal ''TyVar
deriveSourceInfoTraversal ''Type
deriveSourceInfoTraversal ''Kind
deriveSourceInfoTraversal ''Context
deriveSourceInfoTraversal ''Assertion
deriveSourceInfoTraversal ''Expr
deriveSourceInfoTraversal ''CompStmt
deriveSourceInfoTraversal ''ValueBind
deriveSourceInfoTraversal ''Pattern
deriveSourceInfoTraversal ''PatternField
deriveSourceInfoTraversal ''Splice
deriveSourceInfoTraversal ''QQString
deriveSourceInfoTraversal ''Match
deriveSourceInfoTraversal ''Rhs
deriveSourceInfoTraversal ''GuardedRhs
deriveSourceInfoTraversal ''FieldUpdate
deriveSourceInfoTraversal ''Bracket
deriveSourceInfoTraversal ''TopLevelPragma
deriveSourceInfoTraversal ''Rule
deriveSourceInfoTraversal ''AnnotationSubject
deriveSourceInfoTraversal ''MinimalFormula
deriveSourceInfoTraversal ''ExprPragma
deriveSourceInfoTraversal ''SourceRange
deriveSourceInfoTraversal ''Number
deriveSourceInfoTraversal ''QuasiQuote
deriveSourceInfoTraversal ''RhsGuard
deriveSourceInfoTraversal ''LocalBind
deriveSourceInfoTraversal ''LocalBinds
deriveSourceInfoTraversal ''FixitySignature
deriveSourceInfoTraversal ''TypeSignature
deriveSourceInfoTraversal ''ListCompBody
deriveSourceInfoTraversal ''TupSecElem
deriveSourceInfoTraversal ''TypeFamily
deriveSourceInfoTraversal ''TypeFamilySpec
deriveSourceInfoTraversal ''InjectivityAnn
deriveSourceInfoTraversal ''PatternSynonym
deriveSourceInfoTraversal ''PatSynRhs
deriveSourceInfoTraversal ''PatSynLhs
deriveSourceInfoTraversal ''PatSynWhere
deriveSourceInfoTraversal ''PatternTypeSignature
deriveSourceInfoTraversal ''Role
deriveSourceInfoTraversal ''Cmd
deriveSourceInfoTraversal ''LanguageExtension
deriveSourceInfoTraversal ''MatchLhs
deriveSourceInfoTraversal ''Stmt'
deriveSourceInfoTraversal ''Alt'
deriveSourceInfoTraversal ''CaseRhs'
deriveSourceInfoTraversal ''GuardedCaseRhs'

-- Literal
deriveSourceInfoTraversal ''Literal
deriveSourceInfoTraversal ''Promoted

-- Base
deriveSourceInfoTraversal ''Operator
deriveSourceInfoTraversal ''Name
deriveSourceInfoTraversal ''QualifiedName
deriveSourceInfoTraversal ''ModuleName
deriveSourceInfoTraversal ''UnqualName
deriveSourceInfoTraversal ''StringNode
deriveSourceInfoTraversal ''DataOrNewtypeKeyword
deriveSourceInfoTraversal ''DoKind
deriveSourceInfoTraversal ''TypeKeyword
deriveSourceInfoTraversal ''OverlapPragma
deriveSourceInfoTraversal ''CallConv
deriveSourceInfoTraversal ''ArrowAppl
deriveSourceInfoTraversal ''Safety
deriveSourceInfoTraversal ''ConlikeAnnot
deriveSourceInfoTraversal ''Assoc
deriveSourceInfoTraversal ''Precedence
deriveSourceInfoTraversal ''LineNumber
deriveSourceInfoTraversal ''PhaseControl
deriveSourceInfoTraversal ''PhaseNumber
deriveSourceInfoTraversal ''PhaseInvert