Organisationsahrefsatd9b2abd ()macos-homebrew-5.4_opam-2.4

macos-homebrew-5.4_opam-2.4

Link Copied
Code Copied

Logs

2025-12-09 19:39.05: New job: test ahrefs/atd https://github.com/ahrefs/atd.git#refs/heads/yojson3 (9b2abd5bc58e93fd0a38a1de4f4a819e13226e7a) (macos-x86_64:macos-homebrew-5.4_opam-2.4)
Base: macos-homebrew-ocaml-5.4
Opam project build


To reproduce locally:


git clone --recursive "https://github.com/ahrefs/atd.git" -b "yojson3" && cd "atd" && git reset --hard 9b2abd5b
cat > Dockerfile <<'END-OF-DOCKERFILE'
FROM macos-homebrew-ocaml-5.4
# macos-homebrew-5.4_opam-2.4
USER 1000:1000
ENV CLICOLOR_FORCE="1"
ENV OPAMCOLOR="always"
RUN ln -f ~/local/bin/opam-2.4 ~/local/bin/opam
RUN opam init --reinit -ni
RUN uname -rs && opam exec -- ocaml -version && opam --version
RUN cd ~/opam-repository && (git cat-file -e 8a324a5b9945e0e515da441ede437f3756caa83d || git fetch origin master) && git reset -q --hard 8a324a5b9945e0e515da441ede437f3756caa83d && git log --no-decorate -n1 --oneline && opam update -u
COPY --chown=1000:1000 atdts.opam atds.opam atdpy.opam atdj.opam atdgen.opam atdgen-runtime.opam atdgen-codec-runtime.opam atdd.opam atdcpp.opam atd.opam ./src/./
RUN opam pin add -yn atdts.dev './src/./' && \
opam pin add -yn atds.dev './src/./' && \
opam pin add -yn atdpy.dev './src/./' && \
opam pin add -yn atdj.dev './src/./' && \
opam pin add -yn atdgen.dev './src/./' && \
opam pin add -yn atdgen-runtime.dev './src/./' && \
opam pin add -yn atdgen-codec-runtime.dev './src/./' && \
opam pin add -yn atdd.dev './src/./' && \
opam pin add -yn atdcpp.dev './src/./' && \
opam pin add -yn atd.dev './src/./'
RUN echo '(lang dune 3.0)' > './src/./dune-project'
ENV DEPS="alcotest.1.9.1 astring.0.8.5 base-bigarray.base base-domains.base base-effects.base base-nnp.base base-threads.base base-unix.base biniou.1.2.2 camlp-streams.5.0.1 cmdliner.2.1.0 conf-python-3.9.0.0 dune.3.20.2 easy-format.1.3.4 fmt.0.11.0 menhir.20250912 menhirCST.20250912 menhirLib.20250912 menhirSdk.20250912 ocaml.5.4.0 ocaml-base-compiler.5.4.0 ocaml-compiler.5.4.0 ocaml-config.3 ocaml-options-vanilla.1 ocaml-syntax-shims.1.0.0 ocamlbuild.0.16.1 ocamlfind.1.9.8 re.1.14.0 seq.base stdlib-shims.0.3.0 topkg.1.1.1 uutf.1.0.4 yojson.2.2.2"
ENV CI="true"
ENV OCAMLCI="true"
RUN opam update --depexts && opam install --cli=2.4 --depext-only -y atdts.dev atds.dev atdpy.dev atdj.dev atdgen.dev atdgen-runtime.dev atdgen-codec-runtime.dev atdd.dev atdcpp.dev atd.dev $DEPS
RUN opam install $DEPS
COPY --chown=1000:1000 . ./src
RUN cd ./src && opam exec -- dune build @install @check @runtest && rm -rf _build


END-OF-DOCKERFILE
docker build .
END-REPRO-BLOCK


2025-12-09 19:39.05: Using cache hint "ahrefs/atd-macos-homebrew-ocaml-5.4-macos-homebrew-5.4_opam-2.4-62b2629b23f11a0873ebdc6b080252cf"
2025-12-09 19:39.05: Using OBuilder spec:
((from macos-homebrew-ocaml-5.4)
(comment macos-homebrew-5.4_opam-2.4)
(user (uid 1000) (gid 1000))
(env CLICOLOR_FORCE 1)
(env OPAMCOLOR always)
(run (shell "ln -f ~/local/bin/opam-2.4 ~/local/bin/opam"))
(run (shell "opam init --reinit -ni"))
(run (shell "uname -rs && opam exec -- ocaml -version && opam --version"))
(run (cache (opam-archives (target /Users/mac1000/.opam/download-cache)) (homebrew (target /Users/mac1000/Library/Caches/Homebrew)))
(network host)
(shell "cd ~/opam-repository && (git cat-file -e 8a324a5b9945e0e515da441ede437f3756caa83d || git fetch origin master) && git reset -q --hard 8a324a5b9945e0e515da441ede437f3756caa83d && git log --no-decorate -n1 --oneline && opam update -u"))
(copy (src atdts.opam atds.opam atdpy.opam atdj.opam atdgen.opam atdgen-runtime.opam atdgen-codec-runtime.opam atdd.opam atdcpp.opam atd.opam)
(dst ./src/./))
(run (network host)
(shell  "opam pin add -yn atdts.dev './src/./' && \
\nopam pin add -yn atds.dev './src/./' && \
\nopam pin add -yn atdpy.dev './src/./' && \
\nopam pin add -yn atdj.dev './src/./' && \
\nopam pin add -yn atdgen.dev './src/./' && \
\nopam pin add -yn atdgen-runtime.dev './src/./' && \
\nopam pin add -yn atdgen-codec-runtime.dev './src/./' && \
\nopam pin add -yn atdd.dev './src/./' && \
\nopam pin add -yn atdcpp.dev './src/./' && \
\nopam pin add -yn atd.dev './src/./'"))
(run (network host)
(shell "echo '(lang dune 3.0)' > './src/./dune-project'"))
(env DEPS "alcotest.1.9.1 astring.0.8.5 base-bigarray.base base-domains.base base-effects.base base-nnp.base base-threads.base base-unix.base biniou.1.2.2 camlp-streams.5.0.1 cmdliner.2.1.0 conf-python-3.9.0.0 dune.3.20.2 easy-format.1.3.4 fmt.0.11.0 menhir.20250912 menhirCST.20250912 menhirLib.20250912 menhirSdk.20250912 ocaml.5.4.0 ocaml-base-compiler.5.4.0 ocaml-compiler.5.4.0 ocaml-config.3 ocaml-options-vanilla.1 ocaml-syntax-shims.1.0.0 ocamlbuild.0.16.1 ocamlfind.1.9.8 re.1.14.0 seq.base stdlib-shims.0.3.0 topkg.1.1.1 uutf.1.0.4 yojson.2.2.2")
(env CI true)
(env OCAMLCI true)
(run (cache (opam-archives (target /Users/mac1000/.opam/download-cache)) (homebrew (target /Users/mac1000/Library/Caches/Homebrew)))
(network host)
(shell "opam update --depexts && opam install --cli=2.4 --depext-only -y atdts.dev atds.dev atdpy.dev atdj.dev atdgen.dev atdgen-runtime.dev atdgen-codec-runtime.dev atdd.dev atdcpp.dev atd.dev $DEPS"))
(run (cache (opam-archives (target /Users/mac1000/.opam/download-cache)) (homebrew (target /Users/mac1000/Library/Caches/Homebrew)))
(network host)
(shell "opam install $DEPS"))
(copy (src .) (dst ./src))
(run (shell "cd ./src && opam exec -- dune build @install @check @runtest && rm -rf _build"))
)


2025-12-09 19:39.05: Waiting for resource in pool OCluster
2025-12-09 19:39.05: Waiting for worker…
2025-12-09 20:26.46: Got resource from pool OCluster
Building on i7-worker-03
HEAD is now at 7757273 Bring back start_any_variant
HEAD is now at 9b2abd5 Import the missing Yojson functions 'start_any_variant' and 'start_any_tuple' which were accidentally removed from Yojson.


(from macos-homebrew-ocaml-5.4)
2025-12-09 20:26.48 ---> using "338135fbf1889e924a607b47198b8b308c32a925cc9436066d65a9bdc402cad5" from cache


/: (comment macos-homebrew-5.4_opam-2.4)


/: (user (uid 1000) (gid 1000))


/: (env CLICOLOR_FORCE 1)


/: (env OPAMCOLOR always)


/: (run (shell "ln -f ~/local/bin/opam-2.4 ~/local/bin/opam"))
2025-12-09 20:26.49 ---> using "c45c11c7286cf606ab2156414383237a0e197bf48b9278e9465cc1693c9332b7" from cache


/: (run (shell "opam init --reinit -ni"))
No configuration file found, using built-in defaults.
Checking for available remotes: rsync and local, git.
- you won't be able to use mercurial repositories unless you install the hg command on your system.
- you won't be able to use darcs repositories unless you install the darcs command on your system.


This version of opam requires an update to the layout of /Users/mac1000/.opam from version 2.1 to version 2.2, which can't be reverted.
You may want to back it up before going further.


Continue? [Y/n] y
[NOTE] The 'jobs' option was reset, its value was 1 and its new value will vary according to the current number of cores on your machine. You can restore the fixed value using:
opam option jobs=1 --global
Format upgrade done.


<><> Updating repositories ><><><><><><><><><><><><><><><><><><><><><><><><><><>
[default] no changes from git+file:///Users/mac1000/opam-repository
2025-12-09 20:26.49 ---> using "59a16318ff40c58338bc0b572a2d778111fa14b30a0dc4a11f6465d8abb80bbd" from cache


/: (run (shell "uname -rs && opam exec -- ocaml -version && opam --version"))
Darwin 24.5.0
The OCaml toplevel, version 5.4.0
2.4.1
2025-12-09 20:26.49 ---> using "03cbf303c2ae412068cf1b7f097ec773b09f8e6d693af9a4cf051761664f96f9" from cache


