mirror of
https://github.com/Mercury-Language/mercury.git
synced 2026-04-21 20:33:55 +00:00
Estimated hours taken: 1 Change the documentation and test cases to reflect the fact that we currently don't support parallel makes for nested modules. (The comments in the write_depenency_file predicate in compiler/modules.m explain why not.) doc/reference_manual.texi: Update the list of bugs and limitations in the sub-modules chapter to say that we don't support parallel makes for nested modules. tests/hard_coded/Mmakefile: tests/hard_coded/nested*.m: tests/hard_coded/parent*.m: tests/hard_coded/sub-modules/Mmakefile: tests/hard_coded/sub-modules/nested*: tests/hard_coded/sub-modules/parent*: Move the sub-module test cases to a new subdirectory `tests/hard_coded/sub-modules'. One reason for this is just to separate out the test cases for this feature, just as we do with the typeclass test cases. But the other reason is to ensure that the nested module test cases won't get built in parallel, since currently there are some problems with the Mmake rules for building nested modules that cause race conditions if you use parallel makes.
65 lines
1.4 KiB
Mathematica
65 lines
1.4 KiB
Mathematica
% Another test case to test nested modules.
|
|
|
|
:- module nested2.
|
|
:- interface.
|
|
:- import_module io.
|
|
|
|
%-----------------------------------------------------------------------------%
|
|
|
|
:- module nested2:child.
|
|
:- interface.
|
|
|
|
% module `io' is imported in nested2
|
|
|
|
:- type t1 == foo.
|
|
:- type t2 == nested2:foo.
|
|
|
|
:- pred main(io__state::di, io__state::uo) is det.
|
|
|
|
:- end_module nested2:child.
|
|
|
|
%-----------------------------------------------------------------------------%
|
|
|
|
:- implementation.
|
|
|
|
:- module nested2:child.
|
|
:- implementation.
|
|
:- import_module std_util.
|
|
|
|
:- type t3 == foo.
|
|
:- type t4 == nested2:foo.
|
|
|
|
:- func has_type_t1 = t1.
|
|
:- func has_type_t2 = t2.
|
|
:- func has_type_t3 = t3.
|
|
:- func has_type_t4 = t4.
|
|
|
|
has_type_t1 = bar.
|
|
has_type_t2 = nested2:bar.
|
|
has_type_t3 = baz(42).
|
|
has_type_t4 = nested2:baz(42).
|
|
|
|
main -->
|
|
nested2:hello,
|
|
hello,
|
|
|
|
print("t1 = "), print(type_of(has_type_t1)), nl,
|
|
print("t2 = "), print(type_of(has_type_t2)), nl,
|
|
print("t3 = "), print(type_of(has_type_t3)), nl,
|
|
print("t4 = "), print(type_of(has_type_t4)), nl,
|
|
|
|
print("has_type_t1 = "), print(has_type_t1), nl,
|
|
print("has_type_t2 = "), print(has_type_t2), nl,
|
|
print("has_type_t3 = "), print(has_type_t3), nl,
|
|
print("has_type_t4 = "), print(has_type_t4), nl.
|
|
|
|
:- end_module nested2:child.
|
|
|
|
:- type foo ---> bar ; baz(int).
|
|
|
|
:- pred hello(io__state::di, io__state::uo) is det.
|
|
|
|
hello --> print("nested2:hello\n").
|
|
|
|
:- end_module nested2.
|