[GHC] #13055: Adding INLINABLE pragma causes GHC panic

GHC ghc-devs at haskell.org
Mon Jan 2 16:46:00 UTC 2017


#13055: Adding INLINABLE pragma causes GHC panic
-------------------------------------+-------------------------------------
        Reporter:  mpickering        |                Owner:
            Type:  bug               |               Status:  new
        Priority:  high              |            Milestone:
       Component:  Compiler          |              Version:  8.0.1
      Resolution:                    |             Keywords:
Operating System:  Unknown/Multiple  |         Architecture:
                                     |  Unknown/Multiple
 Type of failure:  None/Unknown      |            Test Case:
      Blocked By:                    |             Blocking:
 Related Tickets:                    |  Differential Rev(s):
       Wiki Page:                    |
-------------------------------------+-------------------------------------

Comment (by rwbarton):

 The panic. I don't know what you mean with `idInfo`. It was trying to
 build `libraries/transformers/dist-
 install/build/Control/Applicative/Backwards.o`.
 {{{
 ghc-stage1: panic! (the 'impossible' happened)
   (GHC version 8.1.20170102 for x86_64-unknown-linux):
         Iface Lint failure
   In interface for GHC.Base
   Unfolding of <**>
     <no location info>: warning:
         In the expression: $ @ a @ b
         Kinds don't match in type application:
         Type variable: r_1i :: RuntimeRep
         Arg type: a :: *
         xx *
     <no location info>: warning:
         In the expression: flip @ (a -> b) @ a @ b ($ @ a @ b)
         Argument value doesn't match argument type:
         Fun type: ((a -> b) -> a -> b) -> a -> (a -> b) -> b
         Arg type: forall (b :: TYPE a). (b -> b) -> b -> b
         Arg: $ @ a @ b
   <**> = \ (@ (f_a6mX :: * -> *))
            (@ a_a6mY)
            (@ b_a6mZ)
            ($dApplicative_a6n0 :: Applicative f) ->
            liftA2
              @ f
              @ a
              @ (a -> b)
              @ b
              $dApplicative_a6n0
              (flip @ (a -> b) @ a @ b ($ @ a @ b))
   Iface expr = \ @ f :: * -> *
                  @ a
                  @ b
                  ($dApplicative :: Applicative f) ->
                liftA2
                  @ f
                  @ a
                  @ (a -> b)
                  @ b
                  $dApplicative
 (flip @ (a -> b) @ a @ b ($ @ a @ b))
 }}}
 I'm not sure where `$ @ a @ b` came from but it seems to be treating `a`
 as the kind/representation argument when clearly it was intended to be the
 `a` in `(a -> b) -> a -> b`.

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


More information about the ghc-tickets mailing list