
Ah -- so the meta-tyvars aren't making it to the real `TyCon`, only the `TcTyCon`? It's quite normal for `TcTyCon`s to have meta-tyvars. (Indeed,
#11648: assertPprPanic, called at compiler/types/TyCoRep.hs:1932 -------------------------------------+------------------------------------- Reporter: thomie | Owner: goldfire Type: bug | Status: new Priority: highest | Milestone: 8.0.1 Component: Compiler | Version: 8.1 Resolution: | Keywords: TypeInType 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 simonpj): that's what they're for.) Yes if they are a bare meta-tyvar, but not if they are full polymorphic kind gotten from a CUSK. The whole point about being "complete" is that the signature is fully defined. We experimented with partially-defined signatures and backed off. Complete means complete, and that means no lurking unification variables.
But I'm missing some context. The ASSERT that's breaking is the check during substitutions. But which substitution? I don't see an obvious substitution in `getFamDeclInitialKind`.
It happens during the immediately following `tc_lhs_type`; at an occurrence of `MComp` we find that it has a polymorphic kind and try to instantiate that kind. The instantiation fails with this error. (But it's just a canary in the mine; the real problem is that unification variable lurking in an allegedly-complete signature. So yes, (2) is the issue at hand. To go back to your example: {{{ data T (a :: Proxy k) }}} If we are to treat this as a CUSK (and I think we should) we must fix (at that very moment) the kind of `k`. Fixing it to `*` is fine, although its a kind-of-arbitrary choice. But fix it we must. I think the place may be in `kcHsTyVarBndrs`, which I do not fully understand. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/11648#comment:15 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler