[GHC] #1856: Haskell determines that the modules are recursively imported but they are not, but the problem was the name of a module didn't match the file name where it was holded

GHC trac at galois.com
Thu Nov 8 11:02:04 EST 2007


#1856: Haskell determines that the modules are recursively imported but they are
not, but the problem was the name of a module didn't match the file name
where it was holded
-----------------------------+----------------------------------------------
 Reporter:  guest            |          Owner:                                             
     Type:  feature request  |         Status:  new                                        
 Priority:  normal           |      Milestone:  6.6.2                                      
Component:  Compiler         |        Version:  6.6                                        
 Severity:  normal           |       Keywords:  Modules Recursively Imported Error Messages
 Testcase:                   |   Architecture:  x86                                        
       Os:  Linux            |  
-----------------------------+----------------------------------------------
 When I am trying to compile the following modules:

 File: Files.hs

 module Files  where
 import SecMonad

 File: Lattice.hs

 module Lattice where

 File: Ref.hs

 module Ref where
 import SecMonad


 File: Screen.hs

 module Screen where
 import SecMonad


 File: Sec.hs

 module Sec where
 import Lattice


 File: SecLib.hs  (OBSERVE HERE THAT THE NAME OF THE MODULE IS NOT THE SAME
 AS THE FILE)
 module SecMonad where
 import Lattice
 import Sec
 import SecMonad
 import Files
 import Screen
 import Ref


 File: SecMonad.hs

 module SecMonad where

 import Lattice
 import Sec

 I got the message:
 ale at localhost ~/Sec7 $ ghci SecLib.hs -fglasgow-exts
 GHCi, version 6.8.1: http://www.haskell.org/ghc/  :? for help
 Loading package base ... linking ... done.
 [1 of 4] Compiling Lattice          ( Lattice.hs, interpreted )
 [2 of 4] Compiling Sec              ( Sec.hs, interpreted )
 [3 of 4] Compiling SecIO            ( SecIO.hs, interpreted )
 Module imports form a cycle for modules:
   main:Resources imports: Files Lattice
   main:Files imports: SecMonad SecIO Lattice
   main:SecMonad
     imports: Resources Ref Screen Files SecMonad SecIO Sec Lattice
   main:Ref imports: SecMonad SecIO Sec Lattice Data.IORef
   main:Screen imports: SecMonad SecIO Lattice
 Failed, modules loaded: SecIO, Lattice, Sec.
 *SecIO>

 I think that it would be of great help if the compiler can check if the
 names of the modules match the name of the files. It took me a while to
 discover the stupid mistake, and I believe that, when you have a large
 number of mobules, it might be difficult to find this bug. So, a simple
 check would help a lot in this situation.

 That is it!

-- 
Ticket URL: <http://hackage.haskell.org/trac/ghc/ticket/1856>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler


More information about the Glasgow-haskell-bugs mailing list