This commit is contained in:
parent
aa2ff7b2f0
commit
2f3113f55d
11742 changed files with 1223940 additions and 0 deletions
14
unikernel/duniverse/ppxlib/test/base/dune
Normal file
14
unikernel/duniverse/ppxlib/test/base/dune
Normal 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)))))
|
||||
299
unikernel/duniverse/ppxlib/test/base/test.ml
Normal file
299
unikernel/duniverse/ppxlib/test/base/test.ml
Normal 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_"])
|
||||
|}]
|
||||
Loading…
Add table
Add a link
Reference in a new issue