[GHC] #14828: panic! when using :print on some functions with class constraints?

GHC ghc-devs at haskell.org
Tue Feb 20 02:07:34 UTC 2018


#14828: panic! when using :print on some functions with class constraints?
-------------------------------------+-------------------------------------
           Reporter:  jol            |             Owner:  (none)
               Type:  bug            |            Status:  new
           Priority:  normal         |         Milestone:
          Component:  GHCi           |           Version:  8.2.2
           Keywords:                 |  Operating System:  Linux
       Architecture:  x86_64         |   Type of failure:  Compile-time
  (amd64)                            |  crash or panic
          Test Case:                 |        Blocked By:
           Blocking:                 |   Related Tickets:
Differential Rev(s):                 |         Wiki Page:
-------------------------------------+-------------------------------------
 These are the problematic ones I've found:

 {{{
 > :t foldl
 foldl :: Foldable t => (b -> a -> b) -> b -> t a -> b
 > :print foldl
 ghc: panic! (the 'impossible' happened)
   (GHC version 8.2.2 for x86_64-unknown-linux):
         isUnliftedType
   t1_a1H7[rt] :: TYPE t_a1H6[rt]
   Call stack:
       CallStack (from HasCallStack):
         prettyCurrentCallStack, called at
 compiler/utils/Outputable.hs:1133:58 in ghc:Outputable
         callStackDoc, called at compiler/utils/Outputable.hs:1137:37 in
 ghc:Outputable
         pprPanic, called at compiler/types/Type.hs:1952:10 in ghc:Type

 Please report this as a GHC bug:  http://www.haskell.org/ghc/reportabug
 > :t fmap
 fmap :: Functor f => (a -> b) -> f a -> f b
 > :print fmap
 ghc: panic! (the 'impossible' happened)
   (GHC version 8.2.2 for x86_64-unknown-linux):
         isUnliftedType
   t1_a1Hu[rt] :: TYPE t_a1Ht[rt]
   Call stack:
       CallStack (from HasCallStack):
         prettyCurrentCallStack, called at
 compiler/utils/Outputable.hs:1133:58 in ghc:Outputable
         callStackDoc, called at compiler/utils/Outputable.hs:1137:37 in
 ghc:Outputable
         pprPanic, called at compiler/types/Type.hs:1952:10 in ghc:Type

 Please report this as a GHC bug:  http://www.haskell.org/ghc/reportabug

 > :t return
 return :: Monad m => a -> m a
 > :print return
 ghc: panic! (the 'impossible' happened)
   (GHC version 8.2.2 for x86_64-unknown-linux):
         isUnliftedType
   t1_a1Wt[rt] :: TYPE t_a1Ws[rt]
   Call stack:
       CallStack (from HasCallStack):
         prettyCurrentCallStack, called at
 compiler/utils/Outputable.hs:1133:58 in ghc:Outputable
         callStackDoc, called at compiler/utils/Outputable.hs:1137:37 in
 ghc:Outputable
         pprPanic, called at compiler/types/Type.hs:1952:10 in ghc:Type

 Please report this as a GHC bug:  http://www.haskell.org/ghc/reportabug

 > :t pure
 pure :: Applicative f => a -> f a
 > :print pure
 ghc: panic! (the 'impossible' happened)
   (GHC version 8.2.2 for x86_64-unknown-linux):
         isUnliftedType
   t1_a1WP[rt] :: TYPE t_a1WO[rt]
   Call stack:
       CallStack (from HasCallStack):
         prettyCurrentCallStack, called at
 compiler/utils/Outputable.hs:1133:58 in ghc:Outputable
         callStackDoc, called at compiler/utils/Outputable.hs:1137:37 in
 ghc:Outputable
         pprPanic, called at compiler/types/Type.hs:1952:10 in ghc:Type

 Please report this as a GHC bug:  http://www.haskell.org/ghc/reportabug

 }}}

 These that don't have constraints are fine:

 {{{
 > :print id
 id = (_t1::a -> a)
 > :print map
 map = (_t2::(a1 -> b) -> [a1] -> [b])
 > :print const
 const = (_t3::a2 -> b1 -> a2)
 }}}

 This value and function created in the session are fine:

 {{{
 > let x :: Monad m => m (); x = return ()
 Prelude|
 > :p x
 x = (_t5::Monad m1 => m1 ())
 > let f :: Monad m => Int -> m Int; f n = return (n + 1)
 Prelude|
 > :p f
 f = (_t6::Monad m2 => Int -> m2 Int)
 }}}

 mempty and mappend imported from Data.Monoid are fine:

 {{{
 > :m + Data.Monoid
 > :p mempty
 mempty = (_t7::Monoid a4 => a4)
 > :p mappend
 mappend = (_t8::Monoid a4 => a4 -> a4 -> a4)
 }}}

 foldl' and foldr imported from Data.List are not fine:

 {{{
 > :m + Data.List
 > :p foldl'
 ghc: panic! (the 'impossible' happened)
   (GHC version 8.2.2 for x86_64-unknown-linux):
         isUnliftedType
   t1_a6Qy[rt] :: TYPE t_a6Qx[rt]
   Call stack:
       CallStack (from HasCallStack):
         prettyCurrentCallStack, called at
 compiler/utils/Outputable.hs:1133:58 in ghc:Outputable
         callStackDoc, called at compiler/utils/Outputable.hs:1137:37 in
 ghc:Outputable
         pprPanic, called at compiler/types/Type.hs:1952:10 in ghc:Type

 Please report this as a GHC bug:  http://www.haskell.org/ghc/reportabug

 > :p Data.List.foldr
 ghc: panic! (the 'impossible' happened)
   (GHC version 8.2.2 for x86_64-unknown-linux):
         isUnliftedType
   t2_a6RG[rt] :: TYPE t1_a6RF[rt]
   Call stack:
       CallStack (from HasCallStack):
         prettyCurrentCallStack, called at
 compiler/utils/Outputable.hs:1133:58 in ghc:Outputable
         callStackDoc, called at compiler/utils/Outputable.hs:1137:37 in
 ghc:Outputable
         pprPanic, called at compiler/types/Type.hs:1952:10 in ghc:Type

 Please report this as a GHC bug:  http://www.haskell.org/ghc/reportabug

 }}}

 but `all` and `init` from that same module are fine:

 {{{
 > :p Data.List.all
 all = (_t13::Foldable t1 => (a22 -> Bool) -> t1 a22 -> Bool)
 > :p Data.List.init
 init = (_t14::[a29] -> [a29])
 }}}

 So, in a given module, among functions with class constraints, some have
 the error and others don't. I haven't found a value that's not a function
 with the error, and I haven't found a function with no class constraints
 exhibit the error.

-- 
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/14828>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler


More information about the ghc-tickets mailing list