mirror of
https://github.com/Mercury-Language/mercury.git
synced 2026-04-23 05:13:48 +00:00
tests/invalid_onlydepend:
Move the one test case in tests/invalid for which we want to check
the error messages generated during the generation of dependencies
to this new test directory.
tests/invalid_nodepend:
Move all test cases in tests/invalid which get errors during the
generation of dependencies but for which we want to check the error
messages generated during normal compilation to this new test directory.
tests/invalid_nodepend/Mmakefile:
tests/invalid_nodepend/Mercury.options:
tests/invalid_onlydepend/Mmakefile:
tests/invalid_onlydepend/Mercury.options:
Versions of the same files in tests/invalid, but containing only
the entries relevant to the moved test cases.
tests/invalid/Mmakefile:
tests/invalid/Mercury.options:
Delete the entries that refer to the moved test cases.
tests/README:
Document the two new test directories.
tools/bootcheck:
Add invalid_onlydepend and invalid_nodepend to the list of
test directories.
74 lines
1.6 KiB
Mathematica
74 lines
1.6 KiB
Mathematica
%---------------------------------------------------------------------------%
|
|
% vim: ft=mercury ts=4 sw=4 et wm=0 tw=0
|
|
%---------------------------------------------------------------------------%
|
|
%
|
|
% Test for error messages produced by syntax errors in 'foreign_proc' pragmas.
|
|
%
|
|
|
|
:- module bad_foreign_proc.
|
|
:- interface.
|
|
|
|
:- pred foo(int::in, int::out) is det.
|
|
|
|
:- implementation.
|
|
|
|
% Too few arguments.
|
|
%
|
|
:- pragma foreign_proc("C").
|
|
|
|
% Too many arguments.
|
|
%
|
|
:- pragma foreign_proc("C",
|
|
foo(A::in, B::ouit),
|
|
[promise_pure],
|
|
"
|
|
B = A;
|
|
", "Extra argument").
|
|
|
|
% Invalid foreign language.
|
|
%
|
|
:- pragma foreign_proc("InvalidLanuage",
|
|
foo(A::in, B::out),
|
|
[promise_pure],
|
|
"
|
|
B = A;
|
|
").
|
|
|
|
% Pred argument is not an atom.
|
|
%
|
|
:- pragma foreign_proc("C", "foo", [promise_pure], "B = A;").
|
|
|
|
% Invalid attributes argument
|
|
%
|
|
:- pragma foreign_proc("C", foo(A::in, B::out), "promise_pure", "B = A;").
|
|
|
|
% XXX the compiler apparently accepts this.
|
|
%
|
|
:- pragma foreign_proc("C", foo(A::in, B::out), promise_pure, "B = A;").
|
|
|
|
% Conflicting foreing_proc attributes.
|
|
%
|
|
:- pragma foreign_proc("C",
|
|
foo(A::in, A::out),
|
|
[promise_pure, promise_semipure, thread_safe, not_thread_safe],
|
|
"
|
|
B = A;
|
|
").
|
|
|
|
% ForeignCode is not a string.
|
|
%
|
|
:- pragma foreign_proc("C", foo(A::in, B::out), [promise_pure], 5555).
|
|
|
|
% Check contexts on arguments.
|
|
%
|
|
:- pragma foreign_proc(
|
|
"InvalidLanguage",
|
|
"foo",
|
|
"promise_pure",
|
|
6666
|
|
).
|
|
|
|
foo(X, X).
|
|
|
|
:- pragma foreign_proc("Erlang", foo(A::in, B::out), [promise_pure], "B = A").
|