Type operators in existential context cannot be parsed
{-# LANGUAGE TypeOperators, MultiParamTypeClasses, ExistentialQuantification #-}
class a + b
data D1 = forall a b. (a + b) => D1 a b
data D2 = forall a b. a + b => D2 a b
The declaration D1 is accepted, while D2 is rejected. There is no reason to reject D2 except for shortcomings of the current grammar.
Trac metadata
| Trac field | Value |
|---|---|
| Version | 8.4.3 |
| Type | Bug |
| TypeOfFailure | OtherFailure |
| Priority | normal |
| Resolution | Unresolved |
| Component | Compiler (Parser) |
| Test case | |
| Differential revisions | |
| BlockedBy | |
| Related | |
| Blocking | |
| CC | |
| Operating system | |
| Architecture |