Instance declarations don't recognize named wildcards
While exploring a fix for #13324 (closed), I was blocked pretty quickly by this limitation: instance declarations don't properly recognize named wildcards. Here is an example to demonstrate:
{-# LANGUAGE NamedWildCards #-}
module Bug where
instance _x => Show (Maybe a)
Bug.hs:4:10: error:
• Illegal constraint: _x (Use ConstraintKinds to permit this)
• In the context: _x
While checking an instance declaration
In the instance declaration for ‘Show (Maybe a)’
|
4 | instance _x => Show (Maybe a)
| ^^^^^^^^^^^^^^^^^^^^
GHC doesn't recognize that _x
is just a type variable, not a named wildcard.
I believe fixing this is just a matter of changing the ASTs for instance declarations to use LHsSigWcType
instead of LHsSigType
. Patch incoming.
Trac metadata
Trac field | Value |
---|---|
Version | 8.0.1 |
Type | Bug |
TypeOfFailure | OtherFailure |
Priority | normal |
Resolution | Unresolved |
Component | Compiler (Type checker) |
Test case | |
Differential revisions | |
BlockedBy | |
Related | |
Blocking | |
CC | |
Operating system | |
Architecture |