panic: No skolem info when trying to use variable with polymorphic kind as Type/Constraint
Summary
In a quantified constraint in the context for an instance declaration, when trying to use a type variable with a polymorphic kind as either a Type
or a Constraint
, ghc will panic.
Steps to reproduce
Each of the following three instances trigger the error
{-# LANGUAGE ExplicitForAll , PolyKinds #-}
instance (forall (a :: k) . a) => Show b
instance (forall (a :: k) . Show a) => Show b
instance (forall (a :: k) . a -> a) => Show b
Error:
ghc: panic! (the 'impossible' happened)
(GHC version 9.0.0.20201227:
No skolem info:
[k_aEZ[sk:1]]
Call stack:
CallStack (from HasCallStack):
callStackDoc, called at compiler/GHC/Utils/Outputable.hs:1230:37 in ghc:GHC.Utils.Outputable
pprPanic, called at compiler/GHC/Tc/Errors.hs:2810:17 in ghc:GHC.Tc.Errors
Expected behavior
8.10 has the expected behavior: show the following type error
Bug.hs:3:29: error:
• Expected a constraint, but ‘a’ has kind ‘k’
• In the instance declaration for ‘Show b’
|
3 | instance (forall (a :: k) . a) => Show b
| ^
Bug.hs:4:34: error:
• Expected a type, but ‘a’ has kind ‘k’
• In the first argument of ‘Show’, namely ‘a’
In the instance declaration for ‘Show b’
|
4 | instance (forall (a :: k) . Show a) => Show b
| ^
Bug.hs:5:29: error:
• Expected a constraint, but ‘a -> a’ has kind ‘*’
• In the instance declaration for ‘Show b’
|
5 | instance (forall (a :: k) . a -> a) => Show b
| ^^^^^^
Failed, no modules loaded.
Environment
- GHC version used: 9.0.0.20201227
Optional:
- Operating System: Ubuntu inside WSL2 inside Windows 10
- System Architecture: x86_64