Mercury-Language/mercury

"not model_det" error when using incorrect det with a separate submodule

jumpnbrownweasel opened this issue · 2 comments

The problem is not that there is an error, but that it is a Software Error with no file/line info, rather than a normal compiler error. It is not blocking me, I just wanted to make sure that you're aware of the problem.

$ mmc --version
Mercury Compiler, version 22.01-bullseye1, on x86_64-pc-linux-gnu

The error occurs with the following grade but not the default grade.

$ export MCFLAGS="--make -s asm_fast.gc.decldebug.stseg"
$ mmc foo
Making Mercury/int3s/foo.int3
Making Mercury/int3s/foo.bar.int3
Making Mercury/int0s/foo.int0
Making Mercury/ints/foo.int
Making Mercury/ints/foo.bar.int
Making Mercury/cs/foo.c
Uncaught Mercury exception:
Software Error: predicate `transform_hlds.table_gen.table_gen_proc
ess_io_proc'/10: Unexpected: I/O procedure pred id 564 not model_d
et
Stack dump not available in this grade.
** Error making `Mercury/cs/foo.c'.

foo.m:

:- module foo.
:- interface.
:- include_module bar.
:- import_module io.

:- pred main(io, io).
:- mode main(di, uo) is cc_multi.

:- implementation.
:- import_module foo.bar.

main(!IO) :-
    bar(!IO).

foo.bar.m:

:- module foo.bar.
:- interface.
:- import_module io.

:- pred bar(io, io).
:- mode bar(di, uo) is multi.

:- implementation.

bar(!IO) :-
    io.write_string("bar\n", !IO).

The fix should be in the next ROTD.

The fix should be in the next ROTD.

Fantastic, thank you!