[commit: ghc] ghc-8.6: Fix TcLevel manipulation in TcDerivInfer.simplifyDeriv (145f7c6)

git at git.haskell.org git at git.haskell.org
Wed Jun 27 21:09:39 UTC 2018

Repository : ssh://git@git.haskell.org/ghc

On branch  : ghc-8.6
Link       : http://ghc.haskell.org/trac/ghc/changeset/145f7c663e6df4ecfa848c0e2e478454cf9fb1d9/ghc


commit 145f7c663e6df4ecfa848c0e2e478454cf9fb1d9
Author: Simon Peyton Jones <simonpj at microsoft.com>
Date:   Mon Jun 25 17:42:57 2018 +0100

    Fix TcLevel manipulation in TcDerivInfer.simplifyDeriv
    The level numbers we were getting simply didn't obey the
    invariant (ImplicInv) in TcType
       Note [TcLevel and untouchable type variables]
    That leads to chaos. Easy to fix.  I improved the documentation.
    I also added an assertion in TcSimplify that checks that
    level numbers go up by 1 as we dive inside implications, so
    that we catch the problem at source rather than than through
    its obscure consequences.
    That in turn showed up that TcRules was also generating
    constraints that didn't obey (ImplicInv), so I fixed that too.
    I have no idea what consequences were lurking behing that
    bug, but anyway now it's fixed.  Hooray.
    (cherry picked from commit 261dd83cacec71edd551e9c581d05285c9ea3226)


 compiler/typecheck/TcDerivInfer.hs                 | 73 ++++++++++---------
 compiler/typecheck/TcRules.hs                      | 81 +++++++++++++---------
 compiler/typecheck/TcSimplify.hs                   | 11 +++
 testsuite/tests/quantified-constraints/T15290b.hs  | 28 ++++++++
 .../tests/quantified-constraints/T15290b.stderr    | 14 ++++
 testsuite/tests/quantified-constraints/all.T       |  1 +
 6 files changed, 144 insertions(+), 64 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 145f7c663e6df4ecfa848c0e2e478454cf9fb1d9

More information about the ghc-commits mailing list