···112112113113114114let plant_forest (trees : raw_forest) : forest =
115115+ let add_tree addr tree trees =
116116+ if M.mem addr trees then
117117+ begin
118118+ Reporter.emitf Duplicate_tree "skipping duplicate tree at address `%s`" addr;
119119+ trees
120120+ end
121121+ else
122122+ M.add addr tree trees
123123+ in
124124+115125 let unexpanded_trees =
116126 let alg acc (tree : Code.tree) =
117127 match tree.addr with
118118- | Some addr ->
119119- begin
120120- if M.mem addr acc then
121121- Reporter.fatalf Duplicate_tree "duplicate tree at address `%s`" addr;
122122- M.add addr tree acc
123123- end
128128+ | Some addr -> add_tree addr tree acc
124129 | None -> acc
125130 in
126131 Seq.fold_left alg M.empty trees
···138143 let add trees tree =
139144 match Sem.(tree.fm.addr) with
140145 | None -> trees
141141- | Some addr -> M.add addr tree trees
146146+ | Some addr -> add_tree addr tree trees
142147 in
143148 units, List.fold_left add trees @@ tree :: emitted_trees
144149 in