@@ -323,39 +323,27 @@ Reconstruct `A` given the values in `data`. New methods using `unsafe_reconstruc
323
323
should only dispatch on `A`.
324
324
"""
325
325
function unsafe_reconstruct (A:: OneTo , data; kwargs... )
326
- if can_change_size (A)
327
- return typeof (A)(data)
326
+ if data isa Slice ||
327
+ ! (known_length (A) === nothing || known_length (A) != = known_length (data))
328
+ return A
328
329
else
329
- if data isa Slice ||
330
- ! (known_length (A) === nothing || known_length (A) != = known_length (data))
331
- return A
332
- else
333
- return OneTo (data)
334
- end
330
+ return OneTo (data)
335
331
end
336
332
end
337
333
function unsafe_reconstruct (A:: UnitRange , data; kwargs... )
338
- if can_change_size (A)
339
- return typeof (A)(data)
334
+ if data isa Slice ||
335
+ ! (known_length (A) === nothing || known_length (A) != = known_length (data))
336
+ return A
340
337
else
341
- if data isa Slice ||
342
- ! (known_length (A) === nothing || known_length (A) != = known_length (data))
343
- return A
344
- else
345
- return UnitRange (data)
346
- end
338
+ return UnitRange (data)
347
339
end
348
340
end
349
341
function unsafe_reconstruct (A:: OptionallyStaticUnitRange , data; kwargs... )
350
- if can_change_size (A)
351
- return typeof (A)(data)
342
+ if data isa Slice ||
343
+ ! (known_length (A) === nothing || known_length (A) != = known_length (data))
344
+ return A
352
345
else
353
- if data isa Slice ||
354
- ! (known_length (A) === nothing || known_length (A) != = known_length (data))
355
- return A
356
- else
357
- return OptionallyStaticUnitRange (data)
358
- end
346
+ return OptionallyStaticUnitRange (data)
359
347
end
360
348
end
361
349
function unsafe_reconstruct (A:: AbstractUnitRange , data; kwargs... )
@@ -420,6 +408,15 @@ previously executed `to_index(old_axis, arg) -> index`. `to_axis` assumes that
420
408
return to_axis (IndexStyle (axis), axis, inds)
421
409
end
422
410
end
411
+
412
+ # don't need to check size b/c slice means it's the entire axis
413
+ @inline function to_axis (axis, inds:: Slice )
414
+ if can_change_size (axis)
415
+ return copy (axis)
416
+ else
417
+ return axis
418
+ end
419
+ end
423
420
@inline function to_axis (S:: IndexStyle , axis, inds)
424
421
return unsafe_reconstruct (axis, StaticInt (1 ): static_length (inds))
425
422
end
0 commit comments