summaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
Diffstat (limited to 'tools')
-rw-r--r--tools/gdb-macros447
-rw-r--r--tools/gdb_ocamlrun.py2
-rwxr-xr-xtools/translate-all-tests1412
3 files changed, 1684 insertions, 177 deletions
diff --git a/tools/gdb-macros b/tools/gdb-macros
index 17c3110e2a..6b12b3b86b 100644
--- a/tools/gdb-macros
+++ b/tools/gdb-macros
@@ -16,19 +16,30 @@
# A set of macros for low-level debugging of OCaml programs and of the
# OCaml runtime itself (both native and byte-code).
+# Advice to future developers: rewrite this in Python which will be
+# faster, more reliable, and more maintainable. See also gdb_ocamlrun.py
+
# This file should be loaded in gdb with [ source gdb-macros ].
-# It defines one command: [caml]
+# It defines a few related commands:
+#
# Usage:
# [caml <value>]
# If <value> is an OCaml value, this will display it in a low-level
# but legible format, including the header information.
+#
+# [caml-next]
+# If the most recent value shown with "caml" is a heap block,
+# this will describe the following block.
+#
+# [caml-field <N>]
+# If the most recent value shown with "caml" is a heap block,
+# this will describe the Nth field in that block.
-# To do: a [camlsearch] command to find all (gc-traceable) pointers to
-# a given heap block.
-
-set $camlwordsize = sizeof(char *)
+set $caml_word_size = sizeof(char *)
+set $caml_word_bits = 8 * $caml_word_size
+set $caml_pool_size = 4096 * $caml_word_size
-if $camlwordsize == 8
+if $caml_word_size == 8
set $caml_unalloc_mask = 0xFF00FFFFFF00FFFF
set $caml_unalloc_value = 0xD700D7D7D700D6D7
else
@@ -36,57 +47,48 @@ else
set $caml_unalloc_value = 0xD700D6D7
end
-define camlcheckheader
- if $arg0 >> 10 <= 0 || $arg0 >> 10 >= 0x1000000000000
- if ($arg0 & $caml_unalloc_mask) == $caml_unalloc_value
- set $camlcheckheader_result = 2
- else
- if $arg0 == (unsigned long) 0
- set $camlcheckheader_result = 3
- else
- set $camlcheckheader_result = 1
- end
- end
- else
- set $camlcheckheader_result = 0
- end
-end
+# `caml header item` Displays information about the header of a Caml
+# block `item`, with no new-line.
-define camlheader
- set $hd = * (unsigned long *) ($arg0 - $camlwordsize)
+define caml_header
+ set $hd = * (unsigned long *) ($arg0 - $caml_word_size)
set $tag = $hd & 0xFF
- set $color = ($hd >> 8) & 3
+ set $color = $hd & (3 << 8)
set $size = $hd >> 10
- camlcheckheader $hd
- if $camlcheckheader_result != 0
- if $camlcheckheader_result == 2
+ if $size <= 0 || $size >= 0x1000000000000
+ if ($hd & $caml_unalloc_mask) == $caml_unalloc_value
printf "[UNALLOCATED MEMORY]"
else
- if $camlcheckheader_result == 3
- printf "[** fragment **] 0x%016lu", $hd
+ if !$hd
+ printf "[** fragment **] 0x%lx", $hd
else
- printf "[**invalid header**] 0x%016lu", $hd
+ printf "[** invalid header **] 0x%lx", $hd
end
end
- set $size = 0
else
printf "["
- if $color == 0
- printf "white "
+ if $color == caml_global_heap_state.MARKED
+ printf "marked "
end
- if $color == 1
- printf "gray "
+ if $color == caml_global_heap_state.UNMARKED
+ printf "unmarked "
end
- if $color == 2
- printf "blue "
+ if $color == caml_global_heap_state.GARBAGE
+ printf "garbage "
end
- if $color == 3
- printf "black "
+ if $color == 3 << 8
+ printf "not markable "
end
- if $tag < 246
- printf "tag%d ", $tag
+ if $tag < 244
+ printf "tag %d ", $tag
+ end
+ if $tag == 244
+ printf "Forcing "
+ end
+ if $tag == 245
+ printf "Continuation "
end
if $tag == 246
printf "Lazy "
@@ -123,31 +125,144 @@ define camlheader
end
end
-define camlheap
- if $arg0 >= Caml_state->young_start && $arg0 < Caml_state->young_end
- printf "YOUNG"
- set $camlheap_result = 1
- else
- set $chunk = Caml_state->heap_start
- set $found = 0
- while $chunk != 0 && ! $found
- set $chunk_size = * (unsigned long *) ($chunk - 2 * $camlwordsize)
- if $arg0 > $chunk && $arg0 <= $chunk + $chunk_size
- printf "OLD"
- set $found = 1
+# Various caml_search_* functions which understand the layout of the
+# Caml heap. Main driver function is "caml_search". This is slow and
+# would benefit from being rewritten in a faster or more capable
+# language (e.g. Python). To debug the heap searching itself, set
+# $caml_search_debug=1.
+
+# `caml_search_pools name pool item` searches the pool list from
+# `pool` onwards for the block `item`. If found, it outputs `FOUND`
+# and a description of the pool where it was found. If
+# $caml_search_debug is set, it also describes all the pools on the
+# list. `name` is a string describing the pool list.
+
+define caml_search_pools
+ set $pool = $arg1
+ while $pool && ($caml_search_debug || !$found)
+ set $found_here = 0
+ if ($arg2 >= (char*)($pool+1)) && ($arg2 < (char*)$pool + $caml_pool_size)
+ printf "FOUND"
+ set $found_here = 1
+ set $found = 1
+ end
+ if $caml_search_debug || $found_here
+ printf " domain %d %s pool %lx-%lx sizeclass %d(%d)", \
+ $domain_index, $arg0, $pool, ((char*)$pool)+$caml_pool_size, \
+ $pool->sz, wsize_sizeclass[$pool->sz]
+ if $caml_search_debug
+ printf "\n"
end
- set $chunk = * (unsigned long *) ($chunk - $camlwordsize)
end
- if $found
- set $camlheap_result = 1
- else
- printf "OUT-OF-HEAP"
- set $camlheap_result = 0
+ set $pool = $pool->next
+ end
+end
+
+# `caml_search_large name large item` searches the large block list
+# from `large` onwards for the block `item`. If found, it outputs
+# `FOUND` and a description of the large block where it was found. If
+# $caml_search_debug is set, it also describes all the large blocks
+# on the list. `name` is a string describing the large object list.
+
+define caml_search_large
+ set $large = $arg1
+ while $large && ($caml_search_debug || !$found)
+ set $large_hd = * (unsigned long *)($large+1)
+ set $large_size = ((($large_hd) >> 10)+1)*sizeof(unsigned long)
+ set $large_end = ((char*)($large+1))+$large_size
+ set $found_here = 0
+ if ($arg2 > (char*)$large) && ($arg2 < $large_end)
+ printf "FOUND"
+ set $found_here = 1
+ set $found = 1
+ end
+ if $caml_search_debug || $found_here
+ printf " domain %d %s large %lx-%lx? (size %d?)", \
+ $domain_index, $arg0, $large, $large_end, $large_size
+ if $caml_search_debug
+ printf "\n"
+ end
+ end
+ set $large = $large->next
+ end
+end
+
+# `caml_search_heap_state state item` searches the pool and large
+# object lists in the caml_heap_state `state` for the block `item`.
+# If found, it outputs `FOUND` and a description of the zone where it
+# was found. If $caml_search_debug is set, it also describes all the
+# areas searched.
+
+define caml_search_heap_state
+ set $heap_state = $arg0
+ set $NUM_SIZECLASSES = sizeof($heap_state->avail_pools)/ \
+ sizeof($heap_state->avail_pools[0])
+ set $sizeclass = 0
+ while $sizeclass < $NUM_SIZECLASSES && ($caml_search_debug || !$found)
+ caml_search_pools "avail" $heap_state->avail_pools[$sizeclass] $arg1
+ caml_search_pools "full" $heap_state->full_pools[$sizeclass] $arg1
+ caml_search_pools "unswept avail" \
+ $heap_state->unswept_avail_pools[$sizeclass] $arg1
+ caml_search_pools "unswept full" \
+ $heap_state->unswept_full_pools[$sizeclass] $arg1
+ set $sizeclass = $sizeclass + 1
+ end
+ caml_search_large "swept" $heap_state->swept_large $arg1
+ caml_search_large "unswept" $heap_state->unswept_large $arg1
+end
+
+# `caml_search item` searches the entire Caml heap for `item` and
+# outputs text describing the location, where it was found, with no
+# new-line.
+
+define caml_search
+ set $Max_domains = sizeof(all_domains)/sizeof(all_domains[0])
+ set $domain_index = 0
+ set $found = 0
+ while $domain_index < $Max_domains && !$found
+ set $domain = all_domains + $domain_index
+ if $domain->state != 0
+ if $caml_search_debug
+ printf "domain %d minor %lx-%lx\n", \
+ $domain_index, \
+ $domain->state->young_start, $domain->state->young_end
+ end
+ if $arg0 >= $domain->state->young_start && \
+ $arg0 < $domain->state->young_end
+ printf "FOUND young (domain %d)", $domain_index
+ set $found = 1
+ end
+ if $caml_search_debug || !$found
+ caml_search_heap_state $domain->state->shared_heap $arg0
+ end
end
+ set $domain_index = $domain_index + 1
+ end
+ if $caml_search_debug
+ printf "Global (orphaned) heap:\n"
+ end
+ if $caml_search_debug || !$found
+ set $sizeclass = 0
+ set $domain_index = -1
+ while $sizeclass < $NUM_SIZECLASSES && ($caml_search_debug || !$found)
+ caml_search_pools "global avail" \
+ pool_freelist.global_avail_pools[$sizeclass] $arg0
+ caml_search_pools "global full" \
+ pool_freelist.global_full_pools[$sizeclass] $arg0
+ set $sizeclass = $sizeclass + 1
+ end
+ caml_search_large "global large" pool_freelist.global_large $arg0
+ end
+ set $caml_search_result = $found
+ if !$caml_search_result
+ printf "not on Caml heap"
end
end
-define camlint
+# `caml_int item` describes `item`, with no new line, on the
+# assumption that it's a Caml (tagged) integer.
+
+define caml_int
if ($arg0 & $caml_unalloc_mask) == $caml_unalloc_value
printf "UNALLOCATED MEMORY"
else
@@ -158,164 +273,144 @@ define camlint
end
end
-define camlblock
- printf "%#lx: ", $arg0 - $camlwordsize
- camlheap $arg0
+# `caml_summary item` outputs a short text description of `item`, with
+# no newline.
+
+define caml_summary
+ if ($arg0 & 1) == 1
+ caml_int $arg0
+ end
+ if ($arg0 & 7) == 0
+ # aligned pointer
+ caml_search $arg0
+ printf " "
+ caml_header $arg0
+ end
+ if ($arg0 & 1) == 0 && ($arg0 & 7)
+ printf "UNALIGNED POINTER: %lx\n", $caml_last
+ end
+end
+
+# `caml_block item` describes `item`, which should be a pointer to a
+# Caml block, over several lines.
+
+define caml_block
+ printf "%#lx: ", $arg0 - $caml_word_size
+ set $caml_block_ptr = $arg0
+ caml_search $caml_block_ptr
printf " "
- camlheader $arg0
- set $mysize = $size
- set $camlnext = $arg0 + $camlwordsize * ($size + 1)
+ caml_header $caml_block_ptr
+ set $caml_block_size = $size
+ set $caml_block_tag = $tag
+ set $caml_next = $caml_block_ptr + $caml_word_size * ($caml_block_size + 1)
printf "\n"
- if $tag == 252
- x/s $arg0
+ if $caml_block_tag == 252
+ x/s $caml_block_ptr
end
- if $tag == 253
- x/f $arg0
+ if $caml_block_tag == 253
+ x/f $caml_block_ptr
end
- if $tag == 254
- while $count < $mysize && $count < 10
- if $count + 1 < $size
- x/2f $arg0 + $camlwordsize * $count
+ if $caml_block_tag == 254
+ while $count < $caml_block_size && $count < 10
+ if $count + 1 < $caml_block_size
+ x/2f $caml_block_ptr + $caml_word_size * $count
else
- x/f $arg0 + $camlwordsize * $count
+ x/f $caml_block_ptr + $caml_word_size * $count
end
set $count = $count + 2
end
- if $count < $mysize
+ if $count < $caml_block_size
printf "... truncated ...\n"
end
end
- if $tag == 249
+ if $caml_block_tag == 249
printf "... infix header, displaying enclosing block:\n"
- set $mybaseaddr = $arg0 - $camlwordsize * $mysize
- camlblock $mybaseaddr
- # reset $tag, which was clobbered by the recursive call (yuck)
- set $tag = 249
+ set $mybaseaddr = $caml_block_ptr - $caml_word_size * $caml_block_size
+ set $save_ptr = $caml_block_ptr
+ set $save_size = $caml_block_size
+ caml_block $mybaseaddr
+ # restore values clobbered by the recursive call (yuck)
+ set $caml_block_tag = 249
+ set $caml_block_ptr = $save_ptr
+ set $caml_block_size = $save_size
end
- if $tag != 249 && $tag != 252 && $tag != 253 && $tag != 254
- set $isvalues = $tag < 251
+ if $caml_block_tag != 249 && $caml_block_tag != 252 && \
+ $caml_block_tag != 253 && $caml_block_tag != 254
+ set $isvalues = $caml_block_tag < 251
set $count = 0
- while $count < $mysize && $count < 10
- set $adr = $arg0 + $camlwordsize * $count
+ while $count < $caml_block_size && $count < 10
+ set $adr = $caml_block_ptr + $caml_word_size * $count
set $field = * (unsigned long *) $adr
printf "%#lx: [%d] 0x%016lx ", $adr, $count, $field
- if ($field & 7) == 0 && $isvalues
- camlheap $field
- if $camlheap_result
- printf " "
- camlheader $field
- end
+ # If closure, zeroth field is a code address.
+ if $caml_block_tag == 247 && $count == 0
+ printf "code address? "
end
- if ($field & 1) == 1
- camlint $field
+ # Decode closure information field
+ if ($field & 1) == 1 && $caml_block_tag == 247 && $count == 1
+ printf "arity %d non-scannable %d", \
+ $field >> ($caml_word_bits - 8), \
+ ($field & ((1ul << ($caml_word_bits-8))-1)) >> 1
+ else
+ caml_summary $field
end
printf "\n"
set $count = $count + 1
end
- if $count < $mysize
+ if $count < $caml_block_size
printf "... truncated ...\n"
end
end
printf "next block head: %#lx value: %#lx\n", \
- $arg0 + $camlwordsize * $mysize, $arg0 + $camlwordsize * ($mysize+1)
+ $caml_block_ptr + $caml_word_size * $caml_block_size, \
+ $caml_block_ptr + $caml_word_size * ($caml_block_size+1)
end
-# displays an OCaml value
+# `caml item` describes the Caml value `item`, over several lines if
+# appropriate. This function is the main point of this file.
+
define caml
- set $camllast = (long) $arg0
- if ($camllast & 1) == 1
- set $camlnext = 0
- camlint $camllast
- printf "\n"
- end
- if ($camllast & 7) == 0
- camlblock $camllast
+ set $caml_last = $arg0
+ set $caml_next = 0
+ if ($caml_last & 1) == 1
+ caml_int $caml_last
end
- if ($camllast & 7) != 0 && ($camllast & 1) != 1
- set $camlnext = 0
- printf "invalid pointer: %#016lx\n", $camllast
+ if ($caml_last & 7) == 0
+ caml_block $caml_last
end
+ printf "\n"
end
-# displays the next OCaml value in memory
-define camlnext
- caml $camlnext
-end
-
-# displays the n-th field of the previously displayed value
-define camlfield
- set $camlfield_addr = ((long *) $camllast)[$arg0]
- caml $camlfield_addr
+document caml
+Output a description of a the Caml value VALUE, in a low-level but legible
+format, including information about where on the heap it is located, and any
+header and fields it contains.
end
-# displays the list of heap chunks
-define camlchunks
- set $chunk = * (unsigned long *) &Caml_state->heap_start
- while $chunk != 0
- set $chunk_size = * (unsigned long *) ($chunk - 2 * $camlwordsize)
- set $chunk_alloc = * (unsigned long *) ($chunk - 3 * $camlwordsize)
- printf "chunk: addr = %#lx .. %#lx", $chunk, $chunk + $chunk_size
- printf " (size = %#lx; alloc = %#lx)\n", $chunk_size, $chunk_alloc
- set $chunk = * (unsigned long *) ($chunk - $camlwordsize)
+# displays the next OCaml value in memory
+define caml_next
+ if $caml_next
+ caml $caml_next
+ else
+ printf "No next block\n"
end
end
-# walk the heap and launch command `camlvisitfun` on each block
-# the variables `$hp` `$val` `$hd` `$tag` `$color` and `$size`
-# are set before calling `camlvisitfun`
-# `camlvisitfun` can set `$camlvisitstop` to stop the iteration
-
-define camlvisit
- set $cvchunk = * (unsigned long *) &Caml_state->heap_start
- set $camlvisitstop = 0
- while $cvchunk != 0 && ! $camlvisitstop
- set $cvchunk_size = * (unsigned long *) ($cvchunk - 2 * $camlwordsize)
- set $cvhp = $cvchunk
- while $cvhp < $cvchunk + $cvchunk_size && !$camlvisitstop
- set $hp = $cvhp
- set $val = $hp + $camlwordsize
- set $hd = * (unsigned long *) $hp
- set $tag = $hd & 0xFF
- set $color = ($hd >> 8) & 3
- set $cvsize = $hd >> 10
- set $size = $cvsize
- camlvisitfun
- set $cvhp = $cvhp + (($cvsize + 1) * $camlwordsize)
- end
- set $cvchunk = * (unsigned long *) ($cvchunk - $camlwordsize)
- end
+document caml_next
+If the most recent value described was a heap block, "caml-next" describes
+the following block on the heap.
end
-define caml_cv_check_fl0
- if $hp == * (unsigned long *) &Caml_state->heap_start
- set $flcheck_prev = ((unsigned long) &sentinels + 16)
- end
- if $color == 2 && $size > 5
- if $val != * (unsigned long *) $flcheck_prev
- printf "free-list: missing link %#x -> %#x\n", $flcheck_prev, $val
- set $camlvisitstop = 1
- end
- set $flcheck_prev = $val
- end
+# displays the n-th field of the previously displayed value
+define caml_field
+ set $caml_field = ((long *) $caml_last)[$arg0]
+ caml $caml_field
end
-define caml_check_fl
- set $listsize = $arg0
- set $blueseen = $listsize == 0
- set $val = * (unsigned long *) ((long) &sentinels + 16 + 32 * $listsize)
- while $val != 0
- printf "%#x\n", $val
- set $hd = * (unsigned long *) ($val - 8)
- set $color = ($hd >> 8) & 3
- if $blueseen && $color != 2
- printf "non-blue block at address %#x\n", $val
- loop_break
- else
- set $blueseen = 1
- end
- set $val = * (unsigned long *) $val
- end
+document caml_field
+If the most recent value described was a heap block, "caml-field N" describes
+the Nth field in that block.
end
diff --git a/tools/gdb_ocamlrun.py b/tools/gdb_ocamlrun.py
index 12f438bfb7..d01deddd08 100644
--- a/tools/gdb_ocamlrun.py
+++ b/tools/gdb_ocamlrun.py
@@ -127,7 +127,7 @@ class BlockPrinter:
else:
s = 'wosize=%d' % self.length
- markbits = gdb.lookup_symbol("global")[0].value()
+ markbits = gdb.lookup_symbol("caml_global_heap_state")[0].value()
gc = {
int(markbits['MARKED']): 'MARKED',
int(markbits['UNMARKED']): 'UNMARKED',
diff --git a/tools/translate-all-tests b/tools/translate-all-tests
new file mode 100755
index 0000000000..febed2d5f8
--- /dev/null
+++ b/tools/translate-all-tests
@@ -0,0 +1,1412 @@
+#!/bin/sh
+
+#**************************************************************************
+#* *
+#* OCaml *
+#* *
+#* Damien Doligez, projet Cambium, INRIA *
+#* *
+#* Copyright 2023 Institut National de Recherche en Informatique et *
+#* en Automatique. *
+#* *
+#* All rights reserved. This file is distributed under the terms of *
+#* the GNU Lesser General Public License version 2.1, with the *
+#* special exception on linking described in the file LICENSE. *
+#* *
+#**************************************************************************
+
+# This is the list of tests present in commit
+# cd195d6f4f8696af36efaea82941482e92f85464
+
+# This script assumes that ../trunk contains a check-out of trunk to get
+# the old-syntax test files from.
+
+# There are 1328 test scripts detected by ocamltest
+
+# These tests will be translated in plain mode but need manual intervention
+# to restore comments.
+
+TESTS_COMMENTS="
+afl-instrumentation/afl-fuzz-test.ml \
+afl-instrumentation/afl-showmap-test.ml \
+badly-ordered-deps/main.ml \
+lib-dynlink-native/main.ml \
+lib-scanf-2/tscanf2_master.ml \
+lib-systhreads/testpreempt.ml \
+lib-systhreads/testyield.ml \
+lib-threads/delayintr.ml \
+lib-threads/signal.ml \
+lib-threads/sockets.ml \
+lib-unix/common/cloexec.ml \
+manual-intf-c/prog.ml \
+opaque/test.ml \
+shadow_include/shadow_all.ml \
+"
+
+# These tests can be translated without special care
+TESTS_PLAIN="
+arch-power/exn_raise.ml \
+array-functions/test.ml \
+asmcomp/0001-test.ml \
+asmcomp/bind_tuples.ml \
+asmcomp/compare.ml \
+asmcomp/evaluation_order.ml \
+asmcomp/func_sections.ml \
+asmcomp/lift_mutable_let_flambda.ml \
+asmcomp/optargs.ml \
+asmcomp/poll_attr_inserted.ml \
+asmcomp/polling_insertion.ml \
+asmcomp/prevent_fma.ml \
+asmcomp/register_typing.ml \
+asmcomp/register_typing_switch.ml \
+asmcomp/select_addr.ml \
+asmcomp/staticalloc.ml \
+asmcomp/try_checkbound.ml \
+asmcomp/unrolling_flambda.ml \
+asmcomp/unrolling_flambda2.ml \
+asmgen/arith.cmm \
+asmgen/catch-float.cmm \
+asmgen/catch-multiple.cmm \
+asmgen/catch-rec-deadhandler.cmm \
+asmgen/catch-rec.cmm \
+asmgen/catch-try-float.cmm \
+asmgen/catch-try.cmm \
+asmgen/checkbound.cmm \
+asmgen/even-odd-spill-float.cmm \
+asmgen/even-odd-spill.cmm \
+asmgen/even-odd.cmm \
+asmgen/fib.cmm \
+asmgen/immediates.cmm \
+asmgen/integr.cmm \
+asmgen/invariants.cmm \
+asmgen/pgcd.cmm \
+asmgen/quicksort.cmm \
+asmgen/quicksort2.cmm \
+asmgen/soli.cmm \
+asmgen/tagged-fib.cmm \
+asmgen/tagged-integr.cmm \
+asmgen/tagged-quicksort.cmm \
+asmgen/tagged-tak.cmm \
+asmgen/tak.cmm \
+ast-invariants/test.ml \
+backtrace/backtrace.ml \
+backtrace/backtraces_and_finalizers.ml \
+backtrace/lazy.ml \
+basic-float/float_compare.ml \
+basic-float/float_literals.ml \
+basic-float/tfloat_hex.ml \
+basic-float/tfloat_record.ml \
+basic-float/zero_sized_float_arrays.ml \
+basic-io/wc.ml \
+basic-io-2/io.ml \
+basic-manyargs/manyargs.ml \
+basic-modules/main.ml \
+basic-modules/pr11186.ml \
+basic-modules/recursive_module_evaluation_errors.ml \
+basic-modules/recursive_module_init.ml \
+basic-more/bounds.ml \
+basic-more/div_by_zero.ml \
+basic-more/function_in_ref.ml \
+basic-more/if_in_if.ml \
+basic-more/opaque_prim.ml \
+basic-more/pr10294.ml \
+basic-more/pr1271.ml \
+basic-more/pr2719.ml \
+basic-more/pr6216.ml \
+basic-more/pr7683.ml \
+basic-more/record_evaluation_order.ml \
+basic-more/robustmatch.ml \
+basic-more/sequential_and_or.ml \
+basic-more/structural_constants.ml \
+basic-more/tbuffer.ml \
+basic-more/top_level_patterns.ml \
+basic-more/tprintf.ml \
+basic-multdef/usemultdef.ml \
+basic-private/tlength.ml \
+basic/arrays.ml \
+basic/bigints.ml \
+basic/boxedints.ml \
+basic/constprop.ml.c \
+basic/divint.ml \
+basic/equality.ml \
+basic/eval_order_1.ml \
+basic/eval_order_2.ml \
+basic/eval_order_3.ml \
+basic/eval_order_4.ml \
+basic/eval_order_6.ml \
+basic/eval_order_7.ml \
+basic/eval_order_8.ml \
+basic/eval_order_pr10283.ml \
+basic/float.ml \
+basic/float_physical_equality.ml \
+basic/includestruct.ml \
+basic/localexn.ml \
+basic/localfunction.ml \
+basic/maps.ml \
+basic/min_int.ml \
+basic/objects.ml \
+basic/opt_variants.ml \
+basic/patmatch.ml \
+basic/patmatch_for_multiple.ml \
+basic/patmatch_incoherence.ml \
+basic/patmatch_split_no_or.ml \
+basic/pr7253.ml \
+basic/pr7533.ml \
+basic/pr7657.ml \
+basic/recvalues.ml \
+basic/sets.ml \
+basic/stringmatch.ml \
+basic/switch_opts.ml \
+basic/tailcalls.ml \
+basic/trigraph.ml \
+basic/tuple_match.ml \
+basic/zero_divided_by_n.ml \
+c-api/alloc_async.ml \
+c-api/test_c_thread_has_lock.ml \
+c-api/test_c_thread_has_lock_systhread.ml \
+callback/callback_effects_gc.ml \
+callback/minor_named.ml \
+callback/nested_fiber.ml \
+callback/signals_alloc.ml \
+callback/stack_overflow.ml \
+callback/test1.ml \
+callback/test2.ml \
+callback/test3.ml \
+callback/test4.ml \
+callback/test5.ml \
+callback/test6.ml \
+callback/test7.ml \
+callback/test_finaliser_gc.ml \
+callback/test_signalhandler.ml \
+compiler-libs/test_longident.ml \
+compiler-libs/test_untypeast.ml \
+effects/cmphash.ml \
+effects/evenodd.ml \
+effects/issue479.ml \
+effects/manylive.ml \
+effects/marshal.ml \
+effects/overflow.ml \
+effects/partial.ml \
+effects/reperform.ml \
+effects/sched.ml \
+effects/shallow_state.ml \
+effects/shallow_state_io.ml \
+effects/test1.ml \
+effects/test10.ml \
+effects/test11.ml \
+effects/test2.ml \
+effects/test3.ml \
+effects/test4.ml \
+effects/test5.ml \
+effects/test6.ml \
+effects/test_lazy.ml \
+effects/unhandled_unlinked.ml \
+effects/used_cont.ml \
+embedded/cmcaml.ml \
+ephe-c-api/test.ml \
+exotic-syntax/exotic.ml \
+extension-constructor/test.ml \
+flambda/afl_lazy.ml \
+flambda/approx_meet.ml \
+flambda/gpr2239.ml \
+flambda/gpr998.ml \
+flambda/specialise.ml \
+float-unboxing/float_subst_boxed_number.ml \
+float-unboxing/unbox_under_assign.ml \
+fma/fma.ml \
+formats-transition/deprecated_unsigned_printers.ml \
+formats-transition/ignored_scan_counters.ml \
+formats-transition/legacy_incompatible_flags.ml \
+formats-transition/legacy_unfinished_modifiers.ml \
+formatting/errors_batch.ml \
+formatting/margins.ml \
+frame-pointers/c_call.ml \
+frame-pointers/effects.ml \
+frame-pointers/exception_handler.ml \
+frame-pointers/reperform.ml \
+frame-pointers/stack_realloc.ml \
+frame-pointers/stack_realloc2.ml \
+functors/functors.ml \
+gc-roots/globroots.ml \
+gc-roots/globroots_parallel.ml \
+gc-roots/globroots_parallel_spawn_burn.ml \
+gc-roots/globroots_sequential.ml \
+generalized-open/accepted_batch.ml \
+generalized-open/accepted_expect.ml \
+generalized-open/clambda_optim.ml \
+generalized-open/expansiveness.ml \
+generalized-open/gpr1506.ml \
+generalized-open/pr10048.ml \
+generalized-open/shadowing.ml \
+generated-parse-errors/errors.ml \
+int64-unboxing/test.ml \
+lazy/lazy1.ml \
+lazy/lazy2.ml \
+lazy/lazy3.ml \
+lazy/lazy4.ml \
+lazy/lazy5.ml \
+lazy/lazy6.ml \
+lazy/lazy7.ml \
+lazy/lazy8.ml \
+lazy/minor_major_force.ml \
+let-syntax/let_syntax.ml \
+letrec-check/basic.ml \
+letrec-check/extension_constructor.ml \
+letrec-check/flat_float_array.ml \
+letrec-check/float_unboxing.ml \
+letrec-check/labels.ml \
+letrec-check/lazy_.ml \
+letrec-check/modules.ml \
+letrec-check/no_flat_float_array.ml \
+letrec-check/objects.ml \
+letrec-check/pr7215.ml \
+letrec-check/records.ml \
+letrec-check/unboxed.ml \
+letrec-compilation/backreferences.ml \
+letrec-compilation/class_1.ml \
+letrec-compilation/class_2.ml \
+letrec-compilation/evaluation_order_1.ml \
+letrec-compilation/evaluation_order_2.ml \
+letrec-compilation/evaluation_order_3.ml \
+letrec-compilation/float_block_1.ml \
+letrec-compilation/generic_array.ml \
+letrec-compilation/labels.ml \
+letrec-compilation/lazy_.ml \
+letrec-compilation/lists.ml \
+letrec-compilation/mixing_value_closures_1.ml \
+letrec-compilation/mixing_value_closures_2.ml \
+letrec-compilation/mutual_functions.ml \
+letrec-compilation/nested.ml \
+letrec-compilation/pr12153_miscompilation_of_recursive_atoms.ml \
+letrec-compilation/pr4989.ml \
+letrec-compilation/pr8681.ml \
+letrec-compilation/record_with.ml \
+letrec-compilation/ref.ml \
+lexing/comments.ml \
+lexing/uchar_esc.ml \
+lf_skiplist/test.ml \
+lf_skiplist/test_parallel.ml \
+lib-arg/test_rest_all.ml \
+lib-arg/testarg.ml \
+lib-arg/testerror.ml \
+lib-array/test_array.ml \
+lib-atomic/test_atomic.ml \
+lib-bigarray-2/bigarrcml.ml \
+lib-bigarray-2/bigarrfml.ml \
+lib-bigarray-file/mapfile.ml \
+lib-bigarray/bigarrays.ml \
+lib-bigarray/change_layout.ml \
+lib-bigarray/fftba.ml \
+lib-bigarray/pr5115.ml \
+lib-bigarray/weak_bigarray.ml \
+lib-bool/test.ml \
+lib-buffer/test.ml \
+lib-bytes-utf/test.ml \
+lib-bytes/binary.ml \
+lib-bytes/test_bytes.ml \
+lib-channels/buffered.ml \
+lib-channels/close_in.ml \
+lib-channels/in_channel_length.ml \
+lib-channels/input_all.ml \
+lib-channels/input_lines.ml \
+lib-channels/refcounting.ml \
+lib-channels/seek_in.ml \
+lib-digest/md5.ml \
+lib-dynlink-bytecode/main.ml \
+lib-dynlink-csharp/main.ml \
+lib-dynlink-domains/main.ml \
+lib-dynlink-init-info/test.ml \
+lib-dynlink-initializers/test1_main.ml \
+lib-dynlink-initializers/test2_main.ml \
+lib-dynlink-initializers/test3_main.ml \
+lib-dynlink-initializers/test4_main.ml \
+lib-dynlink-initializers/test5_main.ml \
+lib-dynlink-initializers/test6_main.ml \
+lib-dynlink-initializers/test7_main.ml \
+lib-dynlink-initializers/test8_main.ml \
+lib-dynlink-initializers/test9_main.ml \
+lib-dynlink-packed/loader.ml \
+lib-dynlink-pr4229/main.ml \
+lib-dynlink-pr4839/test.ml \
+lib-dynlink-pr6950/loader.ml \
+lib-dynlink-pr9209/dyn.ml \
+lib-dynlink-private/test.ml \
+lib-either/test.ml \
+lib-filename/extension.ml \
+lib-filename/null.ml \
+lib-filename/quotecommand.ml \
+lib-filename/suffix.ml \
+lib-filename/temp.ml \
+lib-float/test.ml \
+lib-floatarray/floatarray.ml \
+lib-format/domains.ml \
+lib-format/mc_pr586_par.ml \
+lib-format/mc_pr586_par2.ml \
+lib-format/pp_print_custom_break.ml \
+lib-format/pr6824.ml \
+lib-format/print_array.ml \
+lib-format/print_if_newline.ml \
+lib-format/print_seq.ml \
+lib-format/tformat.ml \
+lib-fun/test.ml \
+lib-hashtbl/compatibility.ml \
+lib-hashtbl/hfun.ml \
+lib-hashtbl/htbl.ml \
+lib-int/test.ml \
+lib-int64/issue9460.ml \
+lib-int64/test.ml \
+lib-internalformat/test.ml \
+lib-lazy/test.ml \
+lib-list/test.ml \
+lib-marshal/intern_final.ml \
+lib-marshal/intext.ml \
+lib-marshal/intext_par.ml \
+lib-marshal/marshal_bigarray.ml \
+lib-obj/new_obj.ml \
+lib-obj/reachable_words.ml \
+lib-obj/reachable_words_bug.ml \
+lib-obj/with_tag.ml \
+lib-option/test.ml \
+lib-printf/pr6534.ml \
+lib-printf/pr6938.ml \
+lib-printf/tprintf.ml \
+lib-queue/test.ml \
+lib-random/chi2.ml \
+lib-random/defaultinit.ml \
+lib-random/parallel.ml \
+lib-random/selfinit.ml \
+lib-random/testvectors.ml \
+lib-result/test.ml \
+lib-runtime-events/test.ml \
+lib-runtime-events/test_caml.ml \
+lib-runtime-events/test_caml_counters.ml \
+lib-runtime-events/test_caml_exception.ml \
+lib-runtime-events/test_caml_parallel.ml \
+lib-runtime-events/test_caml_reentry.ml \
+lib-runtime-events/test_caml_runparams.ml \
+lib-runtime-events/test_caml_slot_reuse.ml \
+lib-runtime-events/test_caml_stubs_gc.ml \
+lib-runtime-events/test_dropped_events.ml \
+lib-runtime-events/test_env_start.ml \
+lib-runtime-events/test_external.ml \
+lib-runtime-events/test_external_preserve.ml \
+lib-runtime-events/test_fork.ml \
+lib-runtime-events/test_instrumented.ml \
+lib-runtime-events/test_user_event.ml \
+lib-runtime-events/test_user_event_unknown.ml \
+lib-scanf/tscanf.ml \
+lib-seq/test.ml \
+lib-set/testmap.ml \
+lib-set/testset.ml \
+lib-stack/test.ml \
+lib-stdlabels/test_stdlabels.ml \
+lib-str/parallel.ml \
+lib-str/t01.ml \
+lib-string/binary.ml \
+lib-string/test_string.ml \
+lib-sync/prodcons.ml \
+lib-sync/trylock.ml \
+lib-sync/trylock2.ml \
+lib-sys/immediate64.ml \
+lib-sys/opaque.ml \
+lib-sys/rename.ml \
+lib-systhreads/boundscheck.ml \
+lib-systhreads/eintr.ml \
+lib-systhreads/multicore_lifecycle.ml \
+lib-systhreads/test_c_thread_register.ml \
+lib-systhreads/testfork.ml \
+lib-systhreads/testfork2.ml \
+lib-systhreads/threadsigmask.ml \
+lib-threads/backtrace_threads.ml \
+lib-threads/bank.ml \
+lib-threads/beat.ml \
+lib-threads/bufchan.ml \
+lib-threads/close.ml \
+lib-threads/fileio.ml \
+lib-threads/mutex_errors.ml \
+lib-threads/pr4466.ml \
+lib-threads/pr5325.ml \
+lib-threads/pr7638.ml \
+lib-threads/pr8857.ml \
+lib-threads/prodcons.ml \
+lib-threads/prodcons2.ml \
+lib-threads/sieve.ml \
+lib-threads/swapchan.ml \
+lib-threads/tls.ml \
+lib-threads/torture.ml \
+lib-uchar/test.ml \
+lib-unix/common/channel_of.ml \
+lib-unix/common/dup.ml \
+lib-unix/common/dup2.ml \
+lib-unix/common/fork_cleanup.ml \
+lib-unix/common/fork_cleanup_systhreads.ml \
+lib-unix/common/getaddrinfo.ml \
+lib-unix/common/gethostbyaddr.ml \
+lib-unix/common/multicore_fork_domain_alone.ml \
+lib-unix/common/multicore_fork_domain_alone2.ml \
+lib-unix/common/pipe_eof.ml \
+lib-unix/common/process_pid.ml \
+lib-unix/common/redirections.ml \
+lib-unix/common/rename.ml \
+lib-unix/common/test_unix_cmdline.ml \
+lib-unix/common/test_unixlabels.ml \
+lib-unix/common/truncate.ml \
+lib-unix/common/uexit.ml \
+lib-unix/common/utimes.ml \
+lib-unix/common/wait_nohang.ml \
+lib-unix/isatty/isatty_std.ml \
+lib-unix/isatty/isatty_tty.ml \
+lib-unix/kill/unix_kill.ml \
+lib-unix/realpath/test.ml \
+lib-unix/unix-execvpe/exec.ml \
+lib-unix/unix-socket/recvfrom_linux.ml \
+lib-unix/unix-socket/recvfrom_unix.ml \
+lib-unix/win-channel-of/parallel_channel_of.ml \
+lib-unix/win-createprocess/test.ml \
+lib-unix/win-env/test_env.ml \
+lib-unix/win-socketpair/test.ml \
+lib-unix/win-stat/test.ml \
+lib-unix/win-symlink/parallel_symlink.ml \
+lib-unix/win-symlink/test.ml \
+link-test/empty.ml \
+link-test/test.ml \
+load_path/test.ml \
+local-functions/tupled.ml \
+local-functions/tupled2.ml \
+locale/test.ml \
+match-exception-warnings/exhaustiveness_warnings.ml \
+match-exception-warnings/no_mixing_under_guard.ml \
+match-exception-warnings/no_value_clauses.ml \
+match-exception-warnings/placement.ml \
+match-exception-warnings/pr7083.ml \
+match-exception-warnings/reachability.ml \
+match-exception/allocation.ml \
+match-exception/exception_propagation.ml \
+match-exception/identifier_sharing.ml \
+match-exception/match_failure.ml \
+match-exception/nested_handlers.ml \
+match-exception/raise_from_success_continuation.ml \
+match-exception/streams.ml \
+match-exception/tail_calls.ml \
+memory-model/forbidden.ml \
+memory-model/publish.ml \
+messages/highlight_tabs.ml \
+messages/precise_locations.ml \
+messages/spellcheck.ml \
+misc-kb/kbmain.ml \
+misc-unsafe/almabench.ml \
+misc-unsafe/fft.ml \
+misc-unsafe/quicksort.ml \
+misc-unsafe/soli.ml \
+misc/bdd.ml \
+misc/boyer.ml \
+misc/exotic.ml \
+misc/fib.ml \
+misc/gc_mark_stack_overflow.ml \
+misc/gcwords.ml \
+misc/gpr1370.ml \
+misc/hamming.ml \
+misc/nucleic.ml \
+misc/pr7168.ml \
+misc/sieve.ml \
+misc/sorts.ml \
+misc/takc.ml \
+misc/taku.ml \
+no-alias-deps/gpr2235.ml \
+output-complete-obj/github9344.ml \
+output-complete-obj/test.ml \
+output-complete-obj/test2.ml \
+parallel/atomics.ml \
+parallel/backup_thread.ml \
+parallel/backup_thread_pipe.ml \
+parallel/constpromote.ml \
+parallel/deadcont.ml \
+parallel/domain_dls.ml \
+parallel/domain_dls2.ml \
+parallel/domain_id.ml \
+parallel/domain_parallel_spawn_burn.ml \
+parallel/domain_parallel_spawn_burn_gc_set.ml \
+parallel/domain_serial_spawn_burn.ml \
+parallel/fib_threads.ml \
+parallel/join.ml \
+parallel/major_gc_wait_backup.ml \
+parallel/mctest.ml \
+parallel/multicore_systhreads.ml \
+parallel/pingpong.ml \
+parallel/poll.ml \
+parallel/prodcons_domains.ml \
+parallel/recommended_domain_count.ml \
+parallel/recommended_domain_count_unix.ml \
+parallel/tak.ml \
+parallel/test_c_thread_register.ml \
+parallel/test_issue_11094.ml \
+parsetree/test.ml \
+parsing/anonymous_class_parameter.ml \
+parsing/change_start_loc.ml \
+parsing/docstrings.ml \
+parsing/extended_indexoperators.ml \
+parsing/extension_operators.ml \
+parsing/multi_indices.ml \
+parsing/pr10468.ml \
+parsing/pr6604_3.ml \
+parsing/reloc.ml \
+ppx-attributes/inline.ml \
+ppx-attributes/warning.ml \
+ppx-contexts/test.ml \
+prim-bigstring/bigstring_access.ml \
+prim-bigstring/string_access.ml \
+prim-bswap/bswap.ml \
+prim-revapply/apply.ml \
+prim-revapply/revapply.ml \
+printing-types/disambiguation.ml \
+printing-types/pr248.ml \
+raise-counts/main.ml \
+regression/gpr1623/gpr1623.ml \
+regression/missing_set_of_closures/missing_set_of_closures.ml \
+regression/pr10611/pr10611.ml \
+regression/pr11887/pr11887.ml \
+regression/pr1580/pr1580.ml \
+regression/pr3612/pr3612.ml \
+regression/pr5233/pr5233.ml \
+regression/pr5757/pr5757.ml \
+regression/pr6024/pr6024.ml \
+regression/pr7042/pr7042.ml \
+regression/pr7426/pr7426.ml \
+regression/pr7718/pr7718.ml \
+regression/pr7798/pr7798.ml \
+regression/pr7920/pr7920.ml \
+regression/pr8769/pr8769.ml \
+regression/pr9028/pr9028.ml \
+regression/pr9292/pr9292.ml \
+regression/pr9326/gc_set.ml \
+regression/pr9443/pr9443.ml \
+regression/pr9853/compaction_corner_case.ml \
+reproducibility/cmis_on_file_system.ml \
+required-external/main.ml \
+runtime-C-exceptions/test.ml \
+runtime-errors/stackoverflow.ml \
+runtime-errors/syserror.ml \
+runtime-objects/Tests.ml \
+self-contained-toplevel/main.ml \
+shadow_include/artificial.ml \
+shadow_include/ghosts.ml \
+shapes/comp_units.ml \
+shapes/functors.ml \
+shapes/incl_md_typeof.ml \
+shapes/open_arg.ml \
+shapes/open_struct.ml \
+shapes/recmodules.ml \
+shapes/rotor_example.ml \
+shapes/shape_size_blowup.ml \
+shapes/simple.ml \
+shapes/typeof_include.ml \
+statmemprof/alloc_counts.ml \
+statmemprof/arrays_in_major.ml \
+statmemprof/arrays_in_minor.ml \
+statmemprof/blocking_in_callback.ml \
+statmemprof/callstacks.ml \
+statmemprof/comballoc.ml \
+statmemprof/custom.ml \
+statmemprof/exception_callback.ml \
+statmemprof/exception_callback_minor.ml \
+statmemprof/intern.ml \
+statmemprof/lists_in_minor.ml \
+statmemprof/minor_no_postpone.ml \
+statmemprof/moved_while_blocking.ml \
+statmemprof/thread_exit_in_callback.ml \
+tmc/ambiguities.ml \
+tmc/other_features.ml \
+tmc/readable_output.ml \
+tmc/semantic.ml \
+tmc/stack_space.ml \
+tmc/tupled_function.ml \
+tmc/usage_warnings.ml \
+tool-caml-tex/ellipses.ml \
+tool-caml-tex/redirections.ml \
+tool-command-line/test-o-one-c-file.ml \
+tool-command-line/test-o-several-files.ml \
+tool-command-line/test-unknown-file.ml \
+tool-debugger/basic/debuggee.ml \
+tool-debugger/dynlink/host.ml \
+tool-debugger/find-artifacts/debuggee.ml \
+tool-debugger/no_debug_event/noev.ml \
+tool-dumpobj/test.ml \
+tool-expect-test/clean_typer.ml \
+tool-lexyacc/calc.ml \
+tool-lexyacc/chars.mll \
+tool-lexyacc/csets.mll \
+tool-lexyacc/mpr7760.mll \
+tool-lexyacc/parsecheck.mly \
+tool-ocaml-annot/failure.ml \
+tool-ocaml-annot/success.ml \
+tool-ocaml-annot/typeonly.ml \
+tool-ocaml/directive_failure.ml \
+tool-ocaml/t000.ml \
+tool-ocaml/t010-const0.ml \
+tool-ocaml/t010-const1.ml \
+tool-ocaml/t010-const2.ml \
+tool-ocaml/t010-const3.ml \
+tool-ocaml/t011-constint.ml \
+tool-ocaml/t020.ml \
+tool-ocaml/t021-pushconst1.ml \
+tool-ocaml/t021-pushconst2.ml \
+tool-ocaml/t021-pushconst3.ml \
+tool-ocaml/t022-pushconstint.ml \
+tool-ocaml/t040-makeblock1.ml \
+tool-ocaml/t040-makeblock2.ml \
+tool-ocaml/t040-makeblock3.ml \
+tool-ocaml/t041-makeblock.ml \
+tool-ocaml/t050-getglobal.ml \
+tool-ocaml/t050-pushgetglobal.ml \
+tool-ocaml/t051-getglobalfield.ml \
+tool-ocaml/t051-pushgetglobalfield.ml \
+tool-ocaml/t060-raise.ml \
+tool-ocaml/t070-branch.ml \
+tool-ocaml/t070-branchif.ml \
+tool-ocaml/t070-branchifnot.ml \
+tool-ocaml/t071-boolnot.ml \
+tool-ocaml/t080-eq.ml \
+tool-ocaml/t080-geint.ml \
+tool-ocaml/t080-gtint.ml \
+tool-ocaml/t080-leint.ml \
+tool-ocaml/t080-ltint.ml \
+tool-ocaml/t080-neq.ml \
+tool-ocaml/t090-acc0.ml \
+tool-ocaml/t090-acc1.ml \
+tool-ocaml/t090-acc2.ml \
+tool-ocaml/t090-acc3.ml \
+tool-ocaml/t090-acc4.ml \
+tool-ocaml/t090-acc5.ml \
+tool-ocaml/t090-acc6.ml \
+tool-ocaml/t090-acc7.ml \
+tool-ocaml/t091-acc.ml \
+tool-ocaml/t092-pushacc.ml \
+tool-ocaml/t092-pushacc0.ml \
+tool-ocaml/t092-pushacc1.ml \
+tool-ocaml/t092-pushacc2.ml \
+tool-ocaml/t092-pushacc3.ml \
+tool-ocaml/t092-pushacc4.ml \
+tool-ocaml/t092-pushacc5.ml \
+tool-ocaml/t092-pushacc6.ml \
+tool-ocaml/t092-pushacc7.ml \
+tool-ocaml/t093-pushacc.ml \
+tool-ocaml/t100-pushtrap.ml \
+tool-ocaml/t101-poptrap.ml \
+tool-ocaml/t110-addint.ml \
+tool-ocaml/t110-andint.ml \
+tool-ocaml/t110-asrint-1.ml \
+tool-ocaml/t110-asrint-2.ml \
+tool-ocaml/t110-divint-1.ml \
+tool-ocaml/t110-divint-2.ml \
+tool-ocaml/t110-divint-3.ml \
+tool-ocaml/t110-lslint.ml \
+tool-ocaml/t110-lsrint.ml \
+tool-ocaml/t110-modint-1.ml \
+tool-ocaml/t110-modint-2.ml \
+tool-ocaml/t110-mulint.ml \
+tool-ocaml/t110-negint.ml \
+tool-ocaml/t110-offsetint.ml \
+tool-ocaml/t110-orint.ml \
+tool-ocaml/t110-subint.ml \
+tool-ocaml/t110-xorint.ml \
+tool-ocaml/t120-getstringchar.ml \
+tool-ocaml/t121-setstringchar.ml \
+tool-ocaml/t130-getvectitem.ml \
+tool-ocaml/t130-vectlength.ml \
+tool-ocaml/t131-setvectitem.ml \
+tool-ocaml/t140-switch-1.ml \
+tool-ocaml/t140-switch-2.ml \
+tool-ocaml/t140-switch-3.ml \
+tool-ocaml/t140-switch-4.ml \
+tool-ocaml/t141-switch-5.ml \
+tool-ocaml/t141-switch-6.ml \
+tool-ocaml/t141-switch-7.ml \
+tool-ocaml/t142-switch-8.ml \
+tool-ocaml/t142-switch-9.ml \
+tool-ocaml/t142-switch-A.ml \
+tool-ocaml/t150-push-1.ml \
+tool-ocaml/t150-push-2.ml \
+tool-ocaml/t160-closure.ml \
+tool-ocaml/t161-apply1.ml \
+tool-ocaml/t162-return.ml \
+tool-ocaml/t163.ml \
+tool-ocaml/t164-apply2.ml \
+tool-ocaml/t164-apply3.ml \
+tool-ocaml/t165-apply.ml \
+tool-ocaml/t170-envacc2.ml \
+tool-ocaml/t170-envacc3.ml \
+tool-ocaml/t170-envacc4.ml \
+tool-ocaml/t171-envacc.ml \
+tool-ocaml/t172-pushenvacc1.ml \
+tool-ocaml/t172-pushenvacc2.ml \
+tool-ocaml/t172-pushenvacc3.ml \
+tool-ocaml/t172-pushenvacc4.ml \
+tool-ocaml/t173-pushenvacc.ml \
+tool-ocaml/t180-appterm1.ml \
+tool-ocaml/t180-appterm2.ml \
+tool-ocaml/t180-appterm3.ml \
+tool-ocaml/t181-appterm.ml \
+tool-ocaml/t190-makefloatblock-1.ml \
+tool-ocaml/t190-makefloatblock-2.ml \
+tool-ocaml/t190-makefloatblock-3.ml \
+tool-ocaml/t191-vectlength.ml \
+tool-ocaml/t192-getfloatfield-1.ml \
+tool-ocaml/t192-getfloatfield-2.ml \
+tool-ocaml/t193-setfloatfield-1.ml \
+tool-ocaml/t193-setfloatfield-2.ml \
+tool-ocaml/t200-getfield0.ml \
+tool-ocaml/t200-getfield1.ml \
+tool-ocaml/t200-getfield2.ml \
+tool-ocaml/t200-getfield3.ml \
+tool-ocaml/t201-getfield.ml \
+tool-ocaml/t210-setfield0.ml \
+tool-ocaml/t210-setfield1.ml \
+tool-ocaml/t210-setfield2.ml \
+tool-ocaml/t210-setfield3.ml \
+tool-ocaml/t211-setfield.ml \
+tool-ocaml/t220-assign.ml \
+tool-ocaml/t230-check_signals.ml \
+tool-ocaml/t240-c_call1.ml \
+tool-ocaml/t240-c_call2.ml \
+tool-ocaml/t240-c_call3.ml \
+tool-ocaml/t240-c_call4.ml \
+tool-ocaml/t240-c_call5.ml \
+tool-ocaml/t250-closurerec-1.ml \
+tool-ocaml/t250-closurerec-2.ml \
+tool-ocaml/t251-pushoffsetclosure0.ml \
+tool-ocaml/t251-pushoffsetclosure2.ml \
+tool-ocaml/t251-pushoffsetclosurem2.ml \
+tool-ocaml/t252-pushoffsetclosure.ml \
+tool-ocaml/t253-offsetclosure0.ml \
+tool-ocaml/t253-offsetclosure2.ml \
+tool-ocaml/t253-offsetclosurem2.ml \
+tool-ocaml/t254-offsetclosure.ml \
+tool-ocaml/t260-offsetref.ml \
+tool-ocaml/t270-push_retaddr.ml \
+tool-ocaml/t300-getmethod.ml \
+tool-ocaml/t301-object.ml \
+tool-ocaml/t310-alloc-1.ml \
+tool-ocaml/t310-alloc-2.ml \
+tool-ocaml/t320-gc-1.ml \
+tool-ocaml/t320-gc-2.ml \
+tool-ocaml/t320-gc-3.ml \
+tool-ocaml/t330-compact-1.ml \
+tool-ocaml/t330-compact-2.ml \
+tool-ocaml/t330-compact-3.ml \
+tool-ocaml/t330-compact-4.ml \
+tool-ocaml/t340-weak.ml \
+tool-ocaml/t350-heapcheck.ml \
+tool-ocaml/t360-stacks-1.ml \
+tool-ocaml/t360-stacks-2.ml \
+tool-ocamlc-compat32/compat32.ml \
+tool-ocamlc-error-cleanup/test.ml \
+tool-ocamlc-open/tool-ocamlc-open-error.ml \
+tool-ocamlc-open/tool-ocamlc-open.ml \
+tool-ocamlc-stop-after/stop_after_lambda.ml \
+tool-ocamlc-stop-after/stop_after_scheduling.ml \
+tool-ocamldep-modalias/main.ml \
+tool-ocamldep-shadowing/a.ml \
+tool-ocamldoc-open/main.ml \
+tool-ocamldoc/Alert_toplevel.mli \
+tool-ocamldoc/Alert_toplevel2.mli \
+tool-ocamldoc/Alerts.mli \
+tool-ocamldoc/Alerts_impl.ml \
+tool-ocamldoc/Documentation_tags.mli \
+tool-ocamldoc/Entities.ml \
+tool-ocamldoc/Extensible_variant.ml \
+tool-ocamldoc/Include_module_type_of.mli \
+tool-ocamldoc/Inline_records.mli \
+tool-ocamldoc/Inline_records_bis.ml \
+tool-ocamldoc/Item_ids.mli \
+tool-ocamldoc/Level_0.mli \
+tool-ocamldoc/Linebreaks.mli \
+tool-ocamldoc/Loop.ml \
+tool-ocamldoc/Module_whitespace.ml \
+tool-ocamldoc/No_preamble.mli \
+tool-ocamldoc/Paragraph.mli \
+tool-ocamldoc/Short_description.txt \
+tool-ocamldoc/Test.mli \
+tool-ocamldoc/Variants.mli \
+tool-ocamldoc/latex_ref.mli \
+tool-ocamldoc/t01.ml \
+tool-ocamldoc/t02.ml \
+tool-ocamldoc/t03.ml \
+tool-ocamldoc/t04.ml \
+tool-ocamldoc/t05.ml \
+tool-ocamlobjinfo/question.ml \
+tool-ocamlopt-save-ir/check_for_pack.ml \
+tool-ocamlopt-save-ir/save_ir_after_scheduling.ml \
+tool-ocamlopt-save-ir/save_ir_after_typing.ml \
+tool-ocamlopt-save-ir/start_from_emit.ml \
+tool-ocamlopt-stop-after/stop_after_lambda.ml \
+tool-ocamlopt-stop-after/stop_after_scheduling.ml \
+tool-ocamltest/norm1.ml \
+tool-ocamltest/norm2.ml \
+tool-ocamltest/norm3.ml \
+tool-ocamltest/norm4.ml \
+tool-toplevel-invocation/test.ml \
+tool-toplevel/exotic_lists.ml \
+tool-toplevel/install_printer.ml \
+tool-toplevel/known-bugs/broken_rec_in_show.ml \
+tool-toplevel/mod_use.ml \
+tool-toplevel/pr6468.ml \
+tool-toplevel/pr7060.ml \
+tool-toplevel/pr7751.ml \
+tool-toplevel/pr9701.ml \
+tool-toplevel/printval.ml \
+tool-toplevel/redefinition_hints.ml \
+tool-toplevel/show.ml \
+tool-toplevel/show_short_paths.ml \
+tool-toplevel/strings.ml \
+tool-toplevel/topeval.ml \
+tool-toplevel/tracing.ml \
+tool-toplevel/uncaught_exceptions.ml \
+tool-toplevel/use_command.ml \
+translprim/array_spec.ml \
+translprim/comparison_table.ml \
+translprim/module_coercion.ml \
+translprim/ref_spec.ml \
+translprim/sendcache.ml \
+typing-core-bugs/const_int_hint.ml \
+typing-core-bugs/missing_rec_hint.ml \
+typing-core-bugs/repeated_did_you_mean.ml \
+typing-core-bugs/type_expected_explanation.ml \
+typing-core-bugs/unit_fun_hints.ml \
+typing-deprecated/alerts.ml \
+typing-deprecated/deprecated.ml \
+typing-extension-constructor/test.ml \
+typing-extensions/cast.ml \
+typing-extensions/disambiguation.ml \
+typing-extensions/extensions.ml \
+typing-extensions/msg.ml \
+typing-extensions/open_types.ml \
+typing-external/pr11392.ml \
+typing-fstclassmod/aliases.ml \
+typing-fstclassmod/fstclassmod.ml \
+typing-fstclassmod/nondep_instance.ml \
+typing-fstclassmod/scope_escape.ml \
+typing-gadts/ambiguity.ml \
+typing-gadts/ambivalent_apply.ml \
+typing-gadts/didier.ml \
+typing-gadts/dynamic_frisch.ml \
+typing-gadts/gadthead.ml \
+typing-gadts/name_existentials.ml \
+typing-gadts/nested_equations.ml \
+typing-gadts/omega07.ml \
+typing-gadts/or_patterns.ml \
+typing-gadts/packed-module-recasting.ml \
+typing-gadts/pr10189.ml \
+typing-gadts/pr10271.ml \
+typing-gadts/pr10348.ml \
+typing-gadts/pr10735.ml \
+typing-gadts/pr10907.ml \
+typing-gadts/pr11888.ml \
+typing-gadts/pr5332.ml \
+typing-gadts/pr5689.ml \
+typing-gadts/pr5785.ml \
+typing-gadts/pr5848.ml \
+typing-gadts/pr5906.ml \
+typing-gadts/pr5948.ml \
+typing-gadts/pr5981.ml \
+typing-gadts/pr5985.ml \
+typing-gadts/pr5989.ml \
+typing-gadts/pr5997.ml \
+typing-gadts/pr6158.ml \
+typing-gadts/pr6163.ml \
+typing-gadts/pr6174.ml \
+typing-gadts/pr6241.ml \
+typing-gadts/pr6690.ml \
+typing-gadts/pr6817.ml \
+typing-gadts/pr6934.ml \
+typing-gadts/pr6980.ml \
+typing-gadts/pr6993_bad.ml \
+typing-gadts/pr7016.ml \
+typing-gadts/pr7160.ml \
+typing-gadts/pr7214.ml \
+typing-gadts/pr7222.ml \
+typing-gadts/pr7230.ml \
+typing-gadts/pr7234.ml \
+typing-gadts/pr7260.ml \
+typing-gadts/pr7269.ml \
+typing-gadts/pr7298.ml \
+typing-gadts/pr7374.ml \
+typing-gadts/pr7378.ml \
+typing-gadts/pr7381.ml \
+typing-gadts/pr7390.ml \
+typing-gadts/pr7391.ml \
+typing-gadts/pr7397.ml \
+typing-gadts/pr7421.ml \
+typing-gadts/pr7432.ml \
+typing-gadts/pr7520.ml \
+typing-gadts/pr7618.ml \
+typing-gadts/pr7747.ml \
+typing-gadts/pr7902.ml \
+typing-gadts/pr9019.ml \
+typing-gadts/pr9759.ml \
+typing-gadts/pr9799.ml \
+typing-gadts/principality-and-gadts.ml \
+typing-gadts/return_type.ml \
+typing-gadts/term-conv.ml \
+typing-gadts/test.ml \
+typing-gadts/unexpected_existentials.ml \
+typing-gadts/unify_mb.ml \
+typing-gadts/variables_in_mcomp.ml \
+typing-gadts/yallop_bugs.ml \
+typing-immediate/immediate.ml \
+typing-implicit_unpack/implicit_unpack.ml \
+typing-kind/kind_mismatch.ml \
+typing-labels/mixin.ml \
+typing-labels/mixin2.ml \
+typing-labels/mixin3.ml \
+typing-misc-bugs/core_array_reduced_ok.ml \
+typing-misc-bugs/gadt_declaration_check.ml \
+typing-misc/apply_non_function.ml \
+typing-misc/build_as_type.ml \
+typing-misc/constraints.ml \
+typing-misc/deep.ml \
+typing-misc/disambiguate_principality.ml \
+typing-misc/distant_errors.ml \
+typing-misc/empty_variant.ml \
+typing-misc/enrich_typedecl.ml \
+typing-misc/exotic_unifications.ml \
+typing-misc/external_arity.ml \
+typing-misc/filter_params.ml \
+typing-misc/gpr2277.ml \
+typing-misc/includeclass_errors.ml \
+typing-misc/injectivity.ml \
+typing-misc/inside_out.ml \
+typing-misc/is_expansive.ml \
+typing-misc/labels.ml \
+typing-misc/normalize_type.ml \
+typing-misc/occur_check.ml \
+typing-misc/optbinders.ml \
+typing-misc/pat_type_sharing.ml \
+typing-misc/pattern_open.ml \
+typing-misc/polyvars.ml \
+typing-misc/pr6416.ml \
+typing-misc/pr6634.ml \
+typing-misc/pr6939-flat-float-array.ml \
+typing-misc/pr6939-no-flat-float-array.ml \
+typing-misc/pr7103.ml \
+typing-misc/pr7228.ml \
+typing-misc/pr7668_bad.ml \
+typing-misc/pr7712.ml \
+typing-misc/pr7937.ml \
+typing-misc/pr8548.ml \
+typing-misc/pr8548_split.ml \
+typing-misc/printing.ml \
+typing-misc/records.ml \
+typing-misc/scope_escape.ml \
+typing-misc/typecore_empty_polyvariant_error.ml \
+typing-misc/typecore_errors.ml \
+typing-misc/typecore_nolabel_errors.ml \
+typing-misc/typetexp_errors.ml \
+typing-misc/unbound_type_variables.ml \
+typing-misc/unique_names_in_unification.ml \
+typing-misc/variance.ml \
+typing-misc/variant.ml \
+typing-misc/wellfounded.ml \
+typing-misc/wrong_kind.ml \
+typing-missing-cmi-2/test.ml \
+typing-missing-cmi-3/user.ml \
+typing-missing-cmi/test.ml \
+typing-modules-bugs/gatien_baron_20131019_ok.ml \
+typing-modules-bugs/pr10661_ok.ml \
+typing-modules-bugs/pr5164_ok.ml \
+typing-modules-bugs/pr51_ok.ml \
+typing-modules-bugs/pr5663_ok.ml \
+typing-modules-bugs/pr5914_ok.ml \
+typing-modules-bugs/pr6240_ok.ml \
+typing-modules-bugs/pr6485_ok.ml \
+typing-modules-bugs/pr6513_ok.ml \
+typing-modules-bugs/pr6572_ok.ml \
+typing-modules-bugs/pr6651_ok.ml \
+typing-modules-bugs/pr6752_ok.ml \
+typing-modules-bugs/pr6899_ok.ml \
+typing-modules-bugs/pr6944_ok.ml \
+typing-modules-bugs/pr6954_ok.ml \
+typing-modules-bugs/pr6981_ok.ml \
+typing-modules-bugs/pr6982_ok.ml \
+typing-modules-bugs/pr6985_extended.ml \
+typing-modules-bugs/pr6985_ok.ml \
+typing-modules-bugs/pr7036_ok.ml \
+typing-modules-bugs/pr7082_ok.ml \
+typing-modules-bugs/pr7112_ok.ml \
+typing-modules-bugs/pr7152_ok.ml \
+typing-modules-bugs/pr7182_ok.ml \
+typing-modules-bugs/pr7305_principal.ml \
+typing-modules-bugs/pr7321_ok.ml \
+typing-modules-bugs/pr7519_ok.ml \
+typing-modules-bugs/pr7601_ok.ml \
+typing-modules-bugs/pr7601a_ok.ml \
+typing-modules/Test.ml \
+typing-modules/aliases.ml \
+typing-modules/anonymous.ml \
+typing-modules/applicative_functor_type.ml \
+typing-modules/extension_constructors_errors_test.ml \
+typing-modules/firstclass.ml \
+typing-modules/functors.ml \
+typing-modules/generative.ml \
+typing-modules/illegal_permutation.ml \
+typing-modules/inclusion_errors.ml \
+typing-modules/inclusion_errors_elision.ml \
+typing-modules/merge_constraint.ml \
+typing-modules/module_type_substitution.ml \
+typing-modules/nondep.ml \
+typing-modules/nondep_private_abbrev.ml \
+typing-modules/nongen.ml \
+typing-modules/normalize_path.ml \
+typing-modules/packed_module_levels.ml \
+typing-modules/pr10298.ml \
+typing-modules/pr10399.ml \
+typing-modules/pr5911.ml \
+typing-modules/pr6394.ml \
+typing-modules/pr6633.ml \
+typing-modules/pr7207.ml \
+typing-modules/pr7348.ml \
+typing-modules/pr7726.ml \
+typing-modules/pr7787.ml \
+typing-modules/pr7818.ml \
+typing-modules/pr7851.ml \
+typing-modules/pr8810.ml \
+typing-modules/pr9384.ml \
+typing-modules/pr9695.ml \
+typing-modules/printing.ml \
+typing-modules/private.ml \
+typing-modules/records_errors_test.ml \
+typing-modules/recursive.ml \
+typing-modules/struct_include_optimisation.ml \
+typing-modules/unroll_private_abbrev.ml \
+typing-modules/variants_errors_test.ml \
+typing-modules/with_ghosts.ml \
+typing-multifile/pr6372.ml \
+typing-multifile/pr7325.ml \
+typing-multifile/pr7563.ml \
+typing-multifile/pr9218.ml \
+typing-objects-bugs/pr4766_ok.ml \
+typing-objects-bugs/pr4824_ok.ml \
+typing-objects-bugs/pr5156_ok.ml \
+typing-objects-bugs/pr7293_ok.ml \
+typing-objects-bugs/woodyatt_ok.ml \
+typing-objects-bugs/yamagata021012_ok.ml \
+typing-objects/Exemples.ml \
+typing-objects/Tests.ml \
+typing-objects/abstract_rows.ml \
+typing-objects/class_2.ml \
+typing-objects/dummy.ml \
+typing-objects/errors.ml \
+typing-objects/field_kind.ml \
+typing-objects/nongen.ml \
+typing-objects/open_in_classes.ml \
+typing-objects/pr11569.ml \
+typing-objects/pr5545.ml \
+typing-objects/pr5619_bad.ml \
+typing-objects/pr5858.ml \
+typing-objects/pr6123_bad.ml \
+typing-objects/pr6383.ml \
+typing-objects/pr6907_bad.ml \
+typing-objects/pr7711_ok.ml \
+typing-objects/self_cannot_be_closed.ml \
+typing-objects/self_cannot_escape_pr7865.ml \
+typing-objects/unbound-type-var.ml \
+typing-poly-bugs/pr5322_ok.ml \
+typing-poly-bugs/pr5673_ok.ml \
+typing-poly-bugs/pr6922_ok.ml \
+typing-poly/error_messages.ml \
+typing-poly/poly.ml \
+typing-poly/pr7636.ml \
+typing-poly/pr9603.ml \
+typing-polyvariants-bugs/pr10664.ml \
+typing-polyvariants-bugs/pr10664a.ml \
+typing-polyvariants-bugs/pr4775_ok.ml \
+typing-polyvariants-bugs/pr4933_ok.ml \
+typing-polyvariants-bugs/pr5057_ok.ml \
+typing-polyvariants-bugs/pr7199_ok.ml \
+typing-polyvariants-bugs/pr7817_bad.ml \
+typing-polyvariants-bugs/pr7824.ml \
+typing-polyvariants-bugs/pr8575.ml \
+typing-polyvariants-bugs/privrowsabate_ok.ml \
+typing-private-bugs/pr5469_ok.ml \
+typing-private/invalid_private_row.ml \
+typing-private/private.ml \
+typing-recmod/gpr1626.ml \
+typing-recmod/pr6491.ml \
+typing-recmod/t03ok.ml \
+typing-recmod/t06ok.ml \
+typing-recmod/t10ok.ml \
+typing-recmod/t13ok.ml \
+typing-recmod/t16ok.ml \
+typing-recmod/t17ok.ml \
+typing-recmod/t18ok.ml \
+typing-recmod/t20ok.ml \
+typing-recmod/t21ok.ml \
+typing-recmod/t22ok.ml \
+typing-recordarg/recordarg.ml \
+typing-shadowing-of-pervasives-submodules/redefine_largefile.ml \
+typing-shadowing-of-pervasives-submodules/redefine_largefile_top.ml \
+typing-short-paths/errors.ml \
+typing-short-paths/gpr1223.ml \
+typing-short-paths/pr6836.ml \
+typing-short-paths/pr7543.ml \
+typing-short-paths/short-paths.ml \
+typing-signatures/els.ml \
+typing-signatures/nondep_regression.ml \
+typing-signatures/pr6371.ml \
+typing-signatures/pr6672.ml \
+typing-sigsubst/sig_local_aliases.ml \
+typing-sigsubst/sigsubst.ml \
+typing-sigsubst/test_locations.ml \
+typing-typeparam/newtype.ml \
+typing-unboxed-types/test.ml \
+typing-unboxed-types/test_flat.ml \
+typing-unboxed-types/test_no_flat.ml \
+typing-unboxed/test.ml \
+typing-warnings/ambiguous_guarded_disjunction.ml \
+typing-warnings/application.ml \
+typing-warnings/coercions.ml \
+typing-warnings/disable_warnings_classes.ml \
+typing-warnings/exhaustiveness.ml \
+typing-warnings/fragile_matching.ml \
+typing-warnings/never_returns.ml \
+typing-warnings/open_warnings.ml \
+typing-warnings/pr5892.ml \
+typing-warnings/pr6587.ml \
+typing-warnings/pr6872.ml \
+typing-warnings/pr7085.ml \
+typing-warnings/pr7115.ml \
+typing-warnings/pr7297.ml \
+typing-warnings/pr7553.ml \
+typing-warnings/pr9244.ml \
+typing-warnings/records.ml \
+typing-warnings/unused_functor_parameter.ml \
+typing-warnings/unused_rec.ml \
+typing-warnings/unused_recmodule.ml \
+typing-warnings/unused_types.ml \
+typing-warnings/warning16.ml \
+unboxed-primitive-args/test.ml \
+unwind/driver.ml \
+utils/edit_distance.ml \
+utils/find_first_mono.ml \
+utils/magic_number.ml \
+utils/overflow_detection.ml \
+utils/test_strongly_connected_components.ml \
+warnings/deprecated_warning_specs.ml \
+warnings/mnemonics.mll \
+warnings/w51.ml \
+warnings/w52.ml \
+warnings/w58.ml \
+weak-ephe-final/ephe_infix.ml \
+weak-ephe-final/ephetest.ml \
+weak-ephe-final/ephetest2.ml \
+weak-ephe-final/ephetest3.ml \
+weak-ephe-final/ephetest_par.ml \
+weak-ephe-final/finaliser.ml \
+weak-ephe-final/finaliser2.ml \
+weak-ephe-final/finaliser_handover.ml \
+weak-ephe-final/pr12001.ml \
+weak-ephe-final/weaklifetime.ml \
+weak-ephe-final/weaklifetime2.ml \
+weak-ephe-final/weaktest.ml \
+weak-ephe-final/weaktest_par_load.ml \
+win-unicode/mltest.ml \
+"
+
+# These tests have to be translated in `lines` mode to preserve line numbers
+TESTS_LINES="
+asmcomp/poll_attr_both.ml \
+asmcomp/poll_attr_prologue.ml \
+asmcomp/poll_attr_user.ml \
+backtrace/backtrace2.ml \
+backtrace/backtrace3.ml \
+backtrace/backtrace_bounds_exn.ml \
+backtrace/backtrace_c_exn.ml \
+backtrace/backtrace_deprecated.ml \
+backtrace/backtrace_dynlink.ml \
+backtrace/backtrace_effects.ml \
+backtrace/backtrace_effects_nested.ml \
+backtrace/backtrace_or_exception.ml \
+backtrace/backtrace_slots.ml \
+backtrace/backtrace_systhreads.ml \
+backtrace/callstack.ml \
+backtrace/event_after_prim.ml \
+backtrace/inline_test.ml \
+backtrace/inline_traversal_test.ml \
+backtrace/methods.ml \
+backtrace/names.ml \
+backtrace/pr2195.ml \
+backtrace/pr6920_why_at.ml \
+backtrace/pr6920_why_swallow.ml \
+backtrace/raw_backtrace.ml \
+basic-modules/anonymous.ml \
+basic-more/morematch.ml \
+basic-more/pr10338.ml \
+basic-more/safer_matching.ml \
+basic/unit_naming.ml \
+effects/backtrace.ml \
+generalized-open/funct_body.ml \
+letrec-check/pr7231.ml \
+letrec-check/pr7706.ml \
+lexing/escape.ml \
+lib-dynlink-initializers/test10_main.ml \
+lib-threads/uncaught_exception_handler.ml \
+local-functions/non_local.ml \
+no-alias-deps/aliases.ml \
+parse-errors/escape_error.ml \
+parse-errors/expecting.ml \
+parse-errors/mismatch_struct_sig.ml \
+parse-errors/pr7847.ml \
+parsing/assert_location.ml \
+parsing/broken_invariants.ml \
+parsing/constructor_declarations.ml \
+parsing/pr6604.ml \
+parsing/pr6604_2.ml \
+parsing/pr7165.ml \
+shadow_include/cannot_shadow_error.ml \
+tmc/partial_application.ml \
+tmc/tupled_function_calls.ml \
+tool-debugger/module_named_main/main.ml \
+tool-debugger/printer/debuggee.ml \
+tool-toplevel/error_highlighting.ml \
+translprim/locs.ml \
+typing-misc-bugs/pr6303_bad.ml \
+typing-misc-bugs/pr6946_bad.ml \
+typing-modules-bugs/pr10693_bad.ml \
+typing-modules-bugs/pr6293_bad.ml \
+typing-modules-bugs/pr6427_bad.ml \
+typing-modules-bugs/pr6752_bad.ml \
+typing-modules-bugs/pr6899_first_bad.ml \
+typing-modules-bugs/pr6899_second_bad.ml \
+typing-modules-bugs/pr6992_bad.ml \
+typing-modules-bugs/pr7112_bad.ml \
+typing-modules-bugs/pr7414_2_bad.ml \
+typing-modules-bugs/pr7414_bad.ml \
+typing-modules-bugs/pr9695_bad.ml \
+typing-objects-bugs/pr3968_bad.ml \
+typing-objects-bugs/pr4018_bad.ml \
+typing-objects-bugs/pr4435_bad.ml \
+typing-objects-bugs/pr4824a_bad.ml \
+typing-objects-bugs/pr7284_bad.ml \
+typing-ocamlc-i/pervasives_leitmotiv.ml \
+typing-ocamlc-i/pr4791.ml \
+typing-ocamlc-i/pr6323.ml \
+typing-ocamlc-i/pr7402.ml \
+typing-ocamlc-i/pr7620_bad.ml \
+typing-polyvariants-bugs-2/pr3918c.ml \
+typing-polyvariants-bugs/pr5057a_bad.ml \
+typing-private-bugs/pr5026_bad.ml \
+typing-recmod/pr9494.ml \
+typing-recmod/t01bad.ml \
+typing-recmod/t02bad.ml \
+typing-recmod/t04bad.ml \
+typing-recmod/t05bad.ml \
+typing-recmod/t07bad.ml \
+typing-recmod/t08bad.ml \
+typing-recmod/t09bad.ml \
+typing-recmod/t11bad.ml \
+typing-recmod/t12bad.ml \
+typing-recmod/t14bad.ml \
+typing-recmod/t15bad.ml \
+typing-rectypes-bugs/pr5343_bad.ml \
+typing-rectypes-bugs/pr6174_bad.ml \
+typing-rectypes-bugs/pr6870_bad.ml \
+typing-safe-linking/b_bad.ml \
+typing-short-paths/pr5918.ml \
+typing-sigsubst/sig_local_aliases_syntax_errors.ml \
+typing-warnings/pr7261.ml \
+warnings/deprecated_module.ml \
+warnings/deprecated_module_assigment.ml \
+warnings/deprecated_module_use.ml \
+warnings/deprecated_mutable.ml \
+warnings/w01.ml \
+warnings/w03.ml \
+warnings/w04.ml \
+warnings/w04_failure.ml \
+warnings/w06.ml \
+warnings/w32.ml \
+warnings/w32b.ml \
+warnings/w33.ml \
+warnings/w45.ml \
+warnings/w47_inline.ml \
+warnings/w50.ml \
+warnings/w51_bis.ml \
+warnings/w53.ml \
+warnings/w54.ml \
+warnings/w55.ml \
+warnings/w59.ml \
+warnings/w60.ml \
+warnings/w68.ml \
+"
+
+# These tests have to be translated without extra blank lines in order
+# to preserve at the same time line numbers and the position of EOF
+TESTS_COMPACT="
+parse-errors/unclosed_class_signature.mli \
+parse-errors/unclosed_class_simpl_expr1.ml \
+parse-errors/unclosed_class_simpl_expr2.ml \
+parse-errors/unclosed_class_simpl_expr3.ml \
+parse-errors/unclosed_object.ml \
+parse-errors/unclosed_paren_module_expr1.ml \
+parse-errors/unclosed_paren_module_expr2.ml \
+parse-errors/unclosed_paren_module_expr3.ml \
+parse-errors/unclosed_paren_module_expr4.ml \
+parse-errors/unclosed_paren_module_expr5.ml \
+parse-errors/unclosed_paren_module_type.mli \
+parse-errors/unclosed_sig.mli \
+parse-errors/unclosed_simple_expr.ml \
+parse-errors/unclosed_simple_pattern.ml \
+parse-errors/unclosed_struct.ml \
+parsing/arrow_ambiguity.ml \
+"
+
+# These tests have to be translated in `chars` mode to preserve char offsets
+TESTS_CHARS="
+formatting/test_locations.ml \
+parsetree/locations_test.ml \
+parsing/attributes.ml \
+parsing/extensions.ml \
+parsing/hash_ambiguity.ml \
+parsing/int_and_float_with_modifier.ml \
+parsing/pr6865.ml \
+parsing/quotedextensions.ml \
+parsing/shortcut_ext_attr.ml \
+tool-ocamlc-stop-after/stop_after_parsing_impl.ml \
+tool-ocamlc-stop-after/stop_after_parsing_intf.mli \
+tool-ocamlc-stop-after/stop_after_typing_impl.ml \
+"
+
+for f in $TESTS_COMMENTS; do
+ echo comments: $f
+ ff="testsuite/tests/$f"
+ echo "$ff:1.1: warning: contains comments, needs to be done by hand"
+done
+
+for f in $TESTS_PLAIN; do
+ echo plain: $f
+ ff="testsuite/tests/$f"
+ ocamltest/ocamltest -translate -compact ../trunk/$ff >$ff
+done
+
+for f in $TESTS_LINES; do
+ echo lines: $f
+ ff="testsuite/tests/$f"
+ ocamltest/ocamltest -translate -compact -keep-lines ../trunk/$ff >$ff
+done
+
+for f in $TESTS_COMPACT; do
+ echo compact: $f
+ ff="testsuite/tests/$f"
+ ocamltest/ocamltest -translate -compact ../trunk/$ff >$ff
+done
+
+for f in $TESTS_CHARS; do
+ echo chars: $f
+ ff="testsuite/tests/$f"
+ ocamltest/ocamltest -translate -compact -keep-chars ../trunk/$ff >$ff
+done
+
+N=$(echo $TESTS_COMMENTS $TESTS_PLAIN $TESTS_COMPACT $TESTS_LINES $TESTS_CHARS \
+ | wc -w)
+if [ $N -ne 1328 ]; then
+ printf "Error: wrong number of test files (%d should be 1328)\n" $N
+ exit 5
+fi