Limit duplicate export warnings for datatypes
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:
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
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.
Trac metadata
Trac field | Value |
---|---|
Version | 7.10.3 |
Type | FeatureRequest |
TypeOfFailure | OtherFailure |
Priority | normal |
Resolution | Unresolved |
Component | Compiler |
Test case | |
Differential revisions | |
BlockedBy | |
Related | |
Blocking | |
CC | |
Operating system | |
Architecture |