32 lines
No EOL
1.1 KiB
Haskell
32 lines
No EOL
1.1 KiB
Haskell
module Build.Print where
|
|
|
|
import qualified Data.Map as Map
|
|
import qualified Data.List as List
|
|
import qualified SourceSyntax.Module as M
|
|
import qualified SourceSyntax.PrettyPrint as Pretty
|
|
import qualified Type.Alias as Alias
|
|
import qualified Text.PrettyPrint as P
|
|
|
|
metaTypes :: Map.Map String M.ModuleInterface -> M.MetadataModule () () -> IO ()
|
|
metaTypes interfaces meta =
|
|
types interfaces (M.types meta) (M.aliases meta) (M.imports meta)
|
|
|
|
interfaceTypes :: Map.Map String M.ModuleInterface -> M.ModuleInterface -> IO ()
|
|
interfaceTypes interfaces iface =
|
|
types interfaces (M.iTypes iface) (M.iAliases iface) (M.iImports iface)
|
|
|
|
types interfaces types' aliases imports =
|
|
do putStrLn ""
|
|
mapM_ printType (Map.toList types')
|
|
putStrLn ""
|
|
where
|
|
rules = Alias.rules interfaces aliases imports
|
|
|
|
printType (n,t) = do
|
|
print $ P.hsep [ Pretty.variable n
|
|
, P.text ":"
|
|
, Pretty.pretty (Alias.realias rules t) ]
|
|
|
|
errors :: [P.Doc] -> IO ()
|
|
errors errs =
|
|
mapM_ print (List.intersperse (P.text " ") errs) |