@@ -274,6 +274,19 @@ for (i,j) in zip((:<, :isless), (:_lt, :_isless))
274274 @eval @inline ($ j)(x:: AbstractQuantity{T,D,U} , y:: AbstractQuantity{T,D,U} ) where {T,D,U} = ($ i)(x. val,y. val)
275275 @eval @inline ($ j)(x:: AbstractQuantity{T,D,U1} , y:: AbstractQuantity{T,D,U2} ) where {T,D,U1,U2} = ($ i)(promote (x,y)... )
276276 @eval @inline ($ j)(x:: AbstractQuantity{T,D1,U1} , y:: AbstractQuantity{T,D2,U2} ) where {T,D1,D2,U1,U2} = throw (DimensionError (x,y))
277+
278+ # comparison with dimensionless zero:
279+ NodimsQuantity{T} = DimensionlessQuantity{T,FreeUnits{(),NoDims,nothing }}
280+ @eval @inline ($ j)(x:: $NodimsQuantity{T} , y:: ScalarQuantity{T,D,U} ) where {T,D,U} =
281+ iszero (x) && ! (y isa AffineQuantity) ?
282+ ($ i)(x. val,y. val) :
283+ throw (DimensionError (x,y))
284+ @eval @inline ($ j)(x:: ScalarQuantity{T,D,U} , y:: $NodimsQuantity{T} ) where {T,D,U} =
285+ iszero (y) && ! (x isa AffineQuantity) ?
286+ ($ i)(x. val,y. val) :
287+ throw (DimensionError (x,y))
288+ # disambiguation:
289+ @eval @inline ($ j)(x:: $NodimsQuantity{T} , y:: $NodimsQuantity{T} ) where {T} = ($ i)(x. val,y. val)
277290end
278291
279292Base. rtoldefault (:: Type{<:AbstractQuantity{T,D,U}} ) where {T,D,U} = Base. rtoldefault (T)
0 commit comments