@@ -1,8 +1,15 @@
1{-# LANGUAGE FlexibleContexts #-}
1{-# LANGUAGE FlexibleContexts #-}
2{-# LANGUAGE RecordWildCards #-}
2{-# LANGUAGE RecordWildCards #-}
3{-# LANGUAGE ScopedTypeVariables #-}
3{-# LANGUAGE ScopedTypeVariables #-}
4+{-# LANGUAGE TupleSections #-}
5−module Language.PureScript.Sugar.Names (desugarImports) where
6+module Language.PureScript.Sugar.Names
8+ , desugarImportsWithEnv
7import Prelude ()
14import Prelude ()
8import Prelude.Compat
15import Prelude.Compat
@@ -35,11 +42,20 @@ import Language.PureScript.Linter.Imports
35-- modules should be topologically sorted beforehand.
42-- modules should be topologically sorted beforehand.
37desugarImports :: forall m. (Applicative m, MonadError MultipleErrors m, MonadWriter MultipleErrors m) => [ExternsFile] -> [Module] -> m [Module]
44desugarImports :: forall m. (Applicative m, MonadError MultipleErrors m, MonadWriter MultipleErrors m) => [ExternsFile] -> [Module] -> m [Module]
38−desugarImports externs modules = do
45+desugarImports externs modules =
46+ fmap snd (desugarImportsWithEnv externs modules)
50+ . (Applicative m, MonadError MultipleErrors m, MonadWriter MultipleErrors m)
54+desugarImportsWithEnv externs modules = do
39 env <- silence $ foldM externsEnv primEnv externs
55 env <- silence $ foldM externsEnv primEnv externs
40 modules' <- traverse updateExportRefs modules
56 modules' <- traverse updateExportRefs modules
41 (modules'', env') <- foldM updateEnv ([], env) modules'
57 (modules'', env') <- foldM updateEnv ([], env) modules'
42− traverse (renameInModule' env') modules''
58+ (env',) <$> traverse (renameInModule' env') modules''
44 silence :: m a -> m a
60 silence :: m a -> m a
45 silence = censor (const mempty)
61 silence = censor (const mempty)