瀏覽代碼

[As3] generate unsafe casts as T(expr) (fixed issue #1741)

Simon Krajewski 12 年之前
父節點
當前提交
21670447b1
共有 1 個文件被更改,包括 11 次插入2 次删除
  1. 11 2
      genas3.ml

+ 11 - 2
genas3.ml

@@ -866,8 +866,17 @@ and gen_value ctx e =
 	| TUnop _
 	| TFunction _ ->
 		gen_expr ctx e
-	| TCast (e1,t) ->
-		gen_value ctx (match t with None -> e1 | Some t -> Codegen.default_cast ctx.inf.com e1 t e.etype e.epos)
+	| TCast (e1,None) ->
+		let s = type_str ctx e.etype e1.epos in
+		if s = "*" then
+			gen_value ctx e1
+		else begin
+			print ctx "%s(" s;
+			gen_value ctx e1;
+			spr ctx ")";
+		end
+	| TCast (e1,Some t) ->
+		gen_value ctx (Codegen.default_cast ctx.inf.com e1 t e.etype e.epos)
 	| TReturn _
 	| TBreak
 	| TContinue ->