From 4629ecd3a4cb000482e88c83cf41202ee796adf0 Mon Sep 17 00:00:00 2001 From: tufusa Date: Mon, 25 May 2026 10:02:59 +0900 Subject: [PATCH 1/3] =?UTF-8?q?chore:=20=E3=83=86=E3=82=B9=E3=83=88?= =?UTF-8?q?=E7=94=A8=E3=82=B7=E3=82=B0=E3=83=8D=E3=83=81=E3=83=A3=E3=83=95?= =?UTF-8?q?=E3=82=A1=E3=82=A4=E3=83=AB=E3=81=AE=E5=A0=B4=E6=89=80=E3=82=92?= =?UTF-8?q?=E8=A8=AD=E5=AE=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Steepfile | 1 + 1 file changed, 1 insertion(+) diff --git a/Steepfile b/Steepfile index ff6c47b..ad37cb0 100644 --- a/Steepfile +++ b/Steepfile @@ -6,6 +6,7 @@ rbs_root = Gem.loaded_specs['rbs'].full_gem_path stdlib_path core_root: 'core', stdlib_root: "#{rbs_root}/stdlib" target :test do check 'test' + signature 'test/sig' configure_code_diagnostics(D::Ruby.strict) end From 8e91abccbd80d9c91c08749f3c6ebc12fb7ed60b Mon Sep 17 00:00:00 2001 From: tufusa Date: Mon, 25 May 2026 10:04:22 +0900 Subject: [PATCH 2/3] =?UTF-8?q?chore:=20`Enumerable`=20=E3=82=92=E5=AE=9A?= =?UTF-8?q?=E7=BE=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- core/enumerable.rbs | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 core/enumerable.rbs diff --git a/core/enumerable.rbs b/core/enumerable.rbs new file mode 100644 index 0000000..3cdf8d9 --- /dev/null +++ b/core/enumerable.rbs @@ -0,0 +1,12 @@ +module Enumerable[unchecked out Elem] : _Each[Elem] + interface _Each[unchecked out T] + def each: () { (T) -> void } -> void + end + + # TODO: Array + # def collect: [T]() { (Elem item) -> T } -> Array[T] + # + # alias map collect + + def each_with_index: () { (Elem item, Integer index) -> void } -> self +end From a74a206e759b92bc60330a3d1bae8b7e418f962d Mon Sep 17 00:00:00 2001 From: tufusa Date: Mon, 25 May 2026 10:04:38 +0900 Subject: [PATCH 3/3] =?UTF-8?q?chore:=20=E3=83=86=E3=82=B9=E3=83=88?= =?UTF-8?q?=E3=82=92=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- test/enumerable.rb | 27 +++++++++++++++++++++++++++ test/sig/enumerable.rbs | 5 +++++ 2 files changed, 32 insertions(+) create mode 100644 test/enumerable.rb create mode 100644 test/sig/enumerable.rbs diff --git a/test/enumerable.rb b/test/enumerable.rb new file mode 100644 index 0000000..e1039c0 --- /dev/null +++ b/test/enumerable.rb @@ -0,0 +1,27 @@ +# frozen_string_literal: true + +# rubocop:disable Lint/Void +# rubocop:disable Style/Documentation + +class EnumerableTestClass + include Enumerable + + def each + yield 'Hello' + end +end + +a = EnumerableTestClass.new +a.each { |item| item } + +# TODO: Array +# a.collect { |item| item } +# +# a.map { |item| item } + +a.each_with_index do |item, index| + item + index +end + +# rubocop:enable all diff --git a/test/sig/enumerable.rbs b/test/sig/enumerable.rbs new file mode 100644 index 0000000..85e27aa --- /dev/null +++ b/test/sig/enumerable.rbs @@ -0,0 +1,5 @@ +class EnumerableTestClass + include Enumerable[String] + + def each: () { (String) -> void } -> void +end