Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package ocaml-bisect_ppx for openSUSE:Factory checked in at 2021-09-29 20:18:23 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/ocaml-bisect_ppx (Old) and /work/SRC/openSUSE:Factory/.ocaml-bisect_ppx.new.1899 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ocaml-bisect_ppx" Wed Sep 29 20:18:23 2021 rev:2 rq:921261 version:2.6.3 Changes: -------- --- /work/SRC/openSUSE:Factory/ocaml-bisect_ppx/ocaml-bisect_ppx.changes 2021-04-29 01:38:20.614573605 +0200 +++ /work/SRC/openSUSE:Factory/.ocaml-bisect_ppx.new.1899/ocaml-bisect_ppx.changes 2021-09-29 20:19:26.123033794 +0200 @@ -1,0 +2,6 @@ +Sat Sep 11 12:34:56 UTC 2021 - oher...@suse.de + +- Update to version 2.6.3 + see included CHANGES for details + +------------------------------------------------------------------- Old: ---- ocaml-bisect_ppx-2.6.0.tar.xz New: ---- ocaml-bisect_ppx-2.6.3.tar.xz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ ocaml-bisect_ppx.spec ++++++ --- /var/tmp/diff_new_pack.2WqGFq/_old 2021-09-29 20:19:26.647034554 +0200 +++ /var/tmp/diff_new_pack.2WqGFq/_new 2021-09-29 20:19:26.651034560 +0200 @@ -29,7 +29,7 @@ %define pkg ocaml-bisect_ppx Name: %{pkg}%{nsuffix} -Version: 2.6.0 +Version: 2.6.3 Release: 0 %{?ocaml_preserve_bytecode} Summary: Code coverage for OCaml and Reason @@ -39,7 +39,7 @@ Source0: %{pkg}-%{version}.tar.xz BuildRequires: ocaml BuildRequires: ocaml-dune >= 2.7 -BuildRequires: ocaml-rpm-macros >= 20210409 +BuildRequires: ocaml-rpm-macros >= 20210911 %if 1 BuildRequires: ocamlfind(cmdliner) BuildRequires: ocamlfind(ppxlib) @@ -88,6 +88,7 @@ %if "%{build_flavor}" == "" %files -f %{name}.files +%doc doc/CHANGES %{_bindir}/* %files devel -f %{name}.files.devel ++++++ _service ++++++ --- /var/tmp/diff_new_pack.2WqGFq/_old 2021-09-29 20:19:26.687034612 +0200 +++ /var/tmp/diff_new_pack.2WqGFq/_new 2021-09-29 20:19:26.687034612 +0200 @@ -1,7 +1,7 @@ <services> <service name="tar_scm" mode="disabled"> <param name="filename">ocaml-bisect_ppx</param> - <param name="revision">5a9db944d01e1bb78dbc8264ff96f9474fc9af53</param> + <param name="revision">eaa92a958bf840b9e37e501c4e6b4c1a661d9818</param> <param name="scm">git</param> <param name="submodules">disable</param> <param name="url">https://github.com/aantron/bisect_ppx.git</param> ++++++ ocaml-bisect_ppx-2.6.0.tar.xz -> ocaml-bisect_ppx-2.6.3.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ocaml-bisect_ppx-2.6.0/.github/workflows/test.yml new/ocaml-bisect_ppx-2.6.3/.github/workflows/test.yml --- old/ocaml-bisect_ppx-2.6.0/.github/workflows/test.yml 1970-01-01 01:00:00.000000000 +0100 +++ new/ocaml-bisect_ppx-2.6.3/.github/workflows/test.yml 2021-07-21 21:46:06.000000000 +0200 @@ -0,0 +1,21 @@ +name: test +on: [push, pull_request] + +jobs: + bucklescript: + strategy: + matrix: + os: + - ubuntu-18.04 + - macos-10.15 + + runs-on: ${{matrix.os}} + steps: + - uses: actions/checkout@v2 + - run: npm install esy + - run: echo PATH=$(pwd)/node_modules/.bin:$PATH >> $GITHUB_ENV + - run: make -C test/bucklescript full-test + - if: ${{ github.event_name != 'pull_request' && github.ref == 'refs/heads/master' }} + env: + DEPLOY_KEY: ${{ secrets.DEPLOY_KEY }} + run: bash ./test/ci/travis-binaries.sh diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ocaml-bisect_ppx-2.6.0/.gitignore new/ocaml-bisect_ppx-2.6.3/.gitignore --- old/ocaml-bisect_ppx-2.6.0/.gitignore 1970-01-01 01:00:00.000000000 +0100 +++ new/ocaml-bisect_ppx-2.6.3/.gitignore 2021-07-21 21:46:06.000000000 +0200 @@ -0,0 +1,35 @@ +# Working and output directories. +_build/ +gh-pages/ + +# Test working and coverage directories. +_coverage/ +_self/ + +# Scratch directory for notes, etc. +scratch/ + +# Generated by Dune. +*.install +*.merlin + +# Emacs temporary files. +*~ + +# Pollution from the usage tests. +*.coverage +a.out +*.cmi +*.cmx +*.o + +# opam 2. +_opam/ + +# BuckleScript, NPM, esy. +node_modules/ +package-lock.json +lib/ +_esy/ +*.tgz +package/ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ocaml-bisect_ppx-2.6.0/.travis.yml new/ocaml-bisect_ppx-2.6.3/.travis.yml --- old/ocaml-bisect_ppx-2.6.0/.travis.yml 2021-02-06 09:29:34.000000000 +0100 +++ new/ocaml-bisect_ppx-2.6.3/.travis.yml 2021-07-21 21:46:06.000000000 +0200 @@ -21,7 +21,7 @@ WD=`pwd` if [ ! -f node_modules/.bin/esy ] then - npm install --no-save esy@0.6.4 + npm install --no-save esy export PATH="$WD/node_modules/.bin:$PATH" else mkdir -p _wrapped_esy @@ -156,6 +156,7 @@ include: - <<: *bucklescript os: osx + osx_image: xcode12.2 env: BUCKLESCRIPT=YES SAVE_BINARIES=YES - <<: *bucklescript os: linux diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ocaml-bisect_ppx-2.6.0/README.md new/ocaml-bisect_ppx-2.6.3/README.md --- old/ocaml-bisect_ppx-2.6.0/README.md 2021-02-06 09:29:34.000000000 +0100 +++ new/ocaml-bisect_ppx-2.6.3/README.md 2021-07-21 21:46:06.000000000 +0200 @@ -57,7 +57,7 @@ ] ``` -2. [Mark the code under test for preprocessing by +2. [Mark the code under test for instrumentation by `bisect_ppx`](https://github.com/aantron/bisect-starter-dune/blob/03cb827553d1264559eab19fdaa8c0056c9b2019/dune#L4) in your `dune` file: ```ocaml @@ -142,7 +142,7 @@ <a id="ReScript"></a> ### ReScript -Refer to [**aantron/bisect-starter-bsb**][rescript-repo], which produces +Refer to [**aantron/bisect-starter-rescript**][rescript-repo], which produces [this report][rescript-report]. 1. [Depend on Bisect_ppx in `package.json`](https://github.com/aantron/bisect-starter-rescript/blob/master/package.json#L3-L6), @@ -153,7 +153,7 @@ "bisect_ppx": "^2.0.0" }, "dependencies": { - "bs-platform": "*" + "rescript": "*" } ``` @@ -218,7 +218,7 @@ Usage with Jest requires Bisect_ppx version 2.4.0 or higher. See the [**aantron/bisect-starter-jest**][jest-repo] for a complete minimal example - project. The repo produces [this report][jest-report]. + project. That repo produces [this report][jest-report]. If the tests will be running in the browser, at the end of testing, call @@ -257,7 +257,7 @@ 5. If your project uses both ReScript and native Dune, native Dune will start picking up OCaml files that are part of the ReScript `bisect_ppx` package. - To prevent this, add a `dune` with the following contents to the root of + To prevent this, add a `dune` file with the following contents to the root of your project: ``` @@ -329,7 +329,7 @@ - [Ocamlbuild](https://github.com/aantron/bisect_ppx-ocamlbuild#using-with-ocamlbuild) and [OASIS](https://github.com/aantron/bisect_ppx-ocamlbuild#using-with-oasis) instructions can be found at -[aantron/bisect_ppx-ocamlbuild](https://github.com/aantron/bisect_ppx-ocamlbuild#readme). +[**aantron/bisect_ppx-ocamlbuild**](https://github.com/aantron/bisect_ppx-ocamlbuild#readme). - With Ocamlfind, you must have your build script issue the right commands, to instrument the code under test, but not the tester: @@ -428,7 +428,7 @@ Finally, you can exclude an entire file by putting `[@@@coverage exclude_file]` into its top-level module. However, whenever possible, it is recommended to -exclude files by not preprocessing with Bisect_ppx to begin with. +exclude files by not instrumenting with Bisect_ppx to begin with. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ocaml-bisect_ppx-2.6.0/bisect_ppx.opam new/ocaml-bisect_ppx-2.6.3/bisect_ppx.opam --- old/ocaml-bisect_ppx-2.6.0/bisect_ppx.opam 2021-02-06 09:29:34.000000000 +0100 +++ new/ocaml-bisect_ppx-2.6.3/bisect_ppx.opam 2021-07-21 21:46:06.000000000 +0200 @@ -1,7 +1,6 @@ opam-version: "2.0" synopsis: "Code coverage for OCaml" -version: "2.6.0" license: "MIT" homepage: "https://github.com/aantron/bisect_ppx" doc: "https://github.com/aantron/bisect_ppx" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ocaml-bisect_ppx-2.6.0/doc/CHANGES new/ocaml-bisect_ppx-2.6.3/doc/CHANGES --- old/ocaml-bisect_ppx-2.6.0/doc/CHANGES 2021-02-06 09:29:34.000000000 +0100 +++ new/ocaml-bisect_ppx-2.6.3/doc/CHANGES 2021-07-21 21:46:06.000000000 +0200 @@ -1,3 +1,27 @@ +Version 2.6.3 (2021-07-21): +--------------------------- + + Changes + + - Downgrade binaries to require Ubuntu only 18.04, not 20.04 (6f86646, + reported by Peter Piekarczyk). + +Version 2.6.2 (2021-07-20): +--------------------------- + + Changes + + - Remove dependency on Marshal from Bisect_common to adapt to upstream changes + in ReScript (#376, reported by John Doneth). + +Version 2.6.1 (2021-05-04): +--------------------------- + + Bugs fixed + + - Do not instrument React.forwardRef and React.memo (#375, reported by Mathieu + Haton). + Version 2.6.0 (2021-02-06): --------------------------- diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ocaml-bisect_ppx-2.6.0/package.json new/ocaml-bisect_ppx-2.6.3/package.json --- old/ocaml-bisect_ppx-2.6.0/package.json 2021-02-06 09:29:34.000000000 +0100 +++ new/ocaml-bisect_ppx-2.6.3/package.json 2021-07-21 21:46:06.000000000 +0200 @@ -1,7 +1,7 @@ { "name": "bisect_ppx", "description": "Code coverage for OCaml and Reason", - "version": "2.6.0", + "version": "2.6.3", "license": "MIT", "homepage": "https://github.com/aantron/bisect_ppx", "bugs": { @@ -21,9 +21,6 @@ "email": "antonbac...@yahoo.com", "url": "https://github.com/aantron" }, - "peerDependencies": { - "bs-platform": "*" - }, "scripts": { "preinstall": "bash src/npm-install.sh" }, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ocaml-bisect_ppx-2.6.0/src/common/bisect_common.ml new/ocaml-bisect_ppx-2.6.3/src/common/bisect_common.ml --- old/ocaml-bisect_ppx-2.6.0/src/common/bisect_common.ml 2021-02-06 09:29:34.000000000 +0100 +++ new/ocaml-bisect_ppx-2.6.3/src/common/bisect_common.ml 2021-07-21 21:46:06.000000000 +0200 @@ -178,11 +178,6 @@ Printf.sprintf "%s%09d.coverage" base_name (abs (Random.State.int prng 1000000000)) -let write_points points = - let points_array = Array.of_list points in - Array.sort compare points_array; - Marshal.to_string points_array [] - let get_relative_path file = if Filename.is_relative file then file @@ -205,11 +200,6 @@ |> Array.to_list |> List.map (fun (file, data) -> get_relative_path file, data) -let read_points s = - let points_array : point_definition array = Marshal.from_string s 0 in - Array.sort compare points_array; - Array.to_list points_array - let register_file file ~point_count ~point_definitions = let point_state = Array.make point_count 0 in let table = Lazy.force table in diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ocaml-bisect_ppx-2.6.0/src/common/bisect_common.mli new/ocaml-bisect_ppx-2.6.3/src/common/bisect_common.mli --- old/ocaml-bisect_ppx-2.6.0/src/common/bisect_common.mli 2021-02-06 09:29:34.000000000 +0100 +++ new/ocaml-bisect_ppx-2.6.3/src/common/bisect_common.mli 2021-07-21 21:46:06.000000000 +0200 @@ -48,19 +48,12 @@ val random_filename : string -> string (** Returns a random filename, with the given prefix. *) -val write_points : point_definition list -> string -(** [write_points pts] converts the point definitions [pts] to a string. The - string is a binary byte sequence; it is not meant to be legible. *) - val read_runtime_data : string -> (string * (int array * string)) list (** [read_runtime_data f] reads the runtime data from file [f]. Raises [Sys_error] if an i/o error occurs. May also raise [Invalid_file], [Unsupported_version], or [Modified_file]. *) -val read_points : string -> point_definition list -(** [read_points s] reads point definitions from the string [s]. *) - val reset_counters : unit -> unit (** Clears accumulated coverage statistics. *) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ocaml-bisect_ppx-2.6.0/src/ppx/instrument.ml new/ocaml-bisect_ppx-2.6.3/src/ppx/instrument.ml --- old/ocaml-bisect_ppx-2.6.0/src/ppx/instrument.ml 2021-02-06 09:29:34.000000000 +0100 +++ new/ocaml-bisect_ppx-2.6.3/src/ppx/instrument.ml 2021-07-21 21:46:06.000000000 +0200 @@ -865,6 +865,11 @@ |> fun (v, e, f, n, _) -> List.rev v, List.rev e, List.rev f, n && not use_aliases + let write_points points = + let points_array = Array.of_list points in + Array.sort compare points_array; + Marshal.to_string points_array [] + let runtime_initialization points file = let loc = Location.in_file file in @@ -879,8 +884,7 @@ in let point_count = Ast_builder.Default.eint ~loc (List.length !points) in - let points_data = - Ast_builder.Default.estring ~loc (Common.write_points !points) in + let points_data = Ast_builder.Default.estring ~loc (write_points !points) in let file = Ast_builder.Default.estring ~loc file in let ast_convenience_str_opt = function @@ -1094,7 +1098,9 @@ | [%expr ignore] | [%expr Sys.opaque_identity] | [%expr Obj.magic] - | [%expr (##)] -> true + | [%expr (##)] + | [%expr React.forwardRef] + | [%expr React.memo] -> true | _ -> false) in diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ocaml-bisect_ppx-2.6.0/src/report/report_coveralls.ml new/ocaml-bisect_ppx-2.6.3/src/report/report_coveralls.ml --- old/ocaml-bisect_ppx-2.6.0/src/report/report_coveralls.ml 2021-02-06 09:29:34.000000000 +0100 +++ new/ocaml-bisect_ppx-2.6.3/src/report/report_coveralls.ml 2021-07-21 21:46:06.000000000 +0200 @@ -13,7 +13,7 @@ verbose "... file not found"; None | Some resolved_in_file -> - let cmp_content = Hashtbl.find points in_file |> Common.read_points in + let cmp_content = Hashtbl.find points in_file |> Report_utils.read_points in verbose (Printf.sprintf "... file has %d points" (List.length cmp_content)); let len = Array.length visited in let pts = (List.map diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ocaml-bisect_ppx-2.6.0/src/report/report_html.ml new/ocaml-bisect_ppx-2.6.3/src/report/report_html.ml --- old/ocaml-bisect_ppx-2.6.0/src/report/report_html.ml 2021-02-06 09:29:34.000000000 +0100 +++ new/ocaml-bisect_ppx-2.6.3/src/report/report_html.ml 2021-07-21 21:46:06.000000000 +0200 @@ -141,7 +141,7 @@ verbose "... file not found"; None | Some resolved_in_file -> - let cmp_content = Hashtbl.find points in_file |> Common.read_points in + let cmp_content = Hashtbl.find points in_file |> Report_utils.read_points in verbose (Printf.sprintf "... file has %d points" (List.length cmp_content)); let len = Array.length visited in let stats = Report_utils.make () in diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ocaml-bisect_ppx-2.6.0/src/report/report_utils.ml new/ocaml-bisect_ppx-2.6.3/src/report/report_utils.ml --- old/ocaml-bisect_ppx-2.6.0/src/report/report_utils.ml 2021-02-06 09:29:34.000000000 +0100 +++ new/ocaml-bisect_ppx-2.6.3/src/report/report_utils.ml 2021-07-21 21:46:06.000000000 +0200 @@ -94,3 +94,9 @@ let open Infix in {visited = counts_1.visited ++ counts_2.visited; total = counts_1.total ++ counts_2.total} + +let read_points s = + let points_array : Bisect_common.point_definition array = + Marshal.from_string s 0 in + Array.sort compare points_array; + Array.to_list points_array diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ocaml-bisect_ppx-2.6.0/src/report/report_utils.mli new/ocaml-bisect_ppx-2.6.3/src/report/report_utils.mli --- old/ocaml-bisect_ppx-2.6.0/src/report/report_utils.mli 2021-02-06 09:29:34.000000000 +0100 +++ new/ocaml-bisect_ppx-2.6.3/src/report/report_utils.mli 2021-07-21 21:46:06.000000000 +0200 @@ -67,3 +67,6 @@ val add : counts -> counts -> counts (** [add x y] returns the sum of counts [x] and [y]. *) + +val read_points : string -> Bisect_common.point_definition list +(** [read_points s] reads point definitions from the string [s]. *) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ocaml-bisect_ppx-2.6.0/test/bucklescript/package.json new/ocaml-bisect_ppx-2.6.3/test/bucklescript/package.json --- old/ocaml-bisect_ppx-2.6.0/test/bucklescript/package.json 2021-02-06 09:29:34.000000000 +0100 +++ new/ocaml-bisect_ppx-2.6.3/test/bucklescript/package.json 2021-07-21 21:46:06.000000000 +0200 @@ -2,13 +2,13 @@ "name": "bisect_ppx-test", "dependencies": { "bisect_ppx": "file:package", - "bs-platform": "^8.4.2", + "rescript": "^9.1.0", "esy": "^0.6.7" }, "scripts": { - "build": "bsb -make-world", - "instrument": "BISECT_ENABLE=yes bsb -make-world", + "build": "rescript", + "instrument": "BISECT_ENABLE=yes rescript", "execute": "node ./lib/js/hello.js", - "clean": "bsb -clean-world" + "clean": "rescript -clean-world" } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ocaml-bisect_ppx-2.6.0/test/ci/travis-binaries.sh new/ocaml-bisect_ppx-2.6.3/test/ci/travis-binaries.sh --- old/ocaml-bisect_ppx-2.6.0/test/ci/travis-binaries.sh 2021-02-06 09:29:34.000000000 +0100 +++ new/ocaml-bisect_ppx-2.6.3/test/ci/travis-binaries.sh 2021-07-21 21:46:06.000000000 +0200 @@ -5,7 +5,9 @@ git remote set-url origin g...@github.com:aantron/bisect_ppx.git git config user.name "Anton Bachin" git config user.email "antonbac...@yahoo.com" -echo $DEPLOY_KEY | base64 --decode > ~/.ssh/binaries +mkdir -p ~/.ssh +chmod 700 ~/.ssh +echo "$DEPLOY_KEY" | base64 --decode > ~/.ssh/binaries chmod 400 ~/.ssh/binaries echo >> ~/.ssh/config echo "Host github.com" >> ~/.ssh/config @@ -15,19 +17,19 @@ set +e set -x -case $TRAVIS_OS_NAME in - "linux") OS=linux;; - "osx") OS=macos;; - *) echo Unsupported system $TRAVIS_OS_NAME; exit 1;; +case $RUNNER_OS in + "Linux") OS=linux;; + "macOS") OS=macos;; + *) echo Unsupported system $RUNNER_OS; exit 1;; esac try_to_commit() { git config remote.origin.fetch "+refs/heads/*:refs/remotes/origin/*" git fetch --unshallow origin git checkout -b binaries origin/binaries || git checkout -b binaries - if ! git merge-base --is-ancestor $TRAVIS_COMMIT binaries + if ! git merge-base --is-ancestor $GITHUB_SHA binaries then - git reset --hard $TRAVIS_COMMIT + git reset --hard $GITHUB_SHA fi mkdir -p bin/$OS cp test/bucklescript/node_modules/bisect_ppx/ppx bin/$OS/ @@ -44,7 +46,7 @@ git commit -F commit-message git push --force-with-lease -u origin binaries RESULT=$? - git checkout $TRAVIS_BRANCH + git checkout $GITHUB_REF git branch -D binaries return $RESULT } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ocaml-bisect_ppx-2.6.0/test/instrument/attribute.t new/ocaml-bisect_ppx-2.6.3/test/instrument/attribute.t --- old/ocaml-bisect_ppx-2.6.0/test/instrument/attribute.t 2021-02-06 09:29:34.000000000 +0100 +++ new/ocaml-bisect_ppx-2.6.3/test/instrument/attribute.t 2021-07-21 21:46:06.000000000 +0200 @@ -80,3 +80,40 @@ let _ = () [@@foo print_endline "bar"] let _ = () [@foo print_endline "bar"] + + +Let-bindings with [@@react.component] are not instrumented at their top level. + + $ bash test.sh <<'EOF' + > module React = struct let forwardRef f = f () end + > + > let make1 = fun () -> ignore ignore + > [@@react.component] + > + > let make2 () = ignore ignore + > [@@react.component] + > + > let make3 = React.forwardRef (fun r -> ignore r) + > [@@react.component] + > EOF + module React = struct + let forwardRef f = + ___bisect_visit___ 0; + f () + end + + let make1 () = + ___bisect_visit___ 1; + ignore ignore + [@@react.component] + + let make2 () = + ___bisect_visit___ 2; + ignore ignore + [@@react.component] + + let make3 = + React.forwardRef (fun r -> + ___bisect_visit___ 3; + ignore r) + [@@react.component]