-
Notifications
You must be signed in to change notification settings - Fork 1
/
dumpsource.ml
27 lines (24 loc) · 998 Bytes
/
dumpsource.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
open Spotlib.Spot
let dump_source_of_cmt_cmti ppf x = match Cmt_format.read x with
| _, Some cmt_infos ->
Cmt.set_load_path cmt_infos;
(* CR jfuruse: bug. We should use sg from cmi instead of cmt/cmti,
since the sg from cmt/cmti requires module scraping!!!
*)
begin match cmt_infos.cmt_annots with
| Implementation s ->
Pprintast.structure ppf (Untypeast.untype_structure s)
| Interface s ->
Pprintast.signature ppf (Untypeast.untype_signature s)
| Packed (_, xs) ->
Format.fprintf ppf "@[<2>%s: packed module of@ [ @[%a@] ]@]"
x
Format.(list ";@ " string) xs
| _ -> failwithf "Error: %s: is not a complete structure or signature" x
end
| _ -> failwithf "Error: %s: No cmt_infos" x
let source = ref None
let dump_it () = match !source with
| None -> !!% "Error: Dumpsource: no source specified@."
| Some f ->
!!% "Source:@. @[%a@]@." dump_source_of_cmt_cmti f