package merlin-lib
Merlin's libraries
Install
Dune Dependency
Authors
Maintainers
Sources
merlin-5.5-503.tbz
sha256=67da3b34f2fea07678267309f61da4a2c6f08298de0dc59655b8d30fd8269af1
sha512=1fb3b5180d36aa82b82a319e15b743b802b6888f0dc67645baafdb4e18dfc23a7b90064ec9bc42f7424061cf8cde7f8839178d8a8537bf4596759f3ff4891873
doc/src/merlin-lib.ocaml_typing/typedecl_immediacy.ml.html
Source file typedecl_immediacy.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
(**************************************************************************) (* *) (* OCaml *) (* *) (* Gabriel Scherer, projet Parsifal, INRIA Saclay *) (* Rodolphe Lepigre, projet Deducteam, INRIA Saclay *) (* *) (* Copyright 2018 Institut National de Recherche en Informatique et *) (* en Automatique. *) (* *) (* All rights reserved. This file is distributed under the terms of *) (* the GNU Lesser General Public License version 2.1, with the *) (* special exception on linking described in the file LICENSE. *) (* *) (**************************************************************************) open Types type error = Bad_immediacy_attribute of Type_immediacy.Violation.t exception Error of Location.t * error let compute_decl env tdecl = match (tdecl.type_kind, tdecl.type_manifest) with | (Type_variant ([{cd_args = Cstr_tuple [arg] | Cstr_record [{ld_type = arg; _}]; _}], Variant_unboxed) | Type_record ([{ld_type = arg; _}], Record_unboxed _)), _ -> begin match Typedecl_unboxed.get_unboxed_type_representation env arg with | None -> Type_immediacy.Unknown | Some argrepr -> Ctype.immediacy env argrepr end | (Type_variant (cstrs, _), _) -> if not (List.exists (fun c -> c.Types.cd_args <> Types.Cstr_tuple []) cstrs) then Type_immediacy.Always else Type_immediacy.Unknown | (Type_abstract _, Some(typ)) -> Ctype.immediacy env typ | (Type_abstract _, None) -> Type_immediacy.of_attributes tdecl.type_attributes | _ -> Type_immediacy.Unknown let property : (Type_immediacy.t, unit) Typedecl_properties.property = let open Typedecl_properties in let eq = (=) in let merge ~prop:_ ~new_prop = new_prop in let default _decl = Type_immediacy.Unknown in let compute env decl () = compute_decl env decl in let update_decl decl immediacy = { decl with type_immediate = immediacy } in let check _env _id decl () = let written_by_user = Type_immediacy.of_attributes decl.type_attributes in match Type_immediacy.coerce decl.type_immediate ~as_:written_by_user with | Ok () -> () | Error violation -> raise (Error (decl.type_loc, Bad_immediacy_attribute violation)) in { eq; merge; default; compute; update_decl; check; } let update_decls env decls = Typedecl_properties.compute_property_noreq property env decls
sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>