|
35 | 35 | function Base.promote_rule(::Type{Dimensions{R1}}, ::Type{Dimensions{R2}}) where {R1,R2}
|
36 | 36 | return Dimensions{promote_type(R1,R2)}
|
37 | 37 | end
|
38 |
| -function Base.promote_rule(::Type{<:GenericQuantity{T1,D1}}, ::Type{<:GenericQuantity{T2,D2}}) where {T1,T2,D1,D2} |
39 |
| - return GenericQuantity{promote_type(T1,T2),promote_type(D1,D2)} |
40 |
| -end |
41 |
| -function Base.promote_rule(::Type{<:Quantity{T1,D1}}, ::Type{<:Quantity{T2,D2}}) where {T1,T2,D1,D2} |
42 |
| - return Quantity{promote_type(T1,T2),promote_type(D1,D2)} |
43 |
| -end |
44 |
| -function Base.promote_rule(::Type{<:RealQuantity{T1,D1}}, ::Type{<:RealQuantity{T2,D2}}) where {T1,T2,D1,D2} |
45 |
| - return RealQuantity{promote_type(T1,T2),promote_type(D1,D2)} |
| 38 | +for (_, _, concrete_type) in ABSTRACT_QUANTITY_TYPES |
| 39 | + @eval function Base.promote_rule(::Type{<:$concrete_type{T1,D1}}, ::Type{<:$concrete_type{T2,D2}}) where {T1,T2,D1,D2} |
| 40 | + return $concrete_type{promote_type(T1,T2),promote_type(D1,D2)} |
| 41 | + end |
46 | 42 | end
|
47 | 43 |
|
48 | 44 | function Base.promote_rule(::Type{<:Quantity{T1,D1}}, ::Type{<:GenericQuantity{T2,D2}}) where {T1,T2,D1,D2}
|
|
0 commit comments