on 63243ca help sign in
elk/compiler/Build/Print.hs
32 lines 1.1 kB history raw
1module Build.Print where
3import qualified Data.Map as Map
4import qualified Data.List as List
5import qualified SourceSyntax.Module as M
6import qualified SourceSyntax.PrettyPrint as Pretty
7import qualified Type.Alias as Alias
8import qualified Text.PrettyPrint as P
10metaTypes :: Map.Map String M.ModuleInterface -> M.MetadataModule -> IO ()
11metaTypes interfaces meta =
12 types interfaces (M.types meta) (M.aliases meta) (M.imports meta)
14interfaceTypes :: Map.Map String M.ModuleInterface -> M.ModuleInterface -> IO ()
15interfaceTypes interfaces iface =
16 types interfaces (M.iTypes iface) (M.iAliases iface) (M.iImports iface)
18types interfaces types' aliases imports =
19 do putStrLn ""
20 mapM_ printType (Map.toList types')
21 putStrLn ""
22 where
23 rules = Alias.rules interfaces aliases imports
25 printType (n,t) = do
26 print $ P.hsep [ Pretty.variable n
27 , P.text ":"
28 , Pretty.pretty (Alias.realias rules t) ]
30errors :: [P.Doc] -> IO ()
31errors errs =
32 mapM_ print (List.intersperse (P.text " ") errs)