Skip to content

Commit b20998b

Browse files
committed
Add promotion rule for generic numbers
1 parent 9ac4df0 commit b20998b

File tree

2 files changed

+7
-0
lines changed

2 files changed

+7
-0
lines changed

src/utils.jl

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ end
2727
end
2828

2929
Base.float(q::AbstractUnionQuantity) = new_quantity(typeof(q), float(ustrip(q)), dimension(q))
30+
Base.convert(::Type{Number}, q::AbstractQuantity) = q
3031
function Base.convert(::Type{T}, q::AbstractUnionQuantity) where {T<:Number}
3132
@assert iszero(dimension(q)) "$(typeof(q)): $(q) has dimensions! Use `ustrip` instead."
3233
return convert(T, ustrip(q))
@@ -43,6 +44,9 @@ end
4344
function Base.promote_rule(::Type{<:Quantity{T1,D1}}, ::Type{<:Quantity{T2,D2}}) where {T1,T2,D1,D2}
4445
return Quantity{promote_type(T1,T2),promote_type(D1,D2)}
4546
end
47+
function Base.promote_rule(::Type{<:AbstractQuantity}, ::Type{<:Number})
48+
return Number
49+
end
4650

4751
Base.keys(d::AbstractDimensions) = static_fieldnames(typeof(d))
4852
Base.getindex(d::AbstractDimensions, k::Symbol) = getfield(d, k)

test/unittests.jl

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -440,6 +440,9 @@ end
440440
q1 = Quantity(1.0, length=1)
441441
q2 = Quantity(2, mass=1)
442442
@test typeof(promote(q1, q2)) == typeof((q1, q1))
443+
444+
x = [0.5, 0.5u"km/s"]
445+
@test x isa Vector{Number}
443446
end
444447

445448
struct MyDimensions{R} <: AbstractDimensions{R}

0 commit comments

Comments
 (0)