Ticket #4980 (new feature request)
Warning about module abbreviation clashes
| Reported by: | Lemming | Owned by: | |
|---|---|---|---|
| Priority: | low | Milestone: | 7.6.2 |
| Component: | Compiler | Version: | 7.0.1 |
| Keywords: | Cc: | ghc@… | |
| Operating System: | Unknown/Multiple | Architecture: | Unknown/Multiple |
| Type of failure: | None/Unknown | Difficulty: | |
| Test Case: | Blocked By: | ||
| Blocking: | Related Tickets: |
Description
Please add the option -fwarn-module-rename-collision that makes GHC to do the following: If GHC encounters an import situation like
module Main where import qualified Data.A as A import qualified Control.A as A
then GHC should emit a warning like
Main.hs:3:0:
Main.hs:4:0:
Warning: Both Data.A and Control.A are renamed to A.
An identifier like A.ident can only be resolved,
if it is either in Data.A or Control.A.
Better rename both modules to different names.
Reason for this warning is, that if 'ident' is from Data.A as of writing Main, and later another variable named 'ident' is added to Control.A, then A.ident can no longer be resolved in Main. That is, by accidental module rename collisions even qualified imports carry the risk of future name collisions.
Related to #4977
Change History
Note: See
TracTickets for help on using
tickets.
