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: 3
Branches: main
Fix Mantis bug 197.
compiler/add_clause.m:
If the state variable transformation report an error (as opposed to a
warning), then act as if we got a syntax error, and ignore the clause
body.
compiler/state_var.m:
Return a list of errors as well as warnings.
Loosen the over-tight sanity check that caused the bug. The sanity
check insisted that a state variable that is updated in one or more
arms of a branched control structure (disjunction, switch, or
if-then-else) could not be readonly. However, if a readonly variable
DOES happen to be illegally updated in an arm, existing code in the
state var transformation generates an error message, and then records
the variable as updated (and hence further updateable) to avoid error
messages for later updates in the same readonly context. As shown by
the bug test case, this can lead to violations of the sanity check.
The alternative approach would be to keep the readonly status of
the variable after illegal updates. Whether the additional error
messages generated for any other illegal updates on the same
computation paths would be helpful or noise is at the moment a
question of taste and guessing; there is as yet no empirical data
that would allow a reasoned decision one way or the other.
compiler/superhomogeneous.m:
Fix style.
tests/invalid/bug197.{m,err_exp}:
A regression test for the bug.
tests/invalid/Mmakefile:
Enable the new test.