[more data normalization
John Meacham <john@repetae.net>**20090808125225
 Ignore-this: e2981b8178fa5a7f1570ea8feb0b4159
] hunk ./src/Ho/Build.hs 106
-instance DocLike d => PPrint d MD5.Hash where
-    pprint h = tshow h
hunk ./src/Ho/Build.hs 218
-    = CompLinkNone
-    | CompLinkUnit CompUnit
-    | CompCollected CollectedHo CompLink
-    | CompTcCollected HoTcInfo CompLink
+    = CompLinkUnit CompUnit
+    | CompCollected CollectedHo CompUnit
+    | CompTcCollected HoTcInfo CompUnit
+--    | CompLinkLib ()
hunk ./src/Ho/Build.hs 229
+    | CompDummy
hunk ./src/Ho/Build.hs 253
+    providesModules CompDummy = []
hunk ./src/Ho/Build.hs 256
-    providesModules CompLinkNone = []
+--    providesModules CompLinkNone = []
hunk ./src/Ho/Build.hs 404
-    CompNode hash (concat xs) `fmap` newIORef CompLinkNone
+    CompNode hash (concat xs) `fmap` newIORef (CompLinkUnit CompDummy)
hunk ./src/Ho/Build.hs 428
-            CompLinkNone -> return Set.empty
hunk ./src/Ho/Build.hs 429
-            CompTcCollected _ cu -> g cu
-            CompCollected _ cu -> g cu
+            CompTcCollected _ cu -> f cu
+            CompCollected _ cu -> f cu
hunk ./src/Ho/Build.hs 434
+            CompDummy -> return Set.empty
hunk ./src/Ho/Build.hs 447
-            CompLinkNone -> do
-                ctc <- mconcat `fmap` mapM f deps
-                writeIORef ref (CompTcCollected ctc CompLinkNone)
-                return ctc
hunk ./src/Ho/Build.hs 448
-            CompLinkUnit lu -> case lu of
-                CompHo hoh idep ho  -> do
-                    ctc <- mconcat `fmap` mapM f deps
-                    let ctc' = hoTcInfo ho `mappend` ctc
-                    writeIORef ref (CompTcCollected ctc' cn)
-                    return ctc'
-                CompSources sc -> do
-                    ctc <- mconcat `fmap` mapM f deps
-                    let hdep = [ h | CompNode h _ _ <- deps]
-                    modules <- forM sc $ \x -> case x of
-                        SourceParsed { sourceHash = h,sourceModule = mod } -> return (h,mod)
-                        SourceRaw { sourceHash = h,sourceLBS = lbs, sourceFP = fp } -> do
-                            mod <- parseHsSource fp lbs
-                            return (h,mod)
-                    showProgress (snds modules)
-                    (htc,tidata) <- doModules' ctc (snds modules)
-                    let ctc' = htc `mappend` ctc
-                    writeIORef ref (CompTcCollected ctc' (CompLinkUnit $ CompTCed ((htc,tidata,modules,map sourceHoName sc))))
-                    return ctc'
+            CompLinkUnit lu -> do
+                ctc <- mconcat `fmap` mapM f deps
+                case lu of
+                    CompDummy -> do
+                        writeIORef ref (CompTcCollected ctc CompDummy)
+                        return ctc
+                    CompHo hoh idep ho  -> do
+                        let ctc' = hoTcInfo ho `mappend` ctc
+                        writeIORef ref (CompTcCollected ctc' lu)
+                        return ctc'
+                    CompSources sc -> do
+                        let hdep = [ h | CompNode h _ _ <- deps]
+                        modules <- forM sc $ \x -> case x of
+                            SourceParsed { sourceHash = h,sourceModule = mod } -> return (h,mod)
+                            SourceRaw { sourceHash = h,sourceLBS = lbs, sourceFP = fp } -> do
+                                mod <- parseHsSource fp lbs
+                                return (h,mod)
+                        showProgress (snds modules)
+                        (htc,tidata) <- doModules' ctc (snds modules)
+                        let ctc' = htc `mappend` ctc
+                        writeIORef ref (CompTcCollected ctc' (CompTCed ((htc,tidata,modules,map sourceHoName sc))))
+                        return ctc'
hunk ./src/Ho/Build.hs 488
-                CompLinkNone -> do
-                    xs <- mconcat `fmap` mapM f deps
-                    writeIORef ref (CompCollected xs CompLinkNone)
-                    return xs
-                CompTcCollected _ cl -> g cl
+                CompTcCollected _ cl -> h cl
hunk ./src/Ho/Build.hs 490
-            h cu = case cu of
-                cn@(CompHo hoh idep ho) -> do
-                    cho <- mconcat `fmap` mapM f deps
-                    cho <- ifunc cho ho
-                    writeIORef ref (CompCollected cho (CompLinkUnit cn))
-                    return cho
-                CompTCed ((htc,tidata,modules,shns))  -> do
-                    let hdep = [ h | CompNode h _ _ <- deps]
-                    cho <- mconcat `fmap` mapM f deps
-                    showProgress (snds modules)
-                    let (mgName:_) = sort $ map (hsModuleName . snd) modules
-                    (cho',newHo) <- func cho mempty { hoModuleGroup = mgName, hoTcInfo = htc } tidata
-                    modifyIORef ksm_r (Map.union $ Map.fromList [ (h,(hsModuleName mod,hsModuleRequires mod)) | (h,mod) <- modules])
-                    ksm <- readIORef ksm_r
-
-                    let hoh = HoHeader {
-                                 hohVersion = error "hohVersion",
-                                 hohName = Left mgName,
-                                 hohHash       = hh,
-                                 hohArchDeps = [],
-                                 hohLibDeps   = []
-                                 }
-                        idep = HoIDeps {
-                                hoIDeps =    ksm,
-                                hoDepends    = [ (hsModuleName mod,h) | (h,mod) <- modules],
-                                hoModDepends = hdep
-                                }
-
-                    recordHoFile (mapHoBodies eraseE newHo) idep shns hoh
-                    writeIORef ref (CompCollected cho' (CompLinkUnit $ CompHo hoh idep newHo))
-                    return cho'
-                CompSources _ -> error "sources still exist!?"
+            h cu = do
+                cho <- mconcat `fmap` mapM f deps
+                case cu of
+                    CompDummy -> do
+                        writeIORef ref (CompCollected cho CompDummy)
+                        return cho
+                    cn@(CompHo hoh idep ho) -> do
+                        cho <- ifunc cho ho
+                        writeIORef ref (CompCollected cho cn)
+                        return cho
+                    CompTCed ((htc,tidata,modules,shns))  -> do
+                        let hdep = [ h | CompNode h _ _ <- deps]
+                        showProgress (snds modules)
+                        let (mgName:_) = sort $ map (hsModuleName . snd) modules
+                        (cho',newHo) <- func cho mempty { hoModuleGroup = mgName, hoTcInfo = htc } tidata
+                        modifyIORef ksm_r (Map.union $ Map.fromList [ (h,(hsModuleName mod,hsModuleRequires mod)) | (h,mod) <- modules])
+                        ksm <- readIORef ksm_r
+                        let hoh = HoHeader {
+                                     hohVersion = error "hohVersion",
+                                     hohName = Left mgName,
+                                     hohHash       = hh,
+                                     hohArchDeps = [],
+                                     hohLibDeps   = []
+                                     }
+                            idep = HoIDeps {
+                                    hoIDeps =    ksm,
+                                    hoDepends    = [ (hsModuleName mod,h) | (h,mod) <- modules],
+                                    hoModDepends = hdep
+                                    }
+                        recordHoFile (mapHoBodies eraseE newHo) idep shns hoh
+                        writeIORef ref (CompCollected cho' (CompHo hoh idep newHo))
+                        return cho'
+                    CompSources _ -> error "sources still exist!?"
hunk ./src/Ho/Build.hs 614
-        (cnode,_) <- parseFiles (map Left allmods) ifunc func
+        (rnode@(CompNode lhash _ _),_) <- parseFiles (map Left allmods) ifunc func
+        {-
+        (prvds,ho,ldeps) <- let
+            f (CompNode hs cd ref) = do
+                let g x = case x of
+                    CompLinkLib l -> return l
+                    CompCollected _ y -> g y
+                    CompLinkNone -> return mempty
+
+                cl <- readIORef ref
+                deps <- mconcat `fmap` mapM f cd
+                return $ d `mappend` deps
+            hunit hs x = case x of
+
+                    CompHo (Just s) _ _ -> return (mempty,mempty,Map.singleton hs s)
+                    CompHo Nothing hoh ho -> return (Set.fromList $ providesModules hoh,Map.singleton hs ho,mempty)
+                    CompCollected _ u -> hunit hs u
+                    CompPhony -> return mempty
+          in f rnode
+
+-}
hunk ./src/Ho/Build.hs 636
+        {-
+
+        (prvds,ho,ldeps) <- let
+            f (CompNode hs cd ref) = do
+                deps <- mconcat `fmap` mapM f cd
+                d <- readIORef ref >>= hunit hs
+                return $ d `mappend` deps
+            hunit hs x = case x of
+                    CompHo (Just s) _ _ -> return (mempty,mempty,Map.singleton hs s)
+                    CompHo Nothing hoh ho -> return (Set.fromList $ providesModules hoh,Map.singleton hs ho,mempty)
+                    CompCollected _ u -> hunit hs u
+                    CompPhony -> return mempty
+          in f rnode
+
+        --(cho,libDeps,ho) <- findModule (map Left (emods ++ hmods)) ifunc func
+        let unknownMods = Set.toList $ Set.filter (`notElem` allmods) prvds
+        mapM_ ((putStrLn . ("*** Module included in library that is not in export list: " ++)) . show) unknownMods
+        let outName = case optOutName options of
+                "hs.out" -> name ++ ".hl"
+                fn -> fn
+        let pdesc = [(n, packString v) | (n,v) <- ("jhc-hl-filename",outName):("jhc-description-file",fp):("jhc-compiled-by",versionString):desc, n /= "exposed-modules" ]
+        let hoh =  HoHeader {
+                hohHash = lhash,
+                hohDepends = [ (m,MD5.emptyHash) | m <- Set.toList prvds ],
+                hohModDepends = Map.keys ldeps,
+                hohMetaInfo = pdesc
+                }
+        recordHoFile (mconcat $ Map.elems ho) (HoIDeps Map.empty) [outName] hoh
+        -}
hunk ./src/Ho/Build.hs 730
+instance DocLike d => PPrint d MD5.Hash where
+    pprint h = tshow h
hunk ./src/Ho/Build.hs 736
-vindent xs = vcat (map ("    " ++) xs)
hunk ./src/Ho/Build.hs 740
+    let vindent xs = vcat (map ("    " ++) xs)
hunk ./src/Ho/Collected.hs 20
+import Name.Name
hunk ./src/Ho/Collected.hs 40
-        choHoMap = Map.singleton "Prim@" pho,
+        choHoMap = Map.singleton primModule pho,
hunk ./src/Ho/Type.hs 65
-    choHoMap :: Map.Map String Ho
+    choHoMap :: Map.Map ModuleGroup Ho
hunk ./src/Main.hs 172
-        choHoMap = Map.singleton (show $ hoModuleGroup aho) aho `mappend` choHoMap accumho
+        choHoMap = Map.singleton (hoModuleGroup aho) aho `mappend` choHoMap accumho
hunk ./src/Main.hs 413
-        choHoMap = Map.singleton (show $ hoModuleGroup ho') ho' { hoBuild = newHoBuild},
+        choHoMap = Map.singleton (hoModuleGroup ho') ho' { hoBuild = newHoBuild},
hunk ./src/Name/Name.hs 19
+    primModule,
hunk ./src/Name/Name.hs 173
+primModule = Module "Prim@"