From eaf88707d621bc4a15fa8d7cea76389b394998ff Mon Sep 17 00:00:00 2001 From: Marc-Andre Lafortune Date: Sun, 18 Oct 2020 15:20:03 -0400 Subject: [PATCH 1/2] Fix signature for `Enumerable#find`. --- stdlib/builtin/enumerable.rbs | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/stdlib/builtin/enumerable.rbs b/stdlib/builtin/enumerable.rbs index a410db355..9605777f1 100644 --- a/stdlib/builtin/enumerable.rbs +++ b/stdlib/builtin/enumerable.rbs @@ -310,8 +310,10 @@ module Enumerable[unchecked out Elem, out Return]: _Each[Elem, Return] def each_slice: (Integer n) { (::Array[Elem] arg0) -> untyped } -> NilClass | (Integer n) -> ::Enumerator[::Array[Elem], Return] - def find: (?Proc ifnone) { (Elem arg0) -> bool } -> Elem? - | (?Proc ifnone) -> ::Enumerator[Elem, Return] + def find: () { (Elem arg0) -> bool } -> Elem? + | () -> ::Enumerator[Elem, Elem?] + | [T] (_NotFound[T] ifnone) { (Elem arg0) -> bool } -> (Elem | T) + | [T] (_NotFound[T] ifnone) -> ::Enumerator[Elem, Elem | T] def flat_map: [U] () { (Elem arg0) -> U } -> U | () -> ::Enumerator[Elem, Return] @@ -402,3 +404,7 @@ module Enumerable[unchecked out Elem, out Return]: _Each[Elem, Return] def slice_before: (untyped pattern) -> ::Enumerator[::Array[Elem], void] | () { (Elem elt) -> bool } -> ::Enumerator[::Array[Elem], void] end + +interface Enumerable::_NotFound[T] + def call: () -> T +end From 469ff3244ca72991297aff95e73b2ead4427d41e Mon Sep 17 00:00:00 2001 From: Marc-Andre Lafortune Date: Mon, 19 Oct 2020 07:19:02 -0400 Subject: [PATCH 2/2] Move code --- stdlib/builtin/enumerable.rbs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/stdlib/builtin/enumerable.rbs b/stdlib/builtin/enumerable.rbs index 9605777f1..524cb040f 100644 --- a/stdlib/builtin/enumerable.rbs +++ b/stdlib/builtin/enumerable.rbs @@ -310,6 +310,10 @@ module Enumerable[unchecked out Elem, out Return]: _Each[Elem, Return] def each_slice: (Integer n) { (::Array[Elem] arg0) -> untyped } -> NilClass | (Integer n) -> ::Enumerator[::Array[Elem], Return] + interface _NotFound[T] + def call: () -> T + end + def find: () { (Elem arg0) -> bool } -> Elem? | () -> ::Enumerator[Elem, Elem?] | [T] (_NotFound[T] ifnone) { (Elem arg0) -> bool } -> (Elem | T) @@ -404,7 +408,3 @@ module Enumerable[unchecked out Elem, out Return]: _Each[Elem, Return] def slice_before: (untyped pattern) -> ::Enumerator[::Array[Elem], void] | () { (Elem elt) -> bool } -> ::Enumerator[::Array[Elem], void] end - -interface Enumerable::_NotFound[T] - def call: () -> T -end