X-Git-Url: http://git.megacz.com/?p=ghc-hetmet.git;a=blobdiff_plain;f=compiler%2Ftypecheck%2FTcRnTypes.lhs;h=5de2cf49f417eb10cf7e5ae99f8b2142deee03e4;hp=f66abdc67912829d0eb04bb83bc5c58af0fb3507;hb=8611d7d952b4a5bb0046898b386ded8fb287fdfa;hpb=3e83dfb21b2f2220dce97427fff5c19459ae68d1 diff --git a/compiler/typecheck/TcRnTypes.lhs b/compiler/typecheck/TcRnTypes.lhs index f66abdc..5de2cf4 100644 --- a/compiler/typecheck/TcRnTypes.lhs +++ b/compiler/typecheck/TcRnTypes.lhs @@ -43,16 +43,18 @@ module TcRnTypes( import HsSyn ( PendingSplice, HsOverLit, LRuleDecl, LForeignDecl, ArithSeqInfo, DictBinds, LHsBinds, LImportDecl, HsGroup, - ExprCoFn, IE ) + HsWrapper, IE ) import HscTypes ( FixityEnv, HscEnv, TypeEnv, TyThing, GenAvailInfo(..), AvailInfo, HscSource(..), availName, IsBootInterface, Deprecations ) import Packages ( PackageId ) import Type ( Type, pprTyThingCategory ) -import TcType ( TcTyVarSet, TcType, TcThetaType, SkolemInfo, TvSubst, - TcPredType, TcKind, tcCmpPred, tcCmpType, tcCmpTypes, pprSkolInfo ) +import TcType ( TcTyVarSet, TcType, TcThetaType, SkolemInfo, + TcPredType, TcKind, tcCmpPred, tcCmpType, + tcCmpTypes, pprSkolInfo ) import InstEnv ( Instance, InstEnv ) +import FamInstEnv ( FamInstEnv ) import IOEnv import RdrName ( GlobalRdrEnv, LocalRdrEnv ) import Name ( Name ) @@ -65,7 +67,6 @@ import UniqFM import SrcLoc ( SrcSpan, SrcLoc, Located, srcSpanStart ) import VarSet ( IdSet ) import ErrUtils ( Messages, Message ) -import UniqFM ( UniqFM ) import UniqSupply ( UniqSupply ) import BasicTypes ( IPName ) import Util ( thenCmp ) @@ -153,8 +154,11 @@ data TcGblEnv -- bound in this module when dealing with hi-boot recursions -- Updated at intervals (e.g. after dealing with types and classes) - tcg_inst_env :: InstEnv, -- Instance envt for *home-package* modules - -- Includes the dfuns in tcg_insts + tcg_inst_env :: InstEnv, -- Instance envt for *home-package* + -- modules; Includes the dfuns in + -- tcg_insts + tcg_fam_inst_env :: FamInstEnv, -- Ditto for family instances + -- Now a bunch of things about this module that are simply -- accumulated, but never consulted until the end. -- Nevertheless, it's convenient to accumulate them along @@ -419,7 +423,7 @@ data TcTyThing | ATcId { -- Ids defined in this module; may not be fully zonked tct_id :: TcId, - tct_co :: Maybe ExprCoFn, -- Nothing <=> Do not apply a GADT type refinement + tct_co :: Maybe HsWrapper, -- Nothing <=> Do not apply a GADT type refinement -- I am wobbly, or have no free -- type variables -- Just co <=> Apply any type refinement to me, @@ -795,6 +799,7 @@ data InstOrigin | RecordUpdOrigin | InstScOrigin -- Typechecking superclasses of an instance declaration | DerivOrigin -- Typechecking deriving + | StandAloneDerivOrigin -- Typechecking stand-alone deriving | DefaultOrigin -- Typechecking a default decl | DoOrigin -- Arising from a do expression | ProcOrigin -- Arising from a proc expression @@ -816,6 +821,7 @@ pprInstLoc (InstLoc orig locn _) pp_orig InstSigOrigin = ptext SLIT("instantiating a type signature") pp_orig InstScOrigin = ptext SLIT("the superclasses of an instance declaration") pp_orig DerivOrigin = ptext SLIT("the 'deriving' clause of a data type declaration") + pp_orig StandAloneDerivOrigin = ptext SLIT("a 'deriving' declaration") pp_orig DefaultOrigin = ptext SLIT("a 'default' declaration") pp_orig DoOrigin = ptext SLIT("a do statement") pp_orig ProcOrigin = ptext SLIT("a proc expression")