Kaynağa Gözat

more cases where allow_inline keep the current code "as-it"

Nicolas Cannasse 3 yıl önce
ebeveyn
işleme
dad3c0b1e3
1 değiştirilmiş dosya ile 9 ekleme ve 3 silme
  1. 9 3
      src/typing/calls.ml

+ 9 - 3
src/typing/calls.ml

@@ -215,7 +215,7 @@ let rec acc_get ctx g p =
 			else
 				typing_error "Invalid macro access" p
 		| _ ->
-			if fa.fa_inline then
+			if fa.fa_inline && ctx.allow_inline then
 				inline_read fa
 			else
 				FieldAccess.get_field_expr fa FRead
@@ -394,8 +394,14 @@ let array_access ctx e1 e2 mode p =
 				AKAccess (a,pl,c,e1,e2)
 			| _ ->
 				has_abstract_array_access := true;
-				let e = mk_array_get_call ctx (AbstractCast.find_array_access ctx a pl e2 None p) c e1 p in
-				AKExpr e
+				let f = AbstractCast.find_array_access ctx a pl e2 None p in
+				if not ctx.allow_inline then
+					let _,_,r,_,_ = f in
+					AKExpr { eexpr = TArray(e1,e2); epos = p; etype = r }
+				else begin
+					let e = mk_array_get_call ctx f c e1 p in
+					AKExpr e
+				end
 			end
 		| _ -> raise Not_found)
 	with Not_found ->