[m-dev.] Re: Reminder: Mercury tests failing
Fergus Henderson
fjh at cs.mu.OZ.AU
Sat May 31 02:04:23 AEST 2003
On 30-May-2003, David Overton <dmo at cs.mu.OZ.AU> wrote:
>
> From memory, I think the bug in pred_inst_matches* made it too
> conservative.
I think you're right.
Looking at the diffs, the bug I'm talking about was introduced in
revision 1.46 of inst_match.m. Prior to that, higher-order insts
were matched contravariantly in the initial insts
(and covariantly in the final insts, of course).
But your change broke that.
Here's a better test case. This example program compiles fine with
Mercury 0.9.1, but gets rejected by 0.10, 0.11, and the current compiler.
It ought to be allowed.
:- module bug2.
:- interface.
:- import_module io.
:- pred main(io__state::di, io__state::uo) is det.
:- implementation.
:- import_module list, bool.
main -->
( { q(p) } ->
print("yes"), nl
;
print("no"), nl
).
:- type intlist == list(int).
:- inst nonempty ---> [ground|list].
:- inst list ---> [ground|list] ; [].
:- pred p(intlist, intlist).
:- mode p((list -> nonempty), (free -> nonempty)) is semidet.
p([X], [X]).
p([X,Y|Zs], [Y,X|Zs]).
:- pred q(pred(intlist, intlist)).
:- mode q(pred((nonempty -> nonempty), (free -> list)) is semidet)
is semidet.
q(P) :- P([1], L), L \= [].
--
Fergus Henderson <fjh at cs.mu.oz.au> | "I have always known that the pursuit
The University of Melbourne | of excellence is a lethal habit"
WWW: <http://www.cs.mu.oz.au/~fjh> | -- the last words of T. S. Garp.
--------------------------------------------------------------------------
mercury-developers mailing list
Post messages to: mercury-developers at cs.mu.oz.au
Administrative Queries: owner-mercury-developers at cs.mu.oz.au
Subscriptions: mercury-developers-request at cs.mu.oz.au
--------------------------------------------------------------------------
More information about the developers
mailing list