فهرست منبع

fix macro `&&` handling when lhs is `null` (closes #4772)

Simon Krajewski 9 سال پیش
والد
کامیت
866875a7b9
2فایلهای تغییر یافته به همراه14 افزوده شده و 1 حذف شده
  1. 1 1
      interp.ml
  2. 13 0
      tests/unit/src/unit/issues/Issue4772.hx

+ 1 - 1
interp.ml

@@ -3428,7 +3428,7 @@ and eval_op ctx op e1 e2 p =
 		let e2 = eval ctx e2 in
 		(fun() ->
 			match e1() with
-			| VBool false as v -> v
+			| VBool false | VNull -> VBool false
 			| _ -> e2())
 	| "||" ->
 		let e1 = eval ctx e1 in

+ 13 - 0
tests/unit/src/unit/issues/Issue4772.hx

@@ -0,0 +1,13 @@
+package unit.issues;
+
+class Issue4772 extends Test {
+	macro static function testMacro(){
+		var a : Null<Bool> = null;
+		var b = a && true;
+		return macro $v{b};
+	}
+
+	function test() {
+		f(testMacro());
+	}
+}