@@ -269,16 +269,21 @@ object DynamicTuple {
269
269
val actualN = Math .min(n, self.size)
270
270
271
271
type Result = Take [This , N ]
272
+
272
273
val arr = (self : Any ) match {
273
- case () => Array .empty[Object ]
274
274
case xxl : TupleXXL =>
275
275
xxl.elems.asInstanceOf [Array [Object ]].take(actualN)
276
276
case _ =>
277
- val arr = new Array [Object ](actualN)
278
- self.asInstanceOf [Product ].productIterator.asInstanceOf [Iterator [Object ]]
279
- .copyToArray(arr, 0 , actualN)
280
- arr
277
+ if (actualN == 0 )
278
+ Array .emptyObjectArray
279
+ else {
280
+ val arr = new Array [Object ](actualN)
281
+ self.asInstanceOf [Product ].productIterator.asInstanceOf [Iterator [Object ]]
282
+ .copyToArray(arr, 0 , actualN)
283
+ arr
284
+ }
281
285
}
286
+
282
287
dynamicFromIArray(arr.asInstanceOf [IArray [Object ]]).asInstanceOf [Result ]
283
288
}
284
289
@@ -288,17 +293,23 @@ object DynamicTuple {
288
293
val actualN = Math .min(n, size)
289
294
290
295
type Result = Drop [This , N ]
296
+
291
297
val arr = (self : Any ) match {
292
- case () => Array .empty[Object ]
293
298
case xxl : TupleXXL =>
294
299
xxl.elems.asInstanceOf [Array [Object ]].drop(actualN)
295
300
case _ =>
296
301
val rem = size - actualN
297
- val arr = new Array [Object ](rem)
298
- self.asInstanceOf [Product ].productIterator.asInstanceOf [Iterator [Object ]]
299
- .drop(actualN).copyToArray(arr, 0 , rem)
300
- arr
302
+
303
+ if (rem == 0 )
304
+ Array .emptyObjectArray
305
+ else {
306
+ val arr = new Array [Object ](rem)
307
+ self.asInstanceOf [Product ].productIterator.asInstanceOf [Iterator [Object ]]
308
+ .drop(actualN).copyToArray(arr, 0 , rem)
309
+ arr
310
+ }
301
311
}
312
+
302
313
dynamicFromIArray(arr.asInstanceOf [IArray [Object ]]).asInstanceOf [Result ]
303
314
}
304
315
@@ -308,6 +319,7 @@ object DynamicTuple {
308
319
val actualN = Math .min(n, size)
309
320
310
321
type Result = Split [This , N ]
322
+
311
323
val (arr1, arr2) = (self : Any ) match {
312
324
case () => (Array .empty[Object ], Array .empty[Object ])
313
325
case xxl : TupleXXL =>
@@ -320,6 +332,7 @@ object DynamicTuple {
320
332
it.copyToArray(arr2, 0 , size - actualN)
321
333
(arr1, arr2)
322
334
}
335
+
323
336
(
324
337
dynamicFromIArray(arr1.asInstanceOf [IArray [Object ]]),
325
338
dynamicFromIArray(arr2.asInstanceOf [IArray [Object ]])
0 commit comments