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: 0.1
Branches: main
Delete the obsolete versions of the all-solutions predicates from std_util.m.
(Normally we would wait until after the 0.13 release, but we don't want them
in the next g12 release of Mercury which is why they are being deleted now.)
Document some parts of the library that are handled as special cases by the
compiler and the declarative debugger.
library/std_util.m:
Delete the obsolete versions of the all-solutions predicates from
this module.
library/solutions.m:
Mention that these predicates are handled as a special case
in browser/declarative_tree.m:
Reformat a descriptive comment so that the library reference manual
doesn't have a line that exceeds 80 characters in length.
library/builtin.m:
Mention that cc_multi_equal is handled as a special case in
browser/declarative_tree.m.
Mention that dynamic_cast/2 is handled as a special case in
compiler/const_prop.m.
tests/*/*.m:
Import solutions where necessary.
Estimated hours taken: 10
Fix bugs in the handling of temporaries.
compiler/code_info.m:
Reorganize the way temporary slots are handled. Create a stack slot
to slot_contents map that is part of the permanent state, so each
slot can be used for only one purpose within a procedure; this is
to make garbage collection of these slots possible. Make the set
of temporary slots in use be part of the location dependent state.
At the ends of branched control structures, consider a temp slot
in use if it was in use at the end of any branch. (Previously,
we considered it live after the control structure if it was live
at the end of the last branch. We got that right for branched
structures that manipulate temp slots, i.e. disjunctions and
if-then-elses, but we got it wrong for switches.
Rename some predicates to get rid of the double meaning of the word
"discard" as applied to a temporary, which used to mean either
"release the slot" or "execute the discard_ticket operation".
It now means only the latter; the word "release" refers to the former.
compiler/disj_gen.m:
compiler/ite_gen.m:
Conform to the new method of handling temporary slots.
tests/valid/complex_failure.m:
tests/valid/semi_fail_in_non_ite.m:
Copies of the test cases from tests/general.
tests/valid/Mmakefile:
Enable the new test cases, running them with --use-trail.
Unfortunately, we cannot just specify --use-trail for them
in tests/general, since that would cause a link error in the usual
case that the runtime being linked with is not in a trailing grade.