logo       

Recompiling doesn't notice re-exports being removed: msg#00101

lang.haskell.glasgow.bugs

Subject: Recompiling doesn't notice re-exports being removed


Recompiling doesn't notice re-exports being removed:


$ cat A.hs

module A where

foo :: Int
foo = 4

$ cat B.hs

module B (foo) where

import A (foo)

$ cat C.hs

module Main (main) where

import B (foo)

main :: IO ()
main = print foo

$ ghc --make C -o c
Chasing modules from: C
Compiling A ( ./A.hs, ./A.o )
Compiling B ( ./B.hs, ./B.o )
Compiling Main ( C.hs, C.o )
Linking ...
$ sed -i "s/foo//" B.hs
$ cat B.hs

module B () where

import A ()

$ ghc --make C -o c
Chasing modules from: C
Skipping A ( ./A.hs, ./A.o )
Compiling B ( ./B.hs, ./B.o )
Skipping Main ( C.hs, C.o )
Linking ...
$ # -------- compilation above should have failed, as below
$ rm *.o *.hi c
$ ghc --make C -o c
Chasing modules from: C
Compiling A ( ./A.hs, ./A.o )
Compiling B ( ./B.hs, ./B.o )
Compiling Main ( C.hs, C.o )

C.hs:4:10: Module `B' does not export `foo'
$


Thanks
Ian


<Prev in Thread] Current Thread [Next in Thread>
Google Custom Search

News | FAQ | advertise