From 0e758d2dbdf05611196997970e46949cf6c0702f Mon Sep 17 00:00:00 2001 From: Hongbo Date: Wed, 8 Aug 2018 21:09:58 +0800 Subject: [PATCH 1/3] provide a compatible layer for syntax --- jscomp/Makefile | 1 + jscomp/README.md | 22 + jscomp/all.depend | 1997 ++++++++++++----------- jscomp/bin/all_ounit_tests.d | 2 + jscomp/bin/all_ounit_tests.ml | 183 ++- jscomp/bsb/bsb_templates.ml | 1004 ++++++------ jscomp/syntax/ast_comb.ml | 4 +- jscomp/syntax/ast_comb.mli | 4 +- jscomp/syntax/ast_compatible.ml | 93 ++ jscomp/syntax/ast_compatible.mli | 69 + jscomp/syntax/ast_derive_dyn.ml | 6 +- jscomp/syntax/ast_derive_js_mapper.ml | 10 +- jscomp/syntax/ast_derive_projector.ml | 4 +- jscomp/syntax/ast_derive_util.ml | 13 +- jscomp/syntax/ast_derive_util.mli | 5 +- jscomp/syntax/ast_external_mk.ml | 45 +- jscomp/syntax/ast_external_mk.mli | 19 +- jscomp/syntax/ast_lift.ml | 4 +- jscomp/syntax/ast_lift.mli | 4 +- jscomp/syntax/ast_utf8_string_interp.ml | 18 +- jscomp/syntax/ast_util.ml | 10 +- lib/bsb.ml | 1004 ++++++------ lib/bsdep.d | 2 + lib/bsdep.ml | 297 +++- lib/bsppx.d | 2 + lib/bsppx.ml | 297 +++- lib/whole_compiler.d | 2 + lib/whole_compiler.ml | 297 +++- 28 files changed, 3216 insertions(+), 2202 deletions(-) create mode 100644 jscomp/syntax/ast_compatible.ml create mode 100644 jscomp/syntax/ast_compatible.mli diff --git a/jscomp/Makefile b/jscomp/Makefile index b4de1c39a4..c5311caf92 100644 --- a/jscomp/Makefile +++ b/jscomp/Makefile @@ -226,6 +226,7 @@ COMMON_SRCS= bs_version\ COMMON_CMXS= $(addprefix common/, $(addsuffix .cmx, $(COMMON_SRCS))) SYNTAX_SRCS= \ bs_syntaxerr\ + ast_compatible\ ast_utf8_string\ ast_utf8_string_interp\ ast_derive_constructor \ diff --git a/jscomp/README.md b/jscomp/README.md index ce1a842dd0..9ff68c9ab8 100644 --- a/jscomp/README.md +++ b/jscomp/README.md @@ -44,3 +44,25 @@ so that we don't need bootstrap compiler, everytime we deliver a new feature. ## [test](./test) The directory containing unit-test files, some unit tests are copied from OCaml distribution(4.02) + +## compiler sourcetree + + - ext + - common + - bsb + - depends + - core + - bspp + - outcome_printer + - stubs + - super_errors + - syntax +## tools (deprecatd code) +## xwatcher (dev tools) +## runtime +## build_tests +## bin +## cmd_tests +## ounit +## ounit_tests +## others (belt/stdlib/node bindings) \ No newline at end of file diff --git a/jscomp/all.depend b/jscomp/all.depend index 15eebda38f..31deaec472 100644 --- a/jscomp/all.depend +++ b/jscomp/all.depend @@ -1,881 +1,16 @@ -stubs/bs_hash_stubs.cmx : -ext/literals.cmx : ext/literals.cmi -ext/ext_util.cmx : ext/ext_util.cmi -ext/ext_int.cmx : ext/ext_int.cmi -ext/ext_position.cmx : ext/ext_position.cmi -ext/ext_cmp.cmx : ext/ext_cmp.cmi -ext/ext_array.cmx : ext/ext_array.cmi -ext/ext_bytes.cmx : ext/ext_bytes.cmi -ext/ext_char.cmx : ext/ext_char.cmi -ext/vec_gen.cmx : -ext/resize_array.cmx : ext/vec_gen.cmx ext/ext_array.cmx \ - ext/resize_array.cmi -ext/string_vec.cmx : ext/resize_array.cmx ext/string_vec.cmi -ext/int_vec.cmx : ext/ext_array.cmx stubs/bs_hash_stubs.cmx ext/int_vec.cmi -ext/int_vec_util.cmx : ext/int_vec.cmx ext/int_vec_util.cmi -ext/int_vec_vec.cmx : ext/resize_array.cmx ext/int_vec.cmx \ - ext/int_vec_vec.cmi -ext/set_gen.cmx : -ext/map_gen.cmx : -ext/ext_file_pp.cmx : ext/string_vec.cmx ext/ext_file_pp.cmi -ext/ext_format.cmx : ext/ext_format.cmi -ext/hashtbl_gen.cmx : ext/ext_util.cmx -ext/ext_string.cmx : ext/ext_bytes.cmx ext/ext_string.cmi -ext/ext_utf8.cmx : ext/ext_utf8.cmi -ext/ext_js_regex.cmx : ext/ext_utf8.cmx ext/ext_js_regex.cmi -ext/string_hashtbl.cmx : ext/hashtbl_gen.cmx ext/ext_string.cmx \ - stubs/bs_hash_stubs.cmx ext/string_hashtbl.cmi -ext/ext_list.cmx : ext/ext_string.cmx ext/ext_list.cmi -ext/ext_stack.cmx : ext/ext_stack.cmi -ext/ext_color.cmx : ext/ext_list.cmx ext/ext_color.cmi -ext/ext_marshal.cmx : ext/ext_marshal.cmi -ext/ext_option.cmx : ext/ext_option.cmi -ext/ext_pervasives.cmx : ext/ext_list.cmx ext/ext_pervasives.cmi -ext/ext_pp.cmx : ext/ext_pervasives.cmx ext/ext_pp.cmi -ext/ext_ref.cmx : ext/ext_list.cmx ext/ext_ref.cmi -ext/ext_sys.cmx : ext/ext_sys.cmi -ext/hash_set_gen.cmx : ext/ext_util.cmx -ext/hash_set.cmx : ext/hash_set_gen.cmx ext/hash_set.cmi -ext/string_hash_set.cmx : ext/hash_set_gen.cmx ext/ext_string.cmx \ - stubs/bs_hash_stubs.cmx ext/string_hash_set.cmi -ext/ext_ident.cmx : ext/string_hashtbl.cmx ext/string_hash_set.cmx \ - ext/literals.cmx ext/ext_string.cmx ext/ext_list.cmx ext/ext_ident.cmi -ext/int_hash_set.cmx : ext/hash_set_gen.cmx ext/ext_int.cmx \ - stubs/bs_hash_stubs.cmx ext/int_hash_set.cmi -ext/hash_set_ident_mask.cmx : ext/ext_util.cmx ext/ext_ident.cmx \ - stubs/bs_hash_stubs.cmx ext/hash_set_ident_mask.cmi -ext/ordered_hash_set_gen.cmx : ext/ext_util.cmx -ext/ordered_hash_set_string.cmx : ext/ordered_hash_set_gen.cmx \ - ext/ext_util.cmx ext/ext_string.cmx stubs/bs_hash_stubs.cmx \ - ext/ordered_hash_set_string.cmi -ext/ordered_hash_set_ident.cmx : ext/ordered_hash_set_gen.cmx \ - ext/ext_util.cmx ext/ext_ident.cmx stubs/bs_hash_stubs.cmx \ - ext/ordered_hash_set_ident.cmi -ext/ordered_hash_set_make.cmx : ext/ordered_hash_set_gen.cmx \ - ext/ext_util.cmx -ext/ordered_hash_map_gen.cmx : ext/ext_util.cmx -ext/union_find.cmx : ext/union_find.cmi -ext/ident_map.cmx : ext/map_gen.cmx ext/ext_ident.cmx ext/ident_map.cmi -ext/ident_set.cmx : ext/set_gen.cmx ext/ident_set.cmi -ext/hashtbl_make.cmx : ext/hashtbl_gen.cmx ext/hashtbl_make.cmi -ext/ordered_hash_map_local_ident.cmx : ext/ordered_hash_map_gen.cmx \ - ext/ext_ident.cmx stubs/bs_hash_stubs.cmx \ - ext/ordered_hash_map_local_ident.cmi -ext/int_map.cmx : ext/map_gen.cmx ext/ext_int.cmx ext/int_map.cmi -ext/string_map.cmx : ext/map_gen.cmx ext/ext_string.cmx ext/string_map.cmi -ext/string_set.cmx : ext/set_gen.cmx ext/ext_string.cmx ext/string_set.cmi -ext/set_int.cmx : ext/set_gen.cmx ext/ext_int.cmx ext/set_int.cmi -ext/ext_scc.cmx : ext/int_vec_vec.cmx ext/int_vec.cmx ext/ext_scc.cmi -ext/ext_topsort.cmx : ext/set_int.cmx ext/resize_array.cmx ext/int_vec.cmx \ - ext/ext_topsort.cmi -ext/ext_pp_scope.cmx : ext/string_map.cmx ext/int_map.cmx ext/ident_set.cmx \ - ext/ext_pp.cmx ext/ext_ident.cmx ext/ext_pp_scope.cmi -ext/ext_io.cmx : ext/ext_pervasives.cmx ext/ext_io.cmi -ext/ext_json_types.cmx : ext/string_map.cmx -ext/ext_json_noloc.cmx : ext/string_map.cmx ext/ext_array.cmx \ - ext/ext_json_noloc.cmi -ext/ext_json_parse.cmx : ext/string_map.cmx ext/ext_position.cmx \ - ext/ext_json_types.cmx ext/ext_array.cmx ext/ext_json_parse.cmi -ext/ext_json_write.cmx : ext/string_map.cmx ext/ext_json_types.cmx \ - ext/ext_json_write.cmi -ext/ext_json.cmx : ext/string_map.cmx ext/ext_json_types.cmx \ - ext/ext_array.cmx ext/ext_json.cmi -ext/ident_hash_set.cmx : ext/hash_set_gen.cmx ext/ext_ident.cmx \ - stubs/bs_hash_stubs.cmx ext/ident_hash_set.cmi -ext/hash_set_poly.cmx : ext/hash_set_gen.cmx ext/hash_set_poly.cmi -ext/ident_hashtbl.cmx : ext/hashtbl_gen.cmx ext/ext_ident.cmx \ - stubs/bs_hash_stubs.cmx ext/ident_hashtbl.cmi -ext/int_hashtbl.cmx : ext/hashtbl_gen.cmx ext/ext_int.cmx \ - stubs/bs_hash_stubs.cmx ext/int_hashtbl.cmi -ext/ext_path.cmx : ext/literals.cmx ext/ext_string.cmx \ - ext/ext_pervasives.cmx ext/ext_list.cmx ext/ext_path.cmi -ext/ext_filename.cmx : ext/literals.cmx ext/ext_string.cmx \ - ext/ext_pervasives.cmx ext/ext_path.cmx ext/ext_filename.cmi -ext/ext_modulename.cmx : ext/ext_string.cmx ext/ext_path.cmx \ - ext/ext_char.cmx ext/ext_modulename.cmi -ext/ext_namespace.cmx : ext/ext_string.cmx ext/ext_char.cmx \ - ext/ext_namespace.cmi -ext/literals.cmi : -ext/ext_util.cmi : -ext/ext_int.cmi : -ext/ext_position.cmi : -ext/ext_cmp.cmi : -ext/ext_array.cmi : -ext/ext_bytes.cmi : -ext/ext_char.cmi : -ext/resize_array.cmi : ext/vec_gen.cmx -ext/string_vec.cmi : ext/vec_gen.cmx -ext/int_vec.cmi : ext/vec_gen.cmx -ext/int_vec_util.cmi : ext/int_vec.cmi -ext/int_vec_vec.cmi : ext/vec_gen.cmx ext/int_vec.cmi -ext/ext_file_pp.cmi : ext/string_vec.cmi -ext/ext_format.cmi : -ext/ext_string.cmi : -ext/ext_utf8.cmi : -ext/ext_js_regex.cmi : -ext/string_hashtbl.cmi : ext/hashtbl_gen.cmx -ext/ext_list.cmi : -ext/ext_stack.cmi : -ext/ext_color.cmi : -ext/ext_marshal.cmi : -ext/ext_option.cmi : -ext/ext_pervasives.cmi : -ext/ext_pp.cmi : -ext/ext_ref.cmi : -ext/ext_sys.cmi : -ext/hash_set.cmi : ext/hash_set_gen.cmx -ext/string_hash_set.cmi : ext/hash_set_gen.cmx -ext/ext_ident.cmi : -ext/int_hash_set.cmi : ext/hash_set_gen.cmx -ext/hash_set_ident_mask.cmi : -ext/ordered_hash_set_string.cmi : ext/ordered_hash_set_gen.cmx -ext/ordered_hash_set_ident.cmi : ext/ordered_hash_set_gen.cmx -ext/union_find.cmi : -ext/ident_map.cmi : ext/map_gen.cmx -ext/ident_set.cmi : ext/set_gen.cmx -ext/hashtbl_make.cmi : ext/hashtbl_gen.cmx -ext/ordered_hash_map_local_ident.cmi : ext/ordered_hash_map_gen.cmx -ext/int_map.cmi : ext/map_gen.cmx -ext/string_map.cmi : ext/map_gen.cmx -ext/string_set.cmi : -ext/set_int.cmi : ext/set_gen.cmx -ext/ext_scc.cmi : ext/int_vec_vec.cmi ext/int_vec.cmi -ext/ext_topsort.cmi : ext/vec_gen.cmx ext/set_int.cmi ext/int_vec.cmi -ext/ext_pp_scope.cmi : ext/ident_set.cmi ext/ext_pp.cmi -ext/ext_io.cmi : -ext/ext_json_noloc.cmi : ext/string_map.cmi -ext/ext_json_parse.cmi : ext/ext_json_types.cmx -ext/ext_json_write.cmi : -ext/ext_json.cmi : ext/string_map.cmi ext/ext_position.cmi \ - ext/ext_json_types.cmx -ext/ident_hash_set.cmi : ext/hash_set_gen.cmx -ext/hash_set_poly.cmi : -ext/ident_hashtbl.cmi : ext/hashtbl_gen.cmx -ext/int_hashtbl.cmi : ext/hashtbl_gen.cmx -ext/ext_path.cmi : -ext/ext_filename.cmi : -ext/ext_modulename.cmi : -ext/ext_namespace.cmi : -common/bs_version.cmx : common/bs_version.cmi -common/js_config.cmx : common/js_config.cmi -common/ext_log.cmx : common/js_config.cmx common/ext_log.cmi -common/bs_loc.cmx : common/bs_loc.cmi -common/bs_warnings.cmx : common/js_config.cmx common/bs_warnings.cmi -common/lam_methname.cmx : ext/string_hash_set.cmx ext/ext_string.cmx \ - common/lam_methname.cmi -common/ml_binary.cmx : common/ml_binary.cmi -common/bs_version.cmi : -common/js_config.cmi : -common/ext_log.cmi : -common/bs_loc.cmi : -common/bs_warnings.cmi : -common/lam_methname.cmi : -common/ml_binary.cmi : -syntax/bs_syntaxerr.cmx : syntax/bs_syntaxerr.cmi -syntax/ast_utf8_string.cmx : ext/ext_utf8.cmx ext/ext_char.cmx \ - syntax/ast_utf8_string.cmi -syntax/ast_utf8_string_interp.cmx : ext/literals.cmx ext/ext_utf8.cmx \ - ext/ext_string.cmx ext/ext_char.cmx common/bs_loc.cmx \ - syntax/ast_utf8_string_interp.cmi -syntax/ast_derive_constructor.cmx : -syntax/ast_derive_util.cmx : ext/ext_list.cmx syntax/ast_derive_util.cmi -syntax/ast_exp.cmx : syntax/ast_exp.cmi -syntax/ast_external_mk.cmx : syntax/ast_external_mk.cmi -syntax/ast_lift.cmx : syntax/ast_lift.cmi -syntax/ast_literal.cmx : syntax/ast_literal.cmi -syntax/ast_pat.cmx : syntax/ast_pat.cmi -syntax/external_arg_spec.cmx : ext/ext_position.cmx ext/ext_json_parse.cmx \ - syntax/external_arg_spec.cmi -syntax/ast_payload.cmx : ext/string_map.cmx ext/ext_list.cmx \ - ext/ext_js_regex.cmx syntax/ast_payload.cmi -syntax/ast_signature.cmx : syntax/ast_signature.cmi -syntax/ast_structure.cmx : syntax/ast_signature.cmx syntax/ast_literal.cmx \ - syntax/ast_structure.cmi -syntax/bs_ast_iterator.cmx : syntax/bs_ast_iterator.cmi -syntax/bs_ast_mapper.cmx : syntax/bs_ast_mapper.cmi -syntax/ast_derive.cmx : ext/string_map.cmx ext/literals.cmx \ - ext/ext_string.cmx ext/ext_list.cmx syntax/bs_syntaxerr.cmx \ - syntax/ast_structure.cmx syntax/ast_signature.cmx syntax/ast_payload.cmx \ - syntax/ast_derive.cmi -syntax/ast_comb.cmx : ext/ext_list.cmx syntax/ast_literal.cmx \ - syntax/ast_comb.cmi -syntax/ast_core_type.cmx : ext/ext_list.cmx syntax/bs_syntaxerr.cmx \ - syntax/ast_comb.cmx syntax/ast_core_type.cmi -syntax/bs_ast_invariant.cmx : ext/literals.cmx ext/hash_set_poly.cmx \ - ext/ext_string.cmx common/bs_warnings.cmx syntax/bs_ast_iterator.cmx \ - syntax/ast_core_type.cmx syntax/bs_ast_invariant.cmi -syntax/ast_attributes.cmx : ext/ext_string.cmx syntax/bs_syntaxerr.cmx \ - syntax/bs_ast_invariant.cmx syntax/ast_payload.cmx \ - syntax/ast_attributes.cmi -syntax/ast_polyvar.cmx : syntax/external_arg_spec.cmx ext/ext_pervasives.cmx \ - ext/ext_list.cmx syntax/bs_syntaxerr.cmx syntax/ast_attributes.cmx \ - syntax/ast_polyvar.cmi -syntax/external_ffi_types.cmx : syntax/external_arg_spec.cmx \ - ext/ext_string.cmx ext/ext_pervasives.cmx common/bs_version.cmx \ - syntax/external_ffi_types.cmi -syntax/external_process.cmx : common/lam_methname.cmx \ - syntax/external_ffi_types.cmx syntax/external_arg_spec.cmx \ - ext/ext_string.cmx ext/ext_list.cmx common/bs_warnings.cmx \ - syntax/bs_syntaxerr.cmx common/bs_loc.cmx syntax/bs_ast_invariant.cmx \ - syntax/ast_polyvar.cmx syntax/ast_payload.cmx syntax/ast_literal.cmx \ - syntax/ast_core_type.cmx syntax/ast_comb.cmx syntax/ast_attributes.cmx \ - syntax/external_process.cmi -syntax/ast_derive_abstract.cmx : syntax/external_process.cmx \ - syntax/external_ffi_types.cmx syntax/external_arg_spec.cmx \ - ext/ext_list.cmx syntax/ast_literal.cmx syntax/ast_derive_util.cmx \ - syntax/ast_core_type.cmx syntax/ast_attributes.cmx \ - syntax/ast_derive_abstract.cmi -syntax/ast_derive_dyn.cmx : ext/ext_list.cmx syntax/bs_syntaxerr.cmx \ - syntax/ast_structure.cmx syntax/ast_derive_util.cmx syntax/ast_derive.cmx \ - syntax/ast_attributes.cmx syntax/ast_derive_dyn.cmi -syntax/ast_derive_projector.cmx : ext/ext_list.cmx \ - syntax/ast_derive_util.cmx syntax/ast_derive.cmx syntax/ast_comb.cmx \ - syntax/ast_derive_projector.cmi -syntax/ast_derive_js_mapper.cmx : ext/ext_list.cmx syntax/ast_polyvar.cmx \ - syntax/ast_literal.cmx syntax/ast_derive_util.cmx syntax/ast_derive.cmx \ - syntax/ast_core_type.cmx syntax/ast_comb.cmx \ - syntax/ast_derive_js_mapper.cmi -syntax/ast_util.cmx : ext/literals.cmx syntax/external_process.cmx \ - ext/ext_string.cmx ext/ext_list.cmx syntax/bs_syntaxerr.cmx \ - syntax/bs_ast_mapper.cmx syntax/ast_payload.cmx syntax/ast_pat.cmx \ - syntax/ast_literal.cmx syntax/ast_external_mk.cmx syntax/ast_exp.cmx \ - syntax/ast_core_type.cmx syntax/ast_comb.cmx syntax/ast_attributes.cmx \ - syntax/ast_util.cmi -syntax/ast_tdcls.cmx : ext/ext_list.cmx syntax/bs_ast_mapper.cmx \ - syntax/ast_structure.cmx syntax/ast_signature.cmx syntax/ast_payload.cmx \ - syntax/ast_derive_abstract.cmx syntax/ast_derive.cmx \ - syntax/ast_attributes.cmx syntax/ast_tdcls.cmi -syntax/ast_primitive.cmx : syntax/external_process.cmx \ - syntax/bs_ast_mapper.cmx syntax/ast_primitive.cmi -syntax/ast_tuple_pattern_flatten.cmx : ext/ext_list.cmx \ - syntax/bs_ast_mapper.cmx syntax/bs_ast_invariant.cmx \ - syntax/ast_tuple_pattern_flatten.cmi -syntax/ast_exp_apply.cmx : ext/literals.cmx ext/ext_list.cmx \ - syntax/bs_ast_mapper.cmx syntax/bs_ast_invariant.cmx syntax/ast_util.cmx \ - syntax/ast_tuple_pattern_flatten.cmx syntax/ast_literal.cmx \ - syntax/ast_attributes.cmx syntax/ast_exp_apply.cmi -syntax/ast_exp_extension.cmx : ext/literals.cmx ext/ext_string.cmx \ - ext/ext_ref.cmx ext/ext_pervasives.cmx common/bs_version.cmx \ - syntax/bs_ast_mapper.cmx syntax/ast_util.cmx syntax/ast_payload.cmx \ - syntax/ast_literal.cmx syntax/ast_derive.cmx syntax/ast_core_type.cmx \ - syntax/ast_comb.cmx syntax/ast_exp_extension.cmi -syntax/ast_core_type_class_type.cmx : ext/literals.cmx ext/ext_ref.cmx \ - ext/ext_list.cmx syntax/bs_ast_mapper.cmx syntax/ast_util.cmx \ - syntax/ast_literal.cmx syntax/ast_comb.cmx syntax/ast_attributes.cmx \ - syntax/ast_core_type_class_type.cmi -syntax/ppx_entry.cmx : ext/string_map.cmx ext/literals.cmx \ - common/js_config.cmx ext/ext_string.cmx syntax/bs_ast_mapper.cmx \ - syntax/bs_ast_invariant.cmx syntax/ast_util.cmx \ - syntax/ast_utf8_string_interp.cmx syntax/ast_utf8_string.cmx \ - syntax/ast_tuple_pattern_flatten.cmx syntax/ast_tdcls.cmx \ - syntax/ast_structure.cmx syntax/ast_primitive.cmx syntax/ast_payload.cmx \ - syntax/ast_literal.cmx syntax/ast_exp_extension.cmx \ - syntax/ast_exp_apply.cmx syntax/ast_derive_projector.cmx \ - syntax/ast_derive_js_mapper.cmx syntax/ast_core_type_class_type.cmx \ - syntax/ast_attributes.cmx syntax/ppx_entry.cmi -syntax/bs_syntaxerr.cmi : -syntax/ast_utf8_string.cmi : -syntax/ast_utf8_string_interp.cmi : -syntax/ast_derive_util.cmi : -syntax/ast_exp.cmi : -syntax/ast_external_mk.cmi : -syntax/ast_lift.cmi : -syntax/ast_literal.cmi : -syntax/ast_pat.cmi : -syntax/external_arg_spec.cmi : -syntax/ast_payload.cmi : ext/string_map.cmi -syntax/ast_signature.cmi : -syntax/ast_structure.cmi : syntax/ast_signature.cmi -syntax/bs_ast_iterator.cmi : -syntax/bs_ast_mapper.cmi : -syntax/ast_derive.cmi : syntax/ast_structure.cmi syntax/ast_signature.cmi \ - syntax/ast_payload.cmi -syntax/ast_comb.cmi : -syntax/ast_core_type.cmi : -syntax/bs_ast_invariant.cmi : syntax/bs_ast_iterator.cmi -syntax/ast_attributes.cmi : syntax/ast_payload.cmi -syntax/ast_polyvar.cmi : syntax/external_arg_spec.cmi -syntax/external_ffi_types.cmi : syntax/external_arg_spec.cmi -syntax/external_process.cmi : common/bs_loc.cmi syntax/ast_core_type.cmi \ - syntax/ast_attributes.cmi -syntax/ast_derive_abstract.cmi : -syntax/ast_derive_dyn.cmi : -syntax/ast_derive_projector.cmi : -syntax/ast_derive_js_mapper.cmi : -syntax/ast_util.cmi : syntax/bs_ast_mapper.cmi syntax/ast_payload.cmi -syntax/ast_tdcls.cmi : syntax/bs_ast_mapper.cmi syntax/ast_structure.cmi \ - syntax/ast_signature.cmi -syntax/ast_primitive.cmi : syntax/bs_ast_mapper.cmi -syntax/ast_tuple_pattern_flatten.cmi : syntax/bs_ast_mapper.cmi -syntax/ast_exp_apply.cmi : syntax/bs_ast_mapper.cmi -syntax/ast_exp_extension.cmi : syntax/bs_ast_mapper.cmi -syntax/ast_core_type_class_type.cmi : syntax/bs_ast_mapper.cmi -syntax/ppx_entry.cmi : -depends/bs_exception.cmi : -depends/ast_extract.cmi : ext/string_map.cmi ext/string_hashtbl.cmi \ - common/ml_binary.cmi -depends/binary_ast.cmi : common/ml_binary.cmi -depends/bs_exception.cmx : depends/bs_exception.cmi -depends/ast_extract.cmx : ext/string_map.cmx ext/string_hashtbl.cmx \ - common/ml_binary.cmx common/js_config.cmx ext/ext_string.cmx \ - ext/ext_path.cmx ext/ext_modulename.cmx ext/ext_list.cmx \ - ext/ext_format.cmx depends/bs_exception.cmx depends/ast_extract.cmi -depends/binary_ast.cmx : common/ml_binary.cmx depends/ast_extract.cmx \ - depends/binary_ast.cmi -core/config_util.cmi : -core/js_packages_info.cmi : core/lam_module_ident.cmi ext/ext_namespace.cmi -core/js_packages_state.cmi : core/js_packages_info.cmi -core/ocaml_types.cmi : -core/bs_conditional_initial.cmi : -core/ocaml_options.cmi : -core/ocaml_parse.cmi : -core/lam_module_ident.cmi : core/js_op.cmx core/j.cmx ext/hashtbl_gen.cmx \ - ext/hash_set_gen.cmx -core/lam_arity.cmi : -core/lam.cmi : core/lam_tag_info.cmx core/lam_module_ident.cmi \ - ext/ident_set.cmi syntax/external_ffi_types.cmi \ - syntax/external_arg_spec.cmi -core/lam_print.cmi : core/lam.cmi -core/lam_beta_reduce_util.cmi : core/lam.cmi -core/lam_inline_util.cmi : core/lam.cmi -core/lam_analysis.cmi : core/lam.cmi -core/lam_closure.cmi : core/lam.cmi ext/ident_set.cmi ext/ident_map.cmi -core/js_cmj_format.cmi : ext/string_map.cmi core/lam_arity.cmi core/lam.cmi \ - core/js_packages_info.cmi ext/ext_namespace.cmi -core/js_cmj_load.cmi : core/js_cmj_format.cmi -core/js_fun_env.cmi : ext/ident_set.cmi -core/js_call_info.cmi : -core/js_closure.cmi : ext/ident_set.cmi -core/js_number.cmi : -core/js_cmj_datasets.cmi : ext/string_map.cmi core/js_cmj_format.cmi -core/lam_exit_code.cmi : core/lam.cmi -core/lam_compile_util.cmi : core/lam_tag_info.cmx core/lam.cmi \ - core/js_op.cmx -core/lam_id_kind.cmi : core/lam_arity.cmi core/lam.cmi -core/lam_stats.cmi : core/lam_id_kind.cmi ext/ident_set.cmi \ - ext/ident_hashtbl.cmi -core/lam_compile_context.cmi : core/lam_stats.cmi core/lam.cmi core/j.cmx \ - ext/ident_map.cmi -core/js_fold_basic.cmi : core/lam_module_ident.cmi core/j.cmx \ - ext/ident_set.cmi -core/js_pass_scope.cmi : core/j.cmx ext/ident_set.cmi -core/js_op_util.cmi : core/js_op.cmx core/j.cmx -core/js_analyzer.cmi : core/j.cmx ext/ident_set.cmi -core/js_shake.cmi : core/j.cmx -core/js_exp_make.cmi : core/js_op.cmx core/js_call_info.cmi core/j.cmx -core/js_long.cmi : core/j.cmx -core/js_of_lam_exception.cmi : core/j.cmx -core/js_of_lam_module.cmi : core/j.cmx -core/js_of_lam_array.cmi : core/j.cmx -core/js_of_lam_block.cmi : core/lam.cmi core/js_op.cmx core/j.cmx -core/js_of_lam_string.cmi : core/j.cmx -core/js_of_lam_tuple.cmi : core/j.cmx -core/js_of_lam_record.cmi : core/j.cmx -core/js_of_lam_float_record.cmi : core/j.cmx -core/js_arr.cmi : core/j.cmx -core/lam_compile_const.cmi : core/lam.cmi core/j.cmx \ - syntax/external_arg_spec.cmi -core/lam_inner.cmi : core/lam.cmi -core/lam_subst.cmi : core/lam.cmi ext/ident_map.cmi -core/lam_util.cmi : core/lam_stats.cmi core/lam_id_kind.cmi core/lam.cmi \ - core/j.cmx -core/lam_eta_conversion.cmi : core/lam.cmi -core/lam_group.cmi : core/lam.cmi -core/lam_pass_deep_flatten.cmi : core/lam.cmi -core/js_stmt_make.cmi : core/lam.cmi core/js_closure.cmi core/j.cmx -core/js_pass_flatten.cmi : core/j.cmx -core/js_of_lam_polyvar.cmi : core/j.cmx -core/js_pass_tailcall_inline.cmi : core/j.cmx -core/js_of_lam_variant.cmi : core/j.cmx -core/js_pass_flatten_and_mark_dead.cmi : core/j.cmx -core/js_ast_util.cmi : core/j.cmx -core/lam_dce.cmi : core/lam_group.cmi -core/lam_compile_env.cmi : core/ocaml_types.cmi core/lam_module_ident.cmi \ - core/lam.cmi core/js_packages_info.cmi core/js_cmj_format.cmi \ - syntax/external_ffi_types.cmi -core/lam_arity_analysis.cmi : core/lam_stats.cmi core/lam_arity.cmi \ - core/lam.cmi -core/lam_stats_export.cmi : core/lam_stats.cmi core/lam_module_ident.cmi \ - core/lam.cmi core/js_cmj_format.cmi ext/ident_map.cmi -core/lam_pass_alpha_conversion.cmi : core/lam_stats.cmi core/lam.cmi -core/lam_pass_collect.cmi : core/lam_stats.cmi core/lam.cmi \ - ext/ident_set.cmi -core/js_dump_string.cmi : ext/ext_pp.cmi -core/js_dump_property.cmi : ext/ext_pp.cmi -core/js_dump_import_export.cmi : ext/ext_pp_scope.cmi ext/ext_pp.cmi -core/js_dump.cmi : core/j.cmx ext/ext_pp_scope.cmi ext/ext_pp.cmi -core/js_name_of_module_id.cmi : core/lam_module_ident.cmi \ - core/js_packages_info.cmi -core/js_dump_program.cmi : core/js_packages_info.cmi core/j.cmx \ - ext/ext_pp.cmi -core/js_pass_debug.cmi : core/j.cmx -core/js_of_lam_option.cmi : core/j.cmx -core/js_output.cmi : core/lam_compile_context.cmi core/lam.cmi core/j.cmx -core/lam_compile_global.cmi : core/lam.cmi core/j.cmx -core/lam_dispatch_primitive.cmi : core/j.cmx -core/lam_bounded_vars.cmi : core/lam.cmi ext/ident_hashtbl.cmi -core/lam_beta_reduce.cmi : core/lam_stats.cmi core/lam_closure.cmi \ - core/lam.cmi ext/ident_map.cmi -core/lam_compile_external_call.cmi : core/lam_compile_context.cmi \ - core/js_of_lam_variant.cmi core/j.cmx syntax/external_ffi_types.cmi \ - syntax/external_arg_spec.cmi -core/lam_compile_external_obj.cmi : core/j.cmx syntax/external_arg_spec.cmi -core/lam_compile_primitive.cmi : core/lam_compile_context.cmi core/lam.cmi \ - core/j.cmx -core/lam_compile.cmi : core/lam_compile_context.cmi core/lam.cmi \ - core/js_output.cmi core/j.cmx -core/lam_pass_exits.cmi : core/lam.cmi -core/lam_pass_count.cmi : core/lam.cmi ext/ident_hashtbl.cmi -core/lam_pass_eliminate_ref.cmi : core/lam.cmi -core/lam_pass_lets_dce.cmi : core/lam.cmi -core/lam_pass_remove_alias.cmi : core/lam_stats.cmi core/lam.cmi -core/lam_coercion.cmi : core/lam_stats.cmi core/lam_group.cmi core/lam.cmi \ - ext/ident_set.cmi ext/ident_map.cmi -core/lam_compile_main.cmi : core/j.cmx -core/js_implementation.cmi : -core/ocaml_batch_compile.cmi : -core/js_runtime_modules.cmx : -core/config_util.cmx : core/config_util.cmi -core/js_packages_info.cmx : core/lam_module_ident.cmx ext/ext_sys.cmx \ - ext/ext_string.cmx ext/ext_pervasives.cmx ext/ext_path.cmx \ - ext/ext_namespace.cmx ext/ext_filename.cmx core/config_util.cmx \ - depends/bs_exception.cmx core/js_packages_info.cmi -core/js_packages_state.cmx : core/js_packages_info.cmx \ - ext/ext_pervasives.cmx ext/ext_namespace.cmx core/js_packages_state.cmi -core/ocaml_types.cmx : common/ext_log.cmx ext/ext_list.cmx \ - core/ocaml_types.cmi -core/bs_conditional_initial.cmx : common/js_config.cmx common/bs_version.cmx \ - core/bs_conditional_initial.cmi -core/ocaml_options.cmx : common/bs_version.cmx \ - core/bs_conditional_initial.cmx core/ocaml_options.cmi -core/ocaml_parse.cmx : syntax/ppx_entry.cmx common/js_config.cmx \ - ext/ext_path.cmx core/ocaml_parse.cmi -core/lam_tag_info.cmx : -core/js_op.cmx : core/lam_tag_info.cmx -core/lam_module_ident.cmx : core/js_op.cmx core/j.cmx ext/hashtbl_make.cmx \ - ext/hash_set.cmx ext/ext_ident.cmx stubs/bs_hash_stubs.cmx \ - core/lam_module_ident.cmi -core/lam_arity.cmx : core/lam_arity.cmi -core/lam.cmx : ext/ordered_hash_map_local_ident.cmx ext/literals.cmx \ - core/lam_tag_info.cmx core/lam_module_ident.cmx ext/int_vec_vec.cmx \ - ext/int_vec_util.cmx ext/int_vec.cmx ext/int_hashtbl.cmx \ - ext/ident_set.cmx ext/ident_hashtbl.cmx ext/ident_hash_set.cmx \ - ext/hash_set_ident_mask.cmx syntax/external_ffi_types.cmx \ - syntax/external_arg_spec.cmx ext/ext_string.cmx ext/ext_scc.cmx \ - common/ext_log.cmx ext/ext_list.cmx syntax/ast_exp_extension.cmx \ - core/lam.cmi -core/lam_print.cmx : core/lam.cmx ext/ext_list.cmx core/lam_print.cmi -core/lam_beta_reduce_util.cmx : core/lam.cmx ext/ident_hashtbl.cmx \ - core/lam_beta_reduce_util.cmi -core/lam_inline_util.cmx : core/lam.cmx core/lam_inline_util.cmi -core/lam_analysis.cmx : core/lam.cmx ext/ext_list.cmx core/lam_analysis.cmi -core/lam_closure.cmx : core/lam_analysis.cmx core/lam.cmx ext/ident_set.cmx \ - ext/ident_map.cmx ext/ext_list.cmx core/lam_closure.cmi -core/js_cmj_format.cmx : ext/string_map.cmx core/lam_arity.cmx core/lam.cmx \ - core/js_packages_info.cmx ext/ext_string.cmx ext/ext_pervasives.cmx \ - ext/ext_namespace.cmx core/js_cmj_format.cmi -core/js_cmj_load.cmx : core/js_cmj_format.cmx core/config_util.cmx \ - depends/bs_exception.cmx core/js_cmj_load.cmi -core/js_fun_env.cmx : ext/ident_set.cmx ext/ext_list.cmx core/js_fun_env.cmi -core/js_call_info.cmx : core/js_call_info.cmi -core/js_closure.cmx : ext/ident_set.cmx core/js_closure.cmi -core/js_number.cmx : core/js_number.cmi -core/js_cmj_datasets.cmx : ext/string_map.cmx core/js_cmj_format.cmx \ - core/js_cmj_datasets.cmi -core/lam_exit_code.cmx : core/lam.cmx core/lam_exit_code.cmi -core/j.cmx : core/js_op.cmx core/js_fun_env.cmx core/js_closure.cmx \ - core/js_call_info.cmx ext/ident_set.cmx -core/lam_compile_util.cmx : core/lam_tag_info.cmx core/lam.cmx \ - core/js_op.cmx core/lam_compile_util.cmi -core/lam_id_kind.cmx : core/lam_arity.cmx core/lam.cmx core/lam_id_kind.cmi -core/lam_stats.cmx : core/lam_id_kind.cmx ext/ident_set.cmx \ - ext/ident_hashtbl.cmx core/lam_stats.cmi -core/lam_compile_context.cmx : core/lam_stats.cmx core/lam.cmx core/j.cmx \ - ext/int_map.cmx ext/ident_map.cmx ext/ext_list.cmx \ - core/lam_compile_context.cmi -core/js_map.cmx : core/j.cmx -core/js_fold.cmx : core/j.cmx -core/js_fold_basic.cmx : core/lam_module_ident.cmx \ - core/js_runtime_modules.cmx core/js_fold.cmx common/js_config.cmx \ - core/j.cmx ext/ident_set.cmx core/js_fold_basic.cmi -core/js_pass_scope.cmx : core/js_fun_env.cmx core/js_fold.cmx \ - core/js_closure.cmx ext/ident_set.cmx common/ext_log.cmx ext/ext_list.cmx \ - core/js_pass_scope.cmi -core/js_op_util.cmx : core/js_op.cmx core/j.cmx core/js_op_util.cmi -core/js_analyzer.cmx : core/js_fun_env.cmx core/js_fold.cmx core/j.cmx \ - ext/ident_set.cmx core/js_analyzer.cmi -core/js_shake.cmx : core/js_analyzer.cmx core/j.cmx ext/ident_set.cmx \ - ext/ext_string.cmx common/ext_log.cmx ext/ext_list.cmx core/js_shake.cmi -core/js_exp_make.cmx : ext/literals.cmx core/lam_compile_util.cmx \ - core/js_runtime_modules.cmx core/js_op_util.cmx core/js_fun_env.cmx \ - core/js_call_info.cmx core/js_analyzer.cmx core/j.cmx ext/ext_string.cmx \ - ext/ext_pervasives.cmx ext/ext_list.cmx ext/ext_ident.cmx \ - core/js_exp_make.cmi -core/js_long.cmx : core/lam_tag_info.cmx core/js_runtime_modules.cmx \ - core/js_exp_make.cmx core/js_analyzer.cmx core/j.cmx core/js_long.cmi -core/js_of_lam_exception.cmx : ext/literals.cmx core/js_runtime_modules.cmx \ - core/js_exp_make.cmx core/j.cmx core/js_of_lam_exception.cmi -core/js_of_lam_module.cmx : core/js_exp_make.cmx core/j.cmx \ - core/js_of_lam_module.cmi -core/js_of_lam_array.cmx : core/js_exp_make.cmx core/js_of_lam_array.cmi -core/js_of_lam_block.cmx : core/lam.cmx core/js_of_lam_array.cmx \ - core/js_exp_make.cmx core/js_of_lam_block.cmi -core/js_of_lam_string.cmx : core/js_runtime_modules.cmx core/js_exp_make.cmx \ - core/j.cmx ext/ext_string.cmx core/js_of_lam_string.cmi -core/js_of_lam_tuple.cmx : core/js_exp_make.cmx core/j.cmx \ - core/js_of_lam_tuple.cmi -core/js_of_lam_record.cmx : core/js_exp_make.cmx core/js_of_lam_record.cmi -core/js_of_lam_float_record.cmx : core/js_exp_make.cmx \ - core/js_of_lam_float_record.cmi -core/js_arr.cmx : core/js_exp_make.cmx core/js_arr.cmi -core/lam_compile_const.cmx : core/lam_compile_util.cmx core/lam.cmx \ - core/js_of_lam_string.cmx core/js_of_lam_block.cmx \ - core/js_of_lam_array.cmx core/js_long.cmx core/js_exp_make.cmx core/j.cmx \ - syntax/external_arg_spec.cmx ext/ext_list.cmx core/lam_compile_const.cmi -core/lam_inner.cmx : core/lam.cmx core/lam_inner.cmi -core/lam_subst.cmx : core/lam.cmx ext/ident_map.cmx ext/ext_list.cmx \ - core/lam_subst.cmi -core/lam_util.cmx : core/lam_stats.cmx core/lam_print.cmx \ - core/lam_id_kind.cmx core/lam_analysis.cmx core/lam.cmx \ - common/js_config.cmx ext/ident_set.cmx ext/ident_hashtbl.cmx \ - ext/ext_path.cmx common/ext_log.cmx ext/ext_list.cmx ext/ext_array.cmx \ - core/lam_util.cmi -core/lam_eta_conversion.cmx : ext/literals.cmx core/lam.cmx ext/ext_list.cmx \ - ext/ext_ident.cmx core/lam_eta_conversion.cmi -core/lam_group.cmx : core/lam_print.cmx core/lam.cmx core/lam_group.cmi -core/lam_pass_deep_flatten.cmx : core/lam_util.cmx core/lam_group.cmx \ - core/lam.cmx ext/int_map.cmx ext/ident_set.cmx ext/ext_list.cmx \ - core/lam_pass_deep_flatten.cmi -core/js_stmt_make.cmx : core/lam_print.cmx core/lam.cmx core/js_exp_make.cmx \ - core/js_closure.cmx core/js_analyzer.cmx core/j.cmx ext/ext_list.cmx \ - core/js_stmt_make.cmi -core/js_pass_flatten.cmx : core/js_stmt_make.cmx core/js_map.cmx \ - core/js_exp_make.cmx core/js_analyzer.cmx core/j.cmx ext/ext_list.cmx \ - core/js_pass_flatten.cmi -core/js_of_lam_polyvar.cmx : core/js_exp_make.cmx core/j.cmx \ - core/js_of_lam_polyvar.cmi -core/js_pass_tailcall_inline.cmx : core/js_stmt_make.cmx core/js_op_util.cmx \ - core/js_map.cmx core/js_fold.cmx core/js_exp_make.cmx \ - core/js_analyzer.cmx core/j.cmx ext/ident_set.cmx ext/ident_hashtbl.cmx \ - ext/ext_list.cmx core/js_pass_tailcall_inline.cmi -core/js_of_lam_variant.cmx : core/js_stmt_make.cmx \ - core/js_of_lam_polyvar.cmx core/js_exp_make.cmx core/j.cmx \ - ext/ext_list.cmx core/js_of_lam_variant.cmi -core/js_pass_flatten_and_mark_dead.cmx : core/js_stmt_make.cmx \ - core/js_op_util.cmx core/js_map.cmx core/js_fold.cmx core/js_exp_make.cmx \ - common/js_config.cmx core/js_analyzer.cmx core/j.cmx ext/ident_set.cmx \ - ext/ident_hashtbl.cmx common/ext_log.cmx ext/ext_list.cmx \ - ext/ext_ident.cmx core/js_pass_flatten_and_mark_dead.cmi -core/js_ast_util.cmx : core/js_stmt_make.cmx core/js_exp_make.cmx \ - core/js_analyzer.cmx core/j.cmx ext/ext_ident.cmx core/js_ast_util.cmi -core/lam_dce.cmx : core/lam_group.cmx core/lam_analysis.cmx core/lam.cmx \ - ext/ident_set.cmx ext/ident_hashtbl.cmx ext/ident_hash_set.cmx \ - ext/ext_pervasives.cmx ext/ext_list.cmx ext/ext_ident.cmx \ - core/lam_dce.cmi -core/lam_group_pass.cmx : core/lam.cmx -core/lam_compile_env.cmx : ext/string_map.cmx core/ocaml_types.cmx \ - ext/literals.cmx core/lam_module_ident.cmx core/lam.cmx \ - core/js_stmt_make.cmx core/js_exp_make.cmx common/js_config.cmx \ - core/js_cmj_load.cmx core/js_cmj_format.cmx syntax/external_ffi_types.cmx \ - ext/ext_string.cmx ext/ext_modulename.cmx core/lam_compile_env.cmi -core/lam_arity_analysis.cmx : core/lam_stats.cmx core/lam_compile_env.cmx \ - core/lam_arity.cmx core/lam.cmx ext/ident_hashtbl.cmx ext/ext_list.cmx \ - core/lam_arity_analysis.cmi -core/lam_stats_export.cmx : ext/string_map.cmx core/lam_stats.cmx \ - core/lam_module_ident.cmx core/lam_inline_util.cmx core/lam_id_kind.cmx \ - core/lam_compile_env.cmx core/lam_closure.cmx core/lam_arity_analysis.cmx \ - core/lam_arity.cmx core/lam_analysis.cmx core/lam.cmx \ - core/js_packages_state.cmx core/js_cmj_format.cmx ext/ident_set.cmx \ - ext/ident_map.cmx ext/ident_hashtbl.cmx ext/ext_option.cmx \ - common/ext_log.cmx ext/ext_list.cmx ext/ext_array.cmx \ - core/lam_stats_export.cmi -core/lam_pass_alpha_conversion.cmx : core/lam_stats.cmx \ - core/lam_eta_conversion.cmx core/lam_arity_analysis.cmx \ - core/lam_arity.cmx core/lam.cmx ext/ext_list.cmx \ - core/lam_pass_alpha_conversion.cmi -core/lam_pass_collect.cmx : core/lam_util.cmx core/lam_stats.cmx \ - core/lam_arity_analysis.cmx core/lam_arity.cmx core/lam.cmx \ - ext/ident_set.cmx ext/ident_hashtbl.cmx core/lam_pass_collect.cmi -core/js_dump_lit.cmx : ext/literals.cmx ext/ext_string.cmx -core/js_dump_string.cmx : ext/ext_pp.cmx core/js_dump_string.cmi -core/js_dump_property.cmx : core/js_dump_string.cmx core/js_dump_lit.cmx \ - ext/ext_string.cmx ext/ext_pp.cmx core/js_dump_property.cmi -core/js_dump_import_export.cmx : core/js_dump_string.cmx \ - core/js_dump_lit.cmx ext/ext_string.cmx ext/ext_pp_scope.cmx \ - ext/ext_pp.cmx ext/ext_list.cmx ext/ext_ident.cmx \ - core/js_dump_import_export.cmi -core/js_dump.cmx : core/js_stmt_make.cmx core/js_runtime_modules.cmx \ - core/js_op_util.cmx core/js_op.cmx core/js_number.cmx core/js_fun_env.cmx \ - core/js_fold_basic.cmx core/js_exp_make.cmx core/js_dump_string.cmx \ - core/js_dump_property.cmx core/js_dump_lit.cmx common/js_config.cmx \ - core/js_closure.cmx core/j.cmx ext/ident_set.cmx ext/ext_pp_scope.cmx \ - ext/ext_pp.cmx ext/ext_list.cmx ext/ext_ident.cmx ext/ext_array.cmx \ - core/js_dump.cmi -core/js_name_of_module_id.cmx : core/lam_compile_env.cmx \ - core/js_packages_state.cmx core/js_packages_info.cmx \ - core/js_name_of_module_id.cmi -core/js_dump_program.cmx : core/lam_module_ident.cmx \ - core/js_packages_info.cmx core/js_name_of_module_id.cmx \ - core/js_dump_string.cmx core/js_dump_lit.cmx \ - core/js_dump_import_export.cmx core/js_dump.cmx common/js_config.cmx \ - core/j.cmx ext/ext_pp_scope.cmx ext/ext_pp.cmx ext/ext_list.cmx \ - common/bs_version.cmx core/js_dump_program.cmi -core/js_pass_debug.cmx : core/js_dump_program.cmx common/js_config.cmx \ - core/j.cmx ext/ext_pervasives.cmx ext/ext_path.cmx common/ext_log.cmx \ - core/js_pass_debug.cmi -core/js_of_lam_option.cmx : core/js_runtime_modules.cmx \ - core/js_of_lam_polyvar.cmx core/js_exp_make.cmx core/js_analyzer.cmx \ - core/j.cmx core/js_of_lam_option.cmi -core/js_output.cmx : core/lam_compile_context.cmx core/lam_analysis.cmx \ - core/lam.cmx core/js_stmt_make.cmx core/js_exp_make.cmx core/js_dump.cmx \ - core/js_analyzer.cmx core/j.cmx ext/ext_list.cmx core/js_output.cmi -core/lam_compile_global.cmx : core/ocaml_types.cmx core/lam_module_ident.cmx \ - core/lam_compile_env.cmx core/lam.cmx core/js_stmt_make.cmx \ - core/js_of_lam_module.cmx core/js_exp_make.cmx core/j.cmx \ - ext/ext_list.cmx core/lam_compile_global.cmi -core/lam_dispatch_primitive.cmx : core/js_stmt_make.cmx \ - core/js_runtime_modules.cmx core/js_of_lam_tuple.cmx \ - core/js_of_lam_exception.cmx core/js_of_lam_array.cmx core/js_long.cmx \ - core/js_exp_make.cmx common/js_config.cmx core/js_analyzer.cmx core/j.cmx \ - ext/ext_list.cmx common/bs_warnings.cmx core/lam_dispatch_primitive.cmi -core/lam_bounded_vars.cmx : core/lam.cmx ext/ident_hashtbl.cmx \ - ext/ext_list.cmx core/lam_bounded_vars.cmi -core/lam_beta_reduce.cmx : core/lam_util.cmx core/lam_stats.cmx \ - core/lam_compile_global.cmx core/lam_closure.cmx \ - core/lam_bounded_vars.cmx core/lam_beta_reduce_util.cmx \ - core/lam_analysis.cmx core/lam.cmx ext/ident_map.cmx \ - ext/ident_hashtbl.cmx ext/ext_list.cmx core/lam_beta_reduce.cmi -core/lam_compile_external_call.cmx : core/lam_compile_env.cmx \ - core/lam_compile_context.cmx core/lam_compile_const.cmx \ - core/js_of_lam_variant.cmx core/js_of_lam_option.cmx core/js_exp_make.cmx \ - core/js_arr.cmx core/js_analyzer.cmx core/j.cmx \ - syntax/external_ffi_types.cmx syntax/external_arg_spec.cmx \ - ext/ext_list.cmx ext/ext_ident.cmx core/lam_compile_external_call.cmi -core/lam_compile_external_obj.cmx : core/lam_compile_external_call.cmx \ - core/lam_compile_const.cmx core/js_stmt_make.cmx core/js_op.cmx \ - core/js_of_lam_option.cmx core/js_exp_make.cmx core/js_ast_util.cmx \ - core/js_analyzer.cmx core/j.cmx syntax/external_arg_spec.cmx \ - ext/ext_list.cmx ext/ext_ident.cmx core/lam_compile_external_obj.cmi -core/lam_compile_primitive.cmx : core/lam_print.cmx \ - core/lam_dispatch_primitive.cmx core/lam_compile_external_call.cmx \ - core/lam_compile_context.cmx core/lam.cmx core/js_runtime_modules.cmx \ - core/js_op_util.cmx core/js_of_lam_string.cmx core/js_of_lam_option.cmx \ - core/js_of_lam_float_record.cmx core/js_of_lam_exception.cmx \ - core/js_of_lam_block.cmx core/js_of_lam_array.cmx core/js_long.cmx \ - core/js_exp_make.cmx common/js_config.cmx core/j.cmx \ - common/bs_warnings.cmx core/lam_compile_primitive.cmi -core/lam_compile.cmx : ext/literals.cmx core/lam_util.cmx \ - common/lam_methname.cmx core/lam_exit_code.cmx \ - core/lam_eta_conversion.cmx core/lam_compile_primitive.cmx \ - core/lam_compile_global.cmx core/lam_compile_external_obj.cmx \ - core/lam_compile_env.cmx core/lam_compile_context.cmx \ - core/lam_compile_const.cmx core/lam_closure.cmx core/lam_beta_reduce.cmx \ - core/lam_arity.cmx core/lam_analysis.cmx core/lam.cmx \ - core/js_stmt_make.cmx core/js_runtime_modules.cmx core/js_output.cmx \ - core/js_of_lam_record.cmx core/js_of_lam_array.cmx core/js_exp_make.cmx \ - core/js_call_info.cmx core/js_ast_util.cmx core/js_arr.cmx \ - core/js_analyzer.cmx core/j.cmx ext/ident_set.cmx ext/ident_map.cmx \ - ext/ext_string.cmx ext/ext_list.cmx ext/ext_ident.cmx \ - core/lam_compile.cmi -core/lam_pass_exits.cmx : core/lam_subst.cmx core/lam_bounded_vars.cmx \ - core/lam_analysis.cmx core/lam.cmx ext/int_hashtbl.cmx ext/ident_map.cmx \ - ext/ext_list.cmx core/lam_pass_exits.cmi -core/lam_pass_count.cmx : core/lam_beta_reduce.cmx core/lam.cmx \ - ext/ident_map.cmx ext/ident_hashtbl.cmx ext/ext_list.cmx \ - core/lam_pass_count.cmi -core/lam_pass_eliminate_ref.cmx : core/lam.cmx ext/ident_set.cmx \ - ext/ext_list.cmx core/lam_pass_eliminate_ref.cmi -core/lam_pass_lets_dce.cmx : core/lam_util.cmx \ - core/lam_pass_eliminate_ref.cmx core/lam_pass_count.cmx \ - core/lam_beta_reduce.cmx core/lam_analysis.cmx core/lam.cmx \ - ext/ident_hashtbl.cmx common/ext_log.cmx ext/ext_list.cmx \ - core/lam_pass_lets_dce.cmi -core/lam_pass_remove_alias.cmx : core/lam_util.cmx core/lam_stats.cmx \ - core/lam_inline_util.cmx core/lam_compile_env.cmx core/lam_closure.cmx \ - core/lam_beta_reduce.cmx core/lam_analysis.cmx core/lam.cmx \ - ext/ident_set.cmx ext/ident_hashtbl.cmx ext/ext_list.cmx \ - core/lam_pass_remove_alias.cmi -core/lam_coercion.cmx : ext/string_hash_set.cmx core/lam_util.cmx \ - core/lam_stats.cmx core/lam_group.cmx core/lam_dce.cmx \ - core/lam_arity_analysis.cmx core/lam_arity.cmx core/lam.cmx \ - ext/ident_set.cmx ext/ident_map.cmx ext/ident_hashtbl.cmx \ - ext/ext_list.cmx depends/bs_exception.cmx core/lam_coercion.cmi -core/lam_compile_main.cmx : ext/literals.cmx core/lam_util.cmx \ - core/lam_stats_export.cmx core/lam_stats.cmx \ - core/lam_pass_remove_alias.cmx core/lam_pass_lets_dce.cmx \ - core/lam_pass_exits.cmx core/lam_pass_deep_flatten.cmx \ - core/lam_pass_collect.cmx core/lam_pass_alpha_conversion.cmx \ - core/lam_module_ident.cmx core/lam_group.cmx core/lam_compile_env.cmx \ - core/lam_compile_context.cmx core/lam_compile.cmx core/lam_coercion.cmx \ - core/lam_analysis.cmx core/lam.cmx core/js_stmt_make.cmx \ - core/js_shake.cmx core/js_runtime_modules.cmx \ - core/js_pass_tailcall_inline.cmx core/js_pass_scope.cmx \ - core/js_pass_flatten_and_mark_dead.cmx core/js_pass_flatten.cmx \ - core/js_pass_debug.cmx core/js_packages_state.cmx \ - core/js_packages_info.cmx core/js_output.cmx core/js_fold_basic.cmx \ - core/js_exp_make.cmx core/js_dump_program.cmx common/js_config.cmx \ - core/js_cmj_format.cmx core/j.cmx ext/ident_set.cmx ext/ext_string.cmx \ - ext/ext_pervasives.cmx ext/ext_path.cmx ext/ext_namespace.cmx \ - common/ext_log.cmx ext/ext_list.cmx ext/ext_filename.cmx ext/ext_char.cmx \ - core/lam_compile_main.cmi -core/js_implementation.cmx : core/ocaml_parse.cmx ext/literals.cmx \ - core/lam_compile_main.cmx core/lam_compile_env.cmx common/js_config.cmx \ - ext/ext_string.cmx ext/ext_pervasives.cmx ext/ext_namespace.cmx \ - common/ext_log.cmx ext/ext_io.cmx depends/binary_ast.cmx \ - core/js_implementation.cmi -core/ocaml_batch_compile.cmx : core/ocaml_parse.cmx \ - core/js_implementation.cmx common/js_config.cmx ext/ext_ref.cmx \ - ext/ext_pervasives.cmx ext/ext_namespace.cmx ext/ext_modulename.cmx \ - ext/ext_list.cmx ext/ext_format.cmx depends/bs_exception.cmx \ - depends/ast_extract.cmx core/ocaml_batch_compile.cmi -core/bspack_main.cmi : -core/jsoo_main.cmi : -core/bspp_main.cmi : -core/js_cmi_datasets.cmi : ext/string_map.cmi -core/js_main.cmi : -core/bsppx_main.cmx : syntax/ppx_entry.cmx -core/bspack_main.cmx : ext/string_hashtbl.cmx ext/ext_string.cmx \ - ext/ext_pervasives.cmx ext/ext_path.cmx ext/ext_list.cmx ext/ext_io.cmx \ - depends/ast_extract.cmx core/bspack_main.cmi -core/jsoo_main.cmx : super_errors/super_main.cmx ext/string_map.cmx \ - syntax/ppx_entry.cmx outcome_printer/outcome_printer_ns.cmx \ - core/lam_compile_main.cmx core/lam_compile_env.cmx \ - core/js_dump_program.cmx core/js_cmj_format.cmx core/js_cmj_datasets.cmx \ - ext/ext_pp.cmx bsb/bsb_warning.cmx common/bs_version.cmx \ - core/bs_conditional_initial.cmx core/jsoo_main.cmi -core/bspp_main.cmx : core/bspp_main.cmi -core/js_cmi_datasets.cmx : ext/string_map.cmx core/js_cmi_datasets.cmi -core/js_main.cmx : super_errors/super_main.cmx \ - outcome_printer/reason_outcome_printer_main.cmx \ - outcome_printer/outcome_printer_ns.cmx core/ocaml_parse.cmx \ - core/ocaml_options.cmx core/ocaml_batch_compile.cmx \ - core/js_packages_state.cmx core/js_implementation.cmx \ - common/js_config.cmx ext/ext_string.cmx core/bs_conditional_initial.cmx \ - core/js_main.cmi -core/cmjdump_main.cmx : ext/string_map.cmx core/lam_arity.cmx \ - core/js_packages_info.cmx core/js_cmj_format.cmx -core/astdump_main.cmx : common/ml_binary.cmx ext/ext_path.cmx \ - bsb/bsb_helper_depfile_gen.cmx -ounit/oUnit.cmi : -ounit/oUnitDiff.cmi : -ounit/oUnit.cmx : ounit/oUnitUtils.cmx ounit/oUnitTypes.cmx \ - ounit/oUnitLogger.cmx ounit/oUnitChooser.cmx ounit/oUnit.cmi -ounit/oUnitDiff.cmx : ounit/oUnit.cmx ounit/oUnitDiff.cmi -ounit/oUnitLogger.cmx : ounit/oUnitUtils.cmx ounit/oUnitTypes.cmx -ounit/oUnitTypes.cmx : -ounit/oUnitUtils.cmx : ounit/oUnitTypes.cmx -ounit/oUnitChooser.cmx : ounit/oUnitTypes.cmx -super_errors/super_reason_react.cmx : super_errors/super_reason_react.cmi -super_errors/super_misc.cmx : super_errors/super_misc.cmi -super_errors/super_warnings.cmx : -super_errors/super_location.cmx : super_errors/super_warnings.cmx \ - super_errors/super_misc.cmx -super_errors/super_env.cmx : super_errors/super_location.cmx -super_errors/super_pparse.cmx : super_errors/super_location.cmx \ - ext/ext_string.cmx -super_errors/super_typecore.cmx : super_errors/super_reason_react.cmx \ - super_errors/super_location.cmx -super_errors/super_typemod.cmx : super_errors/super_reason_react.cmx \ - super_errors/super_location.cmx -super_errors/super_typetexp.cmx : super_errors/super_location.cmx -super_errors/super_main.cmx : super_errors/super_typetexp.cmx \ - super_errors/super_typemod.cmx super_errors/super_typecore.cmx \ - super_errors/super_pparse.cmx super_errors/super_location.cmx \ - super_errors/super_env.cmx -super_errors/super_reason_react.cmi : -super_errors/super_misc.cmi : -outcome_printer/reason_syntax_util.cmx : \ - outcome_printer/reason_syntax_util.cmi -outcome_printer/outcome_printer_ns.cmx : ext/ext_namespace.cmx \ - outcome_printer/outcome_printer_ns.cmi -outcome_printer/tweaked_reason_oprint.cmx : \ - outcome_printer/reason_syntax_util.cmx -outcome_printer/reason_outcome_printer_main.cmx : \ - outcome_printer/tweaked_reason_oprint.cmx -outcome_printer/reason_syntax_util.cmi : -outcome_printer/outcome_printer_ns.cmi : -ounit_tests/ounit_cmd_util.cmi : -ounit_tests/ounit_tests_main.cmi : -ounit_tests/ounit_tests_util.cmx : -ounit_tests/ounit_array_tests.cmx : ounit/oUnit.cmx ext/ext_string.cmx \ - ext/ext_array.cmx -ounit_tests/ounit_list_test.cmx : ounit/oUnit.cmx ext/ext_list.cmx -ounit_tests/ounit_bal_tree_tests.cmx : ext/set_int.cmx ext/set_gen.cmx \ - ounit_tests/ounit_tests_util.cmx ounit/oUnit.cmx -ounit_tests/ounit_path_tests.cmx : ounit/oUnit.cmx ext/ext_string.cmx \ - ext/ext_path.cmx -ounit_tests/ounit_union_find_tests.cmx : ext/union_find.cmx ounit/oUnit.cmx \ - ext/int_vec_vec.cmx ext/int_vec.cmx ext/ext_string.cmx -ounit_tests/ounit_hash_stubs_test.cmx : ounit_tests/ounit_tests_util.cmx \ - ounit/oUnit.cmx ext/int_hash_set.cmx ext/hash_set_poly.cmx \ - stubs/bs_hash_stubs.cmx -ounit_tests/ounit_hash_set_tests.cmx : ext/string_hash_set.cmx \ - ext/ordered_hash_set_string.cmx ounit/oUnit.cmx ext/hash_set_poly.cmx \ - ext/hash_set.cmx -ounit_tests/ounit_scc_tests.cmx : ext/string_hashtbl.cmx ounit/oUnit.cmx \ - ext/int_vec_vec.cmx ext/int_vec.cmx ext/ext_string.cmx ext/ext_scc.cmx -ounit_tests/ounit_hashtbl_tests.cmx : ext/string_hashtbl.cmx ounit/oUnit.cmx -ounit_tests/ounit_json_tests.cmx : ext/string_map.cmx ounit/oUnit.cmx \ - ext/ext_pervasives.cmx ext/ext_json_types.cmx ext/ext_json_parse.cmx \ - ext/ext_json_noloc.cmx ext/ext_json.cmx -ounit_tests/ounit_map_tests.cmx : ounit/oUnit.cmx ext/int_map.cmx -ounit_tests/ounit_ordered_hash_set_tests.cmx : \ - ext/ordered_hash_set_string.cmx ounit/oUnit.cmx ext/ext_util.cmx \ - ext/ext_string.cmx -ounit_tests/ounit_vec_test.cmx : ext/set_int.cmx ounit/oUnit.cmx \ - ext/int_vec.cmx ext/ext_list.cmx ext/ext_json.cmx -ounit_tests/ounit_data_random.cmx : -ounit_tests/ounit_string_tests.cmx : ounit_tests/ounit_data_random.cmx \ - ounit/oUnit.cmx ext/ext_string.cmx ext/ext_path.cmx ext/ext_namespace.cmx \ - ext/ext_modulename.cmx -ounit_tests/ounit_utf8_test.cmx : ounit/oUnit.cmx ext/ext_utf8.cmx -ounit_tests/ounit_js_regex_checker_tests.cmx : ounit/oUnit.cmx \ - ext/ext_js_regex.cmx -ounit_tests/ounit_topsort_tests.cmx : ext/set_int.cmx ounit/oUnit.cmx \ - ext/int_vec.cmx ext/ext_topsort.cmx -ounit_tests/ounit_sexp_tests.cmx : -ounit_tests/ounit_int_vec_tests.cmx : ounit/oUnit.cmx ext/int_vec_util.cmx \ - ext/int_vec.cmx -ounit_tests/ounit_ident_mask_tests.cmx : ounit/oUnit.cmx \ - ext/hash_set_ident_mask.cmx -ounit_tests/ounit_cmd_util.cmx : ext/literals.cmx \ - ounit_tests/ounit_cmd_util.cmi -ounit_tests/ounit_cmd_tests.cmx : ounit_tests/ounit_cmd_util.cmx \ - ounit/oUnit.cmx ext/ext_string.cmx -ounit_tests/ounit_ffi_error_debug_test.cmx : ounit_tests/ounit_cmd_util.cmx \ - ounit/oUnit.cmx ext/ext_string.cmx -ounit_tests/ounit_unicode_tests.cmx : ounit/oUnit.cmx ext/ext_string.cmx \ - ext/ext_list.cmx syntax/ast_utf8_string_interp.cmx \ - syntax/ast_utf8_string.cmx -ounit_tests/ounit_bsb_regex_tests.cmx : ounit/oUnit.cmx bsb/bsb_regex.cmx -ounit_tests/ounit_tests_main.cmx : ext/resize_array.cmx \ - ounit_tests/ounit_vec_test.cmx ounit_tests/ounit_utf8_test.cmx \ - ounit_tests/ounit_union_find_tests.cmx \ - ounit_tests/ounit_unicode_tests.cmx ounit_tests/ounit_topsort_tests.cmx \ - ounit_tests/ounit_string_tests.cmx ounit_tests/ounit_scc_tests.cmx \ - ounit_tests/ounit_path_tests.cmx \ - ounit_tests/ounit_ordered_hash_set_tests.cmx \ - ounit_tests/ounit_map_tests.cmx ounit_tests/ounit_list_test.cmx \ - ounit_tests/ounit_json_tests.cmx \ - ounit_tests/ounit_js_regex_checker_tests.cmx \ - ounit_tests/ounit_int_vec_tests.cmx \ - ounit_tests/ounit_ident_mask_tests.cmx \ - ounit_tests/ounit_hashtbl_tests.cmx ounit_tests/ounit_hash_stubs_test.cmx \ - ounit_tests/ounit_hash_set_tests.cmx \ - ounit_tests/ounit_ffi_error_debug_test.cmx \ - ounit_tests/ounit_cmd_tests.cmx ounit_tests/ounit_bsb_regex_tests.cmx \ - ounit_tests/ounit_bal_tree_tests.cmx ounit_tests/ounit_array_tests.cmx \ - ounit/oUnit.cmx ounit_tests/ounit_tests_main.cmi bsb/bsb_build_schemas.cmx : bsb/bsb_build_util.cmx : ext/string_map.cmx ext/string_hashtbl.cmx \ ext/literals.cmx ext/ext_sys.cmx ext/ext_string.cmx ext/ext_path.cmx \ ext/ext_list.cmx ext/ext_json_types.cmx ext/ext_json_parse.cmx \ ext/ext_json.cmx ext/ext_array.cmx bsb/bsb_pkg.cmx bsb/bsb_log.cmx \ bsb/bsb_exception.cmx bsb/bsb_build_schemas.cmx bsb/bsb_build_util.cmi +bsb/bsb_build_util.cmi : ext/ext_json_types.cmx bsb/bsb_clean.cmx : ext/ext_path.cmx bsb/bsb_unix.cmx \ bsb/bsb_parse_sources.cmx bsb/bsb_log.cmx bsb/bsb_config.cmx \ bsb/bsb_build_util.cmx bsb/bsb_clean.cmi +bsb/bsb_clean.cmi : bsb/bsb_config.cmx : ext/ext_path.cmx bsb/bsb_config.cmi +bsb/bsb_config.cmi : bsb/bsb_config_parse.cmx : ext/string_map.cmx ext/string_hash_set.cmx \ ext/literals.cmx ext/ext_path.cmx ext/ext_namespace.cmx ext/ext_list.cmx \ ext/ext_json_types.cmx ext/ext_json_parse.cmx ext/ext_json.cmx \ @@ -884,154 +19,1022 @@ bsb/bsb_config_parse.cmx : ext/string_map.cmx ext/string_hash_set.cmx \ bsb/bsb_package_specs.cmx bsb/bsb_exception.cmx bsb/bsb_default.cmx \ bsb/bsb_config_types.cmx bsb/bsb_config.cmx bsb/bsb_build_util.cmx \ bsb/bsb_build_schemas.cmx common/bs_version.cmx bsb/bsb_config_parse.cmi +bsb/bsb_config_parse.cmi : bsb/bsb_package_specs.cmi \ + bsb/bsb_config_types.cmx bsb/bsb_config_types.cmx : ext/string_map.cmx ext/string_hash_set.cmx \ bsb/bsb_warning.cmx bsb/bsb_package_specs.cmx bsb/bsb_file_groups.cmx bsb/bsb_db.cmx : ext/string_map.cmx ext/ext_string.cmx \ ext/ext_pervasives.cmx ext/ext_path.cmx ext/ext_modulename.cmx \ bsb/bsb_exception.cmx bsb/bsb_db.cmi +bsb/bsb_db.cmi : ext/string_map.cmi bsb/bsb_default.cmx : bsb/bsb_config_types.cmx bsb/bsb_default.cmi +bsb/bsb_default.cmi : bsb/bsb_config_types.cmx bsb/bsb_dir_index.cmx : bsb/bsb_dir_index.cmi +bsb/bsb_dir_index.cmi : bsb/bsb_exception.cmx : ext/ext_string.cmx ext/ext_position.cmx \ ext/ext_json.cmx common/bs_version.cmx bsb/bsb_exception.cmi +bsb/bsb_exception.cmi : ext/ext_position.cmi ext/ext_json_types.cmx bsb/bsb_file.cmx : bsb/bsb_file.cmi +bsb/bsb_file.cmi : bsb/bsb_file_groups.cmx : ext/string_set.cmx ext/string_map.cmx \ ext/ext_list.cmx ext/ext_file_pp.cmx bsb/bsb_dir_index.cmx bsb/bsb_db.cmx bsb/bsb_helper_dep_graph.cmx : ext/string_set.cmx ext/string_map.cmx \ ext/string_hashtbl.cmx bsb/bsb_log.cmx bsb/bsb_helper_dep_graph.cmi +bsb/bsb_helper_dep_graph.cmi : ext/string_set.cmi ext/string_map.cmi \ + ext/string_hashtbl.cmi bsb/bsb_helper_depfile_gen.cmx : ext/string_map.cmx ext/literals.cmx \ ext/ext_string.cmx ext/ext_pervasives.cmx ext/ext_namespace.cmx \ - bsb/bsb_dir_index.cmx bsb/bsb_db.cmx bsb/bsb_helper_depfile_gen.cmi -bsb/bsb_helper_extract.cmx : ext/string_set.cmx ext/ext_string.cmx \ - bsb/bsb_helper_extract.cmi -bsb/bsb_helper_linker.cmx : ext/string_map.cmx ext/literals.cmx \ - ext/ext_path.cmx ext/ext_modulename.cmx bsb/bsb_helper_extract.cmx \ - bsb/bsb_helper_dep_graph.cmx bsb/bsb_helper_linker.cmi -bsb/bsb_helper_main.cmx : ext/ext_path.cmx bsb/bsb_helper_depfile_gen.cmx \ - bsb/bsb_dir_index.cmx bsb/bsb_helper_main.cmi -bsb/bsb_helper_packer.cmx : ext/string_set.cmx ext/string_map.cmx \ - ext/literals.cmx ext/ext_path.cmx ext/ext_modulename.cmx \ - bsb/bsb_helper_extract.cmx bsb/bsb_helper_dep_graph.cmx \ - bsb/bsb_helper_packer.cmi -bsb/bsb_log.cmx : ext/ext_string.cmx ext/ext_color.cmx bsb/bsb_log.cmi -bsb/bsb_main.cmx : ext/ext_sys.cmx ext/ext_string.cmx ext/ext_pervasives.cmx \ - ext/ext_path.cmx ext/ext_json_parse.cmx ext/ext_array.cmx \ - bsb/bsb_world.cmx bsb/bsb_theme_init.cmx bsb/bsb_query.cmx \ - bsb/bsb_ninja_regen.cmx bsb/bsb_log.cmx bsb/bsb_exception.cmx \ - bsb/bsb_config.cmx bsb/bsb_clean.cmx bsb/bsb_build_util.cmx \ - common/bs_version.cmx bsb/bsb_main.cmi -bsb/bsb_merlin_gen.cmx : ext/literals.cmx ext/ext_string.cmx \ - ext/ext_path.cmx bsb/bsb_warning.cmx bsb/bsb_file_groups.cmx \ - bsb/bsb_config_types.cmx bsb/bsb_config.cmx bsb/bsb_merlin_gen.cmi -bsb/bsb_namespace_map_gen.cmx : ext/string_map.cmx ext/literals.cmx \ - ext/ext_path.cmx bsb/bsb_file_groups.cmx bsb/bsb_namespace_map_gen.cmi -bsb/bsb_ninja_check.cmx : ext/ext_array.cmx bsb/bsb_log.cmx \ - common/bs_version.cmx bsb/bsb_ninja_check.cmi -bsb/bsb_ninja_file_groups.cmx : ext/string_set.cmx ext/string_map.cmx \ - ext/string_hash_set.cmx ext/literals.cmx ext/ext_string.cmx \ + bsb/bsb_dir_index.cmx bsb/bsb_db.cmx bsb/bsb_helper_depfile_gen.cmi +bsb/bsb_helper_depfile_gen.cmi : bsb/bsb_dir_index.cmi +bsb/bsb_helper_extract.cmx : ext/string_set.cmx ext/ext_string.cmx \ + bsb/bsb_helper_extract.cmi +bsb/bsb_helper_extract.cmi : ext/string_set.cmi +bsb/bsb_helper_linker.cmx : ext/string_map.cmx ext/literals.cmx \ + ext/ext_path.cmx ext/ext_modulename.cmx bsb/bsb_helper_extract.cmx \ + bsb/bsb_helper_dep_graph.cmx bsb/bsb_helper_linker.cmi +bsb/bsb_helper_linker.cmi : +bsb/bsb_helper_main.cmx : ext/ext_path.cmx bsb/bsb_helper_depfile_gen.cmx \ + bsb/bsb_dir_index.cmx bsb/bsb_helper_main.cmi +bsb/bsb_helper_main.cmi : +bsb/bsb_helper_packer.cmx : ext/string_set.cmx ext/string_map.cmx \ + ext/literals.cmx ext/ext_path.cmx ext/ext_modulename.cmx \ + bsb/bsb_helper_extract.cmx bsb/bsb_helper_dep_graph.cmx \ + bsb/bsb_helper_packer.cmi +bsb/bsb_helper_packer.cmi : +bsb/bsb_log.cmx : ext/ext_string.cmx ext/ext_color.cmx bsb/bsb_log.cmi +bsb/bsb_log.cmi : +bsb/bsb_main.cmx : ext/ext_sys.cmx ext/ext_string.cmx ext/ext_pervasives.cmx \ + ext/ext_path.cmx ext/ext_json_parse.cmx ext/ext_array.cmx \ + bsb/bsb_world.cmx bsb/bsb_theme_init.cmx bsb/bsb_query.cmx \ + bsb/bsb_ninja_regen.cmx bsb/bsb_log.cmx bsb/bsb_exception.cmx \ + bsb/bsb_config.cmx bsb/bsb_clean.cmx bsb/bsb_build_util.cmx \ + common/bs_version.cmx bsb/bsb_main.cmi +bsb/bsb_main.cmi : +bsb/bsb_merlin_gen.cmx : ext/literals.cmx ext/ext_string.cmx \ + ext/ext_path.cmx bsb/bsb_warning.cmx bsb/bsb_file_groups.cmx \ + bsb/bsb_config_types.cmx bsb/bsb_config.cmx bsb/bsb_merlin_gen.cmi +bsb/bsb_merlin_gen.cmi : bsb/bsb_config_types.cmx +bsb/bsb_namespace_map_gen.cmx : ext/string_map.cmx ext/literals.cmx \ + ext/ext_path.cmx bsb/bsb_file_groups.cmx bsb/bsb_namespace_map_gen.cmi +bsb/bsb_namespace_map_gen.cmi : bsb/bsb_file_groups.cmx +bsb/bsb_ninja_check.cmx : ext/ext_array.cmx bsb/bsb_log.cmx \ + common/bs_version.cmx bsb/bsb_ninja_check.cmi +bsb/bsb_ninja_check.cmi : +bsb/bsb_ninja_file_groups.cmx : ext/string_set.cmx ext/string_map.cmx \ + ext/string_hash_set.cmx ext/literals.cmx ext/ext_string.cmx \ + ext/ext_pervasives.cmx ext/ext_path.cmx ext/ext_namespace.cmx \ + ext/ext_list.cmx bsb/bsb_rule.cmx bsb/bsb_package_specs.cmx \ + bsb/bsb_ninja_util.cmx bsb/bsb_ninja_global_vars.cmx \ + bsb/bsb_file_groups.cmx bsb/bsb_dir_index.cmx bsb/bsb_db.cmx \ + bsb/bsb_config.cmx bsb/bsb_build_schemas.cmx \ + bsb/bsb_ninja_file_groups.cmi +bsb/bsb_ninja_file_groups.cmi : ext/string_map.cmi ext/string_hash_set.cmi \ + bsb/bsb_rule.cmi bsb/bsb_package_specs.cmi bsb/bsb_file_groups.cmx +bsb/bsb_ninja_gen.cmx : ext/string_map.cmx ext/literals.cmx \ + ext/ext_string.cmx ext/ext_path.cmx ext/ext_list.cmx bsb/bsb_warning.cmx \ + bsb/bsb_rule.cmx bsb/bsb_ninja_util.cmx bsb/bsb_ninja_global_vars.cmx \ + bsb/bsb_ninja_file_groups.cmx bsb/bsb_namespace_map_gen.cmx \ + bsb/bsb_log.cmx bsb/bsb_file_groups.cmx bsb/bsb_exception.cmx \ + bsb/bsb_dir_index.cmx bsb/bsb_default.cmx bsb/bsb_db.cmx \ + bsb/bsb_config_types.cmx bsb/bsb_config.cmx bsb/bsb_build_util.cmx \ + bsb/bsb_build_schemas.cmx bsb/bsb_ninja_gen.cmi +bsb/bsb_ninja_gen.cmi : bsb/bsb_config_types.cmx +bsb/bsb_ninja_global_vars.cmx : +bsb/bsb_ninja_regen.cmx : ext/literals.cmx ext/ext_path.cmx \ + bsb/bsb_ninja_gen.cmx bsb/bsb_ninja_check.cmx bsb/bsb_merlin_gen.cmx \ + bsb/bsb_log.cmx bsb/bsb_config_parse.cmx bsb/bsb_config.cmx \ + bsb/bsb_clean.cmx bsb/bsb_build_util.cmx bsb/bsb_ninja_regen.cmi +bsb/bsb_ninja_regen.cmi : bsb/bsb_package_specs.cmi bsb/bsb_config_types.cmx +bsb/bsb_ninja_util.cmx : ext/ext_string.cmx bsb/bsb_rule.cmx \ + bsb/bsb_ninja_util.cmi +bsb/bsb_ninja_util.cmi : bsb/bsb_rule.cmi +bsb/bsb_package_specs.cmx : ext/string_map.cmx ext/literals.cmx \ + ext/ext_string.cmx ext/ext_path.cmx ext/ext_namespace.cmx \ + ext/ext_json_types.cmx ext/ext_json.cmx bsb/bsb_exception.cmx \ + bsb/bsb_config.cmx bsb/bsb_build_schemas.cmx bsb/bsb_package_specs.cmi +bsb/bsb_package_specs.cmi : ext/ext_json_types.cmx +bsb/bsb_parse_sources.cmx : ext/string_vec.cmx ext/string_set.cmx \ + ext/string_map.cmx ext/literals.cmx ext/ext_string.cmx \ + ext/ext_position.cmx ext/ext_path.cmx ext/ext_namespace.cmx \ + ext/ext_json_types.cmx ext/ext_json_parse.cmx ext/ext_json.cmx \ + ext/ext_filename.cmx ext/ext_file_pp.cmx ext/ext_array.cmx \ + bsb/bsb_log.cmx bsb/bsb_file_groups.cmx bsb/bsb_exception.cmx \ + bsb/bsb_dir_index.cmx bsb/bsb_db.cmx bsb/bsb_config.cmx \ + bsb/bsb_build_util.cmx bsb/bsb_build_schemas.cmx \ + bsb/bsb_parse_sources.cmi +bsb/bsb_parse_sources.cmi : ext/ext_json_types.cmx bsb/bsb_file_groups.cmx +bsb/bsb_pkg.cmx : ext/string_hashtbl.cmx ext/literals.cmx bsb/bsb_log.cmx \ + bsb/bsb_exception.cmx bsb/bsb_pkg.cmi +bsb/bsb_pkg.cmi : +bsb/bsb_query.cmx : ext/string_map.cmx ext/ext_json_noloc.cmx \ + ext/ext_array.cmx bsb/bsb_ninja_regen.cmx bsb/bsb_file_groups.cmx \ + bsb/bsb_config_types.cmx bsb/bsb_query.cmi +bsb/bsb_query.cmi : +bsb/bsb_regex.cmx : bsb/bsb_regex.cmi +bsb/bsb_regex.cmi : +bsb/bsb_rule.cmx : ext/string_set.cmx ext/string_map.cmx ext/ext_sys.cmx \ + bsb/bsb_rule.cmi +bsb/bsb_rule.cmi : ext/string_map.cmi +bsb/bsb_templates.cmx : bsb/oCamlRes.cmx bsb/bsb_templates.cmi +bsb/bsb_templates.cmi : bsb/oCamlRes.cmx +bsb/bsb_theme_init.cmx : ext/string_map.cmx ext/string_hashtbl.cmx \ + bsb/oCamlRes.cmx ext/literals.cmx ext/ext_sys.cmx ext/ext_namespace.cmx \ + ext/ext_json_parse.cmx ext/ext_io.cmx bsb/bsb_templates.cmx \ + bsb/bsb_regex.cmx bsb/bsb_build_util.cmx bsb/bsb_build_schemas.cmx \ + common/bs_version.cmx bsb/bsb_theme_init.cmi +bsb/bsb_theme_init.cmi : +bsb/bsb_unix.cmx : ext/ext_sys.cmx ext/ext_string.cmx bsb/bsb_log.cmx \ + bsb/bsb_unix.cmi +bsb/bsb_unix.cmi : +bsb/bsb_warning.cmx : ext/string_map.cmx ext/ext_string.cmx \ + ext/ext_json_types.cmx bsb/bsb_exception.cmx bsb/bsb_build_schemas.cmx \ + bsb/bsb_warning.cmi +bsb/bsb_warning.cmi : ext/string_map.cmi ext/ext_json_types.cmx +bsb/bsb_watcher_gen.cmx : ext/ext_path.cmx ext/ext_list.cmx \ + ext/ext_json_noloc.cmx ext/ext_array.cmx bsb/bsb_file_groups.cmx \ + bsb/bsb_config.cmx bsb/bsb_watcher_gen.cmi +bsb/bsb_watcher_gen.cmi : bsb/bsb_file_groups.cmx +bsb/bsb_world.cmx : ext/string_hash_set.cmx ext/literals.cmx \ + ext/ext_path.cmx ext/ext_namespace.cmx bsb/bsb_unix.cmx \ + bsb/bsb_ninja_regen.cmx bsb/bsb_log.cmx bsb/bsb_file.cmx \ + bsb/bsb_config_types.cmx bsb/bsb_config_parse.cmx bsb/bsb_config.cmx \ + bsb/bsb_build_util.cmx bsb/bsb_world.cmi +bsb/bsb_world.cmi : bsb/bsb_config_types.cmx +bsb/oCamlRes.cmx : +common/bs_loc.cmx : common/bs_loc.cmi +common/bs_loc.cmi : +common/bs_version.cmx : common/bs_version.cmi +common/bs_version.cmi : +common/bs_warnings.cmx : common/js_config.cmx common/bs_warnings.cmi +common/bs_warnings.cmi : +common/ext_log.cmx : common/js_config.cmx common/ext_log.cmi +common/ext_log.cmi : +common/js_config.cmx : ext/ext_string.cmx common/js_config.cmi +common/js_config.cmi : +common/lam_methname.cmx : ext/string_hash_set.cmx ext/ext_string.cmx \ + common/lam_methname.cmi +common/lam_methname.cmi : +common/ml_binary.cmx : common/ml_binary.cmi +common/ml_binary.cmi : +core/astdump_main.cmx : common/ml_binary.cmx ext/ext_path.cmx \ + bsb/bsb_helper_depfile_gen.cmx +core/bs_conditional_initial.cmx : common/js_config.cmx common/bs_version.cmx \ + core/bs_conditional_initial.cmi +core/bs_conditional_initial.cmi : +core/bspack_main.cmx : ext/string_hashtbl.cmx ext/ext_string.cmx \ + ext/ext_pervasives.cmx ext/ext_path.cmx ext/ext_list.cmx ext/ext_io.cmx \ + depends/ast_extract.cmx core/bspack_main.cmi +core/bspack_main.cmi : +core/bspp_main.cmx : core/bspp_main.cmi +core/bspp_main.cmi : +core/bsppx_main.cmx : syntax/ppx_entry.cmx +core/cmjdump_main.cmx : ext/string_map.cmx core/lam_arity.cmx \ + core/js_packages_info.cmx core/js_cmj_format.cmx +core/config_util.cmx : ext/ext_string.cmx core/config_util.cmi +core/config_util.cmi : +core/j.cmx : core/js_op.cmx core/js_fun_env.cmx core/js_closure.cmx \ + core/js_call_info.cmx ext/ident_set.cmx +core/js_analyzer.cmx : core/js_fun_env.cmx core/js_fold.cmx core/j.cmx \ + ext/ident_set.cmx core/js_analyzer.cmi +core/js_analyzer.cmi : core/j.cmx ext/ident_set.cmi +core/js_arr.cmx : core/js_exp_make.cmx core/js_arr.cmi +core/js_arr.cmi : core/j.cmx +core/js_ast_util.cmx : core/js_stmt_make.cmx core/js_exp_make.cmx \ + core/js_analyzer.cmx core/j.cmx ext/ext_ident.cmx core/js_ast_util.cmi +core/js_ast_util.cmi : core/j.cmx +core/js_call_info.cmx : core/js_call_info.cmi +core/js_call_info.cmi : +core/js_closure.cmx : ext/ident_set.cmx core/js_closure.cmi +core/js_closure.cmi : ext/ident_set.cmi +core/js_cmi_datasets.cmx : ext/string_map.cmx core/js_cmi_datasets.cmi +core/js_cmi_datasets.cmi : ext/string_map.cmi +core/js_cmj_datasets.cmx : ext/string_map.cmx core/js_cmj_format.cmx \ + core/js_cmj_datasets.cmi +core/js_cmj_datasets.cmi : ext/string_map.cmi core/js_cmj_format.cmi +core/js_cmj_format.cmx : ext/string_map.cmx core/lam_arity.cmx core/lam.cmx \ + core/js_packages_info.cmx ext/ext_string.cmx ext/ext_pervasives.cmx \ + ext/ext_namespace.cmx core/js_cmj_format.cmi +core/js_cmj_format.cmi : ext/string_map.cmi core/lam_arity.cmi core/lam.cmi \ + core/js_packages_info.cmi ext/ext_namespace.cmi +core/js_cmj_load.cmx : core/js_cmj_format.cmx core/config_util.cmx \ + depends/bs_exception.cmx core/js_cmj_load.cmi +core/js_cmj_load.cmi : core/js_cmj_format.cmi +core/js_dump.cmx : core/js_stmt_make.cmx core/js_runtime_modules.cmx \ + core/js_op_util.cmx core/js_op.cmx core/js_number.cmx core/js_fun_env.cmx \ + core/js_fold_basic.cmx core/js_exp_make.cmx core/js_dump_string.cmx \ + core/js_dump_property.cmx core/js_dump_lit.cmx common/js_config.cmx \ + core/js_closure.cmx core/j.cmx ext/ident_set.cmx ext/ext_pp_scope.cmx \ + ext/ext_pp.cmx ext/ext_list.cmx ext/ext_ident.cmx ext/ext_array.cmx \ + core/js_dump.cmi +core/js_dump.cmi : core/j.cmx ext/ext_pp_scope.cmi ext/ext_pp.cmi +core/js_dump_import_export.cmx : core/js_dump_string.cmx \ + core/js_dump_lit.cmx ext/ext_string.cmx ext/ext_pp_scope.cmx \ + ext/ext_pp.cmx ext/ext_list.cmx ext/ext_ident.cmx \ + core/js_dump_import_export.cmi +core/js_dump_import_export.cmi : ext/ext_pp_scope.cmi ext/ext_pp.cmi +core/js_dump_lit.cmx : ext/literals.cmx ext/ext_string.cmx +core/js_dump_program.cmx : core/lam_module_ident.cmx \ + core/js_packages_info.cmx core/js_name_of_module_id.cmx \ + core/js_dump_string.cmx core/js_dump_lit.cmx \ + core/js_dump_import_export.cmx core/js_dump.cmx common/js_config.cmx \ + core/j.cmx ext/ext_pp_scope.cmx ext/ext_pp.cmx ext/ext_list.cmx \ + common/bs_version.cmx core/js_dump_program.cmi +core/js_dump_program.cmi : core/js_packages_info.cmi core/j.cmx \ + ext/ext_pp.cmi +core/js_dump_property.cmx : core/js_dump_string.cmx core/js_dump_lit.cmx \ + ext/ext_string.cmx ext/ext_pp.cmx core/js_dump_property.cmi +core/js_dump_property.cmi : ext/ext_pp.cmi +core/js_dump_string.cmx : ext/ext_pp.cmx core/js_dump_string.cmi +core/js_dump_string.cmi : ext/ext_pp.cmi +core/js_exp_make.cmx : ext/literals.cmx core/lam_compile_util.cmx \ + core/js_runtime_modules.cmx core/js_op_util.cmx core/js_fun_env.cmx \ + core/js_call_info.cmx core/js_analyzer.cmx core/j.cmx ext/ext_string.cmx \ + ext/ext_pervasives.cmx ext/ext_list.cmx ext/ext_ident.cmx \ + core/js_exp_make.cmi +core/js_exp_make.cmi : core/js_op.cmx core/js_call_info.cmi core/j.cmx +core/js_fold.cmx : core/j.cmx +core/js_fold_basic.cmx : core/lam_module_ident.cmx \ + core/js_runtime_modules.cmx core/js_fold.cmx common/js_config.cmx \ + core/j.cmx ext/ident_set.cmx core/js_fold_basic.cmi +core/js_fold_basic.cmi : core/lam_module_ident.cmi core/j.cmx \ + ext/ident_set.cmi +core/js_fun_env.cmx : ext/ident_set.cmx ext/ext_list.cmx core/js_fun_env.cmi +core/js_fun_env.cmi : ext/ident_set.cmi +core/js_implementation.cmx : core/ocaml_parse.cmx ext/literals.cmx \ + core/lam_compile_main.cmx core/lam_compile_env.cmx common/js_config.cmx \ + ext/ext_string.cmx ext/ext_pervasives.cmx ext/ext_namespace.cmx \ + common/ext_log.cmx ext/ext_io.cmx depends/binary_ast.cmx \ + core/js_implementation.cmi +core/js_implementation.cmi : +core/js_long.cmx : core/lam_tag_info.cmx core/js_runtime_modules.cmx \ + core/js_exp_make.cmx core/js_analyzer.cmx core/j.cmx core/js_long.cmi +core/js_long.cmi : core/j.cmx +core/js_main.cmx : super_errors/super_main.cmx \ + outcome_printer/reason_outcome_printer_main.cmx \ + outcome_printer/outcome_printer_ns.cmx core/ocaml_parse.cmx \ + core/ocaml_options.cmx core/ocaml_batch_compile.cmx \ + core/js_packages_state.cmx core/js_implementation.cmx \ + common/js_config.cmx ext/ext_string.cmx core/bs_conditional_initial.cmx \ + core/js_main.cmi +core/js_main.cmi : +core/js_map.cmx : core/j.cmx +core/js_name_of_module_id.cmx : core/lam_compile_env.cmx \ + core/js_packages_state.cmx core/js_packages_info.cmx \ + core/js_name_of_module_id.cmi +core/js_name_of_module_id.cmi : core/lam_module_ident.cmi \ + core/js_packages_info.cmi +core/js_number.cmx : core/js_number.cmi +core/js_number.cmi : +core/js_of_lam_array.cmx : core/js_exp_make.cmx core/js_of_lam_array.cmi +core/js_of_lam_array.cmi : core/j.cmx +core/js_of_lam_block.cmx : core/lam.cmx core/js_of_lam_array.cmx \ + core/js_exp_make.cmx core/js_of_lam_block.cmi +core/js_of_lam_block.cmi : core/lam.cmi core/js_op.cmx core/j.cmx +core/js_of_lam_exception.cmx : ext/literals.cmx core/js_runtime_modules.cmx \ + core/js_exp_make.cmx core/j.cmx core/js_of_lam_exception.cmi +core/js_of_lam_exception.cmi : core/j.cmx +core/js_of_lam_float_record.cmx : core/js_exp_make.cmx \ + core/js_of_lam_float_record.cmi +core/js_of_lam_float_record.cmi : core/j.cmx +core/js_of_lam_module.cmx : core/js_exp_make.cmx core/j.cmx \ + core/js_of_lam_module.cmi +core/js_of_lam_module.cmi : core/j.cmx +core/js_of_lam_option.cmx : core/js_runtime_modules.cmx \ + core/js_of_lam_polyvar.cmx core/js_exp_make.cmx core/js_analyzer.cmx \ + core/j.cmx core/js_of_lam_option.cmi +core/js_of_lam_option.cmi : core/j.cmx +core/js_of_lam_polyvar.cmx : core/js_exp_make.cmx core/j.cmx \ + core/js_of_lam_polyvar.cmi +core/js_of_lam_polyvar.cmi : core/j.cmx +core/js_of_lam_record.cmx : core/js_exp_make.cmx core/js_of_lam_record.cmi +core/js_of_lam_record.cmi : core/j.cmx +core/js_of_lam_string.cmx : core/js_runtime_modules.cmx core/js_exp_make.cmx \ + core/j.cmx ext/ext_string.cmx core/js_of_lam_string.cmi +core/js_of_lam_string.cmi : core/j.cmx +core/js_of_lam_tuple.cmx : core/js_exp_make.cmx core/j.cmx \ + core/js_of_lam_tuple.cmi +core/js_of_lam_tuple.cmi : core/j.cmx +core/js_of_lam_variant.cmx : core/js_stmt_make.cmx \ + core/js_of_lam_polyvar.cmx core/js_exp_make.cmx core/j.cmx \ + ext/ext_list.cmx core/js_of_lam_variant.cmi +core/js_of_lam_variant.cmi : core/j.cmx +core/js_op.cmx : core/lam_tag_info.cmx +core/js_op_util.cmx : core/js_op.cmx core/j.cmx core/js_op_util.cmi +core/js_op_util.cmi : core/js_op.cmx core/j.cmx +core/js_output.cmx : core/lam_compile_context.cmx core/lam_analysis.cmx \ + core/lam.cmx core/js_stmt_make.cmx core/js_exp_make.cmx core/js_dump.cmx \ + core/js_analyzer.cmx core/j.cmx ext/ext_list.cmx core/js_output.cmi +core/js_output.cmi : core/lam_compile_context.cmi core/lam.cmi core/j.cmx +core/js_packages_info.cmx : core/lam_module_ident.cmx ext/ext_sys.cmx \ + ext/ext_string.cmx ext/ext_pervasives.cmx ext/ext_path.cmx \ + ext/ext_namespace.cmx ext/ext_filename.cmx core/config_util.cmx \ + depends/bs_exception.cmx core/js_packages_info.cmi +core/js_packages_info.cmi : core/lam_module_ident.cmi ext/ext_namespace.cmi +core/js_packages_state.cmx : core/js_packages_info.cmx \ + ext/ext_pervasives.cmx ext/ext_namespace.cmx core/js_packages_state.cmi +core/js_packages_state.cmi : core/js_packages_info.cmi +core/js_pass_debug.cmx : core/js_dump_program.cmx common/js_config.cmx \ + core/j.cmx ext/ext_pervasives.cmx ext/ext_path.cmx common/ext_log.cmx \ + core/js_pass_debug.cmi +core/js_pass_debug.cmi : core/j.cmx +core/js_pass_flatten.cmx : core/js_stmt_make.cmx core/js_map.cmx \ + core/js_exp_make.cmx core/js_analyzer.cmx core/j.cmx ext/ext_list.cmx \ + core/js_pass_flatten.cmi +core/js_pass_flatten.cmi : core/j.cmx +core/js_pass_flatten_and_mark_dead.cmx : core/js_stmt_make.cmx \ + core/js_op_util.cmx core/js_map.cmx core/js_fold.cmx core/js_exp_make.cmx \ + common/js_config.cmx core/js_analyzer.cmx core/j.cmx ext/ident_set.cmx \ + ext/ident_hashtbl.cmx common/ext_log.cmx ext/ext_list.cmx \ + ext/ext_ident.cmx core/js_pass_flatten_and_mark_dead.cmi +core/js_pass_flatten_and_mark_dead.cmi : core/j.cmx +core/js_pass_scope.cmx : core/js_fun_env.cmx core/js_fold.cmx \ + core/js_closure.cmx ext/ident_set.cmx common/ext_log.cmx ext/ext_list.cmx \ + core/js_pass_scope.cmi +core/js_pass_scope.cmi : core/j.cmx ext/ident_set.cmi +core/js_pass_tailcall_inline.cmx : core/js_stmt_make.cmx core/js_op_util.cmx \ + core/js_map.cmx core/js_fold.cmx core/js_exp_make.cmx \ + core/js_analyzer.cmx core/j.cmx ext/ident_set.cmx ext/ident_hashtbl.cmx \ + ext/ext_list.cmx core/js_pass_tailcall_inline.cmi +core/js_pass_tailcall_inline.cmi : core/j.cmx +core/js_runtime_modules.cmx : +core/js_shake.cmx : core/js_analyzer.cmx core/j.cmx ext/ident_set.cmx \ + ext/ext_string.cmx common/ext_log.cmx ext/ext_list.cmx core/js_shake.cmi +core/js_shake.cmi : core/j.cmx +core/js_stmt_make.cmx : core/lam_print.cmx core/lam.cmx core/js_exp_make.cmx \ + core/js_closure.cmx core/js_analyzer.cmx core/j.cmx ext/ext_list.cmx \ + core/js_stmt_make.cmi +core/js_stmt_make.cmi : core/lam.cmi core/js_closure.cmi core/j.cmx +core/jsoo_main.cmx : super_errors/super_main.cmx ext/string_map.cmx \ + syntax/ppx_entry.cmx outcome_printer/outcome_printer_ns.cmx \ + core/lam_compile_main.cmx core/lam_compile_env.cmx \ + core/js_dump_program.cmx core/js_cmj_format.cmx core/js_cmj_datasets.cmx \ + ext/ext_pp.cmx bsb/bsb_warning.cmx common/bs_version.cmx \ + core/bs_conditional_initial.cmx core/jsoo_main.cmi +core/jsoo_main.cmi : +core/lam.cmx : ext/ordered_hash_map_local_ident.cmx ext/literals.cmx \ + core/lam_tag_info.cmx core/lam_module_ident.cmx ext/int_vec_vec.cmx \ + ext/int_vec_util.cmx ext/int_vec.cmx ext/int_hashtbl.cmx \ + ext/ident_set.cmx ext/ident_hashtbl.cmx ext/ident_hash_set.cmx \ + ext/hash_set_ident_mask.cmx syntax/external_ffi_types.cmx \ + syntax/external_arg_spec.cmx ext/ext_string.cmx ext/ext_scc.cmx \ + common/ext_log.cmx ext/ext_list.cmx syntax/ast_exp_extension.cmx \ + core/lam.cmi +core/lam.cmi : core/lam_tag_info.cmx core/lam_module_ident.cmi \ + ext/ident_set.cmi syntax/external_ffi_types.cmi \ + syntax/external_arg_spec.cmi +core/lam_analysis.cmx : core/lam.cmx ext/ext_list.cmx core/lam_analysis.cmi +core/lam_analysis.cmi : core/lam.cmi +core/lam_arity.cmx : core/lam_arity.cmi +core/lam_arity.cmi : +core/lam_arity_analysis.cmx : core/lam_stats.cmx core/lam_compile_env.cmx \ + core/lam_arity.cmx core/lam.cmx ext/ident_hashtbl.cmx ext/ext_list.cmx \ + core/lam_arity_analysis.cmi +core/lam_arity_analysis.cmi : core/lam_stats.cmi core/lam_arity.cmi \ + core/lam.cmi +core/lam_beta_reduce.cmx : core/lam_util.cmx core/lam_stats.cmx \ + core/lam_compile_global.cmx core/lam_closure.cmx \ + core/lam_bounded_vars.cmx core/lam_beta_reduce_util.cmx \ + core/lam_analysis.cmx core/lam.cmx ext/ident_map.cmx \ + ext/ident_hashtbl.cmx ext/ext_list.cmx core/lam_beta_reduce.cmi +core/lam_beta_reduce.cmi : core/lam_stats.cmi core/lam_closure.cmi \ + core/lam.cmi ext/ident_map.cmi +core/lam_beta_reduce_util.cmx : core/lam.cmx ext/ident_hashtbl.cmx \ + core/lam_beta_reduce_util.cmi +core/lam_beta_reduce_util.cmi : core/lam.cmi +core/lam_bounded_vars.cmx : core/lam.cmx ext/ident_hashtbl.cmx \ + ext/ext_list.cmx core/lam_bounded_vars.cmi +core/lam_bounded_vars.cmi : core/lam.cmi ext/ident_hashtbl.cmi +core/lam_closure.cmx : core/lam_analysis.cmx core/lam.cmx ext/ident_set.cmx \ + ext/ident_map.cmx ext/ext_list.cmx core/lam_closure.cmi +core/lam_closure.cmi : core/lam.cmi ext/ident_set.cmi ext/ident_map.cmi +core/lam_coercion.cmx : ext/string_hash_set.cmx core/lam_util.cmx \ + core/lam_stats.cmx core/lam_group.cmx core/lam_dce.cmx \ + core/lam_arity_analysis.cmx core/lam_arity.cmx core/lam.cmx \ + ext/ident_set.cmx ext/ident_map.cmx ext/ident_hashtbl.cmx \ + ext/ext_list.cmx depends/bs_exception.cmx core/lam_coercion.cmi +core/lam_coercion.cmi : core/lam_stats.cmi core/lam_group.cmi core/lam.cmi \ + ext/ident_set.cmi ext/ident_map.cmi +core/lam_compile.cmx : ext/literals.cmx core/lam_util.cmx \ + common/lam_methname.cmx core/lam_exit_code.cmx \ + core/lam_eta_conversion.cmx core/lam_compile_primitive.cmx \ + core/lam_compile_global.cmx core/lam_compile_external_obj.cmx \ + core/lam_compile_env.cmx core/lam_compile_context.cmx \ + core/lam_compile_const.cmx core/lam_closure.cmx core/lam_beta_reduce.cmx \ + core/lam_arity.cmx core/lam_analysis.cmx core/lam.cmx \ + core/js_stmt_make.cmx core/js_runtime_modules.cmx core/js_output.cmx \ + core/js_of_lam_record.cmx core/js_of_lam_array.cmx core/js_exp_make.cmx \ + core/js_call_info.cmx core/js_ast_util.cmx core/js_arr.cmx \ + core/js_analyzer.cmx core/j.cmx ext/ident_set.cmx ext/ident_map.cmx \ + ext/ext_string.cmx ext/ext_list.cmx ext/ext_ident.cmx \ + core/lam_compile.cmi +core/lam_compile.cmi : core/lam_compile_context.cmi core/lam.cmi \ + core/js_output.cmi core/j.cmx +core/lam_compile_const.cmx : core/lam_compile_util.cmx core/lam.cmx \ + core/js_of_lam_string.cmx core/js_of_lam_block.cmx \ + core/js_of_lam_array.cmx core/js_long.cmx core/js_exp_make.cmx core/j.cmx \ + syntax/external_arg_spec.cmx ext/ext_list.cmx core/lam_compile_const.cmi +core/lam_compile_const.cmi : core/lam.cmi core/j.cmx \ + syntax/external_arg_spec.cmi +core/lam_compile_context.cmx : core/lam_stats.cmx core/lam.cmx core/j.cmx \ + ext/int_map.cmx ext/ident_map.cmx ext/ext_list.cmx \ + core/lam_compile_context.cmi +core/lam_compile_context.cmi : core/lam_stats.cmi core/lam.cmi core/j.cmx \ + ext/ident_map.cmi +core/lam_compile_env.cmx : ext/string_map.cmx core/ocaml_types.cmx \ + ext/literals.cmx core/lam_module_ident.cmx core/lam.cmx \ + core/js_stmt_make.cmx core/js_exp_make.cmx common/js_config.cmx \ + core/js_cmj_load.cmx core/js_cmj_format.cmx syntax/external_ffi_types.cmx \ + ext/ext_string.cmx ext/ext_modulename.cmx core/lam_compile_env.cmi +core/lam_compile_env.cmi : core/ocaml_types.cmi core/lam_module_ident.cmi \ + core/lam.cmi core/js_packages_info.cmi core/js_cmj_format.cmi \ + syntax/external_ffi_types.cmi +core/lam_compile_external_call.cmx : core/lam_compile_env.cmx \ + core/lam_compile_context.cmx core/lam_compile_const.cmx \ + core/js_of_lam_variant.cmx core/js_of_lam_option.cmx core/js_exp_make.cmx \ + core/js_arr.cmx core/js_analyzer.cmx core/j.cmx \ + syntax/external_ffi_types.cmx syntax/external_arg_spec.cmx \ + ext/ext_list.cmx ext/ext_ident.cmx core/lam_compile_external_call.cmi +core/lam_compile_external_call.cmi : core/lam_compile_context.cmi \ + core/js_of_lam_variant.cmi core/j.cmx syntax/external_ffi_types.cmi \ + syntax/external_arg_spec.cmi +core/lam_compile_external_obj.cmx : core/lam_compile_external_call.cmx \ + core/lam_compile_const.cmx core/js_stmt_make.cmx core/js_op.cmx \ + core/js_of_lam_option.cmx core/js_exp_make.cmx core/js_ast_util.cmx \ + core/js_analyzer.cmx core/j.cmx syntax/external_arg_spec.cmx \ + ext/ext_list.cmx ext/ext_ident.cmx core/lam_compile_external_obj.cmi +core/lam_compile_external_obj.cmi : core/j.cmx syntax/external_arg_spec.cmi +core/lam_compile_global.cmx : core/ocaml_types.cmx core/lam_module_ident.cmx \ + core/lam_compile_env.cmx core/lam.cmx core/js_stmt_make.cmx \ + core/js_of_lam_module.cmx core/js_exp_make.cmx core/j.cmx \ + ext/ext_list.cmx core/lam_compile_global.cmi +core/lam_compile_global.cmi : core/lam.cmi core/j.cmx +core/lam_compile_main.cmx : ext/literals.cmx core/lam_util.cmx \ + core/lam_stats_export.cmx core/lam_stats.cmx \ + core/lam_pass_remove_alias.cmx core/lam_pass_lets_dce.cmx \ + core/lam_pass_exits.cmx core/lam_pass_deep_flatten.cmx \ + core/lam_pass_collect.cmx core/lam_pass_alpha_conversion.cmx \ + core/lam_module_ident.cmx core/lam_group.cmx core/lam_compile_env.cmx \ + core/lam_compile_context.cmx core/lam_compile.cmx core/lam_coercion.cmx \ + core/lam_analysis.cmx core/lam.cmx core/js_stmt_make.cmx \ + core/js_shake.cmx core/js_runtime_modules.cmx \ + core/js_pass_tailcall_inline.cmx core/js_pass_scope.cmx \ + core/js_pass_flatten_and_mark_dead.cmx core/js_pass_flatten.cmx \ + core/js_pass_debug.cmx core/js_packages_state.cmx \ + core/js_packages_info.cmx core/js_output.cmx core/js_fold_basic.cmx \ + core/js_exp_make.cmx core/js_dump_program.cmx common/js_config.cmx \ + core/js_cmj_format.cmx core/j.cmx ext/ident_set.cmx ext/ext_string.cmx \ ext/ext_pervasives.cmx ext/ext_path.cmx ext/ext_namespace.cmx \ - ext/ext_list.cmx bsb/bsb_rule.cmx bsb/bsb_package_specs.cmx \ - bsb/bsb_ninja_util.cmx bsb/bsb_ninja_global_vars.cmx \ - bsb/bsb_file_groups.cmx bsb/bsb_dir_index.cmx bsb/bsb_db.cmx \ - bsb/bsb_config.cmx bsb/bsb_build_schemas.cmx \ - bsb/bsb_ninja_file_groups.cmi -bsb/bsb_ninja_gen.cmx : ext/string_map.cmx ext/literals.cmx \ - ext/ext_string.cmx ext/ext_path.cmx ext/ext_list.cmx bsb/bsb_warning.cmx \ - bsb/bsb_rule.cmx bsb/bsb_ninja_util.cmx bsb/bsb_ninja_global_vars.cmx \ - bsb/bsb_ninja_file_groups.cmx bsb/bsb_namespace_map_gen.cmx \ - bsb/bsb_log.cmx bsb/bsb_file_groups.cmx bsb/bsb_exception.cmx \ - bsb/bsb_dir_index.cmx bsb/bsb_default.cmx bsb/bsb_db.cmx \ - bsb/bsb_config_types.cmx bsb/bsb_config.cmx bsb/bsb_build_util.cmx \ - bsb/bsb_build_schemas.cmx bsb/bsb_ninja_gen.cmi -bsb/bsb_ninja_global_vars.cmx : -bsb/bsb_ninja_regen.cmx : ext/literals.cmx ext/ext_path.cmx \ - bsb/bsb_ninja_gen.cmx bsb/bsb_ninja_check.cmx bsb/bsb_merlin_gen.cmx \ - bsb/bsb_log.cmx bsb/bsb_config_parse.cmx bsb/bsb_config.cmx \ - bsb/bsb_clean.cmx bsb/bsb_build_util.cmx bsb/bsb_ninja_regen.cmi -bsb/bsb_ninja_util.cmx : ext/ext_string.cmx bsb/bsb_rule.cmx \ - bsb/bsb_ninja_util.cmi -bsb/bsb_package_specs.cmx : ext/string_map.cmx ext/literals.cmx \ - ext/ext_string.cmx ext/ext_path.cmx ext/ext_namespace.cmx \ - ext/ext_json_types.cmx ext/ext_json.cmx bsb/bsb_exception.cmx \ - bsb/bsb_config.cmx bsb/bsb_build_schemas.cmx bsb/bsb_package_specs.cmi -bsb/bsb_parse_sources.cmx : ext/string_vec.cmx ext/string_set.cmx \ - ext/string_map.cmx ext/literals.cmx ext/ext_string.cmx \ - ext/ext_position.cmx ext/ext_path.cmx ext/ext_namespace.cmx \ - ext/ext_json_types.cmx ext/ext_json_parse.cmx ext/ext_json.cmx \ - ext/ext_filename.cmx ext/ext_file_pp.cmx ext/ext_array.cmx \ - bsb/bsb_log.cmx bsb/bsb_file_groups.cmx bsb/bsb_exception.cmx \ - bsb/bsb_dir_index.cmx bsb/bsb_db.cmx bsb/bsb_config.cmx \ - bsb/bsb_build_util.cmx bsb/bsb_build_schemas.cmx \ - bsb/bsb_parse_sources.cmi -bsb/bsb_pkg.cmx : ext/string_hashtbl.cmx ext/literals.cmx bsb/bsb_log.cmx \ - bsb/bsb_exception.cmx bsb/bsb_pkg.cmi -bsb/bsb_query.cmx : ext/string_map.cmx ext/ext_json_noloc.cmx \ - ext/ext_array.cmx bsb/bsb_ninja_regen.cmx bsb/bsb_file_groups.cmx \ - bsb/bsb_config_types.cmx bsb/bsb_query.cmi -bsb/bsb_regex.cmx : bsb/bsb_regex.cmi -bsb/bsb_rule.cmx : ext/string_set.cmx ext/string_map.cmx ext/ext_sys.cmx \ - bsb/bsb_rule.cmi -bsb/bsb_templates.cmx : bsb/oCamlRes.cmx bsb/bsb_templates.cmi -bsb/bsb_theme_init.cmx : ext/string_map.cmx ext/string_hashtbl.cmx \ - bsb/oCamlRes.cmx ext/literals.cmx ext/ext_sys.cmx ext/ext_namespace.cmx \ - ext/ext_json_parse.cmx ext/ext_io.cmx bsb/bsb_templates.cmx \ - bsb/bsb_regex.cmx bsb/bsb_build_util.cmx bsb/bsb_build_schemas.cmx \ - common/bs_version.cmx bsb/bsb_theme_init.cmi -bsb/bsb_unix.cmx : ext/ext_sys.cmx ext/ext_string.cmx bsb/bsb_log.cmx \ - bsb/bsb_unix.cmi -bsb/bsb_warning.cmx : ext/string_map.cmx ext/ext_string.cmx \ - ext/ext_json_types.cmx bsb/bsb_exception.cmx bsb/bsb_build_schemas.cmx \ - bsb/bsb_warning.cmi -bsb/bsb_watcher_gen.cmx : ext/ext_path.cmx ext/ext_list.cmx \ - ext/ext_json_noloc.cmx ext/ext_array.cmx bsb/bsb_file_groups.cmx \ - bsb/bsb_config.cmx bsb/bsb_watcher_gen.cmi -bsb/bsb_world.cmx : ext/string_hash_set.cmx ext/literals.cmx \ - ext/ext_path.cmx ext/ext_namespace.cmx bsb/bsb_unix.cmx \ - bsb/bsb_ninja_regen.cmx bsb/bsb_log.cmx bsb/bsb_file.cmx \ - bsb/bsb_config_types.cmx bsb/bsb_config_parse.cmx bsb/bsb_config.cmx \ - bsb/bsb_build_util.cmx bsb/bsb_world.cmi -bsb/oCamlRes.cmx : -bsb/bsb_build_util.cmi : ext/ext_json_types.cmx -bsb/bsb_clean.cmi : -bsb/bsb_config.cmi : -bsb/bsb_config_parse.cmi : bsb/bsb_package_specs.cmi \ - bsb/bsb_config_types.cmx -bsb/bsb_db.cmi : ext/string_map.cmi -bsb/bsb_default.cmi : bsb/bsb_config_types.cmx -bsb/bsb_dir_index.cmi : -bsb/bsb_exception.cmi : ext/ext_position.cmi ext/ext_json_types.cmx -bsb/bsb_file.cmi : -bsb/bsb_helper_dep_graph.cmi : ext/string_set.cmi ext/string_map.cmi \ - ext/string_hashtbl.cmi -bsb/bsb_helper_depfile_gen.cmi : bsb/bsb_dir_index.cmi -bsb/bsb_helper_extract.cmi : ext/string_set.cmi -bsb/bsb_helper_linker.cmi : -bsb/bsb_helper_main.cmi : -bsb/bsb_helper_packer.cmi : -bsb/bsb_log.cmi : -bsb/bsb_main.cmi : -bsb/bsb_merlin_gen.cmi : bsb/bsb_config_types.cmx -bsb/bsb_namespace_map_gen.cmi : bsb/bsb_file_groups.cmx -bsb/bsb_ninja_check.cmi : -bsb/bsb_ninja_file_groups.cmi : ext/string_map.cmi ext/string_hash_set.cmi \ - bsb/bsb_rule.cmi bsb/bsb_package_specs.cmi bsb/bsb_file_groups.cmx -bsb/bsb_ninja_gen.cmi : bsb/bsb_config_types.cmx -bsb/bsb_ninja_regen.cmi : bsb/bsb_package_specs.cmi bsb/bsb_config_types.cmx -bsb/bsb_ninja_util.cmi : bsb/bsb_rule.cmi -bsb/bsb_package_specs.cmi : ext/ext_json_types.cmx -bsb/bsb_parse_sources.cmi : ext/ext_json_types.cmx bsb/bsb_file_groups.cmx -bsb/bsb_pkg.cmi : -bsb/bsb_query.cmi : -bsb/bsb_regex.cmi : -bsb/bsb_rule.cmi : ext/string_map.cmi -bsb/bsb_templates.cmi : bsb/oCamlRes.cmx -bsb/bsb_theme_init.cmi : -bsb/bsb_unix.cmi : -bsb/bsb_warning.cmi : ext/string_map.cmi ext/ext_json_types.cmx -bsb/bsb_watcher_gen.cmi : bsb/bsb_file_groups.cmx -bsb/bsb_world.cmi : bsb/bsb_config_types.cmx + common/ext_log.cmx ext/ext_list.cmx ext/ext_filename.cmx ext/ext_char.cmx \ + core/lam_compile_main.cmi +core/lam_compile_main.cmi : core/j.cmx +core/lam_compile_primitive.cmx : core/lam_print.cmx \ + core/lam_dispatch_primitive.cmx core/lam_compile_external_call.cmx \ + core/lam_compile_context.cmx core/lam.cmx core/js_runtime_modules.cmx \ + core/js_op_util.cmx core/js_of_lam_string.cmx core/js_of_lam_option.cmx \ + core/js_of_lam_float_record.cmx core/js_of_lam_exception.cmx \ + core/js_of_lam_block.cmx core/js_of_lam_array.cmx core/js_long.cmx \ + core/js_exp_make.cmx common/js_config.cmx core/j.cmx \ + common/bs_warnings.cmx core/lam_compile_primitive.cmi +core/lam_compile_primitive.cmi : core/lam_compile_context.cmi core/lam.cmi \ + core/j.cmx +core/lam_compile_util.cmx : core/lam_tag_info.cmx core/lam.cmx \ + core/js_op.cmx core/lam_compile_util.cmi +core/lam_compile_util.cmi : core/lam_tag_info.cmx core/lam.cmi \ + core/js_op.cmx +core/lam_dce.cmx : core/lam_group.cmx core/lam_analysis.cmx core/lam.cmx \ + ext/ident_set.cmx ext/ident_hashtbl.cmx ext/ident_hash_set.cmx \ + ext/ext_pervasives.cmx ext/ext_list.cmx ext/ext_ident.cmx \ + core/lam_dce.cmi +core/lam_dce.cmi : core/lam_group.cmi +core/lam_dispatch_primitive.cmx : core/js_stmt_make.cmx \ + core/js_runtime_modules.cmx core/js_of_lam_tuple.cmx \ + core/js_of_lam_exception.cmx core/js_of_lam_array.cmx core/js_long.cmx \ + core/js_exp_make.cmx common/js_config.cmx core/js_analyzer.cmx core/j.cmx \ + ext/ext_list.cmx common/bs_warnings.cmx core/lam_dispatch_primitive.cmi +core/lam_dispatch_primitive.cmi : core/j.cmx +core/lam_eta_conversion.cmx : ext/literals.cmx core/lam.cmx ext/ext_list.cmx \ + ext/ext_ident.cmx core/lam_eta_conversion.cmi +core/lam_eta_conversion.cmi : core/lam.cmi +core/lam_exit_code.cmx : core/lam.cmx core/lam_exit_code.cmi +core/lam_exit_code.cmi : core/lam.cmi +core/lam_group.cmx : core/lam_print.cmx core/lam.cmx core/lam_group.cmi +core/lam_group.cmi : core/lam.cmi +core/lam_group_pass.cmx : core/lam.cmx +core/lam_id_kind.cmx : core/lam_arity.cmx core/lam.cmx core/lam_id_kind.cmi +core/lam_id_kind.cmi : core/lam_arity.cmi core/lam.cmi +core/lam_inline_util.cmx : core/lam.cmx core/lam_inline_util.cmi +core/lam_inline_util.cmi : core/lam.cmi +core/lam_inner.cmx : core/lam.cmx core/lam_inner.cmi +core/lam_inner.cmi : core/lam.cmi +core/lam_module_ident.cmx : core/js_op.cmx core/j.cmx ext/hashtbl_make.cmx \ + ext/hash_set.cmx ext/ext_ident.cmx stubs/bs_hash_stubs.cmx \ + core/lam_module_ident.cmi +core/lam_module_ident.cmi : core/js_op.cmx core/j.cmx ext/hashtbl_gen.cmx \ + ext/hash_set_gen.cmx +core/lam_pass_alpha_conversion.cmx : core/lam_stats.cmx \ + core/lam_eta_conversion.cmx core/lam_arity_analysis.cmx \ + core/lam_arity.cmx core/lam.cmx ext/ext_list.cmx \ + core/lam_pass_alpha_conversion.cmi +core/lam_pass_alpha_conversion.cmi : core/lam_stats.cmi core/lam.cmi +core/lam_pass_collect.cmx : core/lam_util.cmx core/lam_stats.cmx \ + core/lam_arity_analysis.cmx core/lam_arity.cmx core/lam.cmx \ + ext/ident_set.cmx ext/ident_hashtbl.cmx core/lam_pass_collect.cmi +core/lam_pass_collect.cmi : core/lam_stats.cmi core/lam.cmi \ + ext/ident_set.cmi +core/lam_pass_count.cmx : core/lam_beta_reduce.cmx core/lam.cmx \ + ext/ident_map.cmx ext/ident_hashtbl.cmx ext/ext_list.cmx \ + core/lam_pass_count.cmi +core/lam_pass_count.cmi : core/lam.cmi ext/ident_hashtbl.cmi +core/lam_pass_deep_flatten.cmx : core/lam_util.cmx core/lam_group.cmx \ + core/lam.cmx ext/int_map.cmx ext/ident_set.cmx ext/ext_list.cmx \ + core/lam_pass_deep_flatten.cmi +core/lam_pass_deep_flatten.cmi : core/lam.cmi +core/lam_pass_eliminate_ref.cmx : core/lam.cmx ext/ident_set.cmx \ + ext/ext_list.cmx core/lam_pass_eliminate_ref.cmi +core/lam_pass_eliminate_ref.cmi : core/lam.cmi +core/lam_pass_exits.cmx : core/lam_subst.cmx core/lam_bounded_vars.cmx \ + core/lam_analysis.cmx core/lam.cmx ext/int_hashtbl.cmx ext/ident_map.cmx \ + ext/ext_list.cmx core/lam_pass_exits.cmi +core/lam_pass_exits.cmi : core/lam.cmi +core/lam_pass_lets_dce.cmx : core/lam_util.cmx \ + core/lam_pass_eliminate_ref.cmx core/lam_pass_count.cmx \ + core/lam_beta_reduce.cmx core/lam_analysis.cmx core/lam.cmx \ + ext/ident_hashtbl.cmx common/ext_log.cmx ext/ext_list.cmx \ + core/lam_pass_lets_dce.cmi +core/lam_pass_lets_dce.cmi : core/lam.cmi +core/lam_pass_remove_alias.cmx : core/lam_util.cmx core/lam_stats.cmx \ + core/lam_inline_util.cmx core/lam_compile_env.cmx core/lam_closure.cmx \ + core/lam_beta_reduce.cmx core/lam_analysis.cmx core/lam.cmx \ + ext/ident_set.cmx ext/ident_hashtbl.cmx ext/ext_list.cmx \ + core/lam_pass_remove_alias.cmi +core/lam_pass_remove_alias.cmi : core/lam_stats.cmi core/lam.cmi +core/lam_print.cmx : core/lam.cmx ext/ext_list.cmx core/lam_print.cmi +core/lam_print.cmi : core/lam.cmi +core/lam_stats.cmx : core/lam_id_kind.cmx ext/ident_set.cmx \ + ext/ident_hashtbl.cmx core/lam_stats.cmi +core/lam_stats.cmi : core/lam_id_kind.cmi ext/ident_set.cmi \ + ext/ident_hashtbl.cmi +core/lam_stats_export.cmx : ext/string_map.cmx core/lam_stats.cmx \ + core/lam_module_ident.cmx core/lam_inline_util.cmx core/lam_id_kind.cmx \ + core/lam_compile_env.cmx core/lam_closure.cmx core/lam_arity_analysis.cmx \ + core/lam_arity.cmx core/lam_analysis.cmx core/lam.cmx \ + core/js_packages_state.cmx core/js_cmj_format.cmx ext/ident_set.cmx \ + ext/ident_map.cmx ext/ident_hashtbl.cmx ext/ext_option.cmx \ + common/ext_log.cmx ext/ext_list.cmx ext/ext_array.cmx \ + core/lam_stats_export.cmi +core/lam_stats_export.cmi : core/lam_stats.cmi core/lam_module_ident.cmi \ + core/lam.cmi core/js_cmj_format.cmi ext/ident_map.cmi +core/lam_subst.cmx : core/lam.cmx ext/ident_map.cmx ext/ext_list.cmx \ + core/lam_subst.cmi +core/lam_subst.cmi : core/lam.cmi ext/ident_map.cmi +core/lam_tag_info.cmx : +core/lam_util.cmx : core/lam_stats.cmx core/lam_print.cmx \ + core/lam_id_kind.cmx core/lam_analysis.cmx core/lam.cmx \ + common/js_config.cmx ext/ident_set.cmx ext/ident_hashtbl.cmx \ + ext/ext_path.cmx common/ext_log.cmx ext/ext_list.cmx ext/ext_array.cmx \ + core/lam_util.cmi +core/lam_util.cmi : core/lam_stats.cmi core/lam_id_kind.cmi core/lam.cmi \ + core/j.cmx +core/ocaml_batch_compile.cmx : core/ocaml_parse.cmx \ + core/js_implementation.cmx common/js_config.cmx ext/ext_ref.cmx \ + ext/ext_pervasives.cmx ext/ext_namespace.cmx ext/ext_modulename.cmx \ + ext/ext_list.cmx ext/ext_format.cmx depends/bs_exception.cmx \ + depends/ast_extract.cmx core/ocaml_batch_compile.cmi +core/ocaml_batch_compile.cmi : +core/ocaml_options.cmx : common/bs_version.cmx \ + core/bs_conditional_initial.cmx core/ocaml_options.cmi +core/ocaml_options.cmi : +core/ocaml_parse.cmx : syntax/ppx_entry.cmx common/js_config.cmx \ + ext/ext_path.cmx core/ocaml_parse.cmi +core/ocaml_parse.cmi : +core/ocaml_types.cmx : common/ext_log.cmx ext/ext_list.cmx \ + core/ocaml_types.cmi +core/ocaml_types.cmi : +depends/ast_extract.cmx : ext/string_map.cmx ext/string_hashtbl.cmx \ + common/ml_binary.cmx common/js_config.cmx ext/ext_string.cmx \ + ext/ext_path.cmx ext/ext_modulename.cmx ext/ext_list.cmx \ + ext/ext_format.cmx depends/bs_exception.cmx depends/ast_extract.cmi +depends/ast_extract.cmi : ext/string_map.cmi ext/string_hashtbl.cmi \ + common/ml_binary.cmi +depends/binary_ast.cmx : common/ml_binary.cmx depends/ast_extract.cmx \ + depends/binary_ast.cmi +depends/binary_ast.cmi : common/ml_binary.cmi +depends/bs_exception.cmx : depends/bs_exception.cmi +depends/bs_exception.cmi : +ext/ext_array.cmx : ext/ext_array.cmi +ext/ext_array.cmi : +ext/ext_bytes.cmx : ext/ext_bytes.cmi +ext/ext_bytes.cmi : +ext/ext_char.cmx : ext/ext_char.cmi +ext/ext_char.cmi : +ext/ext_cmp.cmx : ext/ext_cmp.cmi +ext/ext_cmp.cmi : +ext/ext_color.cmx : ext/ext_list.cmx ext/ext_color.cmi +ext/ext_color.cmi : +ext/ext_file_pp.cmx : ext/string_vec.cmx ext/ext_file_pp.cmi +ext/ext_file_pp.cmi : ext/string_vec.cmi +ext/ext_filename.cmx : ext/literals.cmx ext/ext_string.cmx \ + ext/ext_pervasives.cmx ext/ext_path.cmx ext/ext_filename.cmi +ext/ext_filename.cmi : +ext/ext_format.cmx : ext/ext_format.cmi +ext/ext_format.cmi : +ext/ext_ident.cmx : ext/string_hashtbl.cmx ext/string_hash_set.cmx \ + ext/literals.cmx ext/ext_string.cmx ext/ext_list.cmx ext/ext_ident.cmi +ext/ext_ident.cmi : +ext/ext_int.cmx : ext/ext_int.cmi +ext/ext_int.cmi : +ext/ext_io.cmx : ext/ext_pervasives.cmx ext/ext_io.cmi +ext/ext_io.cmi : +ext/ext_js_regex.cmx : ext/ext_utf8.cmx ext/ext_js_regex.cmi +ext/ext_js_regex.cmi : +ext/ext_json.cmx : ext/string_map.cmx ext/ext_json_types.cmx \ + ext/ext_array.cmx ext/ext_json.cmi +ext/ext_json.cmi : ext/string_map.cmi ext/ext_position.cmi \ + ext/ext_json_types.cmx +ext/ext_json_noloc.cmx : ext/string_map.cmx ext/ext_array.cmx \ + ext/ext_json_noloc.cmi +ext/ext_json_noloc.cmi : ext/string_map.cmi +ext/ext_json_parse.cmx : ext/string_map.cmx ext/ext_position.cmx \ + ext/ext_json_types.cmx ext/ext_array.cmx ext/ext_json_parse.cmi +ext/ext_json_parse.cmi : ext/ext_json_types.cmx +ext/ext_json_types.cmx : ext/string_map.cmx +ext/ext_json_write.cmx : ext/string_map.cmx ext/ext_json_types.cmx \ + ext/ext_json_write.cmi +ext/ext_json_write.cmi : +ext/ext_list.cmx : ext/ext_string.cmx ext/ext_list.cmi +ext/ext_list.cmi : +ext/ext_marshal.cmx : ext/ext_marshal.cmi +ext/ext_marshal.cmi : +ext/ext_modulename.cmx : ext/ext_string.cmx ext/ext_path.cmx \ + ext/ext_char.cmx ext/ext_modulename.cmi +ext/ext_modulename.cmi : +ext/ext_namespace.cmx : ext/ext_string.cmx ext/ext_char.cmx \ + ext/ext_namespace.cmi +ext/ext_namespace.cmi : +ext/ext_option.cmx : ext/ext_option.cmi +ext/ext_option.cmi : +ext/ext_path.cmx : ext/literals.cmx ext/ext_string.cmx \ + ext/ext_pervasives.cmx ext/ext_list.cmx ext/ext_path.cmi +ext/ext_path.cmi : +ext/ext_pervasives.cmx : ext/ext_list.cmx ext/ext_pervasives.cmi +ext/ext_pervasives.cmi : +ext/ext_position.cmx : ext/ext_position.cmi +ext/ext_position.cmi : +ext/ext_pp.cmx : ext/ext_pervasives.cmx ext/ext_pp.cmi +ext/ext_pp.cmi : +ext/ext_pp_scope.cmx : ext/string_map.cmx ext/int_map.cmx ext/ident_set.cmx \ + ext/ext_pp.cmx ext/ext_ident.cmx ext/ext_pp_scope.cmi +ext/ext_pp_scope.cmi : ext/ident_set.cmi ext/ext_pp.cmi +ext/ext_ref.cmx : ext/ext_list.cmx ext/ext_ref.cmi +ext/ext_ref.cmi : +ext/ext_scc.cmx : ext/int_vec_vec.cmx ext/int_vec.cmx ext/ext_scc.cmi +ext/ext_scc.cmi : ext/int_vec_vec.cmi ext/int_vec.cmi +ext/ext_stack.cmx : ext/ext_stack.cmi +ext/ext_stack.cmi : +ext/ext_string.cmx : ext/ext_bytes.cmx ext/ext_string.cmi +ext/ext_string.cmi : +ext/ext_sys.cmx : ext/ext_sys.cmi +ext/ext_sys.cmi : +ext/ext_topsort.cmx : ext/set_int.cmx ext/resize_array.cmx ext/int_vec.cmx \ + ext/ext_topsort.cmi +ext/ext_topsort.cmi : ext/vec_gen.cmx ext/set_int.cmi ext/int_vec.cmi +ext/ext_utf8.cmx : ext/ext_utf8.cmi +ext/ext_utf8.cmi : +ext/ext_util.cmx : ext/ext_util.cmi +ext/ext_util.cmi : +ext/hash_set.cmx : ext/hash_set_gen.cmx ext/hash_set.cmi +ext/hash_set.cmi : ext/hash_set_gen.cmx +ext/hash_set_gen.cmx : ext/ext_util.cmx +ext/hash_set_ident_mask.cmx : ext/ext_util.cmx ext/ext_ident.cmx \ + stubs/bs_hash_stubs.cmx ext/hash_set_ident_mask.cmi +ext/hash_set_ident_mask.cmi : +ext/hash_set_poly.cmx : ext/hash_set_gen.cmx ext/hash_set_poly.cmi +ext/hash_set_poly.cmi : +ext/hashtbl_gen.cmx : ext/ext_util.cmx +ext/hashtbl_make.cmx : ext/hashtbl_gen.cmx ext/hashtbl_make.cmi +ext/hashtbl_make.cmi : ext/hashtbl_gen.cmx +ext/ident_hash_set.cmx : ext/hash_set_gen.cmx ext/ext_ident.cmx \ + stubs/bs_hash_stubs.cmx ext/ident_hash_set.cmi +ext/ident_hash_set.cmi : ext/hash_set_gen.cmx +ext/ident_hashtbl.cmx : ext/hashtbl_gen.cmx ext/ext_ident.cmx \ + stubs/bs_hash_stubs.cmx ext/ident_hashtbl.cmi +ext/ident_hashtbl.cmi : ext/hashtbl_gen.cmx +ext/ident_map.cmx : ext/map_gen.cmx ext/ext_ident.cmx ext/ident_map.cmi +ext/ident_map.cmi : ext/map_gen.cmx +ext/ident_set.cmx : ext/set_gen.cmx ext/ident_set.cmi +ext/ident_set.cmi : ext/set_gen.cmx +ext/int_hash_set.cmx : ext/hash_set_gen.cmx ext/ext_int.cmx \ + stubs/bs_hash_stubs.cmx ext/int_hash_set.cmi +ext/int_hash_set.cmi : ext/hash_set_gen.cmx +ext/int_hashtbl.cmx : ext/hashtbl_gen.cmx ext/ext_int.cmx \ + stubs/bs_hash_stubs.cmx ext/int_hashtbl.cmi +ext/int_hashtbl.cmi : ext/hashtbl_gen.cmx +ext/int_map.cmx : ext/map_gen.cmx ext/ext_int.cmx ext/int_map.cmi +ext/int_map.cmi : ext/map_gen.cmx +ext/int_vec.cmx : ext/ext_array.cmx stubs/bs_hash_stubs.cmx ext/int_vec.cmi +ext/int_vec.cmi : ext/vec_gen.cmx +ext/int_vec_util.cmx : ext/int_vec.cmx ext/int_vec_util.cmi +ext/int_vec_util.cmi : ext/int_vec.cmi +ext/int_vec_vec.cmx : ext/resize_array.cmx ext/int_vec.cmx \ + ext/int_vec_vec.cmi +ext/int_vec_vec.cmi : ext/vec_gen.cmx ext/int_vec.cmi +ext/literals.cmx : ext/literals.cmi +ext/literals.cmi : +ext/map_gen.cmx : +ext/ordered_hash_map_gen.cmx : ext/ext_util.cmx +ext/ordered_hash_map_local_ident.cmx : ext/ordered_hash_map_gen.cmx \ + ext/ext_ident.cmx stubs/bs_hash_stubs.cmx \ + ext/ordered_hash_map_local_ident.cmi +ext/ordered_hash_map_local_ident.cmi : ext/ordered_hash_map_gen.cmx +ext/ordered_hash_set_gen.cmx : ext/ext_util.cmx +ext/ordered_hash_set_ident.cmx : ext/ordered_hash_set_gen.cmx \ + ext/ext_util.cmx ext/ext_ident.cmx stubs/bs_hash_stubs.cmx \ + ext/ordered_hash_set_ident.cmi +ext/ordered_hash_set_ident.cmi : ext/ordered_hash_set_gen.cmx +ext/ordered_hash_set_make.cmx : ext/ordered_hash_set_gen.cmx \ + ext/ext_util.cmx +ext/ordered_hash_set_string.cmx : ext/ordered_hash_set_gen.cmx \ + ext/ext_util.cmx ext/ext_string.cmx stubs/bs_hash_stubs.cmx \ + ext/ordered_hash_set_string.cmi +ext/ordered_hash_set_string.cmi : ext/ordered_hash_set_gen.cmx +ext/resize_array.cmx : ext/vec_gen.cmx ext/ext_array.cmx \ + ext/resize_array.cmi +ext/resize_array.cmi : ext/vec_gen.cmx +ext/set_gen.cmx : +ext/set_int.cmx : ext/set_gen.cmx ext/ext_int.cmx ext/set_int.cmi +ext/set_int.cmi : ext/set_gen.cmx +ext/string_hash_set.cmx : ext/hash_set_gen.cmx ext/ext_string.cmx \ + stubs/bs_hash_stubs.cmx ext/string_hash_set.cmi +ext/string_hash_set.cmi : ext/hash_set_gen.cmx +ext/string_hashtbl.cmx : ext/hashtbl_gen.cmx ext/ext_string.cmx \ + stubs/bs_hash_stubs.cmx ext/string_hashtbl.cmi +ext/string_hashtbl.cmi : ext/hashtbl_gen.cmx +ext/string_map.cmx : ext/map_gen.cmx ext/ext_string.cmx ext/string_map.cmi +ext/string_map.cmi : ext/map_gen.cmx +ext/string_set.cmx : ext/set_gen.cmx ext/ext_string.cmx ext/string_set.cmi +ext/string_set.cmi : +ext/string_vec.cmx : ext/resize_array.cmx ext/string_vec.cmi +ext/string_vec.cmi : ext/vec_gen.cmx +ext/union_find.cmx : ext/union_find.cmi +ext/union_find.cmi : +ext/vec_gen.cmx : jscmj_main.cmx : ext/literals.cmx core/js_cmj_format.cmx ext/ext_string.cmx \ ext/ext_pp.cmx ext/ext_pervasives.cmx ext/ext_list.cmx ext/ext_array.cmx \ jscmj_main.cmi +jscmj_main.cmi : jsgen_main.cmx : ext/ext_path.cmx ext/ext_array.cmx +ounit/oUnit.cmx : ounit/oUnitUtils.cmx ounit/oUnitTypes.cmx \ + ounit/oUnitLogger.cmx ounit/oUnitChooser.cmx ounit/oUnit.cmi +ounit/oUnit.cmi : +ounit/oUnitChooser.cmx : ounit/oUnitTypes.cmx +ounit/oUnitDiff.cmx : ounit/oUnit.cmx ounit/oUnitDiff.cmi +ounit/oUnitDiff.cmi : +ounit/oUnitLogger.cmx : ounit/oUnitUtils.cmx ounit/oUnitTypes.cmx +ounit/oUnitTypes.cmx : +ounit/oUnitUtils.cmx : ounit/oUnitTypes.cmx +ounit_tests/ounit_array_tests.cmx : ounit/oUnit.cmx ext/ext_string.cmx \ + ext/ext_array.cmx +ounit_tests/ounit_bal_tree_tests.cmx : ext/set_int.cmx ext/set_gen.cmx \ + ounit_tests/ounit_tests_util.cmx ounit/oUnit.cmx +ounit_tests/ounit_bsb_regex_tests.cmx : ounit/oUnit.cmx bsb/bsb_regex.cmx +ounit_tests/ounit_cmd_tests.cmx : ounit_tests/ounit_cmd_util.cmx \ + ounit/oUnit.cmx ext/ext_string.cmx +ounit_tests/ounit_cmd_util.cmx : ext/literals.cmx \ + ounit_tests/ounit_cmd_util.cmi +ounit_tests/ounit_cmd_util.cmi : +ounit_tests/ounit_data_random.cmx : +ounit_tests/ounit_ffi_error_debug_test.cmx : ounit_tests/ounit_cmd_util.cmx \ + ounit/oUnit.cmx ext/ext_string.cmx +ounit_tests/ounit_hash_set_tests.cmx : ext/string_hash_set.cmx \ + ext/ordered_hash_set_string.cmx ounit/oUnit.cmx ext/hash_set_poly.cmx \ + ext/hash_set.cmx +ounit_tests/ounit_hash_stubs_test.cmx : ounit_tests/ounit_tests_util.cmx \ + ounit/oUnit.cmx ext/int_hash_set.cmx ext/hash_set_poly.cmx \ + stubs/bs_hash_stubs.cmx +ounit_tests/ounit_hashtbl_tests.cmx : ext/string_hashtbl.cmx ounit/oUnit.cmx +ounit_tests/ounit_ident_mask_tests.cmx : ounit/oUnit.cmx \ + ext/hash_set_ident_mask.cmx +ounit_tests/ounit_int_vec_tests.cmx : ounit/oUnit.cmx ext/int_vec_util.cmx \ + ext/int_vec.cmx +ounit_tests/ounit_js_regex_checker_tests.cmx : ounit/oUnit.cmx \ + ext/ext_js_regex.cmx +ounit_tests/ounit_json_tests.cmx : ext/string_map.cmx ounit/oUnit.cmx \ + ext/ext_pervasives.cmx ext/ext_json_types.cmx ext/ext_json_parse.cmx \ + ext/ext_json_noloc.cmx ext/ext_json.cmx +ounit_tests/ounit_list_test.cmx : ounit/oUnit.cmx ext/ext_list.cmx +ounit_tests/ounit_map_tests.cmx : ounit/oUnit.cmx ext/int_map.cmx +ounit_tests/ounit_ordered_hash_set_tests.cmx : \ + ext/ordered_hash_set_string.cmx ounit/oUnit.cmx ext/ext_util.cmx \ + ext/ext_string.cmx +ounit_tests/ounit_path_tests.cmx : ounit/oUnit.cmx ext/ext_string.cmx \ + ext/ext_path.cmx +ounit_tests/ounit_scc_tests.cmx : ext/string_hashtbl.cmx ounit/oUnit.cmx \ + ext/int_vec_vec.cmx ext/int_vec.cmx ext/ext_string.cmx ext/ext_scc.cmx +ounit_tests/ounit_sexp_tests.cmx : +ounit_tests/ounit_string_tests.cmx : ounit_tests/ounit_data_random.cmx \ + ounit/oUnit.cmx ext/ext_string.cmx ext/ext_path.cmx ext/ext_namespace.cmx \ + ext/ext_modulename.cmx +ounit_tests/ounit_tests_main.cmx : ext/resize_array.cmx \ + ounit_tests/ounit_vec_test.cmx ounit_tests/ounit_utf8_test.cmx \ + ounit_tests/ounit_union_find_tests.cmx \ + ounit_tests/ounit_unicode_tests.cmx ounit_tests/ounit_topsort_tests.cmx \ + ounit_tests/ounit_string_tests.cmx ounit_tests/ounit_scc_tests.cmx \ + ounit_tests/ounit_path_tests.cmx \ + ounit_tests/ounit_ordered_hash_set_tests.cmx \ + ounit_tests/ounit_map_tests.cmx ounit_tests/ounit_list_test.cmx \ + ounit_tests/ounit_json_tests.cmx \ + ounit_tests/ounit_js_regex_checker_tests.cmx \ + ounit_tests/ounit_int_vec_tests.cmx \ + ounit_tests/ounit_ident_mask_tests.cmx \ + ounit_tests/ounit_hashtbl_tests.cmx ounit_tests/ounit_hash_stubs_test.cmx \ + ounit_tests/ounit_hash_set_tests.cmx \ + ounit_tests/ounit_ffi_error_debug_test.cmx \ + ounit_tests/ounit_cmd_tests.cmx ounit_tests/ounit_bsb_regex_tests.cmx \ + ounit_tests/ounit_bal_tree_tests.cmx ounit_tests/ounit_array_tests.cmx \ + ounit/oUnit.cmx ounit_tests/ounit_tests_main.cmi +ounit_tests/ounit_tests_main.cmi : +ounit_tests/ounit_tests_util.cmx : +ounit_tests/ounit_topsort_tests.cmx : ext/set_int.cmx ounit/oUnit.cmx \ + ext/int_vec.cmx ext/ext_topsort.cmx +ounit_tests/ounit_unicode_tests.cmx : ounit/oUnit.cmx ext/ext_string.cmx \ + ext/ext_list.cmx syntax/ast_utf8_string_interp.cmx \ + syntax/ast_utf8_string.cmx +ounit_tests/ounit_union_find_tests.cmx : ext/union_find.cmx ounit/oUnit.cmx \ + ext/int_vec_vec.cmx ext/int_vec.cmx ext/ext_string.cmx +ounit_tests/ounit_utf8_test.cmx : ounit/oUnit.cmx ext/ext_utf8.cmx +ounit_tests/ounit_vec_test.cmx : ext/set_int.cmx ounit/oUnit.cmx \ + ext/int_vec.cmx ext/ext_list.cmx ext/ext_json.cmx +outcome_printer/outcome_printer_ns.cmx : ext/ext_namespace.cmx \ + outcome_printer/outcome_printer_ns.cmi +outcome_printer/outcome_printer_ns.cmi : +outcome_printer/reason_outcome_printer_main.cmx : \ + outcome_printer/tweaked_reason_oprint.cmx +outcome_printer/reason_syntax_util.cmx : \ + outcome_printer/reason_syntax_util.cmi +outcome_printer/reason_syntax_util.cmi : +outcome_printer/tweaked_reason_oprint.cmx : \ + outcome_printer/reason_syntax_util.cmx rollup_test.cmx : -jscmj_main.cmi : +stubs/bs_hash_stubs.cmx : +super_errors/super_env.cmx : super_errors/super_location.cmx +super_errors/super_location.cmx : super_errors/super_warnings.cmx \ + super_errors/super_misc.cmx +super_errors/super_main.cmx : super_errors/super_typetexp.cmx \ + super_errors/super_typemod.cmx super_errors/super_typecore.cmx \ + super_errors/super_pparse.cmx super_errors/super_location.cmx \ + super_errors/super_env.cmx +super_errors/super_misc.cmx : super_errors/super_misc.cmi +super_errors/super_misc.cmi : +super_errors/super_pparse.cmx : super_errors/super_location.cmx \ + ext/ext_string.cmx +super_errors/super_reason_react.cmx : super_errors/super_reason_react.cmi +super_errors/super_reason_react.cmi : +super_errors/super_typecore.cmx : super_errors/super_reason_react.cmx \ + super_errors/super_location.cmx +super_errors/super_typemod.cmx : super_errors/super_reason_react.cmx \ + super_errors/super_location.cmx +super_errors/super_typetexp.cmx : super_errors/super_location.cmx +super_errors/super_warnings.cmx : +syntax/ast_attributes.cmx : ext/ext_string.cmx syntax/bs_syntaxerr.cmx \ + syntax/bs_ast_invariant.cmx syntax/ast_payload.cmx \ + syntax/ast_attributes.cmi +syntax/ast_attributes.cmi : syntax/ast_payload.cmi +syntax/ast_comb.cmx : ext/ext_list.cmx syntax/ast_literal.cmx \ + syntax/ast_comb.cmi +syntax/ast_comb.cmi : +syntax/ast_compatible.cmx : ext/ext_list.cmx syntax/ast_compatible.cmi +syntax/ast_compatible.cmi : +syntax/ast_core_type.cmx : ext/ext_list.cmx syntax/bs_syntaxerr.cmx \ + syntax/ast_comb.cmx syntax/ast_core_type.cmi +syntax/ast_core_type.cmi : +syntax/ast_core_type_class_type.cmx : ext/literals.cmx ext/ext_ref.cmx \ + ext/ext_list.cmx syntax/bs_ast_mapper.cmx syntax/ast_util.cmx \ + syntax/ast_literal.cmx syntax/ast_comb.cmx syntax/ast_attributes.cmx \ + syntax/ast_core_type_class_type.cmi +syntax/ast_core_type_class_type.cmi : syntax/bs_ast_mapper.cmi +syntax/ast_derive.cmx : ext/string_map.cmx ext/literals.cmx \ + ext/ext_string.cmx ext/ext_list.cmx syntax/bs_syntaxerr.cmx \ + syntax/ast_structure.cmx syntax/ast_signature.cmx syntax/ast_payload.cmx \ + syntax/ast_derive.cmi +syntax/ast_derive.cmi : syntax/ast_structure.cmi syntax/ast_signature.cmi \ + syntax/ast_payload.cmi +syntax/ast_derive_abstract.cmx : syntax/external_process.cmx \ + syntax/external_ffi_types.cmx syntax/external_arg_spec.cmx \ + ext/ext_list.cmx syntax/ast_literal.cmx syntax/ast_derive_util.cmx \ + syntax/ast_core_type.cmx syntax/ast_attributes.cmx \ + syntax/ast_derive_abstract.cmi +syntax/ast_derive_abstract.cmi : +syntax/ast_derive_constructor.cmx : +syntax/ast_derive_dyn.cmx : ext/ext_list.cmx syntax/bs_syntaxerr.cmx \ + syntax/ast_structure.cmx syntax/ast_derive_util.cmx syntax/ast_derive.cmx \ + syntax/ast_attributes.cmx syntax/ast_derive_dyn.cmi +syntax/ast_derive_dyn.cmi : +syntax/ast_derive_js_mapper.cmx : ext/ext_list.cmx syntax/ast_polyvar.cmx \ + syntax/ast_literal.cmx syntax/ast_derive_util.cmx syntax/ast_derive.cmx \ + syntax/ast_core_type.cmx syntax/ast_comb.cmx \ + syntax/ast_derive_js_mapper.cmi +syntax/ast_derive_js_mapper.cmi : +syntax/ast_derive_projector.cmx : ext/ext_string.cmx ext/ext_list.cmx \ + syntax/ast_derive_util.cmx syntax/ast_derive.cmx syntax/ast_comb.cmx \ + syntax/ast_derive_projector.cmi +syntax/ast_derive_projector.cmi : +syntax/ast_derive_util.cmx : ext/ext_list.cmx syntax/ast_compatible.cmx \ + syntax/ast_derive_util.cmi +syntax/ast_derive_util.cmi : +syntax/ast_exp.cmx : syntax/ast_exp.cmi +syntax/ast_exp.cmi : +syntax/ast_exp_apply.cmx : ext/literals.cmx ext/ext_list.cmx \ + syntax/bs_ast_mapper.cmx syntax/bs_ast_invariant.cmx syntax/ast_util.cmx \ + syntax/ast_tuple_pattern_flatten.cmx syntax/ast_literal.cmx \ + syntax/ast_attributes.cmx syntax/ast_exp_apply.cmi +syntax/ast_exp_apply.cmi : syntax/bs_ast_mapper.cmi +syntax/ast_exp_extension.cmx : ext/literals.cmx ext/ext_string.cmx \ + ext/ext_ref.cmx ext/ext_pervasives.cmx common/bs_version.cmx \ + syntax/bs_ast_mapper.cmx syntax/ast_util.cmx syntax/ast_payload.cmx \ + syntax/ast_literal.cmx syntax/ast_derive.cmx syntax/ast_core_type.cmx \ + syntax/ast_comb.cmx syntax/ast_exp_extension.cmi +syntax/ast_exp_extension.cmi : syntax/bs_ast_mapper.cmi +syntax/ast_external_mk.cmx : syntax/ast_external_mk.cmi +syntax/ast_external_mk.cmi : +syntax/ast_lift.cmx : syntax/ast_lift.cmi +syntax/ast_lift.cmi : +syntax/ast_literal.cmx : syntax/ast_literal.cmi +syntax/ast_literal.cmi : +syntax/ast_pat.cmx : syntax/ast_pat.cmi +syntax/ast_pat.cmi : +syntax/ast_payload.cmx : ext/string_map.cmx ext/ext_list.cmx \ + ext/ext_js_regex.cmx syntax/ast_payload.cmi +syntax/ast_payload.cmi : ext/string_map.cmi +syntax/ast_polyvar.cmx : syntax/external_arg_spec.cmx ext/ext_pervasives.cmx \ + ext/ext_list.cmx syntax/bs_syntaxerr.cmx syntax/ast_attributes.cmx \ + syntax/ast_polyvar.cmi +syntax/ast_polyvar.cmi : syntax/external_arg_spec.cmi +syntax/ast_primitive.cmx : syntax/external_process.cmx \ + syntax/bs_ast_mapper.cmx syntax/ast_primitive.cmi +syntax/ast_primitive.cmi : syntax/bs_ast_mapper.cmi +syntax/ast_signature.cmx : syntax/ast_signature.cmi +syntax/ast_signature.cmi : +syntax/ast_structure.cmx : syntax/ast_signature.cmx syntax/ast_literal.cmx \ + syntax/ast_structure.cmi +syntax/ast_structure.cmi : syntax/ast_signature.cmi +syntax/ast_tdcls.cmx : ext/ext_list.cmx syntax/bs_ast_mapper.cmx \ + syntax/ast_structure.cmx syntax/ast_signature.cmx syntax/ast_payload.cmx \ + syntax/ast_derive_abstract.cmx syntax/ast_derive.cmx \ + syntax/ast_attributes.cmx syntax/ast_tdcls.cmi +syntax/ast_tdcls.cmi : syntax/bs_ast_mapper.cmi syntax/ast_structure.cmi \ + syntax/ast_signature.cmi +syntax/ast_tuple_pattern_flatten.cmx : ext/ext_list.cmx \ + syntax/bs_ast_mapper.cmx syntax/bs_ast_invariant.cmx \ + syntax/ast_tuple_pattern_flatten.cmi +syntax/ast_tuple_pattern_flatten.cmi : syntax/bs_ast_mapper.cmi +syntax/ast_utf8_string.cmx : ext/ext_utf8.cmx ext/ext_char.cmx \ + syntax/ast_utf8_string.cmi +syntax/ast_utf8_string.cmi : +syntax/ast_utf8_string_interp.cmx : ext/literals.cmx ext/ext_utf8.cmx \ + ext/ext_string.cmx ext/ext_char.cmx common/bs_loc.cmx \ + syntax/ast_utf8_string_interp.cmi +syntax/ast_utf8_string_interp.cmi : +syntax/ast_util.cmx : ext/literals.cmx syntax/external_process.cmx \ + ext/ext_string.cmx ext/ext_list.cmx syntax/bs_syntaxerr.cmx \ + syntax/bs_ast_mapper.cmx syntax/ast_payload.cmx syntax/ast_pat.cmx \ + syntax/ast_literal.cmx syntax/ast_external_mk.cmx syntax/ast_exp.cmx \ + syntax/ast_core_type.cmx syntax/ast_comb.cmx syntax/ast_attributes.cmx \ + syntax/ast_util.cmi +syntax/ast_util.cmi : syntax/bs_ast_mapper.cmi syntax/ast_payload.cmi +syntax/bs_ast_invariant.cmx : ext/literals.cmx ext/hash_set_poly.cmx \ + ext/ext_string.cmx common/bs_warnings.cmx syntax/bs_ast_iterator.cmx \ + syntax/ast_core_type.cmx syntax/bs_ast_invariant.cmi +syntax/bs_ast_invariant.cmi : syntax/bs_ast_iterator.cmi +syntax/bs_ast_iterator.cmx : syntax/bs_ast_iterator.cmi +syntax/bs_ast_iterator.cmi : +syntax/bs_ast_mapper.cmx : syntax/bs_ast_mapper.cmi +syntax/bs_ast_mapper.cmi : +syntax/bs_syntaxerr.cmx : syntax/bs_syntaxerr.cmi +syntax/bs_syntaxerr.cmi : +syntax/external_arg_spec.cmx : ext/ext_position.cmx ext/ext_json_parse.cmx \ + syntax/external_arg_spec.cmi +syntax/external_arg_spec.cmi : +syntax/external_ffi_types.cmx : syntax/external_arg_spec.cmx \ + ext/ext_string.cmx ext/ext_pervasives.cmx common/bs_version.cmx \ + syntax/external_ffi_types.cmi +syntax/external_ffi_types.cmi : syntax/external_arg_spec.cmi +syntax/external_process.cmx : common/lam_methname.cmx \ + syntax/external_ffi_types.cmx syntax/external_arg_spec.cmx \ + ext/ext_string.cmx ext/ext_list.cmx common/bs_warnings.cmx \ + syntax/bs_syntaxerr.cmx common/bs_loc.cmx syntax/bs_ast_invariant.cmx \ + syntax/ast_polyvar.cmx syntax/ast_payload.cmx syntax/ast_literal.cmx \ + syntax/ast_core_type.cmx syntax/ast_comb.cmx syntax/ast_attributes.cmx \ + syntax/external_process.cmi +syntax/external_process.cmi : common/bs_loc.cmi syntax/ast_core_type.cmi \ + syntax/ast_attributes.cmi +syntax/ppx_entry.cmx : ext/string_map.cmx ext/literals.cmx \ + common/js_config.cmx ext/ext_string.cmx syntax/bs_ast_mapper.cmx \ + syntax/bs_ast_invariant.cmx syntax/ast_util.cmx \ + syntax/ast_utf8_string_interp.cmx syntax/ast_utf8_string.cmx \ + syntax/ast_tuple_pattern_flatten.cmx syntax/ast_tdcls.cmx \ + syntax/ast_structure.cmx syntax/ast_primitive.cmx syntax/ast_payload.cmx \ + syntax/ast_literal.cmx syntax/ast_exp_extension.cmx \ + syntax/ast_exp_apply.cmx syntax/ast_derive_projector.cmx \ + syntax/ast_derive_js_mapper.cmx syntax/ast_core_type_class_type.cmx \ + syntax/ast_attributes.cmx syntax/ppx_entry.cmi +syntax/ppx_entry.cmi : diff --git a/jscomp/bin/all_ounit_tests.d b/jscomp/bin/all_ounit_tests.d index 47c66898d7..28b432edc9 100644 --- a/jscomp/bin/all_ounit_tests.d +++ b/jscomp/bin/all_ounit_tests.d @@ -117,6 +117,8 @@ bin/all_ounit_tests.ml : ./ounit_tests/ounit_union_find_tests.ml bin/all_ounit_tests.ml : ./ounit_tests/ounit_utf8_test.ml bin/all_ounit_tests.ml : ./ounit_tests/ounit_vec_test.ml bin/all_ounit_tests.ml : ./stubs/bs_hash_stubs.ml +bin/all_ounit_tests.ml : ./syntax/ast_compatible.ml +bin/all_ounit_tests.ml : ./syntax/ast_compatible.mli bin/all_ounit_tests.ml : ./syntax/ast_utf8_string.ml bin/all_ounit_tests.ml : ./syntax/ast_utf8_string.mli bin/all_ounit_tests.ml : ./syntax/ast_utf8_string_interp.ml diff --git a/jscomp/bin/all_ounit_tests.ml b/jscomp/bin/all_ounit_tests.ml index 6e0de83bbc..bd6bf5727c 100644 --- a/jscomp/bin/all_ounit_tests.ml +++ b/jscomp/bin/all_ounit_tests.ml @@ -14295,6 +14295,171 @@ let transform loc s = +end +module Ast_compatible : sig +#1 "ast_compatible.mli" +(* Copyright (C) 2018 Authors of BuckleScript + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * In addition to the permissions granted to you by the LGPL, you may combine + * or link a "work that uses the Library" with a publicly distributed version + * of this file to produce a combined library or application, then distribute + * that combined work under the terms of your choosing, with no requirement + * to comply with the obligations normally placed on you by section 4 of the + * LGPL version 3 (or the corresponding section of a later version of the LGPL + * should you choose to use a later version). + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) + + +type loc = Location.t +type attrs = Parsetree.attribute list +open Parsetree + + +val const_exp_string: + ?loc:Location.t -> + ?attrs:attrs -> + ?delimiter:string -> + string -> + expression + +val const_exp_int: + ?loc:Location.t -> + ?attrs:attrs -> + int -> + expression + +val const_exp_int_list_as_array: + int list -> + expression + +val apply_simple: + ?loc:Location.t -> + ?attrs:attrs -> + expression -> + expression list -> + expression + + +val apply_labels: + ?loc:Location.t -> + ?attrs:attrs -> + expression -> + (string * expression) list -> + (* [(label,e)] [label] is strictly interpreted as label *) + expression + +val fun_ : + ?loc:Location.t -> + ?attrs:attrs -> + pattern -> + expression -> + expression +end = struct +#1 "ast_compatible.ml" +(* Copyright (C) 2018 Authors of BuckleScript + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * In addition to the permissions granted to you by the LGPL, you may combine + * or link a "work that uses the Library" with a publicly distributed version + * of this file to produce a combined library or application, then distribute + * that combined work under the terms of your choosing, with no requirement + * to comply with the obligations normally placed on you by section 4 of the + * LGPL version 3 (or the corresponding section of a later version of the LGPL + * should you choose to use a later version). + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) + +type loc = Location.t +type attrs = Parsetree.attribute list +open Parsetree +let default_loc = Location.none + + + +let const_exp_string + ?(loc = default_loc) + ?(attrs = []) + ?delimiter + (s : string) : expression = + { + pexp_loc = loc; + pexp_attributes = attrs; + pexp_desc = Pexp_constant(Const_string(s,delimiter)) + } + + +let const_exp_int + ?(loc = default_loc) + ?(attrs = []) + (s : int) : expression = + { + pexp_loc = loc; + pexp_attributes = attrs; + pexp_desc = Pexp_constant(Const_int s) + } + + +let const_exp_int_list_as_array xs = + Ast_helper.Exp.array + (Ext_list.map (fun x -> const_exp_int x ) xs) + +let apply_simple + ?(loc = default_loc) + ?(attrs = []) + fn args : expression = + { pexp_loc = loc; + pexp_attributes = attrs; + pexp_desc = + Pexp_apply( + fn, + (Ext_list.map (fun x -> "",x) args) ) } + +let apply_labels + ?(loc = default_loc) + ?(attrs = []) + fn args : expression = + { pexp_loc = loc; + pexp_attributes = attrs; + pexp_desc = + Pexp_apply( + fn, + args ) } + +let fun_ + ?(loc = default_loc) + ?(attrs = []) + pat + exp = + { + pexp_loc = loc; + pexp_attributes = attrs; + pexp_desc = Pexp_fun("",None, pat, exp) + } + end module Bs_loc : sig #1 "bs_loc.mli" @@ -14845,10 +15010,10 @@ let concat_exp (a : Parsetree.expression) (b : Parsetree.expression) : Parsetree.expression = let loc = Bs_loc.merge a.pexp_loc b.pexp_loc in - Exp.apply ~loc + Ast_compatible.apply_simple ~loc (Exp.ident { txt =concat_ident; loc}) - ["",a ; - "",b] + [a ; + b] let border = String.length "{j|" @@ -14859,19 +15024,17 @@ let aux loc (segment : segment) = begin match kind with | String -> let loc = update border start finish loc in - Exp.constant - ~loc - (Const_string (content, escaped)) + Ast_compatible.const_exp_string + content ?delimiter:escaped ~loc | Var (soffset, foffset) -> let loc = { loc with loc_start = update_position (soffset + border) start loc.loc_start ; loc_end = update_position (foffset + border) finish loc.loc_start } in - Exp.apply ~loc + Ast_compatible.apply_simple ~loc (Exp.ident ~loc {loc ; txt = to_string_ident }) [ - "", Exp.ident ~loc {loc ; txt = Lident content} ] end @@ -14896,8 +15059,8 @@ let transform_interp loc s = let rev_segments = cxt.segments in match rev_segments with | [] -> - Exp.constant ~loc - (Const_string ("", Some Literals.escaped_j_delimiter)) + Ast_compatible.const_exp_string ~loc + "" ~delimiter:Literals.escaped_j_delimiter | [ segment] -> aux loc segment | a::rest -> diff --git a/jscomp/bsb/bsb_templates.ml b/jscomp/bsb/bsb_templates.ml index 4e1de19747..cbd9a0dba3 100644 --- a/jscomp/bsb/bsb_templates.ml +++ b/jscomp/bsb/bsb_templates.ml @@ -6,63 +6,6 @@ let root = OCamlRes.Res.([ "\n\ \n\ let () = Js.log \"Hello, BuckleScript\"")]) ; - File ("README.md", - "\n\ - \n\ - # Build\n\ - ```\n\ - npm run build\n\ - ```\n\ - \n\ - # Watch\n\ - \n\ - ```\n\ - npm run watch\n\ - ```\n\ - \n\ - \n\ - # Editor\n\ - If you use `vscode`, Press `Windows + Shift + B` it will build automatically") ; - File ("package.json", - "{\n\ - \ \"name\": \"${bsb:name}\",\n\ - \ \"version\": \"${bsb:proj-version}\",\n\ - \ \"scripts\": {\n\ - \ \"clean\": \"bsb -clean-world\",\n\ - \ \"build\": \"bsb -make-world\",\n\ - \ \"watch\": \"bsb -make-world -w\"\n\ - \ },\n\ - \ \"keywords\": [\n\ - \ \"BuckleScript\"\n\ - \ ],\n\ - \ \"author\": \"\",\n\ - \ \"license\": \"MIT\",\n\ - \ \"devDependencies\": {\n\ - \ \"bs-platform\": \"^${bsb:bs-version}\"\n\ - \ }\n\ - }") ; - File ("bsconfig.json", - "{\n\ - \ \"name\": \"${bsb:name}\",\n\ - \ \"version\": \"${bsb:proj-version}\",\n\ - \ \"sources\": {\n\ - \ \"dir\" : \"src\",\n\ - \ \"subdirs\" : true\n\ - \ },\n\ - \ \"package-specs\": {\n\ - \ \"module\": \"commonjs\",\n\ - \ \"in-source\": true\n\ - \ },\n\ - \ \"suffix\": \".bs.js\",\n\ - \ \"bs-dependencies\": [\n\ - \ // add your bs-dependencies here \n\ - \ ],\n\ - \ \"warnings\": {\n\ - \ \"error\" : \"+101\"\n\ - \ },\n\ - \ \"refmt\": 3\n\ - }\n\ - ") ; Dir (".vscode", [ File ("tasks.json", "{\n\ @@ -103,6 +46,46 @@ let root = OCamlRes.Res.([ \ ]\n\ \ }\n\ }")]) ; + File ("bsconfig.json", + "{\n\ + \ \"name\": \"${bsb:name}\",\n\ + \ \"version\": \"${bsb:proj-version}\",\n\ + \ \"sources\": {\n\ + \ \"dir\" : \"src\",\n\ + \ \"subdirs\" : true\n\ + \ },\n\ + \ \"package-specs\": {\n\ + \ \"module\": \"commonjs\",\n\ + \ \"in-source\": true\n\ + \ },\n\ + \ \"suffix\": \".bs.js\",\n\ + \ \"bs-dependencies\": [\n\ + \ // add your bs-dependencies here \n\ + \ ],\n\ + \ \"warnings\": {\n\ + \ \"error\" : \"+101\"\n\ + \ },\n\ + \ \"refmt\": 3\n\ + }\n\ + ") ; + File ("package.json", + "{\n\ + \ \"name\": \"${bsb:name}\",\n\ + \ \"version\": \"${bsb:proj-version}\",\n\ + \ \"scripts\": {\n\ + \ \"clean\": \"bsb -clean-world\",\n\ + \ \"build\": \"bsb -make-world\",\n\ + \ \"watch\": \"bsb -make-world -w\"\n\ + \ },\n\ + \ \"keywords\": [\n\ + \ \"BuckleScript\"\n\ + \ ],\n\ + \ \"author\": \"\",\n\ + \ \"license\": \"MIT\",\n\ + \ \"devDependencies\": {\n\ + \ \"bs-platform\": \"^${bsb:bs-version}\"\n\ + \ }\n\ + }") ; File (".gitignore", "*.exe\n\ *.obj\n\ @@ -129,76 +112,29 @@ let root = OCamlRes.Res.([ *.mliast\n\ .vscode\n\ .merlin\n\ - .bsb.lock")]) ; - Dir ("basic-reason", [ - Dir ("src", [ - File ("Demo.re", - "Js.log(\"Hello, BuckleScript and Reason!\");\n\ - ")]) ; + .bsb.lock") ; File ("README.md", - "# Basic Reason Template\n\ - \n\ - Hello! This project allows you to quickly get started with Reason and BuckleScript. If you wanted a more sophisticated version, try the `react` template (`bsb -theme react -init .`).\n\ + "\n\ \n\ # Build\n\ ```\n\ npm run build\n\ ```\n\ \n\ - # Build + Watch\n\ + # Watch\n\ \n\ ```\n\ - npm run start\n\ + npm run watch\n\ ```\n\ \n\ \n\ # Editor\n\ - If you use `vscode`, Press `Windows + Shift + B` it will build automatically\n\ - ") ; - File ("package.json", - "{\n\ - \ \"name\": \"${bsb:name}\",\n\ - \ \"version\": \"${bsb:proj-version}\",\n\ - \ \"scripts\": {\n\ - \ \"build\": \"bsb -make-world\",\n\ - \ \"start\": \"bsb -make-world -w\",\n\ - \ \"clean\": \"bsb -clean-world\"\n\ - \ },\n\ - \ \"keywords\": [\n\ - \ \"BuckleScript\"\n\ - \ ],\n\ - \ \"author\": \"\",\n\ - \ \"license\": \"MIT\",\n\ - \ \"devDependencies\": {\n\ - \ \"bs-platform\": \"^${bsb:bs-version}\"\n\ - \ }\n\ - }\n\ - ") ; - File ("bsconfig.json", - "// This is the configuration file used by BuckleScript's build system bsb. Its documentation lives here: http://bucklescript.github.io/bucklescript/docson/#build-schema.json\n\ - // BuckleScript comes with its own parser for bsconfig.json, which is normal JSON, with the extra support of comments and trailing commas.\n\ - {\n\ - \ \"name\": \"${bsb:name}\",\n\ - \ \"version\": \"${bsb:proj-version}\",\n\ - \ \"sources\": {\n\ - \ \"dir\" : \"src\",\n\ - \ \"subdirs\" : true\n\ - \ },\n\ - \ \"package-specs\": {\n\ - \ \"module\": \"commonjs\",\n\ - \ \"in-source\": true\n\ - \ },\n\ - \ \"suffix\": \".bs.js\",\n\ - \ \"bs-dependencies\": [\n\ - \ // add your dependencies here. You'd usually install them normally through `npm install my-dependency`. If my-dependency has a bsconfig.json too, then everything will work seamlessly.\n\ - \ ],\n\ - \ \"warnings\": {\n\ - \ \"error\" : \"+101\"\n\ - \ },\n\ - \ \"namespace\": true,\n\ - \ \"refmt\": 3\n\ - }\n\ - ") ; + If you use `vscode`, Press `Windows + Shift + B` it will build automatically")]) ; + Dir ("basic-reason", [ + Dir ("src", [ + File ("Demo.re", + "Js.log(\"Hello, BuckleScript and Reason!\");\n\ + ")]) ; Dir (".vscode", [ File ("tasks.json", "{\n\ @@ -244,6 +180,50 @@ let root = OCamlRes.Res.([ \ }\n\ \ }\n\ ")]) ; + File ("bsconfig.json", + "// This is the configuration file used by BuckleScript's build system bsb. Its documentation lives here: http://bucklescript.github.io/bucklescript/docson/#build-schema.json\n\ + // BuckleScript comes with its own parser for bsconfig.json, which is normal JSON, with the extra support of comments and trailing commas.\n\ + {\n\ + \ \"name\": \"${bsb:name}\",\n\ + \ \"version\": \"${bsb:proj-version}\",\n\ + \ \"sources\": {\n\ + \ \"dir\" : \"src\",\n\ + \ \"subdirs\" : true\n\ + \ },\n\ + \ \"package-specs\": {\n\ + \ \"module\": \"commonjs\",\n\ + \ \"in-source\": true\n\ + \ },\n\ + \ \"suffix\": \".bs.js\",\n\ + \ \"bs-dependencies\": [\n\ + \ // add your dependencies here. You'd usually install them normally through `npm install my-dependency`. If my-dependency has a bsconfig.json too, then everything will work seamlessly.\n\ + \ ],\n\ + \ \"warnings\": {\n\ + \ \"error\" : \"+101\"\n\ + \ },\n\ + \ \"namespace\": true,\n\ + \ \"refmt\": 3\n\ + }\n\ + ") ; + File ("package.json", + "{\n\ + \ \"name\": \"${bsb:name}\",\n\ + \ \"version\": \"${bsb:proj-version}\",\n\ + \ \"scripts\": {\n\ + \ \"build\": \"bsb -make-world\",\n\ + \ \"start\": \"bsb -make-world -w\",\n\ + \ \"clean\": \"bsb -clean-world\"\n\ + \ },\n\ + \ \"keywords\": [\n\ + \ \"BuckleScript\"\n\ + \ ],\n\ + \ \"author\": \"\",\n\ + \ \"license\": \"MIT\",\n\ + \ \"devDependencies\": {\n\ + \ \"bs-platform\": \"^${bsb:bs-version}\"\n\ + \ }\n\ + }\n\ + ") ; File (".gitignore", ".DS_Store\n\ .merlin\n\ @@ -251,6 +231,26 @@ let root = OCamlRes.Res.([ npm-debug.log\n\ /lib/bs/\n\ /node_modules/\n\ + ") ; + File ("README.md", + "# Basic Reason Template\n\ + \n\ + Hello! This project allows you to quickly get started with Reason and BuckleScript. If you wanted a more sophisticated version, try the `react` template (`bsb -theme react -init .`).\n\ + \n\ + # Build\n\ + ```\n\ + npm run build\n\ + ```\n\ + \n\ + # Build + Watch\n\ + \n\ + ```\n\ + npm run start\n\ + ```\n\ + \n\ + \n\ + # Editor\n\ + If you use `vscode`, Press `Windows + Shift + B` it will build automatically\n\ ")]) ; Dir ("generator", [ Dir ("src", [ @@ -269,52 +269,17 @@ let root = OCamlRes.Res.([ "\n\ \n\ let () = Js.log \"Hello, BuckleScript\"")]) ; - File ("README.md", - "\n\ - \n\ - # Build\n\ - ```\n\ - npm run build\n\ - ```\n\ - \n\ - # Watch\n\ - \n\ - ```\n\ - npm run watch\n\ - ```\n\ - \n\ - \n\ - # Editor\n\ - If you use `vscode`, Press `Windows + Shift + B` it will build automatically") ; - File ("package.json", + File ("bsconfig.json", "{\n\ \ \"name\": \"${bsb:name}\",\n\ \ \"version\": \"${bsb:proj-version}\",\n\ - \ \"scripts\": {\n\ - \ \"clean\": \"bsb -clean-world\",\n\ - \ \"build\": \"bsb -make-world\",\n\ - \ \"watch\": \"bsb -make-world -w\"\n\ - \ },\n\ - \ \"keywords\": [\n\ - \ \"BuckleScript\"\n\ - \ ],\n\ - \ \"author\": \"\",\n\ - \ \"license\": \"MIT\",\n\ - \ \"devDependencies\": {\n\ - \ \"bs-platform\": \"^${bsb:bs-version}\"\n\ - \ }\n\ - }") ; - File ("bsconfig.json", - "{\n\ - \ \"name\": \"${bsb:name}\",\n\ - \ \"version\": \"${bsb:proj-version}\",\n\ - \ \"sources\": {\n\ - \ \"dir\": \"src\",\n\ - \ \"generators\": [{\n\ - \ \"name\": \"cpp\",\n\ - \ \"edge\": [\"test.ml\", \":\", \"test.cpp.ml\"]\n\ - \ }],\n\ - \ \"subdirs\": true \n\ + \ \"sources\": {\n\ + \ \"dir\": \"src\",\n\ + \ \"generators\": [{\n\ + \ \"name\": \"cpp\",\n\ + \ \"edge\": [\"test.ml\", \":\", \"test.cpp.ml\"]\n\ + \ }],\n\ + \ \"subdirs\": true \n\ \ },\n\ \ \"generators\": [{\n\ \ \"name\" : \"cpp\",\n\ @@ -323,6 +288,24 @@ let root = OCamlRes.Res.([ \ \"bs-dependencies\" : [\n\ \ ]\n\ }") ; + File ("package.json", + "{\n\ + \ \"name\": \"${bsb:name}\",\n\ + \ \"version\": \"${bsb:proj-version}\",\n\ + \ \"scripts\": {\n\ + \ \"clean\": \"bsb -clean-world\",\n\ + \ \"build\": \"bsb -make-world\",\n\ + \ \"watch\": \"bsb -make-world -w\"\n\ + \ },\n\ + \ \"keywords\": [\n\ + \ \"BuckleScript\"\n\ + \ ],\n\ + \ \"author\": \"\",\n\ + \ \"license\": \"MIT\",\n\ + \ \"devDependencies\": {\n\ + \ \"bs-platform\": \"^${bsb:bs-version}\"\n\ + \ }\n\ + }") ; File (".gitignore", "*.exe\n\ *.obj\n\ @@ -349,12 +332,34 @@ let root = OCamlRes.Res.([ *.mliast\n\ .vscode\n\ .merlin\n\ - .bsb.lock")]) ; - Dir ("minimal", [ - Dir ("src", [ File ("main.ml", "")]) ; + .bsb.lock") ; File ("README.md", "\n\ - \ # ${bsb:name}") ; + \n\ + # Build\n\ + ```\n\ + npm run build\n\ + ```\n\ + \n\ + # Watch\n\ + \n\ + ```\n\ + npm run watch\n\ + ```\n\ + \n\ + \n\ + # Editor\n\ + If you use `vscode`, Press `Windows + Shift + B` it will build automatically")]) ; + Dir ("minimal", [ + Dir ("src", [ File ("main.ml", "")]) ; + File ("bsconfig.json", + "{\n\ + \ \"name\": \"${bsb:name}\",\n\ + \ \"sources\": {\n\ + \ \"dir\": \"src\",\n\ + \ \"subdirs\": true\n\ + \ }\n\ + }") ; File ("package.json", "{\n\ \ \"name\": \"${bsb:name}\",\n\ @@ -373,45 +378,38 @@ let root = OCamlRes.Res.([ \ \"bs-platform\": \"^${bsb:bs-version}\"\n\ \ }\n\ }") ; - File ("bsconfig.json", - "{\n\ - \ \"name\": \"${bsb:name}\",\n\ - \ \"sources\": {\n\ - \ \"dir\": \"src\",\n\ - \ \"subdirs\": true\n\ - \ }\n\ - }") ; File (".gitignore", ".DS_Store\n\ .merlin\n\ .bsb.lock\n\ npm-debug.log\n\ /lib/bs/\n\ - /node_modules/")]) ; + /node_modules/") ; + File ("README.md", + "\n\ + \ # ${bsb:name}")]) ; Dir ("node", [ Dir ("src", [ File ("demo.ml", "\n\ \n\ let () = Js.log \"Hello, BuckleScript\"")]) ; - File ("README.md", - "\n\ - \n\ - # Build\n\ - ```\n\ - npm run build\n\ - ```\n\ - \n\ - # Watch\n\ - \n\ - ```\n\ - npm run watch\n\ - ```\n\ - \n\ - \n\ - # Editor\n\ - If you use `vscode`, Press `Windows + Shift + B` it will build automatically\n\ - ") ; + File ("bsconfig.json", + "{\n\ + \ \"name\": \"${bsb:name}\",\n\ + \ \"version\": \"${bsb:proj-version}\",\n\ + \ \"sources\": {\n\ + \ \"dir\": \"src\",\n\ + \ \"subdirs\" : true\n\ + \ },\n\ + \ \"package-specs\": {\n\ + \ \"module\": \"commonjs\",\n\ + \ \"in-source\": true\n\ + \ },\n\ + \ \"suffix\": \".bs.js\",\n\ + \ \"bs-dependencies\": [\n\ + \ ]\n\ + }") ; File ("package.json", "{\n\ \ \"name\": \"${bsb:name}\",\n\ @@ -430,22 +428,6 @@ let root = OCamlRes.Res.([ \ \"bs-platform\": \"^${bsb:bs-version}\"\n\ \ }\n\ }") ; - File ("bsconfig.json", - "{\n\ - \ \"name\": \"${bsb:name}\",\n\ - \ \"version\": \"${bsb:proj-version}\",\n\ - \ \"sources\": {\n\ - \ \"dir\": \"src\",\n\ - \ \"subdirs\" : true\n\ - \ },\n\ - \ \"package-specs\": {\n\ - \ \"module\": \"commonjs\",\n\ - \ \"in-source\": true\n\ - \ },\n\ - \ \"suffix\": \".bs.js\",\n\ - \ \"bs-dependencies\": [\n\ - \ ]\n\ - }") ; File (".gitignore", "*.exe\n\ *.obj\n\ @@ -472,46 +454,56 @@ let root = OCamlRes.Res.([ *.mliast\n\ .vscode\n\ .merlin\n\ - .bsb.lock")]) ; - Dir ("react", [ - File ("webpack.config.js", - "const path = require('path');\n\ - const outputDir = path.join(__dirname, \"build/\");\n\ + .bsb.lock") ; + File ("README.md", + "\n\ \n\ - const isProd = process.env.NODE_ENV === 'production';\n\ + # Build\n\ + ```\n\ + npm run build\n\ + ```\n\ \n\ - module.exports = {\n\ - \ entry: './src/Index.bs.js',\n\ - \ mode: isProd ? 'production' : 'development',\n\ - \ output: {\n\ - \ path: outputDir,\n\ - \ publicPath: outputDir,\n\ - \ filename: 'Index.js',\n\ - \ },\n\ - };\n\ - ") ; + # Watch\n\ + \n\ + ```\n\ + npm run watch\n\ + ```\n\ + \n\ + \n\ + # Editor\n\ + If you use `vscode`, Press `Windows + Shift + B` it will build automatically\n\ + ")]) ; + Dir ("react", [ Dir ("src", [ File ("Index.re", "ReactDOMRe.renderToElementWithId(, \"index1\");\n\ \n\ ReactDOMRe.renderToElementWithId(, \"index2\");\n\ ") ; - File ("index.html", - "\n\ - \n\ - \n\ - \ \n\ - \ ReasonReact Examples\n\ - \n\ - \n\ - \ Component 1:\n\ - \
\n\ - \ Component 2:\n\ - \
\n\ + File ("Component1.re", + "/* This is the basic component. */\n\ + let component = ReasonReact.statelessComponent(\"Page\");\n\ \n\ - \ \n\ - \n\ - \n\ + /* Your familiar handleClick from ReactJS. This mandatorily takes the payload,\n\ + \ then the `self` record, which contains state (none here), `handle`, `reduce`\n\ + \ and other utilities */\n\ + let handleClick = (_event, _self) => Js.log(\"clicked!\");\n\ + \n\ + /* `make` is the function that mandatorily takes `children` (if you want to use\n\ + \ `JSX). `message` is a named argument, which simulates ReactJS props. Usage:\n\ + \n\ + \ ``\n\ + \n\ + \ Which desugars to\n\ + \n\ + \ `ReasonReact.element(Page.make(~message=\"hello\", [||]))` */\n\ + let make = (~message, _children) => {\n\ + \ ...component,\n\ + \ render: self =>\n\ + \
\n\ + \ (ReasonReact.string(message))\n\ + \
,\n\ + };\n\ ") ; File ("Component2.re", "/* State declaration */\n\ @@ -559,57 +551,48 @@ let root = OCamlRes.Res.([ \ },\n\ };\n\ ") ; - File ("Component1.re", - "/* This is the basic component. */\n\ - let component = ReasonReact.statelessComponent(\"Page\");\n\ - \n\ - /* Your familiar handleClick from ReactJS. This mandatorily takes the payload,\n\ - \ then the `self` record, which contains state (none here), `handle`, `reduce`\n\ - \ and other utilities */\n\ - let handleClick = (_event, _self) => Js.log(\"clicked!\");\n\ - \n\ - /* `make` is the function that mandatorily takes `children` (if you want to use\n\ - \ `JSX). `message` is a named argument, which simulates ReactJS props. Usage:\n\ - \n\ - \ ``\n\ - \n\ - \ Which desugars to\n\ + File ("index.html", + "\n\ + \n\ + \n\ + \ \n\ + \ ReasonReact Examples\n\ + \n\ + \n\ + \ Component 1:\n\ + \
\n\ + \ Component 2:\n\ + \
\n\ \n\ - \ `ReasonReact.element(Page.make(~message=\"hello\", [||]))` */\n\ - let make = (~message, _children) => {\n\ - \ ...component,\n\ - \ render: self =>\n\ - \
\n\ - \ (ReasonReact.string(message))\n\ - \
,\n\ - };\n\ + \ \n\ + \n\ + \n\ ")]) ; - File ("README.md", - "# ${bsb:name}\n\ - \n\ - ## Run Project\n\ - \n\ - ```sh\n\ - npm install\n\ - npm start\n\ - # in another tab\n\ - npm run webpack\n\ - ```\n\ - \n\ - After you see the webpack compilation succeed (the `npm run webpack` step), open up `src/index.html` (**no server needed!**). Then modify whichever `.re` file in `src` and refresh the page to see the changes.\n\ - \n\ - **For more elaborate ReasonReact examples**, please see https://github.com/reasonml-community/reason-react-example\n\ - \n\ - ## Build for Production\n\ - \n\ - ```sh\n\ - npm run build\n\ - npm run webpack:production\n\ - ```\n\ - \n\ - This will replace the development artifact `build/Index.js` for an optimized version.\n\ - \n\ - **To enable dead code elimination**, change `bsconfig.json`'s `package-specs` `module` from `\"commonjs\"` to `\"es6\"`. Then re-run the above 2 commands. This will allow Webpack to remove unused code.\n\ + File ("bsconfig.json", + "/* This is the BuckleScript configuration file. Note that this is a comment;\n\ + \ BuckleScript comes with a JSON parser that supports comments and trailing\n\ + \ comma. If this screws with your editor highlighting, please tell us by filing\n\ + \ an issue! */\n\ + {\n\ + \ \"name\": \"react-template\",\n\ + \ \"reason\": {\n\ + \ \"react-jsx\": 2\n\ + \ },\n\ + \ \"sources\": {\n\ + \ \"dir\" : \"src\",\n\ + \ \"subdirs\" : true\n\ + \ },\n\ + \ \"package-specs\": [{\n\ + \ \"module\": \"commonjs\",\n\ + \ \"in-source\": true\n\ + \ }],\n\ + \ \"suffix\": \".bs.js\",\n\ + \ \"namespace\": true,\n\ + \ \"bs-dependencies\": [\n\ + \ \"reason-react\"\n\ + \ ],\n\ + \ \"refmt\": 3\n\ + }\n\ ") ; File ("package.json", "{\n\ @@ -640,74 +623,88 @@ let root = OCamlRes.Res.([ \ }\n\ }\n\ ") ; - File ("bsconfig.json", - "/* This is the BuckleScript configuration file. Note that this is a comment;\n\ - \ BuckleScript comes with a JSON parser that supports comments and trailing\n\ - \ comma. If this screws with your editor highlighting, please tell us by filing\n\ - \ an issue! */\n\ - {\n\ - \ \"name\": \"react-template\",\n\ - \ \"reason\": {\n\ - \ \"react-jsx\": 2\n\ - \ },\n\ - \ \"sources\": {\n\ - \ \"dir\" : \"src\",\n\ - \ \"subdirs\" : true\n\ - \ },\n\ - \ \"package-specs\": [{\n\ - \ \"module\": \"commonjs\",\n\ - \ \"in-source\": true\n\ - \ }],\n\ - \ \"suffix\": \".bs.js\",\n\ - \ \"namespace\": true,\n\ - \ \"bs-dependencies\": [\n\ - \ \"reason-react\"\n\ - \ ],\n\ - \ \"refmt\": 3\n\ - }\n\ - ") ; File (".gitignore", ".DS_Store\n\ .merlin\n\ .bsb.lock\n\ npm-debug.log\n\ /lib/bs/\n\ - /node_modules/")]) ; - Dir ("react-lite", [ - File ("watcher.js", - "\n\ + /node_modules/") ; + File ("README.md", + "# ${bsb:name}\n\ \n\ - var wsReloader;\n\ - var LAST_SUCCESS_BUILD_STAMP = (localStorage.getItem('LAST_SUCCESS_BUILD_STAMP') || 0)\n\ - var WS_PORT = 9999; // configurable\n\ + ## Run Project\n\ \n\ - function setUpWebScoket() {\n\ - \ if (wsReloader == null || wsReloader.readyState !== 1) {\n\ - \ try {\n\ - \ wsReloader = new WebSocket(`ws://localhost:${WS_PORT}`)\n\ - \ wsReloader.onmessage = (msg) => {\n\ - \ var newData = JSON.parse(msg.data).LAST_SUCCESS_BUILD_STAMP\n\ - \ if (newData > LAST_SUCCESS_BUILD_STAMP) {\n\ - \ LAST_SUCCESS_BUILD_STAMP = newData\n\ - \ localStorage.setItem('LAST_SUCCESS_BUILD_STAMP', LAST_SUCCESS_BUILD_STAMP)\n\ - \ location.reload(true)\n\ - \ }\n\ + ```sh\n\ + npm install\n\ + npm start\n\ + # in another tab\n\ + npm run webpack\n\ + ```\n\ \n\ - \ }\n\ - \ } catch (exn) {\n\ - \ console.error(\"web socket failed connect\")\n\ - \ }\n\ - \ }\n\ - };\n\ + After you see the webpack compilation succeed (the `npm run webpack` step), open up `src/index.html` (**no server needed!**). Then modify whichever `.re` file in `src` and refresh the page to see the changes.\n\ \n\ - setUpWebScoket();\n\ - setInterval(setUpWebScoket, 2000);") ; + **For more elaborate ReasonReact examples**, please see https://github.com/reasonml-community/reason-react-example\n\ + \n\ + ## Build for Production\n\ + \n\ + ```sh\n\ + npm run build\n\ + npm run webpack:production\n\ + ```\n\ + \n\ + This will replace the development artifact `build/Index.js` for an optimized version.\n\ + \n\ + **To enable dead code elimination**, change `bsconfig.json`'s `package-specs` `module` from `\"commonjs\"` to `\"es6\"`. Then re-run the above 2 commands. This will allow Webpack to remove unused code.\n\ + ") ; + File ("webpack.config.js", + "const path = require('path');\n\ + const outputDir = path.join(__dirname, \"build/\");\n\ + \n\ + const isProd = process.env.NODE_ENV === 'production';\n\ + \n\ + module.exports = {\n\ + \ entry: './src/Index.bs.js',\n\ + \ mode: isProd ? 'production' : 'development',\n\ + \ output: {\n\ + \ path: outputDir,\n\ + \ publicPath: outputDir,\n\ + \ filename: 'Index.js',\n\ + \ },\n\ + };\n\ + ")]) ; + Dir ("react-lite", [ Dir ("src", [ File ("Index.re", "ReactDOMRe.renderToElementWithId(, \"index1\");\n\ \n\ ReactDOMRe.renderToElementWithId(, \"index2\");\n\ ") ; + File ("Component1.re", + "/* This is the basic component. */\n\ + let component = ReasonReact.statelessComponent(\"Page\");\n\ + \n\ + /* Your familiar handleClick from ReactJS. This mandatorily takes the payload,\n\ + \ then the `self` record, which contains state (none here), `handle`, `reduce`\n\ + \ and other utilities */\n\ + let handleClick = (_event, _self) => Js.log(\"clicked!\");\n\ + \n\ + /* `make` is the function that mandatorily takes `children` (if you want to use\n\ + \ `JSX). `message` is a named argument, which simulates ReactJS props. Usage:\n\ + \n\ + \ ``\n\ + \n\ + \ Which desugars to\n\ + \n\ + \ `ReasonReact.element(Page.make(~message=\"hello\", [||]))` */\n\ + let make = (~message, _children) => {\n\ + \ ...component,\n\ + \ render: self =>\n\ + \
\n\ + \ (ReasonReact.string(message))\n\ + \
,\n\ + };\n\ + ") ; File ("Component2.re", "/* State declaration */\n\ type state = {\n\ @@ -748,80 +745,12 @@ let root = OCamlRes.Res.([ \ \n\ \ \n\ - \ (self.state.show ? ReasonReact.string(greeting) : ReasonReact.null)\n\ - \ ;\n\ - \ },\n\ - };\n\ - ") ; - File ("Component1.re", - "/* This is the basic component. */\n\ - let component = ReasonReact.statelessComponent(\"Page\");\n\ - \n\ - /* Your familiar handleClick from ReactJS. This mandatorily takes the payload,\n\ - \ then the `self` record, which contains state (none here), `handle`, `reduce`\n\ - \ and other utilities */\n\ - let handleClick = (_event, _self) => Js.log(\"clicked!\");\n\ - \n\ - /* `make` is the function that mandatorily takes `children` (if you want to use\n\ - \ `JSX). `message` is a named argument, which simulates ReactJS props. Usage:\n\ - \n\ - \ ``\n\ - \n\ - \ Which desugars to\n\ - \n\ - \ `ReasonReact.element(Page.make(~message=\"hello\", [||]))` */\n\ - let make = (~message, _children) => {\n\ - \ ...component,\n\ - \ render: self =>\n\ - \
\n\ - \ (ReasonReact.string(message))\n\ - \
,\n\ - };\n\ - ")]) ; - File ("README.md", - "# react\n\ - \n\ - ## Run Project\n\ - \n\ - ```sh\n\ - npm install\n\ - npm start\n\ - ```\n\ - \n\ - Suppose you have a http-server running (try `npm i -g http-server`)\n\ - \n\ - \n\ - Then modify whichever `.re` file in `src` and refresh the page to see the changes.\n\ - \n\ - **For more elaborate ReasonReact examples**, please see https://github.com/reasonml-community/reason-react-example\n\ - \n\ - ") ; - File ("package.json", - "{\n\ - \ \"name\": \"${bsb:name}\",\n\ - \ \"version\": \"${bsb:proj-version}\",\n\ - \ \"scripts\": {\n\ - \ \"build\": \"bsb -make-world\",\n\ - \ \"start\": \"bsb -make-world -w -ws _ \",\n\ - \ \"clean\": \"bsb -clean-world\",\n\ - \ \"test\": \"echo \\\"Error: no test specified\\\" && exit 1\"\n\ - \ },\n\ - \ \"keywords\": [\n\ - \ \"BuckleScript\"\n\ - \ ],\n\ - \ \"author\": \"\",\n\ - \ \"license\": \"MIT\",\n\ - \ \"dependencies\": {\n\ - \ \"react\": \"^16.2.0\",\n\ - \ \"react-dom\": \"^16.2.0\",\n\ - \ \"reason-react\": \">=0.4.0\"\n\ - \ },\n\ - \ \"devDependencies\": {\n\ - \ \"bs-platform\": \"^${bsb:bs-version}\"\n\ - \ }\n\ - }\n\ - ") ; + \ \n\ + \ (self.state.show ? ReasonReact.string(greeting) : ReasonReact.null)\n\ + \ ;\n\ + \ },\n\ + };\n\ + ")]) ; File ("loader.js", "/* Copyright (C) 2018 Authors of BuckleScript\n\ \ * \n\ @@ -1266,24 +1195,6 @@ let root = OCamlRes.Res.([ \ BSload(main.dataset.main)\n\ }\n\ ") ; - File ("index.html", - "\n\ - \n\ - \n\ - \ \n\ - \ ReasonReact Examples\n\ - \n\ - \n\ - \ Component 1:\n\ - \
\n\ - \ Component 2:\n\ - \
\n\ - \n\ - \ \n\ - \ \n\ - \n\ - \n\ - ") ; File ("bsconfig.json", "{\n\ \ \"name\": \"react-lite\",\n\ @@ -1306,14 +1217,6 @@ let root = OCamlRes.Res.([ \ \"refmt\": 3\n\ }\n\ ") ; - File (".gitignore", - ".DS_Store\n\ - .merlin\n\ - .bsb.lock\n\ - npm-debug.log\n\ - /lib/bs/\n\ - /node_modules/")]) ; - Dir ("tea", [ File ("watcher.js", "\n\ \n\ @@ -1342,6 +1245,75 @@ let root = OCamlRes.Res.([ \n\ setUpWebScoket();\n\ setInterval(setUpWebScoket, 2000);") ; + File ("package.json", + "{\n\ + \ \"name\": \"${bsb:name}\",\n\ + \ \"version\": \"${bsb:proj-version}\",\n\ + \ \"scripts\": {\n\ + \ \"build\": \"bsb -make-world\",\n\ + \ \"start\": \"bsb -make-world -w -ws _ \",\n\ + \ \"clean\": \"bsb -clean-world\",\n\ + \ \"test\": \"echo \\\"Error: no test specified\\\" && exit 1\"\n\ + \ },\n\ + \ \"keywords\": [\n\ + \ \"BuckleScript\"\n\ + \ ],\n\ + \ \"author\": \"\",\n\ + \ \"license\": \"MIT\",\n\ + \ \"dependencies\": {\n\ + \ \"react\": \"^16.2.0\",\n\ + \ \"react-dom\": \"^16.2.0\",\n\ + \ \"reason-react\": \">=0.4.0\"\n\ + \ },\n\ + \ \"devDependencies\": {\n\ + \ \"bs-platform\": \"^${bsb:bs-version}\"\n\ + \ }\n\ + }\n\ + ") ; + File (".gitignore", + ".DS_Store\n\ + .merlin\n\ + .bsb.lock\n\ + npm-debug.log\n\ + /lib/bs/\n\ + /node_modules/") ; + File ("README.md", + "# react\n\ + \n\ + ## Run Project\n\ + \n\ + ```sh\n\ + npm install\n\ + npm start\n\ + ```\n\ + \n\ + Suppose you have a http-server running (try `npm i -g http-server`)\n\ + \n\ + \n\ + Then modify whichever `.re` file in `src` and refresh the page to see the changes.\n\ + \n\ + **For more elaborate ReasonReact examples**, please see https://github.com/reasonml-community/reason-react-example\n\ + \n\ + ") ; + File ("index.html", + "\n\ + \n\ + \n\ + \ \n\ + \ ReasonReact Examples\n\ + \n\ + \n\ + \ Component 1:\n\ + \
\n\ + \ Component 2:\n\ + \
\n\ + \n\ + \ \n\ + \ \n\ + \n\ + \n\ + ")]) ; + Dir ("tea", [ Dir ("src", [ File ("main.ml", "\n\ @@ -1416,50 +1388,6 @@ let root = OCamlRes.Res.([ \ update;\n\ \ view;\n\ \ }")]) ; - File ("README.md", - "\n\ - \n\ - # Build\n\ - ```\n\ - npm run build\n\ - ```\n\ - \n\ - # Watch\n\ - \n\ - ```\n\ - npm run watch\n\ - ```\n\ - \n\ - create a http-server\n\ - \n\ - ```\n\ - npm install -g http-server\n\ - ```\n\ - \n\ - Edit the file and see the changes automatically reloaded in the browser\n\ - ") ; - File ("package.json", - "{\n\ - \ \"name\": \"${bsb:name}\",\n\ - \ \"version\": \"${bsb:proj-version}\",\n\ - \ \"scripts\": {\n\ - \ \"clean\": \"bsb -clean-world\",\n\ - \ \"build\": \"bsb -make-world\",\n\ - \ \"watch\": \"bsb -make-world -w -ws _\"\n\ - \ },\n\ - \ \"keywords\": [\n\ - \ \"BuckleScript\"\n\ - \ ],\n\ - \ \"author\": \"\",\n\ - \ \"license\": \"MIT\",\n\ - \ \"devDependencies\": {\n\ - \ \"bs-platform\": \"^${bsb:bs-version}\"\n\ - \ },\n\ - \ \"dependencies\": {\n\ - \ \"bucklescript-tea\": \"^0.7.4\"\n\ - \ }\n\ - }\n\ - ") ; File ("loader.js", "/* Copyright (C) 2018 Authors of BuckleScript\n\ \ * \n\ @@ -1904,27 +1832,6 @@ let root = OCamlRes.Res.([ \ BSload(main.dataset.main)\n\ }\n\ ") ; - File ("index.html", - "\n\ - \n\ - \ \n\ - \ \n\ - \ \n\ - \ \n\ - \ \n\ - \ \n\ - \ Bucklescript TEA Starter Kit\n\ - \ \n\ - \ \n\ - \n\ - \n\ - \ \n\ - \
\n\ - \ \n\ - \ \n\ - \ \n\ - \ \n\ - ") ; File ("bsconfig.json", "{\n\ \ \"name\": \"tea\",\n\ @@ -1945,5 +1852,98 @@ let root = OCamlRes.Res.([ \ \"error\" : \"+101\"\n\ \ }\n\ }\n\ - ")]) + ") ; + File ("watcher.js", + "\n\ + \n\ + var wsReloader;\n\ + var LAST_SUCCESS_BUILD_STAMP = (localStorage.getItem('LAST_SUCCESS_BUILD_STAMP') || 0)\n\ + var WS_PORT = 9999; // configurable\n\ + \n\ + function setUpWebScoket() {\n\ + \ if (wsReloader == null || wsReloader.readyState !== 1) {\n\ + \ try {\n\ + \ wsReloader = new WebSocket(`ws://localhost:${WS_PORT}`)\n\ + \ wsReloader.onmessage = (msg) => {\n\ + \ var newData = JSON.parse(msg.data).LAST_SUCCESS_BUILD_STAMP\n\ + \ if (newData > LAST_SUCCESS_BUILD_STAMP) {\n\ + \ LAST_SUCCESS_BUILD_STAMP = newData\n\ + \ localStorage.setItem('LAST_SUCCESS_BUILD_STAMP', LAST_SUCCESS_BUILD_STAMP)\n\ + \ location.reload(true)\n\ + \ }\n\ + \n\ + \ }\n\ + \ } catch (exn) {\n\ + \ console.error(\"web socket failed connect\")\n\ + \ }\n\ + \ }\n\ + };\n\ + \n\ + setUpWebScoket();\n\ + setInterval(setUpWebScoket, 2000);") ; + File ("package.json", + "{\n\ + \ \"name\": \"${bsb:name}\",\n\ + \ \"version\": \"${bsb:proj-version}\",\n\ + \ \"scripts\": {\n\ + \ \"clean\": \"bsb -clean-world\",\n\ + \ \"build\": \"bsb -make-world\",\n\ + \ \"watch\": \"bsb -make-world -w -ws _\"\n\ + \ },\n\ + \ \"keywords\": [\n\ + \ \"BuckleScript\"\n\ + \ ],\n\ + \ \"author\": \"\",\n\ + \ \"license\": \"MIT\",\n\ + \ \"devDependencies\": {\n\ + \ \"bs-platform\": \"^${bsb:bs-version}\"\n\ + \ },\n\ + \ \"dependencies\": {\n\ + \ \"bucklescript-tea\": \"^0.7.4\"\n\ + \ }\n\ + }\n\ + ") ; + File ("README.md", + "\n\ + \n\ + # Build\n\ + ```\n\ + npm run build\n\ + ```\n\ + \n\ + # Watch\n\ + \n\ + ```\n\ + npm run watch\n\ + ```\n\ + \n\ + create a http-server\n\ + \n\ + ```\n\ + npm install -g http-server\n\ + ```\n\ + \n\ + Edit the file and see the changes automatically reloaded in the browser\n\ + ") ; + File ("index.html", + "\n\ + \n\ + \ \n\ + \ \n\ + \ \n\ + \ \n\ + \ \n\ + \ \n\ + \ Bucklescript TEA Starter Kit\n\ + \ \n\ + \ \n\ + \n\ + \n\ + \ \n\ + \
\n\ + \ \n\ + \ \n\ + \ \n\ + \ \n\ + ")]) ]) diff --git a/jscomp/syntax/ast_comb.ml b/jscomp/syntax/ast_comb.ml index ec5cfc18e3..43fcba1c4e 100644 --- a/jscomp/syntax/ast_comb.ml +++ b/jscomp/syntax/ast_comb.ml @@ -28,8 +28,8 @@ open Ast_helper let exp_apply_no_label ?loc ?attrs a b = Exp.apply ?loc ?attrs a (Ext_list.map (fun x -> "", x) b) -let fun_no_label ?loc ?attrs pat body = - Exp.fun_ ?loc ?attrs "" None pat body +(* let fun_no_label ?loc ?attrs pat body = + Ast_compatible.fun_ ?loc ?attrs pat body *) let arrow_no_label ?loc ?attrs b c = Typ.arrow ?loc ?attrs "" b c diff --git a/jscomp/syntax/ast_comb.mli b/jscomp/syntax/ast_comb.mli index d5da7eb4ad..c611c5ae3f 100644 --- a/jscomp/syntax/ast_comb.mli +++ b/jscomp/syntax/ast_comb.mli @@ -28,10 +28,10 @@ val exp_apply_no_label : ?attrs:Parsetree.attributes -> Parsetree.expression -> Parsetree.expression list -> Parsetree.expression -val fun_no_label : +(* val fun_no_label : ?loc:Location.t -> ?attrs:Parsetree.attributes -> - Parsetree.pattern -> Parsetree.expression -> Parsetree.expression + Parsetree.pattern -> Parsetree.expression -> Parsetree.expression *) val arrow_no_label : ?loc:Location.t -> diff --git a/jscomp/syntax/ast_compatible.ml b/jscomp/syntax/ast_compatible.ml new file mode 100644 index 0000000000..bb781a45a8 --- /dev/null +++ b/jscomp/syntax/ast_compatible.ml @@ -0,0 +1,93 @@ +(* Copyright (C) 2018 Authors of BuckleScript + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * In addition to the permissions granted to you by the LGPL, you may combine + * or link a "work that uses the Library" with a publicly distributed version + * of this file to produce a combined library or application, then distribute + * that combined work under the terms of your choosing, with no requirement + * to comply with the obligations normally placed on you by section 4 of the + * LGPL version 3 (or the corresponding section of a later version of the LGPL + * should you choose to use a later version). + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) + +type loc = Location.t +type attrs = Parsetree.attribute list +open Parsetree +let default_loc = Location.none + +#if OCAML_VERSION =~ ">4.03.0" then + +#else + +let const_exp_string + ?(loc = default_loc) + ?(attrs = []) + ?delimiter + (s : string) : expression = + { + pexp_loc = loc; + pexp_attributes = attrs; + pexp_desc = Pexp_constant(Const_string(s,delimiter)) + } + + +let const_exp_int + ?(loc = default_loc) + ?(attrs = []) + (s : int) : expression = + { + pexp_loc = loc; + pexp_attributes = attrs; + pexp_desc = Pexp_constant(Const_int s) + } + + +let const_exp_int_list_as_array xs = + Ast_helper.Exp.array + (Ext_list.map (fun x -> const_exp_int x ) xs) + +let apply_simple + ?(loc = default_loc) + ?(attrs = []) + fn args : expression = + { pexp_loc = loc; + pexp_attributes = attrs; + pexp_desc = + Pexp_apply( + fn, + (Ext_list.map (fun x -> "",x) args) ) } + +let apply_labels + ?(loc = default_loc) + ?(attrs = []) + fn args : expression = + { pexp_loc = loc; + pexp_attributes = attrs; + pexp_desc = + Pexp_apply( + fn, + args ) } + +let fun_ + ?(loc = default_loc) + ?(attrs = []) + pat + exp = + { + pexp_loc = loc; + pexp_attributes = attrs; + pexp_desc = Pexp_fun("",None, pat, exp) + } +#end \ No newline at end of file diff --git a/jscomp/syntax/ast_compatible.mli b/jscomp/syntax/ast_compatible.mli new file mode 100644 index 0000000000..f8f6386140 --- /dev/null +++ b/jscomp/syntax/ast_compatible.mli @@ -0,0 +1,69 @@ +(* Copyright (C) 2018 Authors of BuckleScript + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * In addition to the permissions granted to you by the LGPL, you may combine + * or link a "work that uses the Library" with a publicly distributed version + * of this file to produce a combined library or application, then distribute + * that combined work under the terms of your choosing, with no requirement + * to comply with the obligations normally placed on you by section 4 of the + * LGPL version 3 (or the corresponding section of a later version of the LGPL + * should you choose to use a later version). + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) + + +type loc = Location.t +type attrs = Parsetree.attribute list +open Parsetree + + +val const_exp_string: + ?loc:Location.t -> + ?attrs:attrs -> + ?delimiter:string -> + string -> + expression + +val const_exp_int: + ?loc:Location.t -> + ?attrs:attrs -> + int -> + expression + +val const_exp_int_list_as_array: + int list -> + expression + +val apply_simple: + ?loc:Location.t -> + ?attrs:attrs -> + expression -> + expression list -> + expression + + +val apply_labels: + ?loc:Location.t -> + ?attrs:attrs -> + expression -> + (string * expression) list -> + (* [(label,e)] [label] is strictly interpreted as label *) + expression + +val fun_ : + ?loc:Location.t -> + ?attrs:attrs -> + pattern -> + expression -> + expression \ No newline at end of file diff --git a/jscomp/syntax/ast_derive_dyn.ml b/jscomp/syntax/ast_derive_dyn.ml index c387543343..65520d099d 100644 --- a/jscomp/syntax/ast_derive_dyn.ml +++ b/jscomp/syntax/ast_derive_dyn.ml @@ -206,7 +206,7 @@ let case_of_ctdcl (ctdcls : Parsetree.constructor_declaration list) = (Exp.apply (js_dyn_variant_to_value ()) [("", Exp.ident {txt = Lident shape ; loc}); - ("", Ast_derive_util.lift_int i); + ("", Ast_compatible.const_exp_int i); ("", exp_of_core_type_exprs core_type_exprs); ] )) ctdcls @@ -220,7 +220,7 @@ let record args = let fun_1 name = - Exp.fun_ "" None ~attrs:bs_attrs + Ast_compatible.fun_ ~attrs:bs_attrs (Pat.var {txt = "x"; loc}) (Exp.apply (Exp.ident name) ["",(Exp.ident {txt = Lident "x"; loc})]) @@ -290,7 +290,7 @@ let init () = [Vb.mk (Pat.var {txt = shape ; loc}) ( Exp.apply (js_dyn_shape_of_variant ()) [ "", (Ast_derive_util.lift_string_list_to_array names); - "", (Ast_derive_util.lift_int_list_to_array arities ) + "", (Ast_compatible.const_exp_int_list_as_array arities ) ])]; Str.value Nonrecursive @@ [Vb.mk (Pat.var {txt = name ^ to_value_ ; loc}) diff --git a/jscomp/syntax/ast_derive_js_mapper.ml b/jscomp/syntax/ast_derive_js_mapper.ml index 84ab3d0764..5eeab1d3b0 100644 --- a/jscomp/syntax/ast_derive_js_mapper.ml +++ b/jscomp/syntax/ast_derive_js_mapper.ml @@ -187,7 +187,7 @@ let init () = let newTypeStr = Str.type_ [newTdcl] in let toJsBody body = Ast_comb.single_non_rec_value patToJs - (Exp.fun_ "" None (Pat.constraint_ (Pat.var pat_param) core_type) + (Ast_compatible.fun_ (Pat.constraint_ (Pat.var pat_param) core_type) body ) in let (+>) a ty = @@ -229,7 +229,7 @@ let init () = ) label_declarations) None in let fromJs = Ast_comb.single_non_rec_value patFromJs - (Exp.fun_ "" None (Pat.var pat_param) + (Ast_compatible.fun_ (Pat.var pat_param) (if createType then (Exp.let_ Nonrecursive [Vb.mk @@ -280,7 +280,7 @@ let init () = ); Ast_comb.single_non_rec_value patFromJs - (Exp.fun_ "" None + (Ast_compatible.fun_ (Pat.var pat_param) (if createType then revSearchAssert @@ -334,7 +334,7 @@ let init () = ; Ast_comb.single_non_rec_value patFromJs - (Exp.fun_ "" None + (Ast_compatible.fun_ (Pat.var pat_param) ( if createType then @@ -370,7 +370,7 @@ let init () = Ast_comb.single_non_rec_value {loc ; txt = fromJs} - (Exp.fun_ "" None + (Ast_compatible.fun_ (Pat.var pat_param) (if createType then (Exp.let_ Nonrecursive diff --git a/jscomp/syntax/ast_derive_projector.ml b/jscomp/syntax/ast_derive_projector.ml index 7b7d867cb8..e05fd06439 100644 --- a/jscomp/syntax/ast_derive_projector.ml +++ b/jscomp/syntax/ast_derive_projector.ml @@ -28,7 +28,7 @@ let init () = fun ({pld_name = {loc; txt = pld_label} as pld_name} : Parsetree.label_declaration) -> let txt = "param" in Ast_comb.single_non_rec_value pld_name - (Exp.fun_ "" None + (Ast_compatible.fun_ (Pat.constraint_ (Pat.var {txt ; loc}) core_type ) (Exp.field (Exp.ident {txt = Lident txt ; loc}) {txt = Longident.Lident pld_label ; loc}) ) @@ -69,7 +69,7 @@ let init () = ) )) core_type in Ext_list.fold_right (fun var b -> - Exp.fun_ "" None (Pat.var {loc ; txt = var}) b + Ast_compatible.fun_ (Pat.var {loc ; txt = var}) b ) vars exp end) diff --git a/jscomp/syntax/ast_derive_util.ml b/jscomp/syntax/ast_derive_util.ml index 877674ee94..800a33e2e3 100644 --- a/jscomp/syntax/ast_derive_util.ml +++ b/jscomp/syntax/ast_derive_util.ml @@ -54,19 +54,20 @@ let new_type_of_type_declaration let lift_string_list_to_array (labels : string list) = Exp.array - (Ext_list.map (fun s -> Exp.constant (Const_string (s, None))) - labels) + (Ext_list.map + (* Exp.constant (Const_string (s, None)) *) + (fun s -> Ast_compatible.const_exp_string s ) + labels) -let lift_int i = Exp.constant (Const_int i) +(* let lift_int i = Exp.constant (Const_int i) let lift_int_list_to_array (labels : int list) = Exp.array (Ext_list.map lift_int labels) - + *) let mk_fun ~loc (typ : Parsetree.core_type) (value : string) body : Parsetree.expression = - Exp.fun_ - "" None + Ast_compatible.fun_ (Pat.constraint_ (Pat.var {txt = value ; loc}) typ) body diff --git a/jscomp/syntax/ast_derive_util.mli b/jscomp/syntax/ast_derive_util.mli index 84dc54d15e..4eaf03396b 100644 --- a/jscomp/syntax/ast_derive_util.mli +++ b/jscomp/syntax/ast_derive_util.mli @@ -34,8 +34,9 @@ val new_type_of_type_declaration : Parsetree.core_type * Parsetree.type_declaration val lift_string_list_to_array : string list -> Parsetree.expression -val lift_int : int -> Parsetree.expression -val lift_int_list_to_array : int list -> Parsetree.expression +(* val lift_int : int -> Parsetree.expression +val lift_int_list_to_array : int list -> Parsetree.expression *) + val mk_fun : loc:Location.t -> Parsetree.core_type -> diff --git a/jscomp/syntax/ast_external_mk.ml b/jscomp/syntax/ast_external_mk.ml index 0073648daa..ee7d1234de 100644 --- a/jscomp/syntax/ast_external_mk.ml +++ b/jscomp/syntax/ast_external_mk.ml @@ -22,7 +22,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) -let local_external loc +let local_external_apply loc ?(pval_attributes=[]) ~pval_prim ~pval_type @@ -45,17 +45,42 @@ let local_external loc }]; pmod_loc = loc; pmod_attributes = []}, - { - pexp_desc = - Pexp_apply - (({pexp_desc = Pexp_ident {txt = Ldot (Lident local_module_name, local_fun_name); + Ast_compatible.apply_simple + ({pexp_desc = Pexp_ident {txt = Ldot (Lident local_module_name, local_fun_name); loc}; pexp_attributes = [] ; - pexp_loc = loc} : Parsetree.expression), - args); - pexp_attributes = []; - pexp_loc = loc - }) + pexp_loc = loc} : Parsetree.expression) args ~loc + ) + +let local_external_obj loc + ?(pval_attributes=[]) + ~pval_prim + ~pval_type + ?(local_module_name = "J") + ?(local_fun_name = "unsafe_expr") + args + : Parsetree.expression_desc = + Pexp_letmodule + ({txt = local_module_name; loc}, + {pmod_desc = + Pmod_structure + [{pstr_desc = + Pstr_primitive + {pval_name = {txt = local_fun_name; loc}; + pval_type ; + pval_loc = loc; + pval_prim ; + pval_attributes }; + pstr_loc = loc; + }]; + pmod_loc = loc; + pmod_attributes = []}, + Ast_compatible.apply_labels + ({pexp_desc = Pexp_ident {txt = Ldot (Lident local_module_name, local_fun_name); + loc}; + pexp_attributes = [] ; + pexp_loc = loc} : Parsetree.expression) args ~loc + ) let local_extern_cont loc ?(pval_attributes=[]) diff --git a/jscomp/syntax/ast_external_mk.mli b/jscomp/syntax/ast_external_mk.mli index d077e71bcb..912fd80026 100644 --- a/jscomp/syntax/ast_external_mk.mli +++ b/jscomp/syntax/ast_external_mk.mli @@ -32,13 +32,28 @@ J.unssafe_expr args ]} *) -val local_external : Location.t -> +val local_external_apply : + Location.t -> ?pval_attributes:Parsetree.attributes -> pval_prim:string list -> pval_type:Parsetree.core_type -> ?local_module_name:string -> ?local_fun_name:string -> - (string * Parsetree.expression) list -> Parsetree.expression_desc + Parsetree.expression list -> + Parsetree.expression_desc + + +val local_external_obj : + Location.t -> + ?pval_attributes:Parsetree.attributes -> + pval_prim:string list -> + pval_type:Parsetree.core_type -> + ?local_module_name:string -> + ?local_fun_name:string -> + (string * Parsetree.expression) list -> (* [ (label, exp )]*) + Parsetree.expression_desc + + val local_extern_cont : Location.t -> diff --git a/jscomp/syntax/ast_lift.ml b/jscomp/syntax/ast_lift.ml index 4299461752..f4c818d1ac 100644 --- a/jscomp/syntax/ast_lift.ml +++ b/jscomp/syntax/ast_lift.ml @@ -22,5 +22,5 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) -let int ?loc ?attrs x = - Ast_helper.Exp.constant ?loc ?attrs (Const_int x) +(* let int ?loc ?attrs x = + Ast_helper.Exp.constant ?loc ?attrs (Const_int x) *) diff --git a/jscomp/syntax/ast_lift.mli b/jscomp/syntax/ast_lift.mli index 1bc1fc6139..5609b491fb 100644 --- a/jscomp/syntax/ast_lift.mli +++ b/jscomp/syntax/ast_lift.mli @@ -22,6 +22,6 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) -val int : +(* val int : ?loc:Location.t -> - ?attrs:Parsetree.attributes -> int -> Parsetree.expression + ?attrs:Parsetree.attributes -> int -> Parsetree.expression *) diff --git a/jscomp/syntax/ast_utf8_string_interp.ml b/jscomp/syntax/ast_utf8_string_interp.ml index 33183c83d4..a2b30fc5f8 100644 --- a/jscomp/syntax/ast_utf8_string_interp.ml +++ b/jscomp/syntax/ast_utf8_string_interp.ml @@ -391,10 +391,10 @@ let concat_exp (a : Parsetree.expression) (b : Parsetree.expression) : Parsetree.expression = let loc = Bs_loc.merge a.pexp_loc b.pexp_loc in - Exp.apply ~loc + Ast_compatible.apply_simple ~loc (Exp.ident { txt =concat_ident; loc}) - ["",a ; - "",b] + [a ; + b] let border = String.length "{j|" @@ -405,19 +405,17 @@ let aux loc (segment : segment) = begin match kind with | String -> let loc = update border start finish loc in - Exp.constant - ~loc - (Const_string (content, escaped)) + Ast_compatible.const_exp_string + content ?delimiter:escaped ~loc | Var (soffset, foffset) -> let loc = { loc with loc_start = update_position (soffset + border) start loc.loc_start ; loc_end = update_position (foffset + border) finish loc.loc_start } in - Exp.apply ~loc + Ast_compatible.apply_simple ~loc (Exp.ident ~loc {loc ; txt = to_string_ident }) [ - "", Exp.ident ~loc {loc ; txt = Lident content} ] end @@ -442,8 +440,8 @@ let transform_interp loc s = let rev_segments = cxt.segments in match rev_segments with | [] -> - Exp.constant ~loc - (Const_string ("", Some Literals.escaped_j_delimiter)) + Ast_compatible.const_exp_string ~loc + "" ~delimiter:Literals.escaped_j_delimiter | [ segment] -> aux loc segment | a::rest -> diff --git a/jscomp/syntax/ast_util.ml b/jscomp/syntax/ast_util.ml index 3a7c6f47c7..38245d6f19 100644 --- a/jscomp/syntax/ast_util.ml +++ b/jscomp/syntax/ast_util.ml @@ -146,8 +146,8 @@ let generic_apply kind loc ["#method_run" ; string_arity], arrow ~loc "" (lift_method_type loc args_type result_type) fn_type in - Ast_external_mk.local_external loc ~pval_prim ~pval_type - (("", fn) :: Ext_list.map (fun x -> "",x) args ) + Ast_external_mk.local_external_apply loc ~pval_prim ~pval_type + ( fn :: args ) let uncurry_fn_apply loc self fn args = @@ -240,7 +240,7 @@ let generic_to_uncurry_exp kind loc (self : Bs_ast_mapper.mapper) pat body let result, rev_extra_args = aux [first_arg] body in let body = - List.fold_left (fun e p -> Ast_comb.fun_no_label ~loc p e ) + List.fold_left (fun e p -> Ast_compatible.fun_ ~loc p e ) result rev_extra_args in let len = List.length rev_extra_args in let arity = @@ -624,7 +624,7 @@ let record_as_js_object ({Asttypes.loc = loc ; txt = x} :: labels, (x, self.expr self e) :: args, i + 1) | Ldot _ | Lapply _ -> Location.raise_errorf ~loc "invalid js label ") label_exprs ([],[],0) in - Ast_external_mk.local_external loc + Ast_external_mk.local_external_obj loc ~pval_prim:(External_process.pval_prim_of_labels labels) ~pval_type:(Ast_core_type.from_labels ~loc arity labels) args @@ -653,7 +653,7 @@ let convertBsErrorFunction loc (self : Bs_ast_mapper.mapper) attrs (cases : Par (Ast_core_type.lift_option_type (Typ.any ~loc ())) in let () = checkCases cases in let cases = self.cases self cases in - Exp.fun_ ~attrs ~loc "" None ( Pat.var ~loc {txt; loc }) + Ast_compatible.fun_ ~attrs ~loc ( Pat.var ~loc {txt; loc }) (Exp.ifthenelse ~loc (Exp.apply ~loc (Exp.ident ~loc {txt = isCamlExceptionOrOpenVariant ; loc}) ["", txt_expr ]) diff --git a/lib/bsb.ml b/lib/bsb.ml index 15d7477734..07890d7096 100644 --- a/lib/bsb.ml +++ b/lib/bsb.ml @@ -13239,63 +13239,6 @@ let root = OCamlRes.Res.([ "\n\ \n\ let () = Js.log \"Hello, BuckleScript\"")]) ; - File ("README.md", - "\n\ - \n\ - # Build\n\ - ```\n\ - npm run build\n\ - ```\n\ - \n\ - # Watch\n\ - \n\ - ```\n\ - npm run watch\n\ - ```\n\ - \n\ - \n\ - # Editor\n\ - If you use `vscode`, Press `Windows + Shift + B` it will build automatically") ; - File ("package.json", - "{\n\ - \ \"name\": \"${bsb:name}\",\n\ - \ \"version\": \"${bsb:proj-version}\",\n\ - \ \"scripts\": {\n\ - \ \"clean\": \"bsb -clean-world\",\n\ - \ \"build\": \"bsb -make-world\",\n\ - \ \"watch\": \"bsb -make-world -w\"\n\ - \ },\n\ - \ \"keywords\": [\n\ - \ \"BuckleScript\"\n\ - \ ],\n\ - \ \"author\": \"\",\n\ - \ \"license\": \"MIT\",\n\ - \ \"devDependencies\": {\n\ - \ \"bs-platform\": \"^${bsb:bs-version}\"\n\ - \ }\n\ - }") ; - File ("bsconfig.json", - "{\n\ - \ \"name\": \"${bsb:name}\",\n\ - \ \"version\": \"${bsb:proj-version}\",\n\ - \ \"sources\": {\n\ - \ \"dir\" : \"src\",\n\ - \ \"subdirs\" : true\n\ - \ },\n\ - \ \"package-specs\": {\n\ - \ \"module\": \"commonjs\",\n\ - \ \"in-source\": true\n\ - \ },\n\ - \ \"suffix\": \".bs.js\",\n\ - \ \"bs-dependencies\": [\n\ - \ // add your bs-dependencies here \n\ - \ ],\n\ - \ \"warnings\": {\n\ - \ \"error\" : \"+101\"\n\ - \ },\n\ - \ \"refmt\": 3\n\ - }\n\ - ") ; Dir (".vscode", [ File ("tasks.json", "{\n\ @@ -13336,6 +13279,46 @@ let root = OCamlRes.Res.([ \ ]\n\ \ }\n\ }")]) ; + File ("bsconfig.json", + "{\n\ + \ \"name\": \"${bsb:name}\",\n\ + \ \"version\": \"${bsb:proj-version}\",\n\ + \ \"sources\": {\n\ + \ \"dir\" : \"src\",\n\ + \ \"subdirs\" : true\n\ + \ },\n\ + \ \"package-specs\": {\n\ + \ \"module\": \"commonjs\",\n\ + \ \"in-source\": true\n\ + \ },\n\ + \ \"suffix\": \".bs.js\",\n\ + \ \"bs-dependencies\": [\n\ + \ // add your bs-dependencies here \n\ + \ ],\n\ + \ \"warnings\": {\n\ + \ \"error\" : \"+101\"\n\ + \ },\n\ + \ \"refmt\": 3\n\ + }\n\ + ") ; + File ("package.json", + "{\n\ + \ \"name\": \"${bsb:name}\",\n\ + \ \"version\": \"${bsb:proj-version}\",\n\ + \ \"scripts\": {\n\ + \ \"clean\": \"bsb -clean-world\",\n\ + \ \"build\": \"bsb -make-world\",\n\ + \ \"watch\": \"bsb -make-world -w\"\n\ + \ },\n\ + \ \"keywords\": [\n\ + \ \"BuckleScript\"\n\ + \ ],\n\ + \ \"author\": \"\",\n\ + \ \"license\": \"MIT\",\n\ + \ \"devDependencies\": {\n\ + \ \"bs-platform\": \"^${bsb:bs-version}\"\n\ + \ }\n\ + }") ; File (".gitignore", "*.exe\n\ *.obj\n\ @@ -13362,76 +13345,29 @@ let root = OCamlRes.Res.([ *.mliast\n\ .vscode\n\ .merlin\n\ - .bsb.lock")]) ; - Dir ("basic-reason", [ - Dir ("src", [ - File ("Demo.re", - "Js.log(\"Hello, BuckleScript and Reason!\");\n\ - ")]) ; + .bsb.lock") ; File ("README.md", - "# Basic Reason Template\n\ - \n\ - Hello! This project allows you to quickly get started with Reason and BuckleScript. If you wanted a more sophisticated version, try the `react` template (`bsb -theme react -init .`).\n\ + "\n\ \n\ # Build\n\ ```\n\ npm run build\n\ ```\n\ \n\ - # Build + Watch\n\ + # Watch\n\ \n\ ```\n\ - npm run start\n\ + npm run watch\n\ ```\n\ \n\ \n\ # Editor\n\ - If you use `vscode`, Press `Windows + Shift + B` it will build automatically\n\ - ") ; - File ("package.json", - "{\n\ - \ \"name\": \"${bsb:name}\",\n\ - \ \"version\": \"${bsb:proj-version}\",\n\ - \ \"scripts\": {\n\ - \ \"build\": \"bsb -make-world\",\n\ - \ \"start\": \"bsb -make-world -w\",\n\ - \ \"clean\": \"bsb -clean-world\"\n\ - \ },\n\ - \ \"keywords\": [\n\ - \ \"BuckleScript\"\n\ - \ ],\n\ - \ \"author\": \"\",\n\ - \ \"license\": \"MIT\",\n\ - \ \"devDependencies\": {\n\ - \ \"bs-platform\": \"^${bsb:bs-version}\"\n\ - \ }\n\ - }\n\ - ") ; - File ("bsconfig.json", - "// This is the configuration file used by BuckleScript's build system bsb. Its documentation lives here: http://bucklescript.github.io/bucklescript/docson/#build-schema.json\n\ - // BuckleScript comes with its own parser for bsconfig.json, which is normal JSON, with the extra support of comments and trailing commas.\n\ - {\n\ - \ \"name\": \"${bsb:name}\",\n\ - \ \"version\": \"${bsb:proj-version}\",\n\ - \ \"sources\": {\n\ - \ \"dir\" : \"src\",\n\ - \ \"subdirs\" : true\n\ - \ },\n\ - \ \"package-specs\": {\n\ - \ \"module\": \"commonjs\",\n\ - \ \"in-source\": true\n\ - \ },\n\ - \ \"suffix\": \".bs.js\",\n\ - \ \"bs-dependencies\": [\n\ - \ // add your dependencies here. You'd usually install them normally through `npm install my-dependency`. If my-dependency has a bsconfig.json too, then everything will work seamlessly.\n\ - \ ],\n\ - \ \"warnings\": {\n\ - \ \"error\" : \"+101\"\n\ - \ },\n\ - \ \"namespace\": true,\n\ - \ \"refmt\": 3\n\ - }\n\ - ") ; + If you use `vscode`, Press `Windows + Shift + B` it will build automatically")]) ; + Dir ("basic-reason", [ + Dir ("src", [ + File ("Demo.re", + "Js.log(\"Hello, BuckleScript and Reason!\");\n\ + ")]) ; Dir (".vscode", [ File ("tasks.json", "{\n\ @@ -13477,6 +13413,50 @@ let root = OCamlRes.Res.([ \ }\n\ \ }\n\ ")]) ; + File ("bsconfig.json", + "// This is the configuration file used by BuckleScript's build system bsb. Its documentation lives here: http://bucklescript.github.io/bucklescript/docson/#build-schema.json\n\ + // BuckleScript comes with its own parser for bsconfig.json, which is normal JSON, with the extra support of comments and trailing commas.\n\ + {\n\ + \ \"name\": \"${bsb:name}\",\n\ + \ \"version\": \"${bsb:proj-version}\",\n\ + \ \"sources\": {\n\ + \ \"dir\" : \"src\",\n\ + \ \"subdirs\" : true\n\ + \ },\n\ + \ \"package-specs\": {\n\ + \ \"module\": \"commonjs\",\n\ + \ \"in-source\": true\n\ + \ },\n\ + \ \"suffix\": \".bs.js\",\n\ + \ \"bs-dependencies\": [\n\ + \ // add your dependencies here. You'd usually install them normally through `npm install my-dependency`. If my-dependency has a bsconfig.json too, then everything will work seamlessly.\n\ + \ ],\n\ + \ \"warnings\": {\n\ + \ \"error\" : \"+101\"\n\ + \ },\n\ + \ \"namespace\": true,\n\ + \ \"refmt\": 3\n\ + }\n\ + ") ; + File ("package.json", + "{\n\ + \ \"name\": \"${bsb:name}\",\n\ + \ \"version\": \"${bsb:proj-version}\",\n\ + \ \"scripts\": {\n\ + \ \"build\": \"bsb -make-world\",\n\ + \ \"start\": \"bsb -make-world -w\",\n\ + \ \"clean\": \"bsb -clean-world\"\n\ + \ },\n\ + \ \"keywords\": [\n\ + \ \"BuckleScript\"\n\ + \ ],\n\ + \ \"author\": \"\",\n\ + \ \"license\": \"MIT\",\n\ + \ \"devDependencies\": {\n\ + \ \"bs-platform\": \"^${bsb:bs-version}\"\n\ + \ }\n\ + }\n\ + ") ; File (".gitignore", ".DS_Store\n\ .merlin\n\ @@ -13484,6 +13464,26 @@ let root = OCamlRes.Res.([ npm-debug.log\n\ /lib/bs/\n\ /node_modules/\n\ + ") ; + File ("README.md", + "# Basic Reason Template\n\ + \n\ + Hello! This project allows you to quickly get started with Reason and BuckleScript. If you wanted a more sophisticated version, try the `react` template (`bsb -theme react -init .`).\n\ + \n\ + # Build\n\ + ```\n\ + npm run build\n\ + ```\n\ + \n\ + # Build + Watch\n\ + \n\ + ```\n\ + npm run start\n\ + ```\n\ + \n\ + \n\ + # Editor\n\ + If you use `vscode`, Press `Windows + Shift + B` it will build automatically\n\ ")]) ; Dir ("generator", [ Dir ("src", [ @@ -13502,52 +13502,17 @@ let root = OCamlRes.Res.([ "\n\ \n\ let () = Js.log \"Hello, BuckleScript\"")]) ; - File ("README.md", - "\n\ - \n\ - # Build\n\ - ```\n\ - npm run build\n\ - ```\n\ - \n\ - # Watch\n\ - \n\ - ```\n\ - npm run watch\n\ - ```\n\ - \n\ - \n\ - # Editor\n\ - If you use `vscode`, Press `Windows + Shift + B` it will build automatically") ; - File ("package.json", + File ("bsconfig.json", "{\n\ \ \"name\": \"${bsb:name}\",\n\ \ \"version\": \"${bsb:proj-version}\",\n\ - \ \"scripts\": {\n\ - \ \"clean\": \"bsb -clean-world\",\n\ - \ \"build\": \"bsb -make-world\",\n\ - \ \"watch\": \"bsb -make-world -w\"\n\ - \ },\n\ - \ \"keywords\": [\n\ - \ \"BuckleScript\"\n\ - \ ],\n\ - \ \"author\": \"\",\n\ - \ \"license\": \"MIT\",\n\ - \ \"devDependencies\": {\n\ - \ \"bs-platform\": \"^${bsb:bs-version}\"\n\ - \ }\n\ - }") ; - File ("bsconfig.json", - "{\n\ - \ \"name\": \"${bsb:name}\",\n\ - \ \"version\": \"${bsb:proj-version}\",\n\ - \ \"sources\": {\n\ - \ \"dir\": \"src\",\n\ - \ \"generators\": [{\n\ - \ \"name\": \"cpp\",\n\ - \ \"edge\": [\"test.ml\", \":\", \"test.cpp.ml\"]\n\ - \ }],\n\ - \ \"subdirs\": true \n\ + \ \"sources\": {\n\ + \ \"dir\": \"src\",\n\ + \ \"generators\": [{\n\ + \ \"name\": \"cpp\",\n\ + \ \"edge\": [\"test.ml\", \":\", \"test.cpp.ml\"]\n\ + \ }],\n\ + \ \"subdirs\": true \n\ \ },\n\ \ \"generators\": [{\n\ \ \"name\" : \"cpp\",\n\ @@ -13556,6 +13521,24 @@ let root = OCamlRes.Res.([ \ \"bs-dependencies\" : [\n\ \ ]\n\ }") ; + File ("package.json", + "{\n\ + \ \"name\": \"${bsb:name}\",\n\ + \ \"version\": \"${bsb:proj-version}\",\n\ + \ \"scripts\": {\n\ + \ \"clean\": \"bsb -clean-world\",\n\ + \ \"build\": \"bsb -make-world\",\n\ + \ \"watch\": \"bsb -make-world -w\"\n\ + \ },\n\ + \ \"keywords\": [\n\ + \ \"BuckleScript\"\n\ + \ ],\n\ + \ \"author\": \"\",\n\ + \ \"license\": \"MIT\",\n\ + \ \"devDependencies\": {\n\ + \ \"bs-platform\": \"^${bsb:bs-version}\"\n\ + \ }\n\ + }") ; File (".gitignore", "*.exe\n\ *.obj\n\ @@ -13582,12 +13565,34 @@ let root = OCamlRes.Res.([ *.mliast\n\ .vscode\n\ .merlin\n\ - .bsb.lock")]) ; - Dir ("minimal", [ - Dir ("src", [ File ("main.ml", "")]) ; + .bsb.lock") ; File ("README.md", "\n\ - \ # ${bsb:name}") ; + \n\ + # Build\n\ + ```\n\ + npm run build\n\ + ```\n\ + \n\ + # Watch\n\ + \n\ + ```\n\ + npm run watch\n\ + ```\n\ + \n\ + \n\ + # Editor\n\ + If you use `vscode`, Press `Windows + Shift + B` it will build automatically")]) ; + Dir ("minimal", [ + Dir ("src", [ File ("main.ml", "")]) ; + File ("bsconfig.json", + "{\n\ + \ \"name\": \"${bsb:name}\",\n\ + \ \"sources\": {\n\ + \ \"dir\": \"src\",\n\ + \ \"subdirs\": true\n\ + \ }\n\ + }") ; File ("package.json", "{\n\ \ \"name\": \"${bsb:name}\",\n\ @@ -13606,45 +13611,38 @@ let root = OCamlRes.Res.([ \ \"bs-platform\": \"^${bsb:bs-version}\"\n\ \ }\n\ }") ; - File ("bsconfig.json", - "{\n\ - \ \"name\": \"${bsb:name}\",\n\ - \ \"sources\": {\n\ - \ \"dir\": \"src\",\n\ - \ \"subdirs\": true\n\ - \ }\n\ - }") ; File (".gitignore", ".DS_Store\n\ .merlin\n\ .bsb.lock\n\ npm-debug.log\n\ /lib/bs/\n\ - /node_modules/")]) ; + /node_modules/") ; + File ("README.md", + "\n\ + \ # ${bsb:name}")]) ; Dir ("node", [ Dir ("src", [ File ("demo.ml", "\n\ \n\ let () = Js.log \"Hello, BuckleScript\"")]) ; - File ("README.md", - "\n\ - \n\ - # Build\n\ - ```\n\ - npm run build\n\ - ```\n\ - \n\ - # Watch\n\ - \n\ - ```\n\ - npm run watch\n\ - ```\n\ - \n\ - \n\ - # Editor\n\ - If you use `vscode`, Press `Windows + Shift + B` it will build automatically\n\ - ") ; + File ("bsconfig.json", + "{\n\ + \ \"name\": \"${bsb:name}\",\n\ + \ \"version\": \"${bsb:proj-version}\",\n\ + \ \"sources\": {\n\ + \ \"dir\": \"src\",\n\ + \ \"subdirs\" : true\n\ + \ },\n\ + \ \"package-specs\": {\n\ + \ \"module\": \"commonjs\",\n\ + \ \"in-source\": true\n\ + \ },\n\ + \ \"suffix\": \".bs.js\",\n\ + \ \"bs-dependencies\": [\n\ + \ ]\n\ + }") ; File ("package.json", "{\n\ \ \"name\": \"${bsb:name}\",\n\ @@ -13663,22 +13661,6 @@ let root = OCamlRes.Res.([ \ \"bs-platform\": \"^${bsb:bs-version}\"\n\ \ }\n\ }") ; - File ("bsconfig.json", - "{\n\ - \ \"name\": \"${bsb:name}\",\n\ - \ \"version\": \"${bsb:proj-version}\",\n\ - \ \"sources\": {\n\ - \ \"dir\": \"src\",\n\ - \ \"subdirs\" : true\n\ - \ },\n\ - \ \"package-specs\": {\n\ - \ \"module\": \"commonjs\",\n\ - \ \"in-source\": true\n\ - \ },\n\ - \ \"suffix\": \".bs.js\",\n\ - \ \"bs-dependencies\": [\n\ - \ ]\n\ - }") ; File (".gitignore", "*.exe\n\ *.obj\n\ @@ -13705,46 +13687,56 @@ let root = OCamlRes.Res.([ *.mliast\n\ .vscode\n\ .merlin\n\ - .bsb.lock")]) ; - Dir ("react", [ - File ("webpack.config.js", - "const path = require('path');\n\ - const outputDir = path.join(__dirname, \"build/\");\n\ + .bsb.lock") ; + File ("README.md", + "\n\ \n\ - const isProd = process.env.NODE_ENV === 'production';\n\ + # Build\n\ + ```\n\ + npm run build\n\ + ```\n\ \n\ - module.exports = {\n\ - \ entry: './src/Index.bs.js',\n\ - \ mode: isProd ? 'production' : 'development',\n\ - \ output: {\n\ - \ path: outputDir,\n\ - \ publicPath: outputDir,\n\ - \ filename: 'Index.js',\n\ - \ },\n\ - };\n\ - ") ; + # Watch\n\ + \n\ + ```\n\ + npm run watch\n\ + ```\n\ + \n\ + \n\ + # Editor\n\ + If you use `vscode`, Press `Windows + Shift + B` it will build automatically\n\ + ")]) ; + Dir ("react", [ Dir ("src", [ File ("Index.re", "ReactDOMRe.renderToElementWithId(, \"index1\");\n\ \n\ ReactDOMRe.renderToElementWithId(, \"index2\");\n\ ") ; - File ("index.html", - "\n\ - \n\ - \n\ - \ \n\ - \ ReasonReact Examples\n\ - \n\ - \n\ - \ Component 1:\n\ - \
\n\ - \ Component 2:\n\ - \
\n\ + File ("Component1.re", + "/* This is the basic component. */\n\ + let component = ReasonReact.statelessComponent(\"Page\");\n\ \n\ - \ \n\ - \n\ - \n\ + /* Your familiar handleClick from ReactJS. This mandatorily takes the payload,\n\ + \ then the `self` record, which contains state (none here), `handle`, `reduce`\n\ + \ and other utilities */\n\ + let handleClick = (_event, _self) => Js.log(\"clicked!\");\n\ + \n\ + /* `make` is the function that mandatorily takes `children` (if you want to use\n\ + \ `JSX). `message` is a named argument, which simulates ReactJS props. Usage:\n\ + \n\ + \ ``\n\ + \n\ + \ Which desugars to\n\ + \n\ + \ `ReasonReact.element(Page.make(~message=\"hello\", [||]))` */\n\ + let make = (~message, _children) => {\n\ + \ ...component,\n\ + \ render: self =>\n\ + \
\n\ + \ (ReasonReact.string(message))\n\ + \
,\n\ + };\n\ ") ; File ("Component2.re", "/* State declaration */\n\ @@ -13792,57 +13784,48 @@ let root = OCamlRes.Res.([ \ },\n\ };\n\ ") ; - File ("Component1.re", - "/* This is the basic component. */\n\ - let component = ReasonReact.statelessComponent(\"Page\");\n\ - \n\ - /* Your familiar handleClick from ReactJS. This mandatorily takes the payload,\n\ - \ then the `self` record, which contains state (none here), `handle`, `reduce`\n\ - \ and other utilities */\n\ - let handleClick = (_event, _self) => Js.log(\"clicked!\");\n\ - \n\ - /* `make` is the function that mandatorily takes `children` (if you want to use\n\ - \ `JSX). `message` is a named argument, which simulates ReactJS props. Usage:\n\ - \n\ - \ ``\n\ - \n\ - \ Which desugars to\n\ + File ("index.html", + "\n\ + \n\ + \n\ + \ \n\ + \ ReasonReact Examples\n\ + \n\ + \n\ + \ Component 1:\n\ + \
\n\ + \ Component 2:\n\ + \
\n\ \n\ - \ `ReasonReact.element(Page.make(~message=\"hello\", [||]))` */\n\ - let make = (~message, _children) => {\n\ - \ ...component,\n\ - \ render: self =>\n\ - \
\n\ - \ (ReasonReact.string(message))\n\ - \
,\n\ - };\n\ + \ \n\ + \n\ + \n\ ")]) ; - File ("README.md", - "# ${bsb:name}\n\ - \n\ - ## Run Project\n\ - \n\ - ```sh\n\ - npm install\n\ - npm start\n\ - # in another tab\n\ - npm run webpack\n\ - ```\n\ - \n\ - After you see the webpack compilation succeed (the `npm run webpack` step), open up `src/index.html` (**no server needed!**). Then modify whichever `.re` file in `src` and refresh the page to see the changes.\n\ - \n\ - **For more elaborate ReasonReact examples**, please see https://github.com/reasonml-community/reason-react-example\n\ - \n\ - ## Build for Production\n\ - \n\ - ```sh\n\ - npm run build\n\ - npm run webpack:production\n\ - ```\n\ - \n\ - This will replace the development artifact `build/Index.js` for an optimized version.\n\ - \n\ - **To enable dead code elimination**, change `bsconfig.json`'s `package-specs` `module` from `\"commonjs\"` to `\"es6\"`. Then re-run the above 2 commands. This will allow Webpack to remove unused code.\n\ + File ("bsconfig.json", + "/* This is the BuckleScript configuration file. Note that this is a comment;\n\ + \ BuckleScript comes with a JSON parser that supports comments and trailing\n\ + \ comma. If this screws with your editor highlighting, please tell us by filing\n\ + \ an issue! */\n\ + {\n\ + \ \"name\": \"react-template\",\n\ + \ \"reason\": {\n\ + \ \"react-jsx\": 2\n\ + \ },\n\ + \ \"sources\": {\n\ + \ \"dir\" : \"src\",\n\ + \ \"subdirs\" : true\n\ + \ },\n\ + \ \"package-specs\": [{\n\ + \ \"module\": \"commonjs\",\n\ + \ \"in-source\": true\n\ + \ }],\n\ + \ \"suffix\": \".bs.js\",\n\ + \ \"namespace\": true,\n\ + \ \"bs-dependencies\": [\n\ + \ \"reason-react\"\n\ + \ ],\n\ + \ \"refmt\": 3\n\ + }\n\ ") ; File ("package.json", "{\n\ @@ -13873,74 +13856,88 @@ let root = OCamlRes.Res.([ \ }\n\ }\n\ ") ; - File ("bsconfig.json", - "/* This is the BuckleScript configuration file. Note that this is a comment;\n\ - \ BuckleScript comes with a JSON parser that supports comments and trailing\n\ - \ comma. If this screws with your editor highlighting, please tell us by filing\n\ - \ an issue! */\n\ - {\n\ - \ \"name\": \"react-template\",\n\ - \ \"reason\": {\n\ - \ \"react-jsx\": 2\n\ - \ },\n\ - \ \"sources\": {\n\ - \ \"dir\" : \"src\",\n\ - \ \"subdirs\" : true\n\ - \ },\n\ - \ \"package-specs\": [{\n\ - \ \"module\": \"commonjs\",\n\ - \ \"in-source\": true\n\ - \ }],\n\ - \ \"suffix\": \".bs.js\",\n\ - \ \"namespace\": true,\n\ - \ \"bs-dependencies\": [\n\ - \ \"reason-react\"\n\ - \ ],\n\ - \ \"refmt\": 3\n\ - }\n\ - ") ; File (".gitignore", ".DS_Store\n\ .merlin\n\ .bsb.lock\n\ npm-debug.log\n\ /lib/bs/\n\ - /node_modules/")]) ; - Dir ("react-lite", [ - File ("watcher.js", - "\n\ + /node_modules/") ; + File ("README.md", + "# ${bsb:name}\n\ \n\ - var wsReloader;\n\ - var LAST_SUCCESS_BUILD_STAMP = (localStorage.getItem('LAST_SUCCESS_BUILD_STAMP') || 0)\n\ - var WS_PORT = 9999; // configurable\n\ + ## Run Project\n\ \n\ - function setUpWebScoket() {\n\ - \ if (wsReloader == null || wsReloader.readyState !== 1) {\n\ - \ try {\n\ - \ wsReloader = new WebSocket(`ws://localhost:${WS_PORT}`)\n\ - \ wsReloader.onmessage = (msg) => {\n\ - \ var newData = JSON.parse(msg.data).LAST_SUCCESS_BUILD_STAMP\n\ - \ if (newData > LAST_SUCCESS_BUILD_STAMP) {\n\ - \ LAST_SUCCESS_BUILD_STAMP = newData\n\ - \ localStorage.setItem('LAST_SUCCESS_BUILD_STAMP', LAST_SUCCESS_BUILD_STAMP)\n\ - \ location.reload(true)\n\ - \ }\n\ + ```sh\n\ + npm install\n\ + npm start\n\ + # in another tab\n\ + npm run webpack\n\ + ```\n\ \n\ - \ }\n\ - \ } catch (exn) {\n\ - \ console.error(\"web socket failed connect\")\n\ - \ }\n\ - \ }\n\ - };\n\ + After you see the webpack compilation succeed (the `npm run webpack` step), open up `src/index.html` (**no server needed!**). Then modify whichever `.re` file in `src` and refresh the page to see the changes.\n\ \n\ - setUpWebScoket();\n\ - setInterval(setUpWebScoket, 2000);") ; + **For more elaborate ReasonReact examples**, please see https://github.com/reasonml-community/reason-react-example\n\ + \n\ + ## Build for Production\n\ + \n\ + ```sh\n\ + npm run build\n\ + npm run webpack:production\n\ + ```\n\ + \n\ + This will replace the development artifact `build/Index.js` for an optimized version.\n\ + \n\ + **To enable dead code elimination**, change `bsconfig.json`'s `package-specs` `module` from `\"commonjs\"` to `\"es6\"`. Then re-run the above 2 commands. This will allow Webpack to remove unused code.\n\ + ") ; + File ("webpack.config.js", + "const path = require('path');\n\ + const outputDir = path.join(__dirname, \"build/\");\n\ + \n\ + const isProd = process.env.NODE_ENV === 'production';\n\ + \n\ + module.exports = {\n\ + \ entry: './src/Index.bs.js',\n\ + \ mode: isProd ? 'production' : 'development',\n\ + \ output: {\n\ + \ path: outputDir,\n\ + \ publicPath: outputDir,\n\ + \ filename: 'Index.js',\n\ + \ },\n\ + };\n\ + ")]) ; + Dir ("react-lite", [ Dir ("src", [ File ("Index.re", "ReactDOMRe.renderToElementWithId(, \"index1\");\n\ \n\ ReactDOMRe.renderToElementWithId(, \"index2\");\n\ ") ; + File ("Component1.re", + "/* This is the basic component. */\n\ + let component = ReasonReact.statelessComponent(\"Page\");\n\ + \n\ + /* Your familiar handleClick from ReactJS. This mandatorily takes the payload,\n\ + \ then the `self` record, which contains state (none here), `handle`, `reduce`\n\ + \ and other utilities */\n\ + let handleClick = (_event, _self) => Js.log(\"clicked!\");\n\ + \n\ + /* `make` is the function that mandatorily takes `children` (if you want to use\n\ + \ `JSX). `message` is a named argument, which simulates ReactJS props. Usage:\n\ + \n\ + \ ``\n\ + \n\ + \ Which desugars to\n\ + \n\ + \ `ReasonReact.element(Page.make(~message=\"hello\", [||]))` */\n\ + let make = (~message, _children) => {\n\ + \ ...component,\n\ + \ render: self =>\n\ + \
\n\ + \ (ReasonReact.string(message))\n\ + \
,\n\ + };\n\ + ") ; File ("Component2.re", "/* State declaration */\n\ type state = {\n\ @@ -13981,80 +13978,12 @@ let root = OCamlRes.Res.([ \ \n\ \ \n\ - \ (self.state.show ? ReasonReact.string(greeting) : ReasonReact.null)\n\ - \ ;\n\ - \ },\n\ - };\n\ - ") ; - File ("Component1.re", - "/* This is the basic component. */\n\ - let component = ReasonReact.statelessComponent(\"Page\");\n\ - \n\ - /* Your familiar handleClick from ReactJS. This mandatorily takes the payload,\n\ - \ then the `self` record, which contains state (none here), `handle`, `reduce`\n\ - \ and other utilities */\n\ - let handleClick = (_event, _self) => Js.log(\"clicked!\");\n\ - \n\ - /* `make` is the function that mandatorily takes `children` (if you want to use\n\ - \ `JSX). `message` is a named argument, which simulates ReactJS props. Usage:\n\ - \n\ - \ ``\n\ - \n\ - \ Which desugars to\n\ - \n\ - \ `ReasonReact.element(Page.make(~message=\"hello\", [||]))` */\n\ - let make = (~message, _children) => {\n\ - \ ...component,\n\ - \ render: self =>\n\ - \
\n\ - \ (ReasonReact.string(message))\n\ - \
,\n\ - };\n\ - ")]) ; - File ("README.md", - "# react\n\ - \n\ - ## Run Project\n\ - \n\ - ```sh\n\ - npm install\n\ - npm start\n\ - ```\n\ - \n\ - Suppose you have a http-server running (try `npm i -g http-server`)\n\ - \n\ - \n\ - Then modify whichever `.re` file in `src` and refresh the page to see the changes.\n\ - \n\ - **For more elaborate ReasonReact examples**, please see https://github.com/reasonml-community/reason-react-example\n\ - \n\ - ") ; - File ("package.json", - "{\n\ - \ \"name\": \"${bsb:name}\",\n\ - \ \"version\": \"${bsb:proj-version}\",\n\ - \ \"scripts\": {\n\ - \ \"build\": \"bsb -make-world\",\n\ - \ \"start\": \"bsb -make-world -w -ws _ \",\n\ - \ \"clean\": \"bsb -clean-world\",\n\ - \ \"test\": \"echo \\\"Error: no test specified\\\" && exit 1\"\n\ - \ },\n\ - \ \"keywords\": [\n\ - \ \"BuckleScript\"\n\ - \ ],\n\ - \ \"author\": \"\",\n\ - \ \"license\": \"MIT\",\n\ - \ \"dependencies\": {\n\ - \ \"react\": \"^16.2.0\",\n\ - \ \"react-dom\": \"^16.2.0\",\n\ - \ \"reason-react\": \">=0.4.0\"\n\ - \ },\n\ - \ \"devDependencies\": {\n\ - \ \"bs-platform\": \"^${bsb:bs-version}\"\n\ - \ }\n\ - }\n\ - ") ; + \ \n\ + \ (self.state.show ? ReasonReact.string(greeting) : ReasonReact.null)\n\ + \ ;\n\ + \ },\n\ + };\n\ + ")]) ; File ("loader.js", "/* Copyright (C) 2018 Authors of BuckleScript\n\ \ * \n\ @@ -14499,24 +14428,6 @@ let root = OCamlRes.Res.([ \ BSload(main.dataset.main)\n\ }\n\ ") ; - File ("index.html", - "\n\ - \n\ - \n\ - \ \n\ - \ ReasonReact Examples\n\ - \n\ - \n\ - \ Component 1:\n\ - \
\n\ - \ Component 2:\n\ - \
\n\ - \n\ - \ \n\ - \ \n\ - \n\ - \n\ - ") ; File ("bsconfig.json", "{\n\ \ \"name\": \"react-lite\",\n\ @@ -14539,14 +14450,6 @@ let root = OCamlRes.Res.([ \ \"refmt\": 3\n\ }\n\ ") ; - File (".gitignore", - ".DS_Store\n\ - .merlin\n\ - .bsb.lock\n\ - npm-debug.log\n\ - /lib/bs/\n\ - /node_modules/")]) ; - Dir ("tea", [ File ("watcher.js", "\n\ \n\ @@ -14575,6 +14478,75 @@ let root = OCamlRes.Res.([ \n\ setUpWebScoket();\n\ setInterval(setUpWebScoket, 2000);") ; + File ("package.json", + "{\n\ + \ \"name\": \"${bsb:name}\",\n\ + \ \"version\": \"${bsb:proj-version}\",\n\ + \ \"scripts\": {\n\ + \ \"build\": \"bsb -make-world\",\n\ + \ \"start\": \"bsb -make-world -w -ws _ \",\n\ + \ \"clean\": \"bsb -clean-world\",\n\ + \ \"test\": \"echo \\\"Error: no test specified\\\" && exit 1\"\n\ + \ },\n\ + \ \"keywords\": [\n\ + \ \"BuckleScript\"\n\ + \ ],\n\ + \ \"author\": \"\",\n\ + \ \"license\": \"MIT\",\n\ + \ \"dependencies\": {\n\ + \ \"react\": \"^16.2.0\",\n\ + \ \"react-dom\": \"^16.2.0\",\n\ + \ \"reason-react\": \">=0.4.0\"\n\ + \ },\n\ + \ \"devDependencies\": {\n\ + \ \"bs-platform\": \"^${bsb:bs-version}\"\n\ + \ }\n\ + }\n\ + ") ; + File (".gitignore", + ".DS_Store\n\ + .merlin\n\ + .bsb.lock\n\ + npm-debug.log\n\ + /lib/bs/\n\ + /node_modules/") ; + File ("README.md", + "# react\n\ + \n\ + ## Run Project\n\ + \n\ + ```sh\n\ + npm install\n\ + npm start\n\ + ```\n\ + \n\ + Suppose you have a http-server running (try `npm i -g http-server`)\n\ + \n\ + \n\ + Then modify whichever `.re` file in `src` and refresh the page to see the changes.\n\ + \n\ + **For more elaborate ReasonReact examples**, please see https://github.com/reasonml-community/reason-react-example\n\ + \n\ + ") ; + File ("index.html", + "\n\ + \n\ + \n\ + \ \n\ + \ ReasonReact Examples\n\ + \n\ + \n\ + \ Component 1:\n\ + \
\n\ + \ Component 2:\n\ + \
\n\ + \n\ + \ \n\ + \ \n\ + \n\ + \n\ + ")]) ; + Dir ("tea", [ Dir ("src", [ File ("main.ml", "\n\ @@ -14649,50 +14621,6 @@ let root = OCamlRes.Res.([ \ update;\n\ \ view;\n\ \ }")]) ; - File ("README.md", - "\n\ - \n\ - # Build\n\ - ```\n\ - npm run build\n\ - ```\n\ - \n\ - # Watch\n\ - \n\ - ```\n\ - npm run watch\n\ - ```\n\ - \n\ - create a http-server\n\ - \n\ - ```\n\ - npm install -g http-server\n\ - ```\n\ - \n\ - Edit the file and see the changes automatically reloaded in the browser\n\ - ") ; - File ("package.json", - "{\n\ - \ \"name\": \"${bsb:name}\",\n\ - \ \"version\": \"${bsb:proj-version}\",\n\ - \ \"scripts\": {\n\ - \ \"clean\": \"bsb -clean-world\",\n\ - \ \"build\": \"bsb -make-world\",\n\ - \ \"watch\": \"bsb -make-world -w -ws _\"\n\ - \ },\n\ - \ \"keywords\": [\n\ - \ \"BuckleScript\"\n\ - \ ],\n\ - \ \"author\": \"\",\n\ - \ \"license\": \"MIT\",\n\ - \ \"devDependencies\": {\n\ - \ \"bs-platform\": \"^${bsb:bs-version}\"\n\ - \ },\n\ - \ \"dependencies\": {\n\ - \ \"bucklescript-tea\": \"^0.7.4\"\n\ - \ }\n\ - }\n\ - ") ; File ("loader.js", "/* Copyright (C) 2018 Authors of BuckleScript\n\ \ * \n\ @@ -15137,27 +15065,6 @@ let root = OCamlRes.Res.([ \ BSload(main.dataset.main)\n\ }\n\ ") ; - File ("index.html", - "\n\ - \n\ - \ \n\ - \ \n\ - \ \n\ - \ \n\ - \ \n\ - \ \n\ - \ Bucklescript TEA Starter Kit\n\ - \ \n\ - \ \n\ - \n\ - \n\ - \ \n\ - \
\n\ - \ \n\ - \ \n\ - \ \n\ - \ \n\ - ") ; File ("bsconfig.json", "{\n\ \ \"name\": \"tea\",\n\ @@ -15178,7 +15085,100 @@ let root = OCamlRes.Res.([ \ \"error\" : \"+101\"\n\ \ }\n\ }\n\ - ")]) + ") ; + File ("watcher.js", + "\n\ + \n\ + var wsReloader;\n\ + var LAST_SUCCESS_BUILD_STAMP = (localStorage.getItem('LAST_SUCCESS_BUILD_STAMP') || 0)\n\ + var WS_PORT = 9999; // configurable\n\ + \n\ + function setUpWebScoket() {\n\ + \ if (wsReloader == null || wsReloader.readyState !== 1) {\n\ + \ try {\n\ + \ wsReloader = new WebSocket(`ws://localhost:${WS_PORT}`)\n\ + \ wsReloader.onmessage = (msg) => {\n\ + \ var newData = JSON.parse(msg.data).LAST_SUCCESS_BUILD_STAMP\n\ + \ if (newData > LAST_SUCCESS_BUILD_STAMP) {\n\ + \ LAST_SUCCESS_BUILD_STAMP = newData\n\ + \ localStorage.setItem('LAST_SUCCESS_BUILD_STAMP', LAST_SUCCESS_BUILD_STAMP)\n\ + \ location.reload(true)\n\ + \ }\n\ + \n\ + \ }\n\ + \ } catch (exn) {\n\ + \ console.error(\"web socket failed connect\")\n\ + \ }\n\ + \ }\n\ + };\n\ + \n\ + setUpWebScoket();\n\ + setInterval(setUpWebScoket, 2000);") ; + File ("package.json", + "{\n\ + \ \"name\": \"${bsb:name}\",\n\ + \ \"version\": \"${bsb:proj-version}\",\n\ + \ \"scripts\": {\n\ + \ \"clean\": \"bsb -clean-world\",\n\ + \ \"build\": \"bsb -make-world\",\n\ + \ \"watch\": \"bsb -make-world -w -ws _\"\n\ + \ },\n\ + \ \"keywords\": [\n\ + \ \"BuckleScript\"\n\ + \ ],\n\ + \ \"author\": \"\",\n\ + \ \"license\": \"MIT\",\n\ + \ \"devDependencies\": {\n\ + \ \"bs-platform\": \"^${bsb:bs-version}\"\n\ + \ },\n\ + \ \"dependencies\": {\n\ + \ \"bucklescript-tea\": \"^0.7.4\"\n\ + \ }\n\ + }\n\ + ") ; + File ("README.md", + "\n\ + \n\ + # Build\n\ + ```\n\ + npm run build\n\ + ```\n\ + \n\ + # Watch\n\ + \n\ + ```\n\ + npm run watch\n\ + ```\n\ + \n\ + create a http-server\n\ + \n\ + ```\n\ + npm install -g http-server\n\ + ```\n\ + \n\ + Edit the file and see the changes automatically reloaded in the browser\n\ + ") ; + File ("index.html", + "\n\ + \n\ + \ \n\ + \ \n\ + \ \n\ + \ \n\ + \ \n\ + \ \n\ + \ Bucklescript TEA Starter Kit\n\ + \ \n\ + \ \n\ + \n\ + \n\ + \ \n\ + \
\n\ + \ \n\ + \ \n\ + \ \n\ + \ \n\ + ")]) ]) end diff --git a/lib/bsdep.d b/lib/bsdep.d index 098337c917..3b0a1badaa 100644 --- a/lib/bsdep.d +++ b/lib/bsdep.d @@ -89,6 +89,8 @@ ../lib/bsdep.ml : ./syntax/ast_attributes.mli ../lib/bsdep.ml : ./syntax/ast_comb.ml ../lib/bsdep.ml : ./syntax/ast_comb.mli +../lib/bsdep.ml : ./syntax/ast_compatible.ml +../lib/bsdep.ml : ./syntax/ast_compatible.mli ../lib/bsdep.ml : ./syntax/ast_core_type.ml ../lib/bsdep.ml : ./syntax/ast_core_type.mli ../lib/bsdep.ml : ./syntax/ast_core_type_class_type.ml diff --git a/lib/bsdep.ml b/lib/bsdep.ml index 89751dfd98..c26eaaebf7 100644 --- a/lib/bsdep.ml +++ b/lib/bsdep.ml @@ -25766,10 +25766,10 @@ val exp_apply_no_label : ?attrs:Parsetree.attributes -> Parsetree.expression -> Parsetree.expression list -> Parsetree.expression -val fun_no_label : +(* val fun_no_label : ?loc:Location.t -> ?attrs:Parsetree.attributes -> - Parsetree.pattern -> Parsetree.expression -> Parsetree.expression + Parsetree.pattern -> Parsetree.expression -> Parsetree.expression *) val arrow_no_label : ?loc:Location.t -> @@ -25842,8 +25842,8 @@ open Ast_helper let exp_apply_no_label ?loc ?attrs a b = Exp.apply ?loc ?attrs a (Ext_list.map (fun x -> "", x) b) -let fun_no_label ?loc ?attrs pat body = - Exp.fun_ ?loc ?attrs "" None pat body +(* let fun_no_label ?loc ?attrs pat body = + Ast_compatible.fun_ ?loc ?attrs pat body *) let arrow_no_label ?loc ?attrs b c = Typ.arrow ?loc ?attrs "" b c @@ -28751,6 +28751,171 @@ let deprecated s : attr = },[]) ; pstr_loc = locg}] +end +module Ast_compatible : sig +#1 "ast_compatible.mli" +(* Copyright (C) 2018 Authors of BuckleScript + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * In addition to the permissions granted to you by the LGPL, you may combine + * or link a "work that uses the Library" with a publicly distributed version + * of this file to produce a combined library or application, then distribute + * that combined work under the terms of your choosing, with no requirement + * to comply with the obligations normally placed on you by section 4 of the + * LGPL version 3 (or the corresponding section of a later version of the LGPL + * should you choose to use a later version). + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) + + +type loc = Location.t +type attrs = Parsetree.attribute list +open Parsetree + + +val const_exp_string: + ?loc:Location.t -> + ?attrs:attrs -> + ?delimiter:string -> + string -> + expression + +val const_exp_int: + ?loc:Location.t -> + ?attrs:attrs -> + int -> + expression + +val const_exp_int_list_as_array: + int list -> + expression + +val apply_simple: + ?loc:Location.t -> + ?attrs:attrs -> + expression -> + expression list -> + expression + + +val apply_labels: + ?loc:Location.t -> + ?attrs:attrs -> + expression -> + (string * expression) list -> + (* [(label,e)] [label] is strictly interpreted as label *) + expression + +val fun_ : + ?loc:Location.t -> + ?attrs:attrs -> + pattern -> + expression -> + expression +end = struct +#1 "ast_compatible.ml" +(* Copyright (C) 2018 Authors of BuckleScript + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * In addition to the permissions granted to you by the LGPL, you may combine + * or link a "work that uses the Library" with a publicly distributed version + * of this file to produce a combined library or application, then distribute + * that combined work under the terms of your choosing, with no requirement + * to comply with the obligations normally placed on you by section 4 of the + * LGPL version 3 (or the corresponding section of a later version of the LGPL + * should you choose to use a later version). + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) + +type loc = Location.t +type attrs = Parsetree.attribute list +open Parsetree +let default_loc = Location.none + + + +let const_exp_string + ?(loc = default_loc) + ?(attrs = []) + ?delimiter + (s : string) : expression = + { + pexp_loc = loc; + pexp_attributes = attrs; + pexp_desc = Pexp_constant(Const_string(s,delimiter)) + } + + +let const_exp_int + ?(loc = default_loc) + ?(attrs = []) + (s : int) : expression = + { + pexp_loc = loc; + pexp_attributes = attrs; + pexp_desc = Pexp_constant(Const_int s) + } + + +let const_exp_int_list_as_array xs = + Ast_helper.Exp.array + (Ext_list.map (fun x -> const_exp_int x ) xs) + +let apply_simple + ?(loc = default_loc) + ?(attrs = []) + fn args : expression = + { pexp_loc = loc; + pexp_attributes = attrs; + pexp_desc = + Pexp_apply( + fn, + (Ext_list.map (fun x -> "",x) args) ) } + +let apply_labels + ?(loc = default_loc) + ?(attrs = []) + fn args : expression = + { pexp_loc = loc; + pexp_attributes = attrs; + pexp_desc = + Pexp_apply( + fn, + args ) } + +let fun_ + ?(loc = default_loc) + ?(attrs = []) + pat + exp = + { + pexp_loc = loc; + pexp_attributes = attrs; + pexp_desc = Pexp_fun("",None, pat, exp) + } + end module Ast_exp : sig #1 "ast_exp.mli" @@ -28845,13 +29010,28 @@ module Ast_external_mk : sig J.unssafe_expr args ]} *) -val local_external : Location.t -> +val local_external_apply : + Location.t -> + ?pval_attributes:Parsetree.attributes -> + pval_prim:string list -> + pval_type:Parsetree.core_type -> + ?local_module_name:string -> + ?local_fun_name:string -> + Parsetree.expression list -> + Parsetree.expression_desc + + +val local_external_obj : + Location.t -> ?pval_attributes:Parsetree.attributes -> pval_prim:string list -> pval_type:Parsetree.core_type -> ?local_module_name:string -> ?local_fun_name:string -> - (string * Parsetree.expression) list -> Parsetree.expression_desc + (string * Parsetree.expression) list -> (* [ (label, exp )]*) + Parsetree.expression_desc + + val local_extern_cont : Location.t -> @@ -28888,7 +29068,37 @@ end = struct * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) -let local_external loc +let local_external_apply loc + ?(pval_attributes=[]) + ~pval_prim + ~pval_type + ?(local_module_name = "J") + ?(local_fun_name = "unsafe_expr") + args + : Parsetree.expression_desc = + Pexp_letmodule + ({txt = local_module_name; loc}, + {pmod_desc = + Pmod_structure + [{pstr_desc = + Pstr_primitive + {pval_name = {txt = local_fun_name; loc}; + pval_type ; + pval_loc = loc; + pval_prim ; + pval_attributes }; + pstr_loc = loc; + }]; + pmod_loc = loc; + pmod_attributes = []}, + Ast_compatible.apply_simple + ({pexp_desc = Pexp_ident {txt = Ldot (Lident local_module_name, local_fun_name); + loc}; + pexp_attributes = [] ; + pexp_loc = loc} : Parsetree.expression) args ~loc + ) + +let local_external_obj loc ?(pval_attributes=[]) ~pval_prim ~pval_type @@ -28911,17 +29121,12 @@ let local_external loc }]; pmod_loc = loc; pmod_attributes = []}, - { - pexp_desc = - Pexp_apply - (({pexp_desc = Pexp_ident {txt = Ldot (Lident local_module_name, local_fun_name); + Ast_compatible.apply_labels + ({pexp_desc = Pexp_ident {txt = Ldot (Lident local_module_name, local_fun_name); loc}; pexp_attributes = [] ; - pexp_loc = loc} : Parsetree.expression), - args); - pexp_attributes = []; - pexp_loc = loc - }) + pexp_loc = loc} : Parsetree.expression) args ~loc + ) let local_extern_cont loc ?(pval_attributes=[]) @@ -33835,8 +34040,8 @@ let generic_apply kind loc ["#method_run" ; string_arity], arrow ~loc "" (lift_method_type loc args_type result_type) fn_type in - Ast_external_mk.local_external loc ~pval_prim ~pval_type - (("", fn) :: Ext_list.map (fun x -> "",x) args ) + Ast_external_mk.local_external_apply loc ~pval_prim ~pval_type + ( fn :: args ) let uncurry_fn_apply loc self fn args = @@ -33929,7 +34134,7 @@ let generic_to_uncurry_exp kind loc (self : Bs_ast_mapper.mapper) pat body let result, rev_extra_args = aux [first_arg] body in let body = - List.fold_left (fun e p -> Ast_comb.fun_no_label ~loc p e ) + List.fold_left (fun e p -> Ast_compatible.fun_ ~loc p e ) result rev_extra_args in let len = List.length rev_extra_args in let arity = @@ -34313,7 +34518,7 @@ let record_as_js_object ({Asttypes.loc = loc ; txt = x} :: labels, (x, self.expr self e) :: args, i + 1) | Ldot _ | Lapply _ -> Location.raise_errorf ~loc "invalid js label ") label_exprs ([],[],0) in - Ast_external_mk.local_external loc + Ast_external_mk.local_external_obj loc ~pval_prim:(External_process.pval_prim_of_labels labels) ~pval_type:(Ast_core_type.from_labels ~loc arity labels) args @@ -34342,7 +34547,7 @@ let convertBsErrorFunction loc (self : Bs_ast_mapper.mapper) attrs (cases : Par (Ast_core_type.lift_option_type (Typ.any ~loc ())) in let () = checkCases cases in let cases = self.cases self cases in - Exp.fun_ ~attrs ~loc "" None ( Pat.var ~loc {txt; loc }) + Ast_compatible.fun_ ~attrs ~loc ( Pat.var ~loc {txt; loc }) (Exp.ifthenelse ~loc (Exp.apply ~loc (Exp.ident ~loc {txt = isCamlExceptionOrOpenVariant ; loc}) ["", txt_expr ]) @@ -35127,8 +35332,9 @@ val new_type_of_type_declaration : Parsetree.core_type * Parsetree.type_declaration val lift_string_list_to_array : string list -> Parsetree.expression -val lift_int : int -> Parsetree.expression -val lift_int_list_to_array : int list -> Parsetree.expression +(* val lift_int : int -> Parsetree.expression +val lift_int_list_to_array : int list -> Parsetree.expression *) + val mk_fun : loc:Location.t -> Parsetree.core_type -> @@ -35203,19 +35409,20 @@ let new_type_of_type_declaration let lift_string_list_to_array (labels : string list) = Exp.array - (Ext_list.map (fun s -> Exp.constant (Const_string (s, None))) - labels) + (Ext_list.map + (* Exp.constant (Const_string (s, None)) *) + (fun s -> Ast_compatible.const_exp_string s ) + labels) -let lift_int i = Exp.constant (Const_int i) +(* let lift_int i = Exp.constant (Const_int i) let lift_int_list_to_array (labels : int list) = Exp.array (Ext_list.map lift_int labels) - + *) let mk_fun ~loc (typ : Parsetree.core_type) (value : string) body : Parsetree.expression = - Exp.fun_ - "" None + Ast_compatible.fun_ (Pat.constraint_ (Pat.var {txt = value ; loc}) typ) body @@ -35463,7 +35670,7 @@ let init () = let newTypeStr = Str.type_ [newTdcl] in let toJsBody body = Ast_comb.single_non_rec_value patToJs - (Exp.fun_ "" None (Pat.constraint_ (Pat.var pat_param) core_type) + (Ast_compatible.fun_ (Pat.constraint_ (Pat.var pat_param) core_type) body ) in let (+>) a ty = @@ -35505,7 +35712,7 @@ let init () = ) label_declarations) None in let fromJs = Ast_comb.single_non_rec_value patFromJs - (Exp.fun_ "" None (Pat.var pat_param) + (Ast_compatible.fun_ (Pat.var pat_param) (if createType then (Exp.let_ Nonrecursive [Vb.mk @@ -35556,7 +35763,7 @@ let init () = ); Ast_comb.single_non_rec_value patFromJs - (Exp.fun_ "" None + (Ast_compatible.fun_ (Pat.var pat_param) (if createType then revSearchAssert @@ -35610,7 +35817,7 @@ let init () = ; Ast_comb.single_non_rec_value patFromJs - (Exp.fun_ "" None + (Ast_compatible.fun_ (Pat.var pat_param) ( if createType then @@ -35646,7 +35853,7 @@ let init () = Ast_comb.single_non_rec_value {loc ; txt = fromJs} - (Exp.fun_ "" None + (Ast_compatible.fun_ (Pat.var pat_param) (if createType then (Exp.let_ Nonrecursive @@ -35844,7 +36051,7 @@ let init () = fun ({pld_name = {loc; txt = pld_label} as pld_name} : Parsetree.label_declaration) -> let txt = "param" in Ast_comb.single_non_rec_value pld_name - (Exp.fun_ "" None + (Ast_compatible.fun_ (Pat.constraint_ (Pat.var {txt ; loc}) core_type ) (Exp.field (Exp.ident {txt = Lident txt ; loc}) {txt = Longident.Lident pld_label ; loc}) ) @@ -35885,7 +36092,7 @@ let init () = ) )) core_type in Ext_list.fold_right (fun var b -> - Exp.fun_ "" None (Pat.var {loc ; txt = var}) b + Ast_compatible.fun_ (Pat.var {loc ; txt = var}) b ) vars exp end) @@ -38030,10 +38237,10 @@ let concat_exp (a : Parsetree.expression) (b : Parsetree.expression) : Parsetree.expression = let loc = Bs_loc.merge a.pexp_loc b.pexp_loc in - Exp.apply ~loc + Ast_compatible.apply_simple ~loc (Exp.ident { txt =concat_ident; loc}) - ["",a ; - "",b] + [a ; + b] let border = String.length "{j|" @@ -38044,19 +38251,17 @@ let aux loc (segment : segment) = begin match kind with | String -> let loc = update border start finish loc in - Exp.constant - ~loc - (Const_string (content, escaped)) + Ast_compatible.const_exp_string + content ?delimiter:escaped ~loc | Var (soffset, foffset) -> let loc = { loc with loc_start = update_position (soffset + border) start loc.loc_start ; loc_end = update_position (foffset + border) finish loc.loc_start } in - Exp.apply ~loc + Ast_compatible.apply_simple ~loc (Exp.ident ~loc {loc ; txt = to_string_ident }) [ - "", Exp.ident ~loc {loc ; txt = Lident content} ] end @@ -38081,8 +38286,8 @@ let transform_interp loc s = let rev_segments = cxt.segments in match rev_segments with | [] -> - Exp.constant ~loc - (Const_string ("", Some Literals.escaped_j_delimiter)) + Ast_compatible.const_exp_string ~loc + "" ~delimiter:Literals.escaped_j_delimiter | [ segment] -> aux loc segment | a::rest -> diff --git a/lib/bsppx.d b/lib/bsppx.d index edd4d8c3dd..8f2a7466a3 100644 --- a/lib/bsppx.d +++ b/lib/bsppx.d @@ -69,6 +69,8 @@ ../lib/bsppx.ml : ./syntax/ast_attributes.mli ../lib/bsppx.ml : ./syntax/ast_comb.ml ../lib/bsppx.ml : ./syntax/ast_comb.mli +../lib/bsppx.ml : ./syntax/ast_compatible.ml +../lib/bsppx.ml : ./syntax/ast_compatible.mli ../lib/bsppx.ml : ./syntax/ast_core_type.ml ../lib/bsppx.ml : ./syntax/ast_core_type.mli ../lib/bsppx.ml : ./syntax/ast_core_type_class_type.ml diff --git a/lib/bsppx.ml b/lib/bsppx.ml index 28da9da46d..f86e916f42 100644 --- a/lib/bsppx.ml +++ b/lib/bsppx.ml @@ -7708,10 +7708,10 @@ val exp_apply_no_label : ?attrs:Parsetree.attributes -> Parsetree.expression -> Parsetree.expression list -> Parsetree.expression -val fun_no_label : +(* val fun_no_label : ?loc:Location.t -> ?attrs:Parsetree.attributes -> - Parsetree.pattern -> Parsetree.expression -> Parsetree.expression + Parsetree.pattern -> Parsetree.expression -> Parsetree.expression *) val arrow_no_label : ?loc:Location.t -> @@ -7784,8 +7784,8 @@ open Ast_helper let exp_apply_no_label ?loc ?attrs a b = Exp.apply ?loc ?attrs a (Ext_list.map (fun x -> "", x) b) -let fun_no_label ?loc ?attrs pat body = - Exp.fun_ ?loc ?attrs "" None pat body +(* let fun_no_label ?loc ?attrs pat body = + Ast_compatible.fun_ ?loc ?attrs pat body *) let arrow_no_label ?loc ?attrs b c = Typ.arrow ?loc ?attrs "" b c @@ -10693,6 +10693,171 @@ let deprecated s : attr = },[]) ; pstr_loc = locg}] +end +module Ast_compatible : sig +#1 "ast_compatible.mli" +(* Copyright (C) 2018 Authors of BuckleScript + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * In addition to the permissions granted to you by the LGPL, you may combine + * or link a "work that uses the Library" with a publicly distributed version + * of this file to produce a combined library or application, then distribute + * that combined work under the terms of your choosing, with no requirement + * to comply with the obligations normally placed on you by section 4 of the + * LGPL version 3 (or the corresponding section of a later version of the LGPL + * should you choose to use a later version). + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) + + +type loc = Location.t +type attrs = Parsetree.attribute list +open Parsetree + + +val const_exp_string: + ?loc:Location.t -> + ?attrs:attrs -> + ?delimiter:string -> + string -> + expression + +val const_exp_int: + ?loc:Location.t -> + ?attrs:attrs -> + int -> + expression + +val const_exp_int_list_as_array: + int list -> + expression + +val apply_simple: + ?loc:Location.t -> + ?attrs:attrs -> + expression -> + expression list -> + expression + + +val apply_labels: + ?loc:Location.t -> + ?attrs:attrs -> + expression -> + (string * expression) list -> + (* [(label,e)] [label] is strictly interpreted as label *) + expression + +val fun_ : + ?loc:Location.t -> + ?attrs:attrs -> + pattern -> + expression -> + expression +end = struct +#1 "ast_compatible.ml" +(* Copyright (C) 2018 Authors of BuckleScript + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * In addition to the permissions granted to you by the LGPL, you may combine + * or link a "work that uses the Library" with a publicly distributed version + * of this file to produce a combined library or application, then distribute + * that combined work under the terms of your choosing, with no requirement + * to comply with the obligations normally placed on you by section 4 of the + * LGPL version 3 (or the corresponding section of a later version of the LGPL + * should you choose to use a later version). + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) + +type loc = Location.t +type attrs = Parsetree.attribute list +open Parsetree +let default_loc = Location.none + + + +let const_exp_string + ?(loc = default_loc) + ?(attrs = []) + ?delimiter + (s : string) : expression = + { + pexp_loc = loc; + pexp_attributes = attrs; + pexp_desc = Pexp_constant(Const_string(s,delimiter)) + } + + +let const_exp_int + ?(loc = default_loc) + ?(attrs = []) + (s : int) : expression = + { + pexp_loc = loc; + pexp_attributes = attrs; + pexp_desc = Pexp_constant(Const_int s) + } + + +let const_exp_int_list_as_array xs = + Ast_helper.Exp.array + (Ext_list.map (fun x -> const_exp_int x ) xs) + +let apply_simple + ?(loc = default_loc) + ?(attrs = []) + fn args : expression = + { pexp_loc = loc; + pexp_attributes = attrs; + pexp_desc = + Pexp_apply( + fn, + (Ext_list.map (fun x -> "",x) args) ) } + +let apply_labels + ?(loc = default_loc) + ?(attrs = []) + fn args : expression = + { pexp_loc = loc; + pexp_attributes = attrs; + pexp_desc = + Pexp_apply( + fn, + args ) } + +let fun_ + ?(loc = default_loc) + ?(attrs = []) + pat + exp = + { + pexp_loc = loc; + pexp_attributes = attrs; + pexp_desc = Pexp_fun("",None, pat, exp) + } + end module Ast_exp : sig #1 "ast_exp.mli" @@ -10787,13 +10952,28 @@ module Ast_external_mk : sig J.unssafe_expr args ]} *) -val local_external : Location.t -> +val local_external_apply : + Location.t -> + ?pval_attributes:Parsetree.attributes -> + pval_prim:string list -> + pval_type:Parsetree.core_type -> + ?local_module_name:string -> + ?local_fun_name:string -> + Parsetree.expression list -> + Parsetree.expression_desc + + +val local_external_obj : + Location.t -> ?pval_attributes:Parsetree.attributes -> pval_prim:string list -> pval_type:Parsetree.core_type -> ?local_module_name:string -> ?local_fun_name:string -> - (string * Parsetree.expression) list -> Parsetree.expression_desc + (string * Parsetree.expression) list -> (* [ (label, exp )]*) + Parsetree.expression_desc + + val local_extern_cont : Location.t -> @@ -10830,7 +11010,37 @@ end = struct * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) -let local_external loc +let local_external_apply loc + ?(pval_attributes=[]) + ~pval_prim + ~pval_type + ?(local_module_name = "J") + ?(local_fun_name = "unsafe_expr") + args + : Parsetree.expression_desc = + Pexp_letmodule + ({txt = local_module_name; loc}, + {pmod_desc = + Pmod_structure + [{pstr_desc = + Pstr_primitive + {pval_name = {txt = local_fun_name; loc}; + pval_type ; + pval_loc = loc; + pval_prim ; + pval_attributes }; + pstr_loc = loc; + }]; + pmod_loc = loc; + pmod_attributes = []}, + Ast_compatible.apply_simple + ({pexp_desc = Pexp_ident {txt = Ldot (Lident local_module_name, local_fun_name); + loc}; + pexp_attributes = [] ; + pexp_loc = loc} : Parsetree.expression) args ~loc + ) + +let local_external_obj loc ?(pval_attributes=[]) ~pval_prim ~pval_type @@ -10853,17 +11063,12 @@ let local_external loc }]; pmod_loc = loc; pmod_attributes = []}, - { - pexp_desc = - Pexp_apply - (({pexp_desc = Pexp_ident {txt = Ldot (Lident local_module_name, local_fun_name); + Ast_compatible.apply_labels + ({pexp_desc = Pexp_ident {txt = Ldot (Lident local_module_name, local_fun_name); loc}; pexp_attributes = [] ; - pexp_loc = loc} : Parsetree.expression), - args); - pexp_attributes = []; - pexp_loc = loc - }) + pexp_loc = loc} : Parsetree.expression) args ~loc + ) let local_extern_cont loc ?(pval_attributes=[]) @@ -15840,8 +16045,8 @@ let generic_apply kind loc ["#method_run" ; string_arity], arrow ~loc "" (lift_method_type loc args_type result_type) fn_type in - Ast_external_mk.local_external loc ~pval_prim ~pval_type - (("", fn) :: Ext_list.map (fun x -> "",x) args ) + Ast_external_mk.local_external_apply loc ~pval_prim ~pval_type + ( fn :: args ) let uncurry_fn_apply loc self fn args = @@ -15934,7 +16139,7 @@ let generic_to_uncurry_exp kind loc (self : Bs_ast_mapper.mapper) pat body let result, rev_extra_args = aux [first_arg] body in let body = - List.fold_left (fun e p -> Ast_comb.fun_no_label ~loc p e ) + List.fold_left (fun e p -> Ast_compatible.fun_ ~loc p e ) result rev_extra_args in let len = List.length rev_extra_args in let arity = @@ -16318,7 +16523,7 @@ let record_as_js_object ({Asttypes.loc = loc ; txt = x} :: labels, (x, self.expr self e) :: args, i + 1) | Ldot _ | Lapply _ -> Location.raise_errorf ~loc "invalid js label ") label_exprs ([],[],0) in - Ast_external_mk.local_external loc + Ast_external_mk.local_external_obj loc ~pval_prim:(External_process.pval_prim_of_labels labels) ~pval_type:(Ast_core_type.from_labels ~loc arity labels) args @@ -16347,7 +16552,7 @@ let convertBsErrorFunction loc (self : Bs_ast_mapper.mapper) attrs (cases : Par (Ast_core_type.lift_option_type (Typ.any ~loc ())) in let () = checkCases cases in let cases = self.cases self cases in - Exp.fun_ ~attrs ~loc "" None ( Pat.var ~loc {txt; loc }) + Ast_compatible.fun_ ~attrs ~loc ( Pat.var ~loc {txt; loc }) (Exp.ifthenelse ~loc (Exp.apply ~loc (Exp.ident ~loc {txt = isCamlExceptionOrOpenVariant ; loc}) ["", txt_expr ]) @@ -17132,8 +17337,9 @@ val new_type_of_type_declaration : Parsetree.core_type * Parsetree.type_declaration val lift_string_list_to_array : string list -> Parsetree.expression -val lift_int : int -> Parsetree.expression -val lift_int_list_to_array : int list -> Parsetree.expression +(* val lift_int : int -> Parsetree.expression +val lift_int_list_to_array : int list -> Parsetree.expression *) + val mk_fun : loc:Location.t -> Parsetree.core_type -> @@ -17208,19 +17414,20 @@ let new_type_of_type_declaration let lift_string_list_to_array (labels : string list) = Exp.array - (Ext_list.map (fun s -> Exp.constant (Const_string (s, None))) - labels) + (Ext_list.map + (* Exp.constant (Const_string (s, None)) *) + (fun s -> Ast_compatible.const_exp_string s ) + labels) -let lift_int i = Exp.constant (Const_int i) +(* let lift_int i = Exp.constant (Const_int i) let lift_int_list_to_array (labels : int list) = Exp.array (Ext_list.map lift_int labels) - + *) let mk_fun ~loc (typ : Parsetree.core_type) (value : string) body : Parsetree.expression = - Exp.fun_ - "" None + Ast_compatible.fun_ (Pat.constraint_ (Pat.var {txt = value ; loc}) typ) body @@ -17468,7 +17675,7 @@ let init () = let newTypeStr = Str.type_ [newTdcl] in let toJsBody body = Ast_comb.single_non_rec_value patToJs - (Exp.fun_ "" None (Pat.constraint_ (Pat.var pat_param) core_type) + (Ast_compatible.fun_ (Pat.constraint_ (Pat.var pat_param) core_type) body ) in let (+>) a ty = @@ -17510,7 +17717,7 @@ let init () = ) label_declarations) None in let fromJs = Ast_comb.single_non_rec_value patFromJs - (Exp.fun_ "" None (Pat.var pat_param) + (Ast_compatible.fun_ (Pat.var pat_param) (if createType then (Exp.let_ Nonrecursive [Vb.mk @@ -17561,7 +17768,7 @@ let init () = ); Ast_comb.single_non_rec_value patFromJs - (Exp.fun_ "" None + (Ast_compatible.fun_ (Pat.var pat_param) (if createType then revSearchAssert @@ -17615,7 +17822,7 @@ let init () = ; Ast_comb.single_non_rec_value patFromJs - (Exp.fun_ "" None + (Ast_compatible.fun_ (Pat.var pat_param) ( if createType then @@ -17651,7 +17858,7 @@ let init () = Ast_comb.single_non_rec_value {loc ; txt = fromJs} - (Exp.fun_ "" None + (Ast_compatible.fun_ (Pat.var pat_param) (if createType then (Exp.let_ Nonrecursive @@ -17849,7 +18056,7 @@ let init () = fun ({pld_name = {loc; txt = pld_label} as pld_name} : Parsetree.label_declaration) -> let txt = "param" in Ast_comb.single_non_rec_value pld_name - (Exp.fun_ "" None + (Ast_compatible.fun_ (Pat.constraint_ (Pat.var {txt ; loc}) core_type ) (Exp.field (Exp.ident {txt = Lident txt ; loc}) {txt = Longident.Lident pld_label ; loc}) ) @@ -17890,7 +18097,7 @@ let init () = ) )) core_type in Ext_list.fold_right (fun var b -> - Exp.fun_ "" None (Pat.var {loc ; txt = var}) b + Ast_compatible.fun_ (Pat.var {loc ; txt = var}) b ) vars exp end) @@ -20035,10 +20242,10 @@ let concat_exp (a : Parsetree.expression) (b : Parsetree.expression) : Parsetree.expression = let loc = Bs_loc.merge a.pexp_loc b.pexp_loc in - Exp.apply ~loc + Ast_compatible.apply_simple ~loc (Exp.ident { txt =concat_ident; loc}) - ["",a ; - "",b] + [a ; + b] let border = String.length "{j|" @@ -20049,19 +20256,17 @@ let aux loc (segment : segment) = begin match kind with | String -> let loc = update border start finish loc in - Exp.constant - ~loc - (Const_string (content, escaped)) + Ast_compatible.const_exp_string + content ?delimiter:escaped ~loc | Var (soffset, foffset) -> let loc = { loc with loc_start = update_position (soffset + border) start loc.loc_start ; loc_end = update_position (foffset + border) finish loc.loc_start } in - Exp.apply ~loc + Ast_compatible.apply_simple ~loc (Exp.ident ~loc {loc ; txt = to_string_ident }) [ - "", Exp.ident ~loc {loc ; txt = Lident content} ] end @@ -20086,8 +20291,8 @@ let transform_interp loc s = let rev_segments = cxt.segments in match rev_segments with | [] -> - Exp.constant ~loc - (Const_string ("", Some Literals.escaped_j_delimiter)) + Ast_compatible.const_exp_string ~loc + "" ~delimiter:Literals.escaped_j_delimiter | [ segment] -> aux loc segment | a::rest -> diff --git a/lib/whole_compiler.d b/lib/whole_compiler.d index 72fe97d36d..b3e0998640 100644 --- a/lib/whole_compiler.d +++ b/lib/whole_compiler.d @@ -443,6 +443,8 @@ ../lib/whole_compiler.ml : ./syntax/ast_attributes.mli ../lib/whole_compiler.ml : ./syntax/ast_comb.ml ../lib/whole_compiler.ml : ./syntax/ast_comb.mli +../lib/whole_compiler.ml : ./syntax/ast_compatible.ml +../lib/whole_compiler.ml : ./syntax/ast_compatible.mli ../lib/whole_compiler.ml : ./syntax/ast_core_type.ml ../lib/whole_compiler.ml : ./syntax/ast_core_type.mli ../lib/whole_compiler.ml : ./syntax/ast_core_type_class_type.ml diff --git a/lib/whole_compiler.ml b/lib/whole_compiler.ml index 1c31006d0d..6e77a2e381 100644 --- a/lib/whole_compiler.ml +++ b/lib/whole_compiler.ml @@ -64544,10 +64544,10 @@ val exp_apply_no_label : ?attrs:Parsetree.attributes -> Parsetree.expression -> Parsetree.expression list -> Parsetree.expression -val fun_no_label : +(* val fun_no_label : ?loc:Location.t -> ?attrs:Parsetree.attributes -> - Parsetree.pattern -> Parsetree.expression -> Parsetree.expression + Parsetree.pattern -> Parsetree.expression -> Parsetree.expression *) val arrow_no_label : ?loc:Location.t -> @@ -64620,8 +64620,8 @@ open Ast_helper let exp_apply_no_label ?loc ?attrs a b = Exp.apply ?loc ?attrs a (Ext_list.map (fun x -> "", x) b) -let fun_no_label ?loc ?attrs pat body = - Exp.fun_ ?loc ?attrs "" None pat body +(* let fun_no_label ?loc ?attrs pat body = + Ast_compatible.fun_ ?loc ?attrs pat body *) let arrow_no_label ?loc ?attrs b c = Typ.arrow ?loc ?attrs "" b c @@ -67676,6 +67676,171 @@ let deprecated s : attr = },[]) ; pstr_loc = locg}] +end +module Ast_compatible : sig +#1 "ast_compatible.mli" +(* Copyright (C) 2018 Authors of BuckleScript + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * In addition to the permissions granted to you by the LGPL, you may combine + * or link a "work that uses the Library" with a publicly distributed version + * of this file to produce a combined library or application, then distribute + * that combined work under the terms of your choosing, with no requirement + * to comply with the obligations normally placed on you by section 4 of the + * LGPL version 3 (or the corresponding section of a later version of the LGPL + * should you choose to use a later version). + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) + + +type loc = Location.t +type attrs = Parsetree.attribute list +open Parsetree + + +val const_exp_string: + ?loc:Location.t -> + ?attrs:attrs -> + ?delimiter:string -> + string -> + expression + +val const_exp_int: + ?loc:Location.t -> + ?attrs:attrs -> + int -> + expression + +val const_exp_int_list_as_array: + int list -> + expression + +val apply_simple: + ?loc:Location.t -> + ?attrs:attrs -> + expression -> + expression list -> + expression + + +val apply_labels: + ?loc:Location.t -> + ?attrs:attrs -> + expression -> + (string * expression) list -> + (* [(label,e)] [label] is strictly interpreted as label *) + expression + +val fun_ : + ?loc:Location.t -> + ?attrs:attrs -> + pattern -> + expression -> + expression +end = struct +#1 "ast_compatible.ml" +(* Copyright (C) 2018 Authors of BuckleScript + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * In addition to the permissions granted to you by the LGPL, you may combine + * or link a "work that uses the Library" with a publicly distributed version + * of this file to produce a combined library or application, then distribute + * that combined work under the terms of your choosing, with no requirement + * to comply with the obligations normally placed on you by section 4 of the + * LGPL version 3 (or the corresponding section of a later version of the LGPL + * should you choose to use a later version). + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) + +type loc = Location.t +type attrs = Parsetree.attribute list +open Parsetree +let default_loc = Location.none + + + +let const_exp_string + ?(loc = default_loc) + ?(attrs = []) + ?delimiter + (s : string) : expression = + { + pexp_loc = loc; + pexp_attributes = attrs; + pexp_desc = Pexp_constant(Const_string(s,delimiter)) + } + + +let const_exp_int + ?(loc = default_loc) + ?(attrs = []) + (s : int) : expression = + { + pexp_loc = loc; + pexp_attributes = attrs; + pexp_desc = Pexp_constant(Const_int s) + } + + +let const_exp_int_list_as_array xs = + Ast_helper.Exp.array + (Ext_list.map (fun x -> const_exp_int x ) xs) + +let apply_simple + ?(loc = default_loc) + ?(attrs = []) + fn args : expression = + { pexp_loc = loc; + pexp_attributes = attrs; + pexp_desc = + Pexp_apply( + fn, + (Ext_list.map (fun x -> "",x) args) ) } + +let apply_labels + ?(loc = default_loc) + ?(attrs = []) + fn args : expression = + { pexp_loc = loc; + pexp_attributes = attrs; + pexp_desc = + Pexp_apply( + fn, + args ) } + +let fun_ + ?(loc = default_loc) + ?(attrs = []) + pat + exp = + { + pexp_loc = loc; + pexp_attributes = attrs; + pexp_desc = Pexp_fun("",None, pat, exp) + } + end module Ast_exp : sig #1 "ast_exp.mli" @@ -67770,13 +67935,28 @@ module Ast_external_mk : sig J.unssafe_expr args ]} *) -val local_external : Location.t -> +val local_external_apply : + Location.t -> + ?pval_attributes:Parsetree.attributes -> + pval_prim:string list -> + pval_type:Parsetree.core_type -> + ?local_module_name:string -> + ?local_fun_name:string -> + Parsetree.expression list -> + Parsetree.expression_desc + + +val local_external_obj : + Location.t -> ?pval_attributes:Parsetree.attributes -> pval_prim:string list -> pval_type:Parsetree.core_type -> ?local_module_name:string -> ?local_fun_name:string -> - (string * Parsetree.expression) list -> Parsetree.expression_desc + (string * Parsetree.expression) list -> (* [ (label, exp )]*) + Parsetree.expression_desc + + val local_extern_cont : Location.t -> @@ -67813,7 +67993,7 @@ end = struct * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) -let local_external loc +let local_external_apply loc ?(pval_attributes=[]) ~pval_prim ~pval_type @@ -67836,17 +68016,42 @@ let local_external loc }]; pmod_loc = loc; pmod_attributes = []}, - { - pexp_desc = - Pexp_apply - (({pexp_desc = Pexp_ident {txt = Ldot (Lident local_module_name, local_fun_name); + Ast_compatible.apply_simple + ({pexp_desc = Pexp_ident {txt = Ldot (Lident local_module_name, local_fun_name); loc}; pexp_attributes = [] ; - pexp_loc = loc} : Parsetree.expression), - args); - pexp_attributes = []; - pexp_loc = loc - }) + pexp_loc = loc} : Parsetree.expression) args ~loc + ) + +let local_external_obj loc + ?(pval_attributes=[]) + ~pval_prim + ~pval_type + ?(local_module_name = "J") + ?(local_fun_name = "unsafe_expr") + args + : Parsetree.expression_desc = + Pexp_letmodule + ({txt = local_module_name; loc}, + {pmod_desc = + Pmod_structure + [{pstr_desc = + Pstr_primitive + {pval_name = {txt = local_fun_name; loc}; + pval_type ; + pval_loc = loc; + pval_prim ; + pval_attributes }; + pstr_loc = loc; + }]; + pmod_loc = loc; + pmod_attributes = []}, + Ast_compatible.apply_labels + ({pexp_desc = Pexp_ident {txt = Ldot (Lident local_module_name, local_fun_name); + loc}; + pexp_attributes = [] ; + pexp_loc = loc} : Parsetree.expression) args ~loc + ) let local_extern_cont loc ?(pval_attributes=[]) @@ -70576,8 +70781,8 @@ let generic_apply kind loc ["#method_run" ; string_arity], arrow ~loc "" (lift_method_type loc args_type result_type) fn_type in - Ast_external_mk.local_external loc ~pval_prim ~pval_type - (("", fn) :: Ext_list.map (fun x -> "",x) args ) + Ast_external_mk.local_external_apply loc ~pval_prim ~pval_type + ( fn :: args ) let uncurry_fn_apply loc self fn args = @@ -70670,7 +70875,7 @@ let generic_to_uncurry_exp kind loc (self : Bs_ast_mapper.mapper) pat body let result, rev_extra_args = aux [first_arg] body in let body = - List.fold_left (fun e p -> Ast_comb.fun_no_label ~loc p e ) + List.fold_left (fun e p -> Ast_compatible.fun_ ~loc p e ) result rev_extra_args in let len = List.length rev_extra_args in let arity = @@ -71054,7 +71259,7 @@ let record_as_js_object ({Asttypes.loc = loc ; txt = x} :: labels, (x, self.expr self e) :: args, i + 1) | Ldot _ | Lapply _ -> Location.raise_errorf ~loc "invalid js label ") label_exprs ([],[],0) in - Ast_external_mk.local_external loc + Ast_external_mk.local_external_obj loc ~pval_prim:(External_process.pval_prim_of_labels labels) ~pval_type:(Ast_core_type.from_labels ~loc arity labels) args @@ -71083,7 +71288,7 @@ let convertBsErrorFunction loc (self : Bs_ast_mapper.mapper) attrs (cases : Par (Ast_core_type.lift_option_type (Typ.any ~loc ())) in let () = checkCases cases in let cases = self.cases self cases in - Exp.fun_ ~attrs ~loc "" None ( Pat.var ~loc {txt; loc }) + Ast_compatible.fun_ ~attrs ~loc ( Pat.var ~loc {txt; loc }) (Exp.ifthenelse ~loc (Exp.apply ~loc (Exp.ident ~loc {txt = isCamlExceptionOrOpenVariant ; loc}) ["", txt_expr ]) @@ -110576,8 +110781,9 @@ val new_type_of_type_declaration : Parsetree.core_type * Parsetree.type_declaration val lift_string_list_to_array : string list -> Parsetree.expression -val lift_int : int -> Parsetree.expression -val lift_int_list_to_array : int list -> Parsetree.expression +(* val lift_int : int -> Parsetree.expression +val lift_int_list_to_array : int list -> Parsetree.expression *) + val mk_fun : loc:Location.t -> Parsetree.core_type -> @@ -110652,19 +110858,20 @@ let new_type_of_type_declaration let lift_string_list_to_array (labels : string list) = Exp.array - (Ext_list.map (fun s -> Exp.constant (Const_string (s, None))) - labels) + (Ext_list.map + (* Exp.constant (Const_string (s, None)) *) + (fun s -> Ast_compatible.const_exp_string s ) + labels) -let lift_int i = Exp.constant (Const_int i) +(* let lift_int i = Exp.constant (Const_int i) let lift_int_list_to_array (labels : int list) = Exp.array (Ext_list.map lift_int labels) - + *) let mk_fun ~loc (typ : Parsetree.core_type) (value : string) body : Parsetree.expression = - Exp.fun_ - "" None + Ast_compatible.fun_ (Pat.constraint_ (Pat.var {txt = value ; loc}) typ) body @@ -110912,7 +111119,7 @@ let init () = let newTypeStr = Str.type_ [newTdcl] in let toJsBody body = Ast_comb.single_non_rec_value patToJs - (Exp.fun_ "" None (Pat.constraint_ (Pat.var pat_param) core_type) + (Ast_compatible.fun_ (Pat.constraint_ (Pat.var pat_param) core_type) body ) in let (+>) a ty = @@ -110954,7 +111161,7 @@ let init () = ) label_declarations) None in let fromJs = Ast_comb.single_non_rec_value patFromJs - (Exp.fun_ "" None (Pat.var pat_param) + (Ast_compatible.fun_ (Pat.var pat_param) (if createType then (Exp.let_ Nonrecursive [Vb.mk @@ -111005,7 +111212,7 @@ let init () = ); Ast_comb.single_non_rec_value patFromJs - (Exp.fun_ "" None + (Ast_compatible.fun_ (Pat.var pat_param) (if createType then revSearchAssert @@ -111059,7 +111266,7 @@ let init () = ; Ast_comb.single_non_rec_value patFromJs - (Exp.fun_ "" None + (Ast_compatible.fun_ (Pat.var pat_param) ( if createType then @@ -111095,7 +111302,7 @@ let init () = Ast_comb.single_non_rec_value {loc ; txt = fromJs} - (Exp.fun_ "" None + (Ast_compatible.fun_ (Pat.var pat_param) (if createType then (Exp.let_ Nonrecursive @@ -111293,7 +111500,7 @@ let init () = fun ({pld_name = {loc; txt = pld_label} as pld_name} : Parsetree.label_declaration) -> let txt = "param" in Ast_comb.single_non_rec_value pld_name - (Exp.fun_ "" None + (Ast_compatible.fun_ (Pat.constraint_ (Pat.var {txt ; loc}) core_type ) (Exp.field (Exp.ident {txt = Lident txt ; loc}) {txt = Longident.Lident pld_label ; loc}) ) @@ -111334,7 +111541,7 @@ let init () = ) )) core_type in Ext_list.fold_right (fun var b -> - Exp.fun_ "" None (Pat.var {loc ; txt = var}) b + Ast_compatible.fun_ (Pat.var {loc ; txt = var}) b ) vars exp end) @@ -113059,10 +113266,10 @@ let concat_exp (a : Parsetree.expression) (b : Parsetree.expression) : Parsetree.expression = let loc = Bs_loc.merge a.pexp_loc b.pexp_loc in - Exp.apply ~loc + Ast_compatible.apply_simple ~loc (Exp.ident { txt =concat_ident; loc}) - ["",a ; - "",b] + [a ; + b] let border = String.length "{j|" @@ -113073,19 +113280,17 @@ let aux loc (segment : segment) = begin match kind with | String -> let loc = update border start finish loc in - Exp.constant - ~loc - (Const_string (content, escaped)) + Ast_compatible.const_exp_string + content ?delimiter:escaped ~loc | Var (soffset, foffset) -> let loc = { loc with loc_start = update_position (soffset + border) start loc.loc_start ; loc_end = update_position (foffset + border) finish loc.loc_start } in - Exp.apply ~loc + Ast_compatible.apply_simple ~loc (Exp.ident ~loc {loc ; txt = to_string_ident }) [ - "", Exp.ident ~loc {loc ; txt = Lident content} ] end @@ -113110,8 +113315,8 @@ let transform_interp loc s = let rev_segments = cxt.segments in match rev_segments with | [] -> - Exp.constant ~loc - (Const_string ("", Some Literals.escaped_j_delimiter)) + Ast_compatible.const_exp_string ~loc + "" ~delimiter:Literals.escaped_j_delimiter | [ segment] -> aux loc segment | a::rest -> From a8a4ea0dd5de40b7f27a3b665cf2b14435f189c5 Mon Sep 17 00:00:00 2001 From: Hongbo Date: Wed, 8 Aug 2018 21:18:42 +0800 Subject: [PATCH 2/3] move more to compatible layer --- jscomp/all.depend | 1923 +++++++++++++++--------------- jscomp/bin/all_ounit_tests.ml | 67 ++ jscomp/syntax/ast_compatible.ml | 44 + jscomp/syntax/ast_compatible.mli | 23 + jscomp/syntax/ast_derive_dyn.ml | 2 +- lib/bsdep.ml | 67 ++ lib/bsppx.ml | 67 ++ lib/whole_compiler.ml | 67 ++ 8 files changed, 1299 insertions(+), 961 deletions(-) diff --git a/jscomp/all.depend b/jscomp/all.depend index 31deaec472..63e213cb1b 100644 --- a/jscomp/all.depend +++ b/jscomp/all.depend @@ -1,492 +1,667 @@ -bsb/bsb_build_schemas.cmx : -bsb/bsb_build_util.cmx : ext/string_map.cmx ext/string_hashtbl.cmx \ - ext/literals.cmx ext/ext_sys.cmx ext/ext_string.cmx ext/ext_path.cmx \ - ext/ext_list.cmx ext/ext_json_types.cmx ext/ext_json_parse.cmx \ - ext/ext_json.cmx ext/ext_array.cmx bsb/bsb_pkg.cmx bsb/bsb_log.cmx \ - bsb/bsb_exception.cmx bsb/bsb_build_schemas.cmx bsb/bsb_build_util.cmi -bsb/bsb_build_util.cmi : ext/ext_json_types.cmx -bsb/bsb_clean.cmx : ext/ext_path.cmx bsb/bsb_unix.cmx \ - bsb/bsb_parse_sources.cmx bsb/bsb_log.cmx bsb/bsb_config.cmx \ - bsb/bsb_build_util.cmx bsb/bsb_clean.cmi -bsb/bsb_clean.cmi : -bsb/bsb_config.cmx : ext/ext_path.cmx bsb/bsb_config.cmi -bsb/bsb_config.cmi : -bsb/bsb_config_parse.cmx : ext/string_map.cmx ext/string_hash_set.cmx \ - ext/literals.cmx ext/ext_path.cmx ext/ext_namespace.cmx ext/ext_list.cmx \ - ext/ext_json_types.cmx ext/ext_json_parse.cmx ext/ext_json.cmx \ - ext/ext_file_pp.cmx ext/ext_array.cmx bsb/bsb_watcher_gen.cmx \ - bsb/bsb_warning.cmx bsb/bsb_pkg.cmx bsb/bsb_parse_sources.cmx \ - bsb/bsb_package_specs.cmx bsb/bsb_exception.cmx bsb/bsb_default.cmx \ - bsb/bsb_config_types.cmx bsb/bsb_config.cmx bsb/bsb_build_util.cmx \ - bsb/bsb_build_schemas.cmx common/bs_version.cmx bsb/bsb_config_parse.cmi -bsb/bsb_config_parse.cmi : bsb/bsb_package_specs.cmi \ - bsb/bsb_config_types.cmx -bsb/bsb_config_types.cmx : ext/string_map.cmx ext/string_hash_set.cmx \ - bsb/bsb_warning.cmx bsb/bsb_package_specs.cmx bsb/bsb_file_groups.cmx -bsb/bsb_db.cmx : ext/string_map.cmx ext/ext_string.cmx \ - ext/ext_pervasives.cmx ext/ext_path.cmx ext/ext_modulename.cmx \ - bsb/bsb_exception.cmx bsb/bsb_db.cmi -bsb/bsb_db.cmi : ext/string_map.cmi -bsb/bsb_default.cmx : bsb/bsb_config_types.cmx bsb/bsb_default.cmi -bsb/bsb_default.cmi : bsb/bsb_config_types.cmx -bsb/bsb_dir_index.cmx : bsb/bsb_dir_index.cmi -bsb/bsb_dir_index.cmi : -bsb/bsb_exception.cmx : ext/ext_string.cmx ext/ext_position.cmx \ - ext/ext_json.cmx common/bs_version.cmx bsb/bsb_exception.cmi -bsb/bsb_exception.cmi : ext/ext_position.cmi ext/ext_json_types.cmx -bsb/bsb_file.cmx : bsb/bsb_file.cmi -bsb/bsb_file.cmi : -bsb/bsb_file_groups.cmx : ext/string_set.cmx ext/string_map.cmx \ - ext/ext_list.cmx ext/ext_file_pp.cmx bsb/bsb_dir_index.cmx bsb/bsb_db.cmx -bsb/bsb_helper_dep_graph.cmx : ext/string_set.cmx ext/string_map.cmx \ - ext/string_hashtbl.cmx bsb/bsb_log.cmx bsb/bsb_helper_dep_graph.cmi -bsb/bsb_helper_dep_graph.cmi : ext/string_set.cmi ext/string_map.cmi \ - ext/string_hashtbl.cmi -bsb/bsb_helper_depfile_gen.cmx : ext/string_map.cmx ext/literals.cmx \ - ext/ext_string.cmx ext/ext_pervasives.cmx ext/ext_namespace.cmx \ - bsb/bsb_dir_index.cmx bsb/bsb_db.cmx bsb/bsb_helper_depfile_gen.cmi -bsb/bsb_helper_depfile_gen.cmi : bsb/bsb_dir_index.cmi -bsb/bsb_helper_extract.cmx : ext/string_set.cmx ext/ext_string.cmx \ - bsb/bsb_helper_extract.cmi -bsb/bsb_helper_extract.cmi : ext/string_set.cmi -bsb/bsb_helper_linker.cmx : ext/string_map.cmx ext/literals.cmx \ - ext/ext_path.cmx ext/ext_modulename.cmx bsb/bsb_helper_extract.cmx \ - bsb/bsb_helper_dep_graph.cmx bsb/bsb_helper_linker.cmi -bsb/bsb_helper_linker.cmi : -bsb/bsb_helper_main.cmx : ext/ext_path.cmx bsb/bsb_helper_depfile_gen.cmx \ - bsb/bsb_dir_index.cmx bsb/bsb_helper_main.cmi -bsb/bsb_helper_main.cmi : -bsb/bsb_helper_packer.cmx : ext/string_set.cmx ext/string_map.cmx \ - ext/literals.cmx ext/ext_path.cmx ext/ext_modulename.cmx \ - bsb/bsb_helper_extract.cmx bsb/bsb_helper_dep_graph.cmx \ - bsb/bsb_helper_packer.cmi -bsb/bsb_helper_packer.cmi : -bsb/bsb_log.cmx : ext/ext_string.cmx ext/ext_color.cmx bsb/bsb_log.cmi -bsb/bsb_log.cmi : -bsb/bsb_main.cmx : ext/ext_sys.cmx ext/ext_string.cmx ext/ext_pervasives.cmx \ - ext/ext_path.cmx ext/ext_json_parse.cmx ext/ext_array.cmx \ - bsb/bsb_world.cmx bsb/bsb_theme_init.cmx bsb/bsb_query.cmx \ - bsb/bsb_ninja_regen.cmx bsb/bsb_log.cmx bsb/bsb_exception.cmx \ - bsb/bsb_config.cmx bsb/bsb_clean.cmx bsb/bsb_build_util.cmx \ - common/bs_version.cmx bsb/bsb_main.cmi -bsb/bsb_main.cmi : -bsb/bsb_merlin_gen.cmx : ext/literals.cmx ext/ext_string.cmx \ - ext/ext_path.cmx bsb/bsb_warning.cmx bsb/bsb_file_groups.cmx \ - bsb/bsb_config_types.cmx bsb/bsb_config.cmx bsb/bsb_merlin_gen.cmi -bsb/bsb_merlin_gen.cmi : bsb/bsb_config_types.cmx -bsb/bsb_namespace_map_gen.cmx : ext/string_map.cmx ext/literals.cmx \ - ext/ext_path.cmx bsb/bsb_file_groups.cmx bsb/bsb_namespace_map_gen.cmi -bsb/bsb_namespace_map_gen.cmi : bsb/bsb_file_groups.cmx -bsb/bsb_ninja_check.cmx : ext/ext_array.cmx bsb/bsb_log.cmx \ - common/bs_version.cmx bsb/bsb_ninja_check.cmi -bsb/bsb_ninja_check.cmi : -bsb/bsb_ninja_file_groups.cmx : ext/string_set.cmx ext/string_map.cmx \ - ext/string_hash_set.cmx ext/literals.cmx ext/ext_string.cmx \ - ext/ext_pervasives.cmx ext/ext_path.cmx ext/ext_namespace.cmx \ - ext/ext_list.cmx bsb/bsb_rule.cmx bsb/bsb_package_specs.cmx \ - bsb/bsb_ninja_util.cmx bsb/bsb_ninja_global_vars.cmx \ - bsb/bsb_file_groups.cmx bsb/bsb_dir_index.cmx bsb/bsb_db.cmx \ - bsb/bsb_config.cmx bsb/bsb_build_schemas.cmx \ - bsb/bsb_ninja_file_groups.cmi -bsb/bsb_ninja_file_groups.cmi : ext/string_map.cmi ext/string_hash_set.cmi \ - bsb/bsb_rule.cmi bsb/bsb_package_specs.cmi bsb/bsb_file_groups.cmx -bsb/bsb_ninja_gen.cmx : ext/string_map.cmx ext/literals.cmx \ - ext/ext_string.cmx ext/ext_path.cmx ext/ext_list.cmx bsb/bsb_warning.cmx \ - bsb/bsb_rule.cmx bsb/bsb_ninja_util.cmx bsb/bsb_ninja_global_vars.cmx \ - bsb/bsb_ninja_file_groups.cmx bsb/bsb_namespace_map_gen.cmx \ - bsb/bsb_log.cmx bsb/bsb_file_groups.cmx bsb/bsb_exception.cmx \ - bsb/bsb_dir_index.cmx bsb/bsb_default.cmx bsb/bsb_db.cmx \ - bsb/bsb_config_types.cmx bsb/bsb_config.cmx bsb/bsb_build_util.cmx \ - bsb/bsb_build_schemas.cmx bsb/bsb_ninja_gen.cmi -bsb/bsb_ninja_gen.cmi : bsb/bsb_config_types.cmx -bsb/bsb_ninja_global_vars.cmx : -bsb/bsb_ninja_regen.cmx : ext/literals.cmx ext/ext_path.cmx \ - bsb/bsb_ninja_gen.cmx bsb/bsb_ninja_check.cmx bsb/bsb_merlin_gen.cmx \ - bsb/bsb_log.cmx bsb/bsb_config_parse.cmx bsb/bsb_config.cmx \ - bsb/bsb_clean.cmx bsb/bsb_build_util.cmx bsb/bsb_ninja_regen.cmi -bsb/bsb_ninja_regen.cmi : bsb/bsb_package_specs.cmi bsb/bsb_config_types.cmx -bsb/bsb_ninja_util.cmx : ext/ext_string.cmx bsb/bsb_rule.cmx \ - bsb/bsb_ninja_util.cmi -bsb/bsb_ninja_util.cmi : bsb/bsb_rule.cmi -bsb/bsb_package_specs.cmx : ext/string_map.cmx ext/literals.cmx \ - ext/ext_string.cmx ext/ext_path.cmx ext/ext_namespace.cmx \ - ext/ext_json_types.cmx ext/ext_json.cmx bsb/bsb_exception.cmx \ - bsb/bsb_config.cmx bsb/bsb_build_schemas.cmx bsb/bsb_package_specs.cmi -bsb/bsb_package_specs.cmi : ext/ext_json_types.cmx -bsb/bsb_parse_sources.cmx : ext/string_vec.cmx ext/string_set.cmx \ - ext/string_map.cmx ext/literals.cmx ext/ext_string.cmx \ - ext/ext_position.cmx ext/ext_path.cmx ext/ext_namespace.cmx \ - ext/ext_json_types.cmx ext/ext_json_parse.cmx ext/ext_json.cmx \ - ext/ext_filename.cmx ext/ext_file_pp.cmx ext/ext_array.cmx \ - bsb/bsb_log.cmx bsb/bsb_file_groups.cmx bsb/bsb_exception.cmx \ - bsb/bsb_dir_index.cmx bsb/bsb_db.cmx bsb/bsb_config.cmx \ - bsb/bsb_build_util.cmx bsb/bsb_build_schemas.cmx \ - bsb/bsb_parse_sources.cmi -bsb/bsb_parse_sources.cmi : ext/ext_json_types.cmx bsb/bsb_file_groups.cmx -bsb/bsb_pkg.cmx : ext/string_hashtbl.cmx ext/literals.cmx bsb/bsb_log.cmx \ - bsb/bsb_exception.cmx bsb/bsb_pkg.cmi -bsb/bsb_pkg.cmi : -bsb/bsb_query.cmx : ext/string_map.cmx ext/ext_json_noloc.cmx \ - ext/ext_array.cmx bsb/bsb_ninja_regen.cmx bsb/bsb_file_groups.cmx \ - bsb/bsb_config_types.cmx bsb/bsb_query.cmi -bsb/bsb_query.cmi : -bsb/bsb_regex.cmx : bsb/bsb_regex.cmi -bsb/bsb_regex.cmi : -bsb/bsb_rule.cmx : ext/string_set.cmx ext/string_map.cmx ext/ext_sys.cmx \ - bsb/bsb_rule.cmi -bsb/bsb_rule.cmi : ext/string_map.cmi -bsb/bsb_templates.cmx : bsb/oCamlRes.cmx bsb/bsb_templates.cmi -bsb/bsb_templates.cmi : bsb/oCamlRes.cmx -bsb/bsb_theme_init.cmx : ext/string_map.cmx ext/string_hashtbl.cmx \ - bsb/oCamlRes.cmx ext/literals.cmx ext/ext_sys.cmx ext/ext_namespace.cmx \ - ext/ext_json_parse.cmx ext/ext_io.cmx bsb/bsb_templates.cmx \ - bsb/bsb_regex.cmx bsb/bsb_build_util.cmx bsb/bsb_build_schemas.cmx \ - common/bs_version.cmx bsb/bsb_theme_init.cmi -bsb/bsb_theme_init.cmi : -bsb/bsb_unix.cmx : ext/ext_sys.cmx ext/ext_string.cmx bsb/bsb_log.cmx \ - bsb/bsb_unix.cmi -bsb/bsb_unix.cmi : -bsb/bsb_warning.cmx : ext/string_map.cmx ext/ext_string.cmx \ - ext/ext_json_types.cmx bsb/bsb_exception.cmx bsb/bsb_build_schemas.cmx \ - bsb/bsb_warning.cmi -bsb/bsb_warning.cmi : ext/string_map.cmi ext/ext_json_types.cmx -bsb/bsb_watcher_gen.cmx : ext/ext_path.cmx ext/ext_list.cmx \ - ext/ext_json_noloc.cmx ext/ext_array.cmx bsb/bsb_file_groups.cmx \ - bsb/bsb_config.cmx bsb/bsb_watcher_gen.cmi -bsb/bsb_watcher_gen.cmi : bsb/bsb_file_groups.cmx -bsb/bsb_world.cmx : ext/string_hash_set.cmx ext/literals.cmx \ - ext/ext_path.cmx ext/ext_namespace.cmx bsb/bsb_unix.cmx \ - bsb/bsb_ninja_regen.cmx bsb/bsb_log.cmx bsb/bsb_file.cmx \ - bsb/bsb_config_types.cmx bsb/bsb_config_parse.cmx bsb/bsb_config.cmx \ - bsb/bsb_build_util.cmx bsb/bsb_world.cmi -bsb/bsb_world.cmi : bsb/bsb_config_types.cmx -bsb/oCamlRes.cmx : -common/bs_loc.cmx : common/bs_loc.cmi -common/bs_loc.cmi : +stubs/bs_hash_stubs.cmx : +ext/literals.cmx : ext/literals.cmi +ext/ext_util.cmx : ext/ext_util.cmi +ext/ext_int.cmx : ext/ext_int.cmi +ext/ext_position.cmx : ext/ext_position.cmi +ext/ext_cmp.cmx : ext/ext_cmp.cmi +ext/ext_array.cmx : ext/ext_array.cmi +ext/ext_bytes.cmx : ext/ext_bytes.cmi +ext/ext_char.cmx : ext/ext_char.cmi +ext/vec_gen.cmx : +ext/resize_array.cmx : ext/vec_gen.cmx ext/ext_array.cmx \ + ext/resize_array.cmi +ext/string_vec.cmx : ext/resize_array.cmx ext/string_vec.cmi +ext/int_vec.cmx : ext/ext_array.cmx stubs/bs_hash_stubs.cmx ext/int_vec.cmi +ext/int_vec_util.cmx : ext/int_vec.cmx ext/int_vec_util.cmi +ext/int_vec_vec.cmx : ext/resize_array.cmx ext/int_vec.cmx \ + ext/int_vec_vec.cmi +ext/set_gen.cmx : +ext/map_gen.cmx : +ext/ext_file_pp.cmx : ext/string_vec.cmx ext/ext_file_pp.cmi +ext/ext_format.cmx : ext/ext_format.cmi +ext/hashtbl_gen.cmx : ext/ext_util.cmx +ext/ext_string.cmx : ext/ext_bytes.cmx ext/ext_string.cmi +ext/ext_utf8.cmx : ext/ext_utf8.cmi +ext/ext_js_regex.cmx : ext/ext_utf8.cmx ext/ext_js_regex.cmi +ext/string_hashtbl.cmx : ext/hashtbl_gen.cmx ext/ext_string.cmx \ + stubs/bs_hash_stubs.cmx ext/string_hashtbl.cmi +ext/ext_list.cmx : ext/ext_string.cmx ext/ext_list.cmi +ext/ext_stack.cmx : ext/ext_stack.cmi +ext/ext_color.cmx : ext/ext_list.cmx ext/ext_color.cmi +ext/ext_marshal.cmx : ext/ext_marshal.cmi +ext/ext_option.cmx : ext/ext_option.cmi +ext/ext_pervasives.cmx : ext/ext_list.cmx ext/ext_pervasives.cmi +ext/ext_pp.cmx : ext/ext_pervasives.cmx ext/ext_pp.cmi +ext/ext_ref.cmx : ext/ext_list.cmx ext/ext_ref.cmi +ext/ext_sys.cmx : ext/ext_sys.cmi +ext/hash_set_gen.cmx : ext/ext_util.cmx +ext/hash_set.cmx : ext/hash_set_gen.cmx ext/hash_set.cmi +ext/string_hash_set.cmx : ext/hash_set_gen.cmx ext/ext_string.cmx \ + stubs/bs_hash_stubs.cmx ext/string_hash_set.cmi +ext/ext_ident.cmx : ext/string_hashtbl.cmx ext/string_hash_set.cmx \ + ext/literals.cmx ext/ext_string.cmx ext/ext_list.cmx ext/ext_ident.cmi +ext/int_hash_set.cmx : ext/hash_set_gen.cmx ext/ext_int.cmx \ + stubs/bs_hash_stubs.cmx ext/int_hash_set.cmi +ext/hash_set_ident_mask.cmx : ext/ext_util.cmx ext/ext_ident.cmx \ + stubs/bs_hash_stubs.cmx ext/hash_set_ident_mask.cmi +ext/ordered_hash_set_gen.cmx : ext/ext_util.cmx +ext/ordered_hash_set_string.cmx : ext/ordered_hash_set_gen.cmx \ + ext/ext_util.cmx ext/ext_string.cmx stubs/bs_hash_stubs.cmx \ + ext/ordered_hash_set_string.cmi +ext/ordered_hash_set_ident.cmx : ext/ordered_hash_set_gen.cmx \ + ext/ext_util.cmx ext/ext_ident.cmx stubs/bs_hash_stubs.cmx \ + ext/ordered_hash_set_ident.cmi +ext/ordered_hash_set_make.cmx : ext/ordered_hash_set_gen.cmx \ + ext/ext_util.cmx +ext/ordered_hash_map_gen.cmx : ext/ext_util.cmx +ext/union_find.cmx : ext/union_find.cmi +ext/ident_map.cmx : ext/map_gen.cmx ext/ext_ident.cmx ext/ident_map.cmi +ext/ident_set.cmx : ext/set_gen.cmx ext/ident_set.cmi +ext/hashtbl_make.cmx : ext/hashtbl_gen.cmx ext/hashtbl_make.cmi +ext/ordered_hash_map_local_ident.cmx : ext/ordered_hash_map_gen.cmx \ + ext/ext_ident.cmx stubs/bs_hash_stubs.cmx \ + ext/ordered_hash_map_local_ident.cmi +ext/int_map.cmx : ext/map_gen.cmx ext/ext_int.cmx ext/int_map.cmi +ext/string_map.cmx : ext/map_gen.cmx ext/ext_string.cmx ext/string_map.cmi +ext/string_set.cmx : ext/set_gen.cmx ext/ext_string.cmx ext/string_set.cmi +ext/set_int.cmx : ext/set_gen.cmx ext/ext_int.cmx ext/set_int.cmi +ext/ext_scc.cmx : ext/int_vec_vec.cmx ext/int_vec.cmx ext/ext_scc.cmi +ext/ext_topsort.cmx : ext/set_int.cmx ext/resize_array.cmx ext/int_vec.cmx \ + ext/ext_topsort.cmi +ext/ext_pp_scope.cmx : ext/string_map.cmx ext/int_map.cmx ext/ident_set.cmx \ + ext/ext_pp.cmx ext/ext_ident.cmx ext/ext_pp_scope.cmi +ext/ext_io.cmx : ext/ext_pervasives.cmx ext/ext_io.cmi +ext/ext_json_types.cmx : ext/string_map.cmx +ext/ext_json_noloc.cmx : ext/string_map.cmx ext/ext_array.cmx \ + ext/ext_json_noloc.cmi +ext/ext_json_parse.cmx : ext/string_map.cmx ext/ext_position.cmx \ + ext/ext_json_types.cmx ext/ext_array.cmx ext/ext_json_parse.cmi +ext/ext_json_write.cmx : ext/string_map.cmx ext/ext_json_types.cmx \ + ext/ext_json_write.cmi +ext/ext_json.cmx : ext/string_map.cmx ext/ext_json_types.cmx \ + ext/ext_array.cmx ext/ext_json.cmi +ext/ident_hash_set.cmx : ext/hash_set_gen.cmx ext/ext_ident.cmx \ + stubs/bs_hash_stubs.cmx ext/ident_hash_set.cmi +ext/hash_set_poly.cmx : ext/hash_set_gen.cmx ext/hash_set_poly.cmi +ext/ident_hashtbl.cmx : ext/hashtbl_gen.cmx ext/ext_ident.cmx \ + stubs/bs_hash_stubs.cmx ext/ident_hashtbl.cmi +ext/int_hashtbl.cmx : ext/hashtbl_gen.cmx ext/ext_int.cmx \ + stubs/bs_hash_stubs.cmx ext/int_hashtbl.cmi +ext/ext_path.cmx : ext/literals.cmx ext/ext_string.cmx \ + ext/ext_pervasives.cmx ext/ext_list.cmx ext/ext_path.cmi +ext/ext_filename.cmx : ext/literals.cmx ext/ext_string.cmx \ + ext/ext_pervasives.cmx ext/ext_path.cmx ext/ext_filename.cmi +ext/ext_modulename.cmx : ext/ext_string.cmx ext/ext_path.cmx \ + ext/ext_char.cmx ext/ext_modulename.cmi +ext/ext_namespace.cmx : ext/ext_string.cmx ext/ext_char.cmx \ + ext/ext_namespace.cmi +ext/literals.cmi : +ext/ext_util.cmi : +ext/ext_int.cmi : +ext/ext_position.cmi : +ext/ext_cmp.cmi : +ext/ext_array.cmi : +ext/ext_bytes.cmi : +ext/ext_char.cmi : +ext/resize_array.cmi : ext/vec_gen.cmx +ext/string_vec.cmi : ext/vec_gen.cmx +ext/int_vec.cmi : ext/vec_gen.cmx +ext/int_vec_util.cmi : ext/int_vec.cmi +ext/int_vec_vec.cmi : ext/vec_gen.cmx ext/int_vec.cmi +ext/ext_file_pp.cmi : ext/string_vec.cmi +ext/ext_format.cmi : +ext/ext_string.cmi : +ext/ext_utf8.cmi : +ext/ext_js_regex.cmi : +ext/string_hashtbl.cmi : ext/hashtbl_gen.cmx +ext/ext_list.cmi : +ext/ext_stack.cmi : +ext/ext_color.cmi : +ext/ext_marshal.cmi : +ext/ext_option.cmi : +ext/ext_pervasives.cmi : +ext/ext_pp.cmi : +ext/ext_ref.cmi : +ext/ext_sys.cmi : +ext/hash_set.cmi : ext/hash_set_gen.cmx +ext/string_hash_set.cmi : ext/hash_set_gen.cmx +ext/ext_ident.cmi : +ext/int_hash_set.cmi : ext/hash_set_gen.cmx +ext/hash_set_ident_mask.cmi : +ext/ordered_hash_set_string.cmi : ext/ordered_hash_set_gen.cmx +ext/ordered_hash_set_ident.cmi : ext/ordered_hash_set_gen.cmx +ext/union_find.cmi : +ext/ident_map.cmi : ext/map_gen.cmx +ext/ident_set.cmi : ext/set_gen.cmx +ext/hashtbl_make.cmi : ext/hashtbl_gen.cmx +ext/ordered_hash_map_local_ident.cmi : ext/ordered_hash_map_gen.cmx +ext/int_map.cmi : ext/map_gen.cmx +ext/string_map.cmi : ext/map_gen.cmx +ext/string_set.cmi : +ext/set_int.cmi : ext/set_gen.cmx +ext/ext_scc.cmi : ext/int_vec_vec.cmi ext/int_vec.cmi +ext/ext_topsort.cmi : ext/vec_gen.cmx ext/set_int.cmi ext/int_vec.cmi +ext/ext_pp_scope.cmi : ext/ident_set.cmi ext/ext_pp.cmi +ext/ext_io.cmi : +ext/ext_json_noloc.cmi : ext/string_map.cmi +ext/ext_json_parse.cmi : ext/ext_json_types.cmx +ext/ext_json_write.cmi : +ext/ext_json.cmi : ext/string_map.cmi ext/ext_position.cmi \ + ext/ext_json_types.cmx +ext/ident_hash_set.cmi : ext/hash_set_gen.cmx +ext/hash_set_poly.cmi : +ext/ident_hashtbl.cmi : ext/hashtbl_gen.cmx +ext/int_hashtbl.cmi : ext/hashtbl_gen.cmx +ext/ext_path.cmi : +ext/ext_filename.cmi : +ext/ext_modulename.cmi : +ext/ext_namespace.cmi : common/bs_version.cmx : common/bs_version.cmi -common/bs_version.cmi : -common/bs_warnings.cmx : common/js_config.cmx common/bs_warnings.cmi -common/bs_warnings.cmi : -common/ext_log.cmx : common/js_config.cmx common/ext_log.cmi -common/ext_log.cmi : common/js_config.cmx : ext/ext_string.cmx common/js_config.cmi -common/js_config.cmi : +common/ext_log.cmx : common/js_config.cmx common/ext_log.cmi +common/bs_loc.cmx : common/bs_loc.cmi +common/bs_warnings.cmx : common/js_config.cmx common/bs_warnings.cmi common/lam_methname.cmx : ext/string_hash_set.cmx ext/ext_string.cmx \ common/lam_methname.cmi -common/lam_methname.cmi : common/ml_binary.cmx : common/ml_binary.cmi +common/bs_version.cmi : +common/js_config.cmi : +common/ext_log.cmi : +common/bs_loc.cmi : +common/bs_warnings.cmi : +common/lam_methname.cmi : common/ml_binary.cmi : -core/astdump_main.cmx : common/ml_binary.cmx ext/ext_path.cmx \ - bsb/bsb_helper_depfile_gen.cmx -core/bs_conditional_initial.cmx : common/js_config.cmx common/bs_version.cmx \ - core/bs_conditional_initial.cmi -core/bs_conditional_initial.cmi : -core/bspack_main.cmx : ext/string_hashtbl.cmx ext/ext_string.cmx \ - ext/ext_pervasives.cmx ext/ext_path.cmx ext/ext_list.cmx ext/ext_io.cmx \ - depends/ast_extract.cmx core/bspack_main.cmi -core/bspack_main.cmi : -core/bspp_main.cmx : core/bspp_main.cmi -core/bspp_main.cmi : -core/bsppx_main.cmx : syntax/ppx_entry.cmx -core/cmjdump_main.cmx : ext/string_map.cmx core/lam_arity.cmx \ - core/js_packages_info.cmx core/js_cmj_format.cmx -core/config_util.cmx : ext/ext_string.cmx core/config_util.cmi +syntax/bs_syntaxerr.cmx : syntax/bs_syntaxerr.cmi +syntax/ast_compatible.cmx : ext/ext_list.cmx syntax/ast_compatible.cmi +syntax/ast_utf8_string.cmx : ext/ext_utf8.cmx ext/ext_char.cmx \ + syntax/ast_utf8_string.cmi +syntax/ast_utf8_string_interp.cmx : ext/literals.cmx ext/ext_utf8.cmx \ + ext/ext_string.cmx ext/ext_char.cmx common/bs_loc.cmx \ + syntax/ast_compatible.cmx syntax/ast_utf8_string_interp.cmi +syntax/ast_derive_constructor.cmx : +syntax/ast_derive_util.cmx : ext/ext_list.cmx syntax/ast_compatible.cmx \ + syntax/ast_derive_util.cmi +syntax/ast_exp.cmx : syntax/ast_exp.cmi +syntax/ast_external_mk.cmx : syntax/ast_compatible.cmx \ + syntax/ast_external_mk.cmi +syntax/ast_lift.cmx : syntax/ast_lift.cmi +syntax/ast_literal.cmx : syntax/ast_literal.cmi +syntax/ast_pat.cmx : syntax/ast_pat.cmi +syntax/external_arg_spec.cmx : ext/ext_position.cmx ext/ext_json_parse.cmx \ + syntax/external_arg_spec.cmi +syntax/ast_payload.cmx : ext/string_map.cmx ext/ext_list.cmx \ + ext/ext_js_regex.cmx syntax/ast_payload.cmi +syntax/ast_signature.cmx : syntax/ast_signature.cmi +syntax/ast_structure.cmx : syntax/ast_signature.cmx syntax/ast_literal.cmx \ + syntax/ast_structure.cmi +syntax/bs_ast_iterator.cmx : syntax/bs_ast_iterator.cmi +syntax/bs_ast_mapper.cmx : syntax/bs_ast_mapper.cmi +syntax/ast_derive.cmx : ext/string_map.cmx ext/literals.cmx \ + ext/ext_string.cmx ext/ext_list.cmx syntax/bs_syntaxerr.cmx \ + syntax/ast_structure.cmx syntax/ast_signature.cmx syntax/ast_payload.cmx \ + syntax/ast_derive.cmi +syntax/ast_comb.cmx : ext/ext_list.cmx syntax/ast_literal.cmx \ + syntax/ast_comb.cmi +syntax/ast_core_type.cmx : ext/ext_list.cmx syntax/bs_syntaxerr.cmx \ + syntax/ast_comb.cmx syntax/ast_core_type.cmi +syntax/bs_ast_invariant.cmx : ext/literals.cmx ext/hash_set_poly.cmx \ + ext/ext_string.cmx common/bs_warnings.cmx syntax/bs_ast_iterator.cmx \ + syntax/ast_core_type.cmx syntax/bs_ast_invariant.cmi +syntax/ast_attributes.cmx : ext/ext_string.cmx syntax/bs_syntaxerr.cmx \ + syntax/bs_ast_invariant.cmx syntax/ast_payload.cmx \ + syntax/ast_attributes.cmi +syntax/ast_polyvar.cmx : syntax/external_arg_spec.cmx ext/ext_pervasives.cmx \ + ext/ext_list.cmx syntax/bs_syntaxerr.cmx syntax/ast_attributes.cmx \ + syntax/ast_polyvar.cmi +syntax/external_ffi_types.cmx : syntax/external_arg_spec.cmx \ + ext/ext_string.cmx ext/ext_pervasives.cmx common/bs_version.cmx \ + syntax/external_ffi_types.cmi +syntax/external_process.cmx : common/lam_methname.cmx \ + syntax/external_ffi_types.cmx syntax/external_arg_spec.cmx \ + ext/ext_string.cmx ext/ext_list.cmx common/bs_warnings.cmx \ + syntax/bs_syntaxerr.cmx common/bs_loc.cmx syntax/bs_ast_invariant.cmx \ + syntax/ast_polyvar.cmx syntax/ast_payload.cmx syntax/ast_literal.cmx \ + syntax/ast_core_type.cmx syntax/ast_comb.cmx syntax/ast_attributes.cmx \ + syntax/external_process.cmi +syntax/ast_derive_abstract.cmx : syntax/external_process.cmx \ + syntax/external_ffi_types.cmx syntax/external_arg_spec.cmx \ + ext/ext_list.cmx syntax/ast_literal.cmx syntax/ast_derive_util.cmx \ + syntax/ast_core_type.cmx syntax/ast_attributes.cmx \ + syntax/ast_derive_abstract.cmi +syntax/ast_derive_dyn.cmx : ext/ext_list.cmx syntax/bs_syntaxerr.cmx \ + syntax/ast_structure.cmx syntax/ast_derive_util.cmx syntax/ast_derive.cmx \ + syntax/ast_compatible.cmx syntax/ast_attributes.cmx \ + syntax/ast_derive_dyn.cmi +syntax/ast_derive_projector.cmx : ext/ext_string.cmx ext/ext_list.cmx \ + syntax/ast_derive_util.cmx syntax/ast_derive.cmx \ + syntax/ast_compatible.cmx syntax/ast_comb.cmx \ + syntax/ast_derive_projector.cmi +syntax/ast_derive_js_mapper.cmx : ext/ext_list.cmx syntax/ast_polyvar.cmx \ + syntax/ast_literal.cmx syntax/ast_derive_util.cmx syntax/ast_derive.cmx \ + syntax/ast_core_type.cmx syntax/ast_compatible.cmx syntax/ast_comb.cmx \ + syntax/ast_derive_js_mapper.cmi +syntax/ast_util.cmx : ext/literals.cmx syntax/external_process.cmx \ + ext/ext_string.cmx ext/ext_list.cmx syntax/bs_syntaxerr.cmx \ + syntax/bs_ast_mapper.cmx syntax/ast_payload.cmx syntax/ast_pat.cmx \ + syntax/ast_literal.cmx syntax/ast_external_mk.cmx syntax/ast_exp.cmx \ + syntax/ast_core_type.cmx syntax/ast_compatible.cmx syntax/ast_comb.cmx \ + syntax/ast_attributes.cmx syntax/ast_util.cmi +syntax/ast_tdcls.cmx : ext/ext_list.cmx syntax/bs_ast_mapper.cmx \ + syntax/ast_structure.cmx syntax/ast_signature.cmx syntax/ast_payload.cmx \ + syntax/ast_derive_abstract.cmx syntax/ast_derive.cmx \ + syntax/ast_attributes.cmx syntax/ast_tdcls.cmi +syntax/ast_primitive.cmx : syntax/external_process.cmx \ + syntax/bs_ast_mapper.cmx syntax/ast_primitive.cmi +syntax/ast_tuple_pattern_flatten.cmx : ext/ext_list.cmx \ + syntax/bs_ast_mapper.cmx syntax/bs_ast_invariant.cmx \ + syntax/ast_tuple_pattern_flatten.cmi +syntax/ast_exp_apply.cmx : ext/literals.cmx ext/ext_list.cmx \ + syntax/bs_ast_mapper.cmx syntax/bs_ast_invariant.cmx syntax/ast_util.cmx \ + syntax/ast_tuple_pattern_flatten.cmx syntax/ast_literal.cmx \ + syntax/ast_attributes.cmx syntax/ast_exp_apply.cmi +syntax/ast_exp_extension.cmx : ext/literals.cmx ext/ext_string.cmx \ + ext/ext_ref.cmx ext/ext_pervasives.cmx common/bs_version.cmx \ + syntax/bs_ast_mapper.cmx syntax/ast_util.cmx syntax/ast_payload.cmx \ + syntax/ast_literal.cmx syntax/ast_derive.cmx syntax/ast_core_type.cmx \ + syntax/ast_comb.cmx syntax/ast_exp_extension.cmi +syntax/ast_core_type_class_type.cmx : ext/literals.cmx ext/ext_ref.cmx \ + ext/ext_list.cmx syntax/bs_ast_mapper.cmx syntax/ast_util.cmx \ + syntax/ast_literal.cmx syntax/ast_comb.cmx syntax/ast_attributes.cmx \ + syntax/ast_core_type_class_type.cmi +syntax/ppx_entry.cmx : ext/string_map.cmx ext/literals.cmx \ + common/js_config.cmx ext/ext_string.cmx syntax/bs_ast_mapper.cmx \ + syntax/bs_ast_invariant.cmx syntax/ast_util.cmx \ + syntax/ast_utf8_string_interp.cmx syntax/ast_utf8_string.cmx \ + syntax/ast_tuple_pattern_flatten.cmx syntax/ast_tdcls.cmx \ + syntax/ast_structure.cmx syntax/ast_primitive.cmx syntax/ast_payload.cmx \ + syntax/ast_literal.cmx syntax/ast_exp_extension.cmx \ + syntax/ast_exp_apply.cmx syntax/ast_derive_projector.cmx \ + syntax/ast_derive_js_mapper.cmx syntax/ast_core_type_class_type.cmx \ + syntax/ast_attributes.cmx syntax/ppx_entry.cmi +syntax/bs_syntaxerr.cmi : +syntax/ast_compatible.cmi : +syntax/ast_utf8_string.cmi : +syntax/ast_utf8_string_interp.cmi : +syntax/ast_derive_util.cmi : +syntax/ast_exp.cmi : +syntax/ast_external_mk.cmi : +syntax/ast_lift.cmi : +syntax/ast_literal.cmi : +syntax/ast_pat.cmi : +syntax/external_arg_spec.cmi : +syntax/ast_payload.cmi : ext/string_map.cmi +syntax/ast_signature.cmi : +syntax/ast_structure.cmi : syntax/ast_signature.cmi +syntax/bs_ast_iterator.cmi : +syntax/bs_ast_mapper.cmi : +syntax/ast_derive.cmi : syntax/ast_structure.cmi syntax/ast_signature.cmi \ + syntax/ast_payload.cmi +syntax/ast_comb.cmi : +syntax/ast_core_type.cmi : +syntax/bs_ast_invariant.cmi : syntax/bs_ast_iterator.cmi +syntax/ast_attributes.cmi : syntax/ast_payload.cmi +syntax/ast_polyvar.cmi : syntax/external_arg_spec.cmi +syntax/external_ffi_types.cmi : syntax/external_arg_spec.cmi +syntax/external_process.cmi : common/bs_loc.cmi syntax/ast_core_type.cmi \ + syntax/ast_attributes.cmi +syntax/ast_derive_abstract.cmi : +syntax/ast_derive_dyn.cmi : +syntax/ast_derive_projector.cmi : +syntax/ast_derive_js_mapper.cmi : +syntax/ast_util.cmi : syntax/bs_ast_mapper.cmi syntax/ast_payload.cmi +syntax/ast_tdcls.cmi : syntax/bs_ast_mapper.cmi syntax/ast_structure.cmi \ + syntax/ast_signature.cmi +syntax/ast_primitive.cmi : syntax/bs_ast_mapper.cmi +syntax/ast_tuple_pattern_flatten.cmi : syntax/bs_ast_mapper.cmi +syntax/ast_exp_apply.cmi : syntax/bs_ast_mapper.cmi +syntax/ast_exp_extension.cmi : syntax/bs_ast_mapper.cmi +syntax/ast_core_type_class_type.cmi : syntax/bs_ast_mapper.cmi +syntax/ppx_entry.cmi : +depends/bs_exception.cmi : +depends/ast_extract.cmi : ext/string_map.cmi ext/string_hashtbl.cmi \ + common/ml_binary.cmi +depends/binary_ast.cmi : common/ml_binary.cmi +depends/bs_exception.cmx : depends/bs_exception.cmi +depends/ast_extract.cmx : ext/string_map.cmx ext/string_hashtbl.cmx \ + common/ml_binary.cmx common/js_config.cmx ext/ext_string.cmx \ + ext/ext_path.cmx ext/ext_modulename.cmx ext/ext_list.cmx \ + ext/ext_format.cmx depends/bs_exception.cmx depends/ast_extract.cmi +depends/binary_ast.cmx : common/ml_binary.cmx depends/ast_extract.cmx \ + depends/binary_ast.cmi core/config_util.cmi : -core/j.cmx : core/js_op.cmx core/js_fun_env.cmx core/js_closure.cmx \ - core/js_call_info.cmx ext/ident_set.cmx -core/js_analyzer.cmx : core/js_fun_env.cmx core/js_fold.cmx core/j.cmx \ - ext/ident_set.cmx core/js_analyzer.cmi -core/js_analyzer.cmi : core/j.cmx ext/ident_set.cmi -core/js_arr.cmx : core/js_exp_make.cmx core/js_arr.cmi -core/js_arr.cmi : core/j.cmx -core/js_ast_util.cmx : core/js_stmt_make.cmx core/js_exp_make.cmx \ - core/js_analyzer.cmx core/j.cmx ext/ext_ident.cmx core/js_ast_util.cmi -core/js_ast_util.cmi : core/j.cmx -core/js_call_info.cmx : core/js_call_info.cmi +core/js_packages_info.cmi : core/lam_module_ident.cmi ext/ext_namespace.cmi +core/js_packages_state.cmi : core/js_packages_info.cmi +core/ocaml_types.cmi : +core/bs_conditional_initial.cmi : +core/ocaml_options.cmi : +core/ocaml_parse.cmi : +core/lam_module_ident.cmi : core/js_op.cmx core/j.cmx ext/hashtbl_gen.cmx \ + ext/hash_set_gen.cmx +core/lam_arity.cmi : +core/lam.cmi : core/lam_tag_info.cmx core/lam_module_ident.cmi \ + ext/ident_set.cmi syntax/external_ffi_types.cmi \ + syntax/external_arg_spec.cmi +core/lam_print.cmi : core/lam.cmi +core/lam_beta_reduce_util.cmi : core/lam.cmi +core/lam_inline_util.cmi : core/lam.cmi +core/lam_analysis.cmi : core/lam.cmi +core/lam_closure.cmi : core/lam.cmi ext/ident_set.cmi ext/ident_map.cmi +core/js_cmj_format.cmi : ext/string_map.cmi core/lam_arity.cmi core/lam.cmi \ + core/js_packages_info.cmi ext/ext_namespace.cmi +core/js_cmj_load.cmi : core/js_cmj_format.cmi +core/js_fun_env.cmi : ext/ident_set.cmi core/js_call_info.cmi : -core/js_closure.cmx : ext/ident_set.cmx core/js_closure.cmi core/js_closure.cmi : ext/ident_set.cmi -core/js_cmi_datasets.cmx : ext/string_map.cmx core/js_cmi_datasets.cmi -core/js_cmi_datasets.cmi : ext/string_map.cmi -core/js_cmj_datasets.cmx : ext/string_map.cmx core/js_cmj_format.cmx \ - core/js_cmj_datasets.cmi +core/js_number.cmi : core/js_cmj_datasets.cmi : ext/string_map.cmi core/js_cmj_format.cmi +core/lam_exit_code.cmi : core/lam.cmi +core/lam_compile_util.cmi : core/lam_tag_info.cmx core/lam.cmi \ + core/js_op.cmx +core/lam_id_kind.cmi : core/lam_arity.cmi core/lam.cmi +core/lam_stats.cmi : core/lam_id_kind.cmi ext/ident_set.cmi \ + ext/ident_hashtbl.cmi +core/lam_compile_context.cmi : core/lam_stats.cmi core/lam.cmi core/j.cmx \ + ext/ident_map.cmi +core/js_fold_basic.cmi : core/lam_module_ident.cmi core/j.cmx \ + ext/ident_set.cmi +core/js_pass_scope.cmi : core/j.cmx ext/ident_set.cmi +core/js_op_util.cmi : core/js_op.cmx core/j.cmx +core/js_analyzer.cmi : core/j.cmx ext/ident_set.cmi +core/js_shake.cmi : core/j.cmx +core/js_exp_make.cmi : core/js_op.cmx core/js_call_info.cmi core/j.cmx +core/js_long.cmi : core/j.cmx +core/js_of_lam_exception.cmi : core/j.cmx +core/js_of_lam_module.cmi : core/j.cmx +core/js_of_lam_array.cmi : core/j.cmx +core/js_of_lam_block.cmi : core/lam.cmi core/js_op.cmx core/j.cmx +core/js_of_lam_string.cmi : core/j.cmx +core/js_of_lam_tuple.cmi : core/j.cmx +core/js_of_lam_record.cmi : core/j.cmx +core/js_of_lam_float_record.cmi : core/j.cmx +core/js_arr.cmi : core/j.cmx +core/lam_compile_const.cmi : core/lam.cmi core/j.cmx \ + syntax/external_arg_spec.cmi +core/lam_inner.cmi : core/lam.cmi +core/lam_subst.cmi : core/lam.cmi ext/ident_map.cmi +core/lam_util.cmi : core/lam_stats.cmi core/lam_id_kind.cmi core/lam.cmi \ + core/j.cmx +core/lam_eta_conversion.cmi : core/lam.cmi +core/lam_group.cmi : core/lam.cmi +core/lam_pass_deep_flatten.cmi : core/lam.cmi +core/js_stmt_make.cmi : core/lam.cmi core/js_closure.cmi core/j.cmx +core/js_pass_flatten.cmi : core/j.cmx +core/js_of_lam_polyvar.cmi : core/j.cmx +core/js_pass_tailcall_inline.cmi : core/j.cmx +core/js_of_lam_variant.cmi : core/j.cmx +core/js_pass_flatten_and_mark_dead.cmi : core/j.cmx +core/js_ast_util.cmi : core/j.cmx +core/lam_dce.cmi : core/lam_group.cmi +core/lam_compile_env.cmi : core/ocaml_types.cmi core/lam_module_ident.cmi \ + core/lam.cmi core/js_packages_info.cmi core/js_cmj_format.cmi \ + syntax/external_ffi_types.cmi +core/lam_arity_analysis.cmi : core/lam_stats.cmi core/lam_arity.cmi \ + core/lam.cmi +core/lam_stats_export.cmi : core/lam_stats.cmi core/lam_module_ident.cmi \ + core/lam.cmi core/js_cmj_format.cmi ext/ident_map.cmi +core/lam_pass_alpha_conversion.cmi : core/lam_stats.cmi core/lam.cmi +core/lam_pass_collect.cmi : core/lam_stats.cmi core/lam.cmi \ + ext/ident_set.cmi +core/js_dump_string.cmi : ext/ext_pp.cmi +core/js_dump_property.cmi : ext/ext_pp.cmi +core/js_dump_import_export.cmi : ext/ext_pp_scope.cmi ext/ext_pp.cmi +core/js_dump.cmi : core/j.cmx ext/ext_pp_scope.cmi ext/ext_pp.cmi +core/js_name_of_module_id.cmi : core/lam_module_ident.cmi \ + core/js_packages_info.cmi +core/js_dump_program.cmi : core/js_packages_info.cmi core/j.cmx \ + ext/ext_pp.cmi +core/js_pass_debug.cmi : core/j.cmx +core/js_of_lam_option.cmi : core/j.cmx +core/js_output.cmi : core/lam_compile_context.cmi core/lam.cmi core/j.cmx +core/lam_compile_global.cmi : core/lam.cmi core/j.cmx +core/lam_dispatch_primitive.cmi : core/j.cmx +core/lam_bounded_vars.cmi : core/lam.cmi ext/ident_hashtbl.cmi +core/lam_beta_reduce.cmi : core/lam_stats.cmi core/lam_closure.cmi \ + core/lam.cmi ext/ident_map.cmi +core/lam_compile_external_call.cmi : core/lam_compile_context.cmi \ + core/js_of_lam_variant.cmi core/j.cmx syntax/external_ffi_types.cmi \ + syntax/external_arg_spec.cmi +core/lam_compile_external_obj.cmi : core/j.cmx syntax/external_arg_spec.cmi +core/lam_compile_primitive.cmi : core/lam_compile_context.cmi core/lam.cmi \ + core/j.cmx +core/lam_compile.cmi : core/lam_compile_context.cmi core/lam.cmi \ + core/js_output.cmi core/j.cmx +core/lam_pass_exits.cmi : core/lam.cmi +core/lam_pass_count.cmi : core/lam.cmi ext/ident_hashtbl.cmi +core/lam_pass_eliminate_ref.cmi : core/lam.cmi +core/lam_pass_lets_dce.cmi : core/lam.cmi +core/lam_pass_remove_alias.cmi : core/lam_stats.cmi core/lam.cmi +core/lam_coercion.cmi : core/lam_stats.cmi core/lam_group.cmi core/lam.cmi \ + ext/ident_set.cmi ext/ident_map.cmi +core/lam_compile_main.cmi : core/j.cmx +core/js_implementation.cmi : +core/ocaml_batch_compile.cmi : +core/js_runtime_modules.cmx : +core/config_util.cmx : ext/ext_string.cmx core/config_util.cmi +core/js_packages_info.cmx : core/lam_module_ident.cmx ext/ext_sys.cmx \ + ext/ext_string.cmx ext/ext_pervasives.cmx ext/ext_path.cmx \ + ext/ext_namespace.cmx ext/ext_filename.cmx core/config_util.cmx \ + depends/bs_exception.cmx core/js_packages_info.cmi +core/js_packages_state.cmx : core/js_packages_info.cmx \ + ext/ext_pervasives.cmx ext/ext_namespace.cmx core/js_packages_state.cmi +core/ocaml_types.cmx : common/ext_log.cmx ext/ext_list.cmx \ + core/ocaml_types.cmi +core/bs_conditional_initial.cmx : common/js_config.cmx common/bs_version.cmx \ + core/bs_conditional_initial.cmi +core/ocaml_options.cmx : common/bs_version.cmx \ + core/bs_conditional_initial.cmx core/ocaml_options.cmi +core/ocaml_parse.cmx : syntax/ppx_entry.cmx common/js_config.cmx \ + ext/ext_path.cmx core/ocaml_parse.cmi +core/lam_tag_info.cmx : +core/js_op.cmx : core/lam_tag_info.cmx +core/lam_module_ident.cmx : core/js_op.cmx core/j.cmx ext/hashtbl_make.cmx \ + ext/hash_set.cmx ext/ext_ident.cmx stubs/bs_hash_stubs.cmx \ + core/lam_module_ident.cmi +core/lam_arity.cmx : core/lam_arity.cmi +core/lam.cmx : ext/ordered_hash_map_local_ident.cmx ext/literals.cmx \ + core/lam_tag_info.cmx core/lam_module_ident.cmx ext/int_vec_vec.cmx \ + ext/int_vec_util.cmx ext/int_vec.cmx ext/int_hashtbl.cmx \ + ext/ident_set.cmx ext/ident_hashtbl.cmx ext/ident_hash_set.cmx \ + ext/hash_set_ident_mask.cmx syntax/external_ffi_types.cmx \ + syntax/external_arg_spec.cmx ext/ext_string.cmx ext/ext_scc.cmx \ + common/ext_log.cmx ext/ext_list.cmx syntax/ast_exp_extension.cmx \ + core/lam.cmi +core/lam_print.cmx : core/lam.cmx ext/ext_list.cmx core/lam_print.cmi +core/lam_beta_reduce_util.cmx : core/lam.cmx ext/ident_hashtbl.cmx \ + core/lam_beta_reduce_util.cmi +core/lam_inline_util.cmx : core/lam.cmx core/lam_inline_util.cmi +core/lam_analysis.cmx : core/lam.cmx ext/ext_list.cmx core/lam_analysis.cmi +core/lam_closure.cmx : core/lam_analysis.cmx core/lam.cmx ext/ident_set.cmx \ + ext/ident_map.cmx ext/ext_list.cmx core/lam_closure.cmi core/js_cmj_format.cmx : ext/string_map.cmx core/lam_arity.cmx core/lam.cmx \ core/js_packages_info.cmx ext/ext_string.cmx ext/ext_pervasives.cmx \ ext/ext_namespace.cmx core/js_cmj_format.cmi -core/js_cmj_format.cmi : ext/string_map.cmi core/lam_arity.cmi core/lam.cmi \ - core/js_packages_info.cmi ext/ext_namespace.cmi core/js_cmj_load.cmx : core/js_cmj_format.cmx core/config_util.cmx \ depends/bs_exception.cmx core/js_cmj_load.cmi -core/js_cmj_load.cmi : core/js_cmj_format.cmi -core/js_dump.cmx : core/js_stmt_make.cmx core/js_runtime_modules.cmx \ - core/js_op_util.cmx core/js_op.cmx core/js_number.cmx core/js_fun_env.cmx \ - core/js_fold_basic.cmx core/js_exp_make.cmx core/js_dump_string.cmx \ - core/js_dump_property.cmx core/js_dump_lit.cmx common/js_config.cmx \ - core/js_closure.cmx core/j.cmx ext/ident_set.cmx ext/ext_pp_scope.cmx \ - ext/ext_pp.cmx ext/ext_list.cmx ext/ext_ident.cmx ext/ext_array.cmx \ - core/js_dump.cmi -core/js_dump.cmi : core/j.cmx ext/ext_pp_scope.cmi ext/ext_pp.cmi -core/js_dump_import_export.cmx : core/js_dump_string.cmx \ - core/js_dump_lit.cmx ext/ext_string.cmx ext/ext_pp_scope.cmx \ - ext/ext_pp.cmx ext/ext_list.cmx ext/ext_ident.cmx \ - core/js_dump_import_export.cmi -core/js_dump_import_export.cmi : ext/ext_pp_scope.cmi ext/ext_pp.cmi -core/js_dump_lit.cmx : ext/literals.cmx ext/ext_string.cmx -core/js_dump_program.cmx : core/lam_module_ident.cmx \ - core/js_packages_info.cmx core/js_name_of_module_id.cmx \ - core/js_dump_string.cmx core/js_dump_lit.cmx \ - core/js_dump_import_export.cmx core/js_dump.cmx common/js_config.cmx \ - core/j.cmx ext/ext_pp_scope.cmx ext/ext_pp.cmx ext/ext_list.cmx \ - common/bs_version.cmx core/js_dump_program.cmi -core/js_dump_program.cmi : core/js_packages_info.cmi core/j.cmx \ - ext/ext_pp.cmi -core/js_dump_property.cmx : core/js_dump_string.cmx core/js_dump_lit.cmx \ - ext/ext_string.cmx ext/ext_pp.cmx core/js_dump_property.cmi -core/js_dump_property.cmi : ext/ext_pp.cmi -core/js_dump_string.cmx : ext/ext_pp.cmx core/js_dump_string.cmi -core/js_dump_string.cmi : ext/ext_pp.cmi +core/js_fun_env.cmx : ext/ident_set.cmx ext/ext_list.cmx core/js_fun_env.cmi +core/js_call_info.cmx : core/js_call_info.cmi +core/js_closure.cmx : ext/ident_set.cmx core/js_closure.cmi +core/js_number.cmx : core/js_number.cmi +core/js_cmj_datasets.cmx : ext/string_map.cmx core/js_cmj_format.cmx \ + core/js_cmj_datasets.cmi +core/lam_exit_code.cmx : core/lam.cmx core/lam_exit_code.cmi +core/j.cmx : core/js_op.cmx core/js_fun_env.cmx core/js_closure.cmx \ + core/js_call_info.cmx ext/ident_set.cmx +core/lam_compile_util.cmx : core/lam_tag_info.cmx core/lam.cmx \ + core/js_op.cmx core/lam_compile_util.cmi +core/lam_id_kind.cmx : core/lam_arity.cmx core/lam.cmx core/lam_id_kind.cmi +core/lam_stats.cmx : core/lam_id_kind.cmx ext/ident_set.cmx \ + ext/ident_hashtbl.cmx core/lam_stats.cmi +core/lam_compile_context.cmx : core/lam_stats.cmx core/lam.cmx core/j.cmx \ + ext/int_map.cmx ext/ident_map.cmx ext/ext_list.cmx \ + core/lam_compile_context.cmi +core/js_map.cmx : core/j.cmx +core/js_fold.cmx : core/j.cmx +core/js_fold_basic.cmx : core/lam_module_ident.cmx \ + core/js_runtime_modules.cmx core/js_fold.cmx common/js_config.cmx \ + core/j.cmx ext/ident_set.cmx core/js_fold_basic.cmi +core/js_pass_scope.cmx : core/js_fun_env.cmx core/js_fold.cmx \ + core/js_closure.cmx ext/ident_set.cmx common/ext_log.cmx ext/ext_list.cmx \ + core/js_pass_scope.cmi +core/js_op_util.cmx : core/js_op.cmx core/j.cmx core/js_op_util.cmi +core/js_analyzer.cmx : core/js_fun_env.cmx core/js_fold.cmx core/j.cmx \ + ext/ident_set.cmx core/js_analyzer.cmi +core/js_shake.cmx : core/js_analyzer.cmx core/j.cmx ext/ident_set.cmx \ + ext/ext_string.cmx common/ext_log.cmx ext/ext_list.cmx core/js_shake.cmi core/js_exp_make.cmx : ext/literals.cmx core/lam_compile_util.cmx \ core/js_runtime_modules.cmx core/js_op_util.cmx core/js_fun_env.cmx \ core/js_call_info.cmx core/js_analyzer.cmx core/j.cmx ext/ext_string.cmx \ ext/ext_pervasives.cmx ext/ext_list.cmx ext/ext_ident.cmx \ core/js_exp_make.cmi -core/js_exp_make.cmi : core/js_op.cmx core/js_call_info.cmi core/j.cmx -core/js_fold.cmx : core/j.cmx -core/js_fold_basic.cmx : core/lam_module_ident.cmx \ - core/js_runtime_modules.cmx core/js_fold.cmx common/js_config.cmx \ - core/j.cmx ext/ident_set.cmx core/js_fold_basic.cmi -core/js_fold_basic.cmi : core/lam_module_ident.cmi core/j.cmx \ - ext/ident_set.cmi -core/js_fun_env.cmx : ext/ident_set.cmx ext/ext_list.cmx core/js_fun_env.cmi -core/js_fun_env.cmi : ext/ident_set.cmi -core/js_implementation.cmx : core/ocaml_parse.cmx ext/literals.cmx \ - core/lam_compile_main.cmx core/lam_compile_env.cmx common/js_config.cmx \ - ext/ext_string.cmx ext/ext_pervasives.cmx ext/ext_namespace.cmx \ - common/ext_log.cmx ext/ext_io.cmx depends/binary_ast.cmx \ - core/js_implementation.cmi -core/js_implementation.cmi : core/js_long.cmx : core/lam_tag_info.cmx core/js_runtime_modules.cmx \ core/js_exp_make.cmx core/js_analyzer.cmx core/j.cmx core/js_long.cmi -core/js_long.cmi : core/j.cmx -core/js_main.cmx : super_errors/super_main.cmx \ - outcome_printer/reason_outcome_printer_main.cmx \ - outcome_printer/outcome_printer_ns.cmx core/ocaml_parse.cmx \ - core/ocaml_options.cmx core/ocaml_batch_compile.cmx \ - core/js_packages_state.cmx core/js_implementation.cmx \ - common/js_config.cmx ext/ext_string.cmx core/bs_conditional_initial.cmx \ - core/js_main.cmi -core/js_main.cmi : -core/js_map.cmx : core/j.cmx -core/js_name_of_module_id.cmx : core/lam_compile_env.cmx \ - core/js_packages_state.cmx core/js_packages_info.cmx \ - core/js_name_of_module_id.cmi -core/js_name_of_module_id.cmi : core/lam_module_ident.cmi \ - core/js_packages_info.cmi -core/js_number.cmx : core/js_number.cmi -core/js_number.cmi : -core/js_of_lam_array.cmx : core/js_exp_make.cmx core/js_of_lam_array.cmi -core/js_of_lam_array.cmi : core/j.cmx -core/js_of_lam_block.cmx : core/lam.cmx core/js_of_lam_array.cmx \ - core/js_exp_make.cmx core/js_of_lam_block.cmi -core/js_of_lam_block.cmi : core/lam.cmi core/js_op.cmx core/j.cmx core/js_of_lam_exception.cmx : ext/literals.cmx core/js_runtime_modules.cmx \ core/js_exp_make.cmx core/j.cmx core/js_of_lam_exception.cmi -core/js_of_lam_exception.cmi : core/j.cmx -core/js_of_lam_float_record.cmx : core/js_exp_make.cmx \ - core/js_of_lam_float_record.cmi -core/js_of_lam_float_record.cmi : core/j.cmx core/js_of_lam_module.cmx : core/js_exp_make.cmx core/j.cmx \ core/js_of_lam_module.cmi -core/js_of_lam_module.cmi : core/j.cmx -core/js_of_lam_option.cmx : core/js_runtime_modules.cmx \ - core/js_of_lam_polyvar.cmx core/js_exp_make.cmx core/js_analyzer.cmx \ - core/j.cmx core/js_of_lam_option.cmi -core/js_of_lam_option.cmi : core/j.cmx -core/js_of_lam_polyvar.cmx : core/js_exp_make.cmx core/j.cmx \ - core/js_of_lam_polyvar.cmi -core/js_of_lam_polyvar.cmi : core/j.cmx -core/js_of_lam_record.cmx : core/js_exp_make.cmx core/js_of_lam_record.cmi -core/js_of_lam_record.cmi : core/j.cmx +core/js_of_lam_array.cmx : core/js_exp_make.cmx core/js_of_lam_array.cmi +core/js_of_lam_block.cmx : core/lam.cmx core/js_of_lam_array.cmx \ + core/js_exp_make.cmx core/js_of_lam_block.cmi core/js_of_lam_string.cmx : core/js_runtime_modules.cmx core/js_exp_make.cmx \ core/j.cmx ext/ext_string.cmx core/js_of_lam_string.cmi -core/js_of_lam_string.cmi : core/j.cmx core/js_of_lam_tuple.cmx : core/js_exp_make.cmx core/j.cmx \ core/js_of_lam_tuple.cmi -core/js_of_lam_tuple.cmi : core/j.cmx -core/js_of_lam_variant.cmx : core/js_stmt_make.cmx \ - core/js_of_lam_polyvar.cmx core/js_exp_make.cmx core/j.cmx \ - ext/ext_list.cmx core/js_of_lam_variant.cmi -core/js_of_lam_variant.cmi : core/j.cmx -core/js_op.cmx : core/lam_tag_info.cmx -core/js_op_util.cmx : core/js_op.cmx core/j.cmx core/js_op_util.cmi -core/js_op_util.cmi : core/js_op.cmx core/j.cmx -core/js_output.cmx : core/lam_compile_context.cmx core/lam_analysis.cmx \ - core/lam.cmx core/js_stmt_make.cmx core/js_exp_make.cmx core/js_dump.cmx \ - core/js_analyzer.cmx core/j.cmx ext/ext_list.cmx core/js_output.cmi -core/js_output.cmi : core/lam_compile_context.cmi core/lam.cmi core/j.cmx -core/js_packages_info.cmx : core/lam_module_ident.cmx ext/ext_sys.cmx \ - ext/ext_string.cmx ext/ext_pervasives.cmx ext/ext_path.cmx \ - ext/ext_namespace.cmx ext/ext_filename.cmx core/config_util.cmx \ - depends/bs_exception.cmx core/js_packages_info.cmi -core/js_packages_info.cmi : core/lam_module_ident.cmi ext/ext_namespace.cmi -core/js_packages_state.cmx : core/js_packages_info.cmx \ - ext/ext_pervasives.cmx ext/ext_namespace.cmx core/js_packages_state.cmi -core/js_packages_state.cmi : core/js_packages_info.cmi -core/js_pass_debug.cmx : core/js_dump_program.cmx common/js_config.cmx \ - core/j.cmx ext/ext_pervasives.cmx ext/ext_path.cmx common/ext_log.cmx \ - core/js_pass_debug.cmi -core/js_pass_debug.cmi : core/j.cmx +core/js_of_lam_record.cmx : core/js_exp_make.cmx core/js_of_lam_record.cmi +core/js_of_lam_float_record.cmx : core/js_exp_make.cmx \ + core/js_of_lam_float_record.cmi +core/js_arr.cmx : core/js_exp_make.cmx core/js_arr.cmi +core/lam_compile_const.cmx : core/lam_compile_util.cmx core/lam.cmx \ + core/js_of_lam_string.cmx core/js_of_lam_block.cmx \ + core/js_of_lam_array.cmx core/js_long.cmx core/js_exp_make.cmx core/j.cmx \ + syntax/external_arg_spec.cmx ext/ext_list.cmx core/lam_compile_const.cmi +core/lam_inner.cmx : core/lam.cmx core/lam_inner.cmi +core/lam_subst.cmx : core/lam.cmx ext/ident_map.cmx ext/ext_list.cmx \ + core/lam_subst.cmi +core/lam_util.cmx : core/lam_stats.cmx core/lam_print.cmx \ + core/lam_id_kind.cmx core/lam_analysis.cmx core/lam.cmx \ + common/js_config.cmx ext/ident_set.cmx ext/ident_hashtbl.cmx \ + ext/ext_path.cmx common/ext_log.cmx ext/ext_list.cmx ext/ext_array.cmx \ + core/lam_util.cmi +core/lam_eta_conversion.cmx : ext/literals.cmx core/lam.cmx ext/ext_list.cmx \ + ext/ext_ident.cmx core/lam_eta_conversion.cmi +core/lam_group.cmx : core/lam_print.cmx core/lam.cmx core/lam_group.cmi +core/lam_pass_deep_flatten.cmx : core/lam_util.cmx core/lam_group.cmx \ + core/lam.cmx ext/int_map.cmx ext/ident_set.cmx ext/ext_list.cmx \ + core/lam_pass_deep_flatten.cmi +core/js_stmt_make.cmx : core/lam_print.cmx core/lam.cmx core/js_exp_make.cmx \ + core/js_closure.cmx core/js_analyzer.cmx core/j.cmx ext/ext_list.cmx \ + core/js_stmt_make.cmi core/js_pass_flatten.cmx : core/js_stmt_make.cmx core/js_map.cmx \ core/js_exp_make.cmx core/js_analyzer.cmx core/j.cmx ext/ext_list.cmx \ core/js_pass_flatten.cmi -core/js_pass_flatten.cmi : core/j.cmx +core/js_of_lam_polyvar.cmx : core/js_exp_make.cmx core/j.cmx \ + core/js_of_lam_polyvar.cmi +core/js_pass_tailcall_inline.cmx : core/js_stmt_make.cmx core/js_op_util.cmx \ + core/js_map.cmx core/js_fold.cmx core/js_exp_make.cmx \ + core/js_analyzer.cmx core/j.cmx ext/ident_set.cmx ext/ident_hashtbl.cmx \ + ext/ext_list.cmx core/js_pass_tailcall_inline.cmi +core/js_of_lam_variant.cmx : core/js_stmt_make.cmx \ + core/js_of_lam_polyvar.cmx core/js_exp_make.cmx core/j.cmx \ + ext/ext_list.cmx core/js_of_lam_variant.cmi core/js_pass_flatten_and_mark_dead.cmx : core/js_stmt_make.cmx \ core/js_op_util.cmx core/js_map.cmx core/js_fold.cmx core/js_exp_make.cmx \ common/js_config.cmx core/js_analyzer.cmx core/j.cmx ext/ident_set.cmx \ ext/ident_hashtbl.cmx common/ext_log.cmx ext/ext_list.cmx \ ext/ext_ident.cmx core/js_pass_flatten_and_mark_dead.cmi -core/js_pass_flatten_and_mark_dead.cmi : core/j.cmx -core/js_pass_scope.cmx : core/js_fun_env.cmx core/js_fold.cmx \ - core/js_closure.cmx ext/ident_set.cmx common/ext_log.cmx ext/ext_list.cmx \ - core/js_pass_scope.cmi -core/js_pass_scope.cmi : core/j.cmx ext/ident_set.cmi -core/js_pass_tailcall_inline.cmx : core/js_stmt_make.cmx core/js_op_util.cmx \ - core/js_map.cmx core/js_fold.cmx core/js_exp_make.cmx \ - core/js_analyzer.cmx core/j.cmx ext/ident_set.cmx ext/ident_hashtbl.cmx \ - ext/ext_list.cmx core/js_pass_tailcall_inline.cmi -core/js_pass_tailcall_inline.cmi : core/j.cmx -core/js_runtime_modules.cmx : -core/js_shake.cmx : core/js_analyzer.cmx core/j.cmx ext/ident_set.cmx \ - ext/ext_string.cmx common/ext_log.cmx ext/ext_list.cmx core/js_shake.cmi -core/js_shake.cmi : core/j.cmx -core/js_stmt_make.cmx : core/lam_print.cmx core/lam.cmx core/js_exp_make.cmx \ - core/js_closure.cmx core/js_analyzer.cmx core/j.cmx ext/ext_list.cmx \ - core/js_stmt_make.cmi -core/js_stmt_make.cmi : core/lam.cmi core/js_closure.cmi core/j.cmx -core/jsoo_main.cmx : super_errors/super_main.cmx ext/string_map.cmx \ - syntax/ppx_entry.cmx outcome_printer/outcome_printer_ns.cmx \ - core/lam_compile_main.cmx core/lam_compile_env.cmx \ - core/js_dump_program.cmx core/js_cmj_format.cmx core/js_cmj_datasets.cmx \ - ext/ext_pp.cmx bsb/bsb_warning.cmx common/bs_version.cmx \ - core/bs_conditional_initial.cmx core/jsoo_main.cmi -core/jsoo_main.cmi : -core/lam.cmx : ext/ordered_hash_map_local_ident.cmx ext/literals.cmx \ - core/lam_tag_info.cmx core/lam_module_ident.cmx ext/int_vec_vec.cmx \ - ext/int_vec_util.cmx ext/int_vec.cmx ext/int_hashtbl.cmx \ +core/js_ast_util.cmx : core/js_stmt_make.cmx core/js_exp_make.cmx \ + core/js_analyzer.cmx core/j.cmx ext/ext_ident.cmx core/js_ast_util.cmi +core/lam_dce.cmx : core/lam_group.cmx core/lam_analysis.cmx core/lam.cmx \ ext/ident_set.cmx ext/ident_hashtbl.cmx ext/ident_hash_set.cmx \ - ext/hash_set_ident_mask.cmx syntax/external_ffi_types.cmx \ - syntax/external_arg_spec.cmx ext/ext_string.cmx ext/ext_scc.cmx \ - common/ext_log.cmx ext/ext_list.cmx syntax/ast_exp_extension.cmx \ - core/lam.cmi -core/lam.cmi : core/lam_tag_info.cmx core/lam_module_ident.cmi \ - ext/ident_set.cmi syntax/external_ffi_types.cmi \ - syntax/external_arg_spec.cmi -core/lam_analysis.cmx : core/lam.cmx ext/ext_list.cmx core/lam_analysis.cmi -core/lam_analysis.cmi : core/lam.cmi -core/lam_arity.cmx : core/lam_arity.cmi -core/lam_arity.cmi : + ext/ext_pervasives.cmx ext/ext_list.cmx ext/ext_ident.cmx \ + core/lam_dce.cmi +core/lam_group_pass.cmx : core/lam.cmx +core/lam_compile_env.cmx : ext/string_map.cmx core/ocaml_types.cmx \ + ext/literals.cmx core/lam_module_ident.cmx core/lam.cmx \ + core/js_stmt_make.cmx core/js_exp_make.cmx common/js_config.cmx \ + core/js_cmj_load.cmx core/js_cmj_format.cmx syntax/external_ffi_types.cmx \ + ext/ext_string.cmx ext/ext_modulename.cmx core/lam_compile_env.cmi core/lam_arity_analysis.cmx : core/lam_stats.cmx core/lam_compile_env.cmx \ core/lam_arity.cmx core/lam.cmx ext/ident_hashtbl.cmx ext/ext_list.cmx \ core/lam_arity_analysis.cmi -core/lam_arity_analysis.cmi : core/lam_stats.cmi core/lam_arity.cmi \ - core/lam.cmi +core/lam_stats_export.cmx : ext/string_map.cmx core/lam_stats.cmx \ + core/lam_module_ident.cmx core/lam_inline_util.cmx core/lam_id_kind.cmx \ + core/lam_compile_env.cmx core/lam_closure.cmx core/lam_arity_analysis.cmx \ + core/lam_arity.cmx core/lam_analysis.cmx core/lam.cmx \ + core/js_packages_state.cmx core/js_cmj_format.cmx ext/ident_set.cmx \ + ext/ident_map.cmx ext/ident_hashtbl.cmx ext/ext_option.cmx \ + common/ext_log.cmx ext/ext_list.cmx ext/ext_array.cmx \ + core/lam_stats_export.cmi +core/lam_pass_alpha_conversion.cmx : core/lam_stats.cmx \ + core/lam_eta_conversion.cmx core/lam_arity_analysis.cmx \ + core/lam_arity.cmx core/lam.cmx ext/ext_list.cmx \ + core/lam_pass_alpha_conversion.cmi +core/lam_pass_collect.cmx : core/lam_util.cmx core/lam_stats.cmx \ + core/lam_arity_analysis.cmx core/lam_arity.cmx core/lam.cmx \ + ext/ident_set.cmx ext/ident_hashtbl.cmx core/lam_pass_collect.cmi +core/js_dump_lit.cmx : ext/literals.cmx ext/ext_string.cmx +core/js_dump_string.cmx : ext/ext_pp.cmx core/js_dump_string.cmi +core/js_dump_property.cmx : core/js_dump_string.cmx core/js_dump_lit.cmx \ + ext/ext_string.cmx ext/ext_pp.cmx core/js_dump_property.cmi +core/js_dump_import_export.cmx : core/js_dump_string.cmx \ + core/js_dump_lit.cmx ext/ext_string.cmx ext/ext_pp_scope.cmx \ + ext/ext_pp.cmx ext/ext_list.cmx ext/ext_ident.cmx \ + core/js_dump_import_export.cmi +core/js_dump.cmx : core/js_stmt_make.cmx core/js_runtime_modules.cmx \ + core/js_op_util.cmx core/js_op.cmx core/js_number.cmx core/js_fun_env.cmx \ + core/js_fold_basic.cmx core/js_exp_make.cmx core/js_dump_string.cmx \ + core/js_dump_property.cmx core/js_dump_lit.cmx common/js_config.cmx \ + core/js_closure.cmx core/j.cmx ext/ident_set.cmx ext/ext_pp_scope.cmx \ + ext/ext_pp.cmx ext/ext_list.cmx ext/ext_ident.cmx ext/ext_array.cmx \ + core/js_dump.cmi +core/js_name_of_module_id.cmx : core/lam_compile_env.cmx \ + core/js_packages_state.cmx core/js_packages_info.cmx \ + core/js_name_of_module_id.cmi +core/js_dump_program.cmx : core/lam_module_ident.cmx \ + core/js_packages_info.cmx core/js_name_of_module_id.cmx \ + core/js_dump_string.cmx core/js_dump_lit.cmx \ + core/js_dump_import_export.cmx core/js_dump.cmx common/js_config.cmx \ + core/j.cmx ext/ext_pp_scope.cmx ext/ext_pp.cmx ext/ext_list.cmx \ + common/bs_version.cmx core/js_dump_program.cmi +core/js_pass_debug.cmx : core/js_dump_program.cmx common/js_config.cmx \ + core/j.cmx ext/ext_pervasives.cmx ext/ext_path.cmx common/ext_log.cmx \ + core/js_pass_debug.cmi +core/js_of_lam_option.cmx : core/js_runtime_modules.cmx \ + core/js_of_lam_polyvar.cmx core/js_exp_make.cmx core/js_analyzer.cmx \ + core/j.cmx core/js_of_lam_option.cmi +core/js_output.cmx : core/lam_compile_context.cmx core/lam_analysis.cmx \ + core/lam.cmx core/js_stmt_make.cmx core/js_exp_make.cmx core/js_dump.cmx \ + core/js_analyzer.cmx core/j.cmx ext/ext_list.cmx core/js_output.cmi +core/lam_compile_global.cmx : core/ocaml_types.cmx core/lam_module_ident.cmx \ + core/lam_compile_env.cmx core/lam.cmx core/js_stmt_make.cmx \ + core/js_of_lam_module.cmx core/js_exp_make.cmx core/j.cmx \ + ext/ext_list.cmx core/lam_compile_global.cmi +core/lam_dispatch_primitive.cmx : core/js_stmt_make.cmx \ + core/js_runtime_modules.cmx core/js_of_lam_tuple.cmx \ + core/js_of_lam_exception.cmx core/js_of_lam_array.cmx core/js_long.cmx \ + core/js_exp_make.cmx common/js_config.cmx core/js_analyzer.cmx core/j.cmx \ + ext/ext_list.cmx common/bs_warnings.cmx core/lam_dispatch_primitive.cmi +core/lam_bounded_vars.cmx : core/lam.cmx ext/ident_hashtbl.cmx \ + ext/ext_list.cmx core/lam_bounded_vars.cmi core/lam_beta_reduce.cmx : core/lam_util.cmx core/lam_stats.cmx \ core/lam_compile_global.cmx core/lam_closure.cmx \ core/lam_bounded_vars.cmx core/lam_beta_reduce_util.cmx \ core/lam_analysis.cmx core/lam.cmx ext/ident_map.cmx \ ext/ident_hashtbl.cmx ext/ext_list.cmx core/lam_beta_reduce.cmi -core/lam_beta_reduce.cmi : core/lam_stats.cmi core/lam_closure.cmi \ - core/lam.cmi ext/ident_map.cmi -core/lam_beta_reduce_util.cmx : core/lam.cmx ext/ident_hashtbl.cmx \ - core/lam_beta_reduce_util.cmi -core/lam_beta_reduce_util.cmi : core/lam.cmi -core/lam_bounded_vars.cmx : core/lam.cmx ext/ident_hashtbl.cmx \ - ext/ext_list.cmx core/lam_bounded_vars.cmi -core/lam_bounded_vars.cmi : core/lam.cmi ext/ident_hashtbl.cmi -core/lam_closure.cmx : core/lam_analysis.cmx core/lam.cmx ext/ident_set.cmx \ - ext/ident_map.cmx ext/ext_list.cmx core/lam_closure.cmi -core/lam_closure.cmi : core/lam.cmi ext/ident_set.cmi ext/ident_map.cmi -core/lam_coercion.cmx : ext/string_hash_set.cmx core/lam_util.cmx \ - core/lam_stats.cmx core/lam_group.cmx core/lam_dce.cmx \ - core/lam_arity_analysis.cmx core/lam_arity.cmx core/lam.cmx \ - ext/ident_set.cmx ext/ident_map.cmx ext/ident_hashtbl.cmx \ - ext/ext_list.cmx depends/bs_exception.cmx core/lam_coercion.cmi -core/lam_coercion.cmi : core/lam_stats.cmi core/lam_group.cmi core/lam.cmi \ - ext/ident_set.cmi ext/ident_map.cmi -core/lam_compile.cmx : ext/literals.cmx core/lam_util.cmx \ - common/lam_methname.cmx core/lam_exit_code.cmx \ - core/lam_eta_conversion.cmx core/lam_compile_primitive.cmx \ - core/lam_compile_global.cmx core/lam_compile_external_obj.cmx \ - core/lam_compile_env.cmx core/lam_compile_context.cmx \ - core/lam_compile_const.cmx core/lam_closure.cmx core/lam_beta_reduce.cmx \ - core/lam_arity.cmx core/lam_analysis.cmx core/lam.cmx \ - core/js_stmt_make.cmx core/js_runtime_modules.cmx core/js_output.cmx \ - core/js_of_lam_record.cmx core/js_of_lam_array.cmx core/js_exp_make.cmx \ - core/js_call_info.cmx core/js_ast_util.cmx core/js_arr.cmx \ - core/js_analyzer.cmx core/j.cmx ext/ident_set.cmx ext/ident_map.cmx \ - ext/ext_string.cmx ext/ext_list.cmx ext/ext_ident.cmx \ - core/lam_compile.cmi -core/lam_compile.cmi : core/lam_compile_context.cmi core/lam.cmi \ - core/js_output.cmi core/j.cmx -core/lam_compile_const.cmx : core/lam_compile_util.cmx core/lam.cmx \ - core/js_of_lam_string.cmx core/js_of_lam_block.cmx \ - core/js_of_lam_array.cmx core/js_long.cmx core/js_exp_make.cmx core/j.cmx \ - syntax/external_arg_spec.cmx ext/ext_list.cmx core/lam_compile_const.cmi -core/lam_compile_const.cmi : core/lam.cmi core/j.cmx \ - syntax/external_arg_spec.cmi -core/lam_compile_context.cmx : core/lam_stats.cmx core/lam.cmx core/j.cmx \ - ext/int_map.cmx ext/ident_map.cmx ext/ext_list.cmx \ - core/lam_compile_context.cmi -core/lam_compile_context.cmi : core/lam_stats.cmi core/lam.cmi core/j.cmx \ - ext/ident_map.cmi -core/lam_compile_env.cmx : ext/string_map.cmx core/ocaml_types.cmx \ - ext/literals.cmx core/lam_module_ident.cmx core/lam.cmx \ - core/js_stmt_make.cmx core/js_exp_make.cmx common/js_config.cmx \ - core/js_cmj_load.cmx core/js_cmj_format.cmx syntax/external_ffi_types.cmx \ - ext/ext_string.cmx ext/ext_modulename.cmx core/lam_compile_env.cmi -core/lam_compile_env.cmi : core/ocaml_types.cmi core/lam_module_ident.cmi \ - core/lam.cmi core/js_packages_info.cmi core/js_cmj_format.cmi \ - syntax/external_ffi_types.cmi core/lam_compile_external_call.cmx : core/lam_compile_env.cmx \ core/lam_compile_context.cmx core/lam_compile_const.cmx \ core/js_of_lam_variant.cmx core/js_of_lam_option.cmx core/js_exp_make.cmx \ core/js_arr.cmx core/js_analyzer.cmx core/j.cmx \ syntax/external_ffi_types.cmx syntax/external_arg_spec.cmx \ ext/ext_list.cmx ext/ext_ident.cmx core/lam_compile_external_call.cmi -core/lam_compile_external_call.cmi : core/lam_compile_context.cmi \ - core/js_of_lam_variant.cmi core/j.cmx syntax/external_ffi_types.cmi \ - syntax/external_arg_spec.cmi core/lam_compile_external_obj.cmx : core/lam_compile_external_call.cmx \ core/lam_compile_const.cmx core/js_stmt_make.cmx core/js_op.cmx \ core/js_of_lam_option.cmx core/js_exp_make.cmx core/js_ast_util.cmx \ core/js_analyzer.cmx core/j.cmx syntax/external_arg_spec.cmx \ ext/ext_list.cmx ext/ext_ident.cmx core/lam_compile_external_obj.cmi -core/lam_compile_external_obj.cmi : core/j.cmx syntax/external_arg_spec.cmi -core/lam_compile_global.cmx : core/ocaml_types.cmx core/lam_module_ident.cmx \ - core/lam_compile_env.cmx core/lam.cmx core/js_stmt_make.cmx \ - core/js_of_lam_module.cmx core/js_exp_make.cmx core/j.cmx \ - ext/ext_list.cmx core/lam_compile_global.cmi -core/lam_compile_global.cmi : core/lam.cmi core/j.cmx -core/lam_compile_main.cmx : ext/literals.cmx core/lam_util.cmx \ - core/lam_stats_export.cmx core/lam_stats.cmx \ - core/lam_pass_remove_alias.cmx core/lam_pass_lets_dce.cmx \ - core/lam_pass_exits.cmx core/lam_pass_deep_flatten.cmx \ - core/lam_pass_collect.cmx core/lam_pass_alpha_conversion.cmx \ - core/lam_module_ident.cmx core/lam_group.cmx core/lam_compile_env.cmx \ - core/lam_compile_context.cmx core/lam_compile.cmx core/lam_coercion.cmx \ - core/lam_analysis.cmx core/lam.cmx core/js_stmt_make.cmx \ - core/js_shake.cmx core/js_runtime_modules.cmx \ - core/js_pass_tailcall_inline.cmx core/js_pass_scope.cmx \ - core/js_pass_flatten_and_mark_dead.cmx core/js_pass_flatten.cmx \ - core/js_pass_debug.cmx core/js_packages_state.cmx \ - core/js_packages_info.cmx core/js_output.cmx core/js_fold_basic.cmx \ - core/js_exp_make.cmx core/js_dump_program.cmx common/js_config.cmx \ - core/js_cmj_format.cmx core/j.cmx ext/ident_set.cmx ext/ext_string.cmx \ - ext/ext_pervasives.cmx ext/ext_path.cmx ext/ext_namespace.cmx \ - common/ext_log.cmx ext/ext_list.cmx ext/ext_filename.cmx ext/ext_char.cmx \ - core/lam_compile_main.cmi -core/lam_compile_main.cmi : core/j.cmx core/lam_compile_primitive.cmx : core/lam_print.cmx \ core/lam_dispatch_primitive.cmx core/lam_compile_external_call.cmx \ core/lam_compile_context.cmx core/lam.cmx core/js_runtime_modules.cmx \ @@ -495,546 +670,374 @@ core/lam_compile_primitive.cmx : core/lam_print.cmx \ core/js_of_lam_block.cmx core/js_of_lam_array.cmx core/js_long.cmx \ core/js_exp_make.cmx common/js_config.cmx core/j.cmx \ common/bs_warnings.cmx core/lam_compile_primitive.cmi -core/lam_compile_primitive.cmi : core/lam_compile_context.cmi core/lam.cmi \ - core/j.cmx -core/lam_compile_util.cmx : core/lam_tag_info.cmx core/lam.cmx \ - core/js_op.cmx core/lam_compile_util.cmi -core/lam_compile_util.cmi : core/lam_tag_info.cmx core/lam.cmi \ - core/js_op.cmx -core/lam_dce.cmx : core/lam_group.cmx core/lam_analysis.cmx core/lam.cmx \ - ext/ident_set.cmx ext/ident_hashtbl.cmx ext/ident_hash_set.cmx \ - ext/ext_pervasives.cmx ext/ext_list.cmx ext/ext_ident.cmx \ - core/lam_dce.cmi -core/lam_dce.cmi : core/lam_group.cmi -core/lam_dispatch_primitive.cmx : core/js_stmt_make.cmx \ - core/js_runtime_modules.cmx core/js_of_lam_tuple.cmx \ - core/js_of_lam_exception.cmx core/js_of_lam_array.cmx core/js_long.cmx \ - core/js_exp_make.cmx common/js_config.cmx core/js_analyzer.cmx core/j.cmx \ - ext/ext_list.cmx common/bs_warnings.cmx core/lam_dispatch_primitive.cmi -core/lam_dispatch_primitive.cmi : core/j.cmx -core/lam_eta_conversion.cmx : ext/literals.cmx core/lam.cmx ext/ext_list.cmx \ - ext/ext_ident.cmx core/lam_eta_conversion.cmi -core/lam_eta_conversion.cmi : core/lam.cmi -core/lam_exit_code.cmx : core/lam.cmx core/lam_exit_code.cmi -core/lam_exit_code.cmi : core/lam.cmi -core/lam_group.cmx : core/lam_print.cmx core/lam.cmx core/lam_group.cmi -core/lam_group.cmi : core/lam.cmi -core/lam_group_pass.cmx : core/lam.cmx -core/lam_id_kind.cmx : core/lam_arity.cmx core/lam.cmx core/lam_id_kind.cmi -core/lam_id_kind.cmi : core/lam_arity.cmi core/lam.cmi -core/lam_inline_util.cmx : core/lam.cmx core/lam_inline_util.cmi -core/lam_inline_util.cmi : core/lam.cmi -core/lam_inner.cmx : core/lam.cmx core/lam_inner.cmi -core/lam_inner.cmi : core/lam.cmi -core/lam_module_ident.cmx : core/js_op.cmx core/j.cmx ext/hashtbl_make.cmx \ - ext/hash_set.cmx ext/ext_ident.cmx stubs/bs_hash_stubs.cmx \ - core/lam_module_ident.cmi -core/lam_module_ident.cmi : core/js_op.cmx core/j.cmx ext/hashtbl_gen.cmx \ - ext/hash_set_gen.cmx -core/lam_pass_alpha_conversion.cmx : core/lam_stats.cmx \ - core/lam_eta_conversion.cmx core/lam_arity_analysis.cmx \ - core/lam_arity.cmx core/lam.cmx ext/ext_list.cmx \ - core/lam_pass_alpha_conversion.cmi -core/lam_pass_alpha_conversion.cmi : core/lam_stats.cmi core/lam.cmi -core/lam_pass_collect.cmx : core/lam_util.cmx core/lam_stats.cmx \ - core/lam_arity_analysis.cmx core/lam_arity.cmx core/lam.cmx \ - ext/ident_set.cmx ext/ident_hashtbl.cmx core/lam_pass_collect.cmi -core/lam_pass_collect.cmi : core/lam_stats.cmi core/lam.cmi \ - ext/ident_set.cmi +core/lam_compile.cmx : ext/literals.cmx core/lam_util.cmx \ + common/lam_methname.cmx core/lam_exit_code.cmx \ + core/lam_eta_conversion.cmx core/lam_compile_primitive.cmx \ + core/lam_compile_global.cmx core/lam_compile_external_obj.cmx \ + core/lam_compile_env.cmx core/lam_compile_context.cmx \ + core/lam_compile_const.cmx core/lam_closure.cmx core/lam_beta_reduce.cmx \ + core/lam_arity.cmx core/lam_analysis.cmx core/lam.cmx \ + core/js_stmt_make.cmx core/js_runtime_modules.cmx core/js_output.cmx \ + core/js_of_lam_record.cmx core/js_of_lam_array.cmx core/js_exp_make.cmx \ + core/js_call_info.cmx core/js_ast_util.cmx core/js_arr.cmx \ + core/js_analyzer.cmx core/j.cmx ext/ident_set.cmx ext/ident_map.cmx \ + ext/ext_string.cmx ext/ext_list.cmx ext/ext_ident.cmx \ + core/lam_compile.cmi +core/lam_pass_exits.cmx : core/lam_subst.cmx core/lam_bounded_vars.cmx \ + core/lam_analysis.cmx core/lam.cmx ext/int_hashtbl.cmx ext/ident_map.cmx \ + ext/ext_list.cmx core/lam_pass_exits.cmi core/lam_pass_count.cmx : core/lam_beta_reduce.cmx core/lam.cmx \ ext/ident_map.cmx ext/ident_hashtbl.cmx ext/ext_list.cmx \ core/lam_pass_count.cmi -core/lam_pass_count.cmi : core/lam.cmi ext/ident_hashtbl.cmi -core/lam_pass_deep_flatten.cmx : core/lam_util.cmx core/lam_group.cmx \ - core/lam.cmx ext/int_map.cmx ext/ident_set.cmx ext/ext_list.cmx \ - core/lam_pass_deep_flatten.cmi -core/lam_pass_deep_flatten.cmi : core/lam.cmi core/lam_pass_eliminate_ref.cmx : core/lam.cmx ext/ident_set.cmx \ - ext/ext_list.cmx core/lam_pass_eliminate_ref.cmi -core/lam_pass_eliminate_ref.cmi : core/lam.cmi -core/lam_pass_exits.cmx : core/lam_subst.cmx core/lam_bounded_vars.cmx \ - core/lam_analysis.cmx core/lam.cmx ext/int_hashtbl.cmx ext/ident_map.cmx \ - ext/ext_list.cmx core/lam_pass_exits.cmi -core/lam_pass_exits.cmi : core/lam.cmi -core/lam_pass_lets_dce.cmx : core/lam_util.cmx \ - core/lam_pass_eliminate_ref.cmx core/lam_pass_count.cmx \ - core/lam_beta_reduce.cmx core/lam_analysis.cmx core/lam.cmx \ - ext/ident_hashtbl.cmx common/ext_log.cmx ext/ext_list.cmx \ - core/lam_pass_lets_dce.cmi -core/lam_pass_lets_dce.cmi : core/lam.cmi -core/lam_pass_remove_alias.cmx : core/lam_util.cmx core/lam_stats.cmx \ - core/lam_inline_util.cmx core/lam_compile_env.cmx core/lam_closure.cmx \ - core/lam_beta_reduce.cmx core/lam_analysis.cmx core/lam.cmx \ - ext/ident_set.cmx ext/ident_hashtbl.cmx ext/ext_list.cmx \ - core/lam_pass_remove_alias.cmi -core/lam_pass_remove_alias.cmi : core/lam_stats.cmi core/lam.cmi -core/lam_print.cmx : core/lam.cmx ext/ext_list.cmx core/lam_print.cmi -core/lam_print.cmi : core/lam.cmi -core/lam_stats.cmx : core/lam_id_kind.cmx ext/ident_set.cmx \ - ext/ident_hashtbl.cmx core/lam_stats.cmi -core/lam_stats.cmi : core/lam_id_kind.cmi ext/ident_set.cmi \ - ext/ident_hashtbl.cmi -core/lam_stats_export.cmx : ext/string_map.cmx core/lam_stats.cmx \ - core/lam_module_ident.cmx core/lam_inline_util.cmx core/lam_id_kind.cmx \ - core/lam_compile_env.cmx core/lam_closure.cmx core/lam_arity_analysis.cmx \ - core/lam_arity.cmx core/lam_analysis.cmx core/lam.cmx \ - core/js_packages_state.cmx core/js_cmj_format.cmx ext/ident_set.cmx \ - ext/ident_map.cmx ext/ident_hashtbl.cmx ext/ext_option.cmx \ - common/ext_log.cmx ext/ext_list.cmx ext/ext_array.cmx \ - core/lam_stats_export.cmi -core/lam_stats_export.cmi : core/lam_stats.cmi core/lam_module_ident.cmi \ - core/lam.cmi core/js_cmj_format.cmi ext/ident_map.cmi -core/lam_subst.cmx : core/lam.cmx ext/ident_map.cmx ext/ext_list.cmx \ - core/lam_subst.cmi -core/lam_subst.cmi : core/lam.cmi ext/ident_map.cmi -core/lam_tag_info.cmx : -core/lam_util.cmx : core/lam_stats.cmx core/lam_print.cmx \ - core/lam_id_kind.cmx core/lam_analysis.cmx core/lam.cmx \ - common/js_config.cmx ext/ident_set.cmx ext/ident_hashtbl.cmx \ - ext/ext_path.cmx common/ext_log.cmx ext/ext_list.cmx ext/ext_array.cmx \ - core/lam_util.cmi -core/lam_util.cmi : core/lam_stats.cmi core/lam_id_kind.cmi core/lam.cmi \ - core/j.cmx + ext/ext_list.cmx core/lam_pass_eliminate_ref.cmi +core/lam_pass_lets_dce.cmx : core/lam_util.cmx \ + core/lam_pass_eliminate_ref.cmx core/lam_pass_count.cmx \ + core/lam_beta_reduce.cmx core/lam_analysis.cmx core/lam.cmx \ + ext/ident_hashtbl.cmx common/ext_log.cmx ext/ext_list.cmx \ + core/lam_pass_lets_dce.cmi +core/lam_pass_remove_alias.cmx : core/lam_util.cmx core/lam_stats.cmx \ + core/lam_inline_util.cmx core/lam_compile_env.cmx core/lam_closure.cmx \ + core/lam_beta_reduce.cmx core/lam_analysis.cmx core/lam.cmx \ + ext/ident_set.cmx ext/ident_hashtbl.cmx ext/ext_list.cmx \ + core/lam_pass_remove_alias.cmi +core/lam_coercion.cmx : ext/string_hash_set.cmx core/lam_util.cmx \ + core/lam_stats.cmx core/lam_group.cmx core/lam_dce.cmx \ + core/lam_arity_analysis.cmx core/lam_arity.cmx core/lam.cmx \ + ext/ident_set.cmx ext/ident_map.cmx ext/ident_hashtbl.cmx \ + ext/ext_list.cmx depends/bs_exception.cmx core/lam_coercion.cmi +core/lam_compile_main.cmx : ext/literals.cmx core/lam_util.cmx \ + core/lam_stats_export.cmx core/lam_stats.cmx \ + core/lam_pass_remove_alias.cmx core/lam_pass_lets_dce.cmx \ + core/lam_pass_exits.cmx core/lam_pass_deep_flatten.cmx \ + core/lam_pass_collect.cmx core/lam_pass_alpha_conversion.cmx \ + core/lam_module_ident.cmx core/lam_group.cmx core/lam_compile_env.cmx \ + core/lam_compile_context.cmx core/lam_compile.cmx core/lam_coercion.cmx \ + core/lam_analysis.cmx core/lam.cmx core/js_stmt_make.cmx \ + core/js_shake.cmx core/js_runtime_modules.cmx \ + core/js_pass_tailcall_inline.cmx core/js_pass_scope.cmx \ + core/js_pass_flatten_and_mark_dead.cmx core/js_pass_flatten.cmx \ + core/js_pass_debug.cmx core/js_packages_state.cmx \ + core/js_packages_info.cmx core/js_output.cmx core/js_fold_basic.cmx \ + core/js_exp_make.cmx core/js_dump_program.cmx common/js_config.cmx \ + core/js_cmj_format.cmx core/j.cmx ext/ident_set.cmx ext/ext_string.cmx \ + ext/ext_pervasives.cmx ext/ext_path.cmx ext/ext_namespace.cmx \ + common/ext_log.cmx ext/ext_list.cmx ext/ext_filename.cmx ext/ext_char.cmx \ + core/lam_compile_main.cmi +core/js_implementation.cmx : core/ocaml_parse.cmx ext/literals.cmx \ + core/lam_compile_main.cmx core/lam_compile_env.cmx common/js_config.cmx \ + ext/ext_string.cmx ext/ext_pervasives.cmx ext/ext_namespace.cmx \ + common/ext_log.cmx ext/ext_io.cmx depends/binary_ast.cmx \ + core/js_implementation.cmi core/ocaml_batch_compile.cmx : core/ocaml_parse.cmx \ core/js_implementation.cmx common/js_config.cmx ext/ext_ref.cmx \ ext/ext_pervasives.cmx ext/ext_namespace.cmx ext/ext_modulename.cmx \ ext/ext_list.cmx ext/ext_format.cmx depends/bs_exception.cmx \ depends/ast_extract.cmx core/ocaml_batch_compile.cmi -core/ocaml_batch_compile.cmi : -core/ocaml_options.cmx : common/bs_version.cmx \ - core/bs_conditional_initial.cmx core/ocaml_options.cmi -core/ocaml_options.cmi : -core/ocaml_parse.cmx : syntax/ppx_entry.cmx common/js_config.cmx \ - ext/ext_path.cmx core/ocaml_parse.cmi -core/ocaml_parse.cmi : -core/ocaml_types.cmx : common/ext_log.cmx ext/ext_list.cmx \ - core/ocaml_types.cmi -core/ocaml_types.cmi : -depends/ast_extract.cmx : ext/string_map.cmx ext/string_hashtbl.cmx \ - common/ml_binary.cmx common/js_config.cmx ext/ext_string.cmx \ - ext/ext_path.cmx ext/ext_modulename.cmx ext/ext_list.cmx \ - ext/ext_format.cmx depends/bs_exception.cmx depends/ast_extract.cmi -depends/ast_extract.cmi : ext/string_map.cmi ext/string_hashtbl.cmi \ - common/ml_binary.cmi -depends/binary_ast.cmx : common/ml_binary.cmx depends/ast_extract.cmx \ - depends/binary_ast.cmi -depends/binary_ast.cmi : common/ml_binary.cmi -depends/bs_exception.cmx : depends/bs_exception.cmi -depends/bs_exception.cmi : -ext/ext_array.cmx : ext/ext_array.cmi -ext/ext_array.cmi : -ext/ext_bytes.cmx : ext/ext_bytes.cmi -ext/ext_bytes.cmi : -ext/ext_char.cmx : ext/ext_char.cmi -ext/ext_char.cmi : -ext/ext_cmp.cmx : ext/ext_cmp.cmi -ext/ext_cmp.cmi : -ext/ext_color.cmx : ext/ext_list.cmx ext/ext_color.cmi -ext/ext_color.cmi : -ext/ext_file_pp.cmx : ext/string_vec.cmx ext/ext_file_pp.cmi -ext/ext_file_pp.cmi : ext/string_vec.cmi -ext/ext_filename.cmx : ext/literals.cmx ext/ext_string.cmx \ - ext/ext_pervasives.cmx ext/ext_path.cmx ext/ext_filename.cmi -ext/ext_filename.cmi : -ext/ext_format.cmx : ext/ext_format.cmi -ext/ext_format.cmi : -ext/ext_ident.cmx : ext/string_hashtbl.cmx ext/string_hash_set.cmx \ - ext/literals.cmx ext/ext_string.cmx ext/ext_list.cmx ext/ext_ident.cmi -ext/ext_ident.cmi : -ext/ext_int.cmx : ext/ext_int.cmi -ext/ext_int.cmi : -ext/ext_io.cmx : ext/ext_pervasives.cmx ext/ext_io.cmi -ext/ext_io.cmi : -ext/ext_js_regex.cmx : ext/ext_utf8.cmx ext/ext_js_regex.cmi -ext/ext_js_regex.cmi : -ext/ext_json.cmx : ext/string_map.cmx ext/ext_json_types.cmx \ - ext/ext_array.cmx ext/ext_json.cmi -ext/ext_json.cmi : ext/string_map.cmi ext/ext_position.cmi \ - ext/ext_json_types.cmx -ext/ext_json_noloc.cmx : ext/string_map.cmx ext/ext_array.cmx \ - ext/ext_json_noloc.cmi -ext/ext_json_noloc.cmi : ext/string_map.cmi -ext/ext_json_parse.cmx : ext/string_map.cmx ext/ext_position.cmx \ - ext/ext_json_types.cmx ext/ext_array.cmx ext/ext_json_parse.cmi -ext/ext_json_parse.cmi : ext/ext_json_types.cmx -ext/ext_json_types.cmx : ext/string_map.cmx -ext/ext_json_write.cmx : ext/string_map.cmx ext/ext_json_types.cmx \ - ext/ext_json_write.cmi -ext/ext_json_write.cmi : -ext/ext_list.cmx : ext/ext_string.cmx ext/ext_list.cmi -ext/ext_list.cmi : -ext/ext_marshal.cmx : ext/ext_marshal.cmi -ext/ext_marshal.cmi : -ext/ext_modulename.cmx : ext/ext_string.cmx ext/ext_path.cmx \ - ext/ext_char.cmx ext/ext_modulename.cmi -ext/ext_modulename.cmi : -ext/ext_namespace.cmx : ext/ext_string.cmx ext/ext_char.cmx \ - ext/ext_namespace.cmi -ext/ext_namespace.cmi : -ext/ext_option.cmx : ext/ext_option.cmi -ext/ext_option.cmi : -ext/ext_path.cmx : ext/literals.cmx ext/ext_string.cmx \ - ext/ext_pervasives.cmx ext/ext_list.cmx ext/ext_path.cmi -ext/ext_path.cmi : -ext/ext_pervasives.cmx : ext/ext_list.cmx ext/ext_pervasives.cmi -ext/ext_pervasives.cmi : -ext/ext_position.cmx : ext/ext_position.cmi -ext/ext_position.cmi : -ext/ext_pp.cmx : ext/ext_pervasives.cmx ext/ext_pp.cmi -ext/ext_pp.cmi : -ext/ext_pp_scope.cmx : ext/string_map.cmx ext/int_map.cmx ext/ident_set.cmx \ - ext/ext_pp.cmx ext/ext_ident.cmx ext/ext_pp_scope.cmi -ext/ext_pp_scope.cmi : ext/ident_set.cmi ext/ext_pp.cmi -ext/ext_ref.cmx : ext/ext_list.cmx ext/ext_ref.cmi -ext/ext_ref.cmi : -ext/ext_scc.cmx : ext/int_vec_vec.cmx ext/int_vec.cmx ext/ext_scc.cmi -ext/ext_scc.cmi : ext/int_vec_vec.cmi ext/int_vec.cmi -ext/ext_stack.cmx : ext/ext_stack.cmi -ext/ext_stack.cmi : -ext/ext_string.cmx : ext/ext_bytes.cmx ext/ext_string.cmi -ext/ext_string.cmi : -ext/ext_sys.cmx : ext/ext_sys.cmi -ext/ext_sys.cmi : -ext/ext_topsort.cmx : ext/set_int.cmx ext/resize_array.cmx ext/int_vec.cmx \ - ext/ext_topsort.cmi -ext/ext_topsort.cmi : ext/vec_gen.cmx ext/set_int.cmi ext/int_vec.cmi -ext/ext_utf8.cmx : ext/ext_utf8.cmi -ext/ext_utf8.cmi : -ext/ext_util.cmx : ext/ext_util.cmi -ext/ext_util.cmi : -ext/hash_set.cmx : ext/hash_set_gen.cmx ext/hash_set.cmi -ext/hash_set.cmi : ext/hash_set_gen.cmx -ext/hash_set_gen.cmx : ext/ext_util.cmx -ext/hash_set_ident_mask.cmx : ext/ext_util.cmx ext/ext_ident.cmx \ - stubs/bs_hash_stubs.cmx ext/hash_set_ident_mask.cmi -ext/hash_set_ident_mask.cmi : -ext/hash_set_poly.cmx : ext/hash_set_gen.cmx ext/hash_set_poly.cmi -ext/hash_set_poly.cmi : -ext/hashtbl_gen.cmx : ext/ext_util.cmx -ext/hashtbl_make.cmx : ext/hashtbl_gen.cmx ext/hashtbl_make.cmi -ext/hashtbl_make.cmi : ext/hashtbl_gen.cmx -ext/ident_hash_set.cmx : ext/hash_set_gen.cmx ext/ext_ident.cmx \ - stubs/bs_hash_stubs.cmx ext/ident_hash_set.cmi -ext/ident_hash_set.cmi : ext/hash_set_gen.cmx -ext/ident_hashtbl.cmx : ext/hashtbl_gen.cmx ext/ext_ident.cmx \ - stubs/bs_hash_stubs.cmx ext/ident_hashtbl.cmi -ext/ident_hashtbl.cmi : ext/hashtbl_gen.cmx -ext/ident_map.cmx : ext/map_gen.cmx ext/ext_ident.cmx ext/ident_map.cmi -ext/ident_map.cmi : ext/map_gen.cmx -ext/ident_set.cmx : ext/set_gen.cmx ext/ident_set.cmi -ext/ident_set.cmi : ext/set_gen.cmx -ext/int_hash_set.cmx : ext/hash_set_gen.cmx ext/ext_int.cmx \ - stubs/bs_hash_stubs.cmx ext/int_hash_set.cmi -ext/int_hash_set.cmi : ext/hash_set_gen.cmx -ext/int_hashtbl.cmx : ext/hashtbl_gen.cmx ext/ext_int.cmx \ - stubs/bs_hash_stubs.cmx ext/int_hashtbl.cmi -ext/int_hashtbl.cmi : ext/hashtbl_gen.cmx -ext/int_map.cmx : ext/map_gen.cmx ext/ext_int.cmx ext/int_map.cmi -ext/int_map.cmi : ext/map_gen.cmx -ext/int_vec.cmx : ext/ext_array.cmx stubs/bs_hash_stubs.cmx ext/int_vec.cmi -ext/int_vec.cmi : ext/vec_gen.cmx -ext/int_vec_util.cmx : ext/int_vec.cmx ext/int_vec_util.cmi -ext/int_vec_util.cmi : ext/int_vec.cmi -ext/int_vec_vec.cmx : ext/resize_array.cmx ext/int_vec.cmx \ - ext/int_vec_vec.cmi -ext/int_vec_vec.cmi : ext/vec_gen.cmx ext/int_vec.cmi -ext/literals.cmx : ext/literals.cmi -ext/literals.cmi : -ext/map_gen.cmx : -ext/ordered_hash_map_gen.cmx : ext/ext_util.cmx -ext/ordered_hash_map_local_ident.cmx : ext/ordered_hash_map_gen.cmx \ - ext/ext_ident.cmx stubs/bs_hash_stubs.cmx \ - ext/ordered_hash_map_local_ident.cmi -ext/ordered_hash_map_local_ident.cmi : ext/ordered_hash_map_gen.cmx -ext/ordered_hash_set_gen.cmx : ext/ext_util.cmx -ext/ordered_hash_set_ident.cmx : ext/ordered_hash_set_gen.cmx \ - ext/ext_util.cmx ext/ext_ident.cmx stubs/bs_hash_stubs.cmx \ - ext/ordered_hash_set_ident.cmi -ext/ordered_hash_set_ident.cmi : ext/ordered_hash_set_gen.cmx -ext/ordered_hash_set_make.cmx : ext/ordered_hash_set_gen.cmx \ - ext/ext_util.cmx -ext/ordered_hash_set_string.cmx : ext/ordered_hash_set_gen.cmx \ - ext/ext_util.cmx ext/ext_string.cmx stubs/bs_hash_stubs.cmx \ - ext/ordered_hash_set_string.cmi -ext/ordered_hash_set_string.cmi : ext/ordered_hash_set_gen.cmx -ext/resize_array.cmx : ext/vec_gen.cmx ext/ext_array.cmx \ - ext/resize_array.cmi -ext/resize_array.cmi : ext/vec_gen.cmx -ext/set_gen.cmx : -ext/set_int.cmx : ext/set_gen.cmx ext/ext_int.cmx ext/set_int.cmi -ext/set_int.cmi : ext/set_gen.cmx -ext/string_hash_set.cmx : ext/hash_set_gen.cmx ext/ext_string.cmx \ - stubs/bs_hash_stubs.cmx ext/string_hash_set.cmi -ext/string_hash_set.cmi : ext/hash_set_gen.cmx -ext/string_hashtbl.cmx : ext/hashtbl_gen.cmx ext/ext_string.cmx \ - stubs/bs_hash_stubs.cmx ext/string_hashtbl.cmi -ext/string_hashtbl.cmi : ext/hashtbl_gen.cmx -ext/string_map.cmx : ext/map_gen.cmx ext/ext_string.cmx ext/string_map.cmi -ext/string_map.cmi : ext/map_gen.cmx -ext/string_set.cmx : ext/set_gen.cmx ext/ext_string.cmx ext/string_set.cmi -ext/string_set.cmi : -ext/string_vec.cmx : ext/resize_array.cmx ext/string_vec.cmi -ext/string_vec.cmi : ext/vec_gen.cmx -ext/union_find.cmx : ext/union_find.cmi -ext/union_find.cmi : -ext/vec_gen.cmx : +core/bspack_main.cmi : +core/jsoo_main.cmi : +core/bspp_main.cmi : +core/js_cmi_datasets.cmi : ext/string_map.cmi +core/js_main.cmi : +core/bsppx_main.cmx : syntax/ppx_entry.cmx +core/bspack_main.cmx : ext/string_hashtbl.cmx ext/ext_string.cmx \ + ext/ext_pervasives.cmx ext/ext_path.cmx ext/ext_list.cmx ext/ext_io.cmx \ + depends/ast_extract.cmx core/bspack_main.cmi +core/jsoo_main.cmx : super_errors/super_main.cmx ext/string_map.cmx \ + syntax/ppx_entry.cmx outcome_printer/outcome_printer_ns.cmx \ + core/lam_compile_main.cmx core/lam_compile_env.cmx \ + core/js_dump_program.cmx core/js_cmj_format.cmx core/js_cmj_datasets.cmx \ + ext/ext_pp.cmx bsb/bsb_warning.cmx common/bs_version.cmx \ + core/bs_conditional_initial.cmx core/jsoo_main.cmi +core/bspp_main.cmx : core/bspp_main.cmi +core/js_cmi_datasets.cmx : ext/string_map.cmx core/js_cmi_datasets.cmi +core/js_main.cmx : super_errors/super_main.cmx \ + outcome_printer/reason_outcome_printer_main.cmx \ + outcome_printer/outcome_printer_ns.cmx core/ocaml_parse.cmx \ + core/ocaml_options.cmx core/ocaml_batch_compile.cmx \ + core/js_packages_state.cmx core/js_implementation.cmx \ + common/js_config.cmx ext/ext_string.cmx core/bs_conditional_initial.cmx \ + core/js_main.cmi +core/cmjdump_main.cmx : ext/string_map.cmx core/lam_arity.cmx \ + core/js_packages_info.cmx core/js_cmj_format.cmx +core/astdump_main.cmx : common/ml_binary.cmx ext/ext_path.cmx \ + bsb/bsb_helper_depfile_gen.cmx +ounit/oUnit.cmi : +ounit/oUnitDiff.cmi : +ounit/oUnit.cmx : ounit/oUnitUtils.cmx ounit/oUnitTypes.cmx \ + ounit/oUnitLogger.cmx ounit/oUnitChooser.cmx ounit/oUnit.cmi +ounit/oUnitDiff.cmx : ounit/oUnit.cmx ounit/oUnitDiff.cmi +ounit/oUnitLogger.cmx : ounit/oUnitUtils.cmx ounit/oUnitTypes.cmx +ounit/oUnitTypes.cmx : +ounit/oUnitUtils.cmx : ounit/oUnitTypes.cmx +ounit/oUnitChooser.cmx : ounit/oUnitTypes.cmx +super_errors/super_reason_react.cmx : super_errors/super_reason_react.cmi +super_errors/super_misc.cmx : super_errors/super_misc.cmi +super_errors/super_warnings.cmx : +super_errors/super_location.cmx : super_errors/super_warnings.cmx \ + super_errors/super_misc.cmx +super_errors/super_env.cmx : super_errors/super_location.cmx +super_errors/super_pparse.cmx : super_errors/super_location.cmx \ + ext/ext_string.cmx +super_errors/super_typecore.cmx : super_errors/super_reason_react.cmx \ + super_errors/super_location.cmx +super_errors/super_typemod.cmx : super_errors/super_reason_react.cmx \ + super_errors/super_location.cmx +super_errors/super_typetexp.cmx : super_errors/super_location.cmx +super_errors/super_main.cmx : super_errors/super_typetexp.cmx \ + super_errors/super_typemod.cmx super_errors/super_typecore.cmx \ + super_errors/super_pparse.cmx super_errors/super_location.cmx \ + super_errors/super_env.cmx +super_errors/super_reason_react.cmi : +super_errors/super_misc.cmi : +outcome_printer/reason_syntax_util.cmx : \ + outcome_printer/reason_syntax_util.cmi +outcome_printer/outcome_printer_ns.cmx : ext/ext_namespace.cmx \ + outcome_printer/outcome_printer_ns.cmi +outcome_printer/tweaked_reason_oprint.cmx : \ + outcome_printer/reason_syntax_util.cmx +outcome_printer/reason_outcome_printer_main.cmx : \ + outcome_printer/tweaked_reason_oprint.cmx +outcome_printer/reason_syntax_util.cmi : +outcome_printer/outcome_printer_ns.cmi : +ounit_tests/ounit_cmd_util.cmi : +ounit_tests/ounit_tests_main.cmi : +ounit_tests/ounit_tests_util.cmx : +ounit_tests/ounit_array_tests.cmx : ounit/oUnit.cmx ext/ext_string.cmx \ + ext/ext_array.cmx +ounit_tests/ounit_list_test.cmx : ounit/oUnit.cmx ext/ext_list.cmx +ounit_tests/ounit_bal_tree_tests.cmx : ext/set_int.cmx ext/set_gen.cmx \ + ounit_tests/ounit_tests_util.cmx ounit/oUnit.cmx +ounit_tests/ounit_path_tests.cmx : ounit/oUnit.cmx ext/ext_string.cmx \ + ext/ext_path.cmx +ounit_tests/ounit_union_find_tests.cmx : ext/union_find.cmx ounit/oUnit.cmx \ + ext/int_vec_vec.cmx ext/int_vec.cmx ext/ext_string.cmx +ounit_tests/ounit_hash_stubs_test.cmx : ounit_tests/ounit_tests_util.cmx \ + ounit/oUnit.cmx ext/int_hash_set.cmx ext/hash_set_poly.cmx \ + stubs/bs_hash_stubs.cmx +ounit_tests/ounit_hash_set_tests.cmx : ext/string_hash_set.cmx \ + ext/ordered_hash_set_string.cmx ounit/oUnit.cmx ext/hash_set_poly.cmx \ + ext/hash_set.cmx +ounit_tests/ounit_scc_tests.cmx : ext/string_hashtbl.cmx ounit/oUnit.cmx \ + ext/int_vec_vec.cmx ext/int_vec.cmx ext/ext_string.cmx ext/ext_scc.cmx +ounit_tests/ounit_hashtbl_tests.cmx : ext/string_hashtbl.cmx ounit/oUnit.cmx +ounit_tests/ounit_json_tests.cmx : ext/string_map.cmx ounit/oUnit.cmx \ + ext/ext_pervasives.cmx ext/ext_json_types.cmx ext/ext_json_parse.cmx \ + ext/ext_json_noloc.cmx ext/ext_json.cmx +ounit_tests/ounit_map_tests.cmx : ounit/oUnit.cmx ext/int_map.cmx +ounit_tests/ounit_ordered_hash_set_tests.cmx : \ + ext/ordered_hash_set_string.cmx ounit/oUnit.cmx ext/ext_util.cmx \ + ext/ext_string.cmx +ounit_tests/ounit_vec_test.cmx : ext/set_int.cmx ounit/oUnit.cmx \ + ext/int_vec.cmx ext/ext_list.cmx ext/ext_json.cmx +ounit_tests/ounit_data_random.cmx : +ounit_tests/ounit_string_tests.cmx : ounit_tests/ounit_data_random.cmx \ + ounit/oUnit.cmx ext/ext_string.cmx ext/ext_path.cmx ext/ext_namespace.cmx \ + ext/ext_modulename.cmx +ounit_tests/ounit_utf8_test.cmx : ounit/oUnit.cmx ext/ext_utf8.cmx +ounit_tests/ounit_js_regex_checker_tests.cmx : ounit/oUnit.cmx \ + ext/ext_js_regex.cmx +ounit_tests/ounit_topsort_tests.cmx : ext/set_int.cmx ounit/oUnit.cmx \ + ext/int_vec.cmx ext/ext_topsort.cmx +ounit_tests/ounit_sexp_tests.cmx : +ounit_tests/ounit_int_vec_tests.cmx : ounit/oUnit.cmx ext/int_vec_util.cmx \ + ext/int_vec.cmx +ounit_tests/ounit_ident_mask_tests.cmx : ounit/oUnit.cmx \ + ext/hash_set_ident_mask.cmx +ounit_tests/ounit_cmd_util.cmx : ext/literals.cmx \ + ounit_tests/ounit_cmd_util.cmi +ounit_tests/ounit_cmd_tests.cmx : ounit_tests/ounit_cmd_util.cmx \ + ounit/oUnit.cmx ext/ext_string.cmx +ounit_tests/ounit_ffi_error_debug_test.cmx : ounit_tests/ounit_cmd_util.cmx \ + ounit/oUnit.cmx ext/ext_string.cmx +ounit_tests/ounit_unicode_tests.cmx : ounit/oUnit.cmx ext/ext_string.cmx \ + ext/ext_list.cmx syntax/ast_utf8_string_interp.cmx \ + syntax/ast_utf8_string.cmx +ounit_tests/ounit_bsb_regex_tests.cmx : ounit/oUnit.cmx bsb/bsb_regex.cmx +ounit_tests/ounit_tests_main.cmx : ext/resize_array.cmx \ + ounit_tests/ounit_vec_test.cmx ounit_tests/ounit_utf8_test.cmx \ + ounit_tests/ounit_union_find_tests.cmx \ + ounit_tests/ounit_unicode_tests.cmx ounit_tests/ounit_topsort_tests.cmx \ + ounit_tests/ounit_string_tests.cmx ounit_tests/ounit_scc_tests.cmx \ + ounit_tests/ounit_path_tests.cmx \ + ounit_tests/ounit_ordered_hash_set_tests.cmx \ + ounit_tests/ounit_map_tests.cmx ounit_tests/ounit_list_test.cmx \ + ounit_tests/ounit_json_tests.cmx \ + ounit_tests/ounit_js_regex_checker_tests.cmx \ + ounit_tests/ounit_int_vec_tests.cmx \ + ounit_tests/ounit_ident_mask_tests.cmx \ + ounit_tests/ounit_hashtbl_tests.cmx ounit_tests/ounit_hash_stubs_test.cmx \ + ounit_tests/ounit_hash_set_tests.cmx \ + ounit_tests/ounit_ffi_error_debug_test.cmx \ + ounit_tests/ounit_cmd_tests.cmx ounit_tests/ounit_bsb_regex_tests.cmx \ + ounit_tests/ounit_bal_tree_tests.cmx ounit_tests/ounit_array_tests.cmx \ + ounit/oUnit.cmx ounit_tests/ounit_tests_main.cmi +bsb/bsb_build_schemas.cmx : +bsb/bsb_build_util.cmx : ext/string_map.cmx ext/string_hashtbl.cmx \ + ext/literals.cmx ext/ext_sys.cmx ext/ext_string.cmx ext/ext_path.cmx \ + ext/ext_list.cmx ext/ext_json_types.cmx ext/ext_json_parse.cmx \ + ext/ext_json.cmx ext/ext_array.cmx bsb/bsb_pkg.cmx bsb/bsb_log.cmx \ + bsb/bsb_exception.cmx bsb/bsb_build_schemas.cmx bsb/bsb_build_util.cmi +bsb/bsb_clean.cmx : ext/ext_path.cmx bsb/bsb_unix.cmx \ + bsb/bsb_parse_sources.cmx bsb/bsb_log.cmx bsb/bsb_config.cmx \ + bsb/bsb_build_util.cmx bsb/bsb_clean.cmi +bsb/bsb_config.cmx : ext/ext_path.cmx bsb/bsb_config.cmi +bsb/bsb_config_parse.cmx : ext/string_map.cmx ext/string_hash_set.cmx \ + ext/literals.cmx ext/ext_path.cmx ext/ext_namespace.cmx ext/ext_list.cmx \ + ext/ext_json_types.cmx ext/ext_json_parse.cmx ext/ext_json.cmx \ + ext/ext_file_pp.cmx ext/ext_array.cmx bsb/bsb_watcher_gen.cmx \ + bsb/bsb_warning.cmx bsb/bsb_pkg.cmx bsb/bsb_parse_sources.cmx \ + bsb/bsb_package_specs.cmx bsb/bsb_exception.cmx bsb/bsb_default.cmx \ + bsb/bsb_config_types.cmx bsb/bsb_config.cmx bsb/bsb_build_util.cmx \ + bsb/bsb_build_schemas.cmx common/bs_version.cmx bsb/bsb_config_parse.cmi +bsb/bsb_config_types.cmx : ext/string_map.cmx ext/string_hash_set.cmx \ + bsb/bsb_warning.cmx bsb/bsb_package_specs.cmx bsb/bsb_file_groups.cmx +bsb/bsb_db.cmx : ext/string_map.cmx ext/ext_string.cmx \ + ext/ext_pervasives.cmx ext/ext_path.cmx ext/ext_modulename.cmx \ + bsb/bsb_exception.cmx bsb/bsb_db.cmi +bsb/bsb_default.cmx : bsb/bsb_config_types.cmx bsb/bsb_default.cmi +bsb/bsb_dir_index.cmx : bsb/bsb_dir_index.cmi +bsb/bsb_exception.cmx : ext/ext_string.cmx ext/ext_position.cmx \ + ext/ext_json.cmx common/bs_version.cmx bsb/bsb_exception.cmi +bsb/bsb_file.cmx : bsb/bsb_file.cmi +bsb/bsb_file_groups.cmx : ext/string_set.cmx ext/string_map.cmx \ + ext/ext_list.cmx ext/ext_file_pp.cmx bsb/bsb_dir_index.cmx bsb/bsb_db.cmx +bsb/bsb_helper_dep_graph.cmx : ext/string_set.cmx ext/string_map.cmx \ + ext/string_hashtbl.cmx bsb/bsb_log.cmx bsb/bsb_helper_dep_graph.cmi +bsb/bsb_helper_depfile_gen.cmx : ext/string_map.cmx ext/literals.cmx \ + ext/ext_string.cmx ext/ext_pervasives.cmx ext/ext_namespace.cmx \ + bsb/bsb_dir_index.cmx bsb/bsb_db.cmx bsb/bsb_helper_depfile_gen.cmi +bsb/bsb_helper_extract.cmx : ext/string_set.cmx ext/ext_string.cmx \ + bsb/bsb_helper_extract.cmi +bsb/bsb_helper_linker.cmx : ext/string_map.cmx ext/literals.cmx \ + ext/ext_path.cmx ext/ext_modulename.cmx bsb/bsb_helper_extract.cmx \ + bsb/bsb_helper_dep_graph.cmx bsb/bsb_helper_linker.cmi +bsb/bsb_helper_main.cmx : ext/ext_path.cmx bsb/bsb_helper_depfile_gen.cmx \ + bsb/bsb_dir_index.cmx bsb/bsb_helper_main.cmi +bsb/bsb_helper_packer.cmx : ext/string_set.cmx ext/string_map.cmx \ + ext/literals.cmx ext/ext_path.cmx ext/ext_modulename.cmx \ + bsb/bsb_helper_extract.cmx bsb/bsb_helper_dep_graph.cmx \ + bsb/bsb_helper_packer.cmi +bsb/bsb_log.cmx : ext/ext_string.cmx ext/ext_color.cmx bsb/bsb_log.cmi +bsb/bsb_main.cmx : ext/ext_sys.cmx ext/ext_string.cmx ext/ext_pervasives.cmx \ + ext/ext_path.cmx ext/ext_json_parse.cmx ext/ext_array.cmx \ + bsb/bsb_world.cmx bsb/bsb_theme_init.cmx bsb/bsb_query.cmx \ + bsb/bsb_ninja_regen.cmx bsb/bsb_log.cmx bsb/bsb_exception.cmx \ + bsb/bsb_config.cmx bsb/bsb_clean.cmx bsb/bsb_build_util.cmx \ + common/bs_version.cmx bsb/bsb_main.cmi +bsb/bsb_merlin_gen.cmx : ext/literals.cmx ext/ext_string.cmx \ + ext/ext_path.cmx bsb/bsb_warning.cmx bsb/bsb_file_groups.cmx \ + bsb/bsb_config_types.cmx bsb/bsb_config.cmx bsb/bsb_merlin_gen.cmi +bsb/bsb_namespace_map_gen.cmx : ext/string_map.cmx ext/literals.cmx \ + ext/ext_path.cmx bsb/bsb_file_groups.cmx bsb/bsb_namespace_map_gen.cmi +bsb/bsb_ninja_check.cmx : ext/ext_array.cmx bsb/bsb_log.cmx \ + common/bs_version.cmx bsb/bsb_ninja_check.cmi +bsb/bsb_ninja_file_groups.cmx : ext/string_set.cmx ext/string_map.cmx \ + ext/string_hash_set.cmx ext/literals.cmx ext/ext_string.cmx \ + ext/ext_pervasives.cmx ext/ext_path.cmx ext/ext_namespace.cmx \ + ext/ext_list.cmx bsb/bsb_rule.cmx bsb/bsb_package_specs.cmx \ + bsb/bsb_ninja_util.cmx bsb/bsb_ninja_global_vars.cmx \ + bsb/bsb_file_groups.cmx bsb/bsb_dir_index.cmx bsb/bsb_db.cmx \ + bsb/bsb_config.cmx bsb/bsb_build_schemas.cmx \ + bsb/bsb_ninja_file_groups.cmi +bsb/bsb_ninja_gen.cmx : ext/string_map.cmx ext/literals.cmx \ + ext/ext_string.cmx ext/ext_path.cmx ext/ext_list.cmx bsb/bsb_warning.cmx \ + bsb/bsb_rule.cmx bsb/bsb_ninja_util.cmx bsb/bsb_ninja_global_vars.cmx \ + bsb/bsb_ninja_file_groups.cmx bsb/bsb_namespace_map_gen.cmx \ + bsb/bsb_log.cmx bsb/bsb_file_groups.cmx bsb/bsb_exception.cmx \ + bsb/bsb_dir_index.cmx bsb/bsb_default.cmx bsb/bsb_db.cmx \ + bsb/bsb_config_types.cmx bsb/bsb_config.cmx bsb/bsb_build_util.cmx \ + bsb/bsb_build_schemas.cmx bsb/bsb_ninja_gen.cmi +bsb/bsb_ninja_global_vars.cmx : +bsb/bsb_ninja_regen.cmx : ext/literals.cmx ext/ext_path.cmx \ + bsb/bsb_ninja_gen.cmx bsb/bsb_ninja_check.cmx bsb/bsb_merlin_gen.cmx \ + bsb/bsb_log.cmx bsb/bsb_config_parse.cmx bsb/bsb_config.cmx \ + bsb/bsb_clean.cmx bsb/bsb_build_util.cmx bsb/bsb_ninja_regen.cmi +bsb/bsb_ninja_util.cmx : ext/ext_string.cmx bsb/bsb_rule.cmx \ + bsb/bsb_ninja_util.cmi +bsb/bsb_package_specs.cmx : ext/string_map.cmx ext/literals.cmx \ + ext/ext_string.cmx ext/ext_path.cmx ext/ext_namespace.cmx \ + ext/ext_json_types.cmx ext/ext_json.cmx bsb/bsb_exception.cmx \ + bsb/bsb_config.cmx bsb/bsb_build_schemas.cmx bsb/bsb_package_specs.cmi +bsb/bsb_parse_sources.cmx : ext/string_vec.cmx ext/string_set.cmx \ + ext/string_map.cmx ext/literals.cmx ext/ext_string.cmx \ + ext/ext_position.cmx ext/ext_path.cmx ext/ext_namespace.cmx \ + ext/ext_json_types.cmx ext/ext_json_parse.cmx ext/ext_json.cmx \ + ext/ext_filename.cmx ext/ext_file_pp.cmx ext/ext_array.cmx \ + bsb/bsb_log.cmx bsb/bsb_file_groups.cmx bsb/bsb_exception.cmx \ + bsb/bsb_dir_index.cmx bsb/bsb_db.cmx bsb/bsb_config.cmx \ + bsb/bsb_build_util.cmx bsb/bsb_build_schemas.cmx \ + bsb/bsb_parse_sources.cmi +bsb/bsb_pkg.cmx : ext/string_hashtbl.cmx ext/literals.cmx bsb/bsb_log.cmx \ + bsb/bsb_exception.cmx bsb/bsb_pkg.cmi +bsb/bsb_query.cmx : ext/string_map.cmx ext/ext_json_noloc.cmx \ + ext/ext_array.cmx bsb/bsb_ninja_regen.cmx bsb/bsb_file_groups.cmx \ + bsb/bsb_config_types.cmx bsb/bsb_query.cmi +bsb/bsb_regex.cmx : bsb/bsb_regex.cmi +bsb/bsb_rule.cmx : ext/string_set.cmx ext/string_map.cmx ext/ext_sys.cmx \ + bsb/bsb_rule.cmi +bsb/bsb_templates.cmx : bsb/oCamlRes.cmx bsb/bsb_templates.cmi +bsb/bsb_theme_init.cmx : ext/string_map.cmx ext/string_hashtbl.cmx \ + bsb/oCamlRes.cmx ext/literals.cmx ext/ext_sys.cmx ext/ext_namespace.cmx \ + ext/ext_json_parse.cmx ext/ext_io.cmx bsb/bsb_templates.cmx \ + bsb/bsb_regex.cmx bsb/bsb_build_util.cmx bsb/bsb_build_schemas.cmx \ + common/bs_version.cmx bsb/bsb_theme_init.cmi +bsb/bsb_unix.cmx : ext/ext_sys.cmx ext/ext_string.cmx bsb/bsb_log.cmx \ + bsb/bsb_unix.cmi +bsb/bsb_warning.cmx : ext/string_map.cmx ext/ext_string.cmx \ + ext/ext_json_types.cmx bsb/bsb_exception.cmx bsb/bsb_build_schemas.cmx \ + bsb/bsb_warning.cmi +bsb/bsb_watcher_gen.cmx : ext/ext_path.cmx ext/ext_list.cmx \ + ext/ext_json_noloc.cmx ext/ext_array.cmx bsb/bsb_file_groups.cmx \ + bsb/bsb_config.cmx bsb/bsb_watcher_gen.cmi +bsb/bsb_world.cmx : ext/string_hash_set.cmx ext/literals.cmx \ + ext/ext_path.cmx ext/ext_namespace.cmx bsb/bsb_unix.cmx \ + bsb/bsb_ninja_regen.cmx bsb/bsb_log.cmx bsb/bsb_file.cmx \ + bsb/bsb_config_types.cmx bsb/bsb_config_parse.cmx bsb/bsb_config.cmx \ + bsb/bsb_build_util.cmx bsb/bsb_world.cmi +bsb/oCamlRes.cmx : +bsb/bsb_build_util.cmi : ext/ext_json_types.cmx +bsb/bsb_clean.cmi : +bsb/bsb_config.cmi : +bsb/bsb_config_parse.cmi : bsb/bsb_package_specs.cmi \ + bsb/bsb_config_types.cmx +bsb/bsb_db.cmi : ext/string_map.cmi +bsb/bsb_default.cmi : bsb/bsb_config_types.cmx +bsb/bsb_dir_index.cmi : +bsb/bsb_exception.cmi : ext/ext_position.cmi ext/ext_json_types.cmx +bsb/bsb_file.cmi : +bsb/bsb_helper_dep_graph.cmi : ext/string_set.cmi ext/string_map.cmi \ + ext/string_hashtbl.cmi +bsb/bsb_helper_depfile_gen.cmi : bsb/bsb_dir_index.cmi +bsb/bsb_helper_extract.cmi : ext/string_set.cmi +bsb/bsb_helper_linker.cmi : +bsb/bsb_helper_main.cmi : +bsb/bsb_helper_packer.cmi : +bsb/bsb_log.cmi : +bsb/bsb_main.cmi : +bsb/bsb_merlin_gen.cmi : bsb/bsb_config_types.cmx +bsb/bsb_namespace_map_gen.cmi : bsb/bsb_file_groups.cmx +bsb/bsb_ninja_check.cmi : +bsb/bsb_ninja_file_groups.cmi : ext/string_map.cmi ext/string_hash_set.cmi \ + bsb/bsb_rule.cmi bsb/bsb_package_specs.cmi bsb/bsb_file_groups.cmx +bsb/bsb_ninja_gen.cmi : bsb/bsb_config_types.cmx +bsb/bsb_ninja_regen.cmi : bsb/bsb_package_specs.cmi bsb/bsb_config_types.cmx +bsb/bsb_ninja_util.cmi : bsb/bsb_rule.cmi +bsb/bsb_package_specs.cmi : ext/ext_json_types.cmx +bsb/bsb_parse_sources.cmi : ext/ext_json_types.cmx bsb/bsb_file_groups.cmx +bsb/bsb_pkg.cmi : +bsb/bsb_query.cmi : +bsb/bsb_regex.cmi : +bsb/bsb_rule.cmi : ext/string_map.cmi +bsb/bsb_templates.cmi : bsb/oCamlRes.cmx +bsb/bsb_theme_init.cmi : +bsb/bsb_unix.cmi : +bsb/bsb_warning.cmi : ext/string_map.cmi ext/ext_json_types.cmx +bsb/bsb_watcher_gen.cmi : bsb/bsb_file_groups.cmx +bsb/bsb_world.cmi : bsb/bsb_config_types.cmx jscmj_main.cmx : ext/literals.cmx core/js_cmj_format.cmx ext/ext_string.cmx \ ext/ext_pp.cmx ext/ext_pervasives.cmx ext/ext_list.cmx ext/ext_array.cmx \ jscmj_main.cmi -jscmj_main.cmi : jsgen_main.cmx : ext/ext_path.cmx ext/ext_array.cmx -ounit/oUnit.cmx : ounit/oUnitUtils.cmx ounit/oUnitTypes.cmx \ - ounit/oUnitLogger.cmx ounit/oUnitChooser.cmx ounit/oUnit.cmi -ounit/oUnit.cmi : -ounit/oUnitChooser.cmx : ounit/oUnitTypes.cmx -ounit/oUnitDiff.cmx : ounit/oUnit.cmx ounit/oUnitDiff.cmi -ounit/oUnitDiff.cmi : -ounit/oUnitLogger.cmx : ounit/oUnitUtils.cmx ounit/oUnitTypes.cmx -ounit/oUnitTypes.cmx : -ounit/oUnitUtils.cmx : ounit/oUnitTypes.cmx -ounit_tests/ounit_array_tests.cmx : ounit/oUnit.cmx ext/ext_string.cmx \ - ext/ext_array.cmx -ounit_tests/ounit_bal_tree_tests.cmx : ext/set_int.cmx ext/set_gen.cmx \ - ounit_tests/ounit_tests_util.cmx ounit/oUnit.cmx -ounit_tests/ounit_bsb_regex_tests.cmx : ounit/oUnit.cmx bsb/bsb_regex.cmx -ounit_tests/ounit_cmd_tests.cmx : ounit_tests/ounit_cmd_util.cmx \ - ounit/oUnit.cmx ext/ext_string.cmx -ounit_tests/ounit_cmd_util.cmx : ext/literals.cmx \ - ounit_tests/ounit_cmd_util.cmi -ounit_tests/ounit_cmd_util.cmi : -ounit_tests/ounit_data_random.cmx : -ounit_tests/ounit_ffi_error_debug_test.cmx : ounit_tests/ounit_cmd_util.cmx \ - ounit/oUnit.cmx ext/ext_string.cmx -ounit_tests/ounit_hash_set_tests.cmx : ext/string_hash_set.cmx \ - ext/ordered_hash_set_string.cmx ounit/oUnit.cmx ext/hash_set_poly.cmx \ - ext/hash_set.cmx -ounit_tests/ounit_hash_stubs_test.cmx : ounit_tests/ounit_tests_util.cmx \ - ounit/oUnit.cmx ext/int_hash_set.cmx ext/hash_set_poly.cmx \ - stubs/bs_hash_stubs.cmx -ounit_tests/ounit_hashtbl_tests.cmx : ext/string_hashtbl.cmx ounit/oUnit.cmx -ounit_tests/ounit_ident_mask_tests.cmx : ounit/oUnit.cmx \ - ext/hash_set_ident_mask.cmx -ounit_tests/ounit_int_vec_tests.cmx : ounit/oUnit.cmx ext/int_vec_util.cmx \ - ext/int_vec.cmx -ounit_tests/ounit_js_regex_checker_tests.cmx : ounit/oUnit.cmx \ - ext/ext_js_regex.cmx -ounit_tests/ounit_json_tests.cmx : ext/string_map.cmx ounit/oUnit.cmx \ - ext/ext_pervasives.cmx ext/ext_json_types.cmx ext/ext_json_parse.cmx \ - ext/ext_json_noloc.cmx ext/ext_json.cmx -ounit_tests/ounit_list_test.cmx : ounit/oUnit.cmx ext/ext_list.cmx -ounit_tests/ounit_map_tests.cmx : ounit/oUnit.cmx ext/int_map.cmx -ounit_tests/ounit_ordered_hash_set_tests.cmx : \ - ext/ordered_hash_set_string.cmx ounit/oUnit.cmx ext/ext_util.cmx \ - ext/ext_string.cmx -ounit_tests/ounit_path_tests.cmx : ounit/oUnit.cmx ext/ext_string.cmx \ - ext/ext_path.cmx -ounit_tests/ounit_scc_tests.cmx : ext/string_hashtbl.cmx ounit/oUnit.cmx \ - ext/int_vec_vec.cmx ext/int_vec.cmx ext/ext_string.cmx ext/ext_scc.cmx -ounit_tests/ounit_sexp_tests.cmx : -ounit_tests/ounit_string_tests.cmx : ounit_tests/ounit_data_random.cmx \ - ounit/oUnit.cmx ext/ext_string.cmx ext/ext_path.cmx ext/ext_namespace.cmx \ - ext/ext_modulename.cmx -ounit_tests/ounit_tests_main.cmx : ext/resize_array.cmx \ - ounit_tests/ounit_vec_test.cmx ounit_tests/ounit_utf8_test.cmx \ - ounit_tests/ounit_union_find_tests.cmx \ - ounit_tests/ounit_unicode_tests.cmx ounit_tests/ounit_topsort_tests.cmx \ - ounit_tests/ounit_string_tests.cmx ounit_tests/ounit_scc_tests.cmx \ - ounit_tests/ounit_path_tests.cmx \ - ounit_tests/ounit_ordered_hash_set_tests.cmx \ - ounit_tests/ounit_map_tests.cmx ounit_tests/ounit_list_test.cmx \ - ounit_tests/ounit_json_tests.cmx \ - ounit_tests/ounit_js_regex_checker_tests.cmx \ - ounit_tests/ounit_int_vec_tests.cmx \ - ounit_tests/ounit_ident_mask_tests.cmx \ - ounit_tests/ounit_hashtbl_tests.cmx ounit_tests/ounit_hash_stubs_test.cmx \ - ounit_tests/ounit_hash_set_tests.cmx \ - ounit_tests/ounit_ffi_error_debug_test.cmx \ - ounit_tests/ounit_cmd_tests.cmx ounit_tests/ounit_bsb_regex_tests.cmx \ - ounit_tests/ounit_bal_tree_tests.cmx ounit_tests/ounit_array_tests.cmx \ - ounit/oUnit.cmx ounit_tests/ounit_tests_main.cmi -ounit_tests/ounit_tests_main.cmi : -ounit_tests/ounit_tests_util.cmx : -ounit_tests/ounit_topsort_tests.cmx : ext/set_int.cmx ounit/oUnit.cmx \ - ext/int_vec.cmx ext/ext_topsort.cmx -ounit_tests/ounit_unicode_tests.cmx : ounit/oUnit.cmx ext/ext_string.cmx \ - ext/ext_list.cmx syntax/ast_utf8_string_interp.cmx \ - syntax/ast_utf8_string.cmx -ounit_tests/ounit_union_find_tests.cmx : ext/union_find.cmx ounit/oUnit.cmx \ - ext/int_vec_vec.cmx ext/int_vec.cmx ext/ext_string.cmx -ounit_tests/ounit_utf8_test.cmx : ounit/oUnit.cmx ext/ext_utf8.cmx -ounit_tests/ounit_vec_test.cmx : ext/set_int.cmx ounit/oUnit.cmx \ - ext/int_vec.cmx ext/ext_list.cmx ext/ext_json.cmx -outcome_printer/outcome_printer_ns.cmx : ext/ext_namespace.cmx \ - outcome_printer/outcome_printer_ns.cmi -outcome_printer/outcome_printer_ns.cmi : -outcome_printer/reason_outcome_printer_main.cmx : \ - outcome_printer/tweaked_reason_oprint.cmx -outcome_printer/reason_syntax_util.cmx : \ - outcome_printer/reason_syntax_util.cmi -outcome_printer/reason_syntax_util.cmi : -outcome_printer/tweaked_reason_oprint.cmx : \ - outcome_printer/reason_syntax_util.cmx rollup_test.cmx : -stubs/bs_hash_stubs.cmx : -super_errors/super_env.cmx : super_errors/super_location.cmx -super_errors/super_location.cmx : super_errors/super_warnings.cmx \ - super_errors/super_misc.cmx -super_errors/super_main.cmx : super_errors/super_typetexp.cmx \ - super_errors/super_typemod.cmx super_errors/super_typecore.cmx \ - super_errors/super_pparse.cmx super_errors/super_location.cmx \ - super_errors/super_env.cmx -super_errors/super_misc.cmx : super_errors/super_misc.cmi -super_errors/super_misc.cmi : -super_errors/super_pparse.cmx : super_errors/super_location.cmx \ - ext/ext_string.cmx -super_errors/super_reason_react.cmx : super_errors/super_reason_react.cmi -super_errors/super_reason_react.cmi : -super_errors/super_typecore.cmx : super_errors/super_reason_react.cmx \ - super_errors/super_location.cmx -super_errors/super_typemod.cmx : super_errors/super_reason_react.cmx \ - super_errors/super_location.cmx -super_errors/super_typetexp.cmx : super_errors/super_location.cmx -super_errors/super_warnings.cmx : -syntax/ast_attributes.cmx : ext/ext_string.cmx syntax/bs_syntaxerr.cmx \ - syntax/bs_ast_invariant.cmx syntax/ast_payload.cmx \ - syntax/ast_attributes.cmi -syntax/ast_attributes.cmi : syntax/ast_payload.cmi -syntax/ast_comb.cmx : ext/ext_list.cmx syntax/ast_literal.cmx \ - syntax/ast_comb.cmi -syntax/ast_comb.cmi : -syntax/ast_compatible.cmx : ext/ext_list.cmx syntax/ast_compatible.cmi -syntax/ast_compatible.cmi : -syntax/ast_core_type.cmx : ext/ext_list.cmx syntax/bs_syntaxerr.cmx \ - syntax/ast_comb.cmx syntax/ast_core_type.cmi -syntax/ast_core_type.cmi : -syntax/ast_core_type_class_type.cmx : ext/literals.cmx ext/ext_ref.cmx \ - ext/ext_list.cmx syntax/bs_ast_mapper.cmx syntax/ast_util.cmx \ - syntax/ast_literal.cmx syntax/ast_comb.cmx syntax/ast_attributes.cmx \ - syntax/ast_core_type_class_type.cmi -syntax/ast_core_type_class_type.cmi : syntax/bs_ast_mapper.cmi -syntax/ast_derive.cmx : ext/string_map.cmx ext/literals.cmx \ - ext/ext_string.cmx ext/ext_list.cmx syntax/bs_syntaxerr.cmx \ - syntax/ast_structure.cmx syntax/ast_signature.cmx syntax/ast_payload.cmx \ - syntax/ast_derive.cmi -syntax/ast_derive.cmi : syntax/ast_structure.cmi syntax/ast_signature.cmi \ - syntax/ast_payload.cmi -syntax/ast_derive_abstract.cmx : syntax/external_process.cmx \ - syntax/external_ffi_types.cmx syntax/external_arg_spec.cmx \ - ext/ext_list.cmx syntax/ast_literal.cmx syntax/ast_derive_util.cmx \ - syntax/ast_core_type.cmx syntax/ast_attributes.cmx \ - syntax/ast_derive_abstract.cmi -syntax/ast_derive_abstract.cmi : -syntax/ast_derive_constructor.cmx : -syntax/ast_derive_dyn.cmx : ext/ext_list.cmx syntax/bs_syntaxerr.cmx \ - syntax/ast_structure.cmx syntax/ast_derive_util.cmx syntax/ast_derive.cmx \ - syntax/ast_attributes.cmx syntax/ast_derive_dyn.cmi -syntax/ast_derive_dyn.cmi : -syntax/ast_derive_js_mapper.cmx : ext/ext_list.cmx syntax/ast_polyvar.cmx \ - syntax/ast_literal.cmx syntax/ast_derive_util.cmx syntax/ast_derive.cmx \ - syntax/ast_core_type.cmx syntax/ast_comb.cmx \ - syntax/ast_derive_js_mapper.cmi -syntax/ast_derive_js_mapper.cmi : -syntax/ast_derive_projector.cmx : ext/ext_string.cmx ext/ext_list.cmx \ - syntax/ast_derive_util.cmx syntax/ast_derive.cmx syntax/ast_comb.cmx \ - syntax/ast_derive_projector.cmi -syntax/ast_derive_projector.cmi : -syntax/ast_derive_util.cmx : ext/ext_list.cmx syntax/ast_compatible.cmx \ - syntax/ast_derive_util.cmi -syntax/ast_derive_util.cmi : -syntax/ast_exp.cmx : syntax/ast_exp.cmi -syntax/ast_exp.cmi : -syntax/ast_exp_apply.cmx : ext/literals.cmx ext/ext_list.cmx \ - syntax/bs_ast_mapper.cmx syntax/bs_ast_invariant.cmx syntax/ast_util.cmx \ - syntax/ast_tuple_pattern_flatten.cmx syntax/ast_literal.cmx \ - syntax/ast_attributes.cmx syntax/ast_exp_apply.cmi -syntax/ast_exp_apply.cmi : syntax/bs_ast_mapper.cmi -syntax/ast_exp_extension.cmx : ext/literals.cmx ext/ext_string.cmx \ - ext/ext_ref.cmx ext/ext_pervasives.cmx common/bs_version.cmx \ - syntax/bs_ast_mapper.cmx syntax/ast_util.cmx syntax/ast_payload.cmx \ - syntax/ast_literal.cmx syntax/ast_derive.cmx syntax/ast_core_type.cmx \ - syntax/ast_comb.cmx syntax/ast_exp_extension.cmi -syntax/ast_exp_extension.cmi : syntax/bs_ast_mapper.cmi -syntax/ast_external_mk.cmx : syntax/ast_external_mk.cmi -syntax/ast_external_mk.cmi : -syntax/ast_lift.cmx : syntax/ast_lift.cmi -syntax/ast_lift.cmi : -syntax/ast_literal.cmx : syntax/ast_literal.cmi -syntax/ast_literal.cmi : -syntax/ast_pat.cmx : syntax/ast_pat.cmi -syntax/ast_pat.cmi : -syntax/ast_payload.cmx : ext/string_map.cmx ext/ext_list.cmx \ - ext/ext_js_regex.cmx syntax/ast_payload.cmi -syntax/ast_payload.cmi : ext/string_map.cmi -syntax/ast_polyvar.cmx : syntax/external_arg_spec.cmx ext/ext_pervasives.cmx \ - ext/ext_list.cmx syntax/bs_syntaxerr.cmx syntax/ast_attributes.cmx \ - syntax/ast_polyvar.cmi -syntax/ast_polyvar.cmi : syntax/external_arg_spec.cmi -syntax/ast_primitive.cmx : syntax/external_process.cmx \ - syntax/bs_ast_mapper.cmx syntax/ast_primitive.cmi -syntax/ast_primitive.cmi : syntax/bs_ast_mapper.cmi -syntax/ast_signature.cmx : syntax/ast_signature.cmi -syntax/ast_signature.cmi : -syntax/ast_structure.cmx : syntax/ast_signature.cmx syntax/ast_literal.cmx \ - syntax/ast_structure.cmi -syntax/ast_structure.cmi : syntax/ast_signature.cmi -syntax/ast_tdcls.cmx : ext/ext_list.cmx syntax/bs_ast_mapper.cmx \ - syntax/ast_structure.cmx syntax/ast_signature.cmx syntax/ast_payload.cmx \ - syntax/ast_derive_abstract.cmx syntax/ast_derive.cmx \ - syntax/ast_attributes.cmx syntax/ast_tdcls.cmi -syntax/ast_tdcls.cmi : syntax/bs_ast_mapper.cmi syntax/ast_structure.cmi \ - syntax/ast_signature.cmi -syntax/ast_tuple_pattern_flatten.cmx : ext/ext_list.cmx \ - syntax/bs_ast_mapper.cmx syntax/bs_ast_invariant.cmx \ - syntax/ast_tuple_pattern_flatten.cmi -syntax/ast_tuple_pattern_flatten.cmi : syntax/bs_ast_mapper.cmi -syntax/ast_utf8_string.cmx : ext/ext_utf8.cmx ext/ext_char.cmx \ - syntax/ast_utf8_string.cmi -syntax/ast_utf8_string.cmi : -syntax/ast_utf8_string_interp.cmx : ext/literals.cmx ext/ext_utf8.cmx \ - ext/ext_string.cmx ext/ext_char.cmx common/bs_loc.cmx \ - syntax/ast_utf8_string_interp.cmi -syntax/ast_utf8_string_interp.cmi : -syntax/ast_util.cmx : ext/literals.cmx syntax/external_process.cmx \ - ext/ext_string.cmx ext/ext_list.cmx syntax/bs_syntaxerr.cmx \ - syntax/bs_ast_mapper.cmx syntax/ast_payload.cmx syntax/ast_pat.cmx \ - syntax/ast_literal.cmx syntax/ast_external_mk.cmx syntax/ast_exp.cmx \ - syntax/ast_core_type.cmx syntax/ast_comb.cmx syntax/ast_attributes.cmx \ - syntax/ast_util.cmi -syntax/ast_util.cmi : syntax/bs_ast_mapper.cmi syntax/ast_payload.cmi -syntax/bs_ast_invariant.cmx : ext/literals.cmx ext/hash_set_poly.cmx \ - ext/ext_string.cmx common/bs_warnings.cmx syntax/bs_ast_iterator.cmx \ - syntax/ast_core_type.cmx syntax/bs_ast_invariant.cmi -syntax/bs_ast_invariant.cmi : syntax/bs_ast_iterator.cmi -syntax/bs_ast_iterator.cmx : syntax/bs_ast_iterator.cmi -syntax/bs_ast_iterator.cmi : -syntax/bs_ast_mapper.cmx : syntax/bs_ast_mapper.cmi -syntax/bs_ast_mapper.cmi : -syntax/bs_syntaxerr.cmx : syntax/bs_syntaxerr.cmi -syntax/bs_syntaxerr.cmi : -syntax/external_arg_spec.cmx : ext/ext_position.cmx ext/ext_json_parse.cmx \ - syntax/external_arg_spec.cmi -syntax/external_arg_spec.cmi : -syntax/external_ffi_types.cmx : syntax/external_arg_spec.cmx \ - ext/ext_string.cmx ext/ext_pervasives.cmx common/bs_version.cmx \ - syntax/external_ffi_types.cmi -syntax/external_ffi_types.cmi : syntax/external_arg_spec.cmi -syntax/external_process.cmx : common/lam_methname.cmx \ - syntax/external_ffi_types.cmx syntax/external_arg_spec.cmx \ - ext/ext_string.cmx ext/ext_list.cmx common/bs_warnings.cmx \ - syntax/bs_syntaxerr.cmx common/bs_loc.cmx syntax/bs_ast_invariant.cmx \ - syntax/ast_polyvar.cmx syntax/ast_payload.cmx syntax/ast_literal.cmx \ - syntax/ast_core_type.cmx syntax/ast_comb.cmx syntax/ast_attributes.cmx \ - syntax/external_process.cmi -syntax/external_process.cmi : common/bs_loc.cmi syntax/ast_core_type.cmi \ - syntax/ast_attributes.cmi -syntax/ppx_entry.cmx : ext/string_map.cmx ext/literals.cmx \ - common/js_config.cmx ext/ext_string.cmx syntax/bs_ast_mapper.cmx \ - syntax/bs_ast_invariant.cmx syntax/ast_util.cmx \ - syntax/ast_utf8_string_interp.cmx syntax/ast_utf8_string.cmx \ - syntax/ast_tuple_pattern_flatten.cmx syntax/ast_tdcls.cmx \ - syntax/ast_structure.cmx syntax/ast_primitive.cmx syntax/ast_payload.cmx \ - syntax/ast_literal.cmx syntax/ast_exp_extension.cmx \ - syntax/ast_exp_apply.cmx syntax/ast_derive_projector.cmx \ - syntax/ast_derive_js_mapper.cmx syntax/ast_core_type_class_type.cmx \ - syntax/ast_attributes.cmx syntax/ppx_entry.cmi -syntax/ppx_entry.cmi : +jscmj_main.cmi : diff --git a/jscomp/bin/all_ounit_tests.ml b/jscomp/bin/all_ounit_tests.ml index bd6bf5727c..86317b3f3d 100644 --- a/jscomp/bin/all_ounit_tests.ml +++ b/jscomp/bin/all_ounit_tests.ml @@ -14352,6 +14352,29 @@ val apply_simple: expression list -> expression +val app1: + ?loc:Location.t -> + ?attrs:attrs -> + expression -> + expression -> + expression + +val app2: + ?loc:Location.t -> + ?attrs:attrs -> + expression -> + expression -> + expression -> + expression + +val app3: + ?loc:Location.t -> + ?attrs:attrs -> + expression -> + expression -> + expression -> + expression -> + expression val apply_labels: ?loc:Location.t -> @@ -14438,6 +14461,49 @@ let apply_simple fn, (Ext_list.map (fun x -> "",x) args) ) } +let app1 + ?(loc = default_loc) + ?(attrs = []) + fn arg1 : expression = + { pexp_loc = loc; + pexp_attributes = attrs; + pexp_desc = + Pexp_apply( + fn, + ["", arg1] + ) } + +let app2 + ?(loc = default_loc) + ?(attrs = []) + fn arg1 arg2 : expression = + { pexp_loc = loc; + pexp_attributes = attrs; + pexp_desc = + Pexp_apply( + fn, + [ + "", arg1; + "", arg2 ] + ) } + +let app3 + ?(loc = default_loc) + ?(attrs = []) + fn arg1 arg2 arg3 : expression = + { pexp_loc = loc; + pexp_attributes = attrs; + pexp_desc = + Pexp_apply( + fn, + [ + "", arg1; + "", arg2; + "", arg3 + ] + ) } + + let apply_labels ?(loc = default_loc) ?(attrs = []) @@ -14449,6 +14515,7 @@ let apply_labels fn, args ) } + let fun_ ?(loc = default_loc) ?(attrs = []) diff --git a/jscomp/syntax/ast_compatible.ml b/jscomp/syntax/ast_compatible.ml index bb781a45a8..ca5e91b833 100644 --- a/jscomp/syntax/ast_compatible.ml +++ b/jscomp/syntax/ast_compatible.ml @@ -69,6 +69,49 @@ let apply_simple fn, (Ext_list.map (fun x -> "",x) args) ) } +let app1 + ?(loc = default_loc) + ?(attrs = []) + fn arg1 : expression = + { pexp_loc = loc; + pexp_attributes = attrs; + pexp_desc = + Pexp_apply( + fn, + ["", arg1] + ) } + +let app2 + ?(loc = default_loc) + ?(attrs = []) + fn arg1 arg2 : expression = + { pexp_loc = loc; + pexp_attributes = attrs; + pexp_desc = + Pexp_apply( + fn, + [ + "", arg1; + "", arg2 ] + ) } + +let app3 + ?(loc = default_loc) + ?(attrs = []) + fn arg1 arg2 arg3 : expression = + { pexp_loc = loc; + pexp_attributes = attrs; + pexp_desc = + Pexp_apply( + fn, + [ + "", arg1; + "", arg2; + "", arg3 + ] + ) } + + let apply_labels ?(loc = default_loc) ?(attrs = []) @@ -80,6 +123,7 @@ let apply_labels fn, args ) } + let fun_ ?(loc = default_loc) ?(attrs = []) diff --git a/jscomp/syntax/ast_compatible.mli b/jscomp/syntax/ast_compatible.mli index f8f6386140..cbbc35b629 100644 --- a/jscomp/syntax/ast_compatible.mli +++ b/jscomp/syntax/ast_compatible.mli @@ -52,6 +52,29 @@ val apply_simple: expression list -> expression +val app1: + ?loc:Location.t -> + ?attrs:attrs -> + expression -> + expression -> + expression + +val app2: + ?loc:Location.t -> + ?attrs:attrs -> + expression -> + expression -> + expression -> + expression + +val app3: + ?loc:Location.t -> + ?attrs:attrs -> + expression -> + expression -> + expression -> + expression -> + expression val apply_labels: ?loc:Location.t -> diff --git a/jscomp/syntax/ast_derive_dyn.ml b/jscomp/syntax/ast_derive_dyn.ml index 65520d099d..79c479beaa 100644 --- a/jscomp/syntax/ast_derive_dyn.ml +++ b/jscomp/syntax/ast_derive_dyn.ml @@ -89,7 +89,7 @@ let js_dyn_tuple_to_value i = let bs_apply1 f v = - Exp.apply f ["",v] ~attrs:bs_attrs + Ast_compatible.app1 f v ~attrs:bs_attrs diff --git a/lib/bsdep.ml b/lib/bsdep.ml index c26eaaebf7..faf8bbc722 100644 --- a/lib/bsdep.ml +++ b/lib/bsdep.ml @@ -28808,6 +28808,29 @@ val apply_simple: expression list -> expression +val app1: + ?loc:Location.t -> + ?attrs:attrs -> + expression -> + expression -> + expression + +val app2: + ?loc:Location.t -> + ?attrs:attrs -> + expression -> + expression -> + expression -> + expression + +val app3: + ?loc:Location.t -> + ?attrs:attrs -> + expression -> + expression -> + expression -> + expression -> + expression val apply_labels: ?loc:Location.t -> @@ -28894,6 +28917,49 @@ let apply_simple fn, (Ext_list.map (fun x -> "",x) args) ) } +let app1 + ?(loc = default_loc) + ?(attrs = []) + fn arg1 : expression = + { pexp_loc = loc; + pexp_attributes = attrs; + pexp_desc = + Pexp_apply( + fn, + ["", arg1] + ) } + +let app2 + ?(loc = default_loc) + ?(attrs = []) + fn arg1 arg2 : expression = + { pexp_loc = loc; + pexp_attributes = attrs; + pexp_desc = + Pexp_apply( + fn, + [ + "", arg1; + "", arg2 ] + ) } + +let app3 + ?(loc = default_loc) + ?(attrs = []) + fn arg1 arg2 arg3 : expression = + { pexp_loc = loc; + pexp_attributes = attrs; + pexp_desc = + Pexp_apply( + fn, + [ + "", arg1; + "", arg2; + "", arg3 + ] + ) } + + let apply_labels ?(loc = default_loc) ?(attrs = []) @@ -28905,6 +28971,7 @@ let apply_labels fn, args ) } + let fun_ ?(loc = default_loc) ?(attrs = []) diff --git a/lib/bsppx.ml b/lib/bsppx.ml index f86e916f42..c2d2d2fa90 100644 --- a/lib/bsppx.ml +++ b/lib/bsppx.ml @@ -10750,6 +10750,29 @@ val apply_simple: expression list -> expression +val app1: + ?loc:Location.t -> + ?attrs:attrs -> + expression -> + expression -> + expression + +val app2: + ?loc:Location.t -> + ?attrs:attrs -> + expression -> + expression -> + expression -> + expression + +val app3: + ?loc:Location.t -> + ?attrs:attrs -> + expression -> + expression -> + expression -> + expression -> + expression val apply_labels: ?loc:Location.t -> @@ -10836,6 +10859,49 @@ let apply_simple fn, (Ext_list.map (fun x -> "",x) args) ) } +let app1 + ?(loc = default_loc) + ?(attrs = []) + fn arg1 : expression = + { pexp_loc = loc; + pexp_attributes = attrs; + pexp_desc = + Pexp_apply( + fn, + ["", arg1] + ) } + +let app2 + ?(loc = default_loc) + ?(attrs = []) + fn arg1 arg2 : expression = + { pexp_loc = loc; + pexp_attributes = attrs; + pexp_desc = + Pexp_apply( + fn, + [ + "", arg1; + "", arg2 ] + ) } + +let app3 + ?(loc = default_loc) + ?(attrs = []) + fn arg1 arg2 arg3 : expression = + { pexp_loc = loc; + pexp_attributes = attrs; + pexp_desc = + Pexp_apply( + fn, + [ + "", arg1; + "", arg2; + "", arg3 + ] + ) } + + let apply_labels ?(loc = default_loc) ?(attrs = []) @@ -10847,6 +10913,7 @@ let apply_labels fn, args ) } + let fun_ ?(loc = default_loc) ?(attrs = []) diff --git a/lib/whole_compiler.ml b/lib/whole_compiler.ml index 6e77a2e381..efa10c935b 100644 --- a/lib/whole_compiler.ml +++ b/lib/whole_compiler.ml @@ -67733,6 +67733,29 @@ val apply_simple: expression list -> expression +val app1: + ?loc:Location.t -> + ?attrs:attrs -> + expression -> + expression -> + expression + +val app2: + ?loc:Location.t -> + ?attrs:attrs -> + expression -> + expression -> + expression -> + expression + +val app3: + ?loc:Location.t -> + ?attrs:attrs -> + expression -> + expression -> + expression -> + expression -> + expression val apply_labels: ?loc:Location.t -> @@ -67819,6 +67842,49 @@ let apply_simple fn, (Ext_list.map (fun x -> "",x) args) ) } +let app1 + ?(loc = default_loc) + ?(attrs = []) + fn arg1 : expression = + { pexp_loc = loc; + pexp_attributes = attrs; + pexp_desc = + Pexp_apply( + fn, + ["", arg1] + ) } + +let app2 + ?(loc = default_loc) + ?(attrs = []) + fn arg1 arg2 : expression = + { pexp_loc = loc; + pexp_attributes = attrs; + pexp_desc = + Pexp_apply( + fn, + [ + "", arg1; + "", arg2 ] + ) } + +let app3 + ?(loc = default_loc) + ?(attrs = []) + fn arg1 arg2 arg3 : expression = + { pexp_loc = loc; + pexp_attributes = attrs; + pexp_desc = + Pexp_apply( + fn, + [ + "", arg1; + "", arg2; + "", arg3 + ] + ) } + + let apply_labels ?(loc = default_loc) ?(attrs = []) @@ -67830,6 +67896,7 @@ let apply_labels fn, args ) } + let fun_ ?(loc = default_loc) ?(attrs = []) From 45b37996aeca800340c047eec6cb001584cedbb8 Mon Sep 17 00:00:00 2001 From: Hongbo Date: Wed, 8 Aug 2018 23:00:11 +0800 Subject: [PATCH 3/3] Remove Exp.apply --- jscomp/all.depend | 10 +- jscomp/bin/all_ounit_tests.ml | 5 + jscomp/syntax/ast_comb.ml | 5 +- jscomp/syntax/ast_comb.mli | 4 +- jscomp/syntax/ast_compatible.mli | 5 + jscomp/syntax/ast_derive_dyn.ml | 42 +- jscomp/syntax/ast_derive_js_mapper.ml | 41 +- jscomp/syntax/ast_exp_apply.ml | 6 +- jscomp/syntax/ast_exp_extension.ml | 34 +- jscomp/syntax/ast_util.ml | 37 +- jscomp/syntax/ppx_entry.ml | 4 +- lib/bsdep.ml | 600 +++++++++++++------------- lib/bsppx.ml | 600 +++++++++++++------------- lib/whole_compiler.ml | 600 +++++++++++++------------- 14 files changed, 988 insertions(+), 1005 deletions(-) diff --git a/jscomp/all.depend b/jscomp/all.depend index 63e213cb1b..f38bc5f57a 100644 --- a/jscomp/all.depend +++ b/jscomp/all.depend @@ -201,7 +201,7 @@ syntax/ast_derive.cmx : ext/string_map.cmx ext/literals.cmx \ syntax/ast_structure.cmx syntax/ast_signature.cmx syntax/ast_payload.cmx \ syntax/ast_derive.cmi syntax/ast_comb.cmx : ext/ext_list.cmx syntax/ast_literal.cmx \ - syntax/ast_comb.cmi + syntax/ast_compatible.cmx syntax/ast_comb.cmi syntax/ast_core_type.cmx : ext/ext_list.cmx syntax/bs_syntaxerr.cmx \ syntax/ast_comb.cmx syntax/ast_core_type.cmi syntax/bs_ast_invariant.cmx : ext/literals.cmx ext/hash_set_poly.cmx \ @@ -258,12 +258,14 @@ syntax/ast_tuple_pattern_flatten.cmx : ext/ext_list.cmx \ syntax/ast_exp_apply.cmx : ext/literals.cmx ext/ext_list.cmx \ syntax/bs_ast_mapper.cmx syntax/bs_ast_invariant.cmx syntax/ast_util.cmx \ syntax/ast_tuple_pattern_flatten.cmx syntax/ast_literal.cmx \ - syntax/ast_attributes.cmx syntax/ast_exp_apply.cmi + syntax/ast_compatible.cmx syntax/ast_attributes.cmx \ + syntax/ast_exp_apply.cmi syntax/ast_exp_extension.cmx : ext/literals.cmx ext/ext_string.cmx \ ext/ext_ref.cmx ext/ext_pervasives.cmx common/bs_version.cmx \ syntax/bs_ast_mapper.cmx syntax/ast_util.cmx syntax/ast_payload.cmx \ syntax/ast_literal.cmx syntax/ast_derive.cmx syntax/ast_core_type.cmx \ - syntax/ast_comb.cmx syntax/ast_exp_extension.cmi + syntax/ast_compatible.cmx syntax/ast_comb.cmx \ + syntax/ast_exp_extension.cmi syntax/ast_core_type_class_type.cmx : ext/literals.cmx ext/ext_ref.cmx \ ext/ext_list.cmx syntax/bs_ast_mapper.cmx syntax/ast_util.cmx \ syntax/ast_literal.cmx syntax/ast_comb.cmx syntax/ast_attributes.cmx \ @@ -277,7 +279,7 @@ syntax/ppx_entry.cmx : ext/string_map.cmx ext/literals.cmx \ syntax/ast_literal.cmx syntax/ast_exp_extension.cmx \ syntax/ast_exp_apply.cmx syntax/ast_derive_projector.cmx \ syntax/ast_derive_js_mapper.cmx syntax/ast_core_type_class_type.cmx \ - syntax/ast_attributes.cmx syntax/ppx_entry.cmi + syntax/ast_compatible.cmx syntax/ast_attributes.cmx syntax/ppx_entry.cmi syntax/bs_syntaxerr.cmi : syntax/ast_compatible.cmi : syntax/ast_utf8_string.cmi : diff --git a/jscomp/bin/all_ounit_tests.ml b/jscomp/bin/all_ounit_tests.ml index 86317b3f3d..cbd225b51a 100644 --- a/jscomp/bin/all_ounit_tests.ml +++ b/jscomp/bin/all_ounit_tests.ml @@ -14376,6 +14376,11 @@ val app3: expression -> expression +(** Note this function would slightly + change its semantics depending on compiler versions + for newer version: it means always label + for older version: it could be optional (which we should avoid) +*) val apply_labels: ?loc:Location.t -> ?attrs:attrs -> diff --git a/jscomp/syntax/ast_comb.ml b/jscomp/syntax/ast_comb.ml index 43fcba1c4e..a24a0a7f4d 100644 --- a/jscomp/syntax/ast_comb.ml +++ b/jscomp/syntax/ast_comb.ml @@ -25,8 +25,7 @@ open Ast_helper -let exp_apply_no_label ?loc ?attrs a b = - Exp.apply ?loc ?attrs a (Ext_list.map (fun x -> "", x) b) + (* let fun_no_label ?loc ?attrs pat body = Ast_compatible.fun_ ?loc ?attrs pat body *) @@ -35,7 +34,7 @@ let arrow_no_label ?loc ?attrs b c = Typ.arrow ?loc ?attrs "" b c let discard_exp_as_unit loc e = - exp_apply_no_label ~loc + Ast_compatible.apply_simple ~loc (Exp.ident ~loc {txt = Ast_literal.Lid.ignore_id; loc}) [Exp.constraint_ ~loc e (Ast_literal.type_unit ~loc ())] diff --git a/jscomp/syntax/ast_comb.mli b/jscomp/syntax/ast_comb.mli index c611c5ae3f..bb248be6a5 100644 --- a/jscomp/syntax/ast_comb.mli +++ b/jscomp/syntax/ast_comb.mli @@ -23,10 +23,10 @@ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) -val exp_apply_no_label : +(* val exp_apply_no_label : ?loc:Location.t -> ?attrs:Parsetree.attributes -> - Parsetree.expression -> Parsetree.expression list -> Parsetree.expression + Parsetree.expression -> Parsetree.expression list -> Parsetree.expression *) (* val fun_no_label : ?loc:Location.t -> diff --git a/jscomp/syntax/ast_compatible.mli b/jscomp/syntax/ast_compatible.mli index cbbc35b629..047dcc7d2e 100644 --- a/jscomp/syntax/ast_compatible.mli +++ b/jscomp/syntax/ast_compatible.mli @@ -76,6 +76,11 @@ val app3: expression -> expression +(** Note this function would slightly + change its semantics depending on compiler versions + for newer version: it means always label + for older version: it could be optional (which we should avoid) +*) val apply_labels: ?loc:Location.t -> ?attrs:attrs -> diff --git a/jscomp/syntax/ast_derive_dyn.ml b/jscomp/syntax/ast_derive_dyn.ml index 79c479beaa..319e122d1d 100644 --- a/jscomp/syntax/ast_derive_dyn.ml +++ b/jscomp/syntax/ast_derive_dyn.ml @@ -136,8 +136,8 @@ let rec exp_of_core_type prefix Exp.ident (fn_of_lid prefix lid) | Ptyp_constr (lid, params) -> - Exp.apply (Exp.ident (fn_of_lid prefix lid)) - (Ext_list.map (fun x -> "",exp_of_core_type prefix x ) params) + Ast_compatible.apply_simple (Exp.ident (fn_of_lid prefix lid)) + (Ext_list.map (fun x -> exp_of_core_type prefix x ) params) | Ptyp_tuple lst -> begin match lst with | [x] -> exp_of_core_type prefix x @@ -148,8 +148,8 @@ let rec exp_of_core_type prefix Location.raise_errorf ~loc "tuple arity > 6 not supported yet" else let fn = js_dyn_tuple_to_value len in - let args = Ext_list.map (fun x -> "", exp_of_core_type prefix x) lst in - Exp.apply fn args + let args = Ext_list.map (fun x -> exp_of_core_type prefix x) lst in + Ast_compatible.apply_simple fn args end @@ -203,27 +203,27 @@ let case_of_ctdcl (ctdcls : Parsetree.constructor_declaration list) = (List.mapi (fun i ctdcl -> let pat, core_type_exprs = destruct_constructor_declaration ctdcl in Exp.case pat - (Exp.apply + (Ast_compatible.app3 (js_dyn_variant_to_value ()) - [("", Exp.ident {txt = Lident shape ; loc}); - ("", Ast_compatible.const_exp_int i); - ("", exp_of_core_type_exprs core_type_exprs); - ] + ( Exp.ident {txt = Lident shape ; loc}) + ( Ast_compatible.const_exp_int i) + ( exp_of_core_type_exprs core_type_exprs) + )) ctdcls ) let record args = - Exp.apply + Ast_compatible.app2 (Exp.ident {txt = Ldot (Lident js_dyn, record_to_value ); loc}) - ["", Exp.ident {txt = Lident shape ; loc}; - ("", args) - ] + (Exp.ident {txt = Lident shape ; loc}) + args + let fun_1 name = Ast_compatible.fun_ ~attrs:bs_attrs (Pat.var {txt = "x"; loc}) - (Exp.apply (Exp.ident name) - ["",(Exp.ident {txt = Lident "x"; loc})]) + (Ast_compatible.app1 (Exp.ident name) + (Exp.ident {txt = Lident "x"; loc})) let record_exp name core_type labels : Ast_structure.t = let arg_name : string = "args" in @@ -233,8 +233,8 @@ let record_exp name core_type labels : Ast_structure.t = [Str.value Nonrecursive @@ [Vb.mk (Pat.var {txt = shape; loc}) - (Exp.apply (js_dyn_shape_of_record ()) - ["", (Ast_derive_util.lift_string_list_to_array labels)] + (Ast_compatible.app1 (js_dyn_shape_of_record ()) + (Ast_derive_util.lift_string_list_to_array labels) ) ]; Str.value Nonrecursive @@ [Vb.mk (Pat.var {txt = name ^ to_value_ ; loc }) @@ -288,10 +288,10 @@ let init () = [ Str.value Nonrecursive @@ [Vb.mk (Pat.var {txt = shape ; loc}) - ( Exp.apply (js_dyn_shape_of_variant ()) - [ "", (Ast_derive_util.lift_string_list_to_array names); - "", (Ast_compatible.const_exp_int_list_as_array arities ) - ])]; + ( Ast_compatible.app2 (js_dyn_shape_of_variant ()) + (Ast_derive_util.lift_string_list_to_array names) + (Ast_compatible.const_exp_int_list_as_array arities ) + )]; Str.value Nonrecursive @@ [Vb.mk (Pat.var {txt = name ^ to_value_ ; loc}) (case_of_ctdcl cd) diff --git a/jscomp/syntax/ast_derive_js_mapper.ml b/jscomp/syntax/ast_derive_js_mapper.ml index 5eeab1d3b0..b347ef6bd9 100644 --- a/jscomp/syntax/ast_derive_js_mapper.ml +++ b/jscomp/syntax/ast_derive_js_mapper.ml @@ -27,15 +27,14 @@ module U = Ast_derive_util type tdcls = Parsetree.type_declaration list let js_field (o : Parsetree.expression) m = - Exp.apply + Ast_compatible.app2 (Exp.ident {txt = Lident "##"; loc = o.pexp_loc}) - [ - "",o; - "", Exp.ident m - ] -let const_int i = Exp.constant (Const_int i) -let const_string s = Exp.constant (Const_string (s,None)) + o + (Exp.ident m) +(* let Ast_compatible.const_exp_int i = Exp.constant (Const_int i) *) +let const_string s = Exp.constant (Const_string (s,None)) + let handle_config (config : Parsetree.expression option) = match config with @@ -65,7 +64,7 @@ let noloc = Location.none let eraseTypeLit = "jsMapperEraseType" let eraseTypeExp = Exp.ident {loc = noloc; txt = Lident eraseTypeLit} let eraseType x = - Exp.apply eraseTypeExp ["", x] + Ast_compatible.app1 eraseTypeExp x let eraseTypeStr = let any = Typ.any () in Str.primitive @@ -73,10 +72,9 @@ let eraseTypeStr = (Typ.arrow "" any any) ) -let app2 f arg1 arg2 = - Exp.apply f ["",arg1; "", arg2] -let app3 f arg1 arg2 arg3 = - Exp.apply f ["", arg1; "", arg2; "", arg3] +let app2 = Ast_compatible.app2 +let app3 = Ast_compatible.app3 + let (<=~) a b = app2 (Exp.ident {loc = noloc; txt = Lident "<="}) a b let (-~) a b = @@ -256,7 +254,7 @@ let init () = begin match attr with | NullString result -> let result_len = List.length result in - let exp_len = const_int result_len in + let exp_len = Ast_compatible.const_exp_int result_len in let v = [ eraseTypeStr; Ast_comb.single_non_rec_value @@ -265,7 +263,7 @@ let init () = (List.map (fun (i,str) -> Exp.tuple [ - const_int i; + Ast_compatible.const_exp_int i; const_string str ] ) (List.sort (fun (a,_) (b,_) -> compare (a:int) b) result))); @@ -317,12 +315,13 @@ let init () = match xs with | `New xs -> let constantArrayExp = Exp.ident {loc; txt = Lident constantArray} in - let exp_len = const_int (List.length ctors) in + let exp_len = Ast_compatible.const_exp_int (List.length ctors) in let v = [ eraseTypeStr; Ast_comb.single_non_rec_value {loc; txt = constantArray} - (Exp.array (List.map (fun i -> const_int i) xs )) + (Ast_compatible.const_exp_int_list_as_array xs) + (* (Exp.array (List.map (fun i -> Ast_compatible.const_exp_int i) xs )) *) ; toJsBody ( @@ -361,12 +360,12 @@ let init () = [ eraseTypeStr; toJsBody ( coerceResultToNewType - (eraseType exp_param +~ const_int offset) + (eraseType exp_param +~ Ast_compatible.const_exp_int offset) ) ; let len = List.length ctors in - let range_low = const_int (offset + 0) in - let range_upper = const_int (offset + len - 1) in + let range_low = Ast_compatible.const_exp_int (offset + 0) in + let range_upper = Ast_compatible.const_exp_int (offset + len - 1) in Ast_comb.single_non_rec_value {loc ; txt = fromJs} @@ -383,7 +382,7 @@ let init () = (assertExp ((exp_param <=~ range_upper) &&~ (range_low <=~ exp_param)) ) - (exp_param -~ const_int offset)) + (exp_param -~ Ast_compatible.const_exp_int offset)) ) +> core_type @@ -391,7 +390,7 @@ let init () = (Exp.ifthenelse ( (exp_param <=~ range_upper) &&~ (range_low <=~ exp_param)) (Exp.construct {loc; txt = Lident "Some"} - ( Some (exp_param -~ const_int offset))) + ( Some (exp_param -~ Ast_compatible.const_exp_int offset))) (Some (Exp.construct {loc; txt = Lident "None"} None))) +> Ast_core_type.lift_option_type core_type diff --git a/jscomp/syntax/ast_exp_apply.ml b/jscomp/syntax/ast_exp_apply.ml index 332d8bdab0..0ce663ca06 100644 --- a/jscomp/syntax/ast_exp_apply.ml +++ b/jscomp/syntax/ast_exp_apply.ml @@ -106,9 +106,9 @@ let handle_exp_apply -> {fn with pexp_desc = Pexp_construct(ctor, Some bounded_obj_arg)} | _ -> - Exp.apply ~loc:fn.pexp_loc + Ast_compatible.app1 ~loc:fn.pexp_loc (self.expr self fn ) - ["", bounded_obj_arg] + bounded_obj_arg ) xs ); pexp_attributes = tuple_attrs; pexp_loc = fn.pexp_loc; @@ -117,7 +117,7 @@ let handle_exp_apply begin match try_dispatch_by_tuple with | Some x -> x | None -> - Exp.apply ~loc (self.expr self fn) ["", new_obj_arg] + Ast_compatible.app1 ~loc (self.expr self fn) new_obj_arg end end | _ -> diff --git a/jscomp/syntax/ast_exp_extension.ml b/jscomp/syntax/ast_exp_extension.ml index 2b19887c3a..47cd567b2f 100644 --- a/jscomp/syntax/ast_exp_extension.ml +++ b/jscomp/syntax/ast_exp_extension.ml @@ -58,17 +58,16 @@ let handle_extension record_as_js_object e (self : Bs_ast_mapper.mapper) begin match pat.ppat_desc, body.pexp_desc with | Ppat_construct ({txt = Lident "()"}, None), Pexp_constant(Const_string(block,_)) -> - Exp.apply ~loc - (Exp.ident ~loc {txt = Ldot (Ast_literal.Lid.js_unsafe, Literals.raw_function);loc}) - [ "", - Exp.constant ~loc (Const_string (toString {args = [] ; block }, None)) - ] + Ast_compatible.app1 ~loc + (Exp.ident ~loc {txt = Ldot (Ast_literal.Lid.js_unsafe, Literals.raw_function);loc}) + (Exp.constant ~loc (Const_string (toString {args = [] ; block }, None))) + | Ppat_var ({txt;}), _ -> let acc, block = unroll_function_aux [txt] body in - (Exp.apply ~loc + (Ast_compatible.app1 ~loc (Exp.ident ~loc {txt = Ldot (Ast_literal.Lid.js_unsafe, Literals.raw_function);loc}) - [ "", Exp.constant ~loc (Const_string (toString {args = List.rev acc ; block },None))] + (Exp.constant ~loc (Const_string (toString {args = List.rev acc ; block },None))) ) | _ -> Location.raise_errorf ~loc "bs.raw can only be applied to a string or a special function form " end @@ -105,23 +104,23 @@ let handle_extension record_as_js_object e (self : Bs_ast_mapper.mapper) file lnum in let e = self.expr self e in Exp.sequence ~loc - (Exp.apply ~loc + (Ast_compatible.app1 ~loc (Exp.ident ~loc {loc; txt = Ldot (Ldot (Lident "Js", "Console"), "timeStart") }) - ["", Exp.constant ~loc (Const_string (locString,None))] + (Exp.constant ~loc (Const_string (locString,None))) ) ( Exp.let_ ~loc Nonrecursive [Vb.mk ~loc (Pat.var ~loc {loc; txt = "timed"}) e ; ] (Exp.sequence ~loc - (Exp.apply ~loc + (Ast_compatible.app1 ~loc (Exp.ident ~loc {loc; txt = Ldot (Ldot (Lident "Js", "Console"), "timeEnd") }) - ["", Exp.constant ~loc (Const_string (locString,None))] + (Exp.constant ~loc (Const_string (locString,None))) ) (Exp.ident ~loc {loc; txt = Lident "timed"}) ) @@ -147,13 +146,10 @@ let handle_extension record_as_js_object e (self : Bs_ast_mapper.mapper) Printf.sprintf "File %S, line %d, characters %d-%d" file lnum cnum enum in let raiseWithString locString = - (Exp.apply ~loc + Ast_compatible.app1 ~loc (Exp.ident ~loc {loc; txt = - Ldot(Ldot (Lident "Js","Exn"),"raiseError")}) - ["", - - Exp.constant (Const_string (locString,None)) - ]) + Ldot(Ldot (Lident "Js","Exn"),"raiseError")}) + (Exp.constant (Const_string (locString,None))) in (match e.pexp_desc with | Pexp_construct({txt = Lident "false"},None) -> @@ -178,9 +174,9 @@ let handle_extension record_as_js_object e (self : Bs_ast_mapper.mapper) Exp.assert_ ~loc e else Exp.ifthenelse ~loc - (Exp.apply ~loc + (Ast_compatible.app1 ~loc (Exp.ident {loc ; txt = Ldot(Lident "Pervasives","not")}) - ["", e] + e ) (raiseWithString locString) None diff --git a/jscomp/syntax/ast_util.ml b/jscomp/syntax/ast_util.ml index 38245d6f19..db6235eacd 100644 --- a/jscomp/syntax/ast_util.ml +++ b/jscomp/syntax/ast_util.ml @@ -91,11 +91,11 @@ let arrow = Typ.arrow let js_property loc obj name = Parsetree.Pexp_send - ((Exp.apply ~loc + ((Ast_compatible.app1 ~loc (Exp.ident ~loc {loc; txt = Ldot (Ast_literal.Lid.js_unsafe, Literals.unsafe_downgrade)}) - ["",obj]), name) + obj), name) (* TODO: have a final checking for property arities @@ -278,7 +278,7 @@ let generic_to_uncurry_exp kind loc (self : Bs_ast_mapper.mapper) pat body lift_js_method_callback loc args_type result_type ) in Ast_external_mk.local_extern_cont loc ~pval_prim ~pval_type - (fun prim -> Exp.apply ~loc prim ["", body]) + (fun prim -> Ast_compatible.app1 ~loc prim body) let to_uncurry_fn = generic_to_uncurry_exp `Fn @@ -316,13 +316,12 @@ let handle_raw ~check_js_regex loc payload = let handle_external loc x = let raw_exp : Ast_exp.t = - Ast_helper.Exp.apply + Ast_compatible.app1 (Exp.ident ~loc {loc; txt = Ldot (Ast_literal.Lid.js_unsafe, Literals.raw_expr)}) ~loc - [Ext_string.empty, - Exp.constant ~loc (Const_string (x,Some Ext_string.empty))] in + (Exp.constant ~loc (Const_string (x,Some Ext_string.empty))) in let empty = Exp.ident ~loc {txt = Ldot (Ldot(Lident"Js", "Undefined"), "empty");loc} @@ -332,20 +331,16 @@ let handle_external loc x = let typeof = Exp.ident {loc ; txt = Ldot(Lident "Js","typeof")} in - Exp.apply ~loc undefined_typeof [ - Ext_string.empty, + Ast_compatible.app1 ~loc undefined_typeof ( Exp.ifthenelse ~loc - (Exp.apply ~loc - (Exp.ident ~loc {loc ; txt = Ldot (Lident "Pervasives", "=")} ) - [ - Ext_string.empty, - (Exp.apply ~loc typeof [Ext_string.empty,raw_exp]); - Ext_string.empty, - Exp.constant ~loc (Const_string ("undefined",None)) - ]) - (empty) + (Ast_compatible.app2 ~loc + (Exp.ident ~loc {loc ; txt = Ldot (Lident "Pervasives", "=")} ) + (Ast_compatible.app1 ~loc typeof raw_exp) + (Exp.constant ~loc (Const_string ("undefined",None))) + ) + empty (Some raw_exp) - ] + ) let handle_raw_structure loc payload = @@ -606,7 +601,7 @@ let ocaml_obj_as_js_object loc ~pval_prim:(External_process.pval_prim_of_labels labels) (fun e -> - Exp.apply ~loc e + Ast_compatible.apply_labels ~loc e (Ext_list.map2 (fun l expr -> l.Asttypes.txt, expr) labels exprs) ) ~pval_type @@ -656,10 +651,10 @@ let convertBsErrorFunction loc (self : Bs_ast_mapper.mapper) attrs (cases : Par Ast_compatible.fun_ ~attrs ~loc ( Pat.var ~loc {txt; loc }) (Exp.ifthenelse ~loc - (Exp.apply ~loc (Exp.ident ~loc {txt = isCamlExceptionOrOpenVariant ; loc}) ["", txt_expr ]) + (Ast_compatible.app1 ~loc (Exp.ident ~loc {txt = isCamlExceptionOrOpenVariant ; loc}) txt_expr ) (Exp.match_ ~loc (Exp.constraint_ ~loc - (Exp.apply ~loc (Exp.ident ~loc {txt = obj_magic; loc}) ["", txt_expr]) + (Ast_compatible.app1 ~loc (Exp.ident ~loc {txt = obj_magic; loc}) txt_expr) (Ast_literal.type_exn ~loc ()) ) (Ext_list.map_append (fun (x :Parsetree.case ) -> diff --git a/jscomp/syntax/ppx_entry.ml b/jscomp/syntax/ppx_entry.ml index d469017cac..af76c12c22 100644 --- a/jscomp/syntax/ppx_entry.ml +++ b/jscomp/syntax/ppx_entry.ml @@ -215,9 +215,9 @@ let rec unsafe_mapper : Bs_ast_mapper.mapper = -> if !Js_config.debug then let open Ast_helper in - Str.eval ~loc (Exp.apply ~loc + Str.eval ~loc (Ast_compatible.app1 ~loc (Exp.ident ~loc {txt = Ldot(Ldot (Lident"Belt","Debug"), "setupChromeDebugger");loc} ) - ["", Ast_literal.val_unit ~loc ()] + (Ast_literal.val_unit ~loc ()) ) else Ast_structure.dummy_item loc | Pstr_type (_ :: _ as tdcls ) (* [ {ptype_attributes} as tdcl ] *)-> diff --git a/lib/bsdep.ml b/lib/bsdep.ml index faf8bbc722..8300f07d7b 100644 --- a/lib/bsdep.ml +++ b/lib/bsdep.ml @@ -25551,6 +25551,243 @@ let table_dispatch table (action : action) | exception _ -> Location.raise_errorf ~loc "%s is not supported" name end +end +module Ast_compatible : sig +#1 "ast_compatible.mli" +(* Copyright (C) 2018 Authors of BuckleScript + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * In addition to the permissions granted to you by the LGPL, you may combine + * or link a "work that uses the Library" with a publicly distributed version + * of this file to produce a combined library or application, then distribute + * that combined work under the terms of your choosing, with no requirement + * to comply with the obligations normally placed on you by section 4 of the + * LGPL version 3 (or the corresponding section of a later version of the LGPL + * should you choose to use a later version). + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) + + +type loc = Location.t +type attrs = Parsetree.attribute list +open Parsetree + + +val const_exp_string: + ?loc:Location.t -> + ?attrs:attrs -> + ?delimiter:string -> + string -> + expression + +val const_exp_int: + ?loc:Location.t -> + ?attrs:attrs -> + int -> + expression + +val const_exp_int_list_as_array: + int list -> + expression + +val apply_simple: + ?loc:Location.t -> + ?attrs:attrs -> + expression -> + expression list -> + expression + +val app1: + ?loc:Location.t -> + ?attrs:attrs -> + expression -> + expression -> + expression + +val app2: + ?loc:Location.t -> + ?attrs:attrs -> + expression -> + expression -> + expression -> + expression + +val app3: + ?loc:Location.t -> + ?attrs:attrs -> + expression -> + expression -> + expression -> + expression -> + expression + +(** Note this function would slightly + change its semantics depending on compiler versions + for newer version: it means always label + for older version: it could be optional (which we should avoid) +*) +val apply_labels: + ?loc:Location.t -> + ?attrs:attrs -> + expression -> + (string * expression) list -> + (* [(label,e)] [label] is strictly interpreted as label *) + expression + +val fun_ : + ?loc:Location.t -> + ?attrs:attrs -> + pattern -> + expression -> + expression +end = struct +#1 "ast_compatible.ml" +(* Copyright (C) 2018 Authors of BuckleScript + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * In addition to the permissions granted to you by the LGPL, you may combine + * or link a "work that uses the Library" with a publicly distributed version + * of this file to produce a combined library or application, then distribute + * that combined work under the terms of your choosing, with no requirement + * to comply with the obligations normally placed on you by section 4 of the + * LGPL version 3 (or the corresponding section of a later version of the LGPL + * should you choose to use a later version). + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) + +type loc = Location.t +type attrs = Parsetree.attribute list +open Parsetree +let default_loc = Location.none + + + +let const_exp_string + ?(loc = default_loc) + ?(attrs = []) + ?delimiter + (s : string) : expression = + { + pexp_loc = loc; + pexp_attributes = attrs; + pexp_desc = Pexp_constant(Const_string(s,delimiter)) + } + + +let const_exp_int + ?(loc = default_loc) + ?(attrs = []) + (s : int) : expression = + { + pexp_loc = loc; + pexp_attributes = attrs; + pexp_desc = Pexp_constant(Const_int s) + } + + +let const_exp_int_list_as_array xs = + Ast_helper.Exp.array + (Ext_list.map (fun x -> const_exp_int x ) xs) + +let apply_simple + ?(loc = default_loc) + ?(attrs = []) + fn args : expression = + { pexp_loc = loc; + pexp_attributes = attrs; + pexp_desc = + Pexp_apply( + fn, + (Ext_list.map (fun x -> "",x) args) ) } + +let app1 + ?(loc = default_loc) + ?(attrs = []) + fn arg1 : expression = + { pexp_loc = loc; + pexp_attributes = attrs; + pexp_desc = + Pexp_apply( + fn, + ["", arg1] + ) } + +let app2 + ?(loc = default_loc) + ?(attrs = []) + fn arg1 arg2 : expression = + { pexp_loc = loc; + pexp_attributes = attrs; + pexp_desc = + Pexp_apply( + fn, + [ + "", arg1; + "", arg2 ] + ) } + +let app3 + ?(loc = default_loc) + ?(attrs = []) + fn arg1 arg2 arg3 : expression = + { pexp_loc = loc; + pexp_attributes = attrs; + pexp_desc = + Pexp_apply( + fn, + [ + "", arg1; + "", arg2; + "", arg3 + ] + ) } + + +let apply_labels + ?(loc = default_loc) + ?(attrs = []) + fn args : expression = + { pexp_loc = loc; + pexp_attributes = attrs; + pexp_desc = + Pexp_apply( + fn, + args ) } + + +let fun_ + ?(loc = default_loc) + ?(attrs = []) + pat + exp = + { + pexp_loc = loc; + pexp_attributes = attrs; + pexp_desc = Pexp_fun("",None, pat, exp) + } + end module Ast_literal : sig #1 "ast_literal.mli" @@ -25761,10 +25998,10 @@ module Ast_comb : sig * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) -val exp_apply_no_label : +(* val exp_apply_no_label : ?loc:Location.t -> ?attrs:Parsetree.attributes -> - Parsetree.expression -> Parsetree.expression list -> Parsetree.expression + Parsetree.expression -> Parsetree.expression list -> Parsetree.expression *) (* val fun_no_label : ?loc:Location.t -> @@ -25839,8 +26076,7 @@ end = struct open Ast_helper -let exp_apply_no_label ?loc ?attrs a b = - Exp.apply ?loc ?attrs a (Ext_list.map (fun x -> "", x) b) + (* let fun_no_label ?loc ?attrs pat body = Ast_compatible.fun_ ?loc ?attrs pat body *) @@ -25849,7 +26085,7 @@ let arrow_no_label ?loc ?attrs b c = Typ.arrow ?loc ?attrs "" b c let discard_exp_as_unit loc e = - exp_apply_no_label ~loc + Ast_compatible.apply_simple ~loc (Exp.ident ~loc {txt = Ast_literal.Lid.ignore_id; loc}) [Exp.constraint_ ~loc e (Ast_literal.type_unit ~loc ())] @@ -28751,238 +28987,6 @@ let deprecated s : attr = },[]) ; pstr_loc = locg}] -end -module Ast_compatible : sig -#1 "ast_compatible.mli" -(* Copyright (C) 2018 Authors of BuckleScript - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * In addition to the permissions granted to you by the LGPL, you may combine - * or link a "work that uses the Library" with a publicly distributed version - * of this file to produce a combined library or application, then distribute - * that combined work under the terms of your choosing, with no requirement - * to comply with the obligations normally placed on you by section 4 of the - * LGPL version 3 (or the corresponding section of a later version of the LGPL - * should you choose to use a later version). - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) - - -type loc = Location.t -type attrs = Parsetree.attribute list -open Parsetree - - -val const_exp_string: - ?loc:Location.t -> - ?attrs:attrs -> - ?delimiter:string -> - string -> - expression - -val const_exp_int: - ?loc:Location.t -> - ?attrs:attrs -> - int -> - expression - -val const_exp_int_list_as_array: - int list -> - expression - -val apply_simple: - ?loc:Location.t -> - ?attrs:attrs -> - expression -> - expression list -> - expression - -val app1: - ?loc:Location.t -> - ?attrs:attrs -> - expression -> - expression -> - expression - -val app2: - ?loc:Location.t -> - ?attrs:attrs -> - expression -> - expression -> - expression -> - expression - -val app3: - ?loc:Location.t -> - ?attrs:attrs -> - expression -> - expression -> - expression -> - expression -> - expression - -val apply_labels: - ?loc:Location.t -> - ?attrs:attrs -> - expression -> - (string * expression) list -> - (* [(label,e)] [label] is strictly interpreted as label *) - expression - -val fun_ : - ?loc:Location.t -> - ?attrs:attrs -> - pattern -> - expression -> - expression -end = struct -#1 "ast_compatible.ml" -(* Copyright (C) 2018 Authors of BuckleScript - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * In addition to the permissions granted to you by the LGPL, you may combine - * or link a "work that uses the Library" with a publicly distributed version - * of this file to produce a combined library or application, then distribute - * that combined work under the terms of your choosing, with no requirement - * to comply with the obligations normally placed on you by section 4 of the - * LGPL version 3 (or the corresponding section of a later version of the LGPL - * should you choose to use a later version). - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) - -type loc = Location.t -type attrs = Parsetree.attribute list -open Parsetree -let default_loc = Location.none - - - -let const_exp_string - ?(loc = default_loc) - ?(attrs = []) - ?delimiter - (s : string) : expression = - { - pexp_loc = loc; - pexp_attributes = attrs; - pexp_desc = Pexp_constant(Const_string(s,delimiter)) - } - - -let const_exp_int - ?(loc = default_loc) - ?(attrs = []) - (s : int) : expression = - { - pexp_loc = loc; - pexp_attributes = attrs; - pexp_desc = Pexp_constant(Const_int s) - } - - -let const_exp_int_list_as_array xs = - Ast_helper.Exp.array - (Ext_list.map (fun x -> const_exp_int x ) xs) - -let apply_simple - ?(loc = default_loc) - ?(attrs = []) - fn args : expression = - { pexp_loc = loc; - pexp_attributes = attrs; - pexp_desc = - Pexp_apply( - fn, - (Ext_list.map (fun x -> "",x) args) ) } - -let app1 - ?(loc = default_loc) - ?(attrs = []) - fn arg1 : expression = - { pexp_loc = loc; - pexp_attributes = attrs; - pexp_desc = - Pexp_apply( - fn, - ["", arg1] - ) } - -let app2 - ?(loc = default_loc) - ?(attrs = []) - fn arg1 arg2 : expression = - { pexp_loc = loc; - pexp_attributes = attrs; - pexp_desc = - Pexp_apply( - fn, - [ - "", arg1; - "", arg2 ] - ) } - -let app3 - ?(loc = default_loc) - ?(attrs = []) - fn arg1 arg2 arg3 : expression = - { pexp_loc = loc; - pexp_attributes = attrs; - pexp_desc = - Pexp_apply( - fn, - [ - "", arg1; - "", arg2; - "", arg3 - ] - ) } - - -let apply_labels - ?(loc = default_loc) - ?(attrs = []) - fn args : expression = - { pexp_loc = loc; - pexp_attributes = attrs; - pexp_desc = - Pexp_apply( - fn, - args ) } - - -let fun_ - ?(loc = default_loc) - ?(attrs = []) - pat - exp = - { - pexp_loc = loc; - pexp_attributes = attrs; - pexp_desc = Pexp_fun("",None, pat, exp) - } - end module Ast_exp : sig #1 "ast_exp.mli" @@ -34052,11 +34056,11 @@ let arrow = Typ.arrow let js_property loc obj name = Parsetree.Pexp_send - ((Exp.apply ~loc + ((Ast_compatible.app1 ~loc (Exp.ident ~loc {loc; txt = Ldot (Ast_literal.Lid.js_unsafe, Literals.unsafe_downgrade)}) - ["",obj]), name) + obj), name) (* TODO: have a final checking for property arities @@ -34239,7 +34243,7 @@ let generic_to_uncurry_exp kind loc (self : Bs_ast_mapper.mapper) pat body lift_js_method_callback loc args_type result_type ) in Ast_external_mk.local_extern_cont loc ~pval_prim ~pval_type - (fun prim -> Exp.apply ~loc prim ["", body]) + (fun prim -> Ast_compatible.app1 ~loc prim body) let to_uncurry_fn = generic_to_uncurry_exp `Fn @@ -34277,13 +34281,12 @@ let handle_raw ~check_js_regex loc payload = let handle_external loc x = let raw_exp : Ast_exp.t = - Ast_helper.Exp.apply + Ast_compatible.app1 (Exp.ident ~loc {loc; txt = Ldot (Ast_literal.Lid.js_unsafe, Literals.raw_expr)}) ~loc - [Ext_string.empty, - Exp.constant ~loc (Const_string (x,Some Ext_string.empty))] in + (Exp.constant ~loc (Const_string (x,Some Ext_string.empty))) in let empty = Exp.ident ~loc {txt = Ldot (Ldot(Lident"Js", "Undefined"), "empty");loc} @@ -34293,20 +34296,16 @@ let handle_external loc x = let typeof = Exp.ident {loc ; txt = Ldot(Lident "Js","typeof")} in - Exp.apply ~loc undefined_typeof [ - Ext_string.empty, + Ast_compatible.app1 ~loc undefined_typeof ( Exp.ifthenelse ~loc - (Exp.apply ~loc - (Exp.ident ~loc {loc ; txt = Ldot (Lident "Pervasives", "=")} ) - [ - Ext_string.empty, - (Exp.apply ~loc typeof [Ext_string.empty,raw_exp]); - Ext_string.empty, - Exp.constant ~loc (Const_string ("undefined",None)) - ]) - (empty) + (Ast_compatible.app2 ~loc + (Exp.ident ~loc {loc ; txt = Ldot (Lident "Pervasives", "=")} ) + (Ast_compatible.app1 ~loc typeof raw_exp) + (Exp.constant ~loc (Const_string ("undefined",None))) + ) + empty (Some raw_exp) - ] + ) let handle_raw_structure loc payload = @@ -34567,7 +34566,7 @@ let ocaml_obj_as_js_object loc ~pval_prim:(External_process.pval_prim_of_labels labels) (fun e -> - Exp.apply ~loc e + Ast_compatible.apply_labels ~loc e (Ext_list.map2 (fun l expr -> l.Asttypes.txt, expr) labels exprs) ) ~pval_type @@ -34617,10 +34616,10 @@ let convertBsErrorFunction loc (self : Bs_ast_mapper.mapper) attrs (cases : Par Ast_compatible.fun_ ~attrs ~loc ( Pat.var ~loc {txt; loc }) (Exp.ifthenelse ~loc - (Exp.apply ~loc (Exp.ident ~loc {txt = isCamlExceptionOrOpenVariant ; loc}) ["", txt_expr ]) + (Ast_compatible.app1 ~loc (Exp.ident ~loc {txt = isCamlExceptionOrOpenVariant ; loc}) txt_expr ) (Exp.match_ ~loc (Exp.constraint_ ~loc - (Exp.apply ~loc (Exp.ident ~loc {txt = obj_magic; loc}) ["", txt_expr]) + (Ast_compatible.app1 ~loc (Exp.ident ~loc {txt = obj_magic; loc}) txt_expr) (Ast_literal.type_exn ~loc ()) ) (Ext_list.map_append (fun (x :Parsetree.case ) -> @@ -35577,15 +35576,14 @@ module U = Ast_derive_util type tdcls = Parsetree.type_declaration list let js_field (o : Parsetree.expression) m = - Exp.apply + Ast_compatible.app2 (Exp.ident {txt = Lident "##"; loc = o.pexp_loc}) - [ - "",o; - "", Exp.ident m - ] -let const_int i = Exp.constant (Const_int i) -let const_string s = Exp.constant (Const_string (s,None)) + o + (Exp.ident m) +(* let Ast_compatible.const_exp_int i = Exp.constant (Const_int i) *) +let const_string s = Exp.constant (Const_string (s,None)) + let handle_config (config : Parsetree.expression option) = match config with @@ -35615,7 +35613,7 @@ let noloc = Location.none let eraseTypeLit = "jsMapperEraseType" let eraseTypeExp = Exp.ident {loc = noloc; txt = Lident eraseTypeLit} let eraseType x = - Exp.apply eraseTypeExp ["", x] + Ast_compatible.app1 eraseTypeExp x let eraseTypeStr = let any = Typ.any () in Str.primitive @@ -35623,10 +35621,9 @@ let eraseTypeStr = (Typ.arrow "" any any) ) -let app2 f arg1 arg2 = - Exp.apply f ["",arg1; "", arg2] -let app3 f arg1 arg2 arg3 = - Exp.apply f ["", arg1; "", arg2; "", arg3] +let app2 = Ast_compatible.app2 +let app3 = Ast_compatible.app3 + let (<=~) a b = app2 (Exp.ident {loc = noloc; txt = Lident "<="}) a b let (-~) a b = @@ -35806,7 +35803,7 @@ let init () = begin match attr with | NullString result -> let result_len = List.length result in - let exp_len = const_int result_len in + let exp_len = Ast_compatible.const_exp_int result_len in let v = [ eraseTypeStr; Ast_comb.single_non_rec_value @@ -35815,7 +35812,7 @@ let init () = (List.map (fun (i,str) -> Exp.tuple [ - const_int i; + Ast_compatible.const_exp_int i; const_string str ] ) (List.sort (fun (a,_) (b,_) -> compare (a:int) b) result))); @@ -35867,12 +35864,13 @@ let init () = match xs with | `New xs -> let constantArrayExp = Exp.ident {loc; txt = Lident constantArray} in - let exp_len = const_int (List.length ctors) in + let exp_len = Ast_compatible.const_exp_int (List.length ctors) in let v = [ eraseTypeStr; Ast_comb.single_non_rec_value {loc; txt = constantArray} - (Exp.array (List.map (fun i -> const_int i) xs )) + (Ast_compatible.const_exp_int_list_as_array xs) + (* (Exp.array (List.map (fun i -> Ast_compatible.const_exp_int i) xs )) *) ; toJsBody ( @@ -35911,12 +35909,12 @@ let init () = [ eraseTypeStr; toJsBody ( coerceResultToNewType - (eraseType exp_param +~ const_int offset) + (eraseType exp_param +~ Ast_compatible.const_exp_int offset) ) ; let len = List.length ctors in - let range_low = const_int (offset + 0) in - let range_upper = const_int (offset + len - 1) in + let range_low = Ast_compatible.const_exp_int (offset + 0) in + let range_upper = Ast_compatible.const_exp_int (offset + len - 1) in Ast_comb.single_non_rec_value {loc ; txt = fromJs} @@ -35933,7 +35931,7 @@ let init () = (assertExp ((exp_param <=~ range_upper) &&~ (range_low <=~ exp_param)) ) - (exp_param -~ const_int offset)) + (exp_param -~ Ast_compatible.const_exp_int offset)) ) +> core_type @@ -35941,7 +35939,7 @@ let init () = (Exp.ifthenelse ( (exp_param <=~ range_upper) &&~ (range_low <=~ exp_param)) (Exp.construct {loc; txt = Lident "Some"} - ( Some (exp_param -~ const_int offset))) + ( Some (exp_param -~ Ast_compatible.const_exp_int offset))) (Some (Exp.construct {loc; txt = Lident "None"} None))) +> Ast_core_type.lift_option_type core_type @@ -36543,9 +36541,9 @@ let handle_exp_apply -> {fn with pexp_desc = Pexp_construct(ctor, Some bounded_obj_arg)} | _ -> - Exp.apply ~loc:fn.pexp_loc + Ast_compatible.app1 ~loc:fn.pexp_loc (self.expr self fn ) - ["", bounded_obj_arg] + bounded_obj_arg ) xs ); pexp_attributes = tuple_attrs; pexp_loc = fn.pexp_loc; @@ -36554,7 +36552,7 @@ let handle_exp_apply begin match try_dispatch_by_tuple with | Some x -> x | None -> - Exp.apply ~loc (self.expr self fn) ["", new_obj_arg] + Ast_compatible.app1 ~loc (self.expr self fn) new_obj_arg end end | _ -> @@ -36738,17 +36736,16 @@ let handle_extension record_as_js_object e (self : Bs_ast_mapper.mapper) begin match pat.ppat_desc, body.pexp_desc with | Ppat_construct ({txt = Lident "()"}, None), Pexp_constant(Const_string(block,_)) -> - Exp.apply ~loc - (Exp.ident ~loc {txt = Ldot (Ast_literal.Lid.js_unsafe, Literals.raw_function);loc}) - [ "", - Exp.constant ~loc (Const_string (toString {args = [] ; block }, None)) - ] + Ast_compatible.app1 ~loc + (Exp.ident ~loc {txt = Ldot (Ast_literal.Lid.js_unsafe, Literals.raw_function);loc}) + (Exp.constant ~loc (Const_string (toString {args = [] ; block }, None))) + | Ppat_var ({txt;}), _ -> let acc, block = unroll_function_aux [txt] body in - (Exp.apply ~loc + (Ast_compatible.app1 ~loc (Exp.ident ~loc {txt = Ldot (Ast_literal.Lid.js_unsafe, Literals.raw_function);loc}) - [ "", Exp.constant ~loc (Const_string (toString {args = List.rev acc ; block },None))] + (Exp.constant ~loc (Const_string (toString {args = List.rev acc ; block },None))) ) | _ -> Location.raise_errorf ~loc "bs.raw can only be applied to a string or a special function form " end @@ -36785,23 +36782,23 @@ let handle_extension record_as_js_object e (self : Bs_ast_mapper.mapper) file lnum in let e = self.expr self e in Exp.sequence ~loc - (Exp.apply ~loc + (Ast_compatible.app1 ~loc (Exp.ident ~loc {loc; txt = Ldot (Ldot (Lident "Js", "Console"), "timeStart") }) - ["", Exp.constant ~loc (Const_string (locString,None))] + (Exp.constant ~loc (Const_string (locString,None))) ) ( Exp.let_ ~loc Nonrecursive [Vb.mk ~loc (Pat.var ~loc {loc; txt = "timed"}) e ; ] (Exp.sequence ~loc - (Exp.apply ~loc + (Ast_compatible.app1 ~loc (Exp.ident ~loc {loc; txt = Ldot (Ldot (Lident "Js", "Console"), "timeEnd") }) - ["", Exp.constant ~loc (Const_string (locString,None))] + (Exp.constant ~loc (Const_string (locString,None))) ) (Exp.ident ~loc {loc; txt = Lident "timed"}) ) @@ -36827,13 +36824,10 @@ let handle_extension record_as_js_object e (self : Bs_ast_mapper.mapper) Printf.sprintf "File %S, line %d, characters %d-%d" file lnum cnum enum in let raiseWithString locString = - (Exp.apply ~loc + Ast_compatible.app1 ~loc (Exp.ident ~loc {loc; txt = - Ldot(Ldot (Lident "Js","Exn"),"raiseError")}) - ["", - - Exp.constant (Const_string (locString,None)) - ]) + Ldot(Ldot (Lident "Js","Exn"),"raiseError")}) + (Exp.constant (Const_string (locString,None))) in (match e.pexp_desc with | Pexp_construct({txt = Lident "false"},None) -> @@ -36858,9 +36852,9 @@ let handle_extension record_as_js_object e (self : Bs_ast_mapper.mapper) Exp.assert_ ~loc e else Exp.ifthenelse ~loc - (Exp.apply ~loc + (Ast_compatible.app1 ~loc (Exp.ident {loc ; txt = Ldot(Lident "Pervasives","not")}) - ["", e] + e ) (raiseWithString locString) None @@ -38659,9 +38653,9 @@ let rec unsafe_mapper : Bs_ast_mapper.mapper = -> if !Js_config.debug then let open Ast_helper in - Str.eval ~loc (Exp.apply ~loc + Str.eval ~loc (Ast_compatible.app1 ~loc (Exp.ident ~loc {txt = Ldot(Ldot (Lident"Belt","Debug"), "setupChromeDebugger");loc} ) - ["", Ast_literal.val_unit ~loc ()] + (Ast_literal.val_unit ~loc ()) ) else Ast_structure.dummy_item loc | Pstr_type (_ :: _ as tdcls ) (* [ {ptype_attributes} as tdcl ] *)-> diff --git a/lib/bsppx.ml b/lib/bsppx.ml index c2d2d2fa90..4ff29b31e9 100644 --- a/lib/bsppx.ml +++ b/lib/bsppx.ml @@ -7493,6 +7493,243 @@ let table_dispatch table (action : action) | exception _ -> Location.raise_errorf ~loc "%s is not supported" name end +end +module Ast_compatible : sig +#1 "ast_compatible.mli" +(* Copyright (C) 2018 Authors of BuckleScript + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * In addition to the permissions granted to you by the LGPL, you may combine + * or link a "work that uses the Library" with a publicly distributed version + * of this file to produce a combined library or application, then distribute + * that combined work under the terms of your choosing, with no requirement + * to comply with the obligations normally placed on you by section 4 of the + * LGPL version 3 (or the corresponding section of a later version of the LGPL + * should you choose to use a later version). + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) + + +type loc = Location.t +type attrs = Parsetree.attribute list +open Parsetree + + +val const_exp_string: + ?loc:Location.t -> + ?attrs:attrs -> + ?delimiter:string -> + string -> + expression + +val const_exp_int: + ?loc:Location.t -> + ?attrs:attrs -> + int -> + expression + +val const_exp_int_list_as_array: + int list -> + expression + +val apply_simple: + ?loc:Location.t -> + ?attrs:attrs -> + expression -> + expression list -> + expression + +val app1: + ?loc:Location.t -> + ?attrs:attrs -> + expression -> + expression -> + expression + +val app2: + ?loc:Location.t -> + ?attrs:attrs -> + expression -> + expression -> + expression -> + expression + +val app3: + ?loc:Location.t -> + ?attrs:attrs -> + expression -> + expression -> + expression -> + expression -> + expression + +(** Note this function would slightly + change its semantics depending on compiler versions + for newer version: it means always label + for older version: it could be optional (which we should avoid) +*) +val apply_labels: + ?loc:Location.t -> + ?attrs:attrs -> + expression -> + (string * expression) list -> + (* [(label,e)] [label] is strictly interpreted as label *) + expression + +val fun_ : + ?loc:Location.t -> + ?attrs:attrs -> + pattern -> + expression -> + expression +end = struct +#1 "ast_compatible.ml" +(* Copyright (C) 2018 Authors of BuckleScript + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * In addition to the permissions granted to you by the LGPL, you may combine + * or link a "work that uses the Library" with a publicly distributed version + * of this file to produce a combined library or application, then distribute + * that combined work under the terms of your choosing, with no requirement + * to comply with the obligations normally placed on you by section 4 of the + * LGPL version 3 (or the corresponding section of a later version of the LGPL + * should you choose to use a later version). + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) + +type loc = Location.t +type attrs = Parsetree.attribute list +open Parsetree +let default_loc = Location.none + + + +let const_exp_string + ?(loc = default_loc) + ?(attrs = []) + ?delimiter + (s : string) : expression = + { + pexp_loc = loc; + pexp_attributes = attrs; + pexp_desc = Pexp_constant(Const_string(s,delimiter)) + } + + +let const_exp_int + ?(loc = default_loc) + ?(attrs = []) + (s : int) : expression = + { + pexp_loc = loc; + pexp_attributes = attrs; + pexp_desc = Pexp_constant(Const_int s) + } + + +let const_exp_int_list_as_array xs = + Ast_helper.Exp.array + (Ext_list.map (fun x -> const_exp_int x ) xs) + +let apply_simple + ?(loc = default_loc) + ?(attrs = []) + fn args : expression = + { pexp_loc = loc; + pexp_attributes = attrs; + pexp_desc = + Pexp_apply( + fn, + (Ext_list.map (fun x -> "",x) args) ) } + +let app1 + ?(loc = default_loc) + ?(attrs = []) + fn arg1 : expression = + { pexp_loc = loc; + pexp_attributes = attrs; + pexp_desc = + Pexp_apply( + fn, + ["", arg1] + ) } + +let app2 + ?(loc = default_loc) + ?(attrs = []) + fn arg1 arg2 : expression = + { pexp_loc = loc; + pexp_attributes = attrs; + pexp_desc = + Pexp_apply( + fn, + [ + "", arg1; + "", arg2 ] + ) } + +let app3 + ?(loc = default_loc) + ?(attrs = []) + fn arg1 arg2 arg3 : expression = + { pexp_loc = loc; + pexp_attributes = attrs; + pexp_desc = + Pexp_apply( + fn, + [ + "", arg1; + "", arg2; + "", arg3 + ] + ) } + + +let apply_labels + ?(loc = default_loc) + ?(attrs = []) + fn args : expression = + { pexp_loc = loc; + pexp_attributes = attrs; + pexp_desc = + Pexp_apply( + fn, + args ) } + + +let fun_ + ?(loc = default_loc) + ?(attrs = []) + pat + exp = + { + pexp_loc = loc; + pexp_attributes = attrs; + pexp_desc = Pexp_fun("",None, pat, exp) + } + end module Ast_literal : sig #1 "ast_literal.mli" @@ -7703,10 +7940,10 @@ module Ast_comb : sig * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) -val exp_apply_no_label : +(* val exp_apply_no_label : ?loc:Location.t -> ?attrs:Parsetree.attributes -> - Parsetree.expression -> Parsetree.expression list -> Parsetree.expression + Parsetree.expression -> Parsetree.expression list -> Parsetree.expression *) (* val fun_no_label : ?loc:Location.t -> @@ -7781,8 +8018,7 @@ end = struct open Ast_helper -let exp_apply_no_label ?loc ?attrs a b = - Exp.apply ?loc ?attrs a (Ext_list.map (fun x -> "", x) b) + (* let fun_no_label ?loc ?attrs pat body = Ast_compatible.fun_ ?loc ?attrs pat body *) @@ -7791,7 +8027,7 @@ let arrow_no_label ?loc ?attrs b c = Typ.arrow ?loc ?attrs "" b c let discard_exp_as_unit loc e = - exp_apply_no_label ~loc + Ast_compatible.apply_simple ~loc (Exp.ident ~loc {txt = Ast_literal.Lid.ignore_id; loc}) [Exp.constraint_ ~loc e (Ast_literal.type_unit ~loc ())] @@ -10693,238 +10929,6 @@ let deprecated s : attr = },[]) ; pstr_loc = locg}] -end -module Ast_compatible : sig -#1 "ast_compatible.mli" -(* Copyright (C) 2018 Authors of BuckleScript - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * In addition to the permissions granted to you by the LGPL, you may combine - * or link a "work that uses the Library" with a publicly distributed version - * of this file to produce a combined library or application, then distribute - * that combined work under the terms of your choosing, with no requirement - * to comply with the obligations normally placed on you by section 4 of the - * LGPL version 3 (or the corresponding section of a later version of the LGPL - * should you choose to use a later version). - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) - - -type loc = Location.t -type attrs = Parsetree.attribute list -open Parsetree - - -val const_exp_string: - ?loc:Location.t -> - ?attrs:attrs -> - ?delimiter:string -> - string -> - expression - -val const_exp_int: - ?loc:Location.t -> - ?attrs:attrs -> - int -> - expression - -val const_exp_int_list_as_array: - int list -> - expression - -val apply_simple: - ?loc:Location.t -> - ?attrs:attrs -> - expression -> - expression list -> - expression - -val app1: - ?loc:Location.t -> - ?attrs:attrs -> - expression -> - expression -> - expression - -val app2: - ?loc:Location.t -> - ?attrs:attrs -> - expression -> - expression -> - expression -> - expression - -val app3: - ?loc:Location.t -> - ?attrs:attrs -> - expression -> - expression -> - expression -> - expression -> - expression - -val apply_labels: - ?loc:Location.t -> - ?attrs:attrs -> - expression -> - (string * expression) list -> - (* [(label,e)] [label] is strictly interpreted as label *) - expression - -val fun_ : - ?loc:Location.t -> - ?attrs:attrs -> - pattern -> - expression -> - expression -end = struct -#1 "ast_compatible.ml" -(* Copyright (C) 2018 Authors of BuckleScript - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * In addition to the permissions granted to you by the LGPL, you may combine - * or link a "work that uses the Library" with a publicly distributed version - * of this file to produce a combined library or application, then distribute - * that combined work under the terms of your choosing, with no requirement - * to comply with the obligations normally placed on you by section 4 of the - * LGPL version 3 (or the corresponding section of a later version of the LGPL - * should you choose to use a later version). - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) - -type loc = Location.t -type attrs = Parsetree.attribute list -open Parsetree -let default_loc = Location.none - - - -let const_exp_string - ?(loc = default_loc) - ?(attrs = []) - ?delimiter - (s : string) : expression = - { - pexp_loc = loc; - pexp_attributes = attrs; - pexp_desc = Pexp_constant(Const_string(s,delimiter)) - } - - -let const_exp_int - ?(loc = default_loc) - ?(attrs = []) - (s : int) : expression = - { - pexp_loc = loc; - pexp_attributes = attrs; - pexp_desc = Pexp_constant(Const_int s) - } - - -let const_exp_int_list_as_array xs = - Ast_helper.Exp.array - (Ext_list.map (fun x -> const_exp_int x ) xs) - -let apply_simple - ?(loc = default_loc) - ?(attrs = []) - fn args : expression = - { pexp_loc = loc; - pexp_attributes = attrs; - pexp_desc = - Pexp_apply( - fn, - (Ext_list.map (fun x -> "",x) args) ) } - -let app1 - ?(loc = default_loc) - ?(attrs = []) - fn arg1 : expression = - { pexp_loc = loc; - pexp_attributes = attrs; - pexp_desc = - Pexp_apply( - fn, - ["", arg1] - ) } - -let app2 - ?(loc = default_loc) - ?(attrs = []) - fn arg1 arg2 : expression = - { pexp_loc = loc; - pexp_attributes = attrs; - pexp_desc = - Pexp_apply( - fn, - [ - "", arg1; - "", arg2 ] - ) } - -let app3 - ?(loc = default_loc) - ?(attrs = []) - fn arg1 arg2 arg3 : expression = - { pexp_loc = loc; - pexp_attributes = attrs; - pexp_desc = - Pexp_apply( - fn, - [ - "", arg1; - "", arg2; - "", arg3 - ] - ) } - - -let apply_labels - ?(loc = default_loc) - ?(attrs = []) - fn args : expression = - { pexp_loc = loc; - pexp_attributes = attrs; - pexp_desc = - Pexp_apply( - fn, - args ) } - - -let fun_ - ?(loc = default_loc) - ?(attrs = []) - pat - exp = - { - pexp_loc = loc; - pexp_attributes = attrs; - pexp_desc = Pexp_fun("",None, pat, exp) - } - end module Ast_exp : sig #1 "ast_exp.mli" @@ -16057,11 +16061,11 @@ let arrow = Typ.arrow let js_property loc obj name = Parsetree.Pexp_send - ((Exp.apply ~loc + ((Ast_compatible.app1 ~loc (Exp.ident ~loc {loc; txt = Ldot (Ast_literal.Lid.js_unsafe, Literals.unsafe_downgrade)}) - ["",obj]), name) + obj), name) (* TODO: have a final checking for property arities @@ -16244,7 +16248,7 @@ let generic_to_uncurry_exp kind loc (self : Bs_ast_mapper.mapper) pat body lift_js_method_callback loc args_type result_type ) in Ast_external_mk.local_extern_cont loc ~pval_prim ~pval_type - (fun prim -> Exp.apply ~loc prim ["", body]) + (fun prim -> Ast_compatible.app1 ~loc prim body) let to_uncurry_fn = generic_to_uncurry_exp `Fn @@ -16282,13 +16286,12 @@ let handle_raw ~check_js_regex loc payload = let handle_external loc x = let raw_exp : Ast_exp.t = - Ast_helper.Exp.apply + Ast_compatible.app1 (Exp.ident ~loc {loc; txt = Ldot (Ast_literal.Lid.js_unsafe, Literals.raw_expr)}) ~loc - [Ext_string.empty, - Exp.constant ~loc (Const_string (x,Some Ext_string.empty))] in + (Exp.constant ~loc (Const_string (x,Some Ext_string.empty))) in let empty = Exp.ident ~loc {txt = Ldot (Ldot(Lident"Js", "Undefined"), "empty");loc} @@ -16298,20 +16301,16 @@ let handle_external loc x = let typeof = Exp.ident {loc ; txt = Ldot(Lident "Js","typeof")} in - Exp.apply ~loc undefined_typeof [ - Ext_string.empty, + Ast_compatible.app1 ~loc undefined_typeof ( Exp.ifthenelse ~loc - (Exp.apply ~loc - (Exp.ident ~loc {loc ; txt = Ldot (Lident "Pervasives", "=")} ) - [ - Ext_string.empty, - (Exp.apply ~loc typeof [Ext_string.empty,raw_exp]); - Ext_string.empty, - Exp.constant ~loc (Const_string ("undefined",None)) - ]) - (empty) + (Ast_compatible.app2 ~loc + (Exp.ident ~loc {loc ; txt = Ldot (Lident "Pervasives", "=")} ) + (Ast_compatible.app1 ~loc typeof raw_exp) + (Exp.constant ~loc (Const_string ("undefined",None))) + ) + empty (Some raw_exp) - ] + ) let handle_raw_structure loc payload = @@ -16572,7 +16571,7 @@ let ocaml_obj_as_js_object loc ~pval_prim:(External_process.pval_prim_of_labels labels) (fun e -> - Exp.apply ~loc e + Ast_compatible.apply_labels ~loc e (Ext_list.map2 (fun l expr -> l.Asttypes.txt, expr) labels exprs) ) ~pval_type @@ -16622,10 +16621,10 @@ let convertBsErrorFunction loc (self : Bs_ast_mapper.mapper) attrs (cases : Par Ast_compatible.fun_ ~attrs ~loc ( Pat.var ~loc {txt; loc }) (Exp.ifthenelse ~loc - (Exp.apply ~loc (Exp.ident ~loc {txt = isCamlExceptionOrOpenVariant ; loc}) ["", txt_expr ]) + (Ast_compatible.app1 ~loc (Exp.ident ~loc {txt = isCamlExceptionOrOpenVariant ; loc}) txt_expr ) (Exp.match_ ~loc (Exp.constraint_ ~loc - (Exp.apply ~loc (Exp.ident ~loc {txt = obj_magic; loc}) ["", txt_expr]) + (Ast_compatible.app1 ~loc (Exp.ident ~loc {txt = obj_magic; loc}) txt_expr) (Ast_literal.type_exn ~loc ()) ) (Ext_list.map_append (fun (x :Parsetree.case ) -> @@ -17582,15 +17581,14 @@ module U = Ast_derive_util type tdcls = Parsetree.type_declaration list let js_field (o : Parsetree.expression) m = - Exp.apply + Ast_compatible.app2 (Exp.ident {txt = Lident "##"; loc = o.pexp_loc}) - [ - "",o; - "", Exp.ident m - ] -let const_int i = Exp.constant (Const_int i) -let const_string s = Exp.constant (Const_string (s,None)) + o + (Exp.ident m) +(* let Ast_compatible.const_exp_int i = Exp.constant (Const_int i) *) +let const_string s = Exp.constant (Const_string (s,None)) + let handle_config (config : Parsetree.expression option) = match config with @@ -17620,7 +17618,7 @@ let noloc = Location.none let eraseTypeLit = "jsMapperEraseType" let eraseTypeExp = Exp.ident {loc = noloc; txt = Lident eraseTypeLit} let eraseType x = - Exp.apply eraseTypeExp ["", x] + Ast_compatible.app1 eraseTypeExp x let eraseTypeStr = let any = Typ.any () in Str.primitive @@ -17628,10 +17626,9 @@ let eraseTypeStr = (Typ.arrow "" any any) ) -let app2 f arg1 arg2 = - Exp.apply f ["",arg1; "", arg2] -let app3 f arg1 arg2 arg3 = - Exp.apply f ["", arg1; "", arg2; "", arg3] +let app2 = Ast_compatible.app2 +let app3 = Ast_compatible.app3 + let (<=~) a b = app2 (Exp.ident {loc = noloc; txt = Lident "<="}) a b let (-~) a b = @@ -17811,7 +17808,7 @@ let init () = begin match attr with | NullString result -> let result_len = List.length result in - let exp_len = const_int result_len in + let exp_len = Ast_compatible.const_exp_int result_len in let v = [ eraseTypeStr; Ast_comb.single_non_rec_value @@ -17820,7 +17817,7 @@ let init () = (List.map (fun (i,str) -> Exp.tuple [ - const_int i; + Ast_compatible.const_exp_int i; const_string str ] ) (List.sort (fun (a,_) (b,_) -> compare (a:int) b) result))); @@ -17872,12 +17869,13 @@ let init () = match xs with | `New xs -> let constantArrayExp = Exp.ident {loc; txt = Lident constantArray} in - let exp_len = const_int (List.length ctors) in + let exp_len = Ast_compatible.const_exp_int (List.length ctors) in let v = [ eraseTypeStr; Ast_comb.single_non_rec_value {loc; txt = constantArray} - (Exp.array (List.map (fun i -> const_int i) xs )) + (Ast_compatible.const_exp_int_list_as_array xs) + (* (Exp.array (List.map (fun i -> Ast_compatible.const_exp_int i) xs )) *) ; toJsBody ( @@ -17916,12 +17914,12 @@ let init () = [ eraseTypeStr; toJsBody ( coerceResultToNewType - (eraseType exp_param +~ const_int offset) + (eraseType exp_param +~ Ast_compatible.const_exp_int offset) ) ; let len = List.length ctors in - let range_low = const_int (offset + 0) in - let range_upper = const_int (offset + len - 1) in + let range_low = Ast_compatible.const_exp_int (offset + 0) in + let range_upper = Ast_compatible.const_exp_int (offset + len - 1) in Ast_comb.single_non_rec_value {loc ; txt = fromJs} @@ -17938,7 +17936,7 @@ let init () = (assertExp ((exp_param <=~ range_upper) &&~ (range_low <=~ exp_param)) ) - (exp_param -~ const_int offset)) + (exp_param -~ Ast_compatible.const_exp_int offset)) ) +> core_type @@ -17946,7 +17944,7 @@ let init () = (Exp.ifthenelse ( (exp_param <=~ range_upper) &&~ (range_low <=~ exp_param)) (Exp.construct {loc; txt = Lident "Some"} - ( Some (exp_param -~ const_int offset))) + ( Some (exp_param -~ Ast_compatible.const_exp_int offset))) (Some (Exp.construct {loc; txt = Lident "None"} None))) +> Ast_core_type.lift_option_type core_type @@ -18548,9 +18546,9 @@ let handle_exp_apply -> {fn with pexp_desc = Pexp_construct(ctor, Some bounded_obj_arg)} | _ -> - Exp.apply ~loc:fn.pexp_loc + Ast_compatible.app1 ~loc:fn.pexp_loc (self.expr self fn ) - ["", bounded_obj_arg] + bounded_obj_arg ) xs ); pexp_attributes = tuple_attrs; pexp_loc = fn.pexp_loc; @@ -18559,7 +18557,7 @@ let handle_exp_apply begin match try_dispatch_by_tuple with | Some x -> x | None -> - Exp.apply ~loc (self.expr self fn) ["", new_obj_arg] + Ast_compatible.app1 ~loc (self.expr self fn) new_obj_arg end end | _ -> @@ -18743,17 +18741,16 @@ let handle_extension record_as_js_object e (self : Bs_ast_mapper.mapper) begin match pat.ppat_desc, body.pexp_desc with | Ppat_construct ({txt = Lident "()"}, None), Pexp_constant(Const_string(block,_)) -> - Exp.apply ~loc - (Exp.ident ~loc {txt = Ldot (Ast_literal.Lid.js_unsafe, Literals.raw_function);loc}) - [ "", - Exp.constant ~loc (Const_string (toString {args = [] ; block }, None)) - ] + Ast_compatible.app1 ~loc + (Exp.ident ~loc {txt = Ldot (Ast_literal.Lid.js_unsafe, Literals.raw_function);loc}) + (Exp.constant ~loc (Const_string (toString {args = [] ; block }, None))) + | Ppat_var ({txt;}), _ -> let acc, block = unroll_function_aux [txt] body in - (Exp.apply ~loc + (Ast_compatible.app1 ~loc (Exp.ident ~loc {txt = Ldot (Ast_literal.Lid.js_unsafe, Literals.raw_function);loc}) - [ "", Exp.constant ~loc (Const_string (toString {args = List.rev acc ; block },None))] + (Exp.constant ~loc (Const_string (toString {args = List.rev acc ; block },None))) ) | _ -> Location.raise_errorf ~loc "bs.raw can only be applied to a string or a special function form " end @@ -18790,23 +18787,23 @@ let handle_extension record_as_js_object e (self : Bs_ast_mapper.mapper) file lnum in let e = self.expr self e in Exp.sequence ~loc - (Exp.apply ~loc + (Ast_compatible.app1 ~loc (Exp.ident ~loc {loc; txt = Ldot (Ldot (Lident "Js", "Console"), "timeStart") }) - ["", Exp.constant ~loc (Const_string (locString,None))] + (Exp.constant ~loc (Const_string (locString,None))) ) ( Exp.let_ ~loc Nonrecursive [Vb.mk ~loc (Pat.var ~loc {loc; txt = "timed"}) e ; ] (Exp.sequence ~loc - (Exp.apply ~loc + (Ast_compatible.app1 ~loc (Exp.ident ~loc {loc; txt = Ldot (Ldot (Lident "Js", "Console"), "timeEnd") }) - ["", Exp.constant ~loc (Const_string (locString,None))] + (Exp.constant ~loc (Const_string (locString,None))) ) (Exp.ident ~loc {loc; txt = Lident "timed"}) ) @@ -18832,13 +18829,10 @@ let handle_extension record_as_js_object e (self : Bs_ast_mapper.mapper) Printf.sprintf "File %S, line %d, characters %d-%d" file lnum cnum enum in let raiseWithString locString = - (Exp.apply ~loc + Ast_compatible.app1 ~loc (Exp.ident ~loc {loc; txt = - Ldot(Ldot (Lident "Js","Exn"),"raiseError")}) - ["", - - Exp.constant (Const_string (locString,None)) - ]) + Ldot(Ldot (Lident "Js","Exn"),"raiseError")}) + (Exp.constant (Const_string (locString,None))) in (match e.pexp_desc with | Pexp_construct({txt = Lident "false"},None) -> @@ -18863,9 +18857,9 @@ let handle_extension record_as_js_object e (self : Bs_ast_mapper.mapper) Exp.assert_ ~loc e else Exp.ifthenelse ~loc - (Exp.apply ~loc + (Ast_compatible.app1 ~loc (Exp.ident {loc ; txt = Ldot(Lident "Pervasives","not")}) - ["", e] + e ) (raiseWithString locString) None @@ -20664,9 +20658,9 @@ let rec unsafe_mapper : Bs_ast_mapper.mapper = -> if !Js_config.debug then let open Ast_helper in - Str.eval ~loc (Exp.apply ~loc + Str.eval ~loc (Ast_compatible.app1 ~loc (Exp.ident ~loc {txt = Ldot(Ldot (Lident"Belt","Debug"), "setupChromeDebugger");loc} ) - ["", Ast_literal.val_unit ~loc ()] + (Ast_literal.val_unit ~loc ()) ) else Ast_structure.dummy_item loc | Pstr_type (_ :: _ as tdcls ) (* [ {ptype_attributes} as tdcl ] *)-> diff --git a/lib/whole_compiler.ml b/lib/whole_compiler.ml index efa10c935b..5ede531879 100644 --- a/lib/whole_compiler.ml +++ b/lib/whole_compiler.ml @@ -64329,6 +64329,243 @@ let string_of_module_id *) +end +module Ast_compatible : sig +#1 "ast_compatible.mli" +(* Copyright (C) 2018 Authors of BuckleScript + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * In addition to the permissions granted to you by the LGPL, you may combine + * or link a "work that uses the Library" with a publicly distributed version + * of this file to produce a combined library or application, then distribute + * that combined work under the terms of your choosing, with no requirement + * to comply with the obligations normally placed on you by section 4 of the + * LGPL version 3 (or the corresponding section of a later version of the LGPL + * should you choose to use a later version). + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) + + +type loc = Location.t +type attrs = Parsetree.attribute list +open Parsetree + + +val const_exp_string: + ?loc:Location.t -> + ?attrs:attrs -> + ?delimiter:string -> + string -> + expression + +val const_exp_int: + ?loc:Location.t -> + ?attrs:attrs -> + int -> + expression + +val const_exp_int_list_as_array: + int list -> + expression + +val apply_simple: + ?loc:Location.t -> + ?attrs:attrs -> + expression -> + expression list -> + expression + +val app1: + ?loc:Location.t -> + ?attrs:attrs -> + expression -> + expression -> + expression + +val app2: + ?loc:Location.t -> + ?attrs:attrs -> + expression -> + expression -> + expression -> + expression + +val app3: + ?loc:Location.t -> + ?attrs:attrs -> + expression -> + expression -> + expression -> + expression -> + expression + +(** Note this function would slightly + change its semantics depending on compiler versions + for newer version: it means always label + for older version: it could be optional (which we should avoid) +*) +val apply_labels: + ?loc:Location.t -> + ?attrs:attrs -> + expression -> + (string * expression) list -> + (* [(label,e)] [label] is strictly interpreted as label *) + expression + +val fun_ : + ?loc:Location.t -> + ?attrs:attrs -> + pattern -> + expression -> + expression +end = struct +#1 "ast_compatible.ml" +(* Copyright (C) 2018 Authors of BuckleScript + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * In addition to the permissions granted to you by the LGPL, you may combine + * or link a "work that uses the Library" with a publicly distributed version + * of this file to produce a combined library or application, then distribute + * that combined work under the terms of your choosing, with no requirement + * to comply with the obligations normally placed on you by section 4 of the + * LGPL version 3 (or the corresponding section of a later version of the LGPL + * should you choose to use a later version). + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) + +type loc = Location.t +type attrs = Parsetree.attribute list +open Parsetree +let default_loc = Location.none + + + +let const_exp_string + ?(loc = default_loc) + ?(attrs = []) + ?delimiter + (s : string) : expression = + { + pexp_loc = loc; + pexp_attributes = attrs; + pexp_desc = Pexp_constant(Const_string(s,delimiter)) + } + + +let const_exp_int + ?(loc = default_loc) + ?(attrs = []) + (s : int) : expression = + { + pexp_loc = loc; + pexp_attributes = attrs; + pexp_desc = Pexp_constant(Const_int s) + } + + +let const_exp_int_list_as_array xs = + Ast_helper.Exp.array + (Ext_list.map (fun x -> const_exp_int x ) xs) + +let apply_simple + ?(loc = default_loc) + ?(attrs = []) + fn args : expression = + { pexp_loc = loc; + pexp_attributes = attrs; + pexp_desc = + Pexp_apply( + fn, + (Ext_list.map (fun x -> "",x) args) ) } + +let app1 + ?(loc = default_loc) + ?(attrs = []) + fn arg1 : expression = + { pexp_loc = loc; + pexp_attributes = attrs; + pexp_desc = + Pexp_apply( + fn, + ["", arg1] + ) } + +let app2 + ?(loc = default_loc) + ?(attrs = []) + fn arg1 arg2 : expression = + { pexp_loc = loc; + pexp_attributes = attrs; + pexp_desc = + Pexp_apply( + fn, + [ + "", arg1; + "", arg2 ] + ) } + +let app3 + ?(loc = default_loc) + ?(attrs = []) + fn arg1 arg2 arg3 : expression = + { pexp_loc = loc; + pexp_attributes = attrs; + pexp_desc = + Pexp_apply( + fn, + [ + "", arg1; + "", arg2; + "", arg3 + ] + ) } + + +let apply_labels + ?(loc = default_loc) + ?(attrs = []) + fn args : expression = + { pexp_loc = loc; + pexp_attributes = attrs; + pexp_desc = + Pexp_apply( + fn, + args ) } + + +let fun_ + ?(loc = default_loc) + ?(attrs = []) + pat + exp = + { + pexp_loc = loc; + pexp_attributes = attrs; + pexp_desc = Pexp_fun("",None, pat, exp) + } + end module Ast_literal : sig #1 "ast_literal.mli" @@ -64539,10 +64776,10 @@ module Ast_comb : sig * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) -val exp_apply_no_label : +(* val exp_apply_no_label : ?loc:Location.t -> ?attrs:Parsetree.attributes -> - Parsetree.expression -> Parsetree.expression list -> Parsetree.expression + Parsetree.expression -> Parsetree.expression list -> Parsetree.expression *) (* val fun_no_label : ?loc:Location.t -> @@ -64617,8 +64854,7 @@ end = struct open Ast_helper -let exp_apply_no_label ?loc ?attrs a b = - Exp.apply ?loc ?attrs a (Ext_list.map (fun x -> "", x) b) + (* let fun_no_label ?loc ?attrs pat body = Ast_compatible.fun_ ?loc ?attrs pat body *) @@ -64627,7 +64863,7 @@ let arrow_no_label ?loc ?attrs b c = Typ.arrow ?loc ?attrs "" b c let discard_exp_as_unit loc e = - exp_apply_no_label ~loc + Ast_compatible.apply_simple ~loc (Exp.ident ~loc {txt = Ast_literal.Lid.ignore_id; loc}) [Exp.constraint_ ~loc e (Ast_literal.type_unit ~loc ())] @@ -67676,238 +67912,6 @@ let deprecated s : attr = },[]) ; pstr_loc = locg}] -end -module Ast_compatible : sig -#1 "ast_compatible.mli" -(* Copyright (C) 2018 Authors of BuckleScript - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * In addition to the permissions granted to you by the LGPL, you may combine - * or link a "work that uses the Library" with a publicly distributed version - * of this file to produce a combined library or application, then distribute - * that combined work under the terms of your choosing, with no requirement - * to comply with the obligations normally placed on you by section 4 of the - * LGPL version 3 (or the corresponding section of a later version of the LGPL - * should you choose to use a later version). - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) - - -type loc = Location.t -type attrs = Parsetree.attribute list -open Parsetree - - -val const_exp_string: - ?loc:Location.t -> - ?attrs:attrs -> - ?delimiter:string -> - string -> - expression - -val const_exp_int: - ?loc:Location.t -> - ?attrs:attrs -> - int -> - expression - -val const_exp_int_list_as_array: - int list -> - expression - -val apply_simple: - ?loc:Location.t -> - ?attrs:attrs -> - expression -> - expression list -> - expression - -val app1: - ?loc:Location.t -> - ?attrs:attrs -> - expression -> - expression -> - expression - -val app2: - ?loc:Location.t -> - ?attrs:attrs -> - expression -> - expression -> - expression -> - expression - -val app3: - ?loc:Location.t -> - ?attrs:attrs -> - expression -> - expression -> - expression -> - expression -> - expression - -val apply_labels: - ?loc:Location.t -> - ?attrs:attrs -> - expression -> - (string * expression) list -> - (* [(label,e)] [label] is strictly interpreted as label *) - expression - -val fun_ : - ?loc:Location.t -> - ?attrs:attrs -> - pattern -> - expression -> - expression -end = struct -#1 "ast_compatible.ml" -(* Copyright (C) 2018 Authors of BuckleScript - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * In addition to the permissions granted to you by the LGPL, you may combine - * or link a "work that uses the Library" with a publicly distributed version - * of this file to produce a combined library or application, then distribute - * that combined work under the terms of your choosing, with no requirement - * to comply with the obligations normally placed on you by section 4 of the - * LGPL version 3 (or the corresponding section of a later version of the LGPL - * should you choose to use a later version). - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) - -type loc = Location.t -type attrs = Parsetree.attribute list -open Parsetree -let default_loc = Location.none - - - -let const_exp_string - ?(loc = default_loc) - ?(attrs = []) - ?delimiter - (s : string) : expression = - { - pexp_loc = loc; - pexp_attributes = attrs; - pexp_desc = Pexp_constant(Const_string(s,delimiter)) - } - - -let const_exp_int - ?(loc = default_loc) - ?(attrs = []) - (s : int) : expression = - { - pexp_loc = loc; - pexp_attributes = attrs; - pexp_desc = Pexp_constant(Const_int s) - } - - -let const_exp_int_list_as_array xs = - Ast_helper.Exp.array - (Ext_list.map (fun x -> const_exp_int x ) xs) - -let apply_simple - ?(loc = default_loc) - ?(attrs = []) - fn args : expression = - { pexp_loc = loc; - pexp_attributes = attrs; - pexp_desc = - Pexp_apply( - fn, - (Ext_list.map (fun x -> "",x) args) ) } - -let app1 - ?(loc = default_loc) - ?(attrs = []) - fn arg1 : expression = - { pexp_loc = loc; - pexp_attributes = attrs; - pexp_desc = - Pexp_apply( - fn, - ["", arg1] - ) } - -let app2 - ?(loc = default_loc) - ?(attrs = []) - fn arg1 arg2 : expression = - { pexp_loc = loc; - pexp_attributes = attrs; - pexp_desc = - Pexp_apply( - fn, - [ - "", arg1; - "", arg2 ] - ) } - -let app3 - ?(loc = default_loc) - ?(attrs = []) - fn arg1 arg2 arg3 : expression = - { pexp_loc = loc; - pexp_attributes = attrs; - pexp_desc = - Pexp_apply( - fn, - [ - "", arg1; - "", arg2; - "", arg3 - ] - ) } - - -let apply_labels - ?(loc = default_loc) - ?(attrs = []) - fn args : expression = - { pexp_loc = loc; - pexp_attributes = attrs; - pexp_desc = - Pexp_apply( - fn, - args ) } - - -let fun_ - ?(loc = default_loc) - ?(attrs = []) - pat - exp = - { - pexp_loc = loc; - pexp_attributes = attrs; - pexp_desc = Pexp_fun("",None, pat, exp) - } - end module Ast_exp : sig #1 "ast_exp.mli" @@ -70793,11 +70797,11 @@ let arrow = Typ.arrow let js_property loc obj name = Parsetree.Pexp_send - ((Exp.apply ~loc + ((Ast_compatible.app1 ~loc (Exp.ident ~loc {loc; txt = Ldot (Ast_literal.Lid.js_unsafe, Literals.unsafe_downgrade)}) - ["",obj]), name) + obj), name) (* TODO: have a final checking for property arities @@ -70980,7 +70984,7 @@ let generic_to_uncurry_exp kind loc (self : Bs_ast_mapper.mapper) pat body lift_js_method_callback loc args_type result_type ) in Ast_external_mk.local_extern_cont loc ~pval_prim ~pval_type - (fun prim -> Exp.apply ~loc prim ["", body]) + (fun prim -> Ast_compatible.app1 ~loc prim body) let to_uncurry_fn = generic_to_uncurry_exp `Fn @@ -71018,13 +71022,12 @@ let handle_raw ~check_js_regex loc payload = let handle_external loc x = let raw_exp : Ast_exp.t = - Ast_helper.Exp.apply + Ast_compatible.app1 (Exp.ident ~loc {loc; txt = Ldot (Ast_literal.Lid.js_unsafe, Literals.raw_expr)}) ~loc - [Ext_string.empty, - Exp.constant ~loc (Const_string (x,Some Ext_string.empty))] in + (Exp.constant ~loc (Const_string (x,Some Ext_string.empty))) in let empty = Exp.ident ~loc {txt = Ldot (Ldot(Lident"Js", "Undefined"), "empty");loc} @@ -71034,20 +71037,16 @@ let handle_external loc x = let typeof = Exp.ident {loc ; txt = Ldot(Lident "Js","typeof")} in - Exp.apply ~loc undefined_typeof [ - Ext_string.empty, + Ast_compatible.app1 ~loc undefined_typeof ( Exp.ifthenelse ~loc - (Exp.apply ~loc - (Exp.ident ~loc {loc ; txt = Ldot (Lident "Pervasives", "=")} ) - [ - Ext_string.empty, - (Exp.apply ~loc typeof [Ext_string.empty,raw_exp]); - Ext_string.empty, - Exp.constant ~loc (Const_string ("undefined",None)) - ]) - (empty) + (Ast_compatible.app2 ~loc + (Exp.ident ~loc {loc ; txt = Ldot (Lident "Pervasives", "=")} ) + (Ast_compatible.app1 ~loc typeof raw_exp) + (Exp.constant ~loc (Const_string ("undefined",None))) + ) + empty (Some raw_exp) - ] + ) let handle_raw_structure loc payload = @@ -71308,7 +71307,7 @@ let ocaml_obj_as_js_object loc ~pval_prim:(External_process.pval_prim_of_labels labels) (fun e -> - Exp.apply ~loc e + Ast_compatible.apply_labels ~loc e (Ext_list.map2 (fun l expr -> l.Asttypes.txt, expr) labels exprs) ) ~pval_type @@ -71358,10 +71357,10 @@ let convertBsErrorFunction loc (self : Bs_ast_mapper.mapper) attrs (cases : Par Ast_compatible.fun_ ~attrs ~loc ( Pat.var ~loc {txt; loc }) (Exp.ifthenelse ~loc - (Exp.apply ~loc (Exp.ident ~loc {txt = isCamlExceptionOrOpenVariant ; loc}) ["", txt_expr ]) + (Ast_compatible.app1 ~loc (Exp.ident ~loc {txt = isCamlExceptionOrOpenVariant ; loc}) txt_expr ) (Exp.match_ ~loc (Exp.constraint_ ~loc - (Exp.apply ~loc (Exp.ident ~loc {txt = obj_magic; loc}) ["", txt_expr]) + (Ast_compatible.app1 ~loc (Exp.ident ~loc {txt = obj_magic; loc}) txt_expr) (Ast_literal.type_exn ~loc ()) ) (Ext_list.map_append (fun (x :Parsetree.case ) -> @@ -71608,17 +71607,16 @@ let handle_extension record_as_js_object e (self : Bs_ast_mapper.mapper) begin match pat.ppat_desc, body.pexp_desc with | Ppat_construct ({txt = Lident "()"}, None), Pexp_constant(Const_string(block,_)) -> - Exp.apply ~loc - (Exp.ident ~loc {txt = Ldot (Ast_literal.Lid.js_unsafe, Literals.raw_function);loc}) - [ "", - Exp.constant ~loc (Const_string (toString {args = [] ; block }, None)) - ] + Ast_compatible.app1 ~loc + (Exp.ident ~loc {txt = Ldot (Ast_literal.Lid.js_unsafe, Literals.raw_function);loc}) + (Exp.constant ~loc (Const_string (toString {args = [] ; block }, None))) + | Ppat_var ({txt;}), _ -> let acc, block = unroll_function_aux [txt] body in - (Exp.apply ~loc + (Ast_compatible.app1 ~loc (Exp.ident ~loc {txt = Ldot (Ast_literal.Lid.js_unsafe, Literals.raw_function);loc}) - [ "", Exp.constant ~loc (Const_string (toString {args = List.rev acc ; block },None))] + (Exp.constant ~loc (Const_string (toString {args = List.rev acc ; block },None))) ) | _ -> Location.raise_errorf ~loc "bs.raw can only be applied to a string or a special function form " end @@ -71655,23 +71653,23 @@ let handle_extension record_as_js_object e (self : Bs_ast_mapper.mapper) file lnum in let e = self.expr self e in Exp.sequence ~loc - (Exp.apply ~loc + (Ast_compatible.app1 ~loc (Exp.ident ~loc {loc; txt = Ldot (Ldot (Lident "Js", "Console"), "timeStart") }) - ["", Exp.constant ~loc (Const_string (locString,None))] + (Exp.constant ~loc (Const_string (locString,None))) ) ( Exp.let_ ~loc Nonrecursive [Vb.mk ~loc (Pat.var ~loc {loc; txt = "timed"}) e ; ] (Exp.sequence ~loc - (Exp.apply ~loc + (Ast_compatible.app1 ~loc (Exp.ident ~loc {loc; txt = Ldot (Ldot (Lident "Js", "Console"), "timeEnd") }) - ["", Exp.constant ~loc (Const_string (locString,None))] + (Exp.constant ~loc (Const_string (locString,None))) ) (Exp.ident ~loc {loc; txt = Lident "timed"}) ) @@ -71697,13 +71695,10 @@ let handle_extension record_as_js_object e (self : Bs_ast_mapper.mapper) Printf.sprintf "File %S, line %d, characters %d-%d" file lnum cnum enum in let raiseWithString locString = - (Exp.apply ~loc + Ast_compatible.app1 ~loc (Exp.ident ~loc {loc; txt = - Ldot(Ldot (Lident "Js","Exn"),"raiseError")}) - ["", - - Exp.constant (Const_string (locString,None)) - ]) + Ldot(Ldot (Lident "Js","Exn"),"raiseError")}) + (Exp.constant (Const_string (locString,None))) in (match e.pexp_desc with | Pexp_construct({txt = Lident "false"},None) -> @@ -71728,9 +71723,9 @@ let handle_extension record_as_js_object e (self : Bs_ast_mapper.mapper) Exp.assert_ ~loc e else Exp.ifthenelse ~loc - (Exp.apply ~loc + (Ast_compatible.app1 ~loc (Exp.ident {loc ; txt = Ldot(Lident "Pervasives","not")}) - ["", e] + e ) (raiseWithString locString) None @@ -111026,15 +111021,14 @@ module U = Ast_derive_util type tdcls = Parsetree.type_declaration list let js_field (o : Parsetree.expression) m = - Exp.apply + Ast_compatible.app2 (Exp.ident {txt = Lident "##"; loc = o.pexp_loc}) - [ - "",o; - "", Exp.ident m - ] -let const_int i = Exp.constant (Const_int i) -let const_string s = Exp.constant (Const_string (s,None)) + o + (Exp.ident m) +(* let Ast_compatible.const_exp_int i = Exp.constant (Const_int i) *) +let const_string s = Exp.constant (Const_string (s,None)) + let handle_config (config : Parsetree.expression option) = match config with @@ -111064,7 +111058,7 @@ let noloc = Location.none let eraseTypeLit = "jsMapperEraseType" let eraseTypeExp = Exp.ident {loc = noloc; txt = Lident eraseTypeLit} let eraseType x = - Exp.apply eraseTypeExp ["", x] + Ast_compatible.app1 eraseTypeExp x let eraseTypeStr = let any = Typ.any () in Str.primitive @@ -111072,10 +111066,9 @@ let eraseTypeStr = (Typ.arrow "" any any) ) -let app2 f arg1 arg2 = - Exp.apply f ["",arg1; "", arg2] -let app3 f arg1 arg2 arg3 = - Exp.apply f ["", arg1; "", arg2; "", arg3] +let app2 = Ast_compatible.app2 +let app3 = Ast_compatible.app3 + let (<=~) a b = app2 (Exp.ident {loc = noloc; txt = Lident "<="}) a b let (-~) a b = @@ -111255,7 +111248,7 @@ let init () = begin match attr with | NullString result -> let result_len = List.length result in - let exp_len = const_int result_len in + let exp_len = Ast_compatible.const_exp_int result_len in let v = [ eraseTypeStr; Ast_comb.single_non_rec_value @@ -111264,7 +111257,7 @@ let init () = (List.map (fun (i,str) -> Exp.tuple [ - const_int i; + Ast_compatible.const_exp_int i; const_string str ] ) (List.sort (fun (a,_) (b,_) -> compare (a:int) b) result))); @@ -111316,12 +111309,13 @@ let init () = match xs with | `New xs -> let constantArrayExp = Exp.ident {loc; txt = Lident constantArray} in - let exp_len = const_int (List.length ctors) in + let exp_len = Ast_compatible.const_exp_int (List.length ctors) in let v = [ eraseTypeStr; Ast_comb.single_non_rec_value {loc; txt = constantArray} - (Exp.array (List.map (fun i -> const_int i) xs )) + (Ast_compatible.const_exp_int_list_as_array xs) + (* (Exp.array (List.map (fun i -> Ast_compatible.const_exp_int i) xs )) *) ; toJsBody ( @@ -111360,12 +111354,12 @@ let init () = [ eraseTypeStr; toJsBody ( coerceResultToNewType - (eraseType exp_param +~ const_int offset) + (eraseType exp_param +~ Ast_compatible.const_exp_int offset) ) ; let len = List.length ctors in - let range_low = const_int (offset + 0) in - let range_upper = const_int (offset + len - 1) in + let range_low = Ast_compatible.const_exp_int (offset + 0) in + let range_upper = Ast_compatible.const_exp_int (offset + len - 1) in Ast_comb.single_non_rec_value {loc ; txt = fromJs} @@ -111382,7 +111376,7 @@ let init () = (assertExp ((exp_param <=~ range_upper) &&~ (range_low <=~ exp_param)) ) - (exp_param -~ const_int offset)) + (exp_param -~ Ast_compatible.const_exp_int offset)) ) +> core_type @@ -111390,7 +111384,7 @@ let init () = (Exp.ifthenelse ( (exp_param <=~ range_upper) &&~ (range_low <=~ exp_param)) (Exp.construct {loc; txt = Lident "Some"} - ( Some (exp_param -~ const_int offset))) + ( Some (exp_param -~ Ast_compatible.const_exp_int offset))) (Some (Exp.construct {loc; txt = Lident "None"} None))) +> Ast_core_type.lift_option_type core_type @@ -111992,9 +111986,9 @@ let handle_exp_apply -> {fn with pexp_desc = Pexp_construct(ctor, Some bounded_obj_arg)} | _ -> - Exp.apply ~loc:fn.pexp_loc + Ast_compatible.app1 ~loc:fn.pexp_loc (self.expr self fn ) - ["", bounded_obj_arg] + bounded_obj_arg ) xs ); pexp_attributes = tuple_attrs; pexp_loc = fn.pexp_loc; @@ -112003,7 +111997,7 @@ let handle_exp_apply begin match try_dispatch_by_tuple with | Some x -> x | None -> - Exp.apply ~loc (self.expr self fn) ["", new_obj_arg] + Ast_compatible.app1 ~loc (self.expr self fn) new_obj_arg end end | _ -> @@ -113688,9 +113682,9 @@ let rec unsafe_mapper : Bs_ast_mapper.mapper = -> if !Js_config.debug then let open Ast_helper in - Str.eval ~loc (Exp.apply ~loc + Str.eval ~loc (Ast_compatible.app1 ~loc (Exp.ident ~loc {txt = Ldot(Ldot (Lident"Belt","Debug"), "setupChromeDebugger");loc} ) - ["", Ast_literal.val_unit ~loc ()] + (Ast_literal.val_unit ~loc ()) ) else Ast_structure.dummy_item loc | Pstr_type (_ :: _ as tdcls ) (* [ {ptype_attributes} as tdcl ] *)->