diff --git a/src/MArray.jl b/src/MArray.jl index 9d8e87f3..9f56a92a 100644 --- a/src/MArray.jl +++ b/src/MArray.jl @@ -36,9 +36,9 @@ end else # This one is unsafe (#27) # unsafe_store!(Base.unsafe_convert(Ptr{Ptr{Nothing}}, pointer_from_objref(v.data)), pointer_from_objref(val), i) - error("setindex!() with non-isbitstype eltype is not supported by StaticArrays. Consider using SizedArray.") + # error("setindex!() with non-isbitstype eltype is not supported by StaticArrays. Consider using SizedArray.") + setfield!(v, :data, Base.setindex(getfield(v, :data), convert(eltype(v), val), i)) end - return v end diff --git a/test/MArray.jl b/test/MArray.jl index 79022dd9..bc08ddf4 100644 --- a/test/MArray.jl +++ b/test/MArray.jl @@ -209,8 +209,10 @@ @test_throws BoundsError setindex!(mm, 4, 82) # setindex with non-elbits type - m = MArray{Tuple{2,2,2}, String}(undef) - @test_throws ErrorException setindex!(m, "a", 1, 1, 1) + m = MArray{Tuple{2,2,2}, String}(ntuple(_ -> "b", 2^3)) + @test setindex!(m, "a", 1, 1, 1) == MArray{Tuple{2,2,2}, String}(ntuple(i -> i == 1 ? "a" : "b", 2^3)) + @test m[1,1,1] == "a" + @test m[1,1,2] == "b" end @testset "promotion" begin