diff options
Diffstat (limited to 'tools')
-rw-r--r-- | tools/gdb-macros | 447 | ||||
-rw-r--r-- | tools/gdb_ocamlrun.py | 2 | ||||
-rwxr-xr-x | tools/translate-all-tests | 1412 |
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 |