summaryrefslogtreecommitdiff
path: root/compiler/GHC/Tc/Errors
diff options
context:
space:
mode:
Diffstat (limited to 'compiler/GHC/Tc/Errors')
-rw-r--r--compiler/GHC/Tc/Errors/Ppr.hs7
-rw-r--r--compiler/GHC/Tc/Errors/Types.hs12
2 files changed, 19 insertions, 0 deletions
diff --git a/compiler/GHC/Tc/Errors/Ppr.hs b/compiler/GHC/Tc/Errors/Ppr.hs
index bf92125405..a9b1084914 100644
--- a/compiler/GHC/Tc/Errors/Ppr.hs
+++ b/compiler/GHC/Tc/Errors/Ppr.hs
@@ -1338,6 +1338,9 @@ instance Diagnostic TcRnMessage where
TcRnSectionWithoutParentheses expr -> mkSimpleDecorated $
hang (text "A section must be enclosed in parentheses")
2 (text "thus:" <+> (parens (ppr expr)))
+ TcRnMissingRoleAnnotation name roles -> mkSimpleDecorated $
+ hang (text "Missing role annotation" <> colon)
+ 2 (text "type role" <+> ppr name <+> hsep (map ppr roles))
TcRnCapturedTermName tv_name shadowed_term_names
-> mkSimpleDecorated $
@@ -2547,6 +2550,8 @@ instance Diagnostic TcRnMessage where
-> ErrorWithoutFlag
TcRnGhciMonadLookupFail {}
-> ErrorWithoutFlag
+ TcRnMissingRoleAnnotation{}
+ -> WarningWithFlag Opt_WarnMissingRoleAnnotations
diagnosticHints = \case
TcRnUnknownMessage m
@@ -3226,6 +3231,8 @@ instance Diagnostic TcRnMessage where
-> noHints
TcRnGhciMonadLookupFail {}
-> noHints
+ TcRnMissingRoleAnnotation{}
+ -> noHints
diagnosticCode :: TcRnMessage -> Maybe DiagnosticCode
diagnosticCode = constructorCode
diff --git a/compiler/GHC/Tc/Errors/Types.hs b/compiler/GHC/Tc/Errors/Types.hs
index 4f0d961a3d..41fa0515ee 100644
--- a/compiler/GHC/Tc/Errors/Types.hs
+++ b/compiler/GHC/Tc/Errors/Types.hs
@@ -4168,6 +4168,18 @@ data TcRnMessage where
-> Maybe [GlobalRdrElt] -- ^ lookup result
-> TcRnMessage
+ {- TcRnMissingRoleAnnotation is a warning that occurs when type declaration
+ doesn't have a role annotatiosn
+
+ Controlled by flags:
+ - Wmissing-role-annotations
+
+ Test cases:
+ T22702
+
+ -}
+ TcRnMissingRoleAnnotation :: Name -> [Role] -> TcRnMessage
+
deriving Generic
-- | Things forbidden in @type data@ declarations.