plusLIEs, mkLIE, isEmptyLIE, lieToList, listToLIE,
-- Misc other types
- TcId, TcIdSet, TcDictBinds,
+ TcId, TcIdSet, TcDictBinds, TcTyVarBind(..), TcTyVarBinds
) where
import Data.Maybe
import Data.List
+import Data.Set (Set)
\end{code}
type TcM a = TcRn a -- Historical
\end{code}
+Representation of type bindings to uninstantiated meta variables used during
+constraint solving.
+
+\begin{code}
+data TcTyVarBind = TcTyVarBind TcTyVar TcType
+
+type TcTyVarBinds = Bag TcTyVarBind
+
+instance Outputable TcTyVarBind where
+ ppr (TcTyVarBind tv ty) = ppr tv <+> text ":=" <+> ppr ty
+\end{code}
+
%************************************************************************
%* *
-- The binds, rules and foreign-decl fiels are collected
-- initially in un-zonked form and are finally zonked in tcRnSrcDecls
- tcg_rn_imports :: Maybe [LImportDecl Name],
tcg_rn_exports :: Maybe [Located (IE Name)],
+ tcg_rn_imports :: [LImportDecl Name],
+ -- Keep the renamed imports regardless. They are not
+ -- voluminous and are needed if you want to report unused imports
+ tcg_used_rdrnames :: TcRef (Set RdrName),
tcg_rn_decls :: Maybe (HsGroup Name),
-- ^ Renamed decls, maybe. @Nothing@ <=> Don't retain renamed
-- decls.
-- We still need the unsullied global name env so that
-- we can look up record field names
- tcl_env :: NameEnv TcTyThing, -- The local type environment: Ids and TyVars
- -- defined in this module
+ tcl_env :: NameEnv TcTyThing, -- The local type environment: Ids and
+ -- TyVars defined in this module
tcl_tyvars :: TcRef TcTyVarSet, -- The "global tyvars"
-- Namely, the in-scope TyVars bound in tcl_env,
- -- plus the tyvars mentioned in the types of Ids bound in tcl_lenv
- -- Why mutable? see notes with tcGetGlobalTyVars
+ -- plus the tyvars mentioned in the types of Ids bound
+ -- in tcl_lenv.
+ -- Why mutable? see notes with tcGetGlobalTyVars
+
+ tcl_lie :: TcRef LIE, -- Place to accumulate type constraints
- tcl_lie :: TcRef LIE -- Place to accumulate type constraints
+ tcl_tybinds :: TcRef TcTyVarBinds -- Meta and coercion type variable
+ -- bindings accumulated during
+ -- constraint solving
}