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: 16
Branches: main, release
Fix a bug where the compiler was going into an infinite loop for
insts and modes that are infinitely recursive at the top level,
e.g. `:- inst foo == foo.' or `:- mode foo == foo'.
compiler/make_hlds.m:
Check for circular insts and modes, and report an error if any occur.
Also, pass back a boolean from pass 1 indicating whether or not
any cyclic insts and modes. Rename the "UndefModes" argument
for parse_tree_to_hlds as "InvalidModes", and set it to yes
if there were any circular insts or modes, to ensure that
mercury_compile.m will not run mode analysis. This is needed
to avoid infinite loops in mode analysis when processing
circular
compiler/notes/compiler_design.html:
Mention that make_hlds.m checks for circular insts and modes.
Also mention that it expands state variable syntax.
compiler/mercury_compile.m:
Add a comment about circular insts and modes to the list of
reasons why we might need to stop before running mode analysis.
tests/invalid/circ_inst2.m:
Fix a misleading comment.
tests/invalid/Mmakefile:
tests/invalid/circ_inst.err_exp:
tests/invalid/circ_inst2.err_exp:
tests/invalid/circ_inst3.err_exp:
tests/invalid/circ_inst4.err_exp:
tests/invalid/circ_mode.err_exp:
tests/invalid/circ_mode2.err_exp:
tests/invalid/circ_mode3.err_exp:
tests/invalid/circ_mode4.err_exp:
Enable these test cases, and add expected output files for them.
tests/invalid/Mmakefile:
tests/invalid/circ_type3.m:
tests/invalid/circ_type3.err_exp:
Add another test for circular equivalence types.
Estimated hours taken: 1.5
Branches: main, release
Ensure that the test suite tests for cyclic and undefined insts and modes.
tests/invalid/Mmakefile:
tests/invalid/undef_inst.m:
tests/invalid/undef_inst.err_exp:
Add a test case for undefined insts.
tests/invalid/Mmakefile:
tests/invalid/circ_inst.m:
tests/invalid/circ_inst2.m:
tests/invalid/circ_inst3.m:
tests/invalid/circ_inst4.m:
tests/invalid/circ_mode.m:
tests/invalid/circ_mode2.m:
tests/invalid/circ_mode3.m:
tests/invalid/circ_mode4.m:
Add test cases for cyclic insts and modes.
Currently these tests are disabled, since we don't pass them.