[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