Skip to content

Commit 8b9b227

Browse files
committed
Fix tests
1 parent 44ba314 commit 8b9b227

File tree

1 file changed

+12
-1
lines changed

1 file changed

+12
-1
lines changed

src/kroneckerarray.jl

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,17 @@
22
function _convert(A::Type{<:AbstractArray}, a::AbstractArray)
33
return convert(A, a)
44
end
5+
# Custom `_convert` works around the issue that
6+
# `convert(::Type{<:Diagonal}, ::AbstractMatrix)` isnt' defined
7+
# in Julia v1.10 (https://github.com/JuliaLang/julia/pull/48895,
8+
# https://github.com/JuliaLang/julia/pull/52487).
9+
# TODO: Delete once we drop support for Julia v1.10.
10+
using LinearAlgebra: LinearAlgebra, Diagonal, diag, isdiag
11+
_construct(A::Type{<:Diagonal}, a::AbstractMatrix) = A(diag(a))
12+
function _convert(A::Type{<:Diagonal}, a::AbstractMatrix)
13+
LinearAlgebra.checksquare(a)
14+
return isdiag(a) ? _construct(A, a) : throw(InexactError(:convert, A, a))
15+
end
516

617
struct KroneckerArray{T,N,A<:AbstractArray{T,N},B<:AbstractArray{T,N}} <: AbstractArray{T,N}
718
a::A
@@ -39,7 +50,7 @@ function Base.copyto!(dest::KroneckerArray, src::KroneckerArray)
3950
end
4051

4152
function Base.convert(::Type{KroneckerArray{T,N,A,B}}, a::KroneckerArray) where {T,N,A,B}
42-
return KroneckerArray(convert(A, arg1(a)), convert(B, arg2(a)))
53+
return KroneckerArray(_convert(A, arg1(a)), _convert(B, arg2(a)))
4354
end
4455

4556
# Like `similar` but allows some custom behavior, such as for `FillArrays.Eye`.

0 commit comments

Comments
 (0)