@@ -199,6 +199,7 @@ import Distribution.Utils.Path hiding
199
199
200
200
import qualified Data.ByteString.Char8 as BS
201
201
import Data.Functor ((<&>) )
202
+ import Data.List (sortOn )
202
203
import qualified Data.Map as Map
203
204
import qualified Data.Set as Set
204
205
import Network.URI (URI (.. ), nullURIAuth , parseURI )
@@ -207,13 +208,12 @@ import System.FilePath (isAbsolute, isPathSeparator, makeValid, splitFileName, (
207
208
import Text.PrettyPrint
208
209
( Doc
209
210
, render
210
- , ($+$)
211
- , vcat
212
- , text
213
211
, semi
212
+ , text
213
+ , vcat
214
+ , ($+$)
214
215
)
215
- import qualified Text.PrettyPrint as Disp (empty , int , text , render )
216
- import Data.List (sortOn )
216
+ import qualified Text.PrettyPrint as Disp (empty , int , render , text )
217
217
218
218
------------------------------------------------------------------
219
219
-- Handle extended project config files with conditionals and imports.
@@ -280,13 +280,18 @@ data Dupes = Dupes
280
280
, dupesNormLocPath :: ProjectConfigPath
281
281
, dupesSeenImportsBy :: [(FilePath , ProjectConfigPath )]
282
282
}
283
+ deriving (Eq )
284
+
285
+ instance Ord Dupes where
286
+ compare = compare `on` length . dupesSeenImportsBy
283
287
284
288
type DupesMap = Map FilePath [Dupes ]
285
289
286
290
dupesMsg :: (FilePath , [Dupes ]) -> Doc
287
- dupesMsg (duplicate, ds@ (take 1 . sortOn dupesUniqueImport -> dupes)) = vcat $
288
- ((text " Warning:" <+> Disp. int (length ds) <+> text " imports of" <+> text duplicate) <> semi)
289
- : ((\ Dupes {.. } -> duplicateImportMsg Disp. empty dupesUniqueImport dupesNormLocPath dupesSeenImportsBy) <$> dupes)
291
+ dupesMsg (duplicate, ds@ (take 1 . sortOn dupesNormLocPath -> dupes)) =
292
+ vcat $
293
+ ((text " Warning:" <+> Disp. int (length ds) <+> text " imports of" <+> text duplicate) <> semi)
294
+ : ((\ Dupes {.. } -> duplicateImportMsg Disp. empty dupesUniqueImport dupesNormLocPath dupesSeenImportsBy) <$> dupes)
290
295
291
296
parseProjectSkeleton
292
297
:: FilePath
0 commit comments