diff --git a/Project.toml b/Project.toml index bbdecb05b..be7d74ad5 100644 --- a/Project.toml +++ b/Project.toml @@ -1,6 +1,6 @@ name = "ChainRulesCore" uuid = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" -version = "0.9.19" +version = "0.9.20" [deps] LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" diff --git a/src/differentials/abstract_zero.jl b/src/differentials/abstract_zero.jl index 5790323ad..4381676d5 100644 --- a/src/differentials/abstract_zero.jl +++ b/src/differentials/abstract_zero.jl @@ -24,6 +24,8 @@ Base.adjoint(z::AbstractZero) = z Base.transpose(z::AbstractZero) = z Base.:/(z::AbstractZero, ::Any) = z +Base.convert(::Type{T}, x::AbstractZero) where T <: Number = zero(T) + """ Zero() <: AbstractZero diff --git a/test/differentials/abstract_zero.jl b/test/differentials/abstract_zero.jl index 13cc2b49e..640d1ce6b 100644 --- a/test/differentials/abstract_zero.jl +++ b/test/differentials/abstract_zero.jl @@ -59,6 +59,9 @@ @test complex(z, z) === z @test complex(z, 2.0) === Complex{Float64}(0.0, 2.0) @test complex(1.5, z) === Complex{Float64}(1.5, 0.0) + + @test convert(Int64, Zero()) == 0 + @test convert(Float64, Zero()) == 0.0 end @testset "DoesNotExist" begin @@ -96,5 +99,8 @@ @test f(dne) === dne end @test dne / 2 === dne / [1, 3] === dne + + @test convert(Int64, DoesNotExist()) == 0 + @test convert(Float64, DoesNotExist()) == 0.0 end end