瀏覽代碼

[analyzer] avoid if-inversion on C# because reasons (closes #4918)

Simon Krajewski 9 年之前
父節點
當前提交
34a55d3d58
共有 2 個文件被更改,包括 16 次插入1 次删除
  1. 1 1
      analyzer.ml
  2. 15 0
      tests/unit/src/unit/issues/Issue4918.hx

+ 1 - 1
analyzer.ml

@@ -2797,7 +2797,7 @@ module Cleanup = struct
 			| _,TConst (TBool false) -> {e with eexpr = TBinop(OpBoolAnd,e1,e2)}
 			| _,TBlock [] -> {e with eexpr = TIf(e1,e2,None)}
 			| _ -> match (skip e2).eexpr with
-				| TBlock [] ->
+				| TBlock [] when com.platform <> Cs ->
 					let e1' = mk (TUnop(Not,Prefix,e1)) e1.etype e1.epos in
 					let e1' = Optimizer.optimize_unop e1' Not Prefix e1 in
 					{e with eexpr = TIf(e1',e3,None)}

+ 15 - 0
tests/unit/src/unit/issues/Issue4918.hx

@@ -0,0 +1,15 @@
+package unit.issues;
+
+class Issue4918 extends Test {
+	static var p:{ ?opt:Bool } = { opt: true };
+	function test() {
+		var hasOpt = false, minParams = 0;
+		if( p.opt )
+			hasOpt = true;
+		else
+			minParams++;
+		var f = function() {
+			trace(minParams);
+		};
+	}
+}