Skip to content

Commit cd73e4d

Browse files
committed
[ fix haskell#7251 ] sort and nub module list inferred by cabal init --lib
This should fix the problem that duplicate entries end up in exposed-modules, e.g. from Foo.x and Foo.hs (with alex as build-tool).
1 parent d60a060 commit cd73e4d

File tree

1 file changed

+7
-1
lines changed
  • cabal-install/src/Distribution/Client/Init

1 file changed

+7
-1
lines changed

cabal-install/src/Distribution/Client/Init/Command.hs

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,8 @@ import System.FilePath
3333

3434
import qualified Data.List.NonEmpty as NE
3535
import qualified Data.Map as M
36+
import qualified Data.Set as Set
37+
3638
import Control.Monad
3739
( (>=>) )
3840
import Control.Arrow
@@ -595,7 +597,7 @@ getModulesBuildToolsAndDeps pkgIx flags = do
595597
let sourceFiles = filter (isSourceFile (sourceDirs flags)) sourceFiles0
596598

597599
Just mods <- return (exposedModules flags)
598-
?>> (return . Just . map moduleName $ sourceFiles)
600+
?>> (return . Just . sortNub . map moduleName $ sourceFiles)
599601

600602
tools <- return (buildTools flags)
601603
?>> (return . Just . neededBuildPrograms $ sourceFiles)
@@ -645,6 +647,10 @@ getModulesBuildToolsAndDeps pkgIx flags = do
645647
, otherExts = exts
646648
}
647649

650+
where
651+
sortNub :: Ord a => [a] -> [a]
652+
sortNub = Set.toList . Set.fromList
653+
648654
-- | Given a list of imported modules, retrieve the list of dependencies that
649655
-- provide those modules.
650656
importsToDeps :: InitFlags -> [ModuleName] -> InstalledPackageIndex -> IO [P.Dependency]

0 commit comments

Comments
 (0)