@@ -25,7 +25,6 @@ module Language.PureScript.Make
2525 -- * Make API
2626 RebuildPolicy(..)
2727 , MakeActions(..)
28− , SupplyVar()
2928 , Externs()
3029 , make
3130
@@ -43,7 +42,6 @@ import Control.Monad.Trans.Except
4342import Control.Monad.Reader
4443import Control.Monad.Writer
4544import Control.Monad.Supply
46−import Control.Monad.Supply.Class (fresh)
4745
4846import Data.Function (on)
4947import Data.List (sortBy, groupBy)
@@ -102,7 +100,7 @@ data MakeActions m = MakeActions {
102100 -- |
103101 -- Run the code generator for the module and write any required output files.
104102 --
105− , codegen :: CF.Module CF.Ann -> Environment -> SupplyVar -> Externs -> m ()
103+ , codegen :: CF.Module CF.Ann -> Environment -> Externs -> SupplyT m ()
106104 -- |
107105 -- Respond to a progress update.
108106 --
@@ -114,11 +112,6 @@ data MakeActions m = MakeActions {
114112--
115113type Externs = String
116114
117−-- |
118−-- A value to be used in the Supply monad.
119−--
120−type SupplyVar = Integer
121−
122115-- |
123116-- Determines when to rebuild a module
124117--
@@ -168,8 +161,7 @@ make MakeActions{..} ms = do
168161 corefn = CF.moduleToCoreFn env' mod'
169162 [renamed] = renameInModules [corefn]
170163 exts = moduleToPs mod' env'
171− nextVar <- fresh
172− lift $ codegen renamed env' nextVar exts
164+ codegen renamed env' exts
173165 go env' ms'
174166
175167 rebuildIfNecessary :: M.Map ModuleName [ModuleName] -> S.Set ModuleName -> [Module] -> m [(Bool, Module)]
@@ -264,8 +256,8 @@ buildMakeActions outputDir filePathMap foreigns usePrefix =
264256 let path = outputDir </> runModuleName mn </> "externs.purs"
265257 (path, ) <$> readTextFile path
266258
267− codegen :: CF.Module CF.Ann -> Environment -> SupplyVar -> Externs -> Make ()
268− codegen m _ nextVar exts = do
259+ codegen :: CF.Module CF.Ann -> Environment -> Externs -> SupplyT Make ()
260+ codegen m _ exts = do
269261 let mn = CF.moduleName m
270262 foreignInclude <- case mn `M.lookup` foreigns of
271263 Just (path, _)
@@ -275,7 +267,7 @@ buildMakeActions outputDir filePathMap foreigns usePrefix =
275267 | otherwise -> return $ Just $ J.JSApp (J.JSVar "require") [J.JSStringLiteral "./foreign"]
276268 Nothing | requiresForeign m -> throwError . errorMessage $ MissingFFIModule mn
277269 | otherwise -> return Nothing
278− pjs <- evalSupplyT nextVar $ prettyPrintJS <$> J.moduleToJs m foreignInclude
270+ pjs <- prettyPrintJS <$> J.moduleToJs m foreignInclude
279271 let filePath = runModuleName mn
280272 jsFile = outputDir </> filePath </> "index.js"
281273 externsFile = outputDir </> filePath </> "externs.purs"
@@ -283,10 +275,11 @@ buildMakeActions outputDir filePathMap foreigns usePrefix =
283275 prefix = ["Generated by psc version " ++ showVersion Paths.version | usePrefix]
284276 js = unlines $ map ("// " ++) prefix ++ [pjs]
285277 verboseErrorsEnabled <- asks optionsVerboseErrors
286− when verboseErrorsEnabled $ progress $ "Writing " ++ jsFile
287− writeTextFile jsFile js
288− maybe (return ()) (writeTextFile foreignFile . snd) $ mn `M.lookup` foreigns
289− writeTextFile externsFile exts
278+ lift $ do
279+ when verboseErrorsEnabled $ progress $ "Writing " ++ jsFile
280+ writeTextFile jsFile js
281+ maybe (return ()) (writeTextFile foreignFile . snd) $ mn `M.lookup` foreigns
282+ writeTextFile externsFile exts
290283
291284 requiresForeign :: CF.Module a -> Bool
292285 requiresForeign = not . null . CF.moduleForeign