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.4 KiB
Mathematica
57 lines
1.4 KiB
Mathematica
%---------------------------------------------------------------------------%
|
|
% vim: ts=4 sw=4 et ft=mercury
|
|
%---------------------------------------------------------------------------%
|
|
%
|
|
% This is a regression test for a bug in simplify/common.m where
|
|
% the pos(X, Y) deconstruction in the head of adj/2 was being propagated
|
|
% into the body of the lambda expression, changing the non-locals of the
|
|
% lambda expresssion, but the uni-modes field of the lambda construction
|
|
% unification was not being updated, resulting in an abort during lambda
|
|
% expansion.
|
|
|
|
:- module lambda_struct_bug.
|
|
|
|
:- interface.
|
|
|
|
:- import_module list.
|
|
:- import_module pair.
|
|
:- import_module set.
|
|
|
|
:- type pos
|
|
---> pos(int, int).
|
|
|
|
:- type adj
|
|
---> adj(pos, pos).
|
|
|
|
:- type maze == set(pair(pos, pos)).
|
|
|
|
:- pred adj(pos, list(adj)).
|
|
:- mode adj(in, out) is det.
|
|
|
|
:- implementation.
|
|
|
|
:- import_module int.
|
|
:- import_module require.
|
|
:- import_module solutions.
|
|
|
|
adj(pos(X, Y), Adjs) :-
|
|
Pred = (pred(Adj::out) is nondet :-
|
|
(
|
|
X1 = X - 1,
|
|
Adj = adj(pos(X1, Y), pos(X, Y))
|
|
;
|
|
X1 = X + 1,
|
|
Adj = adj(pos(X1, Y), pos(X, Y))
|
|
;
|
|
Y1 = Y + 1,
|
|
Adj = adj(pos(X, Y1), pos(X, Y))
|
|
;
|
|
Y1 = Y - 1,
|
|
Adj = adj(pos(X, Y1), pos(X, Y))
|
|
),
|
|
Adj = adj(pos(A, B), _),
|
|
A >= 0, A =< 10, % XXX
|
|
B >= 0, B =< 10 % XXX
|
|
),
|
|
solutions(Pred, Adjs).
|