[GHC] #8556: Invalid constructor names are accepted in data declarations

GHC ghc-devs at haskell.org
Fri Nov 22 21:08:39 UTC 2013


#8556: Invalid constructor names are accepted in data declarations
------------------------------------+-------------------------------------
       Reporter:  dolio             |             Owner:
           Type:  bug               |            Status:  new
       Priority:  normal            |         Milestone:
      Component:  Compiler          |           Version:  7.6.3
       Keywords:                    |  Operating System:  Unknown/Multiple
   Architecture:  Unknown/Multiple  |   Type of failure:  None/Unknown
     Difficulty:  Unknown           |         Test Case:
     Blocked By:                    |          Blocking:
Related Tickets:                    |
------------------------------------+-------------------------------------
 Earlier today, someone was asking on #haskell why the constructor name
 {{{(^)}}} wouldn't work in GADT definitions. My response was that
 {{{(^)}}} isn't a constructor name, but much to my surprise, GHC accepts
 such names in a regular data declaration:

 {{{
 data Foo = F | (^^^^) Int Int
 }}}

 This creates a {{{Foo}}} type and value constructor {{{F}}}, but no value
 constructor {{{(^^^^)}}}. However, in 7.6.3, if DataKinds are enabled,
 both constructors appear at the type level.

 In HEAD, the same definition is accepted, with only {{{F}}} existing at
 the value level, as before. But at the type level, both {{{F}}} and
 {{{(^^^^)}}} just generate errors that {{{Foo}}} is not a promotable type.
 At that point, I think there's no question that the declaration should
 just be ruled out.

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


More information about the ghc-tickets mailing list