parser
[< def = define >] ->
def
+ | [< _ = kwd "open"; module_name = symbol >] ->
+ `Open (Node.lift (Str.split_delim dot) module_name)
| [< _ = kwd "define-class";
name = symbol;
(super,_)= list @@ one_list symbol symbol;
Bytes.to_int_list [x]
let ok expect xs =
- assert_equal expect @@
+ assert_equal ~printer:Std.dump expect @@
to_int_list xs
let same ?msg expect actual =
assert_equal ?msg (to_int_list expect) (to_int_list actual)
let _ =
- ("byte module test" >::: [
+ ("bytes.ml" >::: [
"u8" >::
(fun () ->
ok [50] [u8 50];
x = y
let ok =
- assert_equal
+ assert_equal ~printer:Std.dump
let rec eq_expr a b =
match a,b with
| `Module {Ast.module_name= name; exports=exports; stmts=stmts},
`Module {Ast.module_name= name'; exports=exports'; stmts=stmts'} ->
eq_ident name name' && eq_exports exports exports' &&
- List.for_all2 eq_clos stmts stmts'
+ List.for_all2 eq_clos stmts stmts'
+ | `Open {Node.value=x},`Open {Node.value=y} ->
+ x = y
| _ ->
false
ok [define "f" @@
lambda ["x"] @@ block [int 42]]
"(define (f x) 42)");
+ "open" >::
+ (fun () ->
+ ok [`Open (Node.ghost ["foo"])]
+ "(open foo)");
+ "open(nest)" >::
+ (fun () ->
+ ok [`Open (Node.ghost ["foo";"bar"])]
+ "(open foo.bar)");
"module" >::
(fun () ->
ok [foo_mod [