just comment formatting
[ghc-hetmet.git] / compiler / main / HscTypes.lhs
index c187932..c1e6f34 100644 (file)
@@ -111,6 +111,7 @@ import ByteCodeAsm  ( CompiledByteCode )
 import {-# SOURCE #-}  InteractiveEval ( Resume )
 #endif
 
+import HsSyn
 import RdrName
 import Name
 import NameEnv
@@ -480,7 +481,8 @@ withLocalCallbacks f m = do
   let cb' = f cb0
   setSession (hsc_env { hsc_callbacks = cb' `seq` cb' })
   r <- m
-  setSession (hsc_env { hsc_callbacks = cb0 })
+  hsc_env' <- getSession
+  setSession (hsc_env' { hsc_callbacks = cb0 })
   return r
 
 \end{code}
@@ -798,14 +800,12 @@ data FindResult
        -- ^ The requested package was not found
   | FoundMultiple [PackageId]
        -- ^ _Error_: both in multiple packages
-  | PackageHidden PackageId
-       -- ^ For an explicit source import, the package containing the module is
-       -- not exposed.
-  | ModuleHidden  PackageId
-       -- ^ For an explicit source import, the package containing the module is
-       -- exposed, but the module itself is hidden.
-  | NotFound [FilePath] (Maybe PackageId)
-       -- ^ The module was not found, the specified places were searched
+  | NotFound [FilePath] (Maybe PackageId) [PackageId] [PackageId]
+       -- ^ The module was not found, including either
+        --    * the specified places were searched
+        --    * the package that this module should have been in
+        --    * list of packages in which the module was hidden,
+        --    * list of hidden packages containing this module
   | NotFoundInPackage PackageId
        -- ^ The module was not found in this package
 
@@ -842,11 +842,10 @@ data ModIface
        mi_boot     :: !IsBootInterface,    -- ^ Read from an hi-boot file?
 
        mi_deps     :: Dependencies,
-               -- ^ The dependencies of the module, consulted for directly
-               -- imported modules only
-       
-               -- This is consulted for directly-imported modules,
-               -- but not for anything else (hence lazy)
+               -- ^ The dependencies of the module.  This is
+               -- consulted for directly-imported modules, but not
+               -- for anything else (hence lazy)
+
         mi_usages   :: [Usage],
                 -- ^ Usages; kept sorted so that it's easy to decide
                -- whether to write a new iface file (changing usages
@@ -1147,6 +1146,8 @@ data InteractiveContext
 #ifdef GHCI
         , ic_resume :: [Resume]         -- ^ The stack of breakpoint contexts
 #endif
+
+        , ic_cwd :: Maybe FilePath      -- virtual CWD of the program
     }
 
 
@@ -1160,6 +1161,7 @@ emptyInteractiveContext
 #ifdef GHCI
                          , ic_resume = []
 #endif
+                         , ic_cwd = Nothing
                        }
 
 icPrintUnqual :: DynFlags -> InteractiveContext -> PrintUnqualified
@@ -1291,14 +1293,13 @@ mkPrintUnqualified dflags env = (qual_name, qual_mod)
 implicitTyThings :: TyThing -> [TyThing]
 
 -- For data and newtype declarations:
-implicitTyThings (ATyCon tc) = 
-    -- fields (names of selectors)
-    map AnId (tyConSelIds tc) ++ 
-    -- (possibly) implicit coercion and family coercion
-    --   depending on whether it's a newtype or a family instance or both
+implicitTyThings (ATyCon tc)
+  =   -- fields (names of selectors)
+      -- (possibly) implicit coercion and family coercion
+      --   depending on whether it's a newtype or a family instance or both
     implicitCoTyCon tc ++
-    -- for each data constructor in order,
-    --   the contructor, worker, and (possibly) wrapper
+      -- for each data constructor in order,
+      --   the contructor, worker, and (possibly) wrapper
     concatMap (extras_plus . ADataCon) (tyConDataCons tc)
                     
 implicitTyThings (AClass cl) 
@@ -1852,7 +1853,8 @@ type OrigIParamCache = FiniteMap (IPName OccName) (IPName Name)
 -- There will be a node for each source module, plus a node for each hi-boot
 -- module.
 --
--- The graph is not necessarily stored in topologically-sorted order.
+-- The graph is not necessarily stored in topologically-sorted order.  Use
+-- 'GHC.topSortModuleGraph' and 'Digraph.flattenSCC' to achieve this.
 type ModuleGraph = [ModSummary]
 
 emptyMG :: ModuleGraph
@@ -1872,8 +1874,8 @@ data ModSummary
         ms_location  :: ModLocation,           -- ^ Location of the various files belonging to the module
         ms_hs_date   :: ClockTime,             -- ^ Timestamp of source file
        ms_obj_date  :: Maybe ClockTime,        -- ^ Timestamp of object, if we have one
-        ms_srcimps   :: [Located ModuleName],  -- ^ Source imports of the module
-        ms_imps      :: [Located ModuleName],  -- ^ Non-source imports of the module
+        ms_srcimps   :: [Located (ImportDecl RdrName)],        -- ^ Source imports of the module
+        ms_imps      :: [Located (ImportDecl RdrName)],        -- ^ Non-source imports of the module
         ms_hspp_file :: FilePath,              -- ^ Filename of preprocessed source file
         ms_hspp_opts :: DynFlags,               -- ^ Cached flags from @OPTIONS@, @INCLUDE@
                                                 -- and @LANGUAGE@ pragmas in the modules source code