
#10188: prefix type-level cons can't be parsed -------------------------------------+------------------------------------- Reporter: Kinokkory | Owner: Kinokkory Type: bug | Status: patch Priority: normal | Milestone: 7.12.1 Component: Compiler | Version: 7.8.4 (Parser) | Keywords: Resolution: | Architecture: Operating System: Unknown/Multiple | Unknown/Multiple Type of failure: GHC rejects | Test Case: valid program | Blocking: Blocked By: | Differential Revisions: Phab:D768 Related Tickets: #10189 | -------------------------------------+------------------------------------- Comment (by Kinokkory): This patch makes `(:) Int [Float, Double]` and `Int : [Float, Double]` parsed. In fact, infix type-level cons also used to be not parsed without `'`. Essentially, I changed the definition of `tyconsym` by adding `| ':' ...`. {{{ tyconsym :: { Located RdrName } : CONSYM { sL1 $1 $! mkUnqual tcClsName (getCONSYM $1) } | VARSYM { sL1 $1 $! mkUnqual tcClsName (getVARSYM $1) } | ':' { sL1 $1 $! consDataCon_RDR } | '*' { sL1 $1 $! mkUnqual tcClsName (fsLit "*") } | '-' { sL1 $1 $! mkUnqual tcClsName (fsLit "-") } }}} By the way I wonder what `| '*' ...` and `| '-' ...` are for. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/10188#comment:9 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler