Skip to content

Allow block setindex with UniformScaling #449

@dlfivefifty

Description

@dlfivefifty

This should work:

julia> A = BlockArray(zeros(Int,4,4), [2,2], [2,2]); A[Block(1,1)] = I
ERROR: MethodError: no method matching size(::UniformScaling{Bool}, ::Int64)
The function `size` exists, but no method is defined for this combination of argument types.

Closest candidates are:
  size(::BitVector, ::Integer)
   @ Base bitarray.jl:107
  size(::Type{<:Diagonal{T, SVector{N, T}} where T}, ::Int64) where N
   @ StaticArrays ~/.julia/packages/StaticArrays/lZeGV/src/SDiagonal.jl:18
  size(::Type{<:Union{Adjoint{T, <:Union{StaticArray{Tuple{var"#s2"}, T, 1} where var"#s2", StaticArray{Tuple{var"#s3", var"#s4"}, T, 2} where {var"#s3", var"#s4"}}}, Diagonal{T, <:StaticArray{Tuple{var"#s14"}, T, 1} where var"#s14"}, Hermitian{T, <:StaticArray{Tuple{var"#s11", var"#s12"}, T, 2} where {var"#s11", var"#s12"}}, LowerTriangular{T, <:StaticArray{Tuple{var"#s19", var"#s20"}, T, 2} where {var"#s19", var"#s20"}}, Symmetric{T, <:StaticArray{Tuple{var"#s8", var"#s9"}, T, 2} where {var"#s8", var"#s9"}}, Transpose{T, <:Union{StaticArray{Tuple{var"#s2"}, T, 1} where var"#s2", StaticArray{Tuple{var"#s3", var"#s4"}, T, 2} where {var"#s3", var"#s4"}}}, UnitLowerTriangular{T, <:StaticArray{Tuple{var"#s25", var"#s26"}, T, 2} where {var"#s25", var"#s26"}}, UnitUpperTriangular{T, <:StaticArray{Tuple{var"#s22", var"#s23"}, T, 2} where {var"#s22", var"#s23"}}, UpperTriangular{T, <:StaticArray{Tuple{var"#s16", var"#s17"}, T, 2} where {var"#s16", var"#s17"}}, StaticArray{Tuple{var"#s26"}, T, 1} where var"#s26", StaticArray{Tuple{var"#s1", var"#s4"}, T, 2} where {var"#s1", var"#s4"}, StaticArray{<:Tuple, T}} where T}, ::Int64)
   @ StaticArrays ~/.julia/packages/StaticArrays/lZeGV/src/abstractarray.jl:5
  ...

Stacktrace:
 [1] _check_setblock!(block_arr::BlockMatrix{…}, v::UniformScaling{…}, block::Tuple{…})
   @ BlockArrays ~/Projects/BlockArrays.jl/src/blockarray.jl:494
 [2] setindex!
   @ ~/Projects/BlockArrays.jl/src/blockarray.jl:503 [inlined]
 [3] setindex!(block_arr::BlockMatrix{Int64, Matrix{…}, Tuple{…}}, v::UniformScaling{Bool}, block::Block{2, Int64})
   @ BlockArrays ~/Projects/BlockArrays.jl/src/abstractblockarray.jl:161
 [4] top-level scope
   @ REPL[307]:1
Some type information was truncated. Use `show(err)` to see complete types.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions