summaryrefslogtreecommitdiff
path: root/compiler/hsSyn/HsInstances.hs
blob: a674212c023201519fa5e1b652677b39f560a707 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE StandaloneDeriving #-}
{-# LANGUAGE DeriveDataTypeable #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE UndecidableInstances #-}
{-# OPTIONS_GHC -fno-warn-orphans #-}
module HsInstances where

-- This module defines the Data instances for the hsSyn AST.

-- It happens here to avoid massive constraint types on the AST with concomitant
-- slow GHC bootstrap times.

-- UndecidableInstances ?

import {-# SOURCE #-} HsInstances2 ()
import Data.Data hiding ( Fixity )

import HsExtension
import HsBinds
import HsDecls

-- Data derivations from HsBinds ---------------------------------------

deriving instance (DataIdLR pL pR) => Data (HsLocalBindsLR pL pR)
deriving instance (DataIdLR pL pR) => Data (HsValBindsLR pL pR)
deriving instance (DataIdLR pL pL) => Data (NHsValBindsLR pL)
deriving instance (DataIdLR pL pR) => Data (HsBindLR pL pR)
deriving instance (DataId p)       => Data (ABExport p)
deriving instance (DataIdLR pL pR) => Data (PatSynBind pL pR)
deriving instance (DataIdLR p p)   => Data (HsIPBinds p)
deriving instance (DataIdLR p p)   => Data (IPBind p)
deriving instance (DataIdLR p p)   => Data (Sig p)
deriving instance (DataId p)       => Data (FixitySig p)
deriving instance (DataIdLR p p)   => Data (HsPatSynDir p)

-- Data derivations from HsDecls ---------------------------------------

deriving instance (DataIdLR p p) => Data (HsDecl p)
deriving instance (DataIdLR p p) => Data (HsGroup p)
deriving instance (DataIdLR p p) => Data (SpliceDecl p)
deriving instance (DataIdLR p p) => Data (TyClDecl p)
deriving instance (DataIdLR p p) => Data (TyClGroup p)
deriving instance (DataIdLR p p) => Data (FamilyResultSig p)
deriving instance (DataIdLR p p) => Data (FamilyDecl p)
deriving instance (DataIdLR p p) => Data (InjectivityAnn p)
deriving instance (DataIdLR p p) => Data (FamilyInfo p)
deriving instance (DataIdLR p p) => Data (HsDataDefn p)
deriving instance (DataIdLR p p) => Data (HsDerivingClause p)
deriving instance (DataIdLR p p) => Data (ConDecl p)
deriving instance DataIdLR p p   => Data (TyFamInstDecl p)
deriving instance DataIdLR p p   => Data (DataFamInstDecl p)
deriving instance (DataIdLR p p,Data pats,Data rhs) => Data (FamEqn p pats rhs)
deriving instance (DataIdLR p p) => Data (ClsInstDecl p)
deriving instance (DataIdLR p p) => Data (InstDecl p)
deriving instance (DataIdLR p p) => Data (DerivDecl p)
deriving instance (DataIdLR p p) => Data (DefaultDecl p)
deriving instance (DataIdLR p p) => Data (ForeignDecl p)
deriving instance (DataIdLR p p) => Data (RuleDecls p)
deriving instance (DataIdLR p p) => Data (RuleDecl p)
deriving instance (DataIdLR p p) => Data (RuleBndr p)
deriving instance (DataIdLR p p) => Data (VectDecl p)
deriving instance (DataId p)     => Data (WarnDecls p)
deriving instance (DataId p)     => Data (WarnDecl p)
deriving instance (DataIdLR p p) => Data (AnnDecl p)
deriving instance (DataId p)     => Data (RoleAnnotDecl p)

-- Data derivations from HsExpr ----------------------------------------
{-
deriving instance (DataIdLR p p) => Data (SyntaxExpr p)
deriving instance (DataIdLR p p) => Data (HsExpr p)
deriving instance (DataIdLR p p) => Data (HsTupArg p)
deriving instance (DataIdLR p p) => Data (HsCmd p)
deriving instance (DataIdLR p p) => Data (HsCmdTop p)
deriving instance (DataIdLR p p) => Data (MatchGroup p (LHsExpr p))
deriving instance (DataIdLR p p) => Data (MatchGroup p (LHsCmd p))
deriving instance (DataIdLR p p) => Data (Match      p (LHsExpr p))
deriving instance (DataIdLR p p) => Data (Match      p (LHsCmd p))
deriving instance (DataIdLR p p) => Data (GRHSs      p (LHsExpr p))
deriving instance (DataIdLR p p) => Data (GRHSs      p (LHsCmd p))
deriving instance (DataIdLR p p) => Data (GRHS       p (LHsExpr p))
deriving instance (DataIdLR p p) => Data (GRHS       p (LHsCmd p))
deriving instance (DataIdLR p p) => Data (StmtLR   p p (LHsExpr p))
deriving instance (DataIdLR p p) => Data (StmtLR   p p (LHsCmd p))
deriving instance (DataIdLR p p) => Data (ParStmtBlock p p)
deriving instance (DataIdLR p p) => Data (ApplicativeArg p)
deriving instance (DataIdLR p p) => Data (HsSplice p)
deriving instance (DataIdLR p p) => Data (HsSplicedThing p)
deriving instance (DataIdLR p p) => Data (HsBracket p)
deriving instance (DataIdLR p p) => Data (ArithSeqInfo p)
deriving instance                   Data RecordConTc
deriving instance                   Data CmdTopTc
deriving instance                   Data PendingRnSplice
deriving instance                   Data PendingTcSplice

-- Data derivations from HsLit ----------------------------------------

deriving instance (DataId p) => Data (HsLit p)
deriving instance (DataIdLR p p) => Data (HsOverLit p)

-- Data derivations from HsTypes ---------------------------------------

deriving instance (DataIdLR p p)         => Data (LHsQTyVars p)

deriving instance (DataIdLR p p) => Data (HsImplicitBndrs p (LHsType p))
deriving instance (DataIdLR p p) => Data (HsImplicitBndrs p (FamEqn p (HsTyPats p) (HsDataDefn p)))
deriving instance (DataIdLR p p) => Data (HsImplicitBndrs p (FamEqn p (HsTyPats p) (LHsType p)))

deriving instance (DataIdLR p p) => Data (HsWildCardBndrs p (LHsType p))
deriving instance (DataIdLR p p) => Data (HsWildCardBndrs p (LHsSigType p))
deriving instance (DataIdLR p p) => Data (HsTyVarBndr p)
deriving instance (DataIdLR p p) => Data (HsType p)
deriving instance (DataId p) => Data (HsWildCardInfo p)
deriving instance (DataIdLR p p) => Data (HsAppType p)
deriving instance (DataIdLR p p) => Data (ConDeclField p)
deriving instance (DataId p) => Data (FieldOcc p)
deriving instance DataId p               => Data (AmbiguousFieldOcc p)

-- Data derivations from HsPat -----------------------------------------

deriving instance (DataIdLR p p) => Data (Pat p)
deriving instance (DataIdLR p p) => Data (HsRecFields p (LPat p))
deriving instance (DataIdLR p p) => Data (HsRecFields p (LHsExpr p))
-}
-- ---------------------------------------------------------------------