| 1 | {-# LANGUAGE ScopedTypeVariables #-} |
|---|
| 2 | {-# LANGUAGE CPP #-} |
|---|
| 3 | {-# LANGUAGE TypeSynonymInstances #-} |
|---|
| 4 | {-# LANGUAGE StandaloneDeriving #-} |
|---|
| 5 | {-# LANGUAGE DeriveDataTypeable #-} |
|---|
| 6 | |
|---|
| 7 | module Instances where |
|---|
| 8 | |
|---|
| 9 | import GHC hiding(TyCon) |
|---|
| 10 | import SrcLoc |
|---|
| 11 | import RdrName |
|---|
| 12 | import OccName |
|---|
| 13 | import FastString |
|---|
| 14 | import Bag |
|---|
| 15 | import Module |
|---|
| 16 | import BasicTypes |
|---|
| 17 | import Var |
|---|
| 18 | import ForeignCall |
|---|
| 19 | |
|---|
| 20 | import Data.Generics |
|---|
| 21 | import NameSet |
|---|
| 22 | import TypeRep |
|---|
| 23 | import qualified TyCon |
|---|
| 24 | |
|---|
| 25 | import Instances0 |
|---|
| 26 | |
|---|
| 27 | #include "Typeable.h" |
|---|
| 28 | |
|---|
| 29 | -- Typeable0 |
|---|
| 30 | |
|---|
| 31 | deriving instance Typeable Prag |
|---|
| 32 | deriving instance Data Prag |
|---|
| 33 | |
|---|
| 34 | deriving instance Typeable HsWrapper |
|---|
| 35 | deriving instance Data HsWrapper |
|---|
| 36 | |
|---|
| 37 | deriving instance Typeable PredType |
|---|
| 38 | deriving instance Data PredType |
|---|
| 39 | |
|---|
| 40 | deriving instance Typeable Type |
|---|
| 41 | deriving instance Data Type |
|---|
| 42 | |
|---|
| 43 | deriving instance Typeable HsLit |
|---|
| 44 | deriving instance Data HsLit |
|---|
| 45 | |
|---|
| 46 | -- Typeable1 |
|---|
| 47 | |
|---|
| 48 | deriving instance Typeable1 Located |
|---|
| 49 | deriving instance Data e => Data (Located e) |
|---|
| 50 | |
|---|
| 51 | deriving instance Typeable1 HsModule |
|---|
| 52 | deriving instance Data a => Data (HsModule a) |
|---|
| 53 | |
|---|
| 54 | deriving instance Typeable1 HsDoc |
|---|
| 55 | deriving instance Data a => Data (HsDoc a) |
|---|
| 56 | |
|---|
| 57 | deriving instance Typeable1 HaddockModInfo |
|---|
| 58 | deriving instance Data a => Data (HaddockModInfo a) |
|---|
| 59 | |
|---|
| 60 | deriving instance Typeable1 HsDecl |
|---|
| 61 | deriving instance Data a => Data (HsDecl a) |
|---|
| 62 | |
|---|
| 63 | deriving instance Typeable1 ImportDecl |
|---|
| 64 | deriving instance Data a => Data (ImportDecl a) |
|---|
| 65 | |
|---|
| 66 | deriving instance Typeable1 IE |
|---|
| 67 | deriving instance Data a => Data (IE a) |
|---|
| 68 | |
|---|
| 69 | deriving instance Typeable1 TyClDecl |
|---|
| 70 | deriving instance Data a => Data (TyClDecl a) |
|---|
| 71 | |
|---|
| 72 | deriving instance Typeable1 DocDecl |
|---|
| 73 | deriving instance Data a => Data (DocDecl a) |
|---|
| 74 | |
|---|
| 75 | deriving instance Typeable1 SpliceDecl |
|---|
| 76 | deriving instance Data a => Data (SpliceDecl a) |
|---|
| 77 | |
|---|
| 78 | deriving instance Typeable1 RuleDecl |
|---|
| 79 | deriving instance Data a => Data (RuleDecl a) |
|---|
| 80 | |
|---|
| 81 | deriving instance Typeable1 DeprecDecl |
|---|
| 82 | deriving instance Data a => Data (DeprecDecl a) |
|---|
| 83 | |
|---|
| 84 | deriving instance Typeable1 ForeignDecl |
|---|
| 85 | deriving instance Data a => Data (ForeignDecl a) |
|---|
| 86 | |
|---|
| 87 | deriving instance Typeable1 DefaultDecl |
|---|
| 88 | deriving instance Data a => Data (DefaultDecl a) |
|---|
| 89 | |
|---|
| 90 | deriving instance Typeable1 Sig |
|---|
| 91 | deriving instance Data a => Data (Sig a) |
|---|
| 92 | |
|---|
| 93 | deriving instance Typeable1 DerivDecl |
|---|
| 94 | deriving instance Data a => Data (DerivDecl a) |
|---|
| 95 | |
|---|
| 96 | deriving instance Typeable1 InstDecl |
|---|
| 97 | deriving instance Data a => Data (InstDecl a) |
|---|
| 98 | |
|---|
| 99 | deriving instance Typeable1 HsPred |
|---|
| 100 | deriving instance Data a => Data (HsPred a) |
|---|
| 101 | |
|---|
| 102 | deriving instance Typeable1 HsType |
|---|
| 103 | deriving instance Data a => Data (HsType a) |
|---|
| 104 | |
|---|
| 105 | deriving instance Typeable1 ConDecl |
|---|
| 106 | deriving instance Data a => Data (ConDecl a) |
|---|
| 107 | |
|---|
| 108 | INSTANCE_TYPEABLE1(Bag,bagTc,"Bag") |
|---|
| 109 | instance Data a => Data (Bag a) where |
|---|
| 110 | gfoldl k z b = z listToBag `k` bagToList b -- traverse abstract type abstractly |
|---|
| 111 | toConstr _ = abstractConstr $ "Bag("++show (typeOf (undefined::a))++")" |
|---|
| 112 | gunfold _ _ = error "gunfold" |
|---|
| 113 | dataTypeOf _ = mkNorepType "Bag" |
|---|
| 114 | |
|---|
| 115 | deriving instance Typeable1 HsTyVarBndr |
|---|
| 116 | deriving instance Data a => Data (HsTyVarBndr a) |
|---|
| 117 | |
|---|
| 118 | deriving instance Typeable1 ResType |
|---|
| 119 | deriving instance Data a => Data (ResType a) |
|---|
| 120 | |
|---|
| 121 | deriving instance Typeable1 HsSplice |
|---|
| 122 | deriving instance Data a => Data (HsSplice a) |
|---|
| 123 | |
|---|
| 124 | deriving instance Typeable1 ConDeclField |
|---|
| 125 | deriving instance Data a => Data (ConDeclField a) |
|---|
| 126 | |
|---|
| 127 | deriving instance Typeable1 IPName |
|---|
| 128 | deriving instance Data a => Data (IPName a) |
|---|
| 129 | |
|---|
| 130 | deriving instance Typeable1 MatchGroup |
|---|
| 131 | deriving instance Data a => Data (MatchGroup a) |
|---|
| 132 | |
|---|
| 133 | deriving instance Typeable1 Pat |
|---|
| 134 | deriving instance Data a => Data (Pat a) |
|---|
| 135 | |
|---|
| 136 | deriving instance Typeable1 GRHSs |
|---|
| 137 | deriving instance Data a => Data (GRHSs a) |
|---|
| 138 | |
|---|
| 139 | deriving instance Typeable1 HsExpr |
|---|
| 140 | deriving instance Data a => Data (HsExpr a) |
|---|
| 141 | |
|---|
| 142 | deriving instance Typeable1 HsQuasiQuote |
|---|
| 143 | deriving instance Data a => Data (HsQuasiQuote a) |
|---|
| 144 | |
|---|
| 145 | deriving instance Typeable1 HsOverLit |
|---|
| 146 | deriving instance Data a => Data (HsOverLit a) |
|---|
| 147 | |
|---|
| 148 | deriving instance Typeable1 ArithSeqInfo |
|---|
| 149 | deriving instance Data a => Data (ArithSeqInfo a) |
|---|
| 150 | |
|---|
| 151 | deriving instance Typeable1 HsBracket |
|---|
| 152 | deriving instance Data a => Data (HsBracket a) |
|---|
| 153 | |
|---|
| 154 | deriving instance Typeable1 HsCmdTop |
|---|
| 155 | deriving instance Data a => Data (HsCmdTop a) |
|---|
| 156 | |
|---|
| 157 | deriving instance Typeable1 HsGroup |
|---|
| 158 | deriving instance Data a => Data (HsGroup a) |
|---|
| 159 | |
|---|
| 160 | deriving instance Typeable1 FixitySig |
|---|
| 161 | deriving instance Data a => Data (FixitySig a) |
|---|
| 162 | |
|---|
| 163 | deriving instance Typeable1 HsIPBinds |
|---|
| 164 | deriving instance Data a => Data (HsIPBinds a) |
|---|
| 165 | |
|---|
| 166 | deriving instance Typeable1 IPBind |
|---|
| 167 | deriving instance Data a => Data (IPBind a) |
|---|
| 168 | |
|---|
| 169 | deriving instance Typeable1 GroupByClause |
|---|
| 170 | deriving instance Data a => Data (GroupByClause a) |
|---|
| 171 | |
|---|
| 172 | deriving instance Typeable1 HsStmtContext |
|---|
| 173 | deriving instance Data a => Data (HsStmtContext a) |
|---|
| 174 | |
|---|
| 175 | deriving instance Typeable1 HsMatchContext |
|---|
| 176 | deriving instance Data a => Data (HsMatchContext a) |
|---|
| 177 | |
|---|
| 178 | deriving instance Typeable1 GRHS |
|---|
| 179 | deriving instance Data a => Data (GRHS a) |
|---|
| 180 | |
|---|
| 181 | deriving instance Typeable1 Match |
|---|
| 182 | deriving instance Data a => Data (Match a) |
|---|
| 183 | |
|---|
| 184 | deriving instance Typeable1 RuleBndr |
|---|
| 185 | deriving instance Data a => Data (RuleBndr a) |
|---|
| 186 | |
|---|
| 187 | -- Typeable2 |
|---|
| 188 | |
|---|
| 189 | deriving instance Typeable2 HsBindLR |
|---|
| 190 | deriving instance (Data a,Data b) => Data (HsBindLR a b) |
|---|
| 191 | |
|---|
| 192 | deriving instance Typeable2 StmtLR |
|---|
| 193 | deriving instance (Data a,Data b) => Data (StmtLR a b) |
|---|
| 194 | |
|---|
| 195 | deriving instance Typeable2 HsLocalBindsLR |
|---|
| 196 | deriving instance (Data a,Data b) => Data (HsLocalBindsLR a b) |
|---|
| 197 | |
|---|
| 198 | deriving instance Typeable2 HsValBindsLR |
|---|
| 199 | deriving instance (Data a,Data b) => Data (HsValBindsLR a b) |
|---|
| 200 | |
|---|
| 201 | deriving instance Typeable2 HsConDetails |
|---|
| 202 | deriving instance (Data a,Data b) => Data (HsConDetails a b) |
|---|
| 203 | |
|---|
| 204 | deriving instance Typeable2 HsRecFields |
|---|
| 205 | deriving instance (Data a,Data b) => Data (HsRecFields a b) |
|---|
| 206 | |
|---|
| 207 | deriving instance Typeable2 HsRecField |
|---|
| 208 | deriving instance (Data a,Data b) => Data (HsRecField a b) |
|---|
| 209 | |
|---|