Organisationsocaml-ppxppxlibe516f4 ()ubuntu-25.04-4.14_opam-2.4

ubuntu-25.04-4.14_opam-2.4

Link Copied
Code Copied

Logs

2025-08-11 12:13.23: New job: test ocaml-ppx/ppxlib https://github.com/ocaml-ppx/ppxlib.git#refs/pull/589/head (e516f47c64a6b9890c304f454a70725b8af38173) (linux-x86_64:ubuntu-25.04-4.14_opam-2.4)
Base: ocaml/opam:ubuntu-25.04-ocaml-4.14@sha256:779fe3e8adee8595b832aced56824d9d13d0be832ef776548413a808dd2134ca
Opam project build


To reproduce locally:


git clone --recursive "https://github.com/ocaml-ppx/ppxlib.git" && cd "ppxlib" && git fetch origin "refs/pull/589/head" && git reset --hard e516f47c
cat > Dockerfile <<'END-OF-DOCKERFILE'
FROM ocaml/opam:ubuntu-25.04-ocaml-4.14@sha256:779fe3e8adee8595b832aced56824d9d13d0be832ef776548413a808dd2134ca
# ubuntu-25.04-4.14_opam-2.4
USER 1000:1000
ENV CLICOLOR_FORCE="1"
ENV OPAMCOLOR="always"
WORKDIR /src
RUN sudo ln -f /usr/bin/opam-2.4 /usr/bin/opam
RUN opam init --reinit -ni
RUN uname -rs && opam exec -- ocaml -version && opam --version
WORKDIR /src
RUN sudo chown opam /src
RUN cd ~/opam-repository && (git cat-file -e b8021439f8c57ba6435bc2263f6596671f4f4466 || git fetch origin master) && git reset -q --hard b8021439f8c57ba6435bc2263f6596671f4f4466 && git log --no-decorate -n1 --oneline && opam update -u
COPY --chown=1000:1000 ppxlib.opam ppxlib-tools.opam ppxlib-bench.opam ./
RUN opam pin add -yn ppxlib.dev './' && \
opam pin add -yn ppxlib-tools.dev './' && \
opam pin add -yn ppxlib-bench.dev './'
RUN echo '(lang dune 3.0)' > './dune-project'
ENV DEPS="base.v0.16.4 base-bigarray.base base-threads.base base-unix.base cinaps.v0.15.1 cmdliner.1.3.0 csexp.1.5.2 dune.3.19.1 dune-configurator.3.19.1 ocaml.4.14.2 ocaml-base-compiler.4.14.2 ocaml-compiler-libs.v0.12.4 ocaml-config.2 ocaml-options-vanilla.1 ocamlfind.1.9.8 ppx_derivers.1.2.1 re.1.13.2 seq.base sexplib0.v0.16.0 stdlib-shims.0.3.0 yojson.3.0.0"
ENV CI="true"
ENV OCAMLCI="true"
RUN opam update --depexts && opam install --cli=2.4 --depext-only -y ppxlib.dev ppxlib-tools.dev ppxlib-bench.dev $DEPS
RUN opam install $DEPS
COPY --chown=1000:1000 . /src
RUN opam exec -- dune build @install @check @runtest && rm -rf _build


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


2025-08-11 12:13.23: Using cache hint "ocaml-ppx/ppxlib-ocaml/opam:ubuntu-25.04-ocaml-4.14@sha256:779fe3e8adee8595b832aced56824d9d13d0be832ef776548413a808dd2134ca-ubuntu-25.04-4.14_opam-2.4-b68e9df276868c41024ba0e8680a3274"
2025-08-11 12:13.23: Using OBuilder spec:
((from ocaml/opam:ubuntu-25.04-ocaml-4.14@sha256:779fe3e8adee8595b832aced56824d9d13d0be832ef776548413a808dd2134ca)
(comment ubuntu-25.04-4.14_opam-2.4)
(user (uid 1000) (gid 1000))
(env CLICOLOR_FORCE 1)
(env OPAMCOLOR always)
(workdir /src)
(run (shell "sudo ln -f /usr/bin/opam-2.4 /usr/bin/opam"))
(run (shell "opam init --reinit -ni"))
(run (shell "uname -rs && opam exec -- ocaml -version && opam --version"))
(workdir /src)
(run (shell "sudo chown opam /src"))
(run (cache (opam-archives (target /home/opam/.opam/download-cache)))
(network host)
(shell "cd ~/opam-repository && (git cat-file -e b8021439f8c57ba6435bc2263f6596671f4f4466 || git fetch origin master) && git reset -q --hard b8021439f8c57ba6435bc2263f6596671f4f4466 && git log --no-decorate -n1 --oneline && opam update -u"))
(copy (src ppxlib.opam ppxlib-tools.opam ppxlib-bench.opam) (dst ./))
(run (network host)
(shell  "opam pin add -yn ppxlib.dev './' && \
\nopam pin add -yn ppxlib-tools.dev './' && \
\nopam pin add -yn ppxlib-bench.dev './'"))
(run (network host)
(shell "echo '(lang dune 3.0)' > './dune-project'"))
(env DEPS "base.v0.16.4 base-bigarray.base base-threads.base base-unix.base cinaps.v0.15.1 cmdliner.1.3.0 csexp.1.5.2 dune.3.19.1 dune-configurator.3.19.1 ocaml.4.14.2 ocaml-base-compiler.4.14.2 ocaml-compiler-libs.v0.12.4 ocaml-config.2 ocaml-options-vanilla.1 ocamlfind.1.9.8 ppx_derivers.1.2.1 re.1.13.2 seq.base sexplib0.v0.16.0 stdlib-shims.0.3.0 yojson.3.0.0")
(env CI true)
(env OCAMLCI true)
(run (cache (opam-archives (target /home/opam/.opam/download-cache)))
(network host)
(shell "opam update --depexts && opam install --cli=2.4 --depext-only -y ppxlib.dev ppxlib-tools.dev ppxlib-bench.dev $DEPS"))
(run (cache (opam-archives (target /home/opam/.opam/download-cache)))
(network host)
(shell "opam install $DEPS"))
(copy (src .) (dst /src))
(run (shell "opam exec -- dune build @install @check @runtest && rm -rf _build"))
)


2025-08-11 12:13.23: Waiting for resource in pool OCluster
2025-08-11 12:13.23: Waiting for worker…
2025-08-11 12:13.23: Got resource from pool OCluster
Building on asteria.caelum.ci.dev
HEAD is now at b0aa3047 Expose Lexer.comments in the Parse module
HEAD is now at e516f47c TMP


