mirror of
https://github.com/Mercury-Language/mercury.git
synced 2025-12-17 23:05:21 +00:00
Fix the remaining bugs with the handling of partial qualifiers
Estimated hours taken: 10 Fix the remaining bugs with the handling of partial qualifiers for nested modules. compiler/module_qual.m: Define a new abstract type partial_qualifier_info, and a predicate mq_info_get_partial_qualifier_info to get this type from the mq_info. Define a new predicate get_partial_qualifiers/3 in module_qual.m which is like the old get_partial_qualifiers/2 predicate from modules.m except that it takes a partial_qualifier_info and uses the information in this to return only the partial qualifiers for modules which are visible, rather than returning all partial qualifier regardless of whether the modules that they refer to are in scope or not. compiler/prog_util.m: Export the `insert_module_qualifier' predicate, for use in the definition of get_partial_qualifiers/3. compiler/hlds_module.m: compiler/make_hlds.m: Change the code for make_hlds__ctors_add and hlds_module__pred_table_insert/5 so that they handles partial qualifiers properly, computing the partial qualifiers by calling get_partial_qualifiers/3 rather than by checking the NeedQual variable and calling get_partial_qualifiers/2. compiler/modules.m: Delete the old get_partial_qualifiers/2 predicate. compiler/hlds_module.m: Add a new field to the HLDS containing the partial_qualifier_info. Add a partial_qualifier_info parameter to pred_table_insert/5. compiler/check_typeclass.m: compiler/make_hlds.m: When calling pred_table_insert/5, get the partial_qualifier_info from the HLDS and pass it as an extra argument. tests/hard_coded/sub-modules/nested.m: tests/hard_coded/sub-modules/nested3.m: tests/hard_coded/sub-modules/parent.m: tests/hard_coded/sub-modules/nested.exp: tests/hard_coded/sub-modules/nested3.exp: tests/hard_coded/sub-modules/parent.exp: Uncomment parts of these test cases which were previously commented out because they were not yet supported. doc/reference_manual.texi: Delete the description of this bug.
This commit is contained in:
@@ -61,6 +61,12 @@
|
||||
:- pred match_sym_name(sym_name, sym_name).
|
||||
:- mode match_sym_name(in, in) is semidet.
|
||||
|
||||
% insert_module_qualifier(ModuleName, SymName0, SymName):
|
||||
% prepend the specified ModuleName onto the module
|
||||
% qualifiers in SymName0, giving SymName.
|
||||
:- pred insert_module_qualifier(string, sym_name, sym_name).
|
||||
:- mode insert_module_qualifier(in, in, out) is det.
|
||||
|
||||
% Given a possible module qualified sym_name and a list of
|
||||
% argument types and a context, construct a term. This is
|
||||
% used to construct types.
|
||||
@@ -296,9 +302,6 @@ string_to_sym_name(String, ModuleSeparator, Result) :-
|
||||
Result = unqualified(String)
|
||||
).
|
||||
|
||||
:- pred insert_module_qualifier(string, sym_name, sym_name).
|
||||
:- mode insert_module_qualifier(in, in, out) is det.
|
||||
|
||||
insert_module_qualifier(ModuleName, unqualified(PlainName),
|
||||
qualified(unqualified(ModuleName), PlainName)).
|
||||
insert_module_qualifier(ModuleName, qualified(ModuleQual0, PlainName),
|
||||
|
||||
Reference in New Issue
Block a user