[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