Files
mercury/tests/valid_seq/intermod_test.m
2020-11-15 08:02:47 +11:00

44 lines
895 B
Mathematica

%---------------------------------------------------------------------------%
% vim: ts=4 sw=4 et ft=mercury
%---------------------------------------------------------------------------%
%
% Test overloading resolution for cross-module optimization.
%
:- module intermod_test.
:- interface.
:- import_module int.
:- pred p(int::out) is semidet.
:- type t
---> f(int)
; g.
:- implementation.
:- import_module intermod_test2.
:- pragma inline(p/1).
p(X) :-
Y = f(1),
Y = f(_),
Lambda = (pred(Z::int_mode) is det :- Z = 2),
local(Lambda, X),
intermod_test2.baz(X).
:- mode int_mode == out.
:- pred local(pred(int), int).
:- mode local(pred(int_mode) is det, out) is det.
local(Pred, Int) :-
call(Pred, Int).
:- pred local_2(pred(int), int).
:- mode local_2(pred(int_mode) is det, out) is det.
local_2(Pred, plusone(Int)) :-
call(Pred, Int).