on master help sign in
Start using Metadata.Prelude
016a199Evan Czaplicki
compiler/Compiler.hs+5−5
@@ -4,7 +4,7 @@ module Main where
4import Control.Monad
4import Control.Monad
5import qualified Data.Map as Map
5import qualified Data.Map as Map
6import qualified Data.List as List
6import qualified Data.List as List
7−import Data.Binary (encodeFile, decodeFile)
7+import qualified Data.Binary as Binary
8import Data.Version (showVersion)
8import Data.Version (showVersion)
9import System.Console.CmdArgs hiding (program)
9import System.Console.CmdArgs hiding (program)
10import System.Directory
10import System.Directory
@@ -16,6 +16,7 @@ import qualified Text.Blaze.Html.Renderer.String as Normal
16import qualified Text.Jasmine as JS
16import qualified Text.Jasmine as JS
17import qualified Data.ByteString.Lazy.Char8 as BS
17import qualified Data.ByteString.Lazy.Char8 as BS
18
18
19+import qualified Metadata.Prelude as Prelude
19import SourceSyntax.Module
20import SourceSyntax.Module
20import Initialize (buildFromSource, getSortedModuleNames, Interfaces)
21import Initialize (buildFromSource, getSortedModuleNames, Interfaces)
21import Generate.JavaScript (jsModule)
22import Generate.JavaScript (jsModule)
@@ -86,7 +87,7 @@ elmi flags filePath = file flags filePath "elmi"
86buildFile :: Flags -> Int -> Int -> Interfaces -> FilePath -> IO ModuleInterface
87buildFile :: Flags -> Int -> Int -> Interfaces -> FilePath -> IO ModuleInterface
87buildFile flags moduleNum numModules interfaces filePath =
88buildFile flags moduleNum numModules interfaces filePath =
88 do compiled <- alreadyCompiled
89 do compiled <- alreadyCompiled
89− if compiled then decodeFile (elmi flags filePath) else compile
90+ if compiled then Binary.decodeFile (elmi flags filePath) else compile
90
91
91 where
92 where
92 alreadyCompiled :: IO Bool
93 alreadyCompiled :: IO Bool
@@ -121,7 +122,7 @@ buildFile flags moduleNum numModules interfaces filePath =
121 iTypes = tipes,
122 iTypes = tipes,
122 iAdts = datatypes metaModule
123 iAdts = datatypes metaModule
123 }
124 }
124− encodeFile (elmi flags filePath) interface
125+ Binary.encodeFile (elmi flags filePath) interface
125 let js = jsModule metaModule
126 let js = jsModule metaModule
126 writeFile (elmo flags filePath) js
127 writeFile (elmo flags filePath) js
127 return interface
128 return interface
@@ -146,8 +147,7 @@ getRuntime flags =
146build :: Flags -> FilePath -> IO ()
147build :: Flags -> FilePath -> IO ()
147build flags rootFile = do
148build flags rootFile = do
148 files <- if make flags then getSortedModuleNames rootFile else return [rootFile]
149 files <- if make flags then getSortedModuleNames rootFile else return [rootFile]
149− let initialInterface = if no_prelude flags then Map.empty else Map.empty
150− interfaces <- buildFiles flags (length files) initialInterface files
150+ interfaces <- buildFiles flags (length files) Prelude.interfaces files
151 js <- foldM appendToOutput "" files
151 js <- foldM appendToOutput "" files
152 case only_js flags of
152 case only_js flags of
153 True -> do
153 True -> do
compiler/Initialize.hs+2−2
@@ -11,7 +11,7 @@ import Text.PrettyPrint (Doc)
11import SourceSyntax.Everything
11import SourceSyntax.Everything
12import SourceSyntax.Type
12import SourceSyntax.Type
13import qualified Parse.Parse as Parse
13import qualified Parse.Parse as Parse
14−import qualified Metadata.Libraries as Libs
14+import qualified Metadata.Prelude as Prelude
15import qualified Transform.Check as Check
15import qualified Transform.Check as Check
16import qualified Transform.SortDefinitions as SD
16import qualified Transform.SortDefinitions as SD
17import qualified Type.Inference as TI
17import qualified Type.Inference as TI
@@ -82,7 +82,7 @@ readDeps seen root = do
82 realDeps = filter (`notElem` builtIns) deps
82 realDeps = filter (`notElem` builtIns) deps
83 newDeps = filter (\d -> not (d `elem` seen || isNative d)) realDeps
83 newDeps = filter (\d -> not (d `elem` seen || isNative d)) realDeps
84 seen' = root : seen ++ newDeps
84 seen' = root : seen ++ newDeps
85− builtIns = Map.keys Libs.libraries
85+ builtIns = Map.keys Prelude.interfaces
86
86
87
87
88isNative name = List.isPrefixOf "Native." name
88isNative name = List.isPrefixOf "Native." name
compiler/Metadata/Prelude.hs+3−3
@@ -1,4 +1,4 @@
1−module Metadata.Libraries (interfaces, addPrelude) where
1+module Metadata.Prelude (interfaces, add) where
2
2
3import qualified Data.Map as Map
3import qualified Data.Map as Map
4import qualified Control.Exception as E
4import qualified Control.Exception as E
@@ -11,8 +11,8 @@ import SourceSyntax.Module
11import Data.Binary
11import Data.Binary
12
12
13
13
14−addPrelude :: Module t v -> Module t v
14+add :: Module t v -> Module t v
15−addPrelude (Module name exs ims stmts) = Module name exs (customIms ++ ims) stmts
15+add (Module name exs ims stmts) = Module name exs (customIms ++ ims) stmts
16 where
16 where
17 customIms = concatMap addModule prelude
17 customIms = concatMap addModule prelude
18
18