
#12589: GHC panic with defer-typed-holes -------------------------------------+------------------------------------- Reporter: Iceland_jack | Owner: Type: bug | Status: new Priority: normal | Milestone: Component: Compiler | Version: 8.0.1 Keywords: | Operating System: Unknown/Multiple Architecture: | Type of failure: None/Unknown Unknown/Multiple | Test Case: | Blocked By: Blocking: | Related Tickets: Differential Rev(s): | Wiki Page: -------------------------------------+------------------------------------- Does this still happen in HEAD? {{{#!hs import qualified GHC.Generics as GHC import Generics.SOP import Generics.SOP.TH import Data.Proxy gminbound' :: (Generic a, Code a ~ (xs:xss), All2 Bounded (Code a)) => a gminbound' = minBound & I & hcpure (Proxy @Bounded) & apInjs_POP & head & to }}} Fails but doesn't crash with {{{ $ ghci -ignore-dot-ghci -XTypeApplications -XTypeOperators -XDataKinds -XGADTs -XFlexibleContexts /tmp/tX96.hs GHCi, version 8.0.1: http://www.haskell.org/ghc/ :? for help [1 of 1] Compiling Main ( /tmp/tX96.hs, interpreted ) /tmp/tX96.hs:8:3: error: Variable not in scope: (&) :: t4 -> (a0 -> I a0) -> t3 /tmp/tX96.hs:9:3: error: Variable not in scope: (&) :: t3 -> t5 -> t2 /tmp/tX96.hs:10:3: error: Variable not in scope: (&) :: t2 -> (POP f1 xss0 -> [SOP f1 xss0]) -> t1 /tmp/tX96.hs:11:3: error: Variable not in scope: (&) :: t1 -> ([a1] -> a1) -> t0 /tmp/tX96.hs:12:3: error: Variable not in scope: (&) :: t0 -> (Rep a2 -> a2) -> a Failed, modules loaded: none. Prelude> }}} but crashes with `-fdefer-typed-holes` {{{ $ ghci -ignore-dot-ghci -fdefer-typed-holes -XTypeApplications -XTypeOperators -XDataKinds -XGADTs -XFlexibleContexts /tmp/tX96.hs GHCi, version 8.0.1: http://www.haskell.org/ghc/ :? for help [1 of 1] Compiling Main ( /tmp/tX96.hs, interpreted ) /tmp/tX96.hs:8:3: warning: [-Wtyped-holes] Variable not in scope: (&) :: t4 -> (a0 -> I a0) -> t3 /tmp/tX96.hs:9:3: warning: [-Wtyped-holes] Variable not in scope: (&) :: t3 -> t5 -> t2 /tmp/tX96.hs:10:3: warning: [-Wtyped-holes] Variable not in scope: (&) :: t2 -> (POP f1 xss0 -> [SOP f1 xss0]) -> t1 /tmp/tX96.hs:11:3: warning: [-Wtyped-holes] Variable not in scope: (&) :: t1 -> ([a1] -> a1) -> t0 /tmp/tX96.hs:12:3: warning: [-Wtyped-holes] Variable not in scope: (&) :: t0 -> (Rep a2 -> a2) -> a ghc: panic! (the 'impossible' happened) (GHC version 8.0.1 for x86_64-unknown-linux): opt_univ fell into a hole {aabX} Please report this as a GHC bug: http://www.haskell.org/ghc/reportabug
}}} ---- More minimal example, still requires [https://hackage.haskell.org/package /generics-sop-0.2.2.0 generics-sop]: {{{#!hs import Generics.SOP a = minBound & hcpure (Proxy @Bounded) }}} -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/12589 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler