Don't import FastString in HsVersions.h
[ghc-hetmet.git] / compiler / iface / LoadIface.lhs
index a2afdcc..feb51d1 100644 (file)
@@ -52,12 +52,15 @@ import SrcLoc
 import Maybes
 import ErrUtils
 import Finder
-import UniqFM
+import LazyUniqFM
 import StaticFlags
 import Outputable
 import BinIface
 import Panic
+import Util
+import FastString
 
+import Control.Monad
 import Data.List
 import Data.Maybe
 import Data.IORef
@@ -114,14 +117,14 @@ loadOrphanModules mods isFamInstMod
 -- | Loads the interface for a given Name.
 loadInterfaceForName :: SDoc -> Name -> TcRn ModIface
 loadInterfaceForName doc name
-  = do { 
-#ifdef DEBUG
-               -- Should not be called with a name from the module being compiled
-         this_mod <- getModule
-       ; ASSERT2( not (nameIsLocalOrFrom this_mod name), ppr name <+> parens doc )
-#endif
-         initIfaceTcRn $ loadSysInterface doc (nameModule name)
-    }
+  = do { 
+    when debugIsOn $ do
+        -- Should not be called with a name from the module being compiled
+        { this_mod <- getModule
+        ; MASSERT2( not (nameIsLocalOrFrom this_mod name), ppr name <+> parens doc )
+        }
+  ; initIfaceTcRn $ loadSysInterface doc (nameModule name)
+  }
 
 -- | An 'IfM' function to load the home interface for a wired-in thing,
 -- so that we're sure that we see its instance declarations and rules
@@ -515,7 +518,8 @@ readIface :: Module -> FilePath -> IsBootInterface
 
 readIface wanted_mod file_path is_hi_boot_file
   = do { dflags <- getDOpts
-        ; res <- tryMostM $ readBinIface file_path
+        ; res <- tryMostM $
+                 readBinIface CheckHiWay QuietBinIFaceReading file_path
        ; case res of
            Right iface 
                | wanted_mod == actual_mod -> return (Succeeded iface)
@@ -610,10 +614,10 @@ ifaceStats eps
 -- | Read binary interface, and print it out
 showIface :: HscEnv -> FilePath -> IO ()
 showIface hsc_env filename = do
-   -- skip the version check; we don't want to worry about profiled vs.
+   -- skip the hi way check; we don't want to worry about profiled vs.
    -- non-profiled interfaces, for example.
-   writeIORef v_IgnoreHiWay True
-   iface <- initTcRnIf 's' hsc_env () () $ readBinIface  filename
+   iface <- initTcRnIf 's' hsc_env () () $
+       readBinIface IgnoreHiWay TraceBinIFaceReading filename
    printDump (pprModIface iface)
 \end{code}