elm/compiler/Build/Print.hs
Evan Czaplicki b9e627f78e Merge in @maxsnew's fixes from #424
Tested on small file where I changed a dependency and on elm-lang.org
code.
2014-01-15 13:54:40 +01:00

38 lines
1.2 KiB
Haskell

module Build.Print where
import System.IO (hPutStrLn, stderr)
import System.Exit (exitFailure)
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)
failure :: String -> IO a
failure msg = hPutStrLn stderr msg >> exitFailure