Skip to content

Commit f41a8f8

Browse files
authored
expand min/max with missing to all types (#25403)
1 parent 9dd18b1 commit f41a8f8

File tree

2 files changed

+19
-4
lines changed

2 files changed

+19
-4
lines changed

base/missing.jl

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -77,16 +77,22 @@ for f in (:(Base.zero), :(Base.one), :(Base.oneunit))
7777
end
7878

7979
# Binary operators/functions
80-
for f in (:(+), :(-), :(*), :(/), :(^),
81-
:(div), :(mod), :(fld), :(rem), :(min), :(max))
80+
for f in (:(+), :(-), :(*), :(/), :(^), :(div), :(mod), :(fld), :(rem))
8281
@eval begin
8382
# Scalar with missing
8483
($f)(::Missing, ::Missing) = missing
85-
($f)(d::Missing, x::Number) = missing
86-
($f)(d::Number, x::Missing) = missing
84+
($f)(::Missing, ::Number) = missing
85+
($f)(::Number, ::Missing) = missing
8786
end
8887
end
8988

89+
min(::Missing, ::Missing) = missing
90+
min(::Missing, ::Any) = missing
91+
min(::Any, ::Missing) = missing
92+
max(::Missing, ::Missing) = missing
93+
max(::Missing, ::Any) = missing
94+
max(::Any, ::Missing) = missing
95+
9096
# Rounding and related functions
9197
for f in (:(ceil), :(floor), :(round), :(trunc))
9298
@eval begin

test/missing.jl

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,15 @@ end
7777
@test ismissing(f(1, missing))
7878
@test ismissing(f(missing, 1))
7979
end
80+
81+
@test ismissing(min(missing, missing))
82+
@test ismissing(max(missing, missing))
83+
for f in [min, max]
84+
for arg in ["", "a", 1, -1.0, [2]]
85+
@test ismissing(f(missing, arg))
86+
@test ismissing(f(arg, missing))
87+
end
88+
end
8089
end
8190

8291
@testset "bit operators" begin

0 commit comments

Comments
 (0)