Commit d49e38db authored by Ian Lynagh's avatar Ian Lynagh

Make a proper Opt_WarnLazyUnliftedBindings warning, with a flag etc

parent db61aebd
...@@ -191,6 +191,7 @@ data DynFlag ...@@ -191,6 +191,7 @@ data DynFlag
| Opt_WarnTabs | Opt_WarnTabs
| Opt_WarnUnrecognisedPragmas | Opt_WarnUnrecognisedPragmas
| Opt_WarnDodgyForeignImports | Opt_WarnDodgyForeignImports
| Opt_WarnLazyUnliftedBindings
-- language opts -- language opts
| Opt_OverlappingInstances | Opt_OverlappingInstances
...@@ -906,6 +907,7 @@ standardWarnings ...@@ -906,6 +907,7 @@ standardWarnings
Opt_WarnMissingFields, Opt_WarnMissingFields,
Opt_WarnMissingMethods, Opt_WarnMissingMethods,
Opt_WarnDuplicateExports, Opt_WarnDuplicateExports,
Opt_WarnLazyUnliftedBindings,
Opt_WarnDodgyForeignImports Opt_WarnDodgyForeignImports
] ]
...@@ -1659,6 +1661,8 @@ fFlags = [ ...@@ -1659,6 +1661,8 @@ fFlags = [
( "warn-orphans", Opt_WarnOrphans, const Supported ), ( "warn-orphans", Opt_WarnOrphans, const Supported ),
( "warn-tabs", Opt_WarnTabs, const Supported ), ( "warn-tabs", Opt_WarnTabs, const Supported ),
( "warn-unrecognised-pragmas", Opt_WarnUnrecognisedPragmas, const Supported ), ( "warn-unrecognised-pragmas", Opt_WarnUnrecognisedPragmas, const Supported ),
( "warn-lazy-unlifted-bindings", Opt_WarnLazyUnliftedBindings,
const $ Deprecated "lazy unlifted bindings will be an error in GHC 6.14, and this flag will no longer exist"),
( "print-explicit-foralls", Opt_PrintExplicitForalls, const Supported ), ( "print-explicit-foralls", Opt_PrintExplicitForalls, const Supported ),
( "strictness", Opt_Strictness, const Supported ), ( "strictness", Opt_Strictness, const Supported ),
( "static-argument-transformation", Opt_StaticArgumentTransformation, const Supported ), ( "static-argument-transformation", Opt_StaticArgumentTransformation, const Supported ),
......
...@@ -478,7 +478,8 @@ checkStrictBinds top_lvl rec_group mbind mono_tys infos ...@@ -478,7 +478,8 @@ checkStrictBinds top_lvl rec_group mbind mono_tys infos
-- This should be a checkTc, not a warnTc, but as of GHC 6.11 -- This should be a checkTc, not a warnTc, but as of GHC 6.11
-- the versions of alex and happy available have non-conforming -- the versions of alex and happy available have non-conforming
-- templates, so the GHC build fails if it's an error: -- templates, so the GHC build fails if it's an error:
; warnTc (not bang_pat) ; warnUnlifted <- doptM Opt_WarnLazyUnliftedBindings
; warnTc (warnUnlifted && not bang_pat)
(unliftedMustBeBang mbind) (unliftedMustBeBang mbind)
; mapM_ check_sig infos ; mapM_ check_sig infos
; return True } ; return True }
...@@ -495,6 +496,7 @@ unliftedMustBeBang :: LHsBindsLR Var Var -> SDoc ...@@ -495,6 +496,7 @@ unliftedMustBeBang :: LHsBindsLR Var Var -> SDoc
unliftedMustBeBang mbind unliftedMustBeBang mbind
= hang (text "Bindings containing unlifted types must use an outermost bang pattern:") = hang (text "Bindings containing unlifted types must use an outermost bang pattern:")
4 (pprLHsBinds mbind) 4 (pprLHsBinds mbind)
$$ text "*** This will be an error in GHC 6.14! Fix your code now!"
strictBindErr :: String -> Bool -> LHsBindsLR Var Var -> SDoc strictBindErr :: String -> Bool -> LHsBindsLR Var Var -> SDoc
strictBindErr flavour unlifted mbind strictBindErr flavour unlifted mbind
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment