-import RnHsSyn ( RenamedHsExpr, RenamedRecordBinds )
-import TcHsSyn ( TcExpr, TcRecordBinds, simpleHsLitTy, mkHsDictApp, mkHsTyApp )
-
-import TcMonad
-import TcUnify ( tcSubExp, tcGen, (<$>),
- unifyTauTy, unifyFunTy, unifyListTy, unifyPArrTy,
- unifyTupleTy )
-import BasicTypes ( RecFlag(..), isMarkedStrict )
-import Inst ( InstOrigin(..),
- LIE, mkLIE, emptyLIE, unitLIE, plusLIE, plusLIEs,
- newOverloadedLit, newMethodFromName, newIPDict,
- newDicts, newMethodWithGivenTy,
- instToId, tcInstCall, tcInstDataCon
- )
-import TcBinds ( tcBindsAndThen )
-import TcEnv ( tcLookupClass, tcLookupGlobalId, tcLookupGlobal_maybe,
- tcLookupTyCon, tcLookupDataCon, tcLookupId
- )
-import TcMatches ( tcMatchesCase, tcMatchLambda, tcStmts )
-import TcMonoType ( tcHsSigType, UserTypeCtxt(..) )
-import TcPat ( badFieldCon )
-import TcSimplify ( tcSimplifyIPs )
-import TcMType ( tcInstTyVars, tcInstType, newHoleTyVarTy, zapToType,
- newTyVarTy, newTyVarTys, zonkTcType, readHoleResult )
-import TcType ( TcType, TcSigmaType, TcRhoType, TyVarDetails(VanillaTv),
- tcSplitFunTys, tcSplitTyConApp, mkTyVarTys,
- isSigmaTy, mkFunTy, mkAppTy, mkFunTys,
- mkTyConApp, mkClassPred, tcFunArgTy,
- tyVarsOfTypes, isLinearPred,
- liftedTypeKind, openTypeKind, mkArrowKind,
- tcSplitSigmaTy, tcTyConAppTyCon,
- tidyOpenType
- )
-import FieldLabel ( FieldLabel, fieldLabelName, fieldLabelType, fieldLabelTyCon )
-import Id ( idType, recordSelectorFieldLabel, isRecordSelector, isDataConWrapId_maybe )
-import DataCon ( dataConFieldLabels, dataConSig,
- dataConStrictMarks
+import TcArrows ( tcProc )
+import TcMatches ( tcMatchesCase, tcMatchLambda, tcDoStmts, tcThingWithSig, TcMatchCtxt(..) )
+import TcHsType ( tcHsSigType, UserTypeCtxt(..) )
+import TcPat ( badFieldCon, refineTyVars )
+import TcMType ( tcInstTyVars, tcInstType, newTyFlexiVarTy, zonkTcType )
+import TcType ( TcTyVar, TcType, TcSigmaType, TcRhoType,
+ tcSplitFunTys, mkTyVarTys,
+ isSigmaTy, mkFunTy, mkTyConApp, tyVarsOfTypes, isLinearPred,
+ tcSplitSigmaTy, tidyOpenType