/: (run (cache (opam-archives (target /Users/mac1000/.opam/download-cache)) (homebrew (target /Users/mac1000/Library/Caches/Homebrew)))
(network host)
(shell "cd ~/opam-repository && (git cat-file -e 8a324a5b9945e0e515da441ede437f3756caa83d || git fetch origin master) && git reset -q --hard 8a324a5b9945e0e515da441ede437f3756caa83d && git log --no-decorate -n1 --oneline && opam update -u"))
8a324a5b99 Add: cmdliner.2.1.0 (#28962)


<><> Updating package repositories ><><><><><><><><><><><><><><><><><><><><><><>
[default] synchronised from git+file:///Users/mac1000/opam-repository


Already up-to-date.
Nothing to do.
# To update the current shell environment, run: eval $(opam env)
2025-12-09 20:26.50 ---> using "298aca08415c65c197b497e1df5944924fac42732e6930f7c843af61b613bb22" from cache


/: (copy (src atdts.opam atds.opam atdpy.opam atdj.opam atdgen.opam atdgen-runtime.opam atdgen-codec-runtime.opam atdd.opam atdcpp.opam atd.opam)
(dst ./src/./))
2025-12-09 20:26.50 ---> using "ae05ab6e1d02421260e46904d3454732e6014750217cbd4b83cb68afeb05bf0f" from cache


/: (run (network host)
(shell  "opam pin add -yn atdts.dev './src/./' && \
\nopam pin add -yn atds.dev './src/./' && \
\nopam pin add -yn atdpy.dev './src/./' && \
\nopam pin add -yn atdj.dev './src/./' && \
\nopam pin add -yn atdgen.dev './src/./' && \
\nopam pin add -yn atdgen-runtime.dev './src/./' && \
\nopam pin add -yn atdgen-codec-runtime.dev './src/./' && \
\nopam pin add -yn atdd.dev './src/./' && \
\nopam pin add -yn atdcpp.dev './src/./' && \
\nopam pin add -yn atd.dev './src/./'"))
[atdts.dev] synchronised (file:///Users/mac1000/src)
atdts is now pinned to file:///Users/mac1000/src (version dev)
[atds.dev] synchronised (file:///Users/mac1000/src)
atds is now pinned to file:///Users/mac1000/src (version dev)
[atdpy.dev] synchronised (file:///Users/mac1000/src)
atdpy is now pinned to file:///Users/mac1000/src (version dev)
[atdj.dev] synchronised (file:///Users/mac1000/src)
atdj is now pinned to file:///Users/mac1000/src (version dev)
[atdgen.dev] synchronised (file:///Users/mac1000/src)
atdgen is now pinned to file:///Users/mac1000/src (version dev)
[atdgen-runtime.dev] synchronised (file:///Users/mac1000/src)
atdgen-runtime is now pinned to file:///Users/mac1000/src (version dev)
[atdgen-codec-runtime.dev] synchronised (file:///Users/mac1000/src)
atdgen-codec-runtime is now pinned to file:///Users/mac1000/src (version dev)
[atdd.dev] synchronised (file:///Users/mac1000/src)
atdd is now pinned to file:///Users/mac1000/src (version dev)
[atdcpp.dev] synchronised (file:///Users/mac1000/src)
atdcpp is now pinned to file:///Users/mac1000/src (version dev)
[atd.dev] synchronised (file:///Users/mac1000/src)
atd is now pinned to file:///Users/mac1000/src (version dev)
2025-12-09 20:26.50 ---> using "3ff45bb29e07d0b082f41d018586bb52b33672ac0294805282395a43fa021f7d" from cache


/: (run (network host)
(shell "echo '(lang dune 3.0)' > './src/./dune-project'"))
2025-12-09 20:26.51 ---> using "97bf5bd549fb6b75dc3599387762a1200c0fc4a47afeaf538c7e1c36c8104dee" from cache


/: (env DEPS "alcotest.1.9.1 astring.0.8.5 base-bigarray.base base-domains.base base-effects.base base-nnp.base base-threads.base base-unix.base biniou.1.2.2 camlp-streams.5.0.1 cmdliner.2.1.0 conf-python-3.9.0.0 dune.3.20.2 easy-format.1.3.4 fmt.0.11.0 menhir.20250912 menhirCST.20250912 menhirLib.20250912 menhirSdk.20250912 ocaml.5.4.0 ocaml-base-compiler.5.4.0 ocaml-compiler.5.4.0 ocaml-config.3 ocaml-options-vanilla.1 ocaml-syntax-shims.1.0.0 ocamlbuild.0.16.1 ocamlfind.1.9.8 re.1.14.0 seq.base stdlib-shims.0.3.0 topkg.1.1.1 uutf.1.0.4 yojson.2.2.2")


/: (env CI true)


/: (env OCAMLCI true)


/: (run (cache (opam-archives (target /Users/mac1000/.opam/download-cache)) (homebrew (target /Users/mac1000/Library/Caches/Homebrew)))
(network host)
(shell "opam update --depexts && opam install --cli=2.4 --depext-only -y atdts.dev atds.dev atdpy.dev atdj.dev atdgen.dev atdgen-runtime.dev atdgen-codec-runtime.dev atdd.dev atdcpp.dev atd.dev $DEPS"))
+ /usr/local/bin/brew "update"
- ==> Updating Homebrew...
- ==> Homebrew collects anonymous analytics.
- Read the analytics documentation (and how to opt-out) here:
-   https://docs.brew.sh/Analytics
- No analytics have been recorded yet (nor will be during this `brew` run).
- 
- ==> Homebrew is run entirely by unpaid volunteers. Please consider donating:
-   https://github.com/Homebrew/brew#donations
- 
- Updated 1 tap (homebrew/cask).


<><> Synchronising pinned packages ><><><><><><><><><><><><><><><><><><><><><><>
[atdd.dev] synchronised (file:///Users/mac1000/src)
[atdcpp.dev] synchronised (file:///Users/mac1000/src)
[atd.dev] synchronised (file:///Users/mac1000/src)
[atdgen.dev] synchronised (file:///Users/mac1000/src)
[atdgen-codec-runtime.dev] synchronised (file:///Users/mac1000/src)
[atdgen-runtime.dev] synchronised (file:///Users/mac1000/src)
[atdj.dev] synchronised (file:///Users/mac1000/src)
[atdpy.dev] synchronised (file:///Users/mac1000/src)
[atds.dev] synchronised (file:///Users/mac1000/src)
[atdts.dev] synchronised (file:///Users/mac1000/src)


[NOTE] Package ocaml-options-vanilla is already installed (current version is 1).
[NOTE] Package ocaml-config is already installed (current version is 3).
[NOTE] Package ocaml-compiler is already installed (current version is 5.4.0).
[NOTE] Package ocaml-base-compiler is already installed (current version is 5.4.0).
[NOTE] Package ocaml is already installed (current version is 5.4.0).
[NOTE] Package base-unix is already installed (current version is base).
[NOTE] Package base-threads is already installed (current version is base).
[NOTE] Package base-nnp is already installed (current version is base).
[NOTE] Package base-effects is already installed (current version is base).
[NOTE] Package base-domains is already installed (current version is base).
[NOTE] Package base-bigarray is already installed (current version is base).


The following system packages will first need to be installed:
python@3.9


<><> Handling external dependencies <><><><><><><><><><><><><><><><><><><><><><>


+ /usr/local/bin/brew "install" "python@3.9"
- ==> Fetching downloads for: python@3.9
- Warning: python@3.9 has been deprecated! It will be disabled on 2026-10-15.
- ✔︎ Bottle Manifest python@3.9 (3.9.25)
- ✔︎ Bottle Manifest gdbm (1.26)
- ✔︎ Bottle Manifest mpdecimal (4.0.1)
- ✔︎ Bottle Manifest ca-certificates (2025-12-02)
- ✔︎ Bottle Manifest openssl@3 (3.6.0)
- ✔︎ Bottle Manifest readline (8.3.1)
- ✔︎ Bottle Manifest sqlite (3.51.1)
- ✔︎ Bottle Manifest xz (5.8.1)
- ✔︎ Bottle ca-certificates (2025-12-02)
- ✔︎ Bottle gdbm (1.26)
- ✔︎ Bottle sqlite (3.51.1)
- ✔︎ Bottle mpdecimal (4.0.1)
- ✔︎ Bottle readline (8.3.1)
- ✔︎ Bottle xz (5.8.1)
- ✔︎ Bottle openssl@3 (3.6.0)
- ✔︎ Bottle python@3.9 (3.9.25)
- ==> Installing dependencies for python@3.9: gdbm, mpdecimal, ca-certificates, openssl@3, readline, sqlite and xz
- ==> Installing python@3.9 dependency: gdbm
- ==> Pouring gdbm--1.26.sonoma.bottle.tar.gz
- 🍺  /usr/local/Cellar/gdbm/1.26: 25 files, 914.1KB
- ==> Installing python@3.9 dependency: mpdecimal
- ==> Pouring mpdecimal--4.0.1.sequoia.bottle.tar.gz
- 🍺  /usr/local/Cellar/mpdecimal/4.0.1: 22 files, 570.3KB
- ==> Installing python@3.9 dependency: ca-certificates
- ==> Pouring ca-certificates--2025-12-02.all.bottle.tar.gz
- ==> Regenerating CA certificate bundle from keychain, this may take a while...
- 🍺  /usr/local/Cellar/ca-certificates/2025-12-02: 4 files, 235.9KB
- ==> Installing python@3.9 dependency: openssl@3
- ==> Pouring openssl@3--3.6.0.sequoia.bottle.tar.gz
- 🍺  /usr/local/Cellar/openssl@3/3.6.0: 7,609 files, 37.9MB
- ==> Installing python@3.9 dependency: readline
- ==> Pouring readline--8.3.1.sequoia.bottle.tar.gz
- 🍺  /usr/local/Cellar/readline/8.3.1: 56 files, 2.6MB
- ==> Installing python@3.9 dependency: sqlite
- ==> Pouring sqlite--3.51.1.sequoia.bottle.tar.gz
- 🍺  /usr/local/Cellar/sqlite/3.51.1: 13 files, 5.2MB
- ==> Installing python@3.9 dependency: xz
- ==> Pouring xz--5.8.1.sequoia.bottle.tar.gz
- 🍺  /usr/local/Cellar/xz/5.8.1: 96 files, 2.4MB
- ==> Installing python@3.9
- ==> Pouring python@3.9--3.9.25.sonoma.bottle.tar.gz
- ==> /usr/local/Cellar/python@3.9/3.9.25/bin/python3.9 -Im ensurepip
- ==> /usr/local/Cellar/python@3.9/3.9.25/bin/python3.9 -Im pip install -v --no-index --upgrade --isolated --target=/usr/local/lib/python3.9/site-packages /usr/local/Cellar/python@3.9/3.9.25/Frameworks/Python.framework/Versions/3.9/lib/python3.9/ensurepip/_bundled/setuptools-80.9.0-py3-none-any.whl /usr/local/Cellar/python@3.9/3.9.25/Frameworks/Python.framework/Versions/3.9/lib/python3.9/ensurepip/_bundled/pip-25.3-py3-none-any.whl /usr/local/Cellar/python@3.9/3.9.25/libexec/wheel-0.45.1-py3-none-any.whl
- ==> Caveats
- Python is installed as
-   /usr/local/bin/python3.9
- 
- Unversioned and major-versioned symlinks `python`, `python3`, `python-config`, `python3-config`, `pip`, `pip3`, etc. pointing to
- `python3.9`, `python3.9-config`, `pip3.9` etc., respectively, are installed into
-   /usr/local/opt/python@3.9/libexec/bin
- 
- You can install Python packages with
-   pip3.9 install <package>
- They will install into the site-package directory
-   /usr/local/lib/python3.9/site-packages
- 
- `idle3.9` requires tkinter, which is available separately:
-   brew install python-tk@3.9
- 
- If you do not need a specific version of Python, and always want Homebrew's `python3` in your PATH:
-   brew install python3
- 
- See: https://docs.brew.sh/Homebrew-and-Python
- ==> Summary
- 🍺  /usr/local/Cellar/python@3.9/3.9.25: 3,037 files, 55MB
- ==> Running `brew cleanup python@3.9`...
- Disable this behaviour by setting `HOMEBREW_NO_INSTALL_CLEANUP=1`.
- Hide these hints with `HOMEBREW_NO_ENV_HINTS=1` (see `man brew`).
- ==> Caveats
- ==> python@3.9
- Python is installed as
-   /usr/local/bin/python3.9
- 
- Unversioned and major-versioned symlinks `python`, `python3`, `python-config`, `python3-config`, `pip`, `pip3`, etc. pointing to
- `python3.9`, `python3.9-config`, `pip3.9` etc., respectively, are installed into
-   /usr/local/opt/python@3.9/libexec/bin
- 
- You can install Python packages with
-   pip3.9 install <package>
- They will install into the site-package directory
-   /usr/local/lib/python3.9/site-packages
- 
- `idle3.9` requires tkinter, which is available separately:
-   brew install python-tk@3.9
- 
- If you do not need a specific version of Python, and always want Homebrew's `python3` in your PATH:
-   brew install python3
- 
- See: https://docs.brew.sh/Homebrew-and-Python
2025-12-09 20:26.51 ---> using "f7af99e7267b962b6419944b2d97fbfa33925f29b09caedea79f5405c2591240" from cache


/: (run (cache (opam-archives (target /Users/mac1000/.opam/download-cache)) (homebrew (target /Users/mac1000/Library/Caches/Homebrew)))
(network host)
(shell "opam install $DEPS"))
[NOTE] Package ocaml-options-vanilla is already installed (current version is 1).
[NOTE] Package ocaml-config is already installed (current version is 3).
[NOTE] Package ocaml-compiler is already installed (current version is 5.4.0).
[NOTE] Package ocaml-base-compiler is already installed (current version is 5.4.0).
[NOTE] Package ocaml is already installed (current version is 5.4.0).
[NOTE] Package base-unix is already installed (current version is base).
[NOTE] Package base-threads is already installed (current version is base).
[NOTE] Package base-nnp is already installed (current version is base).
[NOTE] Package base-effects is already installed (current version is base).
[NOTE] Package base-domains is already installed (current version is base).
[NOTE] Package base-bigarray is already installed (current version is base).
The following actions will be performed:
=== install 22 packages
- install alcotest           1.9.1
- install astring            0.8.5
- install biniou             1.2.2
- install camlp-streams      5.0.1
- install cmdliner           2.1.0
- install conf-python-3      9.0.0
- install dune               3.20.2
- install easy-format        1.3.4
- install fmt                0.11.0
- install menhir             20250912
- install menhirCST          20250912
- install menhirLib          20250912
- install menhirSdk          20250912
- install ocaml-syntax-shims 1.0.0
- install ocamlbuild         0.16.1
- install ocamlfind          1.9.8
- install re                 1.14.0
- install seq                base
- install stdlib-shims       0.3.0
- install topkg              1.1.1
- install uutf               1.0.4
- install yojson             2.2.2


<><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><>
-> retrieved biniou.1.2.2  (cached)
-> retrieved astring.0.8.5  (cached)
-> retrieved camlp-streams.5.0.1  (cached)
-> retrieved alcotest.1.9.1  (cached)
-> retrieved conf-python-3.9.0.0  (https://raw.githubusercontent.com/ocaml/opam-source-archives/main/patches/conf-python-3/test.py)
-> retrieved cmdliner.2.1.0  (cached)
-> retrieved easy-format.1.3.4  (cached)
-> retrieved fmt.0.11.0  (cached)
-> retrieved ocaml-syntax-shims.1.0.0  (cached)
-> retrieved ocamlbuild.0.16.1  (cached)
-> retrieved ocamlfind.1.9.8  (cached)
-> installed conf-python-3.9.0.0
-> retrieved menhir.20250912, menhirCST.20250912, menhirLib.20250912, menhirSdk.20250912  (cached)
-> retrieved seq.base  (cached)
-> installed seq.base
-> retrieved stdlib-shims.0.3.0  (cached)
-> retrieved re.1.14.0  (cached)
-> retrieved uutf.1.0.4  (cached)
-> retrieved topkg.1.1.1  (cached)
-> retrieved yojson.2.2.2  (cached)
-> retrieved dune.3.20.2  (cached)
-> installed cmdliner.2.1.0
-> installed ocamlfind.1.9.8
-> installed ocamlbuild.0.16.1
-> installed topkg.1.1.1
-> installed uutf.1.0.4
-> installed fmt.0.11.0
-> installed astring.0.8.5
-> installed dune.3.20.2
-> installed easy-format.1.3.4
-> installed menhirCST.20250912
-> installed camlp-streams.5.0.1
-> installed stdlib-shims.0.3.0
-> installed menhirLib.20250912
-> installed ocaml-syntax-shims.1.0.0
-> installed menhirSdk.20250912
-> installed biniou.1.2.2
-> installed yojson.2.2.2
-> installed re.1.14.0
-> installed alcotest.1.9.1
-> installed menhir.20250912
Done.
# To update the current shell environment, run: eval $(opam env)
2025-12-09 20:26.52 ---> using "66bb1bf36e69ad4ba7887ed46b13e72999f2c191530215bc03bdf158f292d45c" from cache


/: (copy (src .) (dst ./src))
2025-12-09 20:26.53 ---> saved as "dc4cd3e5c12d577bff2dd714eef1ff19751ca3bfd4858e469141ba41e1b2bf9a"


/: (run (shell "cd ./src && opam exec -- dune build @install @check @runtest && rm -rf _build"))
(cd _build/default && /Users/mac1000/.opam/5.4.0/bin/ocamldep.opt -modules -impl doc/atdgen-tutorial-data/config-file/config_atd.ml) > _build/default/doc/atdgen-tutorial-data/config-file/.config.eobjs/dune__exe__Config_atd.impl.d
File "doc/atdgen-tutorial-data/config-file/config_atd.ml", line 7, characters 18-21:
7 |     <ocaml valid="fun l ->
^^^
Error: Syntax error
(cd _build/default && /Users/mac1000/.opam/5.4.0/bin/ocamlc.opt -w @1..3@5..28@30..39@43@46..47@49..57@61..62-40 -strict-sequence -strict-formats -short-paths -keep-locs -w -27 -safe-string -g -bin-annot -bin-annot-occurrences -I atdj/src/.atdj_main.eobjs/byte -I /Users/mac1000/.opam/5.4.0/lib/re -I atd/src/.atd.objs/byte -no-alias-deps -opaque -open Dune__exe -o atdj/src/.atdj_main.eobjs/byte/dune__exe__Atdj_main.cmo -c -impl atdj/src/atdj_main.ml)
File "_none_", line 1:
Alert ocaml_deprecated_auto_include:
OCaml's lib directory layout changed in 5.0. The unix subdirectory has been
automatically added to the search path, but you should add -I +unix to the
command-line to silence this alert (e.g. by adding unix to the list of
libraries in your dune file, or adding use_unix to your _tags file for
ocamlbuild, or using -package unix for ocamlfind).
File "atdd/test/dlang-tests/dune", lines 17-26, characters 0-141:
17 | (rule
18 |  (alias runtest)
19 |  (package atdd)
20 |  (deps
21 |   (glob_files *.d))
22 |  (action
23 |   (progn
24 |    (bash "ldc2 %{deps} --of test")
25 |    (bash ./test)
26 |   )))
(cd _build/default/atdd/test/dlang-tests && /bin/bash -e -u -o pipefail -c 'ldc2 everything_atd.d test_atdd.d --of test')
/bin/bash: ldc2: command not found
(cd _build/default && /Users/mac1000/.opam/5.4.0/bin/ocamlopt.opt -w @1..3@5..28@30..39@43@46..47@49..57@61..62-40 -strict-sequence -strict-formats -short-paths -keep-locs -w -27 -safe-string -g -I atdj/src/.atdj_main.eobjs/byte -I atdj/src/.atdj_main.eobjs/native -I /Users/mac1000/.opam/5.4.0/lib/re -I atd/src/.atd.objs/byte -I atd/src/.atd.objs/native -cmi-file atdj/src/.atdj_main.eobjs/byte/dune__exe__Atdj_main.cmi -no-alias-deps -opaque -open Dune__exe -o atdj/src/.atdj_main.eobjs/native/dune__exe__Atdj_main.cmx -c -impl atdj/src/atdj_main.ml)
File "_none_", line 1:
Alert ocaml_deprecated_auto_include:
OCaml's lib directory layout changed in 5.0. The unix subdirectory has been
automatically added to the search path, but you should add -I +unix to the
command-line to silence this alert (e.g. by adding unix to the list of
libraries in your dune file, or adding use_unix to your _tags file for
ocamlbuild, or using -package unix for ocamlfind).
(cd _build/default/atd/test && ./unit_tests.exe)
Testing `atd'.
This run has ID `C1NFVUB0'.


[OK]          Annot                0   valid.
[OK]          Annot                1   invalid1.
[OK]          Annot                2   invalid2.
[OK]          Annot                3   invalid3.
[OK]          Annot                4   invalid4.
[OK]          Annot                5   invalid5.
[OK]          Annot                6   invalid6.
[OK]          Annot                7   invalid7.
[OK]          Annot                8   invalid8.
[OK]          Annot                9   invalid9.
[OK]          Sort                 0   sort.
[OK]          Unique_name          0   reserved identifiers.
[OK]          Unique_name          1   reserved prefixes.
[OK]          Unique_name          2   identifier creation.
[OK]          Doc                  0   normalize "".
[OK]          Doc                  1   normalize "a".
[OK]          Doc                  2   normalize "a b".
[OK]          Doc                  3   normalize "a\nb".
[OK]          Doc                  4   normalize "a  b".
[OK]          Doc                  5   normalize "a \n b".
[OK]          Doc                  6   normalize "a \n\n b".
[OK]          Doc                  7   normalize "  a  ".
[OK]          Doc                  8   normalize "\n\na\n\n".
[OK]          Doc                  9   normalize "{{}}".
[OK]          Doc                 10   normalize "{{a}}".
[OK]          Doc                 11   normalize "{{  a  b\n\nc\n }}".
[OK]          Doc                 12   normalize "{{ {a} }}".
[OK]          Doc                 13   normalize "{{{}}}".
[OK]          Doc                 14   normalize "{{{a}}}".
[OK]          Doc                 15   normalize "{{{ }}}".
[OK]          Doc                 16   normalize "{{{ {{a}} }}}".
[OK]          Doc                 17   normalize "{{{ a\n\n  b }}}".


Full test results in `~/src/_build/default/atd/test/_build/_tests/atd'.
Test Successful in 0.013s. 32 tests run.
File "atds/test/dune", lines 13-22, characters 0-177:
13 | (rule
14 |  (alias runtest)
15 |  (package atds)
16 |  (deps
17 |   AtdsTest.scala
18 |   argonaut_2.11-6.2.2.jar
19 |   argonaut_2.12-6.2.2.jar
20 |   junit-4.8.2.jar
21 |   test.scala)
22 |  (action (run ./run_test.sh)))
(cd _build/default/atds/test && ./run_test.sh)
./run_test.sh: line 6: scalac: command not found
(cd _build/default/atdts/src/test && ./Main.exe)
Testing `atdts'.
This run has ID `7K38AUMK'.


Full test results in `~/src/_build/default/atdts/src/test/_build/_tests/atdts'.
Test Successful in 0.000s. 0 test run.
File "atdcat/test/dune", lines 57-87, characters 0-907:
57 | (rule
58 |  (alias runtest)
59 |  (deps
....
85 |    )
86 |  )
87 | )
(cd _build/default/atdcat/test && /usr/bin/python3 -m jsonschema schema.json -i data.json)
/Library/Developer/CommandLineTools/usr/bin/python3: No module named jsonschema
(cd _build/default/atdpy/src/test && ./Main.exe)
Testing `atdpy'.
This run has ID `XEOPWZZV'.


Full test results in `~/src/_build/default/atdpy/src/test/_build/_tests/atdpy'.
Test Successful in 0.000s. 0 test run.
File "atdpy/test/python-tests/dune", lines 19-29, characters 0-198:
19 | (rule
20 |  (alias runtest)
21 |  (package atdpy)
22 |  (deps
23 |   everything.py
24 |   (glob_files *.py))
25 |  (action
26 |   (progn
27 |    (run python3 -m flake8 .)
28 |    (run python3 -m mypy --strict .)
29 |    (run python3 -m pytest .))))
(cd _build/default/atdpy/test/python-tests && /usr/bin/python3 -m flake8 .)
/Library/Developer/CommandLineTools/usr/bin/python3: No module named flake8
File "atdj/test/dune", lines 53-61, characters 0-160:
53 | (rule
54 |  (alias runtest)
55 |  (package atdj)
56 |  (deps
57 |   AtdjTest.java
58 |   json.jar
59 |   junit-4.8.2.jar
60 |   (glob_files com/mylife/test/*.java))
61 |  (action (run ./run_test.sh)))
(cd _build/default/atdj/test && ./run_test.sh)
The operation couldn’t be completed. Unable to locate a Java Runtime.
Please visit http://www.java.com for information on installing Java.


The operation couldn’t be completed. Unable to locate a Java Runtime.
Please visit http://www.java.com for information on installing Java.


The operation couldn’t be completed. Unable to locate a Java Runtime.
Please visit http://www.java.com for information on installing Java.


The operation couldn’t be completed. Unable to locate a Java Runtime.
Please visit http://www.java.com for information on installing Java.


File "atdgen/test/test2j.expected.ml", line 1, characters 0-0:
/usr/bin/git --no-pager diff --no-index --color=always -u _build/default/atdgen/test/test2j.expected.ml _build/default/atdgen/test/test2j.ml
diff --git a/_build/default/atdgen/test/test2j.expected.ml b/_build/default/atdgen/test/test2j.ml
index cea20a4..1f613c7 100644
--- a/_build/default/atdgen/test/test2j.expected.ml
+++ b/_build/default/atdgen/test/test2j.ml
@@ -52,25 +52,7 @@ let string_of__string_option ?(len = 1024) x =
let read__string_option = (
fun p lb ->
Yojson.Safe.read_space p lb;
-    match Yojson.Safe.start_any_variant p lb with
-      | `Edgy_bracket -> (
-          match Yojson.Safe.read_ident p lb with
-            | "None" ->
-              Yojson.Safe.read_space p lb;
-              Yojson.Safe.read_gt p lb;
-              (None : _ option)
-            | "Some" ->
-              Atdgen_runtime.Oj_run.read_until_field_value p lb;
-              let x = (
-                  Atdgen_runtime.Oj_run.read_string
-                ) p lb
-              in
-              Yojson.Safe.read_space p lb;
-              Yojson.Safe.read_gt p lb;
-              (Some x : _ option)
-            | x ->
-              Atdgen_runtime.Oj_run.invalid_variant_tag p x
-        )
+    match Atdgen_runtime.Yojson_extra.start_any_variant p lb with
| `Double_quote -> (
match Yojson.Safe.finish_string p lb with
| "None" ->
File "atdgen/test/test3j_j.expected.ml", line 1, characters 0-0:
/usr/bin/git --no-pager diff --no-index --color=always -u _build/default/atdgen/test/test3j_j.expected.ml _build/default/atdgen/test/test3j_j.ml
diff --git a/_build/default/atdgen/test/test3j_j.expected.ml b/_build/default/atdgen/test/test3j_j.ml
index 5d74e97..77be75a 100644
--- a/_build/default/atdgen/test/test3j_j.expected.ml
+++ b/_build/default/atdgen/test/test3j_j.ml
@@ -261,80 +261,7 @@ let string_of_tf_variant2 ?(len = 1024) x =
let read_tf_variant2 = (
fun p lb ->
Yojson.Safe.read_space p lb;
-    match Yojson.Safe.start_any_variant p lb with
-      | `Edgy_bracket -> (
-          match Yojson.Safe.read_ident p lb with
-            | "a" ->
-              Atdgen_runtime.Oj_run.read_until_field_value p lb;
-              let x = (
-                  Atdgen_runtime.Oj_run.read_int
-                ) p lb
-              in
-              Yojson.Safe.read_space p lb;
-              Yojson.Safe.read_gt p lb;
-              `A x
-            | "b" ->
-              Atdgen_runtime.Oj_run.read_until_field_value p lb;
-              let x = (
-                  Atdgen_runtime.Oj_run.read_int
-                ) p lb
-              in
-              Yojson.Safe.read_space p lb;
-              Yojson.Safe.read_gt p lb;
-              `B x
-            | "Unknown" ->
-              Atdgen_runtime.Oj_run.read_until_field_value p lb;
-              let x = (
-                  fun p lb ->
-                    Yojson.Safe.read_space p lb;
-                    let std_tuple = Yojson.Safe.start_any_tuple p lb in
-                    let len = ref 0 in
-                    let end_of_tuple = ref false in
-                    (try
-                      let x0 =
-                        let x =
-                          (
-                            Atdgen_runtime.Oj_run.read_string
-                          ) p lb
-                        in
-                        incr len;
-                        Yojson.Safe.read_space p lb;
-                        Yojson.Safe.read_tuple_sep2 p std_tuple lb;
-                        x
-                      in
-                      let x1 =
-                        let x =
-                          (
-                            read__json_nullable
-                          ) p lb
-                        in
-                        incr len;
-                        (try
-                          Yojson.Safe.read_space p lb;
-                          Yojson.Safe.read_tuple_sep2 p std_tuple lb;
-                        with Yojson.End_of_tuple -> end_of_tuple := true);
-                        x
-                      in
-                      if not !end_of_tuple then (
-                        try
-                          while true do
-                            Yojson.Safe.skip_json p lb;
-                            Yojson.Safe.read_space p lb;
-                            Yojson.Safe.read_tuple_sep2 p std_tuple lb;
-                          done
-                        with Yojson.End_of_tuple -> ()
-                      );
-                      (x0, x1)
-                    with Yojson.End_of_tuple ->
-                      Atdgen_runtime.Oj_run.missing_tuple_fields p !len [ 0; 1 ]);
-                ) p lb
-              in
-              Yojson.Safe.read_space p lb;
-              Yojson.Safe.read_gt p lb;
-              `Unknown x
-            | x ->
-              Atdgen_runtime.Oj_run.invalid_variant_tag p x
-        )
+    match Atdgen_runtime.Yojson_extra.start_any_variant p lb with
| `Double_quote -> (
match Yojson.Safe.finish_string p lb with
| x ->
@@ -445,30 +372,7 @@ let string_of_tf_variant ?(len = 1024) x =
let read_tf_variant = (
fun p lb ->
Yojson.Safe.read_space p lb;
-    match Yojson.Safe.start_any_variant p lb with
-      | `Edgy_bracket -> (
-          match Yojson.Safe.read_ident p lb with
-            | "a" ->
-              Atdgen_runtime.Oj_run.read_until_field_value p lb;
-              let x = (
-                  Atdgen_runtime.Oj_run.read_int
-                ) p lb
-              in
-              Yojson.Safe.read_space p lb;
-              Yojson.Safe.read_gt p lb;
-              `A x
-            | "b" ->
-              Atdgen_runtime.Oj_run.read_until_field_value p lb;
-              let x = (
-                  Atdgen_runtime.Oj_run.read_int
-                ) p lb
-              in
-              Yojson.Safe.read_space p lb;
-              Yojson.Safe.read_gt p lb;
-              `B x
-            | x ->
-              Atdgen_runtime.Oj_run.invalid_variant_tag p x
-        )
+    match Atdgen_runtime.Yojson_extra.start_any_variant p lb with
| `Double_quote -> (
match Yojson.Safe.finish_string p lb with
| x ->
@@ -1064,30 +968,7 @@ let read_sf_adapted = (
Atdgen_runtime.Oj_run.read_with_adapter Atdgen_runtime.Json_adapter.One_field.normalize (
fun p lb ->
Yojson.Safe.read_space p lb;
-      match Yojson.Safe.start_any_variant p lb with
-        | `Edgy_bracket -> (
-            match Yojson.Safe.read_ident p lb with
-              | "a" ->
-                Atdgen_runtime.Oj_run.read_until_field_value p lb;
-                let x = (
-                    Atdgen_runtime.Oj_run.read_bool
-                  ) p lb
-                in
-                Yojson.Safe.read_space p lb;
-                Yojson.Safe.read_gt p lb;
-                `A x
-              | "b" ->
-                Atdgen_runtime.Oj_run.read_until_field_value p lb;
-                let x = (
-                    Atdgen_runtime.Oj_run.read_int
-                  ) p lb
-                in
-                Yojson.Safe.read_space p lb;
-                Yojson.Safe.read_gt p lb;
-                `B x
-              | x ->
-                Atdgen_runtime.Oj_run.invalid_variant_tag p x
-          )
+      match Atdgen_runtime.Yojson_extra.start_any_variant p lb with
| `Double_quote -> (
match Yojson.Safe.finish_string p lb with
| x ->
@@ -1140,20 +1021,7 @@ let string_of_sample_open_enum ?(len = 1024) x =
let read_sample_open_enum = (
fun p lb ->
Yojson.Safe.read_space p lb;
-    match Yojson.Safe.start_any_variant p lb with
-      | `Edgy_bracket -> (
-          match Yojson.Safe.read_ident p lb with
-            | "Alpha" ->
-              Yojson.Safe.read_space p lb;
-              Yojson.Safe.read_gt p lb;
-              `Alpha
-            | "Beta" ->
-              Yojson.Safe.read_space p lb;
-              Yojson.Safe.read_gt p lb;
-              `Beta
-            | x ->
-              `Other x
-        )
+    match Atdgen_runtime.Yojson_extra.start_any_variant p lb with
| `Double_quote -> (
match Yojson.Safe.finish_string p lb with
| "Alpha" ->
@@ -1230,25 +1098,7 @@ let string_of__int_nullable_option ?(len = 1024) x =
let read__int_nullable_option = (
fun p lb ->
Yojson.Safe.read_space p lb;
-    match Yojson.Safe.start_any_variant p lb with
-      | `Edgy_bracket -> (
-          match Yojson.Safe.read_ident p lb with
-            | "None" ->
-              Yojson.Safe.read_space p lb;
-              Yojson.Safe.read_gt p lb;
-              (None : _ option)
-            | "Some" ->
-              Atdgen_runtime.Oj_run.read_until_field_value p lb;
-              let x = (
-                  read__int_nullable
-                ) p lb
-              in
-              Yojson.Safe.read_space p lb;
-              Yojson.Safe.read_gt p lb;
-              (Some x : _ option)
-            | x ->
-              Atdgen_runtime.Oj_run.invalid_variant_tag p x
-        )
+    match Atdgen_runtime.Yojson_extra.start_any_variant p lb with
| `Double_quote -> (
match Yojson.Safe.finish_string p lb with
| "None" ->
@@ -1734,30 +1584,7 @@ let read_adapted_f = (
Atdgen_runtime.Oj_run.read_with_adapter (Atdgen_runtime.Json_adapter.normalize_type_field "type") (
fun p lb ->
Yojson.Safe.read_space p lb;
-      match Yojson.Safe.start_any_variant p lb with
-        | `Edgy_bracket -> (
-            match Yojson.Safe.read_ident p lb with
-              | "fa" ->
-                Atdgen_runtime.Oj_run.read_until_field_value p lb;
-                let x = (
-                    read_a
-                  ) p lb
-                in
-                Yojson.Safe.read_space p lb;
-                Yojson.Safe.read_gt p lb;
-                `FA x
-              | "fb" ->
-                Atdgen_runtime.Oj_run.read_until_field_value p lb;
-                let x = (
-                    read_b
-                  ) p lb
-                in
-                Yojson.Safe.read_space p lb;
-                Yojson.Safe.read_gt p lb;
-                `FB x
-              | x ->
-                Atdgen_runtime.Oj_run.invalid_variant_tag p x
-          )
+      match Atdgen_runtime.Yojson_extra.start_any_variant p lb with
| `Double_quote -> (
match Yojson.Safe.finish_string p lb with
| x ->
@@ -1820,30 +1647,7 @@ let read_adapted = (
Atdgen_runtime.Oj_run.read_with_adapter Atdgen_runtime.Json_adapter.Type_field.normalize (
fun p lb ->
Yojson.Safe.read_space p lb;
-      match Yojson.Safe.start_any_variant p lb with
-        | `Edgy_bracket -> (
-            match Yojson.Safe.read_ident p lb with
-              | "a" ->
-                Atdgen_runtime.Oj_run.read_until_field_value p lb;
-                let x = (
-                    read_a
-                  ) p lb
-                in
-                Yojson.Safe.read_space p lb;
-                Yojson.Safe.read_gt p lb;
-                `A x
-              | "b" ->
-                Atdgen_runtime.Oj_run.read_until_field_value p lb;
-                let x = (
-                    read_b
-                  ) p lb
-                in
-                Yojson.Safe.read_space p lb;
-                Yojson.Safe.read_gt p lb;
-                `B x
-              | x ->
-                Atdgen_runtime.Oj_run.invalid_variant_tag p x
-          )
+      match Atdgen_runtime.Yojson_extra.start_any_variant p lb with
| `Double_quote -> (
match Yojson.Safe.finish_string p lb with
| x ->
File "atdgen/test/test_ambiguous_variant_j.expected.ml", line 1, characters 0-0:
/usr/bin/git --no-pager diff --no-index --color=always -u _build/default/atdgen/test/test_ambiguous_variant_j.expected.ml _build/default/atdgen/test/test_ambiguous_variant_j.ml
diff --git a/_build/default/atdgen/test/test_ambiguous_variant_j.expected.ml b/_build/default/atdgen/test/test_ambiguous_variant_j.ml
index e5432e3..ed1a763 100644
--- a/_build/default/atdgen/test/test_ambiguous_variant_j.expected.ml
+++ b/_build/default/atdgen/test/test_ambiguous_variant_j.ml
@@ -37,30 +37,7 @@ let read_ambiguous' = (
Atdgen_runtime.Oj_run.read_with_adapter Json_adapters.Identity.normalize (
fun p lb ->
Yojson.Safe.read_space p lb;
-      match Yojson.Safe.start_any_variant p lb with
-        | `Edgy_bracket -> (
-            match Yojson.Safe.read_ident p lb with
-              | "Int" ->
-                Atdgen_runtime.Oj_run.read_until_field_value p lb;
-                let x = (
-                    Atdgen_runtime.Oj_run.read_int
-                  ) p lb
-                in
-                Yojson.Safe.read_space p lb;
-                Yojson.Safe.read_gt p lb;
-                (Int x : ambiguous')
-              | "String" ->
-                Atdgen_runtime.Oj_run.read_until_field_value p lb;
-                let x = (
-                    Atdgen_runtime.Oj_run.read_string
-                  ) p lb
-                in
-                Yojson.Safe.read_space p lb;
-                Yojson.Safe.read_gt p lb;
-                (String x : ambiguous')
-              | x ->
-                Atdgen_runtime.Oj_run.invalid_variant_tag p x
-          )
+      match Atdgen_runtime.Yojson_extra.start_any_variant p lb with
| `Double_quote -> (
match Yojson.Safe.finish_string p lb with
| x ->
@@ -123,30 +100,7 @@ let read_ambiguous = (
Atdgen_runtime.Oj_run.read_with_adapter Json_adapters.Identity.normalize (
fun p lb ->
Yojson.Safe.read_space p lb;
-      match Yojson.Safe.start_any_variant p lb with
-        | `Edgy_bracket -> (
-            match Yojson.Safe.read_ident p lb with
-              | "Int" ->
-                Atdgen_runtime.Oj_run.read_until_field_value p lb;
-                let x = (
-                    Atdgen_runtime.Oj_run.read_int
-                  ) p lb
-                in
-                Yojson.Safe.read_space p lb;
-                Yojson.Safe.read_gt p lb;
-                (Int x : ambiguous)
-              | "String" ->
-                Atdgen_runtime.Oj_run.read_until_field_value p lb;
-                let x = (
-                    Atdgen_runtime.Oj_run.read_string
-                  ) p lb
-                in
-                Yojson.Safe.read_space p lb;
-                Yojson.Safe.read_gt p lb;
-                (String x : ambiguous)
-              | x ->
-                Atdgen_runtime.Oj_run.invalid_variant_tag p x
-          )
+      match Atdgen_runtime.Yojson_extra.start_any_variant p lb with
| `Double_quote -> (
match Yojson.Safe.finish_string p lb with
| x ->
File "atdgen/test/test_classic_inline_record_j.expected.ml", line 1, characters 0-0:
/usr/bin/git --no-pager diff --no-index --color=always -u _build/default/atdgen/test/test_classic_inline_record_j.expected.ml _build/default/atdgen/test/test_classic_inline_record_j.ml
diff --git a/_build/default/atdgen/test/test_classic_inline_record_j.expected.ml b/_build/default/atdgen/test/test_classic_inline_record_j.ml
index 81f9ccf..ad134fc 100644
--- a/_build/default/atdgen/test/test_classic_inline_record_j.expected.ml
+++ b/_build/default/atdgen/test/test_classic_inline_record_j.ml
@@ -40,129 +40,7 @@ let string_of_foo ?(len = 1024) x =
let read_foo = (
fun p lb ->
Yojson.Safe.read_space p lb;
-    match Yojson.Safe.start_any_variant p lb with
-      | `Edgy_bracket -> (
-          match Yojson.Safe.read_ident p lb with
-            | "Foo" ->
-              Atdgen_runtime.Oj_run.read_until_field_value p lb;
-              let x = (
-                Yojson.Safe.read_space p lb;
-                Yojson.Safe.read_lcurl p lb;
-                let field_x = ref (None) in
-                let field_y = ref (None) in
-                try
-                  Yojson.Safe.read_space p lb;
-                  Yojson.Safe.read_object_end lb;
-                  Yojson.Safe.read_space p lb;
-                  let f =
-                    fun s pos len ->
-                      if pos < 0 || len < 0 || pos + len > String.length s then
-                        invalid_arg (Printf.sprintf "out-of-bounds substring position or length: string = %S, requested position = %i, requested length = %i" s pos len);
-                      if len = 1 then (
-                        match String.unsafe_get s pos with
-                          | 'x' -> (
-                              0
-                            )
-                          | 'y' -> (
-                              1
-                            )
-                          | _ -> (
-                              -1
-                            )
-                      )
-                      else (
-                        -1
-                      )
-                  in
-                  let i = Yojson.Safe.map_ident p f lb in
-                  Atdgen_runtime.Oj_run.read_until_field_value p lb;
-                  (
-                    match i with
-                      | 0 ->
-                        field_x := (
-                          Some (
-                            (
-                              Atdgen_runtime.Oj_run.read_int
-                            ) p lb
-                          )
-                        );
-                      | 1 ->
-                        field_y := (
-                          Some (
-                            (
-                              Atdgen_runtime.Oj_run.read_number
-                            ) p lb
-                          )
-                        );
-                      | _ -> (
-                          Yojson.Safe.skip_json p lb
-                        )
-                  );
-                  while true do
-                    Yojson.Safe.read_space p lb;
-                    Yojson.Safe.read_object_sep p lb;
-                    Yojson.Safe.read_space p lb;
-                    let f =
-                      fun s pos len ->
-                        if pos < 0 || len < 0 || pos + len > String.length s then
-                          invalid_arg (Printf.sprintf "out-of-bounds substring position or length: string = %S, requested position = %i, requested length = %i" s pos len);
-                        if len = 1 then (
-                          match String.unsafe_get s pos with
-                            | 'x' -> (
-                                0
-                              )
-                            | 'y' -> (
-                                1
-                              )
-                            | _ -> (
-                                -1
-                              )
-                        )
-                        else (
-                          -1
-                        )
-                    in
-                    let i = Yojson.Safe.map_ident p f lb in
-                    Atdgen_runtime.Oj_run.read_until_field_value p lb;
-                    (
-                      match i with
-                        | 0 ->
-                          field_x := (
-                            Some (
-                              (
-                                Atdgen_runtime.Oj_run.read_int
-                              ) p lb
-                            )
-                          );
-                        | 1 ->
-                          field_y := (
-                            Some (
-                              (
-                                Atdgen_runtime.Oj_run.read_number
-                              ) p lb
-                            )
-                          );
-                        | _ -> (
-                            Yojson.Safe.skip_json p lb
-                          )
-                    );
-                  done;
-                  assert false;
-                with Yojson.End_of_object -> (
-                    (Foo
-                      {
-                        x = (match !field_x with Some x -> x | None -> Atdgen_runtime.Oj_run.missing_field p "x");
-                        y = (match !field_y with Some x -> x | None -> Atdgen_runtime.Oj_run.missing_field p "y");
-                      }
-                     : foo)
-                  )
-              ) in
-              Yojson.Safe.read_space p lb;
-              Yojson.Safe.read_gt p lb;
-              x
-            | x ->
-              Atdgen_runtime.Oj_run.invalid_variant_tag p x
-        )
+    match Atdgen_runtime.Yojson_extra.start_any_variant p lb with
| `Double_quote -> (
match Yojson.Safe.finish_string p lb with
| x ->
File "atdgen/test/testjstd_j.expected.ml", line 1, characters 0-0:
/usr/bin/git --no-pager diff --no-index --color=always -u _build/default/atdgen/test/testjstd_j.expected.ml _build/default/atdgen/test/testjstd_j.ml
diff --git a/_build/default/atdgen/test/testjstd_j.expected.ml b/_build/default/atdgen/test/testjstd_j.ml
index 21a5fc4..9c3659d 100644
--- a/_build/default/atdgen/test/testjstd_j.expected.ml
+++ b/_build/default/atdgen/test/testjstd_j.ml
@@ -197,34 +197,7 @@ and string_of_p' write__a ?(len = 1024) x =
let rec read_p' read__a = (
fun p lb ->
Yojson.Safe.read_space p lb;
-    match Yojson.Safe.start_any_variant p lb with
-      | `Edgy_bracket -> (
-          match Yojson.Safe.read_ident p lb with
-            | "A" ->
-              Yojson.Safe.read_space p lb;
-              Yojson.Safe.read_gt p lb;
-              (A : 'a p')
-            | "Bb" ->
-              Atdgen_runtime.Oj_run.read_until_field_value p lb;
-              let x = (
-                  read_p' read__a
-                ) p lb
-              in
-              Yojson.Safe.read_space p lb;
-              Yojson.Safe.read_gt p lb;
-              (Bb x : 'a p')
-            | "Ccccc" ->
-              Atdgen_runtime.Oj_run.read_until_field_value p lb;
-              let x = (
-                  read__a
-                ) p lb
-              in
-              Yojson.Safe.read_space p lb;
-              Yojson.Safe.read_gt p lb;
-              (Ccccc x : 'a p')
-            | x ->
-              Atdgen_runtime.Oj_run.invalid_variant_tag p x
-        )
+    match Atdgen_runtime.Yojson_extra.start_any_variant p lb with
| `Double_quote -> (
match Yojson.Safe.finish_string p lb with
| "A" ->
@@ -318,29 +291,7 @@ and string_of_r ?(len = 1024) x =
let rec read_p = (
fun p lb ->
Yojson.Safe.read_space p lb;
-    match Yojson.Safe.start_any_variant p lb with
-      | `Edgy_bracket -> (
-          match Yojson.Safe.read_ident p lb with
-            | "A" ->
-              Yojson.Safe.read_space p lb;
-              Yojson.Safe.read_gt p lb;
-              `A
-            | "B" ->
-              Atdgen_runtime.Oj_run.read_until_field_value p lb;
-              let x = (
-                  read_r
-                ) p lb
-              in
-              Yojson.Safe.read_space p lb;
-              Yojson.Safe.read_gt p lb;
-              `B x
-            | "C" ->
-              Yojson.Safe.read_space p lb;
-              Yojson.Safe.read_gt p lb;
-              `C
-            | x ->
-              Atdgen_runtime.Oj_run.invalid_variant_tag p x
-        )
+    match Atdgen_runtime.Yojson_extra.start_any_variant p lb with
| `Double_quote -> (
match Yojson.Safe.finish_string p lb with
| "A" ->
@@ -554,43 +505,7 @@ and _test_variant_list_of_string s =
and read_test_variant = (
fun p lb ->
Yojson.Safe.read_space p lb;
-    match Yojson.Safe.start_any_variant p lb with
-      | `Edgy_bracket -> (
-          match Yojson.Safe.read_ident p lb with
-            | "Case1" ->
-              Yojson.Safe.read_space p lb;
-              Yojson.Safe.read_gt p lb;
-              `Case1
-            | "Case2" ->
-              Atdgen_runtime.Oj_run.read_until_field_value p lb;
-              let x = (
-                  Atdgen_runtime.Oj_run.read_int
-                ) p lb
-              in
-              Yojson.Safe.read_space p lb;
-              Yojson.Safe.read_gt p lb;
-              `Case2 x
-            | "Case3" ->
-              Atdgen_runtime.Oj_run.read_until_field_value p lb;
-              let x = (
-                  Atdgen_runtime.Oj_run.read_string
-                ) p lb
-              in
-              Yojson.Safe.read_space p lb;
-              Yojson.Safe.read_gt p lb;
-              `Case3 x
-            | "Case4" ->
-              Atdgen_runtime.Oj_run.read_until_field_value p lb;
-              let x = (
-                  read__test_variant_list
-                ) p lb
-              in
-              Yojson.Safe.read_space p lb;
-              Yojson.Safe.read_gt p lb;
-              `Case4 x
-            | x ->
-              Atdgen_runtime.Oj_run.invalid_variant_tag p x
-        )
+    match Atdgen_runtime.Yojson_extra.start_any_variant p lb with
| `Double_quote -> (
match Yojson.Safe.finish_string p lb with
| "Case1" ->
@@ -663,34 +578,7 @@ and string_of__int_p ?(len = 1024) x =
let rec read__int_p = (
fun p lb ->
Yojson.Safe.read_space p lb;
-    match Yojson.Safe.start_any_variant p lb with
-      | `Edgy_bracket -> (
-          match Yojson.Safe.read_ident p lb with
-            | "A" ->
-              Yojson.Safe.read_space p lb;
-              Yojson.Safe.read_gt p lb;
-              (A : _ p')
-            | "Bb" ->
-              Atdgen_runtime.Oj_run.read_until_field_value p lb;
-              let x = (
-                  read__int_p
-                ) p lb
-              in
-              Yojson.Safe.read_space p lb;
-              Yojson.Safe.read_gt p lb;
-              (Bb x : _ p')
-            | "Ccccc" ->
-              Atdgen_runtime.Oj_run.read_until_field_value p lb;
-              let x = (
-                  Atdgen_runtime.Oj_run.read_int
-                ) p lb
-              in
-              Yojson.Safe.read_space p lb;
-              Yojson.Safe.read_gt p lb;
-              (Ccccc x : _ p')
-            | x ->
-              Atdgen_runtime.Oj_run.invalid_variant_tag p x
-        )
+    match Atdgen_runtime.Yojson_extra.start_any_variant p lb with
| `Double_quote -> (
match Yojson.Safe.finish_string p lb with
| "A" ->
@@ -768,25 +656,7 @@ and string_of_poly write__x write__y ?(len = 1024) x =
let rec read__a_b_poly_option read__a read__b = (
fun p lb ->
Yojson.Safe.read_space p lb;
-    match Yojson.Safe.start_any_variant p lb with
-      | `Edgy_bracket -> (
-          match Yojson.Safe.read_ident p lb with
-            | "None" ->
-              Yojson.Safe.read_space p lb;
-              Yojson.Safe.read_gt p lb;
-              (None : _ option)
-            | "Some" ->
-              Atdgen_runtime.Oj_run.read_until_field_value p lb;
-              let x = (
-                  read_poly read__a read__b
-                ) p lb
-              in
-              Yojson.Safe.read_space p lb;
-              Yojson.Safe.read_gt p lb;
-              (Some x : _ option)
-            | x ->
-              Atdgen_runtime.Oj_run.invalid_variant_tag p x
-        )
+    match Atdgen_runtime.Yojson_extra.start_any_variant p lb with
| `Double_quote -> (
match Yojson.Safe.finish_string p lb with
| "None" ->
@@ -1098,25 +968,7 @@ let string_of__val1_option ?(len = 1024) x =
let read__val1_option = (
fun p lb ->
Yojson.Safe.read_space p lb;
-    match Yojson.Safe.start_any_variant p lb with
-      | `Edgy_bracket -> (
-          match Yojson.Safe.read_ident p lb with
-            | "None" ->
-              Yojson.Safe.read_space p lb;
-              Yojson.Safe.read_gt p lb;
-              (None : _ option)
-            | "Some" ->
-              Atdgen_runtime.Oj_run.read_until_field_value p lb;
-              let x = (
-                  read_val1
-                ) p lb
-              in
-              Yojson.Safe.read_space p lb;
-              Yojson.Safe.read_gt p lb;
-              (Some x : _ option)
-            | x ->
-              Atdgen_runtime.Oj_run.invalid_variant_tag p x
-        )
+    match Atdgen_runtime.Yojson_extra.start_any_variant p lb with
| `Double_quote -> (
match Yojson.Safe.finish_string p lb with
| "None" ->
@@ -1482,25 +1334,7 @@ let string_of__string_option ?(len = 1024) x =
let read__string_option = (
fun p lb ->
Yojson.Safe.read_space p lb;
-    match Yojson.Safe.start_any_variant p lb with
-      | `Edgy_bracket -> (
-          match Yojson.Safe.read_ident p lb with
-            | "None" ->
-              Yojson.Safe.read_space p lb;
-              Yojson.Safe.read_gt p lb;
-              (None : _ option)
-            | "Some" ->
-              Atdgen_runtime.Oj_run.read_until_field_value p lb;
-              let x = (
-                  Atdgen_runtime.Oj_run.read_string
-                ) p lb
-              in
-              Yojson.Safe.read_space p lb;
-              Yojson.Safe.read_gt p lb;
-              (Some x : _ option)
-            | x ->
-              Atdgen_runtime.Oj_run.invalid_variant_tag p x
-        )
+    match Atdgen_runtime.Yojson_extra.start_any_variant p lb with
| `Double_quote -> (
match Yojson.Safe.finish_string p lb with
| "None" ->
@@ -1555,25 +1389,7 @@ let string_of__int_option ?(len = 1024) x =
let read__int_option = (
fun p lb ->
Yojson.Safe.read_space p lb;
-    match Yojson.Safe.start_any_variant p lb with
-      | `Edgy_bracket -> (
-          match Yojson.Safe.read_ident p lb with
-            | "None" ->
-              Yojson.Safe.read_space p lb;
-              Yojson.Safe.read_gt p lb;
-              (None : _ option)
-            | "Some" ->
-              Atdgen_runtime.Oj_run.read_until_field_value p lb;
-              let x = (
-                  Atdgen_runtime.Oj_run.read_int
-                ) p lb
-              in
-              Yojson.Safe.read_space p lb;
-              Yojson.Safe.read_gt p lb;
-              (Some x : _ option)
-            | x ->
-              Atdgen_runtime.Oj_run.invalid_variant_tag p x
-        )
+    match Atdgen_runtime.Yojson_extra.start_any_variant p lb with
| `Double_quote -> (
match Yojson.Safe.finish_string p lb with
| "None" ->
@@ -1612,25 +1428,7 @@ let string_of__float_option ?(len = 1024) x =
let read__float_option = (
fun p lb ->
Yojson.Safe.read_space p lb;
-    match Yojson.Safe.start_any_variant p lb with
-      | `Edgy_bracket -> (
-          match Yojson.Safe.read_ident p lb with
-            | "None" ->
-              Yojson.Safe.read_space p lb;
-              Yojson.Safe.read_gt p lb;
-              (None : _ option)
-            | "Some" ->
-              Atdgen_runtime.Oj_run.read_until_field_value p lb;
-              let x = (
-                  Atdgen_runtime.Oj_run.read_number
-                ) p lb
-              in
-              Yojson.Safe.read_space p lb;
-              Yojson.Safe.read_gt p lb;
-              (Some x : _ option)
-            | x ->
-              Atdgen_runtime.Oj_run.invalid_variant_tag p x
-        )
+    match Atdgen_runtime.Yojson_extra.start_any_variant p lb with
| `Double_quote -> (
match Yojson.Safe.finish_string p lb with
| "None" ->
@@ -1669,25 +1467,7 @@ let string_of__bool_option ?(len = 1024) x =
let read__bool_option = (
fun p lb ->
Yojson.Safe.read_space p lb;
-    match Yojson.Safe.start_any_variant p lb with
-      | `Edgy_bracket -> (
-          match Yojson.Safe.read_ident p lb with
-            | "None" ->
-              Yojson.Safe.read_space p lb;
-              Yojson.Safe.read_gt p lb;
-              (None : _ option)
-            | "Some" ->
-              Atdgen_runtime.Oj_run.read_until_field_value p lb;
-              let x = (
-                  Atdgen_runtime.Oj_run.read_bool
-                ) p lb
-              in
-              Yojson.Safe.read_space p lb;
-              Yojson.Safe.read_gt p lb;
-              (Some x : _ option)
-            | x ->
-              Atdgen_runtime.Oj_run.invalid_variant_tag p x
-        )
+    match Atdgen_runtime.Yojson_extra.start_any_variant p lb with
| `Double_quote -> (
match Yojson.Safe.finish_string p lb with
| "None" ->
@@ -3628,25 +3408,7 @@ let string_of__x_bee1b88 ?(len = 1024) x =
let read__x_bee1b88 = (
fun p lb ->
Yojson.Safe.read_space p lb;
-    match Yojson.Safe.start_any_variant p lb with
-      | `Edgy_bracket -> (
-          match Yojson.Safe.read_ident p lb with
-            | "None" ->
-              Yojson.Safe.read_space p lb;
-              Yojson.Safe.read_gt p lb;
-              (None : _ option)
-            | "Some" ->
-              Atdgen_runtime.Oj_run.read_until_field_value p lb;
-              let x = (
-                  Atdgen_runtime.Oj_run.read_int
-                ) p lb
-              in
-              Yojson.Safe.read_space p lb;
-              Yojson.Safe.read_gt p lb;
-              (Some x : _ option)
-            | x ->
-              Atdgen_runtime.Oj_run.invalid_variant_tag p x
-        )
+    match Atdgen_runtime.Yojson_extra.start_any_variant p lb with
| `Double_quote -> (
match Yojson.Safe.finish_string p lb with
| "None" ->
@@ -3933,25 +3695,7 @@ let string_of_hello ?(len = 1024) x =
let read_hello = (
fun p lb ->
Yojson.Safe.read_space p lb;
-    match Yojson.Safe.start_any_variant p lb with
-      | `Edgy_bracket -> (
-          match Yojson.Safe.read_ident p lb with
-            | "Hello" ->
-              Atdgen_runtime.Oj_run.read_until_field_value p lb;
-              let x = (
-                  Atdgen_runtime.Oj_run.read_string
-                ) p lb
-              in
-              Yojson.Safe.read_space p lb;
-              Yojson.Safe.read_gt p lb;
-              `Hello x
-            | "World" ->
-              Yojson.Safe.read_space p lb;
-              Yojson.Safe.read_gt p lb;
-              `World
-            | x ->
-              Atdgen_runtime.Oj_run.invalid_variant_tag p x
-        )
+    match Atdgen_runtime.Yojson_extra.start_any_variant p lb with
| `Double_quote -> (
match Yojson.Safe.finish_string p lb with
| "World" ->
File "atdgen/test/melange/melangespec_j.expected.ml", line 1, characters 0-0:
/usr/bin/git --no-pager diff --no-index --color=always -u _build/default/atdgen/test/melange/melangespec_j.expected.ml _build/default/atdgen/test/melange/melangespec_j.ml
diff --git a/_build/default/atdgen/test/melange/melangespec_j.expected.ml b/_build/default/atdgen/test/melange/melangespec_j.ml
index 5cba12b..c2ed7f4 100644
--- a/_build/default/atdgen/test/melange/melangespec_j.expected.ml
+++ b/_build/default/atdgen/test/melange/melangespec_j.ml
@@ -392,20 +392,7 @@ let string_of_with_open_enum ?(len = 1024) x =
let read_with_open_enum = (
fun p lb ->
Yojson.Safe.read_space p lb;
-    match Yojson.Safe.start_any_variant p lb with
-      | `Edgy_bracket -> (
-          match Yojson.Safe.read_ident p lb with
-            | "Alpha" ->
-              Yojson.Safe.read_space p lb;
-              Yojson.Safe.read_gt p lb;
-              `Alpha
-            | "Beta" ->
-              Yojson.Safe.read_space p lb;
-              Yojson.Safe.read_gt p lb;
-              `Beta
-            | x ->
-              `Other x
-        )
+    match Atdgen_runtime.Yojson_extra.start_any_variant p lb with
| `Double_quote -> (
match Yojson.Safe.finish_string p lb with
| "Alpha" ->
@@ -467,20 +454,7 @@ let string_of_variant3 ?(len = 1024) x =
let read_variant3 = (
fun p lb ->
Yojson.Safe.read_space p lb;
-    match Yojson.Safe.start_any_variant p lb with
-      | `Edgy_bracket -> (
-          match Yojson.Safe.read_ident p lb with
-            | "C" ->
-              Yojson.Safe.read_space p lb;
-              Yojson.Safe.read_gt p lb;
-              (C : variant3)
-            | "B" ->
-              Yojson.Safe.read_space p lb;
-              Yojson.Safe.read_gt p lb;
-              (B : variant3)
-            | x ->
-              (A x : variant3)
-        )
+    match Atdgen_runtime.Yojson_extra.start_any_variant p lb with
| `Double_quote -> (
match Yojson.Safe.finish_string p lb with
| "C" ->
@@ -511,20 +485,7 @@ let string_of_variant2 ?(len = 1024) x =
let read_variant2 = (
fun p lb ->
Yojson.Safe.read_space p lb;
-    match Yojson.Safe.start_any_variant p lb with
-      | `Edgy_bracket -> (
-          match Yojson.Safe.read_ident p lb with
-            | "A" ->
-              Yojson.Safe.read_space p lb;
-              Yojson.Safe.read_gt p lb;
-              (A : variant2)
-            | "C" ->
-              Yojson.Safe.read_space p lb;
-              Yojson.Safe.read_gt p lb;
-              (C : variant2)
-            | x ->
-              Atdgen_runtime.Oj_run.invalid_variant_tag p x
-        )
+    match Atdgen_runtime.Yojson_extra.start_any_variant p lb with
| `Double_quote -> (
match Yojson.Safe.finish_string p lb with
| "A" ->
@@ -560,25 +521,7 @@ let string_of_variant1 ?(len = 1024) x =
let read_variant1 = (
fun p lb ->
Yojson.Safe.read_space p lb;
-    match Yojson.Safe.start_any_variant p lb with
-      | `Edgy_bracket -> (
-          match Yojson.Safe.read_ident p lb with
-            | "A" ->
-              Atdgen_runtime.Oj_run.read_until_field_value p lb;
-              let x = (
-                  Atdgen_runtime.Oj_run.read_string
-                ) p lb
-              in
-              Yojson.Safe.read_space p lb;
-              Yojson.Safe.read_gt p lb;
-              (A x : variant1)
-            | "B" ->
-              Yojson.Safe.read_space p lb;
-              Yojson.Safe.read_gt p lb;
-              (B : variant1)
-            | x ->
-              Atdgen_runtime.Oj_run.invalid_variant_tag p x
-        )
+    match Atdgen_runtime.Yojson_extra.start_any_variant p lb with
| `Double_quote -> (
match Yojson.Safe.finish_string p lb with
| "B" ->
@@ -640,30 +583,7 @@ let string_of_v2 ?(len = 1024) x =
let read_v2 = (
fun p lb ->
Yojson.Safe.read_space p lb;
-    match Yojson.Safe.start_any_variant p lb with
-      | `Edgy_bracket -> (
-          match Yojson.Safe.read_ident p lb with
-            | "V1_foo" ->
-              Atdgen_runtime.Oj_run.read_until_field_value p lb;
-              let x = (
-                  Atdgen_runtime.Oj_run.read_int
-                ) p lb
-              in
-              Yojson.Safe.read_space p lb;
-              Yojson.Safe.read_gt p lb;
-              (V1_foo x : v2)
-            | "V2_bar" ->
-              Atdgen_runtime.Oj_run.read_until_field_value p lb;
-              let x = (
-                  Atdgen_runtime.Oj_run.read_bool
-                ) p lb
-              in
-              Yojson.Safe.read_space p lb;
-              Yojson.Safe.read_gt p lb;
-              (V2_bar x : v2)
-            | x ->
-              Atdgen_runtime.Oj_run.invalid_variant_tag p x
-        )
+    match Atdgen_runtime.Yojson_extra.start_any_variant p lb with
| `Double_quote -> (
match Yojson.Safe.finish_string p lb with
| x ->
@@ -722,30 +642,7 @@ let string_of_v1 ?(len = 1024) x =
let read_v1 = (
fun p lb ->
Yojson.Safe.read_space p lb;
-    match Yojson.Safe.start_any_variant p lb with
-      | `Edgy_bracket -> (
-          match Yojson.Safe.read_ident p lb with
-            | "V1_foo" ->
-              Atdgen_runtime.Oj_run.read_until_field_value p lb;
-              let x = (
-                  Atdgen_runtime.Oj_run.read_bool
-                ) p lb
-              in
-              Yojson.Safe.read_space p lb;
-              Yojson.Safe.read_gt p lb;
-              (V1_foo x : v1)
-            | "V2_bar" ->
-              Atdgen_runtime.Oj_run.read_until_field_value p lb;
-              let x = (
-                  Atdgen_runtime.Oj_run.read_int
-                ) p lb
-              in
-              Yojson.Safe.read_space p lb;
-              Yojson.Safe.read_gt p lb;
-              (V2_bar x : v1)
-            | x ->
-              Atdgen_runtime.Oj_run.invalid_variant_tag p x
-        )
+    match Atdgen_runtime.Yojson_extra.start_any_variant p lb with
| `Double_quote -> (
match Yojson.Safe.finish_string p lb with
| x ->
@@ -923,51 +820,7 @@ let string_of_single_tuple ?(len = 1024) x =
let read_single_tuple = (
fun p lb ->
Yojson.Safe.read_space p lb;
-    match Yojson.Safe.start_any_variant p lb with
-      | `Edgy_bracket -> (
-          match Yojson.Safe.read_ident p lb with
-            | "Single_tuple" ->
-              Atdgen_runtime.Oj_run.read_until_field_value p lb;
-              let x = (
-                  fun p lb ->
-                    Yojson.Safe.read_space p lb;
-                    let std_tuple = Yojson.Safe.start_any_tuple p lb in
-                    let len = ref 0 in
-                    let end_of_tuple = ref false in
-                    (try
-                      let x0 =
-                        let x =
-                          (
-                            Atdgen_runtime.Oj_run.read_int
-                          ) p lb
-                        in
-                        incr len;
-                        (try
-                          Yojson.Safe.read_space p lb;
-                          Yojson.Safe.read_tuple_sep2 p std_tuple lb;
-                        with Yojson.End_of_tuple -> end_of_tuple := true);
-                        x
-                      in
-                      if not !end_of_tuple then (
-                        try
-                          while true do
-                            Yojson.Safe.skip_json p lb;
-                            Yojson.Safe.read_space p lb;
-                            Yojson.Safe.read_tuple_sep2 p std_tuple lb;
-                          done
-                        with Yojson.End_of_tuple -> ()
-                      );
-                      (x0)
-                    with Yojson.End_of_tuple ->
-                      Atdgen_runtime.Oj_run.missing_tuple_fields p !len [ 0 ]);
-                ) p lb
-              in
-              Yojson.Safe.read_space p lb;
-              Yojson.Safe.read_gt p lb;
-              `Single_tuple x
-            | x ->
-              Atdgen_runtime.Oj_run.invalid_variant_tag p x
-        )
+    match Atdgen_runtime.Yojson_extra.start_any_variant p lb with
| `Double_quote -> (
match Yojson.Safe.finish_string p lb with
| x ->
@@ -1096,84 +949,7 @@ let string_of__unit_simple_var ?(len = 1024) x =
let read__unit_simple_var = (
fun p lb ->
Yojson.Safe.read_space p lb;
-    match Yojson.Safe.start_any_variant p lb with
-      | `Edgy_bracket -> (
-          match Yojson.Safe.read_ident p lb with
-            | "Foo" ->
-              Atdgen_runtime.Oj_run.read_until_field_value p lb;
-              let x = (
-                  fun p lb ->
-                    Yojson.Safe.read_space p lb;
-                    let std_tuple = Yojson.Safe.start_any_tuple p lb in
-                    let len = ref 0 in
-                    let end_of_tuple = ref false in
-                    (try
-                      let x0 =
-                        let x =
-                          (
-                            Atdgen_runtime.Oj_run.read_int
-                          ) p lb
-                        in
-                        incr len;
-                        Yojson.Safe.read_space p lb;
-                        Yojson.Safe.read_tuple_sep2 p std_tuple lb;
-                        x
-                      in
-                      let x1 =
-                        let x =
-                          (
-                            Atdgen_runtime.Oj_run.read_int
-                          ) p lb
-                        in
-                        incr len;
-                        (try
-                          Yojson.Safe.read_space p lb;
-                          Yojson.Safe.read_tuple_sep2 p std_tuple lb;
-                        with Yojson.End_of_tuple -> end_of_tuple := true);
-                        x
-                      in
-                      if not !end_of_tuple then (
-                        try
-                          while true do
-                            Yojson.Safe.skip_json p lb;
-                            Yojson.Safe.read_space p lb;
-                            Yojson.Safe.read_tuple_sep2 p std_tuple lb;
-                          done
-                        with Yojson.End_of_tuple -> ()
-                      );
-                      (x0, x1)
-                    with Yojson.End_of_tuple ->
-                      Atdgen_runtime.Oj_run.missing_tuple_fields p !len [ 0; 1 ]);
-                ) p lb
-              in
-              Yojson.Safe.read_space p lb;
-              Yojson.Safe.read_gt p lb;
-              `Foo x
-            | "Bar" ->
-              Yojson.Safe.read_space p lb;
-              Yojson.Safe.read_gt p lb;
-              `Bar
-            | "Foobar" ->
-              Atdgen_runtime.Oj_run.read_until_field_value p lb;
-              let x = (
-                  Atdgen_runtime.Oj_run.read_null
-                ) p lb
-              in
-              Yojson.Safe.read_space p lb;
-              Yojson.Safe.read_gt p lb;
-              `Foobar x
-            | "Foo_id" ->
-              Atdgen_runtime.Oj_run.read_until_field_value p lb;
-              let x = (
-                  read_id
-                ) p lb
-              in
-              Yojson.Safe.read_space p lb;
-              Yojson.Safe.read_gt p lb;
-              `Foo_id x
-            | x ->
-              Atdgen_runtime.Oj_run.invalid_variant_tag p x
-        )
+    match Atdgen_runtime.Yojson_extra.start_any_variant p lb with
| `Double_quote -> (
match Yojson.Safe.finish_string p lb with
| "Bar" ->
@@ -1334,84 +1110,7 @@ let string_of_simple_var write__a ?(len = 1024) x =
let read_simple_var read__a = (
fun p lb ->
Yojson.Safe.read_space p lb;
-    match Yojson.Safe.start_any_variant p lb with
-      | `Edgy_bracket -> (
-          match Yojson.Safe.read_ident p lb with
-            | "Foo" ->
-              Atdgen_runtime.Oj_run.read_until_field_value p lb;
-              let x = (
-                  fun p lb ->
-                    Yojson.Safe.read_space p lb;
-                    let std_tuple = Yojson.Safe.start_any_tuple p lb in
-                    let len = ref 0 in
-                    let end_of_tuple = ref false in
-                    (try
-                      let x0 =
-                        let x =
-                          (
-                            Atdgen_runtime.Oj_run.read_int
-                          ) p lb
-                        in
-                        incr len;
-                        Yojson.Safe.read_space p lb;
-                        Yojson.Safe.read_tuple_sep2 p std_tuple lb;
-                        x
-                      in
-                      let x1 =
-                        let x =
-                          (
-                            Atdgen_runtime.Oj_run.read_int
-                          ) p lb
-                        in
-                        incr len;
-                        (try
-                          Yojson.Safe.read_space p lb;
-                          Yojson.Safe.read_tuple_sep2 p std_tuple lb;
-                        with Yojson.End_of_tuple -> end_of_tuple := true);
-                        x
-                      in
-                      if not !end_of_tuple then (
-                        try
-                          while true do
-                            Yojson.Safe.skip_json p lb;
-                            Yojson.Safe.read_space p lb;
-                            Yojson.Safe.read_tuple_sep2 p std_tuple lb;
-                          done
-                        with Yojson.End_of_tuple -> ()
-                      );
-                      (x0, x1)
-                    with Yojson.End_of_tuple ->
-                      Atdgen_runtime.Oj_run.missing_tuple_fields p !len [ 0; 1 ]);
-                ) p lb
-              in
-              Yojson.Safe.read_space p lb;
-              Yojson.Safe.read_gt p lb;
-              `Foo x
-            | "Bar" ->
-              Yojson.Safe.read_space p lb;
-              Yojson.Safe.read_gt p lb;
-              `Bar
-            | "Foobar" ->
-              Atdgen_runtime.Oj_run.read_until_field_value p lb;
-              let x = (
-                  read__a
-                ) p lb
-              in
-              Yojson.Safe.read_space p lb;
-              Yojson.Safe.read_gt p lb;
-              `Foobar x
-            | "Foo_id" ->
-              Atdgen_runtime.Oj_run.read_until_field_value p lb;
-              let x = (
-                  read_id
-                ) p lb
-              in
-              Yojson.Safe.read_space p lb;
-              Yojson.Safe.read_gt p lb;
-              `Foo_id x
-            | x ->
-              Atdgen_runtime.Oj_run.invalid_variant_tag p x
-        )
+    match Atdgen_runtime.Yojson_extra.start_any_variant p lb with
| `Double_quote -> (
match Yojson.Safe.finish_string p lb with
| "Bar" ->
@@ -2749,30 +2448,7 @@ let read_adapted = (
Atdgen_runtime.Oj_run.read_with_adapter Atdgen_codec_runtime.Json_adapter.Type_field.normalize (
fun p lb ->
Yojson.Safe.read_space p lb;
-      match Yojson.Safe.start_any_variant p lb with
-        | `Edgy_bracket -> (
-            match Yojson.Safe.read_ident p lb with
-              | "A" ->
-                Atdgen_runtime.Oj_run.read_until_field_value p lb;
-                let x = (
-                    read_a
-                  ) p lb
-                in
-                Yojson.Safe.read_space p lb;
-                Yojson.Safe.read_gt p lb;
-                `A x
-              | "B" ->
-                Atdgen_runtime.Oj_run.read_until_field_value p lb;
-                let x = (
-                    read_b
-                  ) p lb
-                in
-                Yojson.Safe.read_space p lb;
-                Yojson.Safe.read_gt p lb;
-                `B x
-              | x ->
-                Atdgen_runtime.Oj_run.invalid_variant_tag p x
-          )
+      match Atdgen_runtime.Yojson_extra.start_any_variant p lb with
| `Double_quote -> (
match Yojson.Safe.finish_string p lb with
| x ->
File "atdgen/test/testj.expected.ml", line 1, characters 0-0:
/usr/bin/git --no-pager diff --no-index --color=always -u _build/default/atdgen/test/testj.expected.ml _build/default/atdgen/test/testj.ml
diff --git a/_build/default/atdgen/test/testj.expected.ml b/_build/default/atdgen/test/testj.ml
index a99920c..74ba600 100644
--- a/_build/default/atdgen/test/testj.expected.ml
+++ b/_build/default/atdgen/test/testj.ml
@@ -197,34 +197,7 @@ and string_of_p' write__a ?(len = 1024) x =
let rec read_p' read__a = (
fun p lb ->
Yojson.Safe.read_space p lb;
-    match Yojson.Safe.start_any_variant p lb with
-      | `Edgy_bracket -> (
-          match Yojson.Safe.read_ident p lb with
-            | "A" ->
-              Yojson.Safe.read_space p lb;
-              Yojson.Safe.read_gt p lb;
-              (A : 'a p')
-            | "Bb" ->
-              Atdgen_runtime.Oj_run.read_until_field_value p lb;
-              let x = (
-                  read_p' read__a
-                ) p lb
-              in
-              Yojson.Safe.read_space p lb;
-              Yojson.Safe.read_gt p lb;
-              (Bb x : 'a p')
-            | "Ccccc" ->
-              Atdgen_runtime.Oj_run.read_until_field_value p lb;
-              let x = (
-                  read__a
-                ) p lb
-              in
-              Yojson.Safe.read_space p lb;
-              Yojson.Safe.read_gt p lb;
-              (Ccccc x : 'a p')
-            | x ->
-              Atdgen_runtime.Oj_run.invalid_variant_tag p x
-        )
+    match Atdgen_runtime.Yojson_extra.start_any_variant p lb with
| `Double_quote -> (
match Yojson.Safe.finish_string p lb with
| "A" ->
@@ -318,29 +291,7 @@ and string_of_r ?(len = 1024) x =
let rec read_p = (
fun p lb ->
Yojson.Safe.read_space p lb;
-    match Yojson.Safe.start_any_variant p lb with
-      | `Edgy_bracket -> (
-          match Yojson.Safe.read_ident p lb with
-            | "A" ->
-              Yojson.Safe.read_space p lb;
-              Yojson.Safe.read_gt p lb;
-              `A
-            | "B" ->
-              Atdgen_runtime.Oj_run.read_until_field_value p lb;
-              let x = (
-                  read_r
-                ) p lb
-              in
-              Yojson.Safe.read_space p lb;
-              Yojson.Safe.read_gt p lb;
-              `B x
-            | "C" ->
-              Yojson.Safe.read_space p lb;
-              Yojson.Safe.read_gt p lb;
-              `C
-            | x ->
-              Atdgen_runtime.Oj_run.invalid_variant_tag p x
-        )
+    match Atdgen_runtime.Yojson_extra.start_any_variant p lb with
| `Double_quote -> (
match Yojson.Safe.finish_string p lb with
| "A" ->
@@ -558,43 +509,7 @@ and _test_variant_list_of_string s =
and read_test_variant = (
fun p lb ->
Yojson.Safe.read_space p lb;
-    match Yojson.Safe.start_any_variant p lb with
-      | `Edgy_bracket -> (
-          match Yojson.Safe.read_ident p lb with
-            | "Case1" ->
-              Yojson.Safe.read_space p lb;
-              Yojson.Safe.read_gt p lb;
-              `Case1
-            | "Case2" ->
-              Atdgen_runtime.Oj_run.read_until_field_value p lb;
-              let x = (
-                  Atdgen_runtime.Oj_run.read_int
-                ) p lb
-              in
-              Yojson.Safe.read_space p lb;
-              Yojson.Safe.read_gt p lb;
-              `Case2 x
-            | "Case3" ->
-              Atdgen_runtime.Oj_run.read_until_field_value p lb;
-              let x = (
-                  Atdgen_runtime.Oj_run.read_string
-                ) p lb
-              in
-              Yojson.Safe.read_space p lb;
-              Yojson.Safe.read_gt p lb;
-              `Case3 x
-            | "Case4" ->
-              Atdgen_runtime.Oj_run.read_until_field_value p lb;
-              let x = (
-                  read__test_variant_list
-                ) p lb
-              in
-              Yojson.Safe.read_space p lb;
-              Yojson.Safe.read_gt p lb;
-              `Case4 x
-            | x ->
-              Atdgen_runtime.Oj_run.invalid_variant_tag p x
-        )
+    match Atdgen_runtime.Yojson_extra.start_any_variant p lb with
| `Double_quote -> (
match Yojson.Safe.finish_string p lb with
| "Case1" ->
@@ -667,34 +582,7 @@ and string_of__int_p ?(len = 1024) x =
let rec read__int_p = (
fun p lb ->
Yojson.Safe.read_space p lb;
-    match Yojson.Safe.start_any_variant p lb with
-      | `Edgy_bracket -> (
-          match Yojson.Safe.read_ident p lb with
-            | "A" ->
-              Yojson.Safe.read_space p lb;
-              Yojson.Safe.read_gt p lb;
-              (A : _ p')
-            | "Bb" ->
-              Atdgen_runtime.Oj_run.read_until_field_value p lb;
-              let x = (
-                  read__int_p
-                ) p lb
-              in
-              Yojson.Safe.read_space p lb;
-              Yojson.Safe.read_gt p lb;
-              (Bb x : _ p')
-            | "Ccccc" ->
-              Atdgen_runtime.Oj_run.read_until_field_value p lb;
-              let x = (
-                  Atdgen_runtime.Oj_run.read_int
-                ) p lb
-              in
-              Yojson.Safe.read_space p lb;
-              Yojson.Safe.read_gt p lb;
-              (Ccccc x : _ p')
-            | x ->
-              Atdgen_runtime.Oj_run.invalid_variant_tag p x
-        )
+    match Atdgen_runtime.Yojson_extra.start_any_variant p lb with
| `Double_quote -> (
match Yojson.Safe.finish_string p lb with
| "A" ->
@@ -772,25 +660,7 @@ and string_of_poly write__x write__y ?(len = 1024) x =
let rec read__a_b_poly_option read__a read__b = (
fun p lb ->
Yojson.Safe.read_space p lb;
-    match Yojson.Safe.start_any_variant p lb with
-      | `Edgy_bracket -> (
-          match Yojson.Safe.read_ident p lb with
-            | "None" ->
-              Yojson.Safe.read_space p lb;
-              Yojson.Safe.read_gt p lb;
-              (None : _ option)
-            | "Some" ->
-              Atdgen_runtime.Oj_run.read_until_field_value p lb;
-              let x = (
-                  read_poly read__a read__b
-                ) p lb
-              in
-              Yojson.Safe.read_space p lb;

1m-              Yojson.Safe.read_gt p lb;
-              (Some x : _ option)
-            | x ->
-              Atdgen_runtime.Oj_run.invalid_variant_tag p x
-        )
+    match Atdgen_runtime.Yojson_extra.start_any_variant p lb with
| `Double_quote -> (
match Yojson.Safe.finish_string p lb with
| "None" ->
@@ -1112,25 +982,7 @@ let string_of__val1_option ?(len = 1024) x =
let read__val1_option = (
fun p lb ->
Yojson.Safe.read_space p lb;
-    match Yojson.Safe.start_any_variant p lb with
-      | `Edgy_bracket -> (
-          match Yojson.Safe.read_ident p lb with
-            | "None" ->
-              Yojson.Safe.read_space p lb;
-              Yojson.Safe.read_gt p lb;
-              (None : _ option)
-            | "Some" ->
-              Atdgen_runtime.Oj_run.read_until_field_value p lb;
-              let x = (
-                  read_val1
-                ) p lb
-              in
-              Yojson.Safe.read_space p lb;
-              Yojson.Safe.read_gt p lb;
-              (Some x : _ option)
-            | x ->
-              Atdgen_runtime.Oj_run.invalid_variant_tag p x
-        )
+    match Atdgen_runtime.Yojson_extra.start_any_variant p lb with
| `Double_quote -> (
match Yojson.Safe.finish_string p lb with
| "None" ->
@@ -1500,25 +1352,7 @@ let string_of__string_option ?(len = 1024) x =
let read__string_option = (
fun p lb ->
Yojson.Safe.read_space p lb;
-    match Yojson.Safe.start_any_variant p lb with
-      | `Edgy_bracket -> (
-          match Yojson.Safe.read_ident p lb with
-            | "None" ->
-              Yojson.Safe.read_space p lb;
-              Yojson.Safe.read_gt p lb;
-              (None : _ option)
-            | "Some" ->
-              Atdgen_runtime.Oj_run.read_until_field_value p lb;
-              let x = (
-                  Atdgen_runtime.Oj_run.read_string
-                ) p lb
-              in
-              Yojson.Safe.read_space p lb;
-              Yojson.Safe.read_gt p lb;
-              (Some x : _ option)
-            | x ->
-              Atdgen_runtime.Oj_run.invalid_variant_tag p x
-        )
+    match Atdgen_runtime.Yojson_extra.start_any_variant p lb with
| `Double_quote -> (
match Yojson.Safe.finish_string p lb with
| "None" ->
@@ -1573,25 +1407,7 @@ let string_of__int_option ?(len = 1024) x =
let read__int_option = (
fun p lb ->
Yojson.Safe.read_space p lb;
-    match Yojson.Safe.start_any_variant p lb with
-      | `Edgy_bracket -> (
-          match Yojson.Safe.read_ident p lb with
-            | "None" ->
-              Yojson.Safe.read_space p lb;
-              Yojson.Safe.read_gt p lb;
-              (None : _ option)
-            | "Some" ->
-              Atdgen_runtime.Oj_run.read_until_field_value p lb;
-              let x = (
-                  Atdgen_runtime.Oj_run.read_int
-                ) p lb
-              in
-              Yojson.Safe.read_space p lb;
-              Yojson.Safe.read_gt p lb;
-              (Some x : _ option)
-            | x ->
-              Atdgen_runtime.Oj_run.invalid_variant_tag p x
-        )
+    match Atdgen_runtime.Yojson_extra.start_any_variant p lb with
| `Double_quote -> (
match Yojson.Safe.finish_string p lb with
| "None" ->
@@ -1630,25 +1446,7 @@ let string_of__float_option ?(len = 1024) x =
let read__float_option = (
fun p lb ->
Yojson.Safe.read_space p lb;
-    match Yojson.Safe.start_any_variant p lb with
-      | `Edgy_bracket -> (
-          match Yojson.Safe.read_ident p lb with
-            | "None" ->
-              Yojson.Safe.read_space p lb;
-              Yojson.Safe.read_gt p lb;
-              (None : _ option)
-            | "Some" ->
-              Atdgen_runtime.Oj_run.read_until_field_value p lb;
-              let x = (
-                  Atdgen_runtime.Oj_run.read_number
-                ) p lb
-              in
-              Yojson.Safe.read_space p lb;
-              Yojson.Safe.read_gt p lb;
-              (Some x : _ option)
-            | x ->
-              Atdgen_runtime.Oj_run.invalid_variant_tag p x
-        )
+    match Atdgen_runtime.Yojson_extra.start_any_variant p lb with
| `Double_quote -> (
match Yojson.Safe.finish_string p lb with
| "None" ->
@@ -1687,25 +1485,7 @@ let string_of__bool_option ?(len = 1024) x =
let read__bool_option = (
fun p lb ->
Yojson.Safe.read_space p lb;
-    match Yojson.Safe.start_any_variant p lb with
-      | `Edgy_bracket -> (
-          match Yojson.Safe.read_ident p lb with
-            | "None" ->
-              Yojson.Safe.read_space p lb;
-              Yojson.Safe.read_gt p lb;
-              (None : _ option)
-            | "Some" ->
-              Atdgen_runtime.Oj_run.read_until_field_value p lb;
-              let x = (
-                  Atdgen_runtime.Oj_run.read_bool
-                ) p lb
-              in
-              Yojson.Safe.read_space p lb;
-              Yojson.Safe.read_gt p lb;
-              (Some x : _ option)
-            | x ->
-              Atdgen_runtime.Oj_run.invalid_variant_tag p x
-        )
+    match Atdgen_runtime.Yojson_extra.start_any_variant p lb with
| `Double_quote -> (
match Yojson.Safe.finish_string p lb with
| "None" ->
@@ -3684,25 +3464,7 @@ let string_of__x_bee1b88 ?(len = 1024) x =
let read__x_bee1b88 = (
fun p lb ->
Yojson.Safe.read_space p lb;
-    match Yojson.Safe.start_any_variant p lb with
-      | `Edgy_bracket -> (
-          match Yojson.Safe.read_ident p lb with
-            | "None" ->
-              Yojson.Safe.read_space p lb;
-              Yojson.Safe.read_gt p lb;
-              (None : _ option)
-            | "Some" ->
-              Atdgen_runtime.Oj_run.read_until_field_value p lb;
-              let x = (
-                  Atdgen_runtime.Oj_run.read_int
-                ) p lb
-              in
-              Yojson.Safe.read_space p lb;
-              Yojson.Safe.read_gt p lb;
-              (Some x : _ option)
-            | x ->
-              Atdgen_runtime.Oj_run.invalid_variant_tag p x
-        )
+    match Atdgen_runtime.Yojson_extra.start_any_variant p lb with
| `Double_quote -> (
match Yojson.Safe.finish_string p lb with
| "None" ->
@@ -3989,25 +3751,7 @@ let string_of_hello ?(len = 1024) x =
let read_hello = (
fun p lb ->
Yojson.Safe.read_space p lb;
-    match Yojson.Safe.start_any_variant p lb with
-      | `Edgy_bracket -> (
-          match Yojson.Safe.read_ident p lb with
-            | "Hello" ->
-              Atdgen_runtime.Oj_run.read_until_field_value p lb;
-              let x = (
-                  Atdgen_runtime.Oj_run.read_string
-                ) p lb
-              in
-              Yojson.Safe.read_space p lb;
-              Yojson.Safe.read_gt p lb;
-              `Hello x
-            | "World" ->
-              Yojson.Safe.read_space p lb;
-              Yojson.Safe.read_gt p lb;
-              `World
-            | x ->
-              Atdgen_runtime.Oj_run.invalid_variant_tag p x
-        )
+    match Atdgen_runtime.Yojson_extra.start_any_variant p lb with
| `Double_quote -> (
match Yojson.Safe.finish_string p lb with
| "World" ->
File "atdcpp/test/cpp-tests/dune", lines 19-28, characters 0-183:
19 | (rule
20 |  (alias runtest)
21 |  (package atdcpp)
22 |  (deps
23 |   (glob_files *.cpp))
24 |  (action
25 |   (progn
26 |    (bash "g++ -I../../lib/rapidjson/include -std=c++17 %{deps} -o test")
27 |    (bash ./test)
28 |   )))
(cd _build/default/atdcpp/test/cpp-tests && /bin/bash -e -u -o pipefail -c 'g++ -I../../lib/rapidjson/include -std=c++17 everything_atd.cpp test_atdd.cpp -o test')
In file included from everything_atd.cpp:12:
./everything_atd.hpp:12:10: fatal error: 'rapidjson/document.h' file not found
12 | #include <rapidjson/document.h>
|          ^~~~~~~~~~~~~~~~~~~~~~
1 error generated.
In file included from test_atdd.cpp:12:
./everything_atd.hpp:12:10: fatal error: 'rapidjson/document.h' file not found
12 | #include <rapidjson/document.h>
|          ^~~~~~~~~~~~~~~~~~~~~~
1 error generated.
File "atdgen/test/melange/dune", lines 48-51, characters 0-85:
48 | (rule
49 |  (alias runtest)
50 |  (package atdgen)
51 |  (action (run ./melangespec_roundtrip.exe)))
(cd _build/default/atdgen/test/melange && ./melangespec_roundtrip.exe)
encode list open enum: Roundtrip failed.
Have:[ "Alpha", "other" ]
Decoded:exn: Yojson__Common.Json_error("Line 1, bytes 1-19:\nExpected '\"' or '[' but found '<\"Alpha\">,\"other\"]'")
backtrace:


encode adapted variant b: Roundtrip failed.
Have:[ "B", { "thing": 1 } ]
Decoded:exn: Yojson__Common.Json_error("Line 1, bytes 0-17:\nExpected '\"' or '[' but found '<\"B\":{\"thing\":1}>'")
backtrace:


encode adapted variant a: Roundtrip failed.
Have:[ "A", { "other_thing": false, "thing": "thing" } ]
Decoded:exn: Yojson__Common.Json_error("Line 1, bytes 0-34:\nExpected '\"' or '[' but found '<\"A\":{\"other_thing\":false,\"thing\"'")
backtrace:


encode 1 tuple: Roundtrip failed.
Have:[ "Single_tuple", [ 123 ] ]
Decoded:exn: Yojson__Common.Json_error("Line 1, bytes 0-22:\nExpected '\"' or '[' but found '<\"Single_tuple\":(123)>'")
backtrace:


encode variant: Roundtrip failed.
Have:[
[ "Foo", [ 123, 456 ] ], "Bar", [ "Foobar", null ], [ "Foo_id", "testing" ]
]
Decoded:exn: Yojson__Common.Json_error("Line 1, bytes 1-35:\nExpected '\"' or '[' but found '<\"Foo\":(123,456)>,<\"Bar\">,<\"Fooba'")
backtrace:


(cd _build/default/atdgen/test && ./test_atdgen_main.exe)
Testing `atdgen'.
This run has ID `XQJXPWFK'.


[OK]          atdgen          0   ocaml internals.
[OK]          atdgen          1   biniou missing record fields.
[OK]          atdgen          2   biniou missing tuple fields.
[OK]          atdgen          3   biniou read/write unit.
[OK]          atdgen          4   json missing record fields.
[OK]          atdgen          5   json missing tuple fields.
[OK]          atdgen          6   json extra field warning.
[OK]          atdgen          7   json association list.
[OK]          atdgen          8   json association array.
[OK]          atdgen          9   json ints derived from ocaml floats.
[OK]          atdgen         10   biniou correctness.
[OK]          atdgen         11   json correctness.
[OK]          atdgen         12   json space.
[OK]          atdgen         13   validators0.
[OK]          atdgen         14   validators1.
[OK]          atdgen         15   validators2.
[OK]          atdgen         16   validators3.
[OK]          atdgen         17   validators4.
[OK]          atdgen         18   json files.
[OK]          atdgen         19   json streams.
[OK]          atdgen         20   raw JSON.
[OK]          atdgen         21   ocaml wrapping - ints.
[OK]          atdgen         22   ocaml wrapping - double wrapping.
[OK]          atdgen         23   ocaml wrapping - with validation.
[OK]          atdgen         24   ocaml wrapping - wrap constructor without...
[OK]          atdgen         25   check length of floats serialized as floa...
[OK]          atdgen         26   print JSON floats with maximum number of ...
[OK]          atdgen         27   read json record with null fields meaning...
[OK]          atdgen         28   read and write a variant represented as a...
[OK]          atdgen         29   read and write a variant represented as a...
[OK]          atdgen         30   test variants represented with single-fie...
[OK]          atdgen         31   emulate the retired tag_field feature.
[OK]          atdgen         32   emulate the retired tag_field feature, wi...
[OK]          atdgen         33   test <json open_enum>.
[OK]          atdgen         34   test ambiguous record with json adapters.
[OK]          atdgen         35   test ambiguous classic variants with json...
[OK]          atdgen         36   test wrapping of polymorphic types.
[OK]          atdgen         37   json encoding int.
[OK]          atdgen         38   json encoding & decoding int.
[OK]          atdgen         39   json encoding int with string representat...
[OK]          atdgen         40   json encoding & decoding int with string ...
[OK]          atdgen         41   abstract types.
[OK]          atdgen         42   untyped json.
[OK]          atdgen         43   generic.
[OK]          atdgen         44   inline-records.


Full test results in `~/src/_build/default/atdgen/test/_build/_tests/atdgen'.
Test Successful in 0.013s. 45 tests run.
"/usr/bin/env" "bash" "-c" "cd ./src && opam exec -- dune build @install @check @runtest && rm -rf _build" failed with exit status 1
2025-12-09 20:27.08: Job failed: Failed: Build failed