packages feed

haskell-tools-ast-0.1.2.0: Language/Haskell/Tools/AST/Instances/Eq.hs

-- | Equality check of AST nodes that ignore the source and semantic information.
{-# LANGUAGE FlexibleContexts, StandaloneDeriving #-}
module Language.Haskell.Tools.AST.Instances.Eq where

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

-- Annotations
instance (Eq (e a)) => Eq (Ann e a) where
  Ann _ e1 == Ann _ e2 = e1 == e2

instance (Eq (e a)) => Eq (AnnMaybe e a) where
  AnnMaybe _ e1 == AnnMaybe _ e2 = e1 == e2

instance (Eq (e a)) => Eq (AnnList e a) where
  AnnList _ e1 == AnnList _ e2 = e1 == e2

-- Modules
deriving instance Eq (Module a)
deriving instance Eq (ModuleHead a)
deriving instance Eq (ExportSpecList a)
deriving instance Eq (ExportSpec a)
deriving instance Eq (IESpec a)
deriving instance Eq (SubSpec a)
deriving instance Eq (ModulePragma a)
deriving instance Eq (FilePragma a)
deriving instance Eq (ImportDecl a)
deriving instance Eq (ImportSpec a)
deriving instance Eq (ImportQualified a)
deriving instance Eq (ImportSource a)
deriving instance Eq (ImportSafe a)
deriving instance Eq (TypeNamespace a)
deriving instance Eq (ImportRenaming a)

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

-- Literal
deriving instance Eq (Literal a)
deriving instance Eq (k a) => Eq (Promoted k a)

-- Base
deriving instance Eq (Operator a)
deriving instance Eq (Name a)
deriving instance Eq (SimpleName a)
deriving instance Eq (UnqualName a)
deriving instance Eq (StringNode a)
deriving instance Eq (DataOrNewtypeKeyword a)
deriving instance Eq (DoKind a)
deriving instance Eq (TypeKeyword a)
deriving instance Eq (OverlapPragma a)
deriving instance Eq (CallConv a)
deriving instance Eq (ArrowAppl a)
deriving instance Eq (Safety a)
deriving instance Eq (ConlikeAnnot a)
deriving instance Eq (Assoc a)
deriving instance Eq (Precedence a)
deriving instance Eq (LineNumber a)
deriving instance Eq (PhaseControl a)
deriving instance Eq (PhaseNumber a)
deriving instance Eq (PhaseInvert a)