[GHC] #12549: Panic on ":t datatypeName"

GHC ghc-devs at haskell.org
Mon Nov 21 16:48:58 UTC 2016


#12549: Panic on ":t datatypeName"
---------------------------------+--------------------------------------
        Reporter:  johnleo       |                Owner:  johnleo
            Type:  bug           |               Status:  new
        Priority:  normal        |            Milestone:
       Component:  Compiler      |              Version:  8.1
      Resolution:                |             Keywords:
Operating System:  MacOS X       |         Architecture:  x86_64 (amd64)
 Type of failure:  None/Unknown  |            Test Case:
      Blocked By:                |             Blocking:
 Related Tickets:                |  Differential Rev(s):
       Wiki Page:                |
---------------------------------+--------------------------------------

Comment (by simonpj):

 Right you are.  Here's what to do:

 * Make `deeply_instantiate` take a substitution that it extends:
 {{{
 deeply_instantiate :: CtOrigin
                    -> TCvSubst   -- new!
                    -> TcSigmaType -> TcM (HsWrapper, TcRhoType)
 }}}
   Its semantics are:
 {{{
 deeply_instantiate subst ty = deeplyInstantiate (substTy subst ty)
 }}}

 * Define `deeplyInstantiate` (externally called) initialise the
 substitution with a suitable in-scope set, like this:
 {{{
 deeplyInstantiate ty = deeply_instantiate (mkEmptyTcSubst (tyCoVarsOfType
 ty)) ty
 }}}

 * The impl of `deeply_instantiate` is just as `deeplyInstantiate` today,
 except:
   * Use `newMetaTyVarsX` to extend the substitution
   * The unchecked-ness can go away
   * The recursive call is to `deeply_instantiate`, and does not substitute
 in `rho`.

 Make sense?

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


More information about the ghc-tickets mailing list