From abb53d2eba8b967c2186efa5556ecbfec29b413e Mon Sep 17 00:00:00 2001 From: Oscar Dowson Date: Thu, 2 Apr 2026 10:01:45 +1300 Subject: [PATCH] Fix /(::Zero, ::AbstractMutable) --- src/dispatch.jl | 7 +++++++ src/rewrite.jl | 3 +-- test/test_basics.jl | 6 ++++++ 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/src/dispatch.jl b/src/dispatch.jl index d74aa55..807eb9e 100644 --- a/src/dispatch.jl +++ b/src/dispatch.jl @@ -23,6 +23,13 @@ Base.:+(x::AbstractMutable, ::Zero) = copy_if_mutable(x) Base.:-(::Zero, x::AbstractMutable) = operate(-, x) Base.:-(x::AbstractMutable, ::Zero) = copy_if_mutable(x) +function Base.:/(z::Zero, x::AbstractMutable) + if iszero(x) + throw(DivideError()) + end + return z +end + function Base.sum( a::AbstractArray{T}; dims = :, diff --git a/src/rewrite.jl b/src/rewrite.jl index f37ca58..bfc9682 100644 --- a/src/rewrite.jl +++ b/src/rewrite.jl @@ -85,9 +85,8 @@ Base.:*(z::Zero) = z function Base.:/(z::Zero, x::Number) if iszero(x) throw(DivideError()) - else - return z end + return z end Base.iszero(::Zero) = true diff --git a/test/test_basics.jl b/test/test_basics.jl index ec18bd6..7bbf154 100644 --- a/test/test_basics.jl +++ b/test/test_basics.jl @@ -546,6 +546,12 @@ function test_operate() return end +function test_op_divide() + @test MA.Zero() / DummyBigInt(1) == MA.Zero() + @test_throws DivideError MA.Zero() / DummyBigInt(0) + return +end + end # TestBasics TestBasics.runtests()