@@ -11,9 +11,7 @@ module File.Header
1111
1212import Control.Monad.Except (liftIO)
1313import qualified Data.ByteString as BS
14−import Data.List.NonEmpty (NonEmpty((:|)))
1514import qualified Data.Map as Map
16−import Data.Semigroup ((<>))
1715import qualified Data.Time.Calendar as Day
1816import qualified Data.Time.Clock as Time
1917import qualified System.Directory as Dir
@@ -100,10 +98,12 @@ readManyFiles summary file files =
10098 Task.mapError Exit.Crawl $
10199 do info <- readManyFilesHelp summary file
102100 infos <- traverse (readManyFilesHelp summary) files
103− let insert (name, info) dict = Map.insertWith (<>) name (info :| []) dict
104101 let nameTable = foldr insert Map.empty (info:infos)
105102 _ <- Map.traverseWithKey detectDuplicateNames nameTable
106103 return (info, infos)
104+ where
105+ append (x,xs) (y,ys) = (x, xs ++ y : ys)
106+ insert (k,v) dict = Map.insertWith append k (v, []) dict
107107
108108
109109readManyFilesHelp :: Summary -> FilePath -> Task.Task_ E.Exit (Module.Raw, Info)
@@ -118,8 +118,8 @@ readManyFilesHelp summary path =
118118 return (name, info)
119119
120120
121−detectDuplicateNames :: Module.Raw -> NonEmpty Info -> Task.Task_ E.Exit ()
122−detectDuplicateNames name (info :| otherInfos) =
121+detectDuplicateNames :: Module.Raw -> (Info, [Info]) -> Task.Task_ E.Exit ()
122+detectDuplicateNames name (info, otherInfos) =
123123 case otherInfos of
124124 [] ->
125125 return ()