mirror of
https://github.com/Mercury-Language/mercury.git
synced 2025-12-13 21:04:00 +00:00
tests/invalid/*.{m,err_exp}:
tests/misc_tests/*.m:
tests/mmc_make/*.m:
tests/par_conj/*.m:
tests/purity/*.m:
tests/stm/*.m:
tests/string_format/*.m:
tests/structure_reuse/*.m:
tests/submodules/*.m:
tests/tabling/*.m:
tests/term/*.m:
tests/trailing/*.m:
tests/typeclasses/*.m:
tests/valid/*.m:
tests/warnings/*.{m,exp}:
Make these tests use four-space indentation, and ensure that
each module is imported on its own line. (I intend to use the latter
to figure out which subdirectories' tests can be executed in parallel.)
These changes usually move code to different lines. For the tests
that check compiler error messages, expect the new line numbers.
browser/cterm.m:
browser/tree234_cc.m:
Import only one module per line.
tests/hard_coded/boyer.m:
Fix something I missed.
57 lines
1.5 KiB
Mathematica
57 lines
1.5 KiB
Mathematica
%---------------------------------------------------------------------------%
|
|
% vim: ts=4 sw=4 et ft=mercury
|
|
%---------------------------------------------------------------------------%
|
|
%
|
|
% rotd-2006-09-18 and before would not compile the following because
|
|
% the fact that the inst varsets attached to the clauses and the mode
|
|
% declarations are different meant that it couldn't work out which mode
|
|
% belonged to which clause. The fix is to allow for a renaming between
|
|
% inst variables.
|
|
%
|
|
% A similar thing occurs with the inst varset attached to foreign_export
|
|
% pragmas.
|
|
%
|
|
:- module param_mode_bug.
|
|
:- interface.
|
|
|
|
:- type list(T)
|
|
---> []
|
|
; [T | list(T)].
|
|
|
|
:- pred foo(list(T), list(T)).
|
|
:- mode foo(in(I), out(I)) is det.
|
|
:- mode foo(out(I), in(I)) is det.
|
|
|
|
:- pred bar(list(T)::in(I), list(T)::out(I)) is det.
|
|
|
|
:- implementation.
|
|
|
|
:- pragma promise_equivalent_clauses(foo/2).
|
|
|
|
foo(X::in(I), X::out(I)).
|
|
foo(Y::out(I), X::in(I)) :-
|
|
foo_2(Y, X).
|
|
|
|
:- pred foo_2(list(T)::out(I), list(T)::in(I)) is det.
|
|
:- pragma foreign_proc("C",
|
|
foo_2(Y::out(I), X::in(I)),
|
|
[promise_pure, thread_safe, will_not_call_mercury],
|
|
"
|
|
Y = X;
|
|
").
|
|
:- pragma foreign_proc("Java",
|
|
foo_2(Y::out(I), X::in(I)),
|
|
[promise_pure, thread_safe, will_not_call_mercury],
|
|
"
|
|
Y = X;
|
|
").
|
|
:- pragma foreign_proc("Erlang",
|
|
foo_2(Y::out(I), X::in(I)),
|
|
[promise_pure, thread_safe, will_not_call_mercury],
|
|
"
|
|
Y = X
|
|
").
|
|
|
|
:- pragma foreign_export("C", bar(in(I), out(I)), "BAR").
|
|
bar(X, X).
|