summaryrefslogtreecommitdiff
path: root/docs/users_guide/using-warnings.rst
diff options
context:
space:
mode:
authorEvan Rutledge Borden <eborden@frontrowed.com>2017-11-21 18:06:01 -0500
committerBen Gamari <ben@smart-cactus.org>2017-11-21 21:11:16 -0500
commit63e4ac37d7268e063cb6adcea89e1e8716c5de89 (patch)
tree3d0a04ae40369f660f131e16a3708719adcd1b4a /docs/users_guide/using-warnings.rst
parentf376ebac29d8dab023482a21ecfbc4dc032ab23e (diff)
downloadhaskell-63e4ac37d7268e063cb6adcea89e1e8716c5de89.tar.gz
Add warn-missing-export-lists
Many industrial users have aligned around the idea that implicit exports are an anti-pattern. They lead to namespace pollution and byzantine naming schemes. They also prevent GHC's dead code analysis and create more obstacles to optimization. This warning allows teams/projects to warn on or enforce via -Werror explicit export lists. This warning also serves as a complement to warn-missing-import-lists. This was originally discussed here: https://github.com/ghc-proposals/ghc-proposals/pull/93 Test Plan: Three new minimal tests have been added to the type checker. Reviewers: bgamari Reviewed By: bgamari Subscribers: rwbarton, thomie Differential Revision: https://phabricator.haskell.org/D4197
Diffstat (limited to 'docs/users_guide/using-warnings.rst')
-rw-r--r--docs/users_guide/using-warnings.rst26
1 files changed, 26 insertions, 0 deletions
diff --git a/docs/users_guide/using-warnings.rst b/docs/users_guide/using-warnings.rst
index c6a86bbb71..cf41c283ab 100644
--- a/docs/users_guide/using-warnings.rst
+++ b/docs/users_guide/using-warnings.rst
@@ -74,6 +74,7 @@ The following flags are simple ways to select standard "packages" of warnings:
* :ghc-flag:`-Wimplicit-prelude`
* :ghc-flag:`-Wmissing-local-signatures`
* :ghc-flag:`-Wmissing-exported-signatures`
+ * :ghc-flag:`-Wmissing-export-lists`
* :ghc-flag:`-Wmissing-import-lists`
* :ghc-flag:`-Wmissing-home-modules`
* :ghc-flag:`-Widentities`
@@ -858,6 +859,31 @@ of ``-W(no-)*``.
fields are initialised with bottoms), it is often an indication of a
programmer error.
+.. ghc-flag:: -Wmissing-export-lists
+ :shortdesc: warn when a module declaration does not explicitly list all
+ exports
+ :type: dynamic
+ :reverse: -fnowarn-missing-export-lists
+ :category:
+
+ :since: 8.4.1
+
+ .. index::
+ single: missing export lists, warning
+ single: export lists, missing
+
+ This flag warns if you declare a module without declaring an explicit
+ export list. For example ::
+
+ module M where
+
+ p x = x
+
+ The :ghc-flag:`-Wmissing-export-lists` flag will warn that ``M`` does not
+ declare an export list. Declaring an explicit export list for ``M`` enables
+ GHC dead code analysis, prevents accidental export of names and can ease
+ optimizations like inlining.
+
.. ghc-flag:: -Wmissing-import-lists
:shortdesc: warn when an import declaration does not explicitly list all the
names brought into scope