@@ -19,7 +19,7 @@
19{-# LANGUAGE FlexibleContexts #-}
19{-# LANGUAGE FlexibleContexts #-}
20{-# LANGUAGE ScopedTypeVariables #-}
20{-# LANGUAGE ScopedTypeVariables #-}
22−module Language.PureScript
22+module Language.PureScript
23 ( module P
23 ( module P
25 , compile'
25 , compile'
@@ -104,7 +104,7 @@ compile' env ms prefix = do
104 let elim = if null entryPoints then corefn else eliminateDeadCode entryPoints corefn
104 let elim = if null entryPoints then corefn else eliminateDeadCode entryPoints corefn
105 let renamed = renameInModules elim
105 let renamed = renameInModules elim
106 let codeGenModuleNames = moduleNameFromString `map` codeGenModules additional
106 let codeGenModuleNames = moduleNameFromString `map` codeGenModules additional
107− let modulesToCodeGen = if null codeGenModuleNames then renamed else filter (\(CoreFn.Module mn _ _ _ _) -> mn `elem` codeGenModuleNames) renamed
107+ let modulesToCodeGen = if null codeGenModuleNames then renamed else filter (\(CoreFn.Module _ mn _ _ _ _) -> mn `elem` codeGenModuleNames) renamed
108 js <- concat <$> (evalSupplyT nextVar $ T.traverse moduleToJs modulesToCodeGen)
108 js <- concat <$> (evalSupplyT nextVar $ T.traverse moduleToJs modulesToCodeGen)
109 let exts = intercalate "\n" . map (`moduleToPs` env') $ regrouped
109 let exts = intercalate "\n" . map (`moduleToPs` env') $ regrouped
110 js' <- generateMain env' js
110 js' <- generateMain env' js
@@ -170,11 +170,11 @@ make :: forall m. (Functor m, Applicative m, Monad m, MonadMake m)
170 => FilePath -> [(Either RebuildPolicy FilePath, Module)] -> [String] -> m Environment
170 => FilePath -> [(Either RebuildPolicy FilePath, Module)] -> [String] -> m Environment
171make outputDir ms prefix = do
171make outputDir ms prefix = do
172 noPrelude <- asks optionsNoPrelude
172 noPrelude <- asks optionsNoPrelude
173− let filePathMap = M.fromList (map (\(fp, Module mn _ _) -> (mn, fp)) ms)
173+ let filePathMap = M.fromList (map (\(fp, Module _ mn _ _) -> (mn, fp)) ms)
175 (sorted, graph) <- sortModules $ map importPrim $ if noPrelude then map snd ms else map (importPrelude . snd) ms
175 (sorted, graph) <- sortModules $ map importPrim $ if noPrelude then map snd ms else map (importPrelude . snd) ms
177− toRebuild <- foldM (\s (Module moduleName' _ _) -> do
177+ toRebuild <- foldM (\s (Module _ moduleName' _ _) -> do
178 let filePath = runModuleName moduleName'
178 let filePath = runModuleName moduleName'
180 jsFile = outputDir </> filePath </> "index.js"
180 jsFile = outputDir </> filePath </> "index.js"
@@ -203,18 +203,18 @@ make outputDir ms prefix = do
203 (_, env') <- lift . runCheck' env $ typeCheckModule Nothing m
203 (_, env') <- lift . runCheck' env $ typeCheckModule Nothing m
205 go env' ms'
205 go env' ms'
206− go env ((True, m@(Module moduleName' _ exps)) : ms') = do
206+ go env ((True, m@(Module coms moduleName' _ exps)) : ms') = do
207 let filePath = runModuleName moduleName'
207 let filePath = runModuleName moduleName'
208 jsFile = outputDir </> filePath </> "index.js"
208 jsFile = outputDir </> filePath </> "index.js"
209 externsFile = outputDir </> filePath </> "externs.purs"
209 externsFile = outputDir </> filePath </> "externs.purs"
211 lift . progress $ "Compiling " ++ runModuleName moduleName'
211 lift . progress $ "Compiling " ++ runModuleName moduleName'
213− (Module _ elaborated _, env') <- lift . runCheck' env $ typeCheckModule Nothing m
213+ (Module _ _ elaborated _, env') <- lift . runCheck' env $ typeCheckModule Nothing m
215 regrouped <- stringifyErrorStack True . createBindingGroups moduleName' . collapseBindingGroups $ elaborated
215 regrouped <- stringifyErrorStack True . createBindingGroups moduleName' . collapseBindingGroups $ elaborated
217− let mod' = Module moduleName' regrouped exps
217+ let mod' = Module coms moduleName' regrouped exps
218 let corefn = CoreFn.moduleToCoreFn env' mod'
218 let corefn = CoreFn.moduleToCoreFn env' mod'
219 let [renamed] = renameInModules [corefn]
219 let [renamed] = renameInModules [corefn]
@@ -229,16 +229,16 @@ make outputDir ms prefix = do
230 rebuildIfNecessary :: M.Map ModuleName [ModuleName] -> S.Set ModuleName -> [Module] -> m [(Bool, Module)]
230 rebuildIfNecessary :: M.Map ModuleName [ModuleName] -> S.Set ModuleName -> [Module] -> m [(Bool, Module)]
231 rebuildIfNecessary _ _ [] = return []
231 rebuildIfNecessary _ _ [] = return []
232− rebuildIfNecessary graph toRebuild (m@(Module moduleName' _ _) : ms') | moduleName' `S.member` toRebuild = do
232+ rebuildIfNecessary graph toRebuild (m@(Module _ moduleName' _ _) : ms') | moduleName' `S.member` toRebuild = do
233 let deps = fromMaybe [] $ moduleName' `M.lookup` graph
233 let deps = fromMaybe [] $ moduleName' `M.lookup` graph
234 toRebuild' = toRebuild `S.union` S.fromList deps
234 toRebuild' = toRebuild `S.union` S.fromList deps
235 (:) (True, m) <$> rebuildIfNecessary graph toRebuild' ms'
235 (:) (True, m) <$> rebuildIfNecessary graph toRebuild' ms'
236− rebuildIfNecessary graph toRebuild (Module moduleName' _ _ : ms') = do
236+ rebuildIfNecessary graph toRebuild (Module _ moduleName' _ _ : ms') = do
237 let externsFile = outputDir </> runModuleName moduleName' </> "externs.purs"
237 let externsFile = outputDir </> runModuleName moduleName' </> "externs.purs"
238 externs <- readTextFile externsFile
238 externs <- readTextFile externsFile
239 externsModules <- fmap (map snd) . either (throwError . show) return $ P.parseModulesFromFiles id [(externsFile, externs)]
239 externsModules <- fmap (map snd) . either (throwError . show) return $ P.parseModulesFromFiles id [(externsFile, externs)]
240 case externsModules of
240 case externsModules of
241− [m'@(Module moduleName'' _ _)] | moduleName'' == moduleName' -> (:) (False, m') <$> rebuildIfNecessary graph toRebuild ms'
241+ [m'@(Module _ moduleName'' _ _)] | moduleName'' == moduleName' -> (:) (False, m') <$> rebuildIfNecessary graph toRebuild ms'
242 _ -> throwError $ "Externs file " ++ externsFile ++ " was invalid"
242 _ -> throwError $ "Externs file " ++ externsFile ++ " was invalid"
244reverseDependencies :: ModuleGraph -> M.Map ModuleName [ModuleName]
244reverseDependencies :: ModuleGraph -> M.Map ModuleName [ModuleName]
@@ -251,9 +251,9 @@ reverseDependencies g = combine [ (dep, mn) | (mn, deps) <- g, dep <- deps ]
251-- Add an import declaration for a module if it does not already explicitly import it.
251-- Add an import declaration for a module if it does not already explicitly import it.
253addDefaultImport :: ModuleName -> Module -> Module
253addDefaultImport :: ModuleName -> Module -> Module
254−addDefaultImport toImport m@(Module mn decls exps) =
254+addDefaultImport toImport m@(Module coms mn decls exps) =
255 if isExistingImport `any` decls || mn == toImport then m
255 if isExistingImport `any` decls || mn == toImport then m
256− else Module mn (ImportDeclaration toImport Unqualified Nothing : decls) exps
256+ else Module coms mn (ImportDeclaration toImport Unqualified Nothing : decls) exps
258 isExistingImport (ImportDeclaration mn' _ _) | mn' == toImport = True
258 isExistingImport (ImportDeclaration mn' _ _) | mn' == toImport = True
259 isExistingImport (PositionedDeclaration _ _ d) = isExistingImport d
259 isExistingImport (PositionedDeclaration _ _ d) = isExistingImport d