This module checks all the AST invariants. This is to ensure that all
invariants are written down in one place and are consistently checked
between the various clients of the AST (typer, pprintast, ...).
The invariants are checked in Pparsee, after applying the ppx
rewriters.
Change ``byte_size'' to ``size_in_bytes``, change ``kind_byte_size``
to ``kind_size_in_bytes``.
Add detailed comment indicating size functions do not consider header
of OCaml value.
Some Makefile's displayed "=> skipped" lines; some Makefile's displayed
a summary line including the word skipped; most Makefile's are simply
silent if tests are skipped.
Silent obviously doesn't discern between "skipped" and "broken"!
Patch alters all existing to display an explicit "=> skipped" for any
test which is skipped (including ocamlopt tests if
`BYTECODE_ONLY=true`).
The summary is updated to include:
- The number of skipped tests, and their names (if all tests are
skipped in a directory then just the directory name is displayed)
- The total number of tests considered - which should therefore be the
same on all platforms in all configurations
MAX_TESTSUITE_DIR_RETRIES (which defaults to 1 for the native Windows
ports and 0 for all other platforms) causes the `all` and `list` targets
to re-run any given test directory an additional number of times in
order to eliminate random failures during tests.
The `CANKILL` testsuite variable is eliminated in favour of testing for
`TOOLCHAIN`.
tests/lib-threads/signal.ml can be executed under native Windows by
means of a wrapper program to send CTRL+C.
tests/lib-threads/signal2.ml is not possible under native Windows
because Thread.sigmask is not implemented, so the precheck is updated to
reflect this, rather than the lack of kill -INT.
tests/lib-threads/sockets.ml is re-enabled, since the two MPRs affecting
it have been fixed.
Cygwin doesn't allow the stack limit (uname -s) to be changed, though it
can be queried. Alter the test so that the stack limit is only changed if
it is either unlimited or very large (and skip the tests if ulimit returns
an error)
Testing the parsetree fails on Windows because the .ml files have `\r\n`
endings. For these tests, simplest simply to ensure that they are checked
out using LF endings, even on Windows.
XML sample document behaves differently when checked out on Windows where
the source line endings in the test document become `\r\n`.
Alternative would have been to specify that t01.ml needs LF endings in
.gitattributes, but explicitly including the \n and \t in the OCaml string
seems less brittle.
During clean phase for consistency we need to check if the key
checked or got is alive or not. Three possibilities:
- Doesn't unset the key, but still return the right value as if it
is unset.
- Unset the key and the data
- Clean the ephemeron
Testing aliveness is a little costly, so it is better to amortize
this cost. Previously the last possibility was implemented but a
better trade-off seems the second one, since the clean phase is still
going to clean the ephemeron eventually.
And fix a bug in the handling of ephemeron during minor collection
found thanks to this test. Oldifying of ephemerons' data was not iterated
enough because `oldify_todo_list` doesn't become non-null each time
`caml_oldify_one` is run.