• Ryan Scott's avatar
    Suppress -Winaccessible-code in derived code · 44a7b9ba
    Ryan Scott authored
    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
    44a7b9ba
TcErrors.hs 125 KB