src/Tools/code/code_target.ML
changeset 25147 85463aff6dbe
parent 25084 30ce1e078b72
child 25191 e1146aa1e3e3
equal deleted inserted replaced
25146:c2a41f31cacb 25147:85463aff6dbe
  1392     val init_names = Name.make_context reserved_syms;
  1392     val init_names = Name.make_context reserved_syms;
  1393     val name_modl = mk_modl_name_tab init_names module_prefix module_alias code;
  1393     val name_modl = mk_modl_name_tab init_names module_prefix module_alias code;
  1394     fun add_def (name, (def, deps)) =
  1394     fun add_def (name, (def, deps)) =
  1395       let
  1395       let
  1396         val (modl, base) = dest_name name;
  1396         val (modl, base) = dest_name name;
  1397         fun name_def base = Name.variants [base] #>> the_single;
  1397         val name_def = yield_singleton Name.variants;
  1398         fun add_fun upper (nsp_fun, nsp_typ) =
  1398         fun add_fun upper (nsp_fun, nsp_typ) =
  1399           let
  1399           let
  1400             val (base', nsp_fun') =
  1400             val (base', nsp_fun') =
  1401               name_def (if upper then first_upper base else base) nsp_fun
  1401               name_def (if upper then first_upper base else base) nsp_fun
  1402           in (base', (nsp_fun', nsp_typ)) end;
  1402           in (base', (nsp_fun', nsp_typ)) end;
  1488           |> map (name_modl o fst o dest_name)
  1488           |> map (name_modl o fst o dest_name)
  1489           |> distinct (op =)
  1489           |> distinct (op =)
  1490           |> remove (op =) modlname';
  1490           |> remove (op =) modlname';
  1491         val qualified =
  1491         val qualified =
  1492           imports @ map fst defs
  1492           imports @ map fst defs
       
  1493           |> distinct (op =)
  1493           |> map_filter (try deresolv)
  1494           |> map_filter (try deresolv)
  1494           |> map NameSpace.base
  1495           |> map NameSpace.base
  1495           |> has_duplicates (op =);
  1496           |> has_duplicates (op =);
  1496         val mk_import = str o (if qualified
  1497         val mk_import = str o (if qualified
  1497           then prefix "import qualified "
  1498           then prefix "import qualified "