mirror of
https://github.com/Mercury-Language/mercury.git
synced 2026-04-18 02:43:40 +00:00
Estimated hours taken: 4 Fix a limitation of the current nested module support: ensure that we check for attempts to import inaccessible modules. compiler/modules.m: Check for attempts to import inaccessible modules (modules whose parent has not been imported, or for which there is no `include_module' declaration in the parent's interface). compiler/intermod.m: Modify the way we import `.opt' files. The previous method temporarily set the items field of the module_imports structure to [], but check_module_accessibility relies on the assumption that the items field contains the items for all modules previously read in. tests/invalid/Mmakefile: tests/invalid/test_nested.m: tests/invalid/test_nested.err_exp: tests/invalid/parent.m: tests/invalid/parent.private_child.m: tests/invalid/parent.public_child.m: tests/invalid/parent.undeclared_child.m: tests/invalid/parent.undeclared_child.err_exp: tests/invalid/parent2.m: tests/invalid/parent2.child.m: Add some tests for the above change. doc/reference_manual.texi: Update the "bugs and limitations" sub-section of the modules chapter to reflect the new status quo.
24 lines
442 B
Mathematica
24 lines
442 B
Mathematica
:- module test_nested.
|
|
:- interface.
|
|
|
|
:- type foo.
|
|
|
|
:- implementation.
|
|
:- use_module parent.
|
|
:- use_module parent:public_child.
|
|
:- use_module parent:private_child.
|
|
:- use_module parent:undeclared_child.
|
|
% :- use_module parent:nonexistent_child.
|
|
|
|
:- use_module parent2:child.
|
|
|
|
:- type foo --->
|
|
foo(
|
|
parent:public_child:foo,
|
|
parent:private_child:foo,
|
|
parent:undeclared_child:foo,
|
|
parent:nonexistent_child:foo,
|
|
parent2:child:foo
|
|
).
|
|
|