mirror of
https://github.com/Mercury-Language/mercury.git
synced 2026-04-18 19:03:45 +00:00
42 lines
1.0 KiB
Mathematica
42 lines
1.0 KiB
Mathematica
%---------------------------------------------------------------------------%
|
|
% vim: ts=4 sw=4 et ft=mercury
|
|
%---------------------------------------------------------------------------%
|
|
|
|
:- module inst_matches_final_bug.
|
|
|
|
:- interface.
|
|
|
|
:- import_module io.
|
|
|
|
:- pred main(io::di, io::uo) is det.
|
|
|
|
:- implementation.
|
|
|
|
:- inst two_to_six == bound(2;3;4;5;6).
|
|
|
|
main(!IO) :-
|
|
call_with_two_to_six(return_three, !IO).
|
|
|
|
:- func return_three = int.
|
|
:- mode return_three = out(bound(3)) is det.
|
|
|
|
return_three = return_three_2.
|
|
|
|
:- func return_three_2 = int.
|
|
|
|
return_three_2 = 1.
|
|
|
|
:- pred call_with_two_to_six(int::in(two_to_six), io::di, io::uo) is det.
|
|
:- pragma no_inline(call_with_two_to_six/3).
|
|
|
|
call_with_two_to_six(2, !IO) :-
|
|
io.write_string("Got two\n", !IO).
|
|
call_with_two_to_six(3, !IO) :-
|
|
io.write_string("Got three\n", !IO).
|
|
call_with_two_to_six(4, !IO) :-
|
|
io.write_string("Got four\n", !IO).
|
|
call_with_two_to_six(5, !IO) :-
|
|
io.write_string("Got five\n", !IO).
|
|
call_with_two_to_six(6, !IO) :-
|
|
io.write_string("Got six\n", !IO).
|