Re: [GHC] #5682: Properly parse promoted data constructor operators

#5682: Properly parse promoted data constructor operators -------------------------------------+------------------------------------- Reporter: lunaris | Owner: Type: bug | Status: new Priority: normal | Milestone: 7.8.1 Component: Compiler | Version: 7.8.1-rc1 (Parser) | Keywords: PolyKinds, ghc- Resolution: | kinds Operating System: Unknown/Multiple | Architecture: Unknown/Multiple Type of failure: GHC rejects | Difficulty: Unknown valid program | Blocked By: Test Case: | Related Tickets: #8486 parser/should_compile/T5682 | Blocking: | -------------------------------------+------------------------------------- Changes (by guest): * status: closed => new * resolution: fixed => Comment: Promoted tuple constructors (e.g. `'(,,)`) still don't parse. This patch to `compiler/parser/Parser.y.pp` fixes it. With this patch, `'` can be used with any `qcon` so the redundant rules have been removed. Using an un-promotable data constructor will give a meaningful error message such as `Data constructor ‛(##)’ comes from an un-promotable type ‛(##)’` instead of a parse error. `'(' varop ')'` was changed to `var` because `'id` is more consistent than {{{'(`id`)}}} and `btype SIMPLEQUOTE varop type` (in `type` and `typedoc`) allows backquoted identifiers as operators. {{{ 1154,1155c1154 < | SIMPLEQUOTE qconid { LL $ HsTyVar $ unLoc $2 } < | SIMPLEQUOTE '(' ')' { LL $ HsTyVar $ getRdrName unitDataCon } ---
| SIMPLEQUOTE qcon { LL $ HsTyVar $
unLoc $2 } 1158,1159c1157 < | SIMPLEQUOTE '(' qconop ')' { LL $ HsTyVar (unLoc $3) } < | SIMPLEQUOTE '(' varop ')' { LL $ HsTyVar (unLoc $3) } ---
| SIMPLEQUOTE var { LL $ HsTyVar $
unLoc $2 } }}} -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/5682#comment:16 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler
participants (1)
-
GHC