Skip to content

Commit d7a8097

Browse files
committed
Combine fields as ProjectImport
1 parent aa35b73 commit d7a8097

File tree

2 files changed

+11
-9
lines changed

2 files changed

+11
-9
lines changed

cabal-install-solver/src/Distribution/Solver/Types/ProjectConfigPath.hs

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -188,16 +188,19 @@ docProjectConfigFiles ps = vcat
188188
-- | A message for a cyclical import, a "cyclical import of".
189189
cyclicalImportMsg :: ProjectConfigPath -> Doc
190190
cyclicalImportMsg path@(ProjectConfigPath (duplicate :| _)) =
191-
seenImportMsg (text "cyclical import of" <+> text duplicate <> semi) duplicate path []
191+
seenImportMsg
192+
(text "cyclical import of" <+> text duplicate <> semi)
193+
(ProjectImport duplicate path)
194+
[]
192195

193196
-- | A message for a duplicate import, a "duplicate import of". If a check for
194197
-- cyclical imports has already been made then this would report a duplicate
195198
-- import by two different paths.
196-
duplicateImportMsg :: Doc -> FilePath -> ProjectConfigPath -> [ProjectImport] -> Doc
199+
duplicateImportMsg :: Doc -> ProjectImport -> [ProjectImport] -> Doc
197200
duplicateImportMsg intro = seenImportMsg intro
198201

199-
seenImportMsg :: Doc -> FilePath -> ProjectConfigPath -> [ProjectImport] -> Doc
200-
seenImportMsg intro duplicate path seenImports =
202+
seenImportMsg :: Doc -> ProjectImport -> [ProjectImport] -> Doc
203+
seenImportMsg intro ProjectImport{importOf = duplicate, importBy = path} seenImports =
201204
vcat
202205
[ intro
203206
, nest 2 (docProjectConfigPath path)

cabal-install/src/Distribution/Client/ProjectConfig/Legacy.hs

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -268,8 +268,7 @@ parseProject rootPath cacheDir httpTransport verbosity configToParse = do
268268
return result
269269

270270
data Dupes = Dupes
271-
{ dupesUniqueImport :: FilePath
272-
, dupesNormLocPath :: ProjectConfigPath
271+
{ dupesImport :: ProjectImport
273272
, dupesSeenImportsBy :: [ProjectImport]
274273
}
275274
deriving (Eq)
@@ -280,10 +279,10 @@ instance Ord Dupes where
280279
type DupesMap = Map FilePath [Dupes]
281280

282281
dupesMsg :: (FilePath, [Dupes]) -> Doc
283-
dupesMsg (duplicate, ds@(take 1 . sortOn dupesNormLocPath -> dupes)) =
282+
dupesMsg (duplicate, ds@(take 1 . sortOn (importBy . dupesImport) -> dupes)) =
284283
vcat $
285284
((text "Warning:" <+> int (length ds) <+> text "imports of" <+> text duplicate) <> semi)
286-
: ((\Dupes{..} -> duplicateImportMsg Disp.empty dupesUniqueImport dupesNormLocPath dupesSeenImportsBy) <$> dupes)
285+
: ((\Dupes{..} -> duplicateImportMsg Disp.empty dupesImport dupesSeenImportsBy) <$> dupes)
287286

288287
parseProjectSkeleton
289288
:: FilePath
@@ -325,7 +324,7 @@ parseProjectSkeleton cacheDir httpTransport verbosity importsBy dupesMap project
325324
(noticeDoc verbosity $ untrimmedUriImportMsg (text "Warning:") importLocPath)
326325
let fs = (\z -> CondNode z [normLocPath] mempty) <$> fieldsToConfig normSource (reverse acc)
327326
let uniqueFields = if uniqueImport `elem` seenImports then [] else xs
328-
atomicModifyIORef' dupesMap $ \dm -> (Map.insertWith (++) uniqueImport [Dupes uniqueImport normLocPath seenImportsBy] dm, ())
327+
atomicModifyIORef' dupesMap $ \dm -> (Map.insertWith (++) uniqueImport [Dupes (ProjectImport uniqueImport normLocPath) seenImportsBy] dm, ())
329328
res <- parseProjectSkeleton cacheDir httpTransport verbosity importsBy dupesMap projectDir importLocPath . ProjectConfigToParse =<< fetchImportConfig normLocPath
330329
rest <- go [] uniqueFields
331330
pure . fmap mconcat . sequence $ [projectParse Nothing normSource fs, res, rest]

0 commit comments

Comments
 (0)