import BasicTypes ( RecFlag(..), NewOrData(..) )
import TcMonad
-import TcEnv ( TcEnv, TcTyThing(..), TyThing(..), TyThingDetails(..),
+import TcEnv ( TcEnv, RecTcEnv, TcTyThing(..), TyThing(..), TyThingDetails(..),
tcExtendKindEnv, tcLookup, tcExtendGlobalEnv )
import TcTyDecls ( tcTyDecl1, kcConDetails, mkNewTyConRep )
import TcClassDcl ( tcClassDecl1 )
The main function
~~~~~~~~~~~~~~~~~
\begin{code}
-tcTyAndClassDecls :: TcEnv -- Knot tying stuff
+tcTyAndClassDecls :: RecTcEnv -- Knot tying stuff
-> [RenamedHsDecl]
-> TcM TcEnv
tcGroups unf_env (group:groups)
= tcGroup unf_env group `thenTc` \ env ->
- tcSetEnv env $
+ tcSetEnv env $
tcGroups unf_env groups
\end{code}
@TyThing@s. @rec_vrcs@ is a finite map from @Name@s to @ArgVrcs@s.
\begin{code}
-tcGroup :: TcEnv -> SCC RenamedTyClDecl -> TcM TcEnv
+tcGroup :: RecTcEnv -> SCC RenamedTyClDecl -> TcM TcEnv
tcGroup unf_env scc
= getDOptsTc `thenTc` \ dflags ->
-- Step 1