Skip to content

Commit bdf9ead

Browse files
committed
[Dates] define arithmetic promotion for more operators
1 parent 2e9bbda commit bdf9ead

File tree

2 files changed

+6
-3
lines changed

2 files changed

+6
-3
lines changed

stdlib/Dates/src/Dates.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ for more information.
3232
"""
3333
module Dates
3434

35-
import Base: ==, div, fld, mod, rem, gcd, lcm, +, -, *, /, %, broadcast
35+
import Base: ==, isless, div, fld, mod, rem, gcd, lcm, +, -, *, /, %, broadcast
3636
using Printf: @sprintf
3737

3838
using Base.Iterators

stdlib/Dates/src/periods.jl

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -70,9 +70,7 @@ default(p::Union{T,Type{T}}) where {T<:TimePeriod} = T(0)
7070

7171
(-)(x::P) where {P<:Period} = P(-value(x))
7272
==(x::P, y::P) where {P<:Period} = value(x) == value(y)
73-
==(x::Period, y::Period) = (==)(promote(x, y)...)
7473
Base.isless(x::P, y::P) where {P<:Period} = isless(value(x), value(y))
75-
Base.isless(x::Period, y::Period) = isless(promote(x, y)...)
7674

7775
# Period Arithmetic, grouped by dimensionality:
7876
for op in (:+, :-, :lcm, :gcd)
@@ -97,6 +95,11 @@ end
9795
(*)(A::Period, B::AbstractArray) = Broadcast.broadcast_preserving_zero_d(*, A, B)
9896
(*)(A::AbstractArray, B::Period) = Broadcast.broadcast_preserving_zero_d(*, A, B)
9997

98+
for op in (:(==), :isless, :/, :rem, :mod, :lcm, :gcd)
99+
@eval ($op)(x::Period, y::Period) = ($op)(promote(x, y)...)
100+
end
101+
div(x::Period, y::Period, r::RoundingMode) = div(promote(x, y)..., r)
102+
100103
# intfuncs
101104
Base.gcdx(a::T, b::T) where {T<:Period} = ((g, x, y) = gcdx(value(a), value(b)); return T(g), x, y)
102105
Base.abs(a::T) where {T<:Period} = T(abs(value(a)))

0 commit comments

Comments
 (0)