
#14813: EmptyCase thinks pattern match involving type family is not exhaustive, when it actually is -------------------------------------+------------------------------------- Reporter: RyanGlScott | Owner: (none) Type: bug | Status: new Priority: normal | Milestone: Component: Compiler | Version: 8.2.2 Resolution: | Keywords: | PatternMatchWarnings Operating System: Unknown/Multiple | Architecture: Type of failure: Incorrect | Unknown/Multiple error/warning at compile-time | Test Case: Blocked By: | Blocking: Related Tickets: | Differential Rev(s): Wiki Page: | -------------------------------------+------------------------------------- Comment (by RyanGlScott): Another example of this phenomenon: {{{#!hs {-# LANGUAGE EmptyCase #-} {-# LANGUAGE TypeFamilies #-} {-# OPTIONS_GHC -Wall #-} module Bug where import Data.Void type family F a type instance F Int = Void fun :: F Int -> a fun x = case x of }}} Compiling this program yields no warnings, as expected. However, if you factor out the `Int` part like so: {{{#!hs fun :: i ~ Int => F i -> a }}} Then it will yield a warning: {{{ $ /opt/ghc/8.4.3/bin/ghci Bug.hs GHCi, version 8.4.3: http://www.haskell.org/ghc/ :? for help Loaded GHCi configuration from /home/rgscott/.ghci [1 of 1] Compiling Bug ( Bug.hs, interpreted ) Bug.hs:12:9: warning: [-Wincomplete-patterns] Pattern match(es) are non-exhaustive In a case alternative: Patterns not matched: _ :: F i | 12 | fun x = case x of | ^^^^ }}} -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/14813#comment:5 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler