2 % (c) The AQUA Project, Glasgow University, 1993-2000
4 \section[CmLink]{Linker for GHCI}
7 module CmLink ( Linkable(..),
9 modname_of_linkable, is_package_linkable,
13 PLS{-abstractly!-}, emptyPLS )
17 import CmStaticInfo ( PCI )
18 import CmFind ( Path, PkgName )
19 import Module ( Module )
20 import Outputable ( SDoc )
21 import FiniteMap ( FiniteMap, emptyFM )
22 import RdrName ( RdrName )
23 import Digraph ( SCC )
25 import Panic ( panic )
27 #include "HsVersions.h"
34 source_symtab :: FiniteMap RdrName HValue,
35 object_symtab :: FiniteMap String Addr
38 data HValue = HValue -- fix this ... just temporary?
41 link :: PCI -> [SCC Linkable] -> PLS -> IO LinkResult
42 link pci linkabless pls
43 = return (error "link:unimp")
53 -- | Trees [StgTree RdrName]
56 = LM {-should be:Module-} String{- == ModName-} [Unlinked]
59 modname_of_linkable (LM nm _) = nm
60 modname_of_linkable (LP _) = panic "modname_of_linkable: package"
62 is_package_linkable (LP _) = True
63 is_package_linkable (LM _ _) = False
65 filterModuleLinkables :: (String{- ==ModName-} -> Bool)
68 filterModuleLinkables p [] = []
69 filterModuleLinkables p (li:lis)
72 LM modnm _ -> if p modnm then retain else dump
74 dump = filterModuleLinkables p lis
78 emptyPLS = return (MkPLS { source_symtab = emptyFM,
79 object_symtab = emptyFM })