tests/invalid/*.{m,err_exp}:
tests/misc_tests/*.m:
tests/mmc_make/*.m:
tests/par_conj/*.m:
tests/purity/*.m:
tests/stm/*.m:
tests/string_format/*.m:
tests/structure_reuse/*.m:
tests/submodules/*.m:
tests/tabling/*.m:
tests/term/*.m:
tests/trailing/*.m:
tests/typeclasses/*.m:
tests/valid/*.m:
tests/warnings/*.{m,exp}:
Make these tests use four-space indentation, and ensure that
each module is imported on its own line. (I intend to use the latter
to figure out which subdirectories' tests can be executed in parallel.)
These changes usually move code to different lines. For the tests
that check compiler error messages, expect the new line numbers.
browser/cterm.m:
browser/tree234_cc.m:
Import only one module per line.
tests/hard_coded/boyer.m:
Fix something I missed.
Estimated hours taken: 18
Branches: main
Move the univ, maybe, pair and unit types from std_util into their own
modules. std_util still contains the general purpose higher-order programming
constructs.
library/std_util.m:
Move univ, maybe, pair and unit (plus any other related types
and procedures) into their own modules.
library/maybe.m:
New module. This contains the maybe and maybe_error types and
the associated procedures.
library/pair.m:
New module. This contains the pair type and associated procedures.
library/unit.m:
New module. This contains the types unit/0 and unit/1.
library/univ.m:
New module. This contains the univ type and associated procedures.
library/library.m:
Add the new modules.
library/private_builtin.m:
Update the declaration of the type_ctor_info struct for univ.
runtime/mercury.h:
Update the declaration for the type_ctor_info struct for univ.
runtime/mercury_mcpp.h:
runtime/mercury_hlc_types.h:
Update the definition of MR_Univ.
runtime/mercury_init.h:
Fix a comment: ML_type_name is now exported from type_desc.m.
compiler/mlds_to_il.m:
Update the the name of the module that defines univs (which are
handled specially by the il code generator.)
library/*.m:
compiler/*.m:
browser/*.m:
mdbcomp/*.m:
profiler/*.m:
deep_profiler/*.m:
Conform to the above changes. Import the new modules where they
are needed; don't import std_util where it isn't needed.
Fix formatting in lots of modules. Delete duplicate module
imports.
tests/*:
Update the test suite to confrom to the above changes.
Estimated hours taken: 8
Better handling of abstract unification of insts which always fail.
compiler/det_analysis.m:
New predicate det_par_conjunction_detism/3 to compute the
determinism of parallel conjunctions (or virtual parallel
conjunctions).
compiler/hlds_data.m:
Make the ground_inst_table store the determinism of the
grounding operation. The reason for this is that
make_ground_inst* now returns the determinism of the
grounding operation, and so it makes sense to store the
determinisms along with cached groundings to avoid
recomputing them.
compiler/inst_util.m:
Add a new argument to return the determinism of the
unification/grounding to the following predicates:
abstractly_unify_inst_functor
abstractly_unify_bound_inst_list
abstractly_unify_bound_inst_list_lives
abstractly_unify_inst_list_lives
make_ground_inst_list_lives
make_ground_inst_list
make_ground_inst
make_ground_bound_inst_list
This is to make it easier to locate unifications which
cannot succeed.
compiler/instmap.m:
If you attempt to insert a not_reached into an instmap, the
entire instmap becomes unreachable.
compiler/modecheck_unify.m:
Slight reorganisation of code dealing with var-functor
unifications. Simple optimisations have been moved to
modecheck_unify_functor.
All unifications which definitely fail are now optimised
to `fail'.
compiler/mode_util.m:
Minor change to support the alteration to the ground_inst_table
above.
tests/valid/Mmake:
tests/valid/empty_bound_inst_list.m:
Test case.