on master help sign in
Get rid of some Data.List.NonEmpty uses
commit684ec7af82c612312e9d7cb759be194eda173d45 authorEvan Czaplicki <evancz@users.noreply.github.com> dateTue 3 Apr 2018, 16:34 (9 years ago) parentf609efa
4 files changed+19−24
builder/src/File/Args.hs+3−4 builder/src/File/Crawl.hs+6−10 builder/src/File/Header.hs+6−5 builder/src/Generate/Output.hs+4−5
builder/src/File/Args.hs+3−4
@@ -7,7 +7,6 @@ module File.Args
77 where
88
99
10−import Data.List.NonEmpty (NonEmpty((:|)))
1110import qualified Elm.Compiler.Module as Module
1211import qualified Elm.Project.Json as Project
1312import qualified Elm.Project.Summary as Summary
@@ -15,9 +14,9 @@ import qualified Reporting.Exit as Exit
1514import qualified Reporting.Task as Task
1615
1716
18−data Args roots
17+data Args root
1918 = Pkg [Module.Raw]
20− | Roots (NonEmpty roots)
19+ | Roots root [root]
2120
2221
2322fromPaths :: Summary.Summary -> [FilePath] -> Task.Task (Args FilePath)
@@ -27,7 +26,7 @@ fromPaths summary paths =
2726 fromSummary summary
2827
2928 first : rest ->
30− return $ Roots (first :| rest)
29+ return $ Roots first rest
3130
3231
3332fromSummary :: Summary.Summary -> Task.Task (Args a)
builder/src/File/Crawl.hs+6−10
@@ -13,8 +13,6 @@ import Control.Monad (foldM)
1313import Control.Monad.Except (liftIO)
1414import qualified Data.ByteString as BS
1515import qualified Data.Graph as Graph
16−import qualified Data.List.NonEmpty as NonEmpty
17−import Data.List.NonEmpty (NonEmpty((:|)))
1816import qualified Data.Map as Map
1917import qualified Data.Set as Set
2018
@@ -73,14 +71,13 @@ crawl summary args =
7371 let graph = initWorkGraph (Args.Pkg names) Map.empty
7472 depthFirstSearch summary roots graph
7573
76− Args.Roots (path :| []) ->
74+ Args.Roots path [] ->
7775 crawlHelp summary =<< Header.readOneFile summary path
7876
79− Args.Roots paths ->
80− do headers <- Header.readManyFiles summary paths
81− let names = NonEmpty.map fst headers
82− let unvisited = concatMap toUnvisited (NonEmpty.toList headers)
83− let graph = initWorkGraph (Args.Roots names) (Map.fromList (NonEmpty.toList headers))
77+ Args.Roots path paths ->
78+ do (h,hs) <- Header.readManyFiles summary path paths
79+ let unvisited = concatMap toUnvisited (h:hs)
80+ let graph = initWorkGraph (Args.Roots (fst h) (map fst hs)) (Map.fromList (h:hs))
8481 depthFirstSearch summary unvisited graph
8582 where
8683 toUnvisited (name, Header.Info path _ _ deps) =
@@ -96,10 +93,9 @@ crawlFromSource summary@(Summary _ project _ _ _) source =
9693crawlHelp :: Summary -> ( Maybe Module.Raw, Header.Info ) -> Task.Task Result
9794crawlHelp summary ( maybeName, info@(Header.Info path _ _ deps) ) =
9895 do let name = maybe "Main" id maybeName
99− let args = Args.Roots (name :| [])
10096 let toUnvisited dep = Unvisited (maybe (E.File path) (E.Module path) maybeName) dep
10197 let roots = map toUnvisited deps
102− let graph = initWorkGraph args (Map.singleton name info)
98+ let graph = initWorkGraph (Args.Roots name []) (Map.singleton name info)
10399 depthFirstSearch summary roots graph
104100
105101
builder/src/File/Header.hs+6−5
@@ -95,14 +95,15 @@ readOneHelp path =
9595-- READ MANY FILES
9696
9797
98−readManyFiles :: Summary -> NonEmpty FilePath -> Task.Task (NonEmpty (Module.Raw, Info))
99−readManyFiles summary files =
98+readManyFiles :: Summary -> FilePath -> [FilePath] -> Task.Task ((Module.Raw, Info), [(Module.Raw, Info)])
99+readManyFiles summary file files =
100100 Task.mapError Exit.Crawl $
101− do infos <- traverse (readManyFilesHelp summary) files
101+ do info <- readManyFilesHelp summary file
102+ infos <- traverse (readManyFilesHelp summary) files
102103 let insert (name, info) dict = Map.insertWith (<>) name (info :| []) dict
103− let nameTable = foldr insert Map.empty infos
104+ let nameTable = foldr insert Map.empty (info:infos)
104105 _ <- Map.traverseWithKey detectDuplicateNames nameTable
105− return infos
106+ return (info, infos)
106107
107108
108109readManyFilesHelp :: Summary -> FilePath -> Task.Task_ E.Exit (Module.Raw, Info)
builder/src/Generate/Output.hs+4−5
@@ -12,7 +12,6 @@ module Generate.Output
1212
1313import Control.Monad.Trans (liftIO)
1414import qualified Data.ByteString.Builder as B
15−import qualified Data.List.NonEmpty as NonEmpty
1615import qualified Data.Map as Map
1716import Data.Monoid ((<>))
1817import qualified System.Directory as Dir
@@ -55,8 +54,8 @@ generate options summary graph@(Crawl.Graph args _ _ _ _) =
5554 Args.Pkg _ ->
5655 return ()
5756
58− Args.Roots names ->
59− generateMonolith options summary graph (NonEmpty.toList names)
57+ Args.Roots name names ->
58+ generateMonolith options summary graph (name:names)
6059
6160
6261
@@ -64,11 +63,11 @@ generate options summary graph@(Crawl.Graph args _ _ _ _) =
6463
6564
6665generateMonolith :: Options -> Summary.Summary -> Crawl.Result -> [Module.Raw] -> Task.Task ()
67−generateMonolith (Options debug target maybeOutput) summary@(Summary.Summary _ project _ ifaces _) graph rootNames =
66+generateMonolith (Options mode target maybeOutput) summary@(Summary.Summary _ project _ ifaces _) graph rootNames =
6867 do let pkg = Project.getName project
6968 let roots = map (Module.Canonical pkg) rootNames
7069 objectGraph <- organize summary graph
71− case Obj.generate debug target ifaces objectGraph roots of
70+ case Obj.generate mode target ifaces objectGraph roots of
7271 Obj.None ->
7372 return ()
7473