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
