Add ASSERTs to all calls of nameModule
[ghc-hetmet.git] / compiler / typecheck / TcSplice.lhs
index d63b4a0..7139fa8 100644 (file)
@@ -73,6 +73,8 @@ import qualified Language.Haskell.TH.Syntax as TH
 import GHC.Exts                ( unsafeCoerce#, Int#, Int(..) )
 #if __GLASGOW_HASKELL__ < 609
 import qualified Exception ( userErrors )
+#else
+import System.IO.Error
 #endif
 \end{code}
 
@@ -603,9 +605,15 @@ runMeta convert expr
                     -> failM   -- Error already in Tc monad
                     | otherwise -> failWithTc (mk_msg "run" exn)       -- Exception
 #else
-           Left (SomeException exn) -> do
+           Left (SomeException exn) ->
                     case cast exn of
-                        Just (ErrorCall "IOEnv failure") ->
+                    Just (ErrorCall "IOEnv failure") ->
+                        failM -- Error already in Tc monad
+                    _ ->
+                        case cast exn of
+                        Just ioe
+                         | isUserError ioe &&
+                           (ioeGetErrorString ioe == "IOEnv failure") ->
                             failM -- Error already in Tc monad
                         _ -> failWithTc (mk_msg "run" exn)     -- Exception
 #endif
@@ -932,7 +940,7 @@ reifyName thing
        -- have free variables, we may need to generate NameL's for them.
   where
     name    = getName thing
-    mod     = nameModule name
+    mod     = ASSERT( isExternalName name ) nameModule name
     pkg_str = packageIdString (modulePackageId mod)
     mod_str = moduleNameString (moduleName mod)
     occ_str = occNameString occ