[commit: ghc] master: Suppress -Winaccessible-code in derived code (44a7b9b)
git at git.haskell.org
git at git.haskell.org
Tue Jul 24 13:52:04 UTC 2018
Repository : ssh://git@git.haskell.org/ghc
On branch : master
Link : http://ghc.haskell.org/trac/ghc/changeset/44a7b9baa45c4ab939c7d996519b5e3de3e13c5a/ghc
>---------------------------------------------------------------
commit 44a7b9baa45c4ab939c7d996519b5e3de3e13c5a
Author: Ryan Scott <ryan.gl.scott at gmail.com>
Date: Tue Jul 24 14:40:42 2018 +0200
Suppress -Winaccessible-code in derived code
Summary:
It's rather unfortunate that derived code can produce inaccessible
code warnings (as demonstrated in #8128, #8740, and #15398), since
the programmer has no control over the generated code. This patch
aims to suppress `-Winaccessible-code` in all derived code. It
accomplishes this by doing the following:
* Generalize the `ic_env :: TcLclEnv` field of `Implication` to
be of type `Env TcGblEnc TcLclEnv` instead. This way, it also
captures `DynFlags`, which record the flag state at the time
the `Implication` was created.
* When typechecking derived code, turn off `-Winaccessible-code`.
This way, any insoluble given `Implication`s that are created when
typechecking this derived code will remember that
`-Winaccessible-code` was disabled.
* During error reporting, consult the `DynFlags` of an
`Implication` before making the decision to report an inaccessible
code warning.
Test Plan: make test TEST="T8128 T8740 T15398"
Reviewers: simonpj, bgamari
Reviewed By: simonpj
Subscribers: monoidal, rwbarton, thomie, carter
GHC Trac Issues: #8128, #8740, #15398
Differential Revision: https://phabricator.haskell.org/D4993
>---------------------------------------------------------------
44a7b9baa45c4ab939c7d996519b5e3de3e13c5a
compiler/typecheck/TcErrors.hs | 33 +++++----
compiler/typecheck/TcInstDcls.hs | 84 ++++++++++++++++++----
compiler/typecheck/TcRnTypes.hs | 66 +++++++++++------
compiler/typecheck/TcSMonad.hs | 34 +++++----
compiler/typecheck/TcSimplify.hs | 39 +++++-----
compiler/typecheck/TcUnify.hs | 38 +++++-----
testsuite/tests/deriving/should_compile/T15398.hs | 20 ++++++
.../tests/deriving/should_compile/T8128.stderr | 14 ----
.../tests/deriving/should_compile/T8740.stderr | 18 -----
testsuite/tests/deriving/should_compile/all.T | 1 +
10 files changed, 209 insertions(+), 138 deletions(-)
Diff suppressed because of size. To see it, use:
git diff-tree --root --patch-with-stat --no-color --find-copies-harder --ignore-space-at-eol --cc 44a7b9baa45c4ab939c7d996519b5e3de3e13c5a
More information about the ghc-commits
mailing list