Repository : ssh://darcs.haskell.org//srv/darcs/ghc On branch : ghc-7.6
http://hackage.haskell.org/trac/ghc/changeset/3a6675f57c77b4606c7480c3f3d160bb302634a2 >--------------------------------------------------------------- commit 3a6675f57c77b4606c7480c3f3d160bb302634a2 Author: Jose Pedro Magalhaes <j...@cs.ox.ac.uk> Date: Wed Nov 21 13:13:44 2012 +0000 Reject promoted constructors when -XDataKinds is not enabled (FIX #7433) >--------------------------------------------------------------- compiler/typecheck/TcHsType.lhs | 5 ++++- compiler/typecheck/TcRnTypes.lhs | 3 +++ 2 files changed, 7 insertions(+), 1 deletions(-) diff --git a/compiler/typecheck/TcHsType.lhs b/compiler/typecheck/TcHsType.lhs index 147ce75..bacb02c 100644 --- a/compiler/typecheck/TcHsType.lhs +++ b/compiler/typecheck/TcHsType.lhs @@ -604,7 +604,9 @@ tcTyVar name -- Could be a tyvar, a tycon, or a datacon AGlobal (ADataCon dc) | Just tc <- promoteDataCon_maybe dc - -> inst_tycon (mkTyConApp tc) (tyConKind tc) + -> do { data_kinds <- xoptM Opt_DataKinds + ; unless data_kinds $ promotionErr name NoDataKinds + ; inst_tycon (mkTyConApp tc) (tyConKind tc) } | otherwise -> failWithTc (quotes (ppr dc) <+> ptext (sLit "of type") <+> quotes (ppr (dataConUserType dc)) <+> ptext (sLit "is not promotable")) @@ -1474,6 +1476,7 @@ promotionErr name err where reason = case err of FamDataConPE -> ptext (sLit "it comes from a data family instance") + NoDataKinds -> ptext (sLit "Perhaps you intended to use -XDataKinds") _ -> ptext (sLit "it is defined and used in the same recursive group") \end{code} diff --git a/compiler/typecheck/TcRnTypes.lhs b/compiler/typecheck/TcRnTypes.lhs index 0eb1efe..e465883 100644 --- a/compiler/typecheck/TcRnTypes.lhs +++ b/compiler/typecheck/TcRnTypes.lhs @@ -593,6 +593,7 @@ data PromotionErr | RecDataConPE -- Data constructor in a reuursive loop -- See Note [ARecDataCon: recusion and promoting data constructors] in TcTyClsDecls + | NoDataKinds -- -XDataKinds not enabled instance Outputable TcTyThing where -- Debugging only ppr (AGlobal g) = pprTyThing g @@ -610,6 +611,7 @@ instance Outputable PromotionErr where ppr TyConPE = text "TyConPE" ppr FamDataConPE = text "FamDataConPE" ppr RecDataConPE = text "RecDataConPE" + ppr NoDataKinds = text "NoDataKinds" pprTcTyThingCategory :: TcTyThing -> SDoc pprTcTyThingCategory (AGlobal thing) = pprTyThingCategory thing @@ -623,6 +625,7 @@ pprPECategory ClassPE = ptext (sLit "Class") pprPECategory TyConPE = ptext (sLit "Type constructor") pprPECategory FamDataConPE = ptext (sLit "Data constructor") pprPECategory RecDataConPE = ptext (sLit "Data constructor") +pprPECategory NoDataKinds = ptext (sLit "Data constructor") \end{code} _______________________________________________ Cvs-ghc mailing list Cvs-ghc@haskell.org http://www.haskell.org/mailman/listinfo/cvs-ghc