Explorar el Código

[java] fix boolean args in Type.createInstance() (fixes #9025)

Aleksandr Kuzmenko hace 5 años
padre
commit
787a9caf47
Se han modificado 2 ficheros con 18 adiciones y 0 borrados
  1. 2 0
      std/java/_std/Type.hx
  2. 16 0
      tests/unit/src/unit/issues/Issue9025.hx

+ 2 - 0
std/java/_std/Type.hx

@@ -142,6 +142,8 @@ enum ValueType {
 
 				if (arg == null || isDynamic || (argType != null && expectedType.isAssignableFrom(java.Lib.toNativeType(argType)))) {
 					callArguments[argNum] = arg;
+				} else if(expectedType.getName() == 'boolean' && (cast argType:java.lang.Class<Dynamic>).getName() == 'java.lang.Boolean') {
+					callArguments[argNum] = (cast arg : java.lang.Boolean).booleanValue();
 				} else if (Std.isOfType(arg, java.lang.Number)) {
 					var name = expectedType.getName();
 					switch (name) {

+ 16 - 0
tests/unit/src/unit/issues/Issue9025.hx

@@ -0,0 +1,16 @@
+package unit.issues;
+
+class Issue9025 extends unit.Test {
+	function test() {
+		var a:A = Type.createInstance(A, [true]);
+		t(a.field);
+	}
+}
+
+@:keep
+private class A {
+	public var field:Bool = false;
+	public function new(b:Bool) {
+		field = b;
+	}
+}