
#11370: Redundant superclass warnings being included in -Wall destroys the "3 Release Policy" -------------------------------------+------------------------------------- Reporter: ekmett | Owner: Type: bug | Status: new Priority: highest | Milestone: 8.0.1 Component: Compiler (Type | Version: 7.10.3 checker) | Resolution: | Keywords: Operating System: Unknown/Multiple | Architecture: | Unknown/Multiple Type of failure: None/Unknown | Test Case: Blocked By: | Blocking: Related Tickets: #11369 | Differential Rev(s): Wiki Page: | -------------------------------------+------------------------------------- Comment (by ekmett): I've talked with some folks on the committee informally, and with Gershom while I'm visiting New York at the moment: At the very least, I definitely think the warning for redundant constraints shouldn't be in the default warning set. It goes off in situations where there is no good way to mask it at this time. Somewhat ironically the "3 release compatible" version of adding `redundant-constraints` would be to add it as an option now and consider turning it on in -Wall in 8.4 when such a `-Wno-redundant-constraints` option would be supported by 3 releases of the compiler. Possibly with Gershom's suggestion from the mailing list of making unrecognized `-Wfoo` options emit a single warning about an unrecognized option rather than have the compiler emit an error and die. This wouldn't preclude adding it to ` -Wlint` or `-Weverything` when the warning overhaul goes in in 8.2. Putting it in `-Wall` weakens the 3 release policy in a way that requires users to use cabal trickery to pass ghc options to avoid warnings in an uncomfortable way -- since old GHCs won't recognize a `-Wno-redundant- constraints` option, but if you feel it really belongs there I guess that is just what we'd have to do. In a perfect world this'd be relegated to a sort of `-Wlint` which checks style. So, this seems to suggest a few ways forward 1) Just remove it from the default constraint set. This is the minimum we should do. 2) Remove it from both the default constraint set and -Wall. Implement Gershom's suggestion that unrecognized -Wfoo options passed to the compiler simply cause it to warn about an unrecognized option. This would give us the option to add it to whatever `-Wlint` equivalent is added in 8.2 and an option to bring it into `-Wall` in 8.4 and weaken the 3 release policy accordingly, but now in a way that doesn't require the user to play with cabal flags. 1 is easy but damages the already weak 3 release policy almost to the point of irreparability: few people seem willing to use if clauses in cabal files, the reaction is much the same as to CPP hacks. 2 is a fair bit more work, but would serve to placate the folks for whom we put the 3 release policy in place in the first place. I'd prefer 2, but we could live with 1 if the amount of work involved was too prohibitive and GHC HQ felt strongly about the issue. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/11370#comment:8 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler