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

_______________________________________________
Glasgow-haskell-bugs mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs

Reply via email to