[GHC] #13064: Incorrect redudant imports warning

GHC ghc-devs at haskell.org
Tue Aug 21 14:41:54 UTC 2018


#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 bgamari):

 **Replying to comment:24:**

 > Ben: I want to point out, that this is a regression between 7.10 and
 8.0.

 Right, I don't dispute that that there is a regression here; rather, I
 want to
 point out that there may be a significant amount of code that
 (unfortunately) now
 relies on that regression.

 > or (at least single qualified use)
 > {{{#!hs
 > {-# OPTIONS_GHC -Wall #-}
 > import Data.Semigroup (Semigroup (..))
 > import Prelude
 >
 > squash :: Data.Semigroup.Semigroup a => a -> a -> a
 > squash = (<>)
 > }}}

 Right; this is a reasonable option, albeit a bit ugly.
 However, it seems like this should serve as
 motivation to consider what mechanisms we could add to GHC to allow
 us to accomodate this sort of API reshuffling more easily and with fewer
 hacks
 in the future. For instance, wiki:Design/LocalWarningPragmas.

 **Replying to comment:23**
 > Never warn about an import declaration (or import item) that is
 unnecessary because of the implicit `Prelude` import. For example

 I suppose this is a possibility, although it seems to be me that we should
 rather try to introduce a mechanism to allow the user to state explicitly
 what they mean. That is: the import is known to be redundant but added for
 compatibility's sake. This could either be a general mechanism (e.g.
 wiki:Design/LocalWarningPragmas) or something more specifically designed
 to address import redundancy. (e.g. a `{-# USED #-}` pragma which could be
 attached to an import to silence the redundancy checker),

-- 
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/13064#comment:25>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler


More information about the ghc-tickets mailing list