Skip to content

Commit 5c774ea

Browse files
committed
fix weird stackoverflow with ambiguity fix?
1 parent 0ede464 commit 5c774ea

File tree

1 file changed

+21
-19
lines changed

1 file changed

+21
-19
lines changed

src/operations/mul.jl

Lines changed: 21 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -128,11 +128,19 @@ function Base.:*(
128128
end
129129

130130
# clear up some ambiguities:
131-
function Base.:*(
132-
A::Transpose{<:T, <:GBVector},
133-
B::GBVector{T}
134-
) where {T <: Real}
135-
return *(A, B, (+, *))
131+
# Replaced this function with the one directly below it.
132+
# This one StackOverflows on 1.10...
133+
# I don't exactly see why :/
134+
# function Base.:*(
135+
# A::Transpose{T, <:GBVector{T}},
136+
# B::GBVector{T}
137+
# ) where {T <: Real}
138+
# return *(A, B, (+, *))
139+
# end
140+
141+
function Base.:*(v::Transpose{<:Real, <:AbstractGBVector{T, F, O} where O} where {T, F},
142+
u::AbstractGBVector{T, F, O} where {T, F, O})
143+
*(v, u, (+, *))
136144
end
137145

138146
function Base.:*(
@@ -157,12 +165,6 @@ function Base.:*(
157165
return @_densepack B (*(A, B, op; mask, accum, desc))
158166
end
159167

160-
function Base.:*(()::Union{<:Function, Monoid}, ()::Function)
161-
return function(A::GBArrayOrTranspose, B::GBArrayOrTranspose; mask=nothing, accum=nothing, desc=nothing)
162-
*(A, B, (, ); mask, accum, desc)
163-
end
164-
end
165-
166168
function Base.:*(()::Monoid, ()::Function)
167169
return function(A::GBArrayOrTranspose, B::GBArrayOrTranspose; mask=nothing, accum=nothing, desc=nothing)
168170
*(A, B, (, ); mask, accum, desc)
@@ -176,23 +178,23 @@ function Base.:*(rig::TypedSemiring)
176178
end
177179

178180
# Diagonal
179-
function LinearAlgebra.mul!(C::GBVecOrMat, D::Diagonal, A::G, op = (+, *); mask = nothing, accum = nothing, desc = nothing) where
180-
{G <: Union{Transpose{T, <:SuiteSparseGraphBLAS.AbstractGBArray{T1, F, O}} where {T, T1, F, O},
181+
function LinearAlgebra.mul!(C::GBVecOrMat, D::Diagonal, A::G, op = (+, *); mask = nothing, accum = nothing, desc = nothing) where
182+
{G <: Union{Transpose{T, <:SuiteSparseGraphBLAS.AbstractGBArray{T1, F, O}} where {T, T1, F, O},
181183
SuiteSparseGraphBLAS.AbstractGBArray{T, F, O, 2} where {T, F, O}}}
182184
return mul!(C, G(D), A, op; mask, accum, desc)
183185
end
184-
function LinearAlgebra.mul!(C::GBVecOrMat, A::G, D::Diagonal, op = (+, *); mask = nothing, accum = nothing, desc = nothing) where
185-
{G <: Union{Transpose{T, <:SuiteSparseGraphBLAS.AbstractGBArray{T1, F, O}} where {T, T1, F, O},
186+
function LinearAlgebra.mul!(C::GBVecOrMat, A::G, D::Diagonal, op = (+, *); mask = nothing, accum = nothing, desc = nothing) where
187+
{G <: Union{Transpose{T, <:SuiteSparseGraphBLAS.AbstractGBArray{T1, F, O}} where {T, T1, F, O},
186188
SuiteSparseGraphBLAS.AbstractGBArray{T, F, O, 2} where {T, F, O}}}
187189
return mul!(C, A, G(D), op; mask, accum, desc)
188190
end
189-
function Base.:*(D::Diagonal, A::G, op = (+, *); mask = nothing, accum = nothing, desc = nothing) where
190-
{G <: Union{Transpose{T, <:SuiteSparseGraphBLAS.AbstractGBArray{T1, F, O}} where {T, T1, F, O},
191+
function Base.:*(D::Diagonal, A::G, op = (+, *); mask = nothing, accum = nothing, desc = nothing) where
192+
{G <: Union{Transpose{T, <:SuiteSparseGraphBLAS.AbstractGBArray{T1, F, O}} where {T, T1, F, O},
191193
SuiteSparseGraphBLAS.AbstractGBArray{T, F, O, 2} where {T, F, O}}}
192194
return *(G(D), A, op; mask, accum, desc)
193195
end
194-
function Base.:*(A::G, D::Diagonal, op = (+, *); mask = nothing, accum = nothing, desc = nothing) where
195-
{G <: Union{Transpose{T, <:SuiteSparseGraphBLAS.AbstractGBArray{T1, F, O}} where {T, T1, F, O},
196+
function Base.:*(A::G, D::Diagonal, op = (+, *); mask = nothing, accum = nothing, desc = nothing) where
197+
{G <: Union{Transpose{T, <:SuiteSparseGraphBLAS.AbstractGBArray{T1, F, O}} where {T, T1, F, O},
196198
SuiteSparseGraphBLAS.AbstractGBArray{T, F, O, 2} where {T, F, O}}}
197199
return *(A, G(D), op; mask, accum, desc)
198200
end

0 commit comments

Comments
 (0)