
#14253: Pattern match checker mistakenly concludes pattern match on pattern synonym is unreachable -------------------------------------+------------------------------------- Reporter: bgamari | Owner: (none) Type: bug | Status: new Priority: high | Milestone: 8.4.1 Component: Compiler | Version: 8.2.1 Resolution: | Keywords: | PatternSynonyms, | PatternMatchWarnings Operating System: Unknown/Multiple | Architecture: Type of failure: GHC rejects | Unknown/Multiple valid program | Test Case: Blocked By: | Blocking: Related Tickets: | Differential Rev(s): Wiki Page: | -------------------------------------+------------------------------------- Changes (by RyanGlScott): * cc: RyanGlScott (added) * keywords: => PatternSynonyms, PatternMatchWarnings Comment: Here is a much simpler way to trigger the issue: {{{#!hs {-# LANGUAGE PatternSynonyms #-} module Test where data T = MkT1 | MkT2 pattern MkT2' = MkT2 {-# COMPLETE MkT1 #-} newtype S = MkS T u :: S -> Bool u (MkS MkT2') = True u _ = False }}} The fact that `MkT2'` occurs inside of another constructor `MkS` seems to be important, since changing `u` to be of type `T -> Bool` and matching directly on `MkT2'` in the first case resolves the issue. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/14253#comment:2 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler