"opt_univ fell into a hole"

Conal Elliott conal at conal.net
Sat Apr 2 19:23:38 UTC 2016

I'm getting the following error message from a GHC plugin I'm developing
(note GHC version):

    ghc-stage2: panic! (the 'impossible' happened)
      (GHC version 8.1.20160307 for x86_64-apple-darwin):
            opt_univ fell into a hole {aD1S}

I don't get this error when compiling without my plugin, so I may well be
violating a compiler invariant.

Shortly before the error, the plugin produced the following dictionary
expression, which does indeed contain a `UnivCo` with a `HoleProv`. The
plugin does sometimes generate `UnivCo`s but not with `HoleProv`.

    let {
      $dHasRep_aD1T :: HasRep (Vec 'Z s_aD1R[fuv:0])
      $dHasRep_aD1T = $fHasRepVec0 @ s_aD1R[fuv:0] } in
    let {
      $dHasRepZLVeczqZZZLKeyhZRZR_Ii5CR :: HasRep (Vec 'Z (Key h_aCnh))
      $dHasRepZLVeczqZZZLKeyhZRZR_Ii5CR =
        `cast` ((HasRep
                      (Sym U(hole:{aD1S}, Key h_aCnh,
                :: HasRep (Vec 'Z s_aD1R[fuv:0])
                   ~R# HasRep (Vec 'Z (Key h_aCnh))) } in

Here, `Key` is a type family from `Data.Key` in the keys package, and `Vec`
is a GADT of statically length-indexed lists.


Thanks, - Conal
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/ghc-devs/attachments/20160402/bcef91f8/attachment.html>

More information about the ghc-devs mailing list