Pragma to reset language extensions in module header
In https://github.com/commercialhaskell/stack/issues/3789 , there is an issue where if OverloadableStrings is enabled in default extensions, the Paths_ module generated by cabal no longer compiles. I've opened a fix here - https://github.com/haskell/cabal/pull/5054 . However, this just disables specific extensions known to be problematic. It would be better to have a pragma that says "Please reset the extensions used for this module".
I propose
{-# LANGUAGE_RESET Haskell2010 #-}
and
{-# LANGUAGE_RESET Haskell98 #-}
This would also provide for quite a nice workaround for the most common source of trouble when loading multiple packages at once into ghci - default-extensions causing some code to no longer compile. See #10827 (closed) for more about this. With LANGUAGE_RESET, we could write packages that gracefully load along with other packages that specify default-extensions.
Of course, this is open to name bikeshedding. {-# SET_LANGUAGE Haskell98 #-}? Or perhaps just straight up {-# HASKELL_98 #-}.
Trac metadata
| Trac field | Value |
|---|---|
| Version | 8.2.2 |
| Type | FeatureRequest |
| TypeOfFailure | OtherFailure |
| Priority | normal |
| Resolution | Unresolved |
| Component | Compiler |
| Test case | |
| Differential revisions | |
| BlockedBy | |
| Related | |
| Blocking | |
| CC | |
| Operating system | |
| Architecture |