@@ -25,7 +25,6 @@ module Language.PureScript.Make
25 -- * Make API
25 -- * Make API
26 RebuildPolicy(..)
26 RebuildPolicy(..)
27 , MakeActions(..)
27 , MakeActions(..)
29 , Externs()
28 , Externs()
@@ -43,7 +42,6 @@ import Control.Monad.Trans.Except
43import Control.Monad.Reader
42import Control.Monad.Reader
44import Control.Monad.Writer
43import Control.Monad.Writer
45import Control.Monad.Supply
44import Control.Monad.Supply
46−import Control.Monad.Supply.Class (fresh)
48import Data.Function (on)
46import Data.Function (on)
49import Data.List (sortBy, groupBy)
47import Data.List (sortBy, groupBy)
@@ -102,7 +100,7 @@ data MakeActions m = MakeActions {
103 -- Run the code generator for the module and write any required output files.
101 -- Run the code generator for the module and write any required output files.
105− , codegen :: CF.Module CF.Ann -> Environment -> SupplyVar -> Externs -> m ()
103+ , codegen :: CF.Module CF.Ann -> Environment -> Externs -> SupplyT m ()
107 -- Respond to a progress update.
105 -- Respond to a progress update.
@@ -114,11 +112,6 @@ data MakeActions m = MakeActions {
115type Externs = String
113type Externs = String
118−-- A value to be used in the Supply monad.
120−type SupplyVar = Integer
123-- Determines when to rebuild a module
116-- Determines when to rebuild a module
@@ -168,8 +161,7 @@ make MakeActions{..} ms = do
168 corefn = CF.moduleToCoreFn env' mod'
161 corefn = CF.moduleToCoreFn env' mod'
169 [renamed] = renameInModules [corefn]
162 [renamed] = renameInModules [corefn]
170 exts = moduleToPs mod' env'
163 exts = moduleToPs mod' env'
172− lift $ codegen renamed env' nextVar exts
164+ codegen renamed env' exts
173 go env' ms'
165 go env' ms'
175 rebuildIfNecessary :: M.Map ModuleName [ModuleName] -> S.Set ModuleName -> [Module] -> m [(Bool, Module)]
167 rebuildIfNecessary :: M.Map ModuleName [ModuleName] -> S.Set ModuleName -> [Module] -> m [(Bool, Module)]
@@ -264,8 +256,8 @@ buildMakeActions outputDir filePathMap foreigns usePrefix =
264 let path = outputDir </> runModuleName mn </> "externs.purs"
256 let path = outputDir </> runModuleName mn </> "externs.purs"
265 (path, ) <$> readTextFile path
257 (path, ) <$> readTextFile path
267− codegen :: CF.Module CF.Ann -> Environment -> SupplyVar -> Externs -> Make ()
259+ codegen :: CF.Module CF.Ann -> Environment -> Externs -> SupplyT Make ()
268− codegen m _ nextVar exts = do
260+ codegen m _ exts = do
269 let mn = CF.moduleName m
261 let mn = CF.moduleName m
270 foreignInclude <- case mn `M.lookup` foreigns of
262 foreignInclude <- case mn `M.lookup` foreigns of
271 Just (path, _)
263 Just (path, _)
@@ -275,7 +267,7 @@ buildMakeActions outputDir filePathMap foreigns usePrefix =
275 | otherwise -> return $ Just $ J.JSApp (J.JSVar "require") [J.JSStringLiteral "./foreign"]
267 | otherwise -> return $ Just $ J.JSApp (J.JSVar "require") [J.JSStringLiteral "./foreign"]
276 Nothing | requiresForeign m -> throwError . errorMessage $ MissingFFIModule mn
268 Nothing | requiresForeign m -> throwError . errorMessage $ MissingFFIModule mn
277 | otherwise -> return Nothing
269 | otherwise -> return Nothing
278− pjs <- evalSupplyT nextVar $ prettyPrintJS <$> J.moduleToJs m foreignInclude
270+ pjs <- prettyPrintJS <$> J.moduleToJs m foreignInclude
279 let filePath = runModuleName mn
271 let filePath = runModuleName mn
280 jsFile = outputDir </> filePath </> "index.js"
272 jsFile = outputDir </> filePath </> "index.js"
281 externsFile = outputDir </> filePath </> "externs.purs"
273 externsFile = outputDir </> filePath </> "externs.purs"
@@ -283,10 +275,11 @@ buildMakeActions outputDir filePathMap foreigns usePrefix =
283 prefix = ["Generated by psc version " ++ showVersion Paths.version | usePrefix]
275 prefix = ["Generated by psc version " ++ showVersion Paths.version | usePrefix]
284 js = unlines $ map ("// " ++) prefix ++ [pjs]
276 js = unlines $ map ("// " ++) prefix ++ [pjs]
285 verboseErrorsEnabled <- asks optionsVerboseErrors
277 verboseErrorsEnabled <- asks optionsVerboseErrors
286− when verboseErrorsEnabled $ progress $ "Writing " ++ jsFile
279+ when verboseErrorsEnabled $ progress $ "Writing " ++ jsFile
287− writeTextFile jsFile js
280+ writeTextFile jsFile js
288− maybe (return ()) (writeTextFile foreignFile . snd) $ mn `M.lookup` foreigns
281+ maybe (return ()) (writeTextFile foreignFile . snd) $ mn `M.lookup` foreigns
289− writeTextFile externsFile exts
282+ writeTextFile externsFile exts
291 requiresForeign :: CF.Module a -> Bool
284 requiresForeign :: CF.Module a -> Bool
292 requiresForeign = not . null . CF.moduleForeign
285 requiresForeign = not . null . CF.moduleForeign