浏览代码

change type of TTry, TSwitch and TIf to Void in `promote_complex_rhs`

Simon Krajewski 10 年之前
父节点
当前提交
5b9966f389
共有 1 个文件被更改,包括 8 次插入8 次删除
  1. 8 8
      filters.ml

+ 8 - 8
filters.ml

@@ -45,7 +45,7 @@ let rec blockify_ast e =
 	x = { exprs; value; } -> { exprs; x = value; }
 	x = { exprs; value; } -> { exprs; x = value; }
 	var x = { exprs; value; } -> { var x; exprs; x = value; }
 	var x = { exprs; value; } -> { var x; exprs; x = value; }
 *)
 *)
-let promote_complex_rhs ctx e =
+let promote_complex_rhs com e =
 	let rec is_complex e = match e.eexpr with
 	let rec is_complex e = match e.eexpr with
 		| TBlock _ | TSwitch _ | TIf _ | TTry _ | TCast(_,Some _) -> true
 		| TBlock _ | TSwitch _ | TIf _ | TTry _ | TCast(_,Some _) -> true
 		| TBinop(_,e1,e2) -> is_complex e1 || is_complex e2
 		| TBinop(_,e1,e2) -> is_complex e1 || is_complex e2
@@ -59,12 +59,12 @@ let promote_complex_rhs ctx e =
 				| [] -> e
 				| [] -> e
 			end
 			end
 		| TSwitch(es,cases,edef) ->
 		| TSwitch(es,cases,edef) ->
-			{e with eexpr = TSwitch(es,List.map (fun (el,e) -> List.map find el,loop f e) cases,match edef with None -> None | Some e -> Some (loop f e))}
+			{e with eexpr = TSwitch(es,List.map (fun (el,e) -> List.map find el,loop f e) cases,match edef with None -> None | Some e -> Some (loop f e)); etype = com.basic.tvoid}
 		| TIf(eif,ethen,eelse) ->
 		| TIf(eif,ethen,eelse) ->
-			{e with eexpr = TIf(find eif, loop f ethen, match eelse with None -> None | Some e -> Some (loop f e))}
+			{e with eexpr = TIf(find eif, loop f ethen, match eelse with None -> None | Some e -> Some (loop f e)); etype = com.basic.tvoid}
 		| TTry(e1,el) ->
 		| TTry(e1,el) ->
-			{e with eexpr = TTry(loop f e1, List.map (fun (el,e) -> el,loop f e) el)}
-		| TParenthesis e1 when not (Common.defined ctx Define.As3) ->
+			{e with eexpr = TTry(loop f e1, List.map (fun (el,e) -> el,loop f e) el); etype = com.basic.tvoid}
+		| TParenthesis e1 when not (Common.defined com Define.As3) ->
 			{e with eexpr = TParenthesis(loop f e1)}
 			{e with eexpr = TParenthesis(loop f e1)}
 		| TMeta(m,e1) ->
 		| TMeta(m,e1) ->
 			{ e with eexpr = TMeta(m,loop f e1)}
 			{ e with eexpr = TMeta(m,loop f e1)}
@@ -82,11 +82,11 @@ let promote_complex_rhs ctx e =
 				begin match eo with
 				begin match eo with
 					| Some e when is_complex e ->
 					| Some e when is_complex e ->
 						r := (loop (fun e -> mk (TBinop(OpAssign,mk (TLocal v) v.v_type e.epos,e)) v.v_type e.epos) e)
 						r := (loop (fun e -> mk (TBinop(OpAssign,mk (TLocal v) v.v_type e.epos,e)) v.v_type e.epos) e)
-							:: ((mk (TVar (v,None)) ctx.basic.tvoid e.epos))
+							:: ((mk (TVar (v,None)) com.basic.tvoid e.epos))
 							:: !r
 							:: !r
 					| Some e ->
 					| Some e ->
-						r := (mk (TVar (v,Some (find e))) ctx.basic.tvoid e.epos) :: !r
-					| None -> r := (mk (TVar (v,None)) ctx.basic.tvoid e.epos) :: !r
+						r := (mk (TVar (v,Some (find e))) com.basic.tvoid e.epos) :: !r
+					| None -> r := (mk (TVar (v,None)) com.basic.tvoid e.epos) :: !r
 				end
 				end
 			| TReturn (Some e1) when (match follow e1.etype with TAbstract({a_path=[],"Void"},_) -> true | _ -> false) ->
 			| TReturn (Some e1) when (match follow e1.etype with TAbstract({a_path=[],"Void"},_) -> true | _ -> false) ->
 				r := ({e with eexpr = TReturn None}) :: e1 :: !r
 				r := ({e with eexpr = TReturn None}) :: e1 :: !r