(from ocaml/opam:ubuntu-25.04-ocaml-4.14@sha256:779fe3e8adee8595b832aced56824d9d13d0be832ef776548413a808dd2134ca)
Unable to find image 'ocaml/opam:ubuntu-25.04-ocaml-4.14@sha256:779fe3e8adee8595b832aced56824d9d13d0be832ef776548413a808dd2134ca' locally
docker.io/ocaml/opam@sha256:779fe3e8adee8595b832aced56824d9d13d0be832ef776548413a808dd2134ca: Pulling from ocaml/opam
60fb2420030a: Pulling fs layer
30a5b9bffc59: Pulling fs layer
e76e7b0fd035: Pulling fs layer
87fd98c989d0: Pulling fs layer
fc31fa993861: Pulling fs layer
c75b71d41442: Pulling fs layer
9f08a6d6f6f5: Pulling fs layer
3dfc106a9c15: Pulling fs layer
1c3a6d2a01a7: Pulling fs layer
2d648021ecec: Pulling fs layer
ffcf097292c2: Pulling fs layer
e1bcef442ada: Pulling fs layer
61993b76460e: Pulling fs layer
929a57e31854: Pulling fs layer
826e2c54b1a9: Pulling fs layer
eec17caf12a0: Pulling fs layer
9259e842febf: Pulling fs layer
ae77b4e577af: Pulling fs layer
61c1d61eb8ba: Pulling fs layer
87fd98c989d0: Waiting
d7a0435c7be4: Pulling fs layer
4f4fb700ef54: Pulling fs layer
67b39cdc1121: Pulling fs layer
217bd9b7b99f: Pulling fs layer
c75b71d41442: Waiting
1c96670814d1: Pulling fs layer
2d648021ecec: Waiting
ccd441a4e677: Pulling fs layer
9e7324b47fd8: Pulling fs layer
ffcf097292c2: Waiting
0ec34067023b: Pulling fs layer
1c3a6d2a01a7: Waiting
33125ff80400: Pulling fs layer
9f08a6d6f6f5: Waiting
b383373ace10: Pulling fs layer
447883287ba9: Pulling fs layer
3dfc106a9c15: Waiting
cb78f5b619b6: Pulling fs layer
d52ede671661: Pulling fs layer
e1bcef442ada: Waiting
fa458c0e5391: Pulling fs layer
67b39cdc1121: Waiting
6f79814c75aa: Pulling fs layer
852246b3a53d: Pulling fs layer
8a24940dc348: Pulling fs layer
27ffa6c8c05e: Pulling fs layer
83b8efa25d5a: Pulling fs layer
0ec34067023b: Waiting
b7a79da3b9f8: Pulling fs layer
132e77d73f7f: Pulling fs layer
33125ff80400: Waiting
cc12f00dd0be: Pulling fs layer
3312776b6873: Pulling fs layer
6853ba2d9c47: Pulling fs layer
d52ede671661: Waiting
929a57e31854: Waiting
83b8efa25d5a: Waiting
217bd9b7b99f: Waiting
b7a79da3b9f8: Waiting
fa458c0e5391: Waiting
ae77b4e577af: Waiting
1c96670814d1: Waiting
9259e842febf: Waiting
61993b76460e: Waiting
6f79814c75aa: Waiting
d7a0435c7be4: Waiting
852246b3a53d: Waiting
3312776b6873: Waiting
6853ba2d9c47: Waiting
9e7324b47fd8: Waiting
27ffa6c8c05e: Waiting
cc12f00dd0be: Waiting
cb78f5b619b6: Waiting
447883287ba9: Waiting
eec17caf12a0: Waiting
8a24940dc348: Waiting
b383373ace10: Waiting
30a5b9bffc59: Download complete
e76e7b0fd035: Verifying Checksum
e76e7b0fd035: Download complete
fc31fa993861: Download complete
60fb2420030a: Verifying Checksum
60fb2420030a: Download complete
87fd98c989d0: Verifying Checksum
87fd98c989d0: Download complete
3dfc106a9c15: Verifying Checksum
3dfc106a9c15: Download complete
1c3a6d2a01a7: Verifying Checksum
1c3a6d2a01a7: Download complete
2d648021ecec: Verifying Checksum
2d648021ecec: Download complete
60fb2420030a: Pull complete
30a5b9bffc59: Pull complete
e76e7b0fd035: Pull complete
ffcf097292c2: Verifying Checksum
ffcf097292c2: Download complete
e1bcef442ada: Verifying Checksum
e1bcef442ada: Download complete
9f08a6d6f6f5: Verifying Checksum
9f08a6d6f6f5: Download complete
61993b76460e: Verifying Checksum
61993b76460e: Download complete
929a57e31854: Verifying Checksum
929a57e31854: Download complete
87fd98c989d0: Pull complete
fc31fa993861: Pull complete
826e2c54b1a9: Verifying Checksum
826e2c54b1a9: Download complete
9259e842febf: Download complete
c75b71d41442: Verifying Checksum
c75b71d41442: Download complete
eec17caf12a0: Download complete
d7a0435c7be4: Verifying Checksum
d7a0435c7be4: Download complete
ae77b4e577af: Download complete
4f4fb700ef54: Verifying Checksum
4f4fb700ef54: Download complete
67b39cdc1121: Download complete
217bd9b7b99f: Download complete
1c96670814d1: Verifying Checksum
1c96670814d1: Download complete
ccd441a4e677: Verifying Checksum
ccd441a4e677: Download complete
61c1d61eb8ba: Download complete
0ec34067023b: Verifying Checksum
0ec34067023b: Download complete
33125ff80400: Verifying Checksum
33125ff80400: Download complete
b383373ace10: Download complete
447883287ba9: Verifying Checksum
447883287ba9: Download complete
cb78f5b619b6: Verifying Checksum
cb78f5b619b6: Download complete
d52ede671661: Verifying Checksum
d52ede671661: Download complete
9e7324b47fd8: Download complete
fa458c0e5391: Download complete
852246b3a53d: Verifying Checksum
852246b3a53d: Download complete
27ffa6c8c05e: Verifying Checksum
27ffa6c8c05e: Download complete
83b8efa25d5a: Download complete
b7a79da3b9f8: Download complete
c75b71d41442: Pull complete
9f08a6d6f6f5: Pull complete
6f79814c75aa: Verifying Checksum
6f79814c75aa: Download complete
3dfc106a9c15: Pull complete
cc12f00dd0be: Download complete
1c3a6d2a01a7: Pull complete
132e77d73f7f: Verifying Checksum
132e77d73f7f: Download complete
2d648021ecec: Pull complete
3312776b6873: Verifying Checksum
3312776b6873: Download complete
6853ba2d9c47: Download complete
ffcf097292c2: Pull complete
e1bcef442ada: Pull complete
61993b76460e: Pull complete
929a57e31854: Pull complete
826e2c54b1a9: Pull complete
eec17caf12a0: Pull complete
9259e842febf: Pull complete
ae77b4e577af: Pull complete
61c1d61eb8ba: Pull complete
d7a0435c7be4: Pull complete
4f4fb700ef54: Pull complete
67b39cdc1121: Pull complete
217bd9b7b99f: Pull complete
1c96670814d1: Pull complete
ccd441a4e677: Pull complete
9e7324b47fd8: Pull complete
0ec34067023b: Pull complete
33125ff80400: Pull complete
b383373ace10: Pull complete
447883287ba9: Pull complete
cb78f5b619b6: Pull complete
d52ede671661: Pull complete
fa458c0e5391: Pull complete
8a24940dc348: Verifying Checksum
8a24940dc348: Download complete
6f79814c75aa: Pull complete
852246b3a53d: Pull complete
8a24940dc348: Pull complete
27ffa6c8c05e: Pull complete
83b8efa25d5a: Pull complete
b7a79da3b9f8: Pull complete
132e77d73f7f: Pull complete
cc12f00dd0be: Pull complete
3312776b6873: Pull complete
6853ba2d9c47: Pull complete
Digest: sha256:779fe3e8adee8595b832aced56824d9d13d0be832ef776548413a808dd2134ca
Status: Downloaded newer image for ocaml/opam@sha256:779fe3e8adee8595b832aced56824d9d13d0be832ef776548413a808dd2134ca
2025-08-11 12:13.25 ---> using "db10c73956f19687df50e70fc2a6ec82e83bd4ced477aa335db11ce5a5ded33d" from cache


