ソースを参照

[java] Treat Int/Float case as non-covariant in Java

Closes #6486
Caue Waneck 7 年 前
コミット
dc299d905e

+ 1 - 1
src/codegen/gencommon/fixOverrides.ml

@@ -101,7 +101,7 @@ let run ~explicit_fn_name ~get_vmtype gen =
 									| _, TDynamic _ -> false
 									| r1, r2 -> try
 										unify r1 r2;
-										true
+										if like_int r1 then like_int r2 else true
 									with | Unify_error _ -> false
 								in
 								(* we only have to worry about non-covariant issues *)

+ 23 - 0
tests/unit/src/unit/issues/Issue6486.hx

@@ -0,0 +1,23 @@
+package unit.issues;
+
+class Issue6486 extends Test
+{
+  function test() {
+    var p = new Point();
+    eq(p.getY(), 10);
+    var iy:IY = p;
+    eq(p.getY(), 10);
+  }
+}
+
+@:keep private interface IY {
+	function getY():Float;
+}
+
+@:keep private class Point implements IY {
+	public function new() {}
+
+	public function getY():Int {
+		return 10;
+	}
+}