This module breaks the loops among the typechecker modules TcExpr, TcBinds, TcMonoBnds, TcQuals, TcGRHSs, TcMatches. \begin{code} interface TcLoop where import TcGRHSs( tcGRHSsAndBinds ) import HsMatches(GRHSsAndBinds) import HsPat(InPat, OutPat) import HsSyn(Fake) import TcHsSyn(TcIdOcc) import TcType(TcMaybe) import SST(FSST_R) import Unique(Unique) import Name(Name) import TyVar(GenTyVar) import TcEnv(TcEnv) import TcMonad(TcDown) import PreludeGlaST(_MutableArray) import Bag(Bag) import Type(GenType) import Inst(Inst) tcGRHSsAndBinds :: GRHSsAndBinds Fake Fake Name (InPat Name) -> TcDown a -> TcEnv a -> State# a -> FSST_R a (GRHSsAndBinds (GenTyVar (_MutableArray a Int (TcMaybe a))) Unique (TcIdOcc a) (OutPat (GenTyVar (_MutableArray a Int (TcMaybe a))) Unique (TcIdOcc a)), Bag (Inst a), GenType (GenTyVar (_MutableArray a Int (TcMaybe a))) Unique ) () \end{code}