src/Tools/Code/code_scala.ML
changeset 55145 2bb3cd36bcf7
parent 52520 4a884366b0d8
child 55147 bce3dbc11f95
equal deleted inserted replaced
55144:de95c97efab3 55145:2bb3cd36bcf7
   165                    (is_none o tyco_syntax) deresolve tycos
   165                    (is_none o tyco_syntax) deresolve tycos
   166               |> intro_tyvars vs;
   166               |> intro_tyvars vs;
   167             val simple = case eqs
   167             val simple = case eqs
   168              of [((ts, _), _)] => forall Code_Thingol.is_IVar ts
   168              of [((ts, _), _)] => forall Code_Thingol.is_IVar ts
   169               | _ => false;
   169               | _ => false;
   170             val consts = fold Code_Thingol.add_constnames
       
   171               (map (snd o fst) eqs) [];
       
   172             val vars1 = reserved
   170             val vars1 = reserved
   173               |> intro_base_names
   171               |> intro_base_names_for (is_none o const_syntax)
   174                    (is_none o const_syntax) deresolve consts
   172                    deresolve (map (snd o fst) eqs);
   175             val params = if simple
   173             val params = if simple
   176               then (map (fn IVar (SOME x) => x) o fst o fst o hd) eqs
   174               then (map (fn IVar (SOME x) => x) o fst o fst o hd) eqs
   177               else aux_params vars1 (map (fst o fst) eqs);
   175               else aux_params vars1 (map (fst o fst) eqs);
   178             val vars2 = intro_vars params vars1;
   176             val vars2 = intro_vars params vars1;
   179             val (tys', ty') = Code_Thingol.unfold_fun_n (length params) ty;
   177             val (tys', ty') = Code_Thingol.unfold_fun_n (length params) ty;