[GHC] #12549: Panic on ":t datatypeName"
GHC
ghc-devs at haskell.org
Thu Nov 17 22:58:47 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 goldfire):
Your analysis is spot on. Thank you!
The problem is (as you may have suspected) that comment on
`newMetaTyVars`. It's just plain wrong.
The problem is that we must always obey '''The substitution invariant'''
from the eponymous Note in !TyCoRep:
{{{
When calling (substTy subst ty) it should be the case that
the in-scope set in the substitution is a superset of both:
* The free vars of the range of the substitution
* The free vars of ty minus the domain of the substitution
}}}
`new_meta_tv_x` takes care to make sure, as it's building the
substitution, that the first point is obeyed. But no one is handling the
second point!j
Perhaps it was envisioned that `nwMetaTyVars` would be called only on a
'''closed''' sequence of tyvars. But the function doesn't say that, and
evidently it's not true. (I doubt it ever was!) So it seems the answer is
to add an `InScopeSet` parameter to `newMetaTyVars` that should contain
the free variables of the type being instantiated.
Does that help?
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/12549#comment:17>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list