Skip to content

Commit a6d24a1

Browse files
committed
Combine fields as ProjectImport
1 parent 1accbca commit a6d24a1

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
@@ -184,16 +184,19 @@ docProjectConfigFiles ps = vcat
184184
-- | A message for a cyclical import, a "cyclical import of".
185185
cyclicalImportMsg :: ProjectConfigPath -> Doc
186186
cyclicalImportMsg path@(ProjectConfigPath (duplicate :| _)) =
187-
seenImportMsg (text "cyclical import of" <+> text duplicate <> semi) duplicate path []
187+
seenImportMsg
188+
(text "cyclical import of" <+> text duplicate <> semi)
189+
(ProjectImport duplicate path)
190+
[]
188191

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

195-
seenImportMsg :: Doc -> FilePath -> ProjectConfigPath -> [ProjectImport] -> Doc
196-
seenImportMsg intro duplicate path seenImports =
198+
seenImportMsg :: Doc -> ProjectImport -> [ProjectImport] -> Doc
199+
seenImportMsg intro ProjectImport{importOf = duplicate, importBy = path} seenImports =
197200
vcat
198201
[ intro
199202
, 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
@@ -265,8 +265,7 @@ parseProject rootPath cacheDir httpTransport verbosity configToParse = do
265265
return result
266266

267267
data Dupes = Dupes
268-
{ dupesUniqueImport :: FilePath
269-
, dupesNormLocPath :: ProjectConfigPath
268+
{ dupesImport :: ProjectImport
270269
, dupesSeenImportsBy :: [ProjectImport]
271270
}
272271
deriving (Eq)
@@ -277,10 +276,10 @@ instance Ord Dupes where
277276
type DupesMap = Map FilePath [Dupes]
278277

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

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

0 commit comments

Comments
 (0)