From 35982e5c2cea3cd09c4f852ffaac56f2e2b507d0 Mon Sep 17 00:00:00 2001 From: Miha Zgubic Date: Fri, 20 Nov 2020 18:35:04 +0000 Subject: [PATCH 1/3] Add convert for AbstractZero --- src/differentials/abstract_zero.jl | 2 ++ test/differentials/abstract_zero.jl | 6 ++++++ 2 files changed, 8 insertions(+) diff --git a/src/differentials/abstract_zero.jl b/src/differentials/abstract_zero.jl index 5790323ad..851494daa 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 <: Real = 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 From dd4eba950dcb2b3117b73c2a65da75efb695c912 Mon Sep 17 00:00:00 2001 From: Miha Zgubic Date: Fri, 20 Nov 2020 18:36:53 +0000 Subject: [PATCH 2/3] patch bump --- Project.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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" From a3b5282595a5314d765ba1bce01c7b006ecfc361 Mon Sep 17 00:00:00 2001 From: Miha Zgubic Date: Mon, 23 Nov 2020 11:37:01 +0000 Subject: [PATCH 3/3] Update src/differentials/abstract_zero.jl --- src/differentials/abstract_zero.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/differentials/abstract_zero.jl b/src/differentials/abstract_zero.jl index 851494daa..4381676d5 100644 --- a/src/differentials/abstract_zero.jl +++ b/src/differentials/abstract_zero.jl @@ -24,7 +24,7 @@ Base.adjoint(z::AbstractZero) = z Base.transpose(z::AbstractZero) = z Base.:/(z::AbstractZero, ::Any) = z -Base.convert(::Type{T}, x::AbstractZero) where T <: Real = zero(T) +Base.convert(::Type{T}, x::AbstractZero) where T <: Number = zero(T) """ Zero() <: AbstractZero