\begin{code}
------------------------------------------------------
buildSynTyCon :: Name -> [TyVar] -> SynTyConRhs -> TyCon
-buildSynTyCon name tvs rhs@(OpenSynTyCon rhs_ki)
+buildSynTyCon name tvs rhs@(OpenSynTyCon rhs_ki _)
= mkSynTyCon name kind tvs rhs
where
kind = mkArrowKinds (map tyVarKind tvs) rhs_ki
mkAbstractTyConRhs = AbstractTyCon
mkOpenDataTyConRhs :: AlgTyConRhs
-mkOpenDataTyConRhs = OpenDataTyCon
+mkOpenDataTyConRhs = OpenTyCon Nothing False
mkOpenNewTyConRhs :: AlgTyConRhs
-mkOpenNewTyConRhs = OpenNewTyCon
+mkOpenNewTyConRhs = OpenTyCon Nothing True
mkDataTyConRhs :: [DataCon] -> AlgTyConRhs
mkDataTyConRhs cons
etad_rhs :: Type -- return a TyCon without pulling on rhs_ty
-- See Note [Tricky iface loop] in LoadIface
(etad_tvs, etad_rhs) = eta_reduce (reverse tvs) rhs_ty
-
+
eta_reduce :: [TyVar] -- Reversed
-> Type -- Rhs type
-> ([TyVar], Type) -- Eta-reduced version (tyvars in normal order)