This commit is contained in:
swrup 2025-11-11 02:07:51 +01:00
parent aa2ff7b2f0
commit 2f3113f55d
11742 changed files with 1223940 additions and 0 deletions

View file

@ -0,0 +1,86 @@
open Dune_rules
open! Stdune
open Dune_tests_common
let () = init ()
(* Dune_file.Executables.Link_mode.decode *)
let test s =
Dune_lang.Decoder.parse
Executables.Link_mode.decode
Univ_map.empty
(Dune_lang.Parser.parse_string ~fname:"" ~mode:Dune_lang.Parser.Mode.Single s)
|> Executables.Link_mode.to_dyn
|> print_dyn
;;
let%expect_test _ =
(* Link modes can be read as a (<mode> <kind>) list *)
test "(best exe)";
[%expect
{|
Other { mode = best; kind = exe }
|}]
;;
let%expect_test _ =
(* Some shortcuts also exist *)
test "exe";
[%expect
{|
Other { mode = best; kind = exe }
|}]
;;
let%expect_test _ =
test "object";
[%expect
{|
Other { mode = best; kind = object }
|}]
;;
let%expect_test _ =
test "shared_object";
[%expect
{|
Other { mode = best; kind = shared_object }
|}]
;;
let%expect_test _ =
test "byte";
[%expect
{|
Other { mode = byte; kind = exe }
|}]
;;
let%expect_test _ =
test "native";
[%expect
{|
Other { mode = native; kind = exe }
|}]
;;
(* Dune_file.Executables.Link_mode.encode *)
let test l = Executables.Link_mode.encode l
let%expect_test _ =
(* In the general case, modes are serialized as a list *)
test (Other { kind = Shared_object; mode = Byte }) |> Dune_lang.to_dyn |> print_dyn;
[%expect
{|
[ "byte"; "shared_object" ]
|}]
;;
(* But the specialized ones are serialized in the minimal version *)
let%expect_test _ =
test Executables.Link_mode.exe |> Dune_lang.to_dyn |> print_dyn;
[%expect
{|
"exe"
|}]
;;