Commits

jun....@gmail.com  committed c3b7496

support of module type alias

  • Participants
  • Parent commits 4ab3d1b
  • Branches 4.02.0

Comments (0)

Files changed (4)

                           , path)));
         module_type mty (* CR jfuruse: ?? *)
     | Tmty_typeof mexp -> module_expr mexp
-    | Tmty_alias _ -> assert false (* not yet *)
+    | Tmty_alias (p, {loc}) ->
+        record_use loc Kind.Module_type p;
+        AMod_ident p
 
   and signature sg = AMod_structure (List.concat_map signature_item sg.sig_items)
 
     | Tctf_constraint (ctype1, ctype2) -> 
         core_type ctype1;
         core_type ctype2
-    | Tctf_attribute _ -> assert false (* not yet *)
+    | Tctf_attribute _ -> ()
 
   and class_structure
       { cstr_self; (* : pattern; *)
           core_type cty1; 
           core_type cty2
       | Tcf_initializer expr -> expression expr
-      | Tcf_attribute _ -> assert false (* not yet *)
+      | Tcf_attribute _ -> ()
 
 
   and class_field_kind = function

File tests/Makefile.targets

 module_and_modtype.cmo \
 module_and_modtype2.cmo \
 module_type.cmo \
+module_type_alias.cmo \
 module_use.cmo \
 multiple_definition.cmo \
 object.cmo \

File tests/lex.ml

-# 1 "lex.mll"
- 
-open Lexing
-
-exception Error of int * int * string
-
-let error lexbuf s =
-  raise (Error (lexeme_start lexbuf, lexeme_end lexbuf, s))
-
-let (* empty => *) empty (* <= empty *) = ""
-
-# 13 "lex.ml"
-let __ocaml_lex_tables = {
-  Lexing.lex_base = 
-   "\000\000\250\255\001\000\002\000\255\255\254\255";
-  Lexing.lex_backtrk = 
-   "\255\255\255\255\003\000\002\000\255\255\255\255";
-  Lexing.lex_default = 
-   "\002\000\000\000\002\000\255\255\000\000\000\000";
-  Lexing.lex_trans = 
-   "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
-    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
-    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
-    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
-    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
-    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
-    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
-    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
-    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
-    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
-    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
-    \000\000\000\000\000\000\000\000\003\000\255\255\000\000\000\000\
-    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
-    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
-    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
-    \000\000\000\000\000\000\000\000\000\000\004\000\255\255\005\000\
-    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
-    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
-    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
-    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
-    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
-    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
-    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
-    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
-    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
-    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
-    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
-    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
-    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
-    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
-    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
-    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
-    \001\000\255\255\000\000";
-  Lexing.lex_check = 
-   "\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
-    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
-    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
-    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
-    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
-    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
-    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
-    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
-    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
-    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
-    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
-    \255\255\255\255\255\255\255\255\000\000\002\000\255\255\255\255\
-    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
-    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
-    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
-    \255\255\255\255\255\255\255\255\255\255\000\000\002\000\003\000\
-    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
-    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
-    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
-    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
-    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
-    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
-    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
-    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
-    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
-    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
-    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
-    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
-    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
-    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
-    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
-    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
-    \000\000\002\000\255\255";
-  Lexing.lex_base_code = 
-   "";
-  Lexing.lex_backtrk_code = 
-   "";
-  Lexing.lex_default_code = 
-   "";
-  Lexing.lex_trans_code = 
-   "";
-  Lexing.lex_check_code = 
-   "";
-  Lexing.lex_code = 
-   "";
-}
-
-let rec exp st lexbuf =
-    __ocaml_lex_exp_rec st lexbuf 0
-and __ocaml_lex_exp_rec st lexbuf __ocaml_lex_state =
-  match Lexing.engine __ocaml_lex_tables __ocaml_lex_state lexbuf with
-      | 0 ->
-# 13 "lex.mll"
-        ( st )
-# 110 "lex.ml"
-
-  | 1 ->
-# 14 "lex.mll"
-          ( exp (st ^ "}") lexbuf )
-# 115 "lex.ml"
-
-  | 2 ->
-# 15 "lex.mll"
-         ( exp (st ^ "\\") lexbuf )
-# 120 "lex.ml"
-
-  | 3 ->
-let
-# 16 "lex.mll"
-                      s
-# 126 "lex.ml"
-= Lexing.sub_lexeme lexbuf lexbuf.Lexing.lex_start_pos lexbuf.Lexing.lex_curr_pos in
-# 16 "lex.mll"
-                         ( exp (st ^ s) lexbuf )
-# 130 "lex.ml"
-
-  | 4 ->
-let
-# 17 "lex.mll"
-         c
-# 136 "lex.ml"
-= Lexing.sub_lexeme_char lexbuf lexbuf.Lexing.lex_start_pos in
-# 17 "lex.mll"
-           ( 
-      error lexbuf (Printf.sprintf "illegal char in ${exp}: %C" c) )
-# 141 "lex.ml"
-
-  | 5 ->
-# 19 "lex.mll"
-        ( 
-      error lexbuf "unterminated ${exp}"
-    )
-# 148 "lex.ml"
-
-  | __ocaml_lex_state -> lexbuf.Lexing.refill_buff lexbuf; __ocaml_lex_exp_rec st lexbuf __ocaml_lex_state
-
-;;
-
-# 23 "lex.mll"
- 
-
-(* CR jfuruse: the test script only provides byte position, 
-   which does not work well for .mll *)
-let from_string s = exp empty (* ? empty *) (Lexing.from_string s)
-
-
-# 162 "lex.ml"
+# 1 "lex.mll"
+ 
+open Lexing
+
+exception Error of int * int * string
+
+let error lexbuf s =
+  raise (Error (lexeme_start lexbuf, lexeme_end lexbuf, s))
+
+let (* empty => *) empty (* <= empty *) = ""
+
+# 13 "lex.ml"
+let __ocaml_lex_tables = {
+  Lexing.lex_base = 
+   "\000\000\250\255\001\000\002\000\255\255\254\255";
+  Lexing.lex_backtrk = 
+   "\255\255\255\255\003\000\002\000\255\255\255\255";
+  Lexing.lex_default = 
+   "\002\000\000\000\002\000\255\255\000\000\000\000";
+  Lexing.lex_trans = 
+   "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+    \000\000\000\000\000\000\000\000\003\000\255\255\000\000\000\000\
+    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+    \000\000\000\000\000\000\000\000\000\000\004\000\255\255\005\000\
+    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+    \001\000\255\255\000\000";
+  Lexing.lex_check = 
+   "\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
+    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
+    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
+    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
+    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
+    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
+    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
+    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
+    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
+    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
+    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
+    \255\255\255\255\255\255\255\255\000\000\002\000\255\255\255\255\
+    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
+    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
+    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
+    \255\255\255\255\255\255\255\255\255\255\000\000\002\000\003\000\
+    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
+    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
+    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
+    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
+    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
+    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
+    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
+    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
+    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
+    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
+    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
+    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
+    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
+    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
+    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
+    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
+    \000\000\002\000\255\255";
+  Lexing.lex_base_code = 
+   "";
+  Lexing.lex_backtrk_code = 
+   "";
+  Lexing.lex_default_code = 
+   "";
+  Lexing.lex_trans_code = 
+   "";
+  Lexing.lex_check_code = 
+   "";
+  Lexing.lex_code = 
+   "";
+}
+
+let rec exp st lexbuf =
+    __ocaml_lex_exp_rec st lexbuf 0
+and __ocaml_lex_exp_rec st lexbuf __ocaml_lex_state =
+  match Lexing.engine __ocaml_lex_tables __ocaml_lex_state lexbuf with
+      | 0 ->
+# 13 "lex.mll"
+        ( st )
+# 110 "lex.ml"
+
+  | 1 ->
+# 14 "lex.mll"
+          ( exp (st ^ "}") lexbuf )
+# 115 "lex.ml"
+
+  | 2 ->
+# 15 "lex.mll"
+         ( exp (st ^ "\\") lexbuf )
+# 120 "lex.ml"
+
+  | 3 ->
+let
+# 16 "lex.mll"
+                      s
+# 126 "lex.ml"
+= Lexing.sub_lexeme lexbuf lexbuf.Lexing.lex_start_pos lexbuf.Lexing.lex_curr_pos in
+# 16 "lex.mll"
+                         ( exp (st ^ s) lexbuf )
+# 130 "lex.ml"
+
+  | 4 ->
+let
+# 17 "lex.mll"
+         c
+# 136 "lex.ml"
+= Lexing.sub_lexeme_char lexbuf lexbuf.Lexing.lex_start_pos in
+# 17 "lex.mll"
+           ( 
+      error lexbuf (Printf.sprintf "illegal char in ${exp}: %C" c) )
+# 141 "lex.ml"
+
+  | 5 ->
+# 19 "lex.mll"
+        ( 
+      error lexbuf "unterminated ${exp}"
+    )
+# 148 "lex.ml"
+
+  | __ocaml_lex_state -> lexbuf.Lexing.refill_buff lexbuf; 
+      __ocaml_lex_exp_rec st lexbuf __ocaml_lex_state
+
+;;
+
+# 23 "lex.mll"
+ 
+
+(* CR jfuruse: the test script only provides byte position, 
+   which does not work well for .mll *)
+let from_string s = exp empty (* ? empty *) (Lexing.from_string s)
+
+
+# 163 "lex.ml"

File tests/module_type_alias.ml

+module (* M => *) M (* <= M *) = struct let x = 1 end
+module type S = (module M (* ? M *))
+