GHC accepts import of private data constructor if it has the same name as the type
$ cat A.hs B.hs
module A (T) where
data T = T
module B where
import A (T(T))
ghci-7.8.2
accepts module B, whereas ghci-7.6.3
and ghci-7.4.2
say:
B.hs:3:11: Module `A' does not export `T(T)'
For this bug to happen it is important, that the data constructor has the same name as the type.
I.e. if you rename the data constructor to, say, Cons
, then ghci-7.8.2
will emit the same error as earlier versions.
The bug is not dramatic, since if you try to actually use the imported data constructor then ghc will say
B.hs:20:5:
Not in scope: data constructor ‘T’
However this error message is very confusing, because it suggests that T
is not in scope although you imported it correctly.
Trac metadata
Trac field | Value |
---|---|
Version | 7.8.2 |
Type | Bug |
TypeOfFailure | OtherFailure |
Priority | normal |
Resolution | Unresolved |
Component | Compiler |
Test case | |
Differential revisions | |
BlockedBy | |
Related | |
Blocking | |
CC | |
Operating system | |
Architecture |