src/Tools/Code/code_namespace.ML
changeset 43326 47cf4bc789aa
parent 40705 03f1266a066e
child 44338 700008399ee5
equal deleted inserted replaced
43325:4384f4ae0574 43326:47cf4bc789aa
    44 
    44 
    45 fun build_module_namespace { module_alias, module_prefix, reserved } program =
    45 fun build_module_namespace { module_alias, module_prefix, reserved } program =
    46   let
    46   let
    47     fun alias_fragments name = case module_alias name
    47     fun alias_fragments name = case module_alias name
    48      of SOME name' => Long_Name.explode name'
    48      of SOME name' => Long_Name.explode name'
    49       | NONE => map (fn name => fst (yield_singleton Name.variants name reserved))
    49       | NONE => map (fn name => fst (Name.variant name reserved)) (Long_Name.explode name);
    50           (Long_Name.explode name);
       
    51     val module_names = Graph.fold (insert (op =) o fst o dest_name o fst) program [];
    50     val module_names = Graph.fold (insert (op =) o fst o dest_name o fst) program [];
    52   in
    51   in
    53     fold (fn name => Symtab.update (name, Long_Name.explode module_prefix @ alias_fragments name))
    52     fold (fn name => Symtab.update (name, Long_Name.explode module_prefix @ alias_fragments name))
    54       module_names Symtab.empty
    53       module_names Symtab.empty
    55   end;
    54   end;