Language extensions not registered
|Reported by:||duncan||Owned by:||thoughtpolice|
|Type of failure:||None/Unknown||Test Case:||tests/driver/T4437.hs|
|Related Tickets:||Differential Revisions:|
tests/driver/T4437.hs does not seem to be being used properly.
That test is there to make sure that ghc developers do not forget to register their new extensions with Cabal. But it looks like it's just being silenced and they are being forgotten again.
Recall, the protocol is that all Haskell implementations can register their extensions in the central location (which is Language.Haskell.Extensions in the Cabal package) when they are happy that they are ready for public consumption. This matters to users because extensions that are not ready for public consumption (ie not registered) cannot be used in packages uploaded to hackage.
Currently tests/driver/T4437.hs contains:
expectedGhcOnlyExtensions = [ "AllowAmbiguousTypes", "RelaxedLayout", "AlternativeLayoutRule", "AlternativeLayoutRuleTransitional", "ExplicitNamespaces", "TypeHoles", "OverloadedLists", "EmptyCase", "AutoDeriveTypeable", "NegativeLiterals", "NullaryTypeClasses"]
This looks like a much bigger list than it should be. Surely not all of these extensions are private to ghc or are still under development and not to be used?
But if they are listed here, then the test doesn't complain about them. And the whole point of this test is to stop ghc devs from forgetting to register them.
I think we need to change the test so that we distinguish between extensions that are really not ready, and ones that are on-track to be public. It should be a release blocker for the "on-track to be public" ones to still not be registered. The test should have comments giving this guidance for ghc contributors.
I'm not quite sure how we adjust the test to make that happen (ie different behaviour for RC-build vs normal hacking validate).