Skip to content

Commit 56319b4

Browse files
authored
Merge pull request #2540 from ksss/range-min-max
Delegate to `Enumerable` from `Range#{min,max}`
2 parents 91d5511 + f96878e commit 56319b4

File tree

2 files changed

+20
-22
lines changed

2 files changed

+20
-22
lines changed

core/range.rbs

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -741,10 +741,7 @@ class Range[out Elem] < Object
741741
#
742742
# Related: Range#min, Range#minmax.
743743
#
744-
def max: () -> Elem
745-
| () { (Elem a, Elem b) -> Integer } -> Elem
746-
| (Integer n) -> ::Array[Elem]
747-
| (Integer n) { (Elem a, Elem b) -> Integer } -> ::Array[Elem]
744+
def max: ...
748745

749746
# <!--
750747
# rdoc-file=range.c
@@ -826,10 +823,7 @@ class Range[out Elem] < Object
826823
#
827824
# Related: Range#max, Range#minmax.
828825
#
829-
def min: () -> Elem
830-
| () { (Elem a, Elem b) -> Integer } -> Elem
831-
| (Integer n) -> ::Array[Elem]
832-
| (Integer n) { (Elem a, Elem b) -> Integer } -> ::Array[Elem]
826+
def min: ...
833827

834828
# <!--
835829
# rdoc-file=range.c

test/stdlib/Range_test.rb

Lines changed: 18 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -80,20 +80,6 @@ def test_last
8080
('A'...'Z').last
8181
end
8282

83-
def test_max
84-
(1..10).max
85-
(1..10).max(3)
86-
(1..10).max { |i, j| i <=> j }
87-
(1..10).max(3) { |i, j| i <=> j }
88-
end
89-
90-
def test_min
91-
(1..10).min
92-
(1..10).min(3)
93-
(1..10).min { |i, j| i <=> j }
94-
(1..10).min(3) { |i, j| i <=> j }
95-
end
96-
9783
def test_percent
9884
(1..10).%(2)
9985
if_ruby(..."3.4.0", skip: false) do
@@ -152,4 +138,22 @@ def test_overlap?
152138
(2..5), :overlap?, (3..4)
153139
)
154140
end
141+
142+
def test_min
143+
assert_send_type "() -> ::Integer", (1..4), :min
144+
assert_send_type "() -> nil", (4..1), :min
145+
assert_send_type "() { (::Integer, ::Integer) -> ::Integer } -> ::Integer", (1..4), :min do |a, b| a <=> b end
146+
assert_send_type "() { (::Integer, ::Integer) -> ::Integer } -> nil", (4..1), :min do |a, b| a <=> b end
147+
assert_send_type "(::Integer) -> ::Array[::Integer]", (1..4), :min, 2
148+
assert_send_type "(::Integer) { (::Integer, ::Integer) -> ::Integer } -> ::Array[::Integer]", (1..4), :min, 0 do |a, b| a <=> b end
149+
end
150+
151+
def test_max
152+
assert_send_type "() -> ::Integer", (1..4), :max
153+
assert_send_type "() -> nil", (4..1), :max
154+
assert_send_type "() { (::Integer, ::Integer) -> ::Integer } -> ::Integer", (1..4), :max do |a, b| a <=> b end
155+
assert_send_type "() { (::Integer, ::Integer) -> ::Integer } -> nil", (4..1), :max do |a, b| a <=> b end
156+
assert_send_type "(::Integer) -> ::Array[::Integer]", (1..4), :max, 2
157+
assert_send_type "(::Integer) { (::Integer, ::Integer) -> ::Integer } -> ::Array[::Integer]", (4..1), :max, 0 do |a, b| a <=> b end
158+
end
155159
end

0 commit comments

Comments
 (0)