ocaml
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

fix import graph analysis for inline subtrees

+9 -4
+9 -4
lib/frontend/Analysis.ml
··· 8 8 9 9 let build_import_graph (trees : Code.tree Seq.t) = 10 10 let import_graph = Gph.create () in 11 - begin 12 - trees |> Seq.iter @@ fun (tree : Code.tree) -> 11 + 12 + let rec analyse_tree roots (tree : Code.tree) = 13 + let roots = Option.fold ~none:roots ~some:(fun x -> x :: roots) tree.addr in 13 14 tree.addr |> Option.iter @@ Gph.add_vertex import_graph; 14 15 tree.code |> List.iter @@ fun node -> 15 16 match Asai.Range.(node.value) with 16 17 | Code.Import (_, dep) -> 17 - tree.addr |> Option.iter @@ Gph.add_edge import_graph dep 18 + roots |> List.iter @@ Gph.add_edge import_graph dep 19 + | Code.Subtree (addr, code) -> 20 + analyse_tree roots @@ Code.{tree with addr; code} 18 21 | _ -> () 19 - end; 22 + in 23 + 24 + trees |> Seq.iter (analyse_tree []); 20 25 import_graph 21 26 22 27 type analysis =