Files
mercury/tests/invalid/bug191.m
Zoltan Somogyi ffa87fc0d9 Update the programming style of some tests in invalid.
tests/invalid/bug10.{m,err_exp}:
tests/invalid/bug115.{m,err_exp}:
tests/invalid/bug117.{m,err_exp}:
tests/invalid/bug191.{m,err_exp}:
tests/invalid/bug436.{m,err_exp}:
tests/invalid/invalid_binary_literal.{m,err_exp}:
tests/invalid/invalid_decimal_literal.{m,err_exp}:
tests/invalid/invalid_float_literal.{m,err_exp}:
tests/invalid/invalid_hex_literal.{m,err_exp}:
tests/invalid/invalid_octal_literal.{m,err_exp}:
tests/invalid/invalid_pragma.{m,err_exp}:
tests/invalid/require_tailrec_invalid.{m,err_exp}:
tests/invalid/type_lhs_var.{m,err_exp}:
tests/invalid/typeclass_no_param.{m,err_exp}:
tests/invalid/unrecognized_pragma.{m,err_exp}:
    Put vim modelines into these .m files, and improve their
    programming style.

    Update the .err_exp files for the changed line numbers.
2019-07-25 21:42:21 +02:00

43 lines
1.0 KiB
Mathematica

%---------------------------------------------------------------------------%
% vim: ts=4 sw=4 et ft=mercury
%---------------------------------------------------------------------------%
%
% Regression test for bug #191:
% This program caused the following compiler abort in rotd-2011-03-22:
%
% Software Error: code_gen.m: Unexpected: semidet model in det context
%
%---------------------------------------------------------------------------%
:- module bug191.
:- interface.
:- import_module io.
:- pred main(io::di, io::uo) is det.
:- implementation.
:- type foo
---> a(int)
; b(string).
:- inst a
---> a(ground).
:- typeclass foo(T) where [pred baz(T::in, int::in, foo::out(a)) is det].
:- instance foo(int) where [pred(baz/3) is bar].
:- pred foo(foo::in(a), int::out) is det.
foo(a(I), I).
% should be bar(int::in, foo::out(a))
:- pred bar(int::in, int::in, foo::out) is det.
bar(_, _S, b("GOTCHA")).
main(!IO) :-
baz(561, 42, F),
foo(F, I),
io.print(I, !IO),
io.nl(!IO).