-
-import TcMonad
-import BasicTypes ( RecFlag(..) )
-
-import Inst ( Inst, InstOrigin(..), OverloadedLit(..),
- LIE, emptyLIE, plusLIE, plusLIEs, newOverloadedLit,
- newMethod, newMethodWithGivenTy, newDicts )
-import TcBinds ( tcBindsAndThen, checkSigTyVars )
-import TcEnv ( TcIdOcc(..), tcInstId,
- tcLookupLocalValue, tcLookupGlobalValue, tcLookupClassByKey,
- tcLookupGlobalValueByKey, newMonoIds,
- tcExtendGlobalTyVars, tcLookupGlobalValueMaybe,
- tcLookupTyCon
- )
-import TcMatches ( tcMatchesCase, tcMatchExpected )
-import TcGRHSs ( tcStmt )
-import TcMonoType ( tcHsType )
-import TcPat ( tcPat )
-import TcSimplify ( tcSimplifyAndCheck )
-import TcType ( TcType, TcTauType, TcMaybe(..),
- tcInstType, tcInstSigTcType, tcInstTyVars,
- tcInstSigType, tcInstTcType, tcInstTheta, tcSplitRhoTy,
- newTyVarTy, newTyVarTys, zonkTcType )
-import TcKind ( TcKind )
-
-import Class ( Class )
-import FieldLabel ( FieldLabel, fieldLabelName, fieldLabelType )
-import Id ( idType, dataConFieldLabels, dataConSig, recordSelectorFieldLabel,
- isRecordSelector,
- Id
- )
-import Kind ( Kind, mkBoxedTypeKind, mkTypeKind, mkArrowKind )
-import Name ( Name{-instance Eq-} )
-import Type ( mkFunTy, mkAppTy, mkTyVarTy, mkTyVarTys,
- splitFunTy_maybe, splitFunTys,
- mkTyConApp,
- splitForAllTys, splitRhoTy, splitSigmaTy,
- isTauTy, tyVarsOfType, tyVarsOfTypes,
- isForAllTy, splitAlgTyConApp, splitAlgTyConApp_maybe
- )
-import TyVar ( emptyTyVarEnv, zipTyVarEnv,
- elementOfTyVarSet, mkTyVarSet, tyVarSetToList
+import FieldLabel ( FieldLabel, fieldLabelName, fieldLabelType, fieldLabelTyCon )
+import Id ( Id, idType, recordSelectorFieldLabel, isRecordSelector )
+import DataCon ( DataCon, dataConFieldLabels, dataConSig, dataConStrictMarks, dataConWrapId )
+import Name ( Name )
+import TyCon ( TyCon, tyConTyVars, tyConTheta, isAlgTyCon, tyConDataCons, isClassTyCon )
+import Subst ( mkTopTyVarSubst, substTheta, substTy )
+import VarSet ( emptyVarSet, elemVarSet )
+import TysWiredIn ( boolTy )
+import PrelNames ( cCallableClassName, cReturnableClassName,
+ enumFromName, enumFromThenName,
+ enumFromToName, enumFromThenToName,
+ enumFromToPName, enumFromThenToPName,
+ ioTyConName