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
230dc0b0
Commit
230dc0b0
authored
Jul 09, 2007
by
Ian Lynagh
Browse files
Add -XFlexibleContexts flag
parent
df9814b4
Changes
2
Hide whitespace changes
Inline
Side-by-side
compiler/main/DynFlags.hs
View file @
230dc0b0
...
...
@@ -184,6 +184,7 @@ data DynFlag
|
Opt_GADTs
|
Opt_RelaxedPolyRec
-- -X=RelaxedPolyRec
|
Opt_TypeSynonymInstances
|
Opt_FlexibleContexts
|
Opt_FlexibleInstances
|
Opt_MultiParamTypeClasses
|
Opt_FunctionalDependencies
...
...
@@ -1149,6 +1150,7 @@ xFlags = [
(
"ImplicitParams"
,
Opt_ImplicitParams
),
(
"ScopedTypeVariables"
,
Opt_ScopedTypeVariables
),
(
"TypeSynonymInstances"
,
Opt_TypeSynonymInstances
),
(
"FlexibleContexts"
,
Opt_FlexibleContexts
),
(
"FlexibleInstances"
,
Opt_FlexibleInstances
),
(
"MultiParamTypeClasses"
,
Opt_MultiParamTypeClasses
),
(
"FunctionalDependencies"
,
Opt_FunctionalDependencies
),
...
...
@@ -1169,6 +1171,7 @@ glasgowExtsFlags = [ Opt_GlasgowExts
,
Opt_ImplicitParams
,
Opt_ScopedTypeVariables
,
Opt_TypeSynonymInstances
,
Opt_FlexibleContexts
,
Opt_FlexibleInstances
,
Opt_MultiParamTypeClasses
,
Opt_FunctionalDependencies
...
...
compiler/typecheck/TcMType.lhs
View file @
230dc0b0
...
...
@@ -947,7 +947,7 @@ check_pred_ty dflags ctxt pred@(ClassP cls tys)
arity = classArity cls
n_tys = length tys
arity_err = arityErr "Class" class_name arity n_tys
how_to_allow = parens (ptext SLIT("Use -
fglasgow-
exts to permit this"))
how_to_allow = parens (ptext SLIT("Use -
XFlexibleCont
exts to permit this"))
check_pred_ty dflags ctxt pred@(EqPred ty1 ty2)
= do { -- Equational constraints are valid in all contexts if type
...
...
@@ -979,12 +979,12 @@ check_pred_ty dflags ctxt sty = failWithTc (badPredTyErr sty)
check_class_pred_tys dflags ctxt tys
= case ctxt of
TypeCtxt -> True -- {-# SPECIALISE instance Eq (T Int) #-} is fine
InstThetaCtxt ->
gla_
exts || undecidable_ok || all tcIsTyVarTy tys
InstThetaCtxt ->
flexible_cont
exts || undecidable_ok || all tcIsTyVarTy tys
-- Further checks on head and theta in
-- checkInstTermination
other ->
gla_
exts || all tyvar_head tys
other ->
flexible_cont
exts || all tyvar_head tys
where
gla_exts = dopt Opt_GlasgowE
xts dflags
flexible_contexts = dopt Opt_FlexibleConte
xts dflags
undecidable_ok = dopt Opt_AllowUndecidableInstances dflags
-------------------------
...
...
@@ -1058,9 +1058,8 @@ even in a scope where b is in scope.
\begin{code}
checkFreeness forall_tyvars theta
= do { gla_exts <- doptM Opt_GlasgowExts
; if gla_exts then return () -- New! Oct06
else mappM_ complain (filter is_free theta) }
= do { flexible_contexts <- doptM Opt_FlexibleContexts
; unless flexible_contexts $ mappM_ complain (filter is_free theta) }
where
is_free pred = not (isIPPred pred)
&& not (any bound_var (varSetElems (tyVarsOfPred pred)))
...
...
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