
#15305: Erroneous "non-exhaustive pattern match" using nested GADT with strictness annotation -------------------------------------+------------------------------------- Reporter: jkoppel | Owner: (none) Type: bug | Status: new Priority: normal | Milestone: 8.6.1 Component: Compiler (Type | Version: 8.4.3 checker) | Keywords: Resolution: | 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 goldfire): If this were fixed, then I believe that GHC could usefully use empty types as many of its "Trees That Grow" extension fields, make the extensions strict, and then remove many tiresome panics in redundant patterns. For example (simplified): {{{#!hs data HsImplicitBndrs pass = UsefulConstructor ... | XHsImplicitBndrs !(XXHsImplicitBndrs pass) type instance XXHsImplicitBndrs (GhcPass _) = Void }}} Note the bang. Currently, if we did this, we would ''still'' need to match against `XHsImplicitBndrs` every time. But with this patch fixed, we could avoid doing so. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/15305#comment:4 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler