@@ -9,24 +9,28 @@ import System.FilePath as FP
9import Text.PrettyPrint (Doc)
9import Text.PrettyPrint (Doc)
11import SourceSyntax.Everything
11import SourceSyntax.Everything
12−import SourceSyntax.Declaration (Assoc)
12+import SourceSyntax.Type
13−import qualified SourceSyntax.Location as Loc
14import qualified Parse.Parse as Parse
13import qualified Parse.Parse as Parse
15import qualified Metadata.Libraries as Libs
14import qualified Metadata.Libraries as Libs
16−import qualified Transform.Optimize as Optimize
17import qualified Transform.Check as Check
15import qualified Transform.Check as Check
18import qualified Transform.SortDefinitions as SD
16import qualified Transform.SortDefinitions as SD
19import qualified Type.Inference as TI
17import qualified Type.Inference as TI
20import qualified Type.Constrain.Declaration as TcDecl
18import qualified Type.Constrain.Declaration as TcDecl
21+type TypeLibrary = Map.Map String (Map.Map String Type)
23−buildFromSource :: (Data t, Data v) => Bool -> String -> Either [Doc] (MetadataModule t v)
27+ Either [Doc] (MetadataModule t v)
24−buildFromSource noPrelude src =
28+buildFromSource typeLibrary source =
25− do modul@(Module _ _ _ decls) <- Parse.program src
29+ do modul@(Module _ _ _ decls') <- Parse.program source
27 -- check for structural errors
31 -- check for structural errors
28 Module names exs ims decls <-
32 Module names exs ims decls <-
29− case Check.mistakes decls of
33+ case Check.mistakes decls' of
30 [] -> return modul
34 [] -> return modul
31 ms -> Left ms
35 ms -> Left ms
@@ -60,7 +64,7 @@ sortDeps :: [Deps] -> IO [String]
60sortDeps depends =
64sortDeps depends =
61 if null mistakes
65 if null mistakes
62 then return (concat sccs)
66 then return (concat sccs)
63− else print (msg ++ show mistakes) >> exitFailure
67+ else print msg >> mapM print mistakes >> exitFailure
65 graph = map (\(name, deps) -> (toFilePath name, name, deps)) depends
69 graph = map (\(name, deps) -> (toFilePath name, name, deps)) depends
66 sccs = map Graph.flattenSCC $ Graph.stronglyConnComp graph
70 sccs = map Graph.flattenSCC $ Graph.stronglyConnComp graph