[GHC] #12389: Limit duplicate export warnings for datatypes

GHC ghc-devs at haskell.org
Wed Jul 13 20:45:12 UTC 2016


#12389: Limit duplicate export warnings for datatypes
-------------------------------------+-------------------------------------
           Reporter:  dfeuer         |             Owner:
               Type:  feature        |            Status:  new
  request                            |
           Priority:  normal         |         Milestone:  8.2.1
          Component:  Compiler       |           Version:  7.10.3
           Keywords:                 |  Operating System:  Unknown/Multiple
       Architecture:                 |   Type of failure:  Incorrect
  Unknown/Multiple                   |  warning at compile-time
          Test Case:                 |        Blocked By:
           Blocking:                 |   Related Tickets:  #11959
Differential Rev(s):                 |         Wiki Page:
-------------------------------------+-------------------------------------
 `containers` sometimes exports data constructors/patterns conditionally
 (depending on GHC version and whether `TESTING` is defined). Presently, to
 avoid a duplicate export warning, it's necessary to write a separate
 export line for each combination of exported constructors, which is
 horrible:

 {{{#!hs
 module Foo (
 #ifdef TESTING
 #ifdef USE_PATTERN_SYNONYMS
   Foo (Foo, Pat1, Pat2)
 #else
   Foo (Foo)
 #endif
 #elif USE_PATTERN_SYNONYMS
   Foo (Pat1, Pat2)
 #else
   Foo
 #endif
 }}}

 or to break up the lines with CPP, which is so horrible I can't even bring
 myself to write it.

 I'd much rather be able to write

 {{{#!hs
 module Foo (
    Foo
 #ifdef TESTING
   ,Foo(Foo)
 #endif
 #ifdef USE_PATTERN_SYNONYMS
   ,Foo(Pat1, Pat2)
 #endif
   )
 }}}

 The trouble here is that GHC warns about duplicate export of the type
 `Foo`. I think there's a pretty simple partial solution: only warn about a
 type export that is *completely* redundant, adding neither type
 constructor nor pattern. And offer a way to turn off the redundant export
 warning entirely for types and classes without turning it off for
 bindings.

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


More information about the ghc-tickets mailing list