@@ -13,10 +13,9 @@ import Control.Monad.Writer (class MonadTell, Writer, runWriter, tell)
1313import Data.Array ((:))
1414import Data.Array as Array
1515import Data.Array.NonEmpty as NonEmptyArray
16- import Data.Filterable (compact )
17- import Data.Foldable (any , intercalate )
16+ import Data.Foldable (intercalate )
1817import Data.Function (on )
19- import Data.Maybe (Maybe (..), fromMaybe , isNothing , maybe )
18+ import Data.Maybe (Maybe (..), fromMaybe , maybe )
2019import Data.String (Pattern (..))
2120import Data.String as String
2221import Data.Traversable (for , for_ , traverse )
@@ -57,16 +56,12 @@ mergeImports :: Array PsImport -> Array PsImport
5756mergeImports imps =
5857 let
5958 sorted = Array .sortBy ((compare `on` _.mod) <> (compare `on` _.alias)) imps
60- grouped = Array .groupBy (\a b -> a.mod == b.mod && b.alias == b.alias) sorted
61- in grouped <#> \group -> do
62- let typs = map _.typ group
63- { mod: (NonEmptyArray .head group).mod
64- , alias: (NonEmptyArray .head group).alias
65- , typ:
66- if any isNothing typs
67- then Nothing
68- else Just $ intercalate " , " (Array .nub <<< compact <<< NonEmptyArray .toArray $ typs)
69- }
59+ grouped = Array .groupBy (\a b -> a.mod == b.mod && a.alias == b.alias) sorted
60+ in grouped <#> \group ->
61+ (NonEmptyArray .head group)
62+ { typ = traverse _.typ group <#> NonEmptyArray .toArray
63+ >>> Array .sort >>> Array .nub >>> intercalate " , "
64+ }
7065
7166outputSpec :: String -> Array Module -> OutputSpec
7267outputSpec defaultModulePrefix modules =
0 commit comments