ocaml
0
fork

Configure Feed

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

Imports: replace Analysis_env effect with parameter passing

+18 -26
+18 -26
lib/compiler/Imports.ml
··· 35 35 Reporter.fatal Internal_error 36 36 ~extra_remarks:[Asai.Diagnostic.loctextf "%a" Eio.Exn.pp exn] 37 37 38 - module Analysis_env = Algaeff.Reader.Make (struct 39 - type t = analysis_env 40 - end) 41 - 42 38 let resolve_uri_to_code (forest : State.t) (uri : URI.t) : Tree.code option = 43 39 let dirs = Eio_util.paths_of_dirs ~env:forest.env forest.config.trees in 44 40 match Forest.find_opt forest.index uri with ··· 57 53 Result.to_option @@ Parse.parse_document ~config:forest.config doc 58 54 | None -> Reporter.fatal (Resource_not_found uri))) 59 55 60 - let rec analyse_tree (tree : Tree.code) = 61 - let env = Analysis_env.read () in 56 + let rec analyse_tree ~env (tree : Tree.code) = 62 57 let@ root = Option.iter @~ identity_to_uri tree.identity in 63 58 let code = tree.nodes in 64 59 Forest_graph.add_vertex env.graph (T.Uri_vertex root); 65 - analyse_code ~root code 60 + analyse_code ~env ~root code 66 61 67 - and analyse_code ~root (code : Code.t) = List.iter (analyse_node ~root) code 62 + and analyse_code ~env ~root (code : Code.t) = 63 + List.iter (analyse_node ~env ~root) code 68 64 69 - and analyse_node ~root (node : Code.node Asai.Range.located) = 70 - let env = Analysis_env.read () in 65 + and analyse_node ~env ~root (node : Code.node Asai.Range.located) = 71 66 let config = env.forest.config in 72 67 match node.value with 73 68 | Import (_, dep) -> ··· 81 76 match resolve_uri_to_code env.forest dep_uri with 82 77 | None -> Reporter.fatal ?loc:node.loc (Resource_not_found dep_uri) 83 78 | Some code -> 84 - analyse_tree code; 79 + analyse_tree ~env code; 85 80 assert false 86 81 end 87 82 | Subtree (addr, nodes) -> ··· 90 85 | None -> Anonymous 91 86 | Some string -> URI (URI_scheme.named_uri ~base:config.url string) 92 87 in 93 - analyse_tree 88 + analyse_tree ~env 94 89 {identity; origin = Subtree {parent = URI root}; nodes; timestamp = None} 95 90 | Scope code 96 91 | Namespace (_, code) ··· 99 94 | Let (_, _, code) 100 95 | Fun (_, code) 101 96 | Def (_, _, code) -> 102 - analyse_code ~root code 97 + analyse_code ~env ~root code 103 98 | Object {methods; _} | Patch {methods; _} -> 104 99 let@ _, code = List.iter @~ methods in 105 - analyse_code ~root code 100 + analyse_code ~env ~root code 106 101 | Dx_prop (rel, args) -> 107 - analyse_code ~root rel; 108 - List.iter (analyse_code ~root) args 102 + analyse_code ~env ~root rel; 103 + List.iter (analyse_code ~env ~root) args 109 104 | Dx_sequent (concl, premises) -> 110 - analyse_code ~root concl; 111 - List.iter (analyse_code ~root) premises 105 + analyse_code ~env ~root concl; 106 + List.iter (analyse_code ~env ~root) premises 112 107 | Dx_query (_, positives, negatives) -> 113 - List.iter (analyse_code ~root) positives; 114 - List.iter (analyse_code ~root) negatives 108 + List.iter (analyse_code ~env ~root) positives; 109 + List.iter (analyse_code ~env ~root) negatives 115 110 | Text _ | Hash_ident _ 116 111 | Xml_ident (_, _) 117 112 | Verbatim _ | Ident _ | Open _ ··· 126 121 127 122 let dependencies tree forest = 128 123 let env = {forest; follow = true; graph = Forest_graph.create ()} in 129 - let@ () = Analysis_env.run ~env in 130 - analyse_tree tree; 124 + analyse_tree ~env tree; 131 125 env.graph 132 126 133 127 let fixup (tree : Tree.code) (forest : State.t) = ··· 146 140 in 147 141 let new_deps = 148 142 let env = {forest; follow = false; graph} in 149 - let@ () = Analysis_env.run ~env in 150 143 begin 151 - analyse_tree tree; 144 + analyse_tree ~env tree; 152 145 Vertex_set.of_list 153 146 @@ Forest_graph.immediate_dependencies env.graph this_vertex 154 147 end ··· 182 175 183 176 let build forest = 184 177 let env = {forest; follow = false; graph = Forest_graph.create ()} in 185 - let@ () = Analysis_env.run ~env in 186 - env.forest |> State.get_all_code |> Seq.iter analyse_tree; 178 + env.forest |> State.get_all_code |> Seq.iter (analyse_tree ~env); 187 179 env.graph