single-module recursion and import aliases
I put the following code in Foo.hs
:
module Foo where
import Prelude (Either(..))
import {-# SOURCE #-} Foo as F
not (Left x) = x
not (Right x) = F.not (Left x)
And the following code in Foo.hs-boot
:
module Foo where
import Prelude(Either)
not :: Either a a -> a
I get the following error when trying to compile:
% ghc -c Foo.hs-boot
% ghc -c Foo.hs
Foo.hs:5:17: Not in scope: ‘F.not’
zsh: exit 1 ghc -c Foo.hs
This surprises me, as running ghci on a slightly modified version (replacing F.not (Left x)
with simply x
) confirms that not
is exported correctly; hence I believe F.not
should indeed be in scope.
Trac metadata
Trac field | Value |
---|---|
Version | 7.10.3 |
Type | Bug |
TypeOfFailure | OtherFailure |
Priority | normal |
Resolution | Unresolved |
Component | Compiler |
Test case | |
Differential revisions | |
BlockedBy | |
Related | |
Blocking | |
CC | |
Operating system | |
Architecture |