diff options
author | simonpj <unknown> | 2001-06-25 08:01:16 +0000 |
---|---|---|
committer | simonpj <unknown> | 2001-06-25 08:01:16 +0000 |
commit | a12bed5371650117aab631ac032fb1b525570c00 (patch) | |
tree | ae35c7a84f3aab0327bfb4e1018503e41b42bddb /ghc/compiler/javaGen | |
parent | ef934baea32e045d799eb059d5371feb15cf111e (diff) | |
download | haskell-a12bed5371650117aab631ac032fb1b525570c00.tar.gz |
[project @ 2001-06-25 08:01:16 by simonpj]
----------------------------------
Fix a predicate-simplification bug
----------------------------------
Fixes a bug pointed out by Marcin
data R = R {f :: Int}
foo:: (?x :: Int) => R -> R
foo r = r {f = ?x}
Test.hs:4:
Could not deduce `?x :: Int' from the context ()
arising from use of implicit parameter `?x' at Test.hs:4
In the record update: r {f = ?x}
In the definition of `foo': r {f = ?x}
The predicate simplifier was declining to 'inherit' an
implicit parameter. This is right for a let-binding, but
wrong for an expression binding. For example, a simple
expression type signature:
(?x + 1) :: Int
This was rejected because the ?x constraint could not be
floated out -- but that's wrong for expressions.
Diffstat (limited to 'ghc/compiler/javaGen')
0 files changed, 0 insertions, 0 deletions