Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
Alex D
GHC
Commits
6486213b
Commit
6486213b
authored
Nov 21, 2012
by
jpm@cs.ox.ac.uk
Browse files
Reject promoted constructors when -XDataKinds is not enabled (FIX #7433)
parent
31c07174
Changes
2
Hide whitespace changes
Inline
Side-by-side
compiler/typecheck/TcHsType.lhs
View file @
6486213b
...
...
@@ -607,7 +607,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"))
...
...
@@ -1516,6 +1518,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}
...
...
compiler/typecheck/TcRnTypes.lhs
View file @
6486213b
...
...
@@ -591,6 +591,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
...
...
@@ -608,6 +609,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
...
...
@@ -621,6 +623,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}
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment