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,14 @@
(rule
(package ppxlib)
(alias runtest)
(enabled_if
(>= %{ocaml_version} "4.09.0"))
(deps
(:test test.ml)
(package ppxlib))
(action
(chdir
%{project_root}
(progn
(run expect-test %{test})
(diff? %{test} %{test}.corrected)))))

View file

@ -0,0 +1,299 @@
let () = Printexc.record_backtrace false
open Ppxlib
module N = Ppxlib_private.Name
[%%expect{|
module N = Ppxlib.Ppxlib_private.Name
|}]
let dot_suffixes name =
Printf.sprintf "%s"
(Sexplib0.Sexp.to_string_hum
(Sexplib0.Sexp_conv.sexp_of_list Sexplib0.Sexp_conv.sexp_of_string (N.dot_suffixes name)))
[%%expect{|
val dot_suffixes : string -> string = <fun>
|}]
let _ = dot_suffixes "foo.bar.baz"
[%%expect{|
- : string = "(baz bar.baz foo.bar.baz)"
|}]
let _ = dot_suffixes "foo.@bar.baz"
[%%expect{|
- : string = "(bar.baz foo.bar.baz)"
|}]
let split_path name =
let a, b = N.split_path name in
Printf.sprintf "%s"
(Sexplib0.Sexp.to_string_hum
(List [Sexplib0.Sexp_conv.sexp_of_string a; Sexplib0.Sexp_conv.sexp_of_option Sexplib0.Sexp_conv.sexp_of_string b]))
[%%expect{|
val split_path : string -> string = <fun>
|}]
let _ = split_path "a.b.c"
[%%expect{|
- : string = "(a.b.c ())"
|}]
let _ = split_path "a.b.c.D"
[%%expect{|
- : string = "(a.b.c (D))"
|}]
let _ = split_path ".D"
[%%expect{|
- : string = "(\"\" (D))"
|}]
let convert_longident string =
let lident = Longident.parse string in
let name = Longident.name lident in
(name, lident)
[%%expect{|
val convert_longident : string -> string * longident = <fun>
|}]
let _ = convert_longident "x"
[%%expect_in <= 5.3 {|
- : string * longident = ("x", Ppxlib.Longident.Lident "x")
|}]
[%%expect_in >= 5.4 {|
- : string * longident = ("x", Longident.Lident "x")
|}]
let _ = convert_longident "(+)"
[%%expect_in <= 5.3 {|
- : string * longident = ("( + )", Ppxlib.Longident.Lident "+")
|}]
[%%expect_in >= 5.4 {|
- : string * longident = ("( + )", Longident.Lident "+")
|}]
let _ = convert_longident "( + )"
[%%expect_in <= 5.3 {|
- : string * longident = ("( + )", Ppxlib.Longident.Lident "+")
|}]
[%%expect_in >= 5.4 {|
- : string * longident = ("( + )", Longident.Lident "+")
|}]
let _ = convert_longident "Base.x"
[%%expect_in <= 5.3 {|
- : string * longident =
("Base.x", Ppxlib.Longident.Ldot (Ppxlib.Longident.Lident "Base", "x"))
|}]
[%%expect_in >= 5.4 {|
- : string * longident =
("Base.x", Longident.Ldot (Longident.Lident "Base", "x"))
|}]
let _ = convert_longident "Base.(+)"
[%%expect_in <= 5.3 {|
- : string * longident =
("Base.( + )", Ppxlib.Longident.Ldot (Ppxlib.Longident.Lident "Base", "+"))
|}]
[%%expect_in >= 5.4 {|
- : string * longident =
("Base.( + )", Longident.Ldot (Longident.Lident "Base", "+"))
|}]
let _ = convert_longident "Base.( + )"
[%%expect_in <= 5.3 {|
- : string * longident =
("Base.( + )", Ppxlib.Longident.Ldot (Ppxlib.Longident.Lident "Base", "+"))
|}]
[%%expect_in >= 5.4 {|
- : string * longident =
("Base.( + )", Longident.Ldot (Longident.Lident "Base", "+"))
|}]
let _ = convert_longident "Base.( land )"
[%%expect_in <= 5.3 {|
- : string * longident =
("Base.( land )",
Ppxlib.Longident.Ldot (Ppxlib.Longident.Lident "Base", "land"))
|}]
[%%expect_in >= 5.4 {|
- : string * longident =
("Base.( land )", Longident.Ldot (Longident.Lident "Base", "land"))
|}]
let _ = convert_longident "A(B)"
[%%expect_in <= 5.3 {|
Exception:
Invalid_argument "Ppxlib.Longident.parse(application in path): \"A(B)\"".
|}]
[%%expect_in >= 5.4 {|
Exception:
Invalid_argument "Ppxlib.Longident.parse(application in path): \"A(B)\"".
|}]
let _ = convert_longident "A.B(C)"
[%%expect_in <= 5.3 {|
Exception:
Invalid_argument "Ppxlib.Longident.parse(application in path): \"A.B(C)\"".
|}]
[%%expect_in >= 5.4 {|
Exception:
Invalid_argument "Ppxlib.Longident.parse(application in path): \"A.B(C)\"".
|}]
let _ = convert_longident ")"
[%%expect_in <= 5.3 {|
Exception:
Invalid_argument "Ppxlib.Longident.parse(unbalanced parenthesis): \")\"".
|}]
[%%expect_in >= 5.4 {|
Exception:
Invalid_argument "Ppxlib.Longident.parse(unbalanced parenthesis): \")\"".
|}]
let _ = convert_longident "("
[%%expect{|
Exception:
Invalid_argument "Ppxlib.Longident.parse(unbalanced parenthesis): \"(\"".
|}]
let _ = convert_longident "A.(()"
[%%expect{|
Exception:
Invalid_argument "Ppxlib.Longident.parse(unbalanced parenthesis): \"A.(()\"".
|}]
let _ = convert_longident "A.())()"
[%%expect{|
Exception:
Invalid_argument
"Ppxlib.Longident.parse(right parenthesis misplaced): \"A.())()\"".
|}]
let _ = convert_longident "+."
[%%expect_in <= 5.3 {|
- : string * longident = ("( +. )", Ppxlib.Longident.Lident "+.")
|}]
[%%expect_in >= 5.4 {|
- : string * longident = ("( +. )", Longident.Lident "+.")
|}]
let _ = convert_longident "(+.)"
[%%expect_in <= 5.3 {|
- : string * longident = ("( +. )", Ppxlib.Longident.Lident "+.")
|}]
[%%expect_in >= 5.4 {|
- : string * longident = ("( +. )", Longident.Lident "+.")
|}]
let _ = convert_longident "Foo.(+.)"
[%%expect_in <= 5.3 {|
- : string * longident =
("Foo.( +. )", Ppxlib.Longident.Ldot (Ppxlib.Longident.Lident "Foo", "+."))
|}]
[%%expect_in >= 5.4 {|
- : string * longident =
("Foo.( +. )", Longident.Ldot (Longident.Lident "Foo", "+."))
|}]
let _ = convert_longident "Foo.( *. )"
[%%expect_in <= 5.3 {|
- : string * longident =
("Foo.( *. )", Ppxlib.Longident.Ldot (Ppxlib.Longident.Lident "Foo", "*."))
|}]
[%%expect_in >= 5.4 {|
- : string * longident =
("Foo.( *. )", Longident.Ldot (Longident.Lident "Foo", "*."))
|}]
(* Indexing operators *)
let _ = convert_longident "(.!())"
[%%expect_in <= 5.3 {|
- : string * longident = ("( .!() )", Ppxlib.Longident.Lident ".!()")
|}]
[%%expect_in >= 5.4 {|
- : string * longident = ("( .!() )", Longident.Lident ".!()")
|}]
let _ = convert_longident "(.%(;..)<-)"
[%%expect_in <= 5.3 {|
- : string * longident =
("( .%(;..)<- )", Ppxlib.Longident.Lident ".%(;..)<-")
|}]
[%%expect_in >= 5.4 {|
- : string * longident = ("( .%(;..)<- )", Longident.Lident ".%(;..)<-")
|}]
let _ = convert_longident "Vec.(.%(;..)<-)"
[%%expect_in <= 5.3 {|
- : string * longident =
("Vec.( .%(;..)<- )",
Ppxlib.Longident.Ldot (Ppxlib.Longident.Lident "Vec", ".%(;..)<-"))
|}]
[%%expect_in >= 5.4 {|
- : string * longident =
("Vec.( .%(;..)<- )", Longident.Ldot (Longident.Lident "Vec", ".%(;..)<-"))
|}]
let _ = Ppxlib.Code_path.(file_path @@ top_level ~file_path:"dir/main.ml")
[%%expect{|
- : string = "dir/main.ml"
|}]
let _ = Ppxlib.Code_path.(fully_qualified_path @@ top_level ~file_path:"dir/main.ml")
[%%expect{|
- : string = "Main"
|}]
let complex_path =
let open Ppxlib.Code_path in
let loc = Ppxlib.Location.none in
top_level ~file_path:"dir/main.ml"
|> enter_module ~loc "Sub"
|> enter_module ~loc "Sub_sub"
|> enter_value ~loc "some_val"
[%%expect{|
val complex_path : Code_path.t = <abstr>
|}]
let _ = Ppxlib.Code_path.fully_qualified_path complex_path
[%%expect{|
- : string = "Main.Sub.Sub_sub.some_val"
|}]
let _ = Ppxlib.Code_path.to_string_path complex_path
[%%expect{|
- : string = "dir/main.ml.Sub.Sub_sub"
|}]
let _ =
let a = gen_symbol () ~prefix:"__prefix__" in
let b = gen_symbol () ~prefix:a in
a, b
[%%expect{|
- : string * string = ("__prefix____001_", "__prefix____002_")
|}]
let _ =
let open Ast_builder.Make (struct let loc = Location.none end) in
let params decl =
List.map (fun (core_type, _) -> core_type.ptyp_desc) decl.ptype_params
in
let decl =
type_declaration
~name:{ txt = "t"; loc = Location.none }
~params:(List.init 3 (fun _ -> ptyp_any, (NoVariance, NoInjectivity)))
~cstrs:[]
~kind:Ptype_abstract
~private_:Public
~manifest:None
in
params decl, params (name_type_params_in_td decl)
[%%expect{|
- : core_type_desc list * core_type_desc list =
([Ptyp_any; Ptyp_any; Ptyp_any],
[Ptyp_var "a__003_"; Ptyp_var "b__004_"; Ptyp_var "c__005_"])
|}]