Skip to content
Snippets Groups Projects
Commit 836d6b6d authored by Patrick Augusto's avatar Patrick Augusto
Browse files

Pinpointing in which modules the packages couldn't be found

parent a63fe9b9
No related branches found
No related tags found
No related merge requests found
......@@ -455,4 +455,4 @@ dependenciesPrompt
-> InitFlags
-> m [Dependency]
dependenciesPrompt pkgIx flags = getDependencies flags $
retrieveDependencies flags [fromString "Prelude"] pkgIx
retrieveDependencies flags [(fromString "Prelude", fromString "Prelude")] pkgIx
......@@ -442,12 +442,11 @@ dependenciesHeuristics flags fp pkgIx = getDependencies flags $ do
Flag x -> x
NoFlag -> map moduleName sources
retrieveDependencies flags
( nub -- skips duplicates
( fromString "Prelude" -- gets base as dependency
: (filter (`notElem` mods) -- skips modules from this own package
. concatMap imports $ sources)))
pkgIx
groupedDeps = concatMap (\s -> map (\i -> (moduleName s, i)) (imports s)) sources
filteredDeps = filter ((`notElem` mods) . snd) groupedDeps
preludeNub = nubBy (\a b -> snd a == snd b) $ (fromString "Prelude", fromString "Prelude") : filteredDeps
retrieveDependencies flags preludeNub pkgIx
-- | Retrieve the list of extensions
otherExtsHeuristics :: Interactive m => InitFlags -> FilePath -> m [Extension]
......
......@@ -213,15 +213,15 @@ isSourceFile :: Maybe [FilePath] -> SourceFileEntry -> Bool
isSourceFile Nothing sf = isSourceFile (Just ["."]) sf
isSourceFile (Just srcDirs) sf = any (equalFilePath (relativeSourcePath sf)) srcDirs
retrieveDependencies :: Interactive m => InitFlags -> [ModuleName] -> InstalledPackageIndex -> m [P.Dependency]
retrieveDependencies :: Interactive m => InitFlags -> [(ModuleName, ModuleName)] -> InstalledPackageIndex -> m [P.Dependency]
retrieveDependencies flags mods' pkgIx = do
let mods = mods'
modMap :: M.Map ModuleName [InstalledPackageInfo]
modMap = M.map (filter exposed) $ moduleNameIndex pkgIx
modDeps :: [(ModuleName, Maybe [InstalledPackageInfo])]
modDeps = map (\mn -> (mn, M.lookup mn modMap)) mods
modDeps :: [(ModuleName, ModuleName, Maybe [InstalledPackageInfo])]
modDeps = map (\(mn, ds) -> (mn, ds, M.lookup ds modMap)) mods
-- modDeps = map (id &&& flip M.lookup modMap) mods
message (fromFlagOrDefault silent $ initVerbosity flags) "\nGuessing dependencies..."
......@@ -233,9 +233,9 @@ retrieveDependencies flags mods' pkgIx = do
chooseDep
:: Interactive m
=> InitFlags
-> (ModuleName, Maybe [InstalledPackageInfo])
-> (ModuleName, ModuleName, Maybe [InstalledPackageInfo])
-> m (Maybe P.Dependency)
chooseDep flags (m, mipi) = case mipi of
chooseDep flags (importer, m, mipi) = case mipi of
-- We found some packages: group them by name.
Just ps@(_:_) ->
case NE.groupBy (\x y -> P.pkgName x == P.pkgName y) $ map P.packageId ps of
......@@ -268,7 +268,7 @@ chooseDep flags (m, mipi) = case mipi of
return Nothing
_ -> do
message v ("\nWarning: no package found providing " ++ prettyShow m ++ ".")
message v ("\nWarning: no package found providing " ++ prettyShow m ++ " in " ++ prettyShow importer ++ ".")
return Nothing
where
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment