@@ -9,17 +9,12 @@ import SourceSyntax.Everything
9import Data.List (intercalate,partition)
9import Data.List (intercalate,partition)
10import Parse.Parser (parseProgram, parseDependencies)
10import Parse.Parser (parseProgram, parseDependencies)
11import qualified Metadata.Libraries as Libs
11import qualified Metadata.Libraries as Libs
12−import Transform.Optimize
12+import qualified Transform.Optimize as Optimize
13import qualified Transform.Check as Check
13import qualified Transform.Check as Check
14import System.Exit
14import System.Exit
15import System.FilePath
15import System.FilePath
18−{-- TODO: replace with new stuff
19−import Types.Hints (hints)
20−import Types.Unify (unify)
21−import Types.Alias (dealias, mistakes)
23unify = undefined
18unify = undefined
24hints = undefined
19hints = undefined
@@ -27,13 +22,13 @@ hints = undefined
27checkMistakes :: (Data t, Data v) => Module t v -> Either String (Module t v)
22checkMistakes :: (Data t, Data v) => Module t v -> Either String (Module t v)
28checkMistakes modul@(Module name ex im decls) =
23checkMistakes modul@(Module name ex im decls) =
29 case Check.mistakes decls of
24 case Check.mistakes decls of
30− m:ms -> Left (unlines (m:ms))
31− [] -> return modul
25+ [] -> return modul
26+ ms -> Left (unlines ms)
33checkTypes :: (Data t, Data v) => Module t v -> Either String (Module t v)
28checkTypes :: (Data t, Data v) => Module t v -> Either String (Module t v)
34checkTypes modul =
29checkTypes modul =
35 do subs <- unify hints modul
30 do subs <- unify hints modul
36− subs `seq` return (optimize (renameModule modul))
31+ subs `seq` return (Optimize.optimize (renameModule modul))
38check :: (Data t, Data v) => Module t v -> Either String (Module t v)
33check :: (Data t, Data v) => Module t v -> Either String (Module t v)
39check = checkMistakes >=> checkTypes
34check = checkMistakes >=> checkTypes
@@ -41,7 +36,7 @@ check = checkMistakes >=> checkTypes
41buildFromSource :: (Data t, Data v) => Bool -> String -> Either String (Module t v)
36buildFromSource :: (Data t, Data v) => Bool -> String -> Either String (Module t v)
42buildFromSource noPrelude src =
37buildFromSource noPrelude src =
43 let add = if noPrelude then id else Libs.addPrelude in
38 let add = if noPrelude then id else Libs.addPrelude in
44− (check . add) =<< (parseProgram src)
39+ (check . add) =<< parseProgram src
46getSortedModuleNames :: FilePath -> IO [String]
41getSortedModuleNames :: FilePath -> IO [String]
47getSortedModuleNames root =
42getSortedModuleNames root =