mirror of
https://github.com/Mercury-Language/mercury.git
synced 2026-04-18 02:43:40 +00:00
44 lines
895 B
Mathematica
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).
|