package merlin-lib
Merlin's libraries
Install
Dune Dependency
Authors
Maintainers
Sources
merlin-5.3-502.tbz
sha256=2cea46f12397fa6e31ef0c0d4f5e11c1cfd916ee49420694005c95ebb3aa24bc
sha512=e94abb9ae38149245337db033e2c3891c7ec772168e99abf1bda0216a894c0854e7170b56fe88eba83ec98f2ebc0f5c7c723e8db14f59eeb6dd348bec12c6d62
doc/src/merlin-lib.analysis/typedtree_utils.ml.html
Source file typedtree_utils.ml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
open Std let extract_toplevel_identifier item = match item.Typedtree.sig_desc with | Typedtree.Tsig_value { val_id; _ } -> [ val_id ] | Typedtree.Tsig_modsubst { ms_id; _ } -> [ ms_id ] | Typedtree.Tsig_modtype { mtd_id; _ } | Typedtree.Tsig_modtypesubst { mtd_id; _ } -> [ mtd_id ] | Typedtree.Tsig_module { md_id; _ } -> Option.to_list md_id | Typedtree.Tsig_recmodule mods -> List.filter_map ~f:(fun Typedtree.{ md_id; _ } -> md_id) mods | Typedtree.Tsig_class cls -> List.map ~f:(fun Typedtree.{ ci_id_class; _ } -> ci_id_class) cls | Typedtree.Tsig_class_type cls -> List.map ~f:(fun Typedtree.{ ci_id_class_type; _ } -> ci_id_class_type) cls | Typedtree.Tsig_type _ | Typedtree.Tsig_typesubst _ | Typedtree.Tsig_typext _ | Typedtree.Tsig_exception _ | Typedtree.Tsig_open _ | Typedtree.Tsig_include _ | Typedtree.Tsig_attribute _ -> [] let let_bound_vars bindings = List.filter_map ~f:(fun value_binding -> match value_binding.Typedtree.vb_pat.pat_desc with | Tpat_var (id, loc, _) -> Some (id, loc) | Typedtree.Tpat_any | Typedtree.Tpat_alias (_, _, _, _) | Typedtree.Tpat_constant _ | Typedtree.Tpat_tuple _ | Typedtree.Tpat_construct (_, _, _, _) | Typedtree.Tpat_variant (_, _, _) | Typedtree.Tpat_record (_, _) | Typedtree.Tpat_array _ | Typedtree.Tpat_lazy _ | Typedtree.Tpat_or (_, _, _) -> None) bindings let location_of_declaration ~uid = let of_option name = match name.Location.txt with | Some txt -> Some { name with txt } | None -> None in let of_value_binding vb = let bound_idents = Typedtree.let_bound_idents_full [ vb ] in ListLabels.find_map ~f:(fun (_, loc, _, uid') -> if uid = uid' then Some loc else None) bound_idents in function | Typedtree.Value vd -> Some vd.val_name | Value_binding vb -> of_value_binding vb | Type td -> Some td.typ_name | Constructor cd -> Some cd.cd_name | Extension_constructor ec -> Some ec.ext_name | Label ld -> Some ld.ld_name | Module md -> of_option md.md_name | Module_binding mb -> of_option mb.mb_name | Module_type mtd -> Some mtd.mtd_name | Module_substitution msd -> Some msd.ms_name | Class cd -> Some cd.ci_id_name | Class_type ctd -> Some ctd.ci_id_name let pat_var_id_and_loc = function | Typedtree.{ pat_desc = Tpat_var (id, loc, _); _ } -> Some (id, loc) | _ -> None let pat_alias_pat_id_and_loc = function | Typedtree.{ pat_desc = Tpat_alias (pat, id, loc, _); _ } -> Some (pat, id, loc) | _ -> None
sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>