Skip to content

Commit 9d31a05

Browse files
mtfishmancorbett5
authored andcommitted
[NDTensors] Fix type promotion of EmptyNumber in Julia 1.11 (ITensor#1541)
* [NDTensors] Fix type promotion of EmptyNumber in Julia 1.11 * [NDTensors] Bump to v0.3.44
1 parent d61e75d commit 9d31a05

File tree

4 files changed

+19
-6
lines changed

4 files changed

+19
-6
lines changed

NDTensors/Project.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
name = "NDTensors"
22
uuid = "23ae76d9-e61a-49c4-8f12-3f1a16adf9cf"
33
authors = ["Matthew Fishman <[email protected]>"]
4-
version = "0.3.43"
4+
version = "0.3.44"
55

66
[deps]
77
Accessors = "7d9f7c33-5ae7-4f3b-8dc6-eff91059b697"

NDTensors/src/empty/EmptyTensor.jl

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -152,8 +152,6 @@ end
152152

153153
setindex!!(T::EmptyTensor, x, I...) = setindex(T, x, I...)
154154

155-
promote_rule(::Type{EmptyNumber}, ::Type{T}) where {T<:Number} = T
156-
157155
function promote_rule(
158156
::Type{T1}, ::Type{T2}
159157
) where {T1<:EmptyStorage{EmptyNumber},T2<:TensorStorage}

NDTensors/src/emptynumber.jl

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,14 @@ 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+
# 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
24+
Base.promote_rule(::Type{EmptyNumber}, ::Type{Bool}) = Bool
25+
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
28+
2129
# Basic arithmetic
2230
(::EmptyNumber + ::EmptyNumber) = EmptyNumber()
2331
(::EmptyNumber - ::EmptyNumber) = EmptyNumber()

NDTensors/test/test_emptynumber.jl

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,21 @@
11
@eval module $(gensym())
2-
using NDTensors
2+
using LinearAlgebra: norm
3+
using NDTensors: EmptyNumber
34
using Test: @testset, @test, @test_throws
45

5-
const 𝟎 = NDTensors.EmptyNumber()
6+
const 𝟎 = EmptyNumber()
67

78
@testset "NDTensors.EmptyNumber" begin
89
x = 2.3
910

1011
@test complex(𝟎) == 𝟎
11-
@test complex(NDTensors.EmptyNumber) == Complex{NDTensors.EmptyNumber}
12+
@test complex(EmptyNumber) == Complex{EmptyNumber}
13+
14+
# Promotion
15+
for T in (Bool, Float32, Float64, Complex{Float32}, Complex{Float64})
16+
@test promote_type(EmptyNumber, T) === T
17+
@test promote_type(T, EmptyNumber) === T
18+
end
1219

1320
# Basic arithmetic
1421
@test 𝟎 + 𝟎 == 𝟎

0 commit comments

Comments
 (0)