src/Pure/Tools/codegen_thingol.ML
changeset 19025 596fb1eb7856
parent 18963 3adfc9dfb30a
child 19038 62c5f7591a43
equal deleted inserted replaced
19024:80eb6640f3d5 19025:596fb1eb7856
   702           |> Graph.map_node m (Module o ensure ms o dest_modl)
   702           |> Graph.map_node m (Module o ensure ms o dest_modl)
   703   in ensure modl end;
   703   in ensure modl end;
   704 
   704 
   705 fun merge_module modl12 =
   705 fun merge_module modl12 =
   706   let
   706   let
   707     fun join_module (Module m1, Module m2) =
   707     fun join_module _ (Module m1, Module m2) =
   708           (SOME o Module) (merge_module (m1, m2))
   708           Module (merge_module (m1, m2))
   709       | join_module (Def d1, Def d2) =
   709       | join_module name (Def d1, Def d2) =
   710           if eq_def (d1, d2) then (SOME o Def) d1 else NONE
   710           if eq_def (d1, d2) then Def d1 else raise Graph.DUP name
   711       | join_module _ =
   711       | join_module name _ = raise Graph.DUP name
   712           NONE
   712   in Graph.join join_module modl12 end;
   713   in Graph.join (K join_module) modl12 end;
       
   714 
   713 
   715 fun partof names modl =
   714 fun partof names modl =
   716   let
   715   let
   717     datatype pathnode = PN of (string list * (string * pathnode) list);
   716     datatype pathnode = PN of (string list * (string * pathnode) list);
   718     fun mk_ipath ([], base) (PN (defs, modls)) =
   717     fun mk_ipath ([], base) (PN (defs, modls)) =