[GHC] #11432: Cannot export operator newtype

GHC ghc-devs at haskell.org
Fri Jan 15 22:59:30 UTC 2016


#11432: Cannot export operator newtype
-------------------------------------+-------------------------------------
        Reporter:  phadej            |                Owner:
            Type:  bug               |               Status:  new
        Priority:  highest           |            Milestone:  8.0.1
       Component:  Compiler          |              Version:  8.0.1-rc1
      Resolution:                    |             Keywords:
Operating System:  Unknown/Multiple  |         Architecture:
                                     |  Unknown/Multiple
 Type of failure:  None/Unknown      |            Test Case:
      Blocked By:                    |             Blocking:
 Related Tickets:                    |  Differential Rev(s):
       Wiki Page:                    |
-------------------------------------+-------------------------------------

Comment (by skvadrik):

 Turns out I was wrong in thinking that variable/type constructors appear
 in the same context: `(..)` is only allowed after type constructors (so
 goldfire was right about parenthesis and lookahead).

 GHC grammar allows invalid syntax like `(..)` after variable constructors:
 https://ghc.haskell.org/trac/ghc/browser/ghc/compiler/parser/Parser.y#L633

 {{{
 export  :: { OrdList (LIE RdrName) }
                 : qcname_ext export_subspec  {% mkModuleImpExp $1 (snd $
 unLoc $2)
 ...
 }}}
 `qcname_ext` here can be both variable/type constructor, and
 `export_subspec` can be `(..)`. This can (and should) be fixed in grammar
 so that non-ambiguous constructs like `(-.->)(..)` in export lists are
 accepted without `type` keyword.

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


More information about the ghc-tickets mailing list