Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
obsidiansystems
GHC
Commits
3174beb6
Commit
3174beb6
authored
Oct 14, 2016
by
Simon Peyton Jones
Browse files
Comments about -Wredundant-constraints
parent
afdde48b
Changes
2
Hide whitespace changes
Inline
Side-by-side
compiler/typecheck/TcErrors.hs
View file @
3174beb6
...
...
@@ -367,6 +367,7 @@ reportImplic ctxt implic@(Implic { ic_skols = tvs, ic_given = given
_
->
[]
warnRedundantConstraints
::
ReportErrCtxt
->
TcLclEnv
->
SkolemInfo
->
[
EvVar
]
->
TcM
()
-- See Note [Tracking redundant constraints] in TcSimplify
warnRedundantConstraints
ctxt
env
info
ev_vars
|
null
redundant_evs
=
return
()
...
...
compiler/typecheck/TcSimplify.hs
View file @
3174beb6
...
...
@@ -1511,13 +1511,23 @@ works:
----- Shortcomings
Consider (see Trac #9939)
f2 :: (Eq a, Ord a) => a -> a -> Bool
-- Ord a redundant, but Eq a is reported
f2 x y = (x == y)
We report (Eq a) as redundant, whereas actually (Ord a) is. But it's
really not easy to detect that!
After I introduced -Wredundant-constraints there was extensive discussion
about cases where it reported a redundant constraint but the programmer
really wanted it. See
* #11370 (removed it from -Wdefault)
* #10635 (removed it from -Wall as well)
* #12142
* #11474, #10100 (class not used, but its fundeps are)
* #11099 (redundant, but still desired)
* #10183 (constraint necessary to exclude omitted case)
* #9939: f2 :: (Eq a, Ord a) => a -> a -> Bool
-- Ord a redundant, but Eq a is reported
f2 x y = (x == y)
We report (Eq a) as redundant, whereas actually (Ord a) is.
But it's really not easy to detect that!
Note [Cutting off simpl_loop]
...
...
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