Skip to content

Commit cdb175b

Browse files
committed
Fix complex number promotion
1 parent 91a09c3 commit cdb175b

File tree

2 files changed

+6
-3
lines changed

2 files changed

+6
-3
lines changed

NDTensors/src/emptynumber.jl

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,13 @@ convert(::Type{T}, x::EmptyNumber) where {T<:Number} = T(zero(T))
1818
# This helps with defining `norm` of `EmptyStorage{EmptyNumber}`.
1919
AbstractFloat(::EmptyNumber) = zero(AbstractFloat)
2020

21-
Base.promote_rule(::Type{EmptyNumber}, ::Type{T}) where {T<:Number} = T
22-
Base.promote_rule(::Type{T}, ::Type{EmptyNumber}) where {T<:Number} = T
21+
# Extra definitions fix ambiguity errors.
22+
Base.promote_rule(::Type{EmptyNumber}, T::Type{<:Number}) = T
23+
Base.promote_rule(T::Type{<:Number}, ::Type{EmptyNumber}) = T
2324
Base.promote_rule(::Type{EmptyNumber}, ::Type{Bool}) = Bool
2425
Base.promote_rule(::Type{Bool}, ::Type{EmptyNumber}) = Bool
26+
Base.promote_rule(::Type{EmptyNumber}, T::Type{Complex{R}}) where {R<:Real} = T
27+
Base.promote_rule(T::Type{Complex{R}}, ::Type{EmptyNumber}) where {R<:Real} = T
2528

2629
# Basic arithmetic
2730
(::EmptyNumber + ::EmptyNumber) = EmptyNumber()

NDTensors/test/test_emptynumber.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ const 𝟎 = EmptyNumber()
1212
@test complex(EmptyNumber) == Complex{EmptyNumber}
1313

1414
# Promotion
15-
for T in (Bool, Float64)
15+
for T in (Bool, Float32, Float64, Complex{Float32}, Complex{Float64})
1616
@test promote_type(EmptyNumber, T) === T
1717
@test promote_type(T, EmptyNumber) === T
1818
end

0 commit comments

Comments
 (0)