فهرست منبع

don't lose v_extra when duplicating vars because we rely on it for abstract specialization

Simon Krajewski 8 سال پیش
والد
کامیت
7e4cba6fcd
2فایلهای تغییر یافته به همراه2 افزوده شده و 0 حذف شده
  1. 1 0
      src/optimization/optimizer.ml
  2. 1 0
      src/typing/type.ml

+ 1 - 0
src/optimization/optimizer.ml

@@ -261,6 +261,7 @@ let rec type_inline ctx cf f ethis params tret config p ?(self_calling_closure=f
 		with Not_found ->
 		with Not_found ->
 			let v' = alloc_var v.v_name v.v_type v.v_pos in
 			let v' = alloc_var v.v_name v.v_type v.v_pos in
 			if Meta.has Meta.Unbound v.v_meta then v'.v_meta <- [Meta.Unbound,[],p];
 			if Meta.has Meta.Unbound v.v_meta then v'.v_meta <- [Meta.Unbound,[],p];
+			v'.v_extra <- v.v_extra;
 			let i = {
 			let i = {
 				i_var = v;
 				i_var = v;
 				i_subst = v';
 				i_subst = v';

+ 1 - 0
src/typing/type.ml

@@ -2651,6 +2651,7 @@ module Texpr = struct
 		let copy_var v =
 		let copy_var v =
 			let v2 = alloc_var v.v_name v.v_type v.v_pos in
 			let v2 = alloc_var v.v_name v.v_type v.v_pos in
 			v2.v_meta <- v.v_meta;
 			v2.v_meta <- v.v_meta;
+			v2.v_extra <- v.v_extra;
 			Hashtbl.add vars v.v_id v2;
 			Hashtbl.add vars v.v_id v2;
 			v2;
 			v2;
 		in
 		in