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.ocaml_typing/cmi_format.ml.html
Source file cmi_format.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 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90
(**************************************************************************) (* *) (* OCaml *) (* *) (* Fabrice Le Fessant, INRIA Saclay *) (* *) (* Copyright 2012 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 Misc type pers_flags = | Rectypes | Alerts of alerts | Opaque (* these type abbreviations are not exported; they are used to provide consistency across input_value and output_value usage. *) type signature = Types.signature_item list type flags = pers_flags list type header = modname * signature type cmi_infos = { cmi_name : modname; cmi_sign : signature; cmi_crcs : crcs; cmi_flags : flags; } let input_cmi ic = let (name, sign) = (input_value ic : header) in let crcs = (input_value ic : crcs) in let flags = (input_value ic : flags) in { cmi_name = name; cmi_sign = sign; cmi_crcs = crcs; cmi_flags = flags; } let read_cmi filename = let open Magic_numbers.Cmi in let ic = open_in_bin filename in try let buffer = really_input_string ic (String.length Config.cmi_magic_number) in if buffer <> Config.cmi_magic_number then begin close_in ic; let pre_len = String.length Config.cmi_magic_number - 3 in if String.sub buffer 0 pre_len = String.sub Config.cmi_magic_number 0 pre_len then begin raise (Error (Wrong_version_interface (filename, buffer))) end else begin raise(Error(Not_an_interface filename)) end end; let cmi = input_cmi ic in close_in ic; cmi with End_of_file | Failure _ -> close_in ic; raise(Error(Corrupted_interface(filename))) | Error e -> close_in ic; raise (Error e) let output_cmi filename oc cmi = ignore (filename, oc, cmi); "" (* (* beware: the provided signature must have been substituted for saving *) output_string oc Config.cmi_magic_number; Marshal.(to_channel oc ((cmi.cmi_name, cmi.cmi_sign) : header) [Compression]); flush oc; let crc = Digest.file filename in let crcs = (cmi.cmi_name, Some crc) :: cmi.cmi_crcs in output_value oc (crcs : crcs); output_value oc (cmi.cmi_flags : flags); crc *) (* Error report moved to src/ocaml/typing/magic_numbers.ml *)
sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>