mirror of
https://github.com/Mercury-Language/mercury.git
synced 2026-04-15 01:13:30 +00:00
Split equiv_type.m into two parts.
The old equiv_type.m's growth was organic, not planned. It mixed predicates
operating on different levels, and even predicates on the same level
were not always logically organized.
compiler/equiv_type_parse_tree.m:
This module contains the bulk of the old equiv_type.m, the part
concerned with processing parse tree items and their major components.
compiler/equiv_type.m:
The part of the old equiv_type.m that deals with expanding equivalences
inside basic parts of program representations.
compiler/parse_tree.m:
compiler/notes/compiler_design.html:
Include and document the new module.
compiler/decide_type_repn.m:
compiler/mercury_compile_make_hlds.m:
Conform to the changes above.
This commit is contained in:
@@ -166,6 +166,7 @@
|
|||||||
:- import_module libs.options.
|
:- import_module libs.options.
|
||||||
:- import_module parse_tree.build_eqv_maps.
|
:- import_module parse_tree.build_eqv_maps.
|
||||||
:- import_module parse_tree.equiv_type.
|
:- import_module parse_tree.equiv_type.
|
||||||
|
:- import_module parse_tree.equiv_type_parse_tree.
|
||||||
:- import_module parse_tree.parse_tree_out_type_repn.
|
:- import_module parse_tree.parse_tree_out_type_repn.
|
||||||
:- import_module parse_tree.prog_data.
|
:- import_module parse_tree.prog_data.
|
||||||
:- import_module parse_tree.prog_type.
|
:- import_module parse_tree.prog_type.
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
2177
compiler/equiv_type_parse_tree.m
Normal file
2177
compiler/equiv_type_parse_tree.m
Normal file
File diff suppressed because it is too large
Load Diff
@@ -61,7 +61,7 @@
|
|||||||
:- import_module mdbcomp.
|
:- import_module mdbcomp.
|
||||||
:- import_module mdbcomp.sym_name.
|
:- import_module mdbcomp.sym_name.
|
||||||
:- import_module parse_tree.build_eqv_maps.
|
:- import_module parse_tree.build_eqv_maps.
|
||||||
:- import_module parse_tree.equiv_type.
|
:- import_module parse_tree.equiv_type_parse_tree.
|
||||||
:- import_module parse_tree.error_util.
|
:- import_module parse_tree.error_util.
|
||||||
:- import_module parse_tree.file_names.
|
:- import_module parse_tree.file_names.
|
||||||
:- import_module parse_tree.generate_mmakefile_fragments.
|
:- import_module parse_tree.generate_mmakefile_fragments.
|
||||||
|
|||||||
@@ -698,17 +698,22 @@ are module qualified during mode analysis.
|
|||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
The parse tree module also contains equiv_type.m,
|
The parse tree module also contains equiv_type_parse_tree.m,
|
||||||
which does expansion of equivalence types,
|
which orchestrates
|
||||||
and of `with_type` and `with_inst` annotations
|
the expansion of equivalence types in all parse tree components,
|
||||||
on predicate and function type and mode declarations.
|
and also propagates the information
|
||||||
|
in `with_type` and `with_inst` annotations
|
||||||
|
into the type and mode declarations of predicates and functions.
|
||||||
The part of its job gathering the definitions to be expanded
|
The part of its job gathering the definitions to be expanded
|
||||||
is done by build_eqv_maps.m.
|
is done by build_eqv_maps.m,
|
||||||
|
and the part involving expansions in basic parts of program representations
|
||||||
|
(meaning, those significantly smaller than a prog_item)
|
||||||
|
is done by equiv_type.m.
|
||||||
<p>
|
<p>
|
||||||
Expansion of equivalence types is really part of type-checking,
|
Expansion of equivalence types is really part of type-checking,
|
||||||
but is done on the parse tree rather than on the HLDS
|
but is done on the parse tree rather than on the HLDS
|
||||||
because it turned out to be much easier to implement that way.
|
because it turned out to be much easier to implement that way.
|
||||||
(Though later we had to add a pass the expand equivalence types
|
(Though later we had to add a pass to expand equivalence types
|
||||||
in the HLDS anyway.)
|
in the HLDS anyway.)
|
||||||
|
|
||||||
<h4>The hlds.m package</h4>
|
<h4>The hlds.m package</h4>
|
||||||
|
|||||||
@@ -115,6 +115,7 @@
|
|||||||
:- include_module convert_parse_tree.
|
:- include_module convert_parse_tree.
|
||||||
:- include_module deps_map.
|
:- include_module deps_map.
|
||||||
:- include_module equiv_type.
|
:- include_module equiv_type.
|
||||||
|
:- include_module equiv_type_parse_tree.
|
||||||
:- include_module file_names.
|
:- include_module file_names.
|
||||||
:- include_module get_dependencies.
|
:- include_module get_dependencies.
|
||||||
:- include_module grab_modules.
|
:- include_module grab_modules.
|
||||||
|
|||||||
Reference in New Issue
Block a user