[GHC] #11253: Duplicate warnings for pattern guards and relevant features (e.g. View Patterns)
GHC
ghc-devs at haskell.org
Fri Dec 18 14:20:07 UTC 2015
#11253: Duplicate warnings for pattern guards and relevant features (e.g. View
Patterns)
-------------------------------------+-------------------------------------
Reporter: gkaracha | Owner: gkaracha
Type: bug | Status: new
Priority: normal | Milestone:
Component: Compiler | Version: 7.11
Resolution: | Keywords: pattern
| matching, exhaustiveness
Operating System: Unknown/Multiple | Architecture:
Type of failure: Incorrect | Unknown/Multiple
warning at compile-time | Test Case:
Blocked By: | Blocking:
Related Tickets: #595 | Differential Rev(s):
Wiki Page: |
PatternMatchCheck, |
PatternMatchCheckImplementation |
-------------------------------------+-------------------------------------
Description changed by gkaracha:
Old description:
> There are some cases where the new exhaustiveness checker emits duplicate
> warnings. E.g. for `f`:
> {{{#!hs
> f :: Bool -> Bool -> ()
> f (not -> True) (not -> False) = ()
> }}}
> we get:
> {{{
> DuplicateWarn.hs:6:1: warning:
> Pattern match(es) are non-exhaustive
> In an equation for ‘f’:
> Patterns not matched:
> _ _ -- represents (not -> False) _
> _ _ -- represents (not -> True) (not -> True)
> }}}
> As indicated in the comments, the two comments represent different
> missing cases, but since we do not print the additional information,
> they look alike. It would be better to either:
> * Give additional information to the user to distinguish between the
> two or
> * Print a single warning `(_ _)`
>
> I cannot think of a nice solution to this yet but I will keep thinking
> about it.
New description:
There are some cases where the new exhaustiveness checker emits duplicate
warnings. E.g. for `f`:
{{{#!hs
f :: Bool -> Bool -> ()
f (not -> True) (not -> False) = ()
}}}
we get:
{{{
DuplicateWarn.hs:6:1: warning:
Pattern match(es) are non-exhaustive
In an equation for ‘f’:
Patterns not matched:
_ _ -- represents (not -> False) _
_ _ -- represents (not -> True) (not -> True)
}}}
As indicated in the comments, the two warnings represent different
missing cases, but since we do not print the additional information,
they look alike. It would be better to either:
* Give additional information to the user to distinguish between the two
or
* Print a single warning `(_ _)`
I cannot think of a nice solution to this yet but I will keep thinking
about it.
--
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/11253#comment:1>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list