Files
mercury/tests/valid/zero_arity.m
Zoltan Somogyi fdd141bf77 Clean up the tests in the other test directories.
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.
2015-02-16 12:32:18 +11:00

63 lines
1.3 KiB
Mathematica

%---------------------------------------------------------------------------%
% vim: ts=4 sw=4 et ft=mercury
%---------------------------------------------------------------------------%
%
% Test separate `:- pred' and `:- mode' declarations
% for predicates with no arguments.
% The compiler of 25/8/1999 reported a spurious duplicate
% mode error for this test case.
:- module zero_arity.
:- interface.
% bar has one mode, with determinism semidet.
:- pred bar is semidet.
% baz has one mode, with determinism semidet.
:- pred baz.
:- mode baz is semidet.
:- pred use_asm_labels.
:- mode use_asm_labels is semidet.
:- implementation.
:- import_module std_util.
bar :-
semidet_fail.
baz :-
semidet_fail.
% foo has no modes, or the modes for foo will be inferred.
:- pred foo.
% The mode error here should not be detected because this predicate
% has no modes and is not called, so no modes will be inferred.
foo :-
X = 1,
unify(X, _).
% quux has one mode, whose determinism will be inferred.
:- pred quux.
:- mode quux.
quux :-
semidet_fail.
:- pragma foreign_proc("C",
use_asm_labels,
[promise_pure, will_not_call_mercury, thread_safe],
"
#ifdef MR_USE_ASM_LABELS
SUCCESS_INDICATOR = MR_TRUE;
#else
SUCCESS_INDICATOR = MR_FALSE;
#endif
").
use_asm_labels :-
fail.