@@ -235,14 +235,24 @@ object DynamicTuple {
235
235
Tuple22 (x, self._1, self._2, self._3, self._4, self._5, self._6, self._7, self._8, self._9, self._10, self._11, self._12, self._13, self._14, self._15, self._16, self._17, self._18, self._19, self._20, self._21)
236
236
case self : Tuple22 [_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _] =>
237
237
val arr = new Array [Object ](23 )
238
- itToArray(self.asInstanceOf [Product ].productIterator, 22 , arr, 1 )
239
- arr(0 ) = x.asInstanceOf [Object ]
240
- dynamicFromIArray[Result ](arr.asInstanceOf [IArray [Object ]])
238
+ arr(0 ) = x.asInstanceOf [Object ];
239
+ arr(1 ) = self._1.asInstanceOf [Object ]; arr(2 ) = self._2.asInstanceOf [Object ];
240
+ arr(3 ) = self._3.asInstanceOf [Object ]; arr(4 ) = self._4.asInstanceOf [Object ];
241
+ arr(5 ) = self._5.asInstanceOf [Object ]; arr(6 ) = self._6.asInstanceOf [Object ];
242
+ arr(7 ) = self._7.asInstanceOf [Object ]; arr(8 ) = self._8.asInstanceOf [Object ];
243
+ arr(9 ) = self._9.asInstanceOf [Object ]; arr(10 ) = self._10.asInstanceOf [Object ];
244
+ arr(11 ) = self._11.asInstanceOf [Object ]; arr(12 ) = self._12.asInstanceOf [Object ];
245
+ arr(13 ) = self._13.asInstanceOf [Object ]; arr(14 ) = self._14.asInstanceOf [Object ];
246
+ arr(15 ) = self._15.asInstanceOf [Object ]; arr(16 ) = self._16.asInstanceOf [Object ];
247
+ arr(17 ) = self._17.asInstanceOf [Object ]; arr(18 ) = self._18.asInstanceOf [Object ];
248
+ arr(19 ) = self._19.asInstanceOf [Object ]; arr(20 ) = self._20.asInstanceOf [Object ];
249
+ arr(21 ) = self._21.asInstanceOf [Object ]; arr(22 ) = self._22.asInstanceOf [Object ];
250
+ TupleXXL .fromIArray(arr.asInstanceOf [IArray [Object ]]).asInstanceOf [Result ]
241
251
case xxl : TupleXXL =>
242
- val arr = new Array [Object ](self.size + 1 )
243
- System .arraycopy(xxl.elems, 0 , arr, 1 , self.size )
252
+ val arr = new Array [Object ](xxl.productArity + 1 )
253
+ System .arraycopy(xxl.elems, 0 , arr, 1 , xxl.productArity )
244
254
arr(0 ) = x.asInstanceOf [Object ]
245
- dynamicFromIArray[ Result ] (arr.asInstanceOf [IArray [Object ]])
255
+ TupleXXL .fromIArray (arr.asInstanceOf [IArray [Object ]]). asInstanceOf [ Result ]
246
256
}
247
257
res.asInstanceOf [Result ]
248
258
}
@@ -253,23 +263,26 @@ object DynamicTuple {
253
263
case self : Unit => return that.asInstanceOf [Result ]
254
264
case _ =>
255
265
}
266
+
256
267
(that : Any ) match {
257
268
case that : Unit => return self.asInstanceOf [Result ]
258
269
case _ =>
259
270
}
260
271
261
272
val arr = new Array [Object ](self.size + that.size)
262
273
263
- if (self.size <= 22 ) {
264
- itToArray(self.asInstanceOf [Product ].productIterator, self.size, arr, 0 )
265
- } else {
266
- System .arraycopy(self.asInstanceOf [TupleXXL ].elems, 0 , arr, 0 , self.size)
274
+ (self : Any ) match {
275
+ case xxl : TupleXXL =>
276
+ System .arraycopy(xxl.elems, 0 , arr, 0 , self.size)
277
+ case _ =>
278
+ itToArray(self.asInstanceOf [Product ].productIterator, self.size, arr, 0 )
267
279
}
268
280
269
- if (that.size <= 22 ) {
270
- itToArray(that.asInstanceOf [Product ].productIterator, that.size, arr, 0 )
271
- } else {
272
- System .arraycopy(that.asInstanceOf [TupleXXL ].elems, 0 , arr, self.size, that.size)
281
+ (that : Any ) match {
282
+ case xxl : TupleXXL =>
283
+ System .arraycopy(xxl.elems, 0 , arr, self.size, that.size)
284
+ case _ =>
285
+ itToArray(that.asInstanceOf [Product ].productIterator, that.size, arr, 0 )
273
286
}
274
287
275
288
dynamicFromIArray[Result ](arr.asInstanceOf [IArray [Object ]]).asInstanceOf [Result ]
@@ -328,8 +341,23 @@ object DynamicTuple {
328
341
case self : Tuple22 [_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _] =>
329
342
Tuple21 (self._2, self._3, self._4, self._5, self._6, self._7, self._8, self._9, self._10, self._11, self._12, self._13, self._14, self._15, self._16, self._17, self._18, self._19, self._20, self._21, self._22)
330
343
case xxl : TupleXXL =>
344
+ if (xxl.productArity == 23 ) {
345
+ val elems = xxl.elems
346
+ Tuple22 (
347
+ xxl.elems(1 ), xxl.elems(2 ), xxl.elems(3 ), xxl.elems(4 ), xxl.elems(5 ), xxl.elems(6 ), xxl.elems(7 ),
348
+ xxl.elems(8 ), xxl.elems(9 ), xxl.elems(10 ), xxl.elems(11 ), xxl.elems(12 ), xxl.elems(13 ), xxl.elems(14 ),
349
+ xxl.elems(15 ), xxl.elems(16 ), xxl.elems(17 ), xxl.elems(18 ), xxl.elems(19 ), xxl.elems(20 ),
350
+ xxl.elems(21 ), xxl.elems(22 )
351
+ ).asInstanceOf [Result ]
352
+ } else {
353
+ val arr = new Array [Object ](self.size - 1 )
354
+ System .arraycopy(xxl.elems, 1 , arr, 0 , self.size - 1 )
355
+ dynamicFromIArray[Result ](arr.asInstanceOf [IArray [Object ]])
356
+ }
357
+ case _ =>
331
358
val arr = new Array [Object ](self.size - 1 )
332
- System .arraycopy(xxl.elems, 1 , arr, 0 , self.size - 1 )
359
+ val it = self.asInstanceOf [Product ].productIterator.asInstanceOf [Iterator [Object ]]
360
+ itToArray(it, self.size - 1 , arr, 0 )
333
361
dynamicFromIArray[Result ](arr.asInstanceOf [IArray [Object ]])
334
362
}
335
363
res.asInstanceOf [Result ]
0 commit comments