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: 6
Branches: main
Improve the Erlang I/O implementation.
library/io.m:
In the Erlang implementation, implement:
- support for pushback and line number tracking in I/O streams
- seeking on binary streams
- io.write_byte, io.write_bytes
- io.make_temp
- io.get_exit_status, io.set_exit_status
Export some functions written in foreign_procs, otherwise they couldn't
be called if foreign_procs got inlined into other modules.
Fix some places in which we didn't convert Erlang error return values
to strings.
library/erlang_builtin.m:
Make the Erlang global server track the current exit status.
compiler/elds_to_erlang.m:
Make the Erlang main wrapper, return the last set exit status to the
operating system.
tests/hard_coded/Mmakefile:
tests/hard_coded/seek_test.exp:
tests/hard_coded/seek_test.m:
Add simple test case for io.seek_binary_input.
tests/hard_coded/remove_file.exp2:
Add expected output for Erlang backend.
tests/general/structure_reuse/Mmakefile:
Don't test this directory in Erlang grades.