/: (comment ubuntu-25.04-4.14_opam-2.4)


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


/: (env CLICOLOR_FORCE 1)


/: (env OPAMCOLOR always)


/: (workdir /src)


/src: (run (shell "sudo ln -f /usr/bin/opam-2.4 /usr/bin/opam"))
2025-08-11 12:13.25 ---> using "607f475d86682b8922ca64d778be67777803bdb02a1111a19f7e2368a92640c5" from cache


/src: (run (shell "opam init --reinit -ni"))
Configuring from /home/opam/.opamrc and then from 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 /home/opam/.opam from version 2.0 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 71 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=71 --global
Format upgrade done.


<><> Updating repositories ><><><><><><><><><><><><><><><><><><><><><><><><><><>
[default] Initialised
2025-08-11 12:13.25 ---> using "d5812e409cdf2de6b137a3c943320ca0e0bdc091bd85e44c8cfa24823bf5dd50" from cache


/src: (run (shell "uname -rs && opam exec -- ocaml -version && opam --version"))
Linux 5.15.0-142-generic
The OCaml toplevel, version 4.14.2
2.4.1
2025-08-11 12:13.25 ---> using "e8e07bcdba13a5ac17e8bc4b0a9806f88dc997a3ee2245ba216eb2957362da39" from cache


/src: (workdir /src)


/src: (run (shell "sudo chown opam /src"))
2025-08-11 12:13.25 ---> using "3be4daf05c9dcba399fe091401d8741072a8e09673202c2358d57040a95d7cef" from cache


/src: (run (cache (opam-archives (target /home/opam/.opam/download-cache)))
(network host)
(shell "cd ~/opam-repository && (git cat-file -e b8021439f8c57ba6435bc2263f6596671f4f4466 || git fetch origin master) && git reset -q --hard b8021439f8c57ba6435bc2263f6596671f4f4466 && git log --no-decorate -n1 --oneline && opam update -u"))
b8021439f8 Merge pull request #28261 from kit-ty-kate/deploy-fix-25819


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


Everything as up-to-date as possible (run with --verbose to show unavailable upgrades).
However, you may "opam upgrade" these packages explicitly at these versions (e.g. "opam upgrade ocaml.5.3.0"), which will ask permission to downgrade or uninstall the conflicting packages.
Nothing to do.
# To update the current shell environment, run: eval $(opam env)
2025-08-11 12:13.40 ---> saved as "c96680ae449e0627174fccb85251ecb10d4a5161b1a4352c51dcf4e4c4782e2c"


/src: (copy (src ppxlib.opam ppxlib-tools.opam ppxlib-bench.opam) (dst ./))
2025-08-11 12:13.40 ---> saved as "57d8c2ea98f4d5f5ee65061c3e88939559b68e2d2da7085134a2a06024683061"


/src: (run (network host)
(shell  "opam pin add -yn ppxlib.dev './' && \
\nopam pin add -yn ppxlib-tools.dev './' && \
\nopam pin add -yn ppxlib-bench.dev './'"))
[ppxlib.dev] synchronised (file:///src)
ppxlib is now pinned to file:///src (version dev)
[ppxlib-tools.dev] synchronised (file:///src)
ppxlib-tools is now pinned to file:///src (version dev)
[NOTE] Package ppxlib-bench does not exist in opam repositories registered in the current switch.
[ppxlib-bench.dev] synchronised (file:///src)
ppxlib-bench is now pinned to file:///src (version dev)
2025-08-11 12:13.44 ---> saved as "e986d88f4a755f4a1233372bf7cdb3452740f062eb476c3a1486b8f383f172a7"


/src: (run (network host)
(shell "echo '(lang dune 3.0)' > './dune-project'"))
2025-08-11 12:13.45 ---> saved as "d262c13b26d2f305dfc24598df5612ea8b9b1874f928a2123d9d7af160d9fbfd"


/src: (env DEPS "base.v0.16.4 base-bigarray.base base-threads.base base-unix.base cinaps.v0.15.1 cmdliner.1.3.0 csexp.1.5.2 dune.3.19.1 dune-configurator.3.19.1 ocaml.4.14.2 ocaml-base-compiler.4.14.2 ocaml-compiler-libs.v0.12.4 ocaml-config.2 ocaml-options-vanilla.1 ocamlfind.1.9.8 ppx_derivers.1.2.1 re.1.13.2 seq.base sexplib0.v0.16.0 stdlib-shims.0.3.0 yojson.3.0.0")


/src: (env CI true)


/src: (env OCAMLCI true)


/src: (run (cache (opam-archives (target /home/opam/.opam/download-cache)))
(network host)
(shell "opam update --depexts && opam install --cli=2.4 --depext-only -y ppxlib.dev ppxlib-tools.dev ppxlib-bench.dev $DEPS"))
+ /usr/bin/sudo "apt-get" "update"
- Hit:1 http://archive.ubuntu.com/ubuntu plucky InRelease
- Get:2 http://archive.ubuntu.com/ubuntu plucky-updates InRelease [126 kB]
- Get:3 http://archive.ubuntu.com/ubuntu plucky-backports InRelease [126 kB]
- Get:4 http://archive.ubuntu.com/ubuntu plucky-updates/restricted amd64 Packages [181 kB]
- Get:5 http://archive.ubuntu.com/ubuntu plucky-updates/main amd64 Packages [334 kB]
- Get:6 http://archive.ubuntu.com/ubuntu plucky-updates/universe amd64 Packages [233 kB]
- Get:7 http://security.ubuntu.com/ubuntu plucky-security InRelease [126 kB]
- Get:8 http://security.ubuntu.com/ubuntu plucky-security/universe amd64 Packages [129 kB]
- Get:9 http://security.ubuntu.com/ubuntu plucky-security/main amd64 Packages [217 kB]
- Get:10 http://security.ubuntu.com/ubuntu plucky-security/restricted amd64 Packages [163 kB]
- Fetched 1636 kB in 1s (1555 kB/s)
- Reading package lists...


<><> Synchronising pinned packages ><><><><><><><><><><><><><><><><><><><><><><>
[ppxlib.dev] synchronised (file:///src)
[ppxlib-bench.dev] synchronised (file:///src)
[ppxlib-tools.dev] synchronised (file:///src)


[NOTE] Package ocaml-options-vanilla is already installed (current version is 1).
[NOTE] Package ocaml-config is already installed (current version is 2).
[NOTE] Package ocaml-base-compiler is already installed (current version is 4.14.2).
[NOTE] Package ocaml is already installed (current version is 4.14.2).
[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-bigarray is already installed (current version is base).
2025-08-11 12:13.54 ---> saved as "70a27a867750c4431363d81e710cf1a851561347ec9cb8f1a082808fca8e4d2a"


/src: (run (cache (opam-archives (target /home/opam/.opam/download-cache)))
(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 2).
[NOTE] Package ocaml-base-compiler is already installed (current version is 4.14.2).
[NOTE] Package ocaml is already installed (current version is 4.14.2).
[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-bigarray is already installed (current version is base).
The following actions will be performed:
=== install 14 packages
- install base                v0.16.4
- install cinaps              v0.15.1
- install cmdliner            1.3.0
- install csexp               1.5.2
- install dune                3.19.1
- install dune-configurator   3.19.1
- install ocaml-compiler-libs v0.12.4
- install ocamlfind           1.9.8
- install ppx_derivers        1.2.1
- install re                  1.13.2
- install seq                 base
- install sexplib0            v0.16.0
- install stdlib-shims        0.3.0
- install yojson              3.0.0


<><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><>
-> retrieved base.v0.16.4  (cached)
-> retrieved cinaps.v0.15.1  (cached)
-> retrieved cmdliner.1.3.0  (cached)
-> retrieved csexp.1.5.2  (cached)
-> retrieved ocaml-compiler-libs.v0.12.4  (cached)
-> retrieved ppx_derivers.1.2.1  (cached)
-> retrieved ocamlfind.1.9.8  (cached)
-> retrieved seq.base  (cached)
-> installed seq.base
-> retrieved re.1.13.2  (cached)
-> retrieved sexplib0.v0.16.0  (cached)
-> retrieved stdlib-shims.0.3.0  (cached)
-> retrieved yojson.3.0.0  (cached)
-> retrieved dune.3.19.1, dune-configurator.3.19.1  (cached)
-> installed cmdliner.1.3.0
-> installed ocamlfind.1.9.8
-> installed dune.3.19.1
-> installed ppx_derivers.1.2.1
-> installed csexp.1.5.2
-> installed ocaml-compiler-libs.v0.12.4
-> installed re.1.13.2
-> installed sexplib0.v0.16.0
-> installed stdlib-shims.0.3.0
-> installed yojson.3.0.0
-> installed cinaps.v0.15.1
-> installed dune-configurator.3.19.1
-> installed base.v0.16.4
Done.
# To update the current shell environment, run: eval $(opam env)
2025-08-11 12:14.30 ---> saved as "a5a6dc5e05a6d6047f5da3f61f8889085b3a994fdfaa0ddff591ac293d738464"


/src: (copy (src .) (dst /src))
2025-08-11 12:14.30 ---> saved as "b0724e534cd23fed8f42613acb8cf5f93459f7373c7a0fb16b8ba09206deed2c"


/src: (run (shell "opam exec -- dune build @install @check @runtest && rm -rf _build"))
(cd _build/default && .bin/expect-test test/ast_builder_value_binding/test.ml)
Cannot find type Topdirs.printer_type_new.
Cannot find type Topdirs.printer_type_new.
Cannot find type Topdirs.printer_type_new.
File "test/ast_builder_value_binding/test.ml", line 1, characters 0-0:
/usr/bin/git --no-pager diff --no-index --color=always -u _build/default/test/ast_builder_value_binding/test.ml _build/default/test/ast_builder_value_binding/test.ml.corrected
diff --git a/_build/default/test/ast_builder_value_binding/test.ml b/_build/default/test/ast_builder_value_binding/test.ml.corrected
index 4cc4564..b6a1c2a 100644
--- a/_build/default/test/ast_builder_value_binding/test.ml
+++ b/_build/default/test/ast_builder_value_binding/test.ml.corrected
@@ -26,32 +26,155 @@ let vb =


[%%expect{|
val vb : structure_item =
-  Pstr_value
-    ( Nonrecursive
-    , [ { pvb_pat = Ppat_var "f"
-        ; pvb_expr =
-            Pexp_function
-              ( [ { pparam_loc = __loc
-                  ; pparam_desc = Pparam_val ( Nolabel, None, Ppat_var "x")
-                  }
-                ]
-              , None
-              , Pfunction_body
-                  (Pexp_apply
-                     ( Pexp_ident (Lident "+")
-                     , [ ( Nolabel, Pexp_ident (Lident "x"))
-                       ; ( Nolabel
-                         , Pexp_constant (Pconst_integer ( "1", None))
-                         )
-                       ]
-                     ))
-              )
-        ; pvb_constraint = None
-        ; pvb_attributes = __attrs
-        ; pvb_loc = __loc
-        }
-      ]
-    )
+  {Ppxlib__.Import.pstr_desc =
+    Ppxlib__.Import.Pstr_value (Ppxlib__.Import.Nonrecursive,
+     [{Ppxlib__.Import.pvb_pat =
+        {Ppxlib__.Import.ppat_desc =
+          Ppxlib__.Import.Ppat_var
+           {Ppxlib__.Import.txt = "f";
+            loc =
+             {Ppxlib__.Import.loc_start =
+               {Ppxlib__.Import.pos_fname = "_none_"; pos_lnum = 0;
+                pos_bol = 0; pos_cnum = -1};
+              loc_end =
+               {Ppxlib__.Import.pos_fname = "_none_"; pos_lnum = 0;
+                pos_bol = 0; pos_cnum = -1};
+              loc_ghost = true}};
+         ppat_loc =
+          {Ppxlib__.Import.loc_start =
+            {Ppxlib__.Import.pos_fname = "_none_"; pos_lnum = 0; pos_bol = 0;
+             pos_cnum = -1};
+           loc_end =
+            {Ppxlib__.Import.pos_fname = "_none_"; pos_lnum = 0; pos_bol = 0;
+             pos_cnum = -1};
+           loc_ghost = true};
+         ppat_loc_stack = []; ppat_attributes = []};
+       pvb_expr =
+        {Ppxlib__.Import.pexp_desc =
+          Ppxlib__.Import.Pexp_function
+           ([{Ppxlib__.Import.pparam_loc =
+               {Ppxlib__.Import.loc_start =
+                 {Ppxlib__.Import.pos_fname = "_none_"; pos_lnum = 0;
+                  pos_bol = 0; pos_cnum = -1};
+                loc_end =
+                 {Ppxlib__.Import.pos_fname = "_none_"; pos_lnum = 0;
+                  pos_bol = 0; pos_cnum = -1};
+                loc_ghost = true};
+              pparam_desc =
+               Ppxlib__.Import.Pparam_val (Ppxlib__.Import.Nolabel, None,
+                {Ppxlib__.Import.ppat_desc =
+                  Ppxlib__.Import.Ppat_var
+                   {Ppxlib__.Import.txt = "x";
+                    loc =
+                     {Ppxlib__.Import.loc_start =
+                       {Ppxlib__.Import.pos_fname = "_none_"; pos_lnum = 0;
+                        pos_bol = 0; pos_cnum = -1};
+                      loc_end =
+                       {Ppxlib__.Import.pos_fname = "_none_"; pos_lnum = 0;
+                        pos_bol = 0; pos_cnum = -1};
+                      loc_ghost = true}};
+                 ppat_loc =
+                  {Ppxlib__.Import.loc_start =
+                    {Ppxlib__.Import.pos_fname = "_none_"; pos_lnum = 0;
+                     pos_bol = 0; pos_cnum = -1};
+                   loc_end =
+                    {Ppxlib__.Import.pos_fname = "_none_"; pos_lnum = 0;
+                     pos_bol = 0; pos_cnum = -1};
+                   loc_ghost = true};
+                 ppat_loc_stack = []; ppat_attributes = []})}],
+           None,
+           Ppxlib__.Import.Pfunction_body
+            {Ppxlib__.Import.pexp_desc =
+              Ppxlib__.Import.Pexp_apply
+               ({Ppxlib__.Import.pexp_desc =
+                  Ppxlib__.Import.Pexp_ident
+                   {Ppxlib__.Import.txt = Ppxlib__.Import.Lident "+";
+                    loc =
+                     {Ppxlib__.Import.loc_start =
+                       {Ppxlib__.Import.pos_fname = "_none_"; pos_lnum = 0;
+                        pos_bol = 0; pos_cnum = -1};
+                      loc_end =
+                       {Ppxlib__.Import.pos_fname = "_none_"; pos_lnum = 0;
+                        pos_bol = 0; pos_cnum = -1};
+                      loc_ghost = true}};
+                 pexp_loc =
+                  {Ppxlib__.Import.loc_start =
+                    {Ppxlib__.Import.pos_fname = "_none_"; pos_lnum = 0;
+                     pos_bol = 0; pos_cnum = -1};
+                   loc_end =
+                    {Ppxlib__.Import.pos_fname = "_none_"; pos_lnum = 0;
+                     pos_bol = 0; pos_cnum = -1};
+                   loc_ghost = true};
+                 pexp_loc_stack = []; pexp_attributes = []},
+               [(Ppxlib__.Import.Nolabel,
+                 {Ppxlib__.Import.pexp_desc =
+                   Ppxlib__.Import.Pexp_ident
+                    {Ppxlib__.Import.txt = Ppxlib__.Import.Lident "x";
+                     loc =
+                      {Ppxlib__.Import.loc_start =
+                        {Ppxlib__.Import.pos_fname = "_none_"; pos_lnum = 0;
+                         pos_bol = 0; pos_cnum = -1};
+                       loc_end =
+                        {Ppxlib__.Import.pos_fname = "_none_"; pos_lnum = 0;
+                         pos_bol = 0; pos_cnum = -1};
+                       loc_ghost = true}};
+                  pexp_loc =
+                   {Ppxlib__.Import.loc_start =
+                     {Ppxlib__.Import.pos_fname = "_none_"; pos_lnum = 0;
+                      pos_bol = 0; pos_cnum = -1};
+                    loc_end =
+                     {Ppxlib__.Import.pos_fname = "_none_"; pos_lnum = 0;
+                      pos_bol = 0; pos_cnum = -1};
+                    loc_ghost = true};
+                  pexp_loc_stack = []; pexp_attributes = []});
+                (Ppxlib__.Import.Nolabel,
+                 {Ppxlib__.Import.pexp_desc =
+                   Ppxlib__.Import.Pexp_constant
+                    (Ppxlib__.Import.Pconst_integer ("1", None));
+                  pexp_loc =
+                   {Ppxlib__.Import.loc_start =
+                     {Ppxlib__.Import.pos_fname = "_none_"; pos_lnum = 0;
+                      pos_bol = 0; pos_cnum = -1};
+                    loc_end =
+                     {Ppxlib__.Import.pos_fname = "_none_"; pos_lnum = 0;
+                      pos_bol = 0; pos_cnum = -1};
+                    loc_ghost = true};
+                  pexp_loc_stack = []; pexp_attributes = []})]);
+             pexp_loc =
+              {Ppxlib__.Import.loc_start =
+                {Ppxlib__.Import.pos_fname = "_none_"; pos_lnum = 0;
+                 pos_bol = 0; pos_cnum = -1};
+               loc_end =
+                {Ppxlib__.Import.pos_fname = "_none_"; pos_lnum = 0;
+                 pos_bol = 0; pos_cnum = -1};
+               loc_ghost = true};
+             pexp_loc_stack = []; pexp_attributes = []});
+         pexp_loc =
+          {Ppxlib__.Import.loc_start =
+            {Ppxlib__.Import.pos_fname = "_none_"; pos_lnum = 0; pos_bol = 0;
+             pos_cnum = -1};
+           loc_end =
+            {Ppxlib__.Import.pos_fname = "_none_"; pos_lnum = 0; pos_bol = 0;
+             pos_cnum = -1};
+           loc_ghost = true};
+         pexp_loc_stack = []; pexp_attributes = []};
+       pvb_constraint = None; pvb_attributes = [];
+       pvb_loc =
+        {Ppxlib__.Import.loc_start =
+          {Ppxlib__.Import.pos_fname = "_none_"; pos_lnum = 0; pos_bol = 0;
+           pos_cnum = -1};
+         loc_end =
+          {Ppxlib__.Import.pos_fname = "_none_"; pos_lnum = 0; pos_bol = 0;
+           pos_cnum = -1};
+         loc_ghost = true}}]);
+   pstr_loc =
+    {Ppxlib__.Import.loc_start =
+      {Ppxlib__.Import.pos_fname = "_none_"; pos_lnum = 0; pos_bol = 0;
+       pos_cnum = -1};
+     loc_end =
+      {Ppxlib__.Import.pos_fname = "_none_"; pos_lnum = 0; pos_bol = 0;
+       pos_cnum = -1};
+     loc_ghost = true}}
|}]


(* As expected here, the [pvb_constraint] field is none, the pattern and
@@ -69,21 +192,85 @@ let vb =


[%%expect{|
val vb : structure_item =
-  Pstr_value
-    ( Nonrecursive
-    , [ { pvb_pat = Ppat_var "x"
-        ; pvb_expr = Pexp_constant (Pconst_integer ( "12", None))
-        ; pvb_constraint =
-            Some
-              (Pvc_constraint
-                 { locally_abstract_univars = []
-                 ; typ = Ptyp_constr ( Lident "int", [])
-                 })
-        ; pvb_attributes = __attrs
-        ; pvb_loc = __loc
-        }
-      ]
-    )
+  {Ppxlib__.Import.pstr_desc =
+    Ppxlib__.Import.Pstr_value (Ppxlib__.Import.Nonrecursive,
+     [{Ppxlib__.Import.pvb_pat =
+        {Ppxlib__.Import.ppat_desc =
+          Ppxlib__.Import.Ppat_var
+           {Ppxlib__.Import.txt = "x";
+            loc =
+             {Ppxlib__.Import.loc_start =
+               {Ppxlib__.Import.pos_fname = "_none_"; pos_lnum = 0;
+                pos_bol = 0; pos_cnum = -1};
+              loc_end =
+               {Ppxlib__.Import.pos_fname = "_none_"; pos_lnum = 0;
+                pos_bol = 0; pos_cnum = -1};
+              loc_ghost = true}};
+         ppat_loc =
+          {Ppxlib__.Import.loc_start =
+            {Ppxlib__.Import.pos_fname = "_none_"; pos_lnum = 0; pos_bol = 0;
+             pos_cnum = -1};
+           loc_end =
+            {Ppxlib__.Import.pos_fname = "_none_"; pos_lnum = 0; pos_bol = 0;
+             pos_cnum = -1};
+           loc_ghost = true};
+         ppat_loc_stack = []; ppat_attributes = []};
+       pvb_expr =
+        {Ppxlib__.Import.pexp_desc =
+          Ppxlib__.Import.Pexp_constant
+           (Ppxlib__.Import.Pconst_integer ("12", None));
+         pexp_loc =
+          {Ppxlib__.Import.loc_start =
+            {Ppxlib__.Import.pos_fname = "_none_"; pos_lnum = 0; pos_bol = 0;
+             pos_cnum = -1};
+           loc_end =
+            {Ppxlib__.Import.pos_fname = "_none_"; pos_lnum = 0; pos_bol = 0;
+             pos_cnum = -1};
+           loc_ghost = true};
+         pexp_loc_stack = []; pexp_attributes = []};
+       pvb_constraint =
+        Some
+         (Ppxlib__.Import.Pvc_constraint
+           {Ppxlib__.Import.locally_abstract_univars = [];
+            typ =
+             {Ppxlib__.Import.ptyp_desc =
+               Ppxlib__.Import.Ptyp_constr
+                ({Ppxlib__.Import.txt = Ppxlib__.Import.Lident "int";
+                  loc =
+                   {Ppxlib__.Import.loc_start =
+                     {Ppxlib__.Import.pos_fname = "_none_"; pos_lnum = 0;
+                      pos_bol = 0; pos_cnum = -1};
+                    loc_end =
+                     {Ppxlib__.Import.pos_fname = "_none_"; pos_lnum = 0;
+                      pos_bol = 0; pos_cnum = -1};
+                    loc_ghost = true}},
+                []);
+              ptyp_loc =
+               {Ppxlib__.Import.loc_start =
+                 {Ppxlib__.Import.pos_fname = "_none_"; pos_lnum = 0;
+                  pos_bol = 0; pos_cnum = -1};
+                loc_end =
+                 {Ppxlib__.Import.pos_fname = "_none_"; pos_lnum = 0;
+                  pos_bol = 0; pos_cnum = -1};
+                loc_ghost = true};
+              ptyp_loc_stack = []; ptyp_attributes = []}});
+       pvb_attributes = [];
+       pvb_loc =
+        {Ppxlib__.Import.loc_start =
+          {Ppxlib__.Import.pos_fname = "_none_"; pos_lnum = 0; pos_bol = 0;
+           pos_cnum = -1};
+         loc_end =
+          {Ppxlib__.Import.pos_fname = "_none_"; pos_lnum = 0; pos_bol = 0;
+           pos_cnum = -1};
+         loc_ghost = true}}]);
+   pstr_loc =
+    {Ppxlib__.Import.loc_start =
+      {Ppxlib__.Import.pos_fname = "_none_"; pos_lnum = 0; pos_bol = 0;
+       pos_cnum = -1};
+     loc_end =
+      {Ppxlib__.Import.pos_fname = "_none_"; pos_lnum = 0; pos_bol = 0;
+       pos_cnum = -1};
+     loc_ghost = true}}
|}]


(* --------- poly Ppat_constraint to pvb_constraint --------- *)
@@ -105,37 +292,177 @@ let vb =


[%%expect{|
val vb : structure_item =
-  Pstr_value
-    ( Nonrecursive
-    , [ { pvb_pat = Ppat_var "f"
-        ; pvb_expr =
-            Pexp_function
-              ( [ { pparam_loc = __loc
-                  ; pparam_desc = Pparam_val ( Nolabel, None, Ppat_var "x")
-                  }
-                ]
-              , None
-              , Pfunction_body (Pexp_ident (Lident "unit"))
-              )
-        ; pvb_constraint =
-            Some
-              (Pvc_constraint
-                 { locally_abstract_univars = []
-                 ; typ =
-                     Ptyp_poly
-                       ( [ "a"]
-                       , Ptyp_arrow
-                           ( Nolabel
-                           , Ptyp_var "a"
-                           , Ptyp_constr ( Lident "unit", [])
-                           )
-                       )
-                 })
-        ; pvb_attributes = __attrs
-        ; pvb_loc = __loc
-        }
-      ]
-    )
+  {Ppxlib__.Import.pstr_desc =
+    Ppxlib__.Import.Pstr_value (Ppxlib__.Import.Nonrecursive,
+     [{Ppxlib__.Import.pvb_pat =
+        {Ppxlib__.Import.ppat_desc =
+          Ppxlib__.Import.Ppat_var
+           {Ppxlib__.Import.txt = "f";
+            loc =
+             {Ppxlib__.Import.loc_start =
+               {Ppxlib__.Import.pos_fname = "_none_"; pos_lnum = 0;
+                pos_bol = 0; pos_cnum = -1};
+              loc_end =
+               {Ppxlib__.Import.pos_fname = "_none_"; pos_lnum = 0;
+                pos_bol = 0; pos_cnum = -1};
+              loc_ghost = true}};
+         ppat_loc =
+          {Ppxlib__.Import.loc_start =
+            {Ppxlib__.Import.pos_fname = "_none_"; pos_lnum = 0; pos_bol = 0;
+             pos_cnum = -1};
+           loc_end =
+            {Ppxlib__.Import.pos_fname = "_none_"; pos_lnum = 0; pos_bol = 0;
+             pos_cnum = -1};
+           loc_ghost = true};
+         ppat_loc_stack = []; ppat_attributes = []};
+       pvb_expr =
+        {Ppxlib__.Import.pexp_desc =
+          Ppxlib__.Import.Pexp_function
+           ([{Ppxlib__.Import.pparam_loc =
+               {Ppxlib__.Import.loc_start =
+                 {Ppxlib__.Import.pos_fname = "_none_"; pos_lnum = 0;
+                  pos_bol = 0; pos_cnum = -1};
+                loc_end =
+                 {Ppxlib__.Import.pos_fname = "_none_"; pos_lnum = 0;
+                  pos_bol = 0; pos_cnum = -1};
+                loc_ghost = true};
+              pparam_desc =
+               Ppxlib__.Import.Pparam_val (Ppxlib__.Import.Nolabel, None,
+                {Ppxlib__.Import.ppat_desc =
+                  Ppxlib__.Import.Ppat_var
+                   {Ppxlib__.Import.txt = "x";
+                    loc =
+                     {Ppxlib__.Import.loc_start =
+                       {Ppxlib__.Import.pos_fname = "_none_"; pos_lnum = 0;
+                        pos_bol = 0; pos_cnum = -1};
+                      loc_end =
+                       {Ppxlib__.Import.pos_fname = "_none_"; pos_lnum = 0;
+                        pos_bol = 0; pos_cnum = -1};
+                      loc_ghost = true}};
+                 ppat_loc =
+                  {Ppxlib__.Import.loc_start =
+                    {Ppxlib__.Import.pos_fname = "_none_"; pos_lnum = 0;
+                     pos_bol = 0; pos_cnum = -1};
+                   loc_end =
+                    {Ppxlib__.Import.pos_fname = "_none_"; pos_lnum = 0;
+                     pos_bol = 0; pos_cnum = -1};
+                   loc_ghost = true};
+                 ppat_loc_stack = []; ppat_attributes = []})}],
+           None,
+           Ppxlib__.Import.Pfunction_body
+            {Ppxlib__.Import.pexp_desc =
+              Ppxlib__.Import.Pexp_ident
+               {Ppxlib__.Import.txt = Ppxlib__.Import.Lident "unit";
+                loc =
+                 {Ppxlib__.Import.loc_start =
+                   {Ppxlib__.Import.pos_fname = "_none_"; pos_lnum = 0;
+                    pos_bol = 0; pos_cnum = -1};
+                  loc_end =
+                   {Ppxlib__.Import.pos_fname = "_none_"; pos_lnum = 0;
+                    pos_bol = 0; pos_cnum = -1};
+                  loc_ghost = true}};
+             pexp_loc =
+              {Ppxlib__.Import.loc_start =
+                {Ppxlib__.Import.pos_fname = "_none_"; pos_lnum = 0;
+                 pos_bol = 0; pos_cnum = -1};
+               loc_end =
+                {Ppxlib__.Import.pos_fname = "_none_"; pos_lnum = 0;
+                 pos_bol = 0; pos_cnum = -1};
+               loc_ghost = true};
+             pexp_loc_stack = []; pexp_attributes = []});
+         pexp_loc =
+          {Ppxlib__.Import.loc_start =
+            {Ppxlib__.Import.pos_fname = "_none_"; pos_lnum = 0; pos_bol = 0;
+             pos_cnum = -1};
+           loc_end =
+            {Ppxlib__.Import.pos_fname = "_none_"; pos_lnum = 0; pos_bol = 0;
+             pos_cnum = -1};
+           loc_ghost = true};
+         pexp_loc_stack = []; pexp_attributes = []};
+       pvb_constraint =
+        Some
+         (Ppxlib__.Import.Pvc_constraint
+           {Ppxlib__.Import.locally_abstract_univars = [];
+            typ =
+             {Ppxlib__.Import.ptyp_desc =
+               Ppxlib__.Import.Ptyp_poly
+                ([{Ppxlib__.Import.txt = "a";
+                   loc =
+                    {Ppxlib__.Import.loc_start =
+                      {Ppxlib__.Import.pos_fname = "_none_"; pos_lnum = 0;
+                       pos_bol = 0; pos_cnum = -1};
+                     loc_end =
+                      {Ppxlib__.Import.pos_fname = "_none_"; pos_lnum = 0;
+                       pos_bol = 0; pos_cnum = -1};
+                     loc_ghost = true}}],
+                {Ppxlib__.Import.ptyp_desc =
+                  Ppxlib__.Import.Ptyp_arrow (Ppxlib__.Import.Nolabel,
+                   {Ppxlib__.Import.ptyp_desc = Ppxlib__.Import.Ptyp_var "a";
+                    ptyp_loc =
+                     {Ppxlib__.Import.loc_start =
+                       {Ppxlib__.Import.pos_fname = "_none_"; pos_lnum = 0;
+                        pos_bol = 0; pos_cnum = -1};
+                      loc_end =
+                       {Ppxlib__.Import.pos_fname = "_none_"; pos_lnum = 0;
+                        pos_bol = 0; pos_cnum = -1};
+                      loc_ghost = true};
+                    ptyp_loc_stack = []; ptyp_attributes = []},
+                   {Ppxlib__.Import.ptyp_desc =
+                     Ppxlib__.Import.Ptyp_constr
+                      ({Ppxlib__.Import.txt = Ppxlib__.Import.Lident "unit";
+                        loc =
+                         {Ppxlib__.Import.loc_start =
+                           {Ppxlib__.Import.pos_fname = "_none_";
+                            pos_lnum = 0; pos_bol = 0; pos_cnum = -1};
+                          loc_end =
+                           {Ppxlib__.Import.pos_fname = "_none_";
+                            pos_lnum = 0; pos_bol = 0; pos_cnum = -1};
+                          loc_ghost = true}},
+                      []);
+                    ptyp_loc =
+                     {Ppxlib__.Import.loc_start =
+                       {Ppxlib__.Import.pos_fname = "_none_"; pos_lnum = 0;
+                        pos_bol = 0; pos_cnum = -1};
+                      loc_end =
+                       {Ppxlib__.Import.pos_fname = "_none_"; pos_lnum = 0;
+                        pos_bol = 0; pos_cnum = -1};
+                      loc_ghost = true};
+                    ptyp_loc_stack = []; ptyp_attributes = []});
+                 ptyp_loc =
+                  {Ppxlib__.Import.loc_start =
+                    {Ppxlib__.Import.pos_fname = "_none_"; pos_lnum = 0;
+                     pos_bol = 0; pos_cnum = -1};
+                   loc_end =
+                    {Ppxlib__.Import.pos_fname = "_none_"; pos_lnum = 0;
+                     pos_bol = 0; pos_cnum = -1};
+                   loc_ghost = true};
+                 ptyp_loc_stack = []; ptyp_attributes = []});
+              ptyp_loc =
+               {Ppxlib__.Import.loc_start =
+                 {Ppxlib__.Import.pos_fname = "_none_"; pos_lnum = 0;
+                  pos_bol = 0; pos_cnum = -1};
+                loc_end =
+                 {Ppxlib__.Import.pos_fname = "_none_"; pos_lnum = 0;
+                  pos_bol = 0; pos_cnum = -1};
+                loc_ghost = true};
+              ptyp_loc_stack = []; ptyp_attributes = []}});
+       pvb_attributes = [];
+       pvb_loc =
+        {Ppxlib__.Import.loc_start =
+          {Ppxlib__.Import.pos_fname = "_none_"; pos_lnum = 0; pos_bol = 0;
+           pos_cnum = -1};
+         loc_end =
+          {Ppxlib__.Import.pos_fname = "_none_"; pos_lnum = 0; pos_bol = 0;
+           pos_cnum = -1};
+         loc_ghost = true}}]);
+   pstr_loc =
+    {Ppxlib__.Import.loc_start =
+      {Ppxlib__.Import.pos_fname = "_none_"; pos_lnum = 0; pos_bol = 0;
+       pos_cnum = -1};
+     loc_end =
+      {Ppxlib__.Import.pos_fname = "_none_"; pos_lnum = 0; pos_bol = 0;
+       pos_cnum = -1};
+     loc_ghost = true}}
|}]


(* --------- desugared locally abstract univars to pvb_constraint --------- *)
@@ -157,34 +484,167 @@ let vb =


[%%expect{|
val vb : structure_item =
-  Pstr_value
-    ( Nonrecursive
-    , [ { pvb_pat = Ppat_var "f"
-        ; pvb_expr =
-            Pexp_function
-              ( [ { pparam_loc = __loc
-                  ; pparam_desc = Pparam_val ( Nolabel, None, Ppat_any)
-                  }
-                ]
-              , None
-              , Pfunction_body (Pexp_ident (Lident "unit"))
-              )
-        ; pvb_constraint =
-            Some
-              (Pvc_constraint
-                 { locally_abstract_univars = [ "a"]
-                 ; typ =
-                     Ptyp_arrow
-                       ( Nolabel
-                       , Ptyp_constr ( Lident "a", [])
-                       , Ptyp_constr ( Lident "unit", [])
-                       )
-                 })
-        ; pvb_attributes = __attrs
-        ; pvb_loc = __loc
-        }
-      ]
-    )
+  {Ppxlib__.Import.pstr_desc =
+    Ppxlib__.Import.Pstr_value (Ppxlib__.Import.Nonrecursive,
+     [{Ppxlib__.Import.pvb_pat =
+        {Ppxlib__.Import.ppat_desc =
+          Ppxlib__.Import.Ppat_var
+           {Ppxlib__.Import.txt = "f";
+            loc =
+             {Ppxlib__.Import.loc_start =
+               {Ppxlib__.Import.pos_fname = "_none_"; pos_lnum = 0;
+                pos_bol = 0; pos_cnum = -1};
+              loc_end =
+               {Ppxlib__.Import.pos_fname = "_none_"; pos_lnum = 0;
+                pos_bol = 0; pos_cnum = -1};
+              loc_ghost = true}};
+         ppat_loc =
+          {Ppxlib__.Import.loc_start =
+            {Ppxlib__.Import.pos_fname = "_none_"; pos_lnum = 0; pos_bol = 0;
+             pos_cnum = -1};
+           loc_end =
+            {Ppxlib__.Import.pos_fname = "_none_"; pos_lnum = 0; pos_bol = 0;
+             pos_cnum = -1};
+           loc_ghost = true};
+         ppat_loc_stack = []; ppat_attributes = []};
+       pvb_expr =
+        {Ppxlib__.Import.pexp_desc =
+          Ppxlib__.Import.Pexp_function
+           ([{Ppxlib__.Import.pparam_loc =
+               {Ppxlib__.Import.loc_start =
+                 {Ppxlib__.Import.pos_fname = "_none_"; pos_lnum = 0;
+                  pos_bol = 0; pos_cnum = -1};
+                loc_end =
+                 {Ppxlib__.Import.pos_fname = "_none_"; pos_lnum = 0;
+                  pos_bol = 0; pos_cnum = -1};
+                loc_ghost = true};
+              pparam_desc =
+               Ppxlib__.Import.Pparam_val (Ppxlib__.Import.Nolabel, None,
+                {Ppxlib__.Import.ppat_desc = Ppxlib__.Import.Ppat_any;
+                 ppat_loc =
+                  {Ppxlib__.Import.loc_start =
+                    {Ppxlib__.Import.pos_fname = "_none_"; pos_lnum = 0;
+                     pos_bol = 0; pos_cnum = -1};
+                   loc_end =
+                    {Ppxlib__.Import.pos_fname = "_none_"; pos_lnum = 0;
+                     pos_bol = 0; pos_cnum = -1};
+                   loc_ghost = true};
+                 ppat_loc_stack = []; ppat_attributes = []})}],
+           None,
+           Ppxlib__.Import.Pfunction_body
+            {Ppxlib__.Import.pexp_desc =
+              Ppxlib__.Import.Pexp_ident
+               {Ppxlib__.Import.txt = Ppxlib__.Import.Lident "unit";
+                loc =
+                 {Ppxlib__.Import.loc_start =
+                   {Ppxlib__.Import.pos_fname = "_none_"; pos_lnum = 0;
+                    pos_bol = 0; pos_cnum = -1};
+                  loc_end =
+                   {Ppxlib__.Import.pos_fname = "_none_"; pos_lnum = 0;
+                    pos_bol = 0; pos_cnum = -1};
+                  loc_ghost = true}};
+             pexp_loc =
+              {Ppxlib__.Import.loc_start =
+                {Ppxlib__.Import.pos_fname = "_none_"; pos_lnum = 0;
+                 pos_bol = 0; pos_cnum = -1};
+               loc_end =
+                {Ppxlib__.Import.pos_fname = "_none_"; pos_lnum = 0;
+                 pos_bol = 0; pos_cnum = -1};
+               loc_ghost = true};
+             pexp_loc_stack = []; pexp_attributes = []});
+         pexp_loc =
+          {Ppxlib__.Import.loc_start =
+            {Ppxlib__.Import.pos_fname = "_none_"; pos_lnum = 0; pos_bol = 0;
+             pos_cnum = -1};
+           loc_end =
+            {Ppxlib__.Import.pos_fname = "_none_"; pos_lnum = 0; pos_bol = 0;
+             pos_cnum = -1};
+           loc_ghost = true};
+         pexp_loc_stack = []; pexp_attributes = []};
+       pvb_constraint =
+        Some
+         (Ppxlib__.Import.Pvc_constraint
+           {Ppxlib__.Import.locally_abstract_univars =
+             [{Ppxlib__.Import.txt = "a";
+               loc =
+                {Ppxlib__.Import.loc_start =
+                  {Ppxlib__.Import.pos_fname = "_none_"; pos_lnum = 0;
+                   pos_bol = 0; pos_cnum = -1};
+                 loc_end =
+                  {Ppxlib__.Import.pos_fname = "_none_"; pos_lnum = 0;
+                   pos_bol = 0; pos_cnum = -1};
+                 loc_ghost = true}}];
+            typ =
+             {Ppxlib__.Import.ptyp_desc =
+               Ppxlib__.Import.Ptyp_arrow (Ppxlib__.Import.Nolabel,
+                {Ppxlib__.Import.ptyp_desc =
+                  Ppxlib__.Import.Ptyp_constr
+                   ({Ppxlib__.Import.txt = Ppxlib__.Import.Lident "a";
+                     loc =
+                      {Ppxlib__.Import.loc_start =
+                        {Ppxlib__.Import.pos_fname = "_none_"; pos_lnum = 0;
+                         pos_bol = 0; pos_cnum = -1};
+                       loc_end =
+                        {Ppxlib__.Import.pos_fname = "_none_"; pos_lnum = 0;
+                         pos_bol = 0; pos_cnum = -1};
+                       loc_ghost = true}},
+                   []);
+                 ptyp_loc =
+                  {Ppxlib__.Import.loc_start =
+                    {Ppxlib__.Import.pos_fname = "_none_"; pos_lnum = 0;
+                     pos_bol = 0; pos_cnum = -1};
+                   loc_end =
+                    {Ppxlib__.Import.pos_fname = "_none_"; pos_lnum = 0;
+                     pos_bol = 0; pos_cnum = -1};
+                   loc_ghost = true};
+                 ptyp_loc_stack = []; ptyp_attributes = []},
+                {Ppxlib__.Import.ptyp_desc =
+                  Ppxlib__.Import.Ptyp_constr
+                   ({Ppxlib__.Import.txt = Ppxlib__.Import.Lident "unit";
+                     loc =
+                      {Ppxlib__.Import.loc_start =
+                        {Ppxlib__.Import.pos_fname = "_none_"; pos_lnum = 0;
+                         pos_bol = 0; pos_cnum = -1};
+                       loc_end =
+                        {Ppxlib__.Import.pos_fname = "_none_"; pos_lnum = 0;
+                         pos_bol = 0; pos_cnum = -1};
+                       loc_ghost = true}},
+                   []);
+                 ptyp_loc =
+                  {Ppxlib__.Import.loc_start =
+                    {Ppxlib__.Import.pos_fname = "_none_"; pos_lnum = 0;
+                     pos_bol = 0; pos_cnum = -1};
+                   loc_end =
+                    {Ppxlib__.Import.pos_fname = "_none_"; pos_lnum = 0;
+                     pos_bol = 0; pos_cnum = -1};
+                   loc_ghost = true};
+                 ptyp_loc_stack = []; ptyp_attributes = []});
+              ptyp_loc =
+               {Ppxlib__.Import.loc_start =
+                 {Ppxlib__.Import.pos_fname = "_none_"; pos_lnum = 0;
+                  pos_bol = 0; pos_cnum = -1};
+                loc_end =
+                 {Ppxlib__.Import.pos_fname = "_none_"; pos_lnum = 0;
+                  pos_bol = 0; pos_cnum = -1};
+                loc_ghost = true};
+              ptyp_loc_stack = []; ptyp_attributes = []}});
+       pvb_attributes = [];
+       pvb_loc =
+        {Ppxlib__.Import.loc_start =
+          {Ppxlib__.Import.pos_fname = "_none_"; pos_lnum = 0; pos_bol = 0;
+           pos_cnum = -1};
+         loc_end =
+          {Ppxlib__.Import.pos_fname = "_none_"; pos_lnum = 0; pos_bol = 0;
+           pos_cnum = -1};
+         loc_ghost = true}}]);
+   pstr_loc =
+    {Ppxlib__.Import.loc_start =
+      {Ppxlib__.Import.pos_fname = "_none_"; pos_lnum = 0; pos_bol = 0;
+       pos_cnum = -1};
+     loc_end =
+      {Ppxlib__.Import.pos_fname = "_none_"; pos_lnum = 0; pos_bol = 0;
+       pos_cnum = -1};
+     loc_ghost = true}}
|}]


(* As expected here, the matching constraint from the pattern and expression or
@@ -194,3 +654,5 @@ val vb : structure_item =
(* --------- coercion to pvb_constraint --------- *)


(*TODO*)
+[%%expect{|
+|}]
"/usr/bin/env" "bash" "-c" "opam exec -- dune build @install @check @runtest && rm -rf _build" failed with exit status 1
2025-08-11 12:14.47: Job failed: Failed: Build failed