Commit Graph

3 Commits

Author SHA1 Message Date
Zoltan Somogyi
c03b11ca48 Update the style of more test cases.
And updated expected outputs for changed line numbers.
2021-07-27 19:29:21 +10:00
Zoltan Somogyi
fdd141bf77 Clean up the tests in the other test directories.
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.
2015-02-16 12:32:18 +11:00
Zoltan Somogyi
824551883c Fix a bug I detected and Ralph tracked down.
Estimated hours taken: 3 + unknown by Ralph
Branches: main

Fix a bug I detected and Ralph tracked down. It was the result of an
interaction of the state variable transformation, mode analysis and
(lack of) quantification.

Sometimes, the final value of a state variable introduced with "some [!X]"
notation is not used along some paths of computation. In some of those cases,
a second pass of mode checking (usually unique mode checking) could delete the
unification building the final version of the state variable in one branch
of e.g. a switch while not being able to delete a procedure call building
that same final version transformation in another branch. Later compiler passes
then get errors because the branches bind different sets of variables.

The fix is to rerun quantification when this happens, to delete the final
version of the state variable from the switch's nonlocal set and thus from
the nonlocal set of any non-eliminated goals that bind it.

compiler/mode_info.m:
	Add a field to the mode info that records the need for a
	requantification.

compiler/modecheck_unify.m:
	When eliminating a unification, set the flag if the unification was
	inserted by the state variable transformation and may contain a
	singleton variable (such as the final version of the variable in the
	example above).

compiler/modes.m:
	Requantify the procedure at the end of mode analysis if the flag
	is set.

tests/valid/state_var_mode_bug.m:
	New test case, a very cut down and abstracted version of the original
	code the bug was detected in.

tests/valid/Mmakefile:
	Enable the new test case.
2005-10-07 04:45:01 +00:00