undefined in view pattern inside pattern synonym causes GHC to panic
The following:
{-# LANGUAGE PatternSynonyms, ViewPatterns #-}
pattern P :: a -> b
pattern P a <- (undefined -> a)
causes GHC HEAD and 8.0.1 to panic:
ghc: panic! (the 'impossible' happened)
(GHC version 8.1.20160813 for x86_64-unknown-linux):
StgCmmEnv: variable not found
Removing the pattern signature or moving undefined
behind another name work however:
{-# LANGUAGE PatternSynonyms, ViewPatterns #-}
bottom :: a
bottom = undefined
pattern P :: a -> b
pattern P a <- (bottom -> a) -- OK!
-- No type signature
pattern P' a <- (undefined -> a) -- OK!
Trac metadata
Trac field | Value |
---|---|
Version | 8.1 |
Type | Bug |
TypeOfFailure | OtherFailure |
Priority | normal |
Resolution | Unresolved |
Component | Compiler |
Test case | |
Differential revisions | |
BlockedBy | |
Related | |
Blocking | |
CC | |
Operating system | |
Architecture |