mte/unikernel/duniverse/dune_/test/blackbox-tests/test-cases/melange/merlin.t

184 lines
6.9 KiB
Perl
Raw Normal View History

2025-11-11 02:07:51 +01:00
Temporary special merlin support for melange only libs
$ ocamlc_where="$(ocamlc -where)"
$ export BUILD_PATH_PREFIX_MAP="/OCAMLC_WHERE=$ocamlc_where:$BUILD_PATH_PREFIX_MAP"
$ melc_compiler="$(which melc)"
$ export BUILD_PATH_PREFIX_MAP="$(melc_stdlib_prefix)":$BUILD_PATH_PREFIX_MAP
$ export BUILD_PATH_PREFIX_MAP="/MELC_COMPILER=$melc_compiler:$BUILD_PATH_PREFIX_MAP"
$ export BUILD_PATH_PREFIX_MAP="/MELC_STDLIB=$(ocamlfind query melange):$BUILD_PATH_PREFIX_MAP"
$ cat >dune-project <<EOF
> (lang dune 3.8)
> (using melange 0.1)
> EOF
$ lib=foo
$ cat >dune <<EOF
> (library
> (name $lib)
> (private_modules bar)
> (modes melange))
> EOF
$ touch bar.ml $lib.ml
$ dune build @check
$ dune ocaml merlin dump-config "$PWD" | grep -i "$lib"
((INDEX $TESTCASE_ROOT/_build/default/.foo.objs/cctx.ocaml-index)
(B $TESTCASE_ROOT/_build/default/.foo.objs/melange)
(FLG (-open Foo__))
(UNIT_NAME foo__Bar))
((INDEX $TESTCASE_ROOT/_build/default/.foo.objs/cctx.ocaml-index)
(B $TESTCASE_ROOT/_build/default/.foo.objs/melange)
(FLG (-open Foo__))
(UNIT_NAME foo__Bar))
Foo: _build/default/foo
((INDEX $TESTCASE_ROOT/_build/default/.foo.objs/cctx.ocaml-index)
(B $TESTCASE_ROOT/_build/default/.foo.objs/melange)
(FLG (-open Foo__))
(UNIT_NAME foo))
Foo: _build/default/foo.ml
((INDEX $TESTCASE_ROOT/_build/default/.foo.objs/cctx.ocaml-index)
(B $TESTCASE_ROOT/_build/default/.foo.objs/melange)
(FLG (-open Foo__))
(UNIT_NAME foo))
Foo__: _build/default/foo__
((INDEX $TESTCASE_ROOT/_build/default/.foo.objs/cctx.ocaml-index)
(B $TESTCASE_ROOT/_build/default/.foo.objs/melange)
(UNIT_NAME foo__))
Foo__: _build/default/foo__.ml-gen
((INDEX $TESTCASE_ROOT/_build/default/.foo.objs/cctx.ocaml-index)
(B $TESTCASE_ROOT/_build/default/.foo.objs/melange)
(UNIT_NAME foo__))
Paths to Melange stdlib appear in B and S entries without melange.emit stanza
$ dune ocaml dump-dot-merlin $PWD | grep -e "^B " -e "^S "
B /MELC_STDLIB/__private__/melange_mini_stdlib/melange/.public_cmi_melange
B /MELC_STDLIB/melange
B /MELC_STDLIB/melange
B $TESTCASE_ROOT/_build/default/.foo.objs/melange
S /MELC_STDLIB
S /MELC_STDLIB/__private__/melange_mini_stdlib
S /MELC_STDLIB
S $TESTCASE_ROOT
$ target=output
$ cat >dune <<EOF
> (melange.emit
> (target "$target")
> (compile_flags :standard --mel-noassertfalse)
> (emit_stdlib false)
> (modules main))
> EOF
$ touch main.ml
$ dune build @check
$ dune ocaml merlin dump-config $PWD | grep -i "$target"
(B $TESTCASE_ROOT/_build/default/.output.mobjs/melange)
(B $TESTCASE_ROOT/_build/default/.output.mobjs/melange)
Dump-dot-merlin includes the melange flags
$ dune ocaml dump-dot-merlin $PWD
EXCLUDE_QUERY_DIR
STDLIB /MELC_STDLIB/melange
SOURCE_ROOT $TESTCASE_ROOT
B /MELC_STDLIB/__private__/melange_mini_stdlib/melange/.public_cmi_melange
B /MELC_STDLIB/melange
B /MELC_STDLIB/melange
B $TESTCASE_ROOT/_build/default/.output.mobjs/melange
S /MELC_STDLIB
S /MELC_STDLIB/__private__/melange_mini_stdlib
S /MELC_STDLIB
S $TESTCASE_ROOT
# FLG -w @1..3@5..28@30..39@43@46..47@49..57@61..62@67@69-40 -strict-sequence -strict-formats -short-paths -keep-locs -g --mel-noassertfalse
Check for flag directives ordering when another preprocessor is defined
$ cat >fooppx.ml <<EOF
> open Ppxlib
>
> let rules =
> let extension =
> Extension.declare "test" Expression Ast_pattern.__ (fun ~loc ~path:_ _ ->
> Ast_builder.Default.eint ~loc 42)
> in
> [ Context_free.Rule.extension extension ]
>
> let () = Ppxlib.Driver.register_transformation "rules" ~rules
> EOF
$ cat >dune <<EOF
> (library
> (name $lib)
> (private_modules bar)
> (modules bar)
> (preprocess (pps fooppx))
> (modes melange))
> (library
> (name fooppx)
> (modules fooppx)
> (libraries ppxlib)
> (kind ppx_rewriter))
> EOF
$ dune build @check
User ppx flags should appear in merlin config
$ dune ocaml merlin dump-config $PWD | grep -v "(B " | grep -v "(S "
Bar: _build/default/bar
((INDEX $TESTCASE_ROOT/_build/default/.fooppx.objs/cctx.ocaml-index)
(INDEX $TESTCASE_ROOT/_build/default/.foo.objs/cctx.ocaml-index)
(STDLIB /MELC_STDLIB/melange)
(SOURCE_ROOT $TESTCASE_ROOT)
(EXCLUDE_QUERY_DIR)
(FLG (-w @1..3@5..28@30..39@43@46..47@49..57@61..62@67@69-40 -strict-sequence -strict-formats -short-paths -keep-locs -g))
(FLG (-ppx "$TESTCASE_ROOT/_build/default/.ppx/3a8685470d9b5edd99690707a29a2b1a/ppx.exe --as-ppx --cookie 'library-name="foo"'"))
(FLG (-open Foo))
(UNIT_NAME foo__Bar))
Bar: _build/default/bar.ml
((INDEX $TESTCASE_ROOT/_build/default/.fooppx.objs/cctx.ocaml-index)
(INDEX $TESTCASE_ROOT/_build/default/.foo.objs/cctx.ocaml-index)
(STDLIB /MELC_STDLIB/melange)
(SOURCE_ROOT $TESTCASE_ROOT)
(EXCLUDE_QUERY_DIR)
(FLG (-w @1..3@5..28@30..39@43@46..47@49..57@61..62@67@69-40 -strict-sequence -strict-formats -short-paths -keep-locs -g))
(FLG (-ppx "$TESTCASE_ROOT/_build/default/.ppx/3a8685470d9b5edd99690707a29a2b1a/ppx.exe --as-ppx --cookie 'library-name="foo"'"))
(FLG (-open Foo))
(UNIT_NAME foo__Bar))
Foo: _build/default/foo
((INDEX $TESTCASE_ROOT/_build/default/.fooppx.objs/cctx.ocaml-index)
(INDEX $TESTCASE_ROOT/_build/default/.foo.objs/cctx.ocaml-index)
(STDLIB /MELC_STDLIB/melange)
(SOURCE_ROOT $TESTCASE_ROOT)
(EXCLUDE_QUERY_DIR)
(FLG (-w @1..3@5..28@30..39@43@46..47@49..57@61..62@67@69-40 -strict-sequence -strict-formats -short-paths -keep-locs -g))
(FLG (-ppx "$TESTCASE_ROOT/_build/default/.ppx/3a8685470d9b5edd99690707a29a2b1a/ppx.exe --as-ppx --cookie 'library-name="foo"'"))
(UNIT_NAME foo))
Foo: _build/default/foo.ml-gen
((INDEX $TESTCASE_ROOT/_build/default/.fooppx.objs/cctx.ocaml-index)
(INDEX $TESTCASE_ROOT/_build/default/.foo.objs/cctx.ocaml-index)
(STDLIB /MELC_STDLIB/melange)
(SOURCE_ROOT $TESTCASE_ROOT)
(EXCLUDE_QUERY_DIR)
(FLG (-w @1..3@5..28@30..39@43@46..47@49..57@61..62@67@69-40 -strict-sequence -strict-formats -short-paths -keep-locs -g))
(FLG (-ppx "$TESTCASE_ROOT/_build/default/.ppx/3a8685470d9b5edd99690707a29a2b1a/ppx.exe --as-ppx --cookie 'library-name="foo"'"))
(UNIT_NAME foo))
Fooppx: _build/default/fooppx
((INDEX $TESTCASE_ROOT/_build/default/.fooppx.objs/cctx.ocaml-index)
(INDEX $TESTCASE_ROOT/_build/default/.foo.objs/cctx.ocaml-index)
(STDLIB /OCAMLC_WHERE)
(SOURCE_ROOT $TESTCASE_ROOT)
(EXCLUDE_QUERY_DIR)
(FLG (-w @1..3@5..28@30..39@43@46..47@49..57@61..62@67@69-40 -strict-sequence -strict-formats -short-paths -keep-locs -g))
(UNIT_NAME fooppx))
Fooppx: _build/default/fooppx.ml
((INDEX $TESTCASE_ROOT/_build/default/.fooppx.objs/cctx.ocaml-index)
(INDEX $TESTCASE_ROOT/_build/default/.foo.objs/cctx.ocaml-index)
(STDLIB /OCAMLC_WHERE)
(SOURCE_ROOT $TESTCASE_ROOT)
(EXCLUDE_QUERY_DIR)
(FLG (-w @1..3@5..28@30..39@43@46..47@49..57@61..62@67@69-40 -strict-sequence -strict-formats -short-paths -keep-locs -g))
(UNIT_NAME fooppx))