فهرست منبع

fix for resuming in fields access (close #2602)

Nicolas Cannasse 11 سال پیش
والد
کامیت
074fbefbe2
1فایلهای تغییر یافته به همراه6 افزوده شده و 2 حذف شده
  1. 6 2
      typer.ml

+ 6 - 2
typer.ml

@@ -2078,12 +2078,16 @@ and type_access ctx e p mode =
 	| EField _ ->
 	| EField _ ->
 		let fields ?(resume=false) path e =
 		let fields ?(resume=false) path e =
 			let resume = ref resume in
 			let resume = ref resume in
-			List.fold_left (fun e (f,_,p) ->
+			let force = ref false in
+			let e = List.fold_left (fun e (f,_,p) ->
 				let e = acc_get ctx (e MGet) p in
 				let e = acc_get ctx (e MGet) p in
 				let f = type_field ~resume:(!resume) ctx e f p in
 				let f = type_field ~resume:(!resume) ctx e f p in
+				force := !resume;
 				resume := false;
 				resume := false;
 				f
 				f
-			) e path
+			) e path in
+			if !force then ignore(e MGet);
+			e
 		in
 		in
 		let type_path path =
 		let type_path path =
 			let rec loop acc path =
 			let rec loop acc path =