
#14759: ListSetOps WARNING causes tests to fail -------------------------------------+------------------------------------- Reporter: ezyang | Owner: (none) Type: bug | Status: patch Priority: normal | Milestone: Component: Compiler | Version: 8.2.2 Resolution: | Keywords: Operating System: Unknown/Multiple | Architecture: | Unknown/Multiple Type of failure: None/Unknown | Test Case: Blocked By: | Blocking: Related Tickets: | Differential Rev(s): Phab:D4628 Wiki Page: | -------------------------------------+------------------------------------- Changes (by simonpj): * cc: niteria (added) Comment: OK, so the culprit is the `unionLists` for the `imp_finsts` field of `ImportAvails`. Obvious ideas: 1. Represent `imp_finsts` as a `ModuleSet` 2. Represent `imp_finsts` as a `Bag Module` (ie with duplicates) There's a helpful `Note [Combine ImportAvails]` in `RnNames` which explains why a set is a bit awkward. My instinct is to try a `Bag` (so that `plusAvails` can use `unionBags` which is always fast), and move the removing-duplicates work to the consumer. I think there are two consumers of `imp_finsts`: * `tcExtendLocalFamInstEnv` loads up dependent modules. So we'd need eliminate duplicates, but determinacy is not an issue * `DsUsage.mkDependencies` which already does a sort, so removing dups at the same time should surely not be hard. Bartosz is the expert here. cc'd. * ` -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/14759#comment:10 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler