write dot graph to file

This commit is contained in:
cqc
2023-04-01 14:57:00 -05:00
parent 0fc2d223be
commit 7828890a4c
2 changed files with 14 additions and 6 deletions

View File

@ -68,7 +68,7 @@ let str_of_primary_value (exp : Typedtree.expression) =
| Texp_ifthenelse (_, _, None) -> Fmt.str "if/then"
| _ -> "????"
let dot_of_impl (s : Typedtree.structure) : unit =
let graph_of_impl (s : Typedtree.structure) : G.t =
let g = G.create () in
let iterator =
{
@ -104,9 +104,10 @@ let dot_of_impl (s : Typedtree.structure) : unit =
in
iterator.structure iterator s;
Log.info (fun m ->
m "dot_of_impl fprint_graph:@ %a" Dot.fprint_graph g)
m "g_of_impl fprint_graph:@ %a" Dot.fprint_graph g);
g
let merlin_parse str : unit =
let merlin_parse str : G.t =
let config, _command_args =
Mconfig.parse_arguments ~wd:(Sys.getcwd ())
~warning:(fun _ -> ())
@ -127,5 +128,12 @@ let merlin_parse str : unit =
(Untypeast.untype_structure t));
Log.info (fun m ->
m "Printtyped:@ %a" Ocaml_typing.Printtyped.implementation t);
dot_of_impl t
| `Interface _ -> ()
graph_of_impl t
| `Interface _ -> G.create ()
let dot_of_tast ?(fname = "x.dot") str : unit =
let oc = open_out fname in
F.pf
(Format.formatter_of_out_channel oc)
"%a" Dot.fprint_graph (merlin_parse str);
close_out oc