[include location of 'import' declaration for unknown imports, move Data.Int and Data.Word out of jhc
John Meacham <john@repetae.net>**20120206092730
 Ignore-this: 205dad46b87c86fa1d4d99fb318fc6b8
] move ./lib/jhc/Data/Int.hs ./lib/base/Data/Int.hs
move ./lib/jhc/Data/Word.hs ./lib/base/Data/Word.hs
move ./lib/jhc/Prelude.hs ./lib/base/Prelude.hs
hunk ./Makefile.am 320
-    lib/jhc/Data/Int.hs lib/jhc/Prelude/IO.hs lib/jhc/Jhc/Order.hs lib/jhc/System/C/Stdio.hs lib/jhc/Data/Word.hs \
+    lib/jhc/Prelude/IO.hs lib/jhc/Jhc/Order.hs lib/jhc/System/C/Stdio.hs  \
hunk ./Makefile.am 324
-    lib/jhc/System/Mem.hs lib/jhc/Jhc/Type/Basic.hs lib/jhc/Prelude.hs lib/jhc/Jhc/Num.hs lib/jhc/Jhc/Text/Read.hs \
+    lib/jhc/System/Mem.hs lib/jhc/Jhc/Type/Basic.hs lib/jhc/Jhc/Num.hs lib/jhc/Jhc/Text/Read.hs \
hunk ./lib/jhc/Jhc/Inst/Order.hs 7
-import Data.Word
-import Data.Int
hunk ./lib/jhc/Jhc/Inst/Order.hs 9
-import Foreign.C.Types
+import Jhc.Type.Word
+import Jhc.Type.C
hunk ./lib/jhc/Jhc/Type/C.hs 3
-import Data.Word
-import Data.Int
-
+import Jhc.Type.Word
hunk ./lib/jhc/jhc.yaml 15
-        - Data.Int
hunk ./lib/jhc/jhc.yaml 16
-        - Data.Word
hunk ./lib/jhc/jhc.yaml 43
-        - Prelude
hunk ./src/Ho/Build.hs 49
-import FrontEnd.Warning(err,processIOErrors,WarnType(..))
+import FrontEnd.Warning(warn,processIOErrors,WarnType(..))
hunk ./src/Ho/Build.hs 98
-findFirstFile :: String -> [(FilePath,a)] -> IO (LBS.ByteString,FilePath,a)
-findFirstFile err [] = FrontEnd.Warning.err (MissingDep err) ("Module not found: " ++ err) >> fail ("Module not found: " ++ err)
-findFirstFile err ((x,a):xs) = flip catch (\e -> findFirstFile err xs) $ do
+findFirstFile :: [FilePath] -> IO (LBS.ByteString,FilePath)
+findFirstFile [] = fail "findFirstFile: file not found"
+findFirstFile (x:xs) = flip catch (\e -> findFirstFile xs) $ do
hunk ./src/Ho/Build.hs 102
-    return (bs,x,a)
+    return (bs,x)
hunk ./src/Ho/Build.hs 111
-    knownSourceMap  :: Map.Map SourceHash (Module,[Module]),
+    knownSourceMap  :: Map.Map SourceHash (Module,[(Module,SrcLoc)]),
hunk ./src/Ho/Build.hs 141
-                modifyIORef done_ref (knownSourceMap_u $ mappend (hoIDeps hidep))
+                modifyIORef done_ref (knownSourceMap_u $ (`mappend` (hoIDeps hidep)))
hunk ./src/Ho/Build.hs 149
-fetchSource :: Opt -> IORef Done -> [FilePath] -> Maybe Module -> IO Module
+fetchSource :: Opt -> IORef Done -> [FilePath] -> Maybe (Module,SrcLoc) -> IO Module
hunk ./src/Ho/Build.hs 152
-    let mod = maybe (head fs) show mm
-        killMod = case mm of
+    let killMod = case mm of
hunk ./src/Ho/Build.hs 154
-            Just m -> modifyIORef done_ref (modEncountered_u $ Map.insert m ModNotFound) >> return m
-    onErr killMod (findFirstFile mod [ (f,undefined) | f <- fs]) $ \ (lbs,fn,_) -> do
+            Just (m,sloc) -> do
+                warn sloc (MissingModule m) $ printf "Module '%s' not found." (show m)
+                modifyIORef done_ref (modEncountered_u $ Map.insert m ModNotFound) >> return m
+    onErr killMod (findFirstFile fs) $ \ (lbs,fn) -> do
hunk ./src/Ho/Build.hs 159
-    (foundho,mho) <- findHoFile done_ref fn mm hash
+    (foundho,mho) <- findHoFile done_ref fn (fmap fst mm) hash
hunk ./src/Ho/Build.hs 172
-        Just m' | m /= m' -> do
+        Just (m',_) | m /= m' -> do
hunk ./src/Ho/Build.hs 188
-resolveDeps :: Opt -> IORef Done -> Module -> IO ()
-resolveDeps modOpt done_ref m = do
+resolveDeps :: Opt -> IORef Done -> (Module,SrcLoc) -> IO ()
+resolveDeps modOpt done_ref (m,sloc) = do
hunk ./src/Ho/Build.hs 192
-        Just (ModLibrary False _ lib) | not ("jhc-prim-" `isPrefixOf` libName lib)  -> putErrDie $ printf  "ERROR: Attempt to import module '%s' which is a member of the library '%s'." (show m) (libName lib)
+        Just (ModLibrary False _ lib) | not ("jhc-prim-" `isPrefixOf` libName lib) -> putErrDie $ printf  "ERROR: Attempt to import module '%s' which is a member of the library '%s'.\nPerhaps you need to add '-p%s' to the command line?" (show m) (libName lib) (libName lib)
hunk ./src/Ho/Build.hs 194
-        Nothing -> fetchSource modOpt done_ref (map fst $ searchPaths modOpt (show m)) (Just m) >> return ()
+        Nothing -> fetchSource modOpt done_ref (map fst $ searchPaths modOpt (show m)) (Just (m,sloc)) >> return ()
hunk ./src/Ho/Build.hs 229
-    f (CompSources ss) = mconcat [ (Map.singleton (sourceModName s) (sourceFP s),Map.singleton (sourceModName s) (sourceDeps s),mempty) | s <- map sourceInfo ss ]
+    f (CompSources ss) = mconcat [ (Map.singleton (sourceModName s) (sourceFP s),Map.singleton (sourceModName s) (fsts $ sourceDeps s),mempty) | s <- map sourceInfo ss ]
hunk ./src/Ho/Build.hs 231
-    f (CompHo _hoh idep _ho) =  (Map.fromList [ (sourceModName $ sourceInfo src, sourceFP $ sourceInfo src) | s <- fsts ss, Just (Found src) <- [Map.lookup s memap] ],Map.fromList [ mms | s <- snds ss, Just mms <- [Map.lookup s (hoIDeps idep)] ],mempty) where
+    f (CompHo _hoh idep _ho) = (Map.fromList [ (sourceModName $ sourceInfo src, sourceFP $ sourceInfo src) | s <- fsts ss, Just (Found src) <- [Map.lookup s memap] ],Map.fromList [ (mms,fsts mms') | s <- snds ss, Just (mms,mms') <- [Map.lookup s (hoIDeps idep)] ],mempty) where
hunk ./src/Ho/Build.hs 249
-    sourceDeps :: [Module],
+    sourceDeps :: [(Module,SrcLoc)],
hunk ./src/Ho/Build.hs 295
-    let fs m = map inject $ maybe (error $ "can't find deps for: " ++ show m) snd (Map.lookup m (knownSourceMap done))
+    let fs m = map inject $ maybe (error $ "can't find deps for: " ++ show m) (fsts . snd) (Map.lookup m (knownSourceMap done))
hunk ./src/Ho/Build.hs 395
-        if optNoAuto options then optHls options ++ elibs else optAutoLoads options ++ optHls options ++ elibs) need
+        if optNoAuto options then optHls options ++ elibs else
+            optAutoLoads options ++ optHls options ++ elibs) bogusASrcLoc need
hunk ./src/Ho/Build.hs 414
-    -> [Either Module String]   -- ^ a list of modules or filenames
-    -> IO (Map.Map SourceHash (Module,[Module]),HoHash,CompUnitGraph)  -- ^ the resulting acyclic graph of compilation units
-loadModules modOpt targets libs need = do
+    -> SrcLoc                   -- ^ where these files are requsted from
+    -> [Either Module FilePath] -- ^ a list of modules or filenames
+    -> IO (Map.Map SourceHash (Module,[(Module,SrcLoc)]),HoHash,CompUnitGraph)  -- ^ the resulting acyclic graph of compilation units
+loadModules modOpt targets libs sloc need = do
hunk ./src/Ho/Build.hs 450
-    forM_ (lefts need) $ resolveDeps modOpt done_ref
+    forM_ (map (,sloc) $ lefts need) $ resolveDeps modOpt done_ref
hunk ./src/Ho/Build.hs 538
-                                                "Deps: " ++ show (sort $ sourceDeps si),
+                                                "Deps: " ++ show (sort $ fsts $ sourceDeps si),
hunk ./src/Ho/Build.hs 557
-                -> Map.Map SourceHash (Module,[Module])
+                -> Map.Map SourceHash (Module,[(Module,SrcLoc)])
hunk ./src/Ho/Build.hs 601
-                        modifyIORef ksm_r (Map.union $ Map.fromList [ (h,(hsModuleName mod,hsModuleRequires mod)) | (h,mod) <- modules])
+                        modifyIORef ksm_r (Map.union $ Map.fromList [ (h,(hsModuleName mod, hsModuleRequires mod)) | (h,mod) <- modules])
hunk ./src/Ho/Build.hs 611
-                                    hoIDeps =    ksm,
+                                    hoIDeps      = ksm,
hunk ./src/Ho/Build.hs 622
---hsModuleRequires x = snub (Module "Jhc.Prim":ans) where
-hsModuleRequires x = snub (toModule "Jhc.Prim.Prim":ans) where
---hsModuleRequires x = snub ans where
+hsModuleRequires x = snub ((toModule "Jhc.Prim.Prim",bogusASrcLoc):ans) where
hunk ./src/Ho/Build.hs 624
-    ans = (if noPrelude then id else (preludeModule:)) [  hsImportDeclModule y | y <- hsModuleImports x]
+    ans = (if noPrelude then id else ((preludeModule,bogusASrcLoc):)) [  (hsImportDeclModule y,hsImportDeclSrcLoc y) | y <- hsModuleImports x]
hunk ./src/Ho/Type.hs 91
-    hoIDeps :: Map.Map SourceHash (Module,[Module]),
+    hoIDeps :: Map.Map SourceHash (Module,[(Module,SrcLoc)]),