
#13064: Incorrect redudant imports warning -------------------------------------+------------------------------------- Reporter: phadej | Owner: (none) Type: bug | Status: new Priority: low | Milestone: 8.8.1 Component: Compiler | Version: 8.0.1 Resolution: | Keywords: Operating System: Unknown/Multiple | Architecture: Type of failure: Incorrect | Unknown/Multiple error/warning at compile-time | Test Case: Blocked By: | Blocking: Related Tickets: #15393 | Differential Rev(s): Wiki Page: | -------------------------------------+------------------------------------- Comment (by phadej): Thanks Simon for doing this! Ben: I want to point out, that this is a regression between 7.10 and 8.0. The change to less strict version as is currently where done pre-GHC- proposal process, but it really should been scrutinized in something like that. For AMP, the 7.10.3 (which works correctly) warns about {{{ {-# OPTIONS_GHC -Wall #-} import Control.Applicative (Applicative (..), (<$>)) import Prelude mult :: Applicative f => f a -> f b -> f (a, b) mult x y = (,) <$> x <*> y }}} but not about {{{ {-# OPTIONS_GHC -Wall #-} import Control.Applicative import Prelude mult :: Applicative f => f a -> f b -> f (a, b) mult x y = (,) <$> x <*> y }}} Similarly, GHC-8.4.3 doesn't warn, but the wip/T13064 does about: {{{ {-# OPTIONS_GHC -Wall #-} import Data.Semigroup (Semigroup, (<>)) import Prelude squash :: Semigroup a => a -> a -> a squash = (<>) }}} However, neither warns about (open imports) {{{ {-# OPTIONS_GHC -Wall #-} import Data.Semigroup import Prelude squash :: Semigroup a => a -> a -> a squash = (<>) }}} or (at least single qualified use) {{{ {-# OPTIONS_GHC -Wall #-} import Data.Semigroup (Semigroup (..)) import Prelude squash :: Data.Semigroup.Semigroup a => a -> a -> a squash = (<>) }}} S 3-release-policy is easily satisfied. You'll need to do "something" in your code, but it's not "use CPP". I hope that CLC agrees. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/13064#comment:24 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler