OSDN Git Service

open
authormzp <mzpppp@gmail.com>
Wed, 3 Jun 2009 02:44:27 +0000 (11:44 +0900)
committermzp <mzpppp@gmail.com>
Wed, 3 Jun 2009 02:44:27 +0000 (11:44 +0900)
scm/src/parser/lisp.ml
scm/test/codegen/bytesTest.ml
scm/test/parser/lispTest.ml

index b146188..2491156 100644 (file)
@@ -147,6 +147,8 @@ let rec p_stmt =
   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;
index a029555..36ba9b7 100644 (file)
@@ -6,14 +6,14 @@ let encode x =
   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];
index 83f774b..0804c15 100644 (file)
@@ -13,7 +13,7 @@ let eq_ident {value = x} {value = y} =
   x = y
 
 let ok =
-  assert_equal
+  assert_equal ~printer:Std.dump
 
 let rec eq_expr a b =
   match a,b with
@@ -119,7 +119,9 @@ let rec eq_clos a b =
     | `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
 
@@ -359,6 +361,14 @@ let _ =
          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 [