Skip to content

[BUG] fusedims on BlockSparseArray with gradedrange axes and trailing singleton broken #59

@mtfishman

Description

@mtfishman

For example:

using BlockSparseArrays: BlockSparseVector
using GradedUnitRanges: gradedrange
using SymmetrySectors: U1
using TensorAlgebra: blockedperm, fusedims

r = gradedrange([U1(0) => 2, U1(1) => 2])
a = BlockSparseVector{Float64}(undef, r)
b = fusedims(a, blockedperm((1,), ()))

throws the error:

LoadError: StackOverflowError:
Stacktrace:
     [1] unchecked_oneto
       @ ./range.jl:472 [inlined]
     [2] map
       @ ./tuple.jl:355 [inlined]
     [3] axes
       @ ./abstractarray.jl:98 [inlined]
     [4] to_indices(A::Base.OneTo{Int64}, I::Tuple{BlockArrays.BlockVector{BlockArrays.Block{1, Int64}, Vector{Vector{BlockArrays.Block{1, Int64}}}, Tuple{BlockArrays.BlockedOneTo{Int64, Vector{Int64}}}}})
       @ BlockArrays ~/.julia/packages/BlockArrays/8VbzB/src/views.jl:58
     [5] getindex(A::Base.OneTo{Int64}, I::BlockArrays.BlockVector{BlockArrays.Block{1, Int64}, Vector{Vector{BlockArrays.Block{1, Int64}}}, Tuple{BlockArrays.BlockedOneTo{Int64, Vector{Int64}}}})
       @ Base ./abstractarray.jl:1312
     [6] unblock(A::Base.OneTo{Int64}, inds::Tuple{Base.OneTo{Int64}}, I::Tuple{BlockArrays.BlockVector{BlockArrays.Block{1, Int64}, Vector{Vector{BlockArrays.Block{1, Int64}}}, Tuple{BlockArrays.BlockedOneTo{Int64, Vector{Int64}}}}})
       @ BlockArrays ~/.julia/packages/BlockArrays/8VbzB/src/views.jl:10
     [7] to_indices(A::Base.OneTo{Int64}, inds::Tuple{Base.OneTo{Int64}}, I::Tuple{BlockArrays.BlockVector{BlockArrays.Block{1, Int64}, Vector{Vector{BlockArrays.Block{1, Int64}}}, Tuple{BlockArrays.BlockedOneTo{Int64, Vector{Int64}}}}})
       @ BlockArrays ~/.julia/packages/BlockArrays/8VbzB/src/views.jl:35
--- the above 4 lines are repeated 19994 more times ---
 [79984] to_indices(A::Base.OneTo{Int64}, I::Tuple{BlockArrays.BlockVector{BlockArrays.Block{1, Int64}, Vector{Vector{BlockArrays.Block{1, Int64}}}, Tuple{BlockArrays.BlockedOneTo{Int64, Vector{Int64}}}}})
       @ BlockArrays ~/.julia/packages/BlockArrays/8VbzB/src/views.jl:58
 [79985] getindex(A::Base.OneTo{Int64}, I::BlockArrays.BlockVector{BlockArrays.Block{1, Int64}, Vector{Vector{BlockArrays.Block{1, Int64}}}, Tuple{BlockArrays.BlockedOneTo{Int64, Vector{Int64}}}})
       @ Base ./abstractarray.jl:1312
 [79986] unblock(A::Base.OneTo{Int64}, inds::Tuple{Base.OneTo{Int64}}, I::Tuple{BlockArrays.BlockVector{BlockArrays.Block{1, Int64}, Vector{Vector{BlockArrays.Block{1, Int64}}}, Tuple{BlockArrays.BlockedOneTo{Int64, Vector{Int64}}}}})
       @ BlockArrays ~/.julia/packages/BlockArrays/8VbzB/src/views.jl:10

with versions:

  [2c9a651f] BlockSparseArrays v0.2.20
  [e2de450a] GradedUnitRanges v0.1.6
  [f8a8ad64] SymmetrySectors v0.1.5
  [68bd88dc] TensorAlgebra v0.1.10

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions