elm/compiler/Build/Print.hs

32 lines
1.1 KiB
Haskell
Raw Normal View History

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
2014-01-03 07:23:26 +00:00
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)