[GHC] #13738: TypeApplications-related GHC internal error
GHC
ghc-devs at haskell.org
Wed Aug 23 20:17:27 UTC 2017
#13738: TypeApplications-related GHC internal error
-------------------------------------+-------------------------------------
Reporter: RyanGlScott | Owner: RyanGlScott
Type: bug | Status: patch
Priority: normal | Milestone:
Component: Compiler | Version: 8.0.1
Resolution: | Keywords:
| TypeApplications
Operating System: Unknown/Multiple | Architecture:
Type of failure: Compile-time | Unknown/Multiple
crash or panic | Test Case:
Blocked By: | Blocking:
Related Tickets: #13985 | Differential Rev(s):
Wiki Page: |
-------------------------------------+-------------------------------------
Comment (by RyanGlScott):
Ugh. Trying to change anything involving `bindLHsTyVarBndr` is proving to
be a massive headache. There are numerous complications here that I'm not
sure how to deal with:
* Using `rnImplicitBinders` simply won't work in `bindHsQTyVars`.
`rnImplicitBinders` expects an `LHsType GhcPs` as an argument, which
`bindHsQTyVars` doesn't have.
* Even if we did somehow pass an `LHsType GhcPs` to `rnImplicitBndrs` from
`bindHsQTyVars`, I'm not convinced it would do the right thing. The
problem: the `kv_bndrs` from `bindHsQTyVars` need to be bound using
`newTyVarNameRn mb_assoc` (since the `kv_bndrs` might be from an
associated class), but `rnImplicitBndrs` does nothing of the sort.
* `bindLHsTyVarBndr` performs a validity check
([http://git.haskell.org/ghc.git/blob/7463a95dbe53d789f8f245f26735a7ac74bb6e11:/compiler/rename/RnTypes.hs#l974
here]) to ensure that a list of tyvar binders is well scoped (i.e., reject
something like `forall (a :: k) k.`). But we can only perform this check
because `bindLHsTyVarBndrs` keeps track of the kind variables that are
implicitly bound so far, one by one, and communicates this information to
each call to `bindLHsTyVarBndr` so that it can check if a binder is in the
set of implicitly bound kind variables. If we removed `bindLHsTyVarBndr`'s
ability to implicitly bind kind variables, I'm not sure how we'd perform
this check at all.
* Could we move this error check to `rnImplicitBndrs`? Perhaps, but then
we'd need to migrate the code which tracks one-by-one all of the
implicitly bound kind variables so far. That doesn't sound fun.
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/13738#comment:13>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list