|
@@ -2766,7 +2766,7 @@ struct
|
|
|
| TArray ({ eexpr = TLocal ({ v_extra = Some( _ :: _, _) } as v) }, _) -> (* captured transformation *)
|
|
|
(match tparam_anon_acc with
|
|
|
| None -> Type.map_expr run e
|
|
|
- | Some tparam_anon_acc -> tparam_anon_acc v e)
|
|
|
+ | Some tparam_anon_acc -> tparam_anon_acc v e)
|
|
|
| TCall( { eexpr = TField(_, FEnum _) }, _ ) ->
|
|
|
Type.map_expr run e
|
|
|
(* if a TClosure is being call immediately, there's no need to convert it to a TClosure *)
|
|
@@ -2878,7 +2878,8 @@ struct
|
|
|
check_params v.v_type);
|
|
|
Hashtbl.add ignored v.v_id v;
|
|
|
ignore(Option.map traverse opt)
|
|
|
- | TLocal { v_extra = Some(_ :: _,_) } -> ()
|
|
|
+ | TLocal { v_extra = Some( (_ :: _ as tparams),_) } ->
|
|
|
+ ()
|
|
|
| TLocal(( { v_capture = true } ) as v) ->
|
|
|
(if not (Hashtbl.mem ignored v.v_id || Hashtbl.mem ret v.v_id) then begin check_params v.v_type; Hashtbl.replace ret v.v_id expr end);
|
|
|
| _ -> Type.iter traverse expr
|
|
@@ -3074,6 +3075,8 @@ struct
|
|
|
let original = apply_params types monos vt in
|
|
|
unify et original;
|
|
|
|
|
|
+ let monos = List.map (fun t -> apply_params types (List.map (fun _ -> t_dynamic) types) t) monos in
|
|
|
+
|
|
|
let same_cl t1 t2 = match follow t1, follow t2 with
|
|
|
| TInst(c,_), TInst(c2,_) -> c == c2
|
|
|
| _ -> false
|