[GHC] #15450: Inconsistency w.r.t. coverage checking warnings for EmptyCase under unsatisfiable constraints
GHC
ghc-devs at haskell.org
Mon Jul 30 08:28:50 UTC 2018
#15450: Inconsistency w.r.t. coverage checking warnings for EmptyCase under
unsatisfiable constraints
-------------------------------------+-------------------------------------
Reporter: RyanGlScott | Owner: (none)
Type: bug | Status: patch
Priority: normal | Milestone: 8.6.1
Component: Compiler | Version: 8.4.3
Resolution: | Keywords:
| PatternMatchWarnings
Operating System: Unknown/Multiple | Architecture:
Type of failure: Poor/confusing | Unknown/Multiple
error message | Test Case:
Blocked By: | Blocking:
Related Tickets: #12957 | Differential Rev(s): Phab:D5017
Wiki Page: |
-------------------------------------+-------------------------------------
Comment (by simonpj):
(Commenting here because my reflections concern the specification, not the
coding.)
The patch says
{{{
We decide to better than this. When beginning coverage checking, we first
check if the constraints in scope are unsatisfiable, and if so, we start
afresh with an empty set of constraints. This way, we'll get the warnings
we expect.
}}}
That seems quite odd behaviour! The door closes gradually, but when it
becomes shut we slam it open again??
What about simpler cases
{{{
data T a where
T1 :: T Int
T2 :: T a
f :: T Bool -> Int
f T1 = ....(case x of { True -> False })...
f T2 = ...
}}}
The entire RHS of the first equation is unreachable. Should we not just
stop reporting errors from that branch altogether? If the door wasn't
shut (say we had learned something about `x`, but nothing contradictory)
then the inner case might be fine. The more we learn about `x` the fewer
alternatives we may need in that inner case.
When the door shuts altogether we need no branches in the inner case, so
perhaps reporting a redundant match is correct. Or perhaps we just want
to shut up once we find a contradiction, and let the user fix that first.
But discarding all the constraints seems ... unexpected.
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/15450#comment:2>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list