tests/accumulator/*.m:
tests/analysis_*/*.m:
tests/benchmarks*/*.m:
tests/debugger*/*.{m,exp,inp}:
tests/declarative_debugger*/*.{m,exp,inp}:
tests/dppd*/*.m:
tests/exceptions*/*.m:
tests/general*/*.m:
tests/grade_subdirs*/*.m:
tests/hard_coded*/*.m:
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 debugger tests,
specify the new line numbers in .inp files and expect them in .exp files.
Estimated hours taken: 30
Branches: main
Add a post-processing pass directly after mode checking that tries to transform
procedures to avoid intermediate partially instantiated data structures. The
Erlang backend in particular cannot handle partially instantiated data
structures.
compiler/delay_partial_inst.m:
New module.
compiler/check_hlds.m:
Import delay_partial_inst.m
compiler/modes.m:
Call the delay partial instantiations pass after mode checking succeeds
if it is enabled.
compiler/options.m:
Add a new internal option `--delay-partial-instantiations', disabled by
default.
compiler/handle_options.m:
Make Erlang target imply --delay-partial-instantiations.
compiler/notes/compiler_design.html:
Mention delay_partial_inst.m
tests/hard_coded/Mercury.options:
tests/hard_coded/Mmakefile:
tests/hard_coded/delay_partial_test.exp:
tests/hard_coded/delay_partial_test.m:
tests/hard_coded/delay_partial_test2.exp:
tests/hard_coded/delay_partial_test2.m:
Add test cases for --delay-partial-instantiations.
compiler/goal_util.m:
Fix a comment.