Files
mercury/tests/valid/zf_erlang_bug.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

54 lines
1.7 KiB
Mathematica

% vim: ft=mercury ts=4 sw=4 et wm=0 tw=0
%
% This module results in the following error message from the Erlang compiler
% when compiled in the erlang grade:
%
% Mercury/erls/zf_erlang_bug.erl:64:
% variable 'STATE_VARIABLE_IO_1_12' unsafe in 'case' (line 43)
%
% This was with Mercury rotd-2009-06-02 (+ a few of the diffs posted that day).
% To reproduce:
%
% mmc --grade erlang --make zf_erlang_bug.beam
%
% This test case is a cut-down version of the module zinc_frontend from
% rotd-2009-05-31 of the MiniZinc distribution.
%
%---------------------------------------------------------------------------%
:- module zf_erlang_bug.
:- interface.
:- import_module list.
:- import_module io.
%---------------------------------------------------------------------------%
%---------------------------------------------------------------------------%
:- type writer(T) == ( pred( T, io, io) ).
:- inst writer == ( pred(in, di, uo) is det ).
:- pred do_io_stage(list(string), writer(A), A, io, io).
:- mode do_io_stage(in, in(writer), in, di, uo) is det.
%---------------------------------------------------------------------------%
%---------------------------------------------------------------------------%
:- implementation.
do_io_stage(StageNames, PreDumper, Input, !IO) :-
( if member("foo", StageNames) then
PreDumper(Input, !IO)
else
true
),
( if member("bar", StageNames) then
PreDumper(Input, !IO)
else
true
).
%---------------------------------------------------------------------------%
:- end_module zf_erlang_bug.
%---------------------------------------------------------------------------%