[GHC] #12942: Add infix flag for class and data declarations

GHC ghc-devs at haskell.org
Wed Dec 7 20:36:00 UTC 2016


#12942: Add infix flag for class and data declarations
-------------------------------------+-------------------------------------
           Reporter:  alanz          |             Owner:  alanz
               Type:  task           |            Status:  new
           Priority:  normal         |         Milestone:  8.2.1
          Component:  Compiler       |           Version:  8.0.1
           Keywords:                 |  Operating System:  Unknown/Multiple
       Architecture:                 |   Type of failure:  None/Unknown
  Unknown/Multiple                   |
          Test Case:                 |        Blocked By:
           Blocking:                 |   Related Tickets:  #3384
Differential Rev(s):                 |         Wiki Page:
-------------------------------------+-------------------------------------
 At the moment, data and type declarations using infix formatting produce
 the same AST as those using prefix.

 So

 {{{#!hs
 type a ++ b = c
 }}}

 and

 {{{#!hs
 type (++) a b = c
 }}}

 cannot be distinguished in the parsed source, without looking at the
 `OccName` details of the constructor being defined.

 Having access to the `OccName` requires an additional constraint which
 explodes out over the entire AST because of its recursive definitions.

 In keeping with moving the parsed source to more directly reflect the
 source code as parsed, add a specific flag to the declaration to indicate
 the fixity, as used in a `Match` now too.

 Note: this flag is to capture the fixity used for the lexical definition
 of the type, primarily for use by `ppr` and `ghc-exactprint`.

--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/12942>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler


More information about the ghc-tickets mailing list