diff --git a/generator/Makefile b/generator/Makefile index 454c45a430924ffbccf9d48faa15af2992a78e39..0dc8c278d60d7ce39c9b96060f6caabaa755d18d 100644 --- a/generator/Makefile +++ b/generator/Makefile @@ -33,7 +33,7 @@ stdlib: %.inferred.mli: $(OCAMLBUILD) $@ - cp _build/%@ . + cp _build/$@ . tests: main.byte stdlib #TODO: Remove the first line diff --git a/generator/js_of_ast.ml b/generator/js_of_ast.ml index 96b44d26b4a19469f6cc637617c6a8d01d0b8f3e..b4220289e03078dfa4240b88b91c95e1102f6d1a 100755 --- a/generator/js_of_ast.ml +++ b/generator/js_of_ast.ml @@ -327,20 +327,17 @@ and js_of_structure_item ?(mod_gen=[]) old_env s = | Tstr_eval (e, _) -> Printf.sprintf "%s" @@ js_of_expression ~mod_gen new_env e | Tstr_value (_, vb_l) -> String.concat "@,@," @@ List.map (fun vb -> show_value_binding ~mod_gen vb) @@ vb_l | Tstr_type tl -> - let explore_type = function - | [] -> () - | x :: xs -> - (match x.typ_kind with + let create_type x = + (match x.typ_kind with | Ttype_variant cdl -> let cl = List.map (fun cstr -> extract_cstr_attrs cstr) cdl in List.iter (fun (name, cstrs_name) -> add_type mod_gen name cstrs_name) cl; - () (*print_type_tbl ()*) + (* print_type_tbl () *) | Ttype_record ldl -> (* Beware silent shadowing for record labels *) List.iter (fun lbl -> Hashtbl.replace record_tbl (Ident.name lbl.ld_id) (Ident.name x.typ_id)) ldl - | _ -> unsupported "open types, record and abstract type" - ) - in explore_type tl; "" + | _ -> unsupported "open types, record and abstract type") + in List.iter create_type tl; "" | Tstr_open od -> let name = (fun od -> if od.open_override = Fresh then js_of_longident od.open_txt else "") od in if name <> "" then diff --git a/generator/tests/calc.ml b/generator/tests/calc.ml index a1d45b2bd4f1da316bc599e0e45087062a1ad0b7..6fb690ba35aa9596d93cd44ebdd2b69e3f6d41df 100644 --- a/generator/tests/calc.ml +++ b/generator/tests/calc.ml @@ -8,7 +8,7 @@ type expr = | Div [@f left, right] of expr * expr | Pop [@f stack] of sexpr and sexpr = - | Emp + | Emp [@f] | Push [@f value, stack] of expr * sexpr let rec eval_ expr = match expr with diff --git a/generator/tests/types.ml b/generator/tests/types.ml new file mode 100644 index 0000000000000000000000000000000000000000..756b5881a97a2c254647838fb3391c8f946f2ec9 --- /dev/null +++ b/generator/tests/types.ml @@ -0,0 +1,7 @@ +open Calc + +type exprone = + | Alpha [@f] + | Gamma [@f] +and exprtwo = + | Beta [@f] \ No newline at end of file