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-22.04-4.14_opam-2.4)
Base: ocaml/opam:ubuntu-22.04-ocaml-4.14@sha256:ca3027de326cacc5274455175c0a1ecc28bb1c6747cb1b09e38dbc2fd13a188a
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-22.04-ocaml-4.14@sha256:ca3027de326cacc5274455175c0a1ecc28bb1c6747cb1b09e38dbc2fd13a188a
# ubuntu-22.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-22.04-ocaml-4.14@sha256:ca3027de326cacc5274455175c0a1ecc28bb1c6747cb1b09e38dbc2fd13a188a-ubuntu-22.04-4.14_opam-2.4-b68e9df276868c41024ba0e8680a3274"
2025-08-11 12:13.23: Using OBuilder spec:
((from ocaml/opam:ubuntu-22.04-ocaml-4.14@sha256:ca3027de326cacc5274455175c0a1ecc28bb1c6747cb1b09e38dbc2fd13a188a)
(comment ubuntu-22.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 phoebe
HEAD is now at b0aa3047 Expose Lexer.comments in the Parse module
HEAD is now at e516f47c TMP
(from ocaml/opam:ubuntu-22.04-ocaml-4.14@sha256:ca3027de326cacc5274455175c0a1ecc28bb1c6747cb1b09e38dbc2fd13a188a)
2025-08-11 12:13.25 ---> using "703c56f41cc54852e5691c48b2697241ed9dc9772436a19ac0903e42512bf78d" from cache
/: (comment ubuntu-22.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 "ccd04543be5b31bade9c13e30822b6576d9f499370ef4c7472bb516a15f2bae5" 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 255 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=255 --global
Format upgrade done.
<><> Updating repositories ><><><><><><><><><><><><><><><><><><><><><><><><><><>
[default] Initialised
2025-08-11 12:13.25 ---> using "4d4569e4a8b19d4d0f83abeba5228664bcdb030cec129ad6bbf2bbeb96872f7d" from cache
/src: (run (shell "uname -rs && opam exec -- ocaml -version && opam --version"))
Linux 6.8.0-63-generic
The OCaml toplevel, version 4.14.2
2.4.1
2025-08-11 12:13.25 ---> using "d446935a96660e369b503d2f9febc4a2764fc4af69076e1e4de0c2a0d39dda96" from cache
/src: (workdir /src)
/src: (run (shell "sudo chown opam /src"))
2025-08-11 12:13.25 ---> using "cf314af0afe6fff8657b3d29f3209115150809f03091d77f72b9493a02399d62" 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.42 ---> saved as "1abccff49a3ef655405052205afd0429e6f97691e17b3f014041dbb7649d1238"
/src: (copy (src ppxlib.opam ppxlib-tools.opam ppxlib-bench.opam) (dst ./))
2025-08-11 12:13.42 ---> saved as "53843aba5e572d9d08adfd78529e3db8faf5fab3ebcc56df24efe0bebb3334b0"
/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.48 ---> saved as "cb7bd6f1f6fd69270be9444f99351c5ccfcedb2e2ecafe06136ba7527acd53a3"
/src: (run (network host)
(shell "echo '(lang dune 3.0)' > './dune-project'"))
2025-08-11 12:13.48 ---> saved as "ee901c5345da87a23e6aed88f9957703ab891711f53913c78acabfe053a46a3e"
/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"
- Get:1 http://security.ubuntu.com/ubuntu jammy-security InRelease [129 kB]
- Hit:2 http://archive.ubuntu.com/ubuntu jammy InRelease
- Get:3 http://archive.ubuntu.com/ubuntu jammy-updates InRelease [128 kB]
- Get:4 http://security.ubuntu.com/ubuntu jammy-security/restricted amd64 Packages [5103 kB]
- Get:5 http://archive.ubuntu.com/ubuntu jammy-backports InRelease [127 kB]
- Get:6 http://archive.ubuntu.com/ubuntu jammy-updates/restricted amd64 Packages [5290 kB]
- Get:7 http://security.ubuntu.com/ubuntu jammy-security/main amd64 Packages [3207 kB]
- Get:8 http://security.ubuntu.com/ubuntu jammy-security/universe amd64 Packages [1270 kB]
- Get:9 http://archive.ubuntu.com/ubuntu jammy-updates/universe amd64 Packages [1575 kB]
- Get:10 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 Packages [3518 kB]
- Fetched 20.3 MB in 3s (7997 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:14.01 ---> saved as "1208ee111d914335ba96d7ba89e67fe561eeaa1d0b1157a2491a46f74b80eb30"
/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 stdlib-shims.0.3.0
-> installed csexp.1.5.2
-> installed ocaml-compiler-libs.v0.12.4
-> installed re.1.13.2
-> installed sexplib0.v0.16.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.47 ---> saved as "6b842e9dc28f8c0fceb77bc4af72e8744350e1f593b519ae1487d75b284bebb1"
/src: (copy (src .) (dst /src))
2025-08-11 12:14.47 ---> saved as "d56446b488f4a6f12ba68ca1f20ae0f84d8002b30cc69065c81bf3e595b8ecbf"
/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:15.09: Job failed: Failed: Build failed