@@ -38,12 +38,13 @@ import Language.PureScript.Docs.Convert (collectBookmarks)
38-- * Collect a list of bookmarks from the whole set of source files
38-- * Collect a list of bookmarks from the whole set of source files
39-- * Collect a list of desugared modules from just the input source files (not
39-- * Collect a list of desugared modules from just the input source files (not
40-- dependencies)
40-- dependencies)
41−-- * Return the desugared modules and the bookmarks.
41+-- * Return the desugared modules, the bookmarks, and the imports/exports
42+-- Env (which is needed for producing documentation).
42parseAndDesugar ::
43parseAndDesugar ::
43 (Functor m, Applicative m, MonadError P.MultipleErrors m, MonadIO m) =>
44 (Functor m, Applicative m, MonadError P.MultipleErrors m, MonadIO m) =>
44 [FilePath]
45 [FilePath]
45 -> [(PackageName, FilePath)]
46 -> [(PackageName, FilePath)]
46− -> m ([P.Module], [Bookmark])
47+ -> m ([P.Module], [Bookmark], P.Env)
47parseAndDesugar inputFiles depsFiles = do
48parseAndDesugar inputFiles depsFiles = do
48 inputFiles' <- traverse (parseAs Local) inputFiles
49 inputFiles' <- traverse (parseAs Local) inputFiles
49 depsFiles' <- traverse (\(pkgName, f) -> parseAs (FromDep pkgName) f) depsFiles
50 depsFiles' <- traverse (\(pkgName, f) -> parseAs (FromDep pkgName) f) depsFiles
@@ -73,15 +74,15 @@ desugarWithBookmarks ::
73 (MonadError P.MultipleErrors m, MonadIO m) =>
74 (MonadError P.MultipleErrors m, MonadIO m) =>
74 [(FileInfo, P.Module)]
75 [(FileInfo, P.Module)]
75 -> [P.Module]
76 -> [P.Module]
76− -> m ([P.Module], [Bookmark])
77+ -> m ([P.Module], [Bookmark], P.Env)
77desugarWithBookmarks msInfo msSorted = do
78desugarWithBookmarks msInfo msSorted = do
78− msDesugared <- throwLeft (desugar msSorted)
79+ (env, msDesugared) <- throwLeft (desugar msSorted)
80 let msDeps = getDepsModuleNames (map (\(fp, m) -> (,m) <$> fp) msInfo)
81 let msDeps = getDepsModuleNames (map (\(fp, m) -> (,m) <$> fp) msInfo)
81 msPackages = map (addPackage msDeps) msDesugared
82 msPackages = map (addPackage msDeps) msDesugared
82 bookmarks = concatMap collectBookmarks msPackages
83 bookmarks = concatMap collectBookmarks msPackages
84− return (takeLocals msPackages, bookmarks)
85+ return (takeLocals msPackages, bookmarks, env)
86throwLeft :: (MonadError l m) => Either l r -> m r
87throwLeft :: (MonadError l m) => Either l r -> m r
87throwLeft = either throwError return
88throwLeft = either throwError return
@@ -105,13 +106,13 @@ importPrim = P.addDefaultImport (P.ModuleName [P.ProperName C.prim])
105desugar ::
106desugar ::
106 (Functor m, Applicative m, MonadError P.MultipleErrors m) =>
107 (Functor m, Applicative m, MonadError P.MultipleErrors m) =>
107 [P.Module]
108 [P.Module]
108− -> m [P.Module]
109+ -> m (P.Env, [P.Module])
109desugar = P.evalSupplyT 0 . desugar'
110desugar = P.evalSupplyT 0 . desugar'
111 desugar' =
112 desugar' =
112 traverse P.desugarDoModule
113 traverse P.desugarDoModule
113 >=> P.desugarCasesModule
114 >=> P.desugarCasesModule
114− >=> ignoreWarnings . P.desugarImports []
115+ >=> ignoreWarnings . P.desugarImportsWithEnv []
116 ignoreWarnings m = liftM fst (runWriterT m)
117 ignoreWarnings m = liftM fst (runWriterT m)