Browse Source

support 14 arguments for Type.createInstance on all targets (closes #4232)

Simon Krajewski 9 years ago
parent
commit
b3f616341f
3 changed files with 40 additions and 0 deletions
  1. 12 0
      std/js/_std/Type.hx
  2. 12 0
      std/python/_std/Type.hx
  3. 16 0
      tests/unit/src/unit/issues/Issue4232.hx

+ 12 - 0
std/js/_std/Type.hx

@@ -96,6 +96,18 @@ enum ValueType {
 			return __new__(cl,args[0],args[1],args[2],args[3],args[4],args[5],args[6]);
 		case 8:
 			return __new__(cl,args[0],args[1],args[2],args[3],args[4],args[5],args[6],args[7]);
+		case 9:
+			return __new__(cl,args[0],args[1],args[2],args[3],args[4],args[5],args[6],args[7],args[8]);
+		case 10:
+			return __new__(cl,args[0],args[1],args[2],args[3],args[4],args[5],args[6],args[7],args[8],args[9]);
+		case 11:
+			return __new__(cl,args[0],args[1],args[2],args[3],args[4],args[5],args[6],args[7],args[8],args[9],args[10]);
+		case 12:
+			return __new__(cl,args[0],args[1],args[2],args[3],args[4],args[5],args[6],args[7],args[8],args[9],args[10],args[11]);
+		case 13:
+			return __new__(cl,args[0],args[1],args[2],args[3],args[4],args[5],args[6],args[7],args[8],args[9],args[10],args[11],args[12]);
+		case 14:
+			return __new__(cl,args[0],args[1],args[2],args[3],args[4],args[5],args[6],args[7],args[8],args[9],args[10],args[11],args[12],args[13]);
 		default:
 			throw "Too many arguments";
 		}

+ 12 - 0
std/python/_std/Type.hx

@@ -134,6 +134,18 @@ enum ValueType {
 				return Syntax.newInstance(cl,args[0],args[1],args[2],args[3],args[4],args[5],args[6]);
 			case 8:
 				return Syntax.newInstance(cl,args[0],args[1],args[2],args[3],args[4],args[5],args[6],args[7]);
+			case 9:
+				return Syntax.newInstance(cl,args[0],args[1],args[2],args[3],args[4],args[5],args[6],args[7],args[8]);
+			case 10:
+				return Syntax.newInstance(cl,args[0],args[1],args[2],args[3],args[4],args[5],args[6],args[7],args[8],args[9]);
+			case 11:
+				return Syntax.newInstance(cl,args[0],args[1],args[2],args[3],args[4],args[5],args[6],args[7],args[8],args[9],args[10]);
+			case 12:
+				return Syntax.newInstance(cl,args[0],args[1],args[2],args[3],args[4],args[5],args[6],args[7],args[8],args[9],args[10],args[11]);
+			case 13:
+				return Syntax.newInstance(cl,args[0],args[1],args[2],args[3],args[4],args[5],args[6],args[7],args[8],args[9],args[10],args[11],args[12]);
+			case 14:
+				return Syntax.newInstance(cl,args[0],args[1],args[2],args[3],args[4],args[5],args[6],args[7],args[8],args[9],args[10],args[11],args[12],args[13]);
 			default:
 				throw "Too many arguments";
 		}

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

@@ -0,0 +1,16 @@
+package unit.issues;
+
+@:keep
+class Issue4232CreateMe {
+	public var value:String;
+	public function new(a1:String, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14) {
+		value = a1 + a2 + a3 + a4 + a5 + a6 + a7 + a8 + a9 + a10 + a11 + a12 + a13 + a14;
+	}
+}
+
+class Issue4232 extends Test {
+	function test() {
+		var c:Issue4232CreateMe = Type.createInstance(Issue4232CreateMe, [for (i in 1...15) "" + i]);
+		eq("1234567891011121314", c.value);
+	}
+}