rbs 3.5.3 → 3.6.0.dev.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.github/workflows/dependabot.yml +5 -1
- data/.github/workflows/ruby.yml +2 -18
- data/.github/workflows/windows.yml +26 -0
- data/CHANGELOG.md +0 -18
- data/core/array.rbs +10 -10
- data/core/basic_object.rbs +3 -3
- data/core/enumerable.rbs +6 -0
- data/core/enumerator.rbs +7 -0
- data/core/fiber.rbs +1 -1
- data/core/global_variables.rbs +2 -2
- data/core/kernel.rbs +67 -38
- data/core/method.rbs +98 -7
- data/core/module.rbs +2 -2
- data/core/proc.rbs +184 -23
- data/core/ractor.rbs +1 -1
- data/core/range.rbs +30 -0
- data/core/refinement.rbs +16 -26
- data/core/symbol.rbs +34 -26
- data/core/thread.rbs +2 -2
- data/core/trace_point.rbs +12 -12
- data/core/unbound_method.rbs +1 -1
- data/docs/syntax.md +21 -9
- data/ext/rbs_extension/parser.c +119 -51
- data/ext/rbs_extension/ruby_objs.c +2 -1
- data/ext/rbs_extension/ruby_objs.h +1 -1
- data/lib/rbs/ast/declarations.rb +36 -0
- data/lib/rbs/ast/type_param.rb +71 -15
- data/lib/rbs/ast/visitor.rb +137 -0
- data/lib/rbs/cli/validate.rb +41 -7
- data/lib/rbs/cli.rb +3 -3
- data/lib/rbs/definition.rb +2 -1
- data/lib/rbs/definition_builder/ancestor_builder.rb +30 -4
- data/lib/rbs/definition_builder.rb +21 -6
- data/lib/rbs/environment_loader.rb +1 -1
- data/lib/rbs/errors.rb +7 -2
- data/lib/rbs/file_finder.rb +9 -12
- data/lib/rbs/locator.rb +8 -5
- data/lib/rbs/prototype/rbi.rb +2 -1
- data/lib/rbs/prototype/runtime.rb +3 -2
- data/lib/rbs/sorter.rb +9 -6
- data/lib/rbs/test/type_check.rb +6 -0
- data/lib/rbs/types.rb +11 -0
- data/lib/rbs/validator.rb +2 -2
- data/lib/rbs/vendorer.rb +3 -3
- data/lib/rbs/version.rb +1 -1
- data/lib/rbs.rb +1 -0
- data/sig/declarations.rbs +6 -0
- data/sig/definition.rbs +1 -1
- data/sig/definition_builder.rbs +3 -1
- data/sig/errors.rbs +3 -2
- data/sig/file_finder.rbs +24 -2
- data/sig/method_types.rbs +1 -1
- data/sig/sorter.rbs +1 -1
- data/sig/type_param.rbs +41 -9
- data/sig/types.rbs +12 -0
- data/sig/visitor.rbs +47 -0
- data/stdlib/csv/0/csv.rbs +27 -0
- data/stdlib/net-http/0/net-http.rbs +1 -1
- data/stdlib/zlib/0/gzip_reader.rbs +5 -1
- metadata +5 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f9c653ea578000329720980ce7845237e8c49c9319a72c5a4f5bc315306cde02
|
4
|
+
data.tar.gz: e9ccad52c36cd4ef0509ce78ab0d857810b80ed6489d8b6b1fcdac0af47f5e59
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c2468b174c0800686e77f26122898d84e2f2506b5b91074d30d18766ce60992257bd560843972ddf72c77e9b8bda26dfb58f012893dbae1585f994fecd480a7b
|
7
|
+
data.tar.gz: 9c534d38496760cc1ad91f8776e83e61672305c564c6b14fc206fd202817a5be2d60d675558dfbe6b9fadbf9f980c595c2432c821cae38a5b447857d5601ab5e
|
@@ -11,8 +11,11 @@ env:
|
|
11
11
|
jobs:
|
12
12
|
dependabot:
|
13
13
|
runs-on: ubuntu-latest
|
14
|
-
if: ${{ github.
|
14
|
+
if: ${{ github.event.pull_request.user.login == 'dependabot[bot]' }}
|
15
15
|
steps:
|
16
|
+
- name: Dependabot metadata
|
17
|
+
uses: dependabot/fetch-metadata@dbb049abf0d677abbd7f7eee0375145b417fdd34 # v2.2.0
|
18
|
+
id: metadata
|
16
19
|
- name: Checkout repository
|
17
20
|
uses: actions/checkout@v4
|
18
21
|
with:
|
@@ -21,6 +24,7 @@ jobs:
|
|
21
24
|
run: git diff --exit-code ${{ github.event.pull_request.base.sha }} ${{ github.event.pull_request.head.sha }} ${{ env.blocker_files }}
|
22
25
|
- name: Enable auto-merge for Dependabot PRs
|
23
26
|
run: gh pr merge --auto --merge "$PR_URL"
|
27
|
+
if: ${{ steps.metadata.outputs.update-type == 'version-update:semver-minor' || steps.metadata.outputs.update-type == 'version-update:semver-patch' }}
|
24
28
|
env:
|
25
29
|
PR_URL: ${{github.event.pull_request.html_url}}
|
26
30
|
GH_TOKEN: ${{secrets.DEPENDABOT_MERGE_GH_TOKEN}}
|
data/.github/workflows/ruby.yml
CHANGED
@@ -42,6 +42,8 @@ jobs:
|
|
42
42
|
bundler: none
|
43
43
|
- name: Set working directory as safe
|
44
44
|
run: git config --global --add safe.directory $(pwd)
|
45
|
+
- name: Set up permission
|
46
|
+
run: chmod -R o-w /opt/hostedtoolcache/Ruby
|
45
47
|
- name: Install dependencies
|
46
48
|
run: |
|
47
49
|
sudo apt-get update
|
@@ -76,21 +78,3 @@ jobs:
|
|
76
78
|
- name: Run test
|
77
79
|
run: |
|
78
80
|
bundle exec rake ${{ matrix.job }}
|
79
|
-
|
80
|
-
windows:
|
81
|
-
runs-on: ${{ matrix.os }}
|
82
|
-
strategy:
|
83
|
-
fail-fast: false
|
84
|
-
matrix:
|
85
|
-
os: [windows-2019, windows-2022]
|
86
|
-
ruby: [ucrt, mswin]
|
87
|
-
steps:
|
88
|
-
- uses: actions/checkout@v4
|
89
|
-
- name: load ruby
|
90
|
-
uses: ruby/setup-ruby@v1
|
91
|
-
with:
|
92
|
-
ruby-version: ${{ matrix.ruby }}
|
93
|
-
- name: rake-compiler
|
94
|
-
run: gem install rake-compiler
|
95
|
-
- name: compile
|
96
|
-
run: rake compile
|
@@ -0,0 +1,26 @@
|
|
1
|
+
name: Ruby on Windows
|
2
|
+
|
3
|
+
on:
|
4
|
+
push:
|
5
|
+
branches:
|
6
|
+
- master
|
7
|
+
pull_request: {}
|
8
|
+
merge_group: {}
|
9
|
+
|
10
|
+
jobs:
|
11
|
+
compile:
|
12
|
+
runs-on: "windows-latest"
|
13
|
+
strategy:
|
14
|
+
fail-fast: false
|
15
|
+
matrix:
|
16
|
+
ruby: ['3.2', '3.3', ucrt, mswin]
|
17
|
+
steps:
|
18
|
+
- uses: actions/checkout@v4
|
19
|
+
- name: load ruby
|
20
|
+
uses: ruby/setup-ruby@v1
|
21
|
+
with:
|
22
|
+
ruby-version: ${{ matrix.ruby }}
|
23
|
+
- name: rake-compiler
|
24
|
+
run: gem install rake-compiler
|
25
|
+
- name: compile
|
26
|
+
run: rake compile
|
data/CHANGELOG.md
CHANGED
@@ -1,23 +1,5 @@
|
|
1
1
|
# CHANGELOG
|
2
2
|
|
3
|
-
## 3.5.3 (2024-08-23)
|
4
|
-
|
5
|
-
### Library changes
|
6
|
-
|
7
|
-
* Backport GC fix PR ([#1977](https://github.com/ruby/rbs/pull/1977))
|
8
|
-
|
9
|
-
## 3.5.2 (2024-07-10)
|
10
|
-
|
11
|
-
### Library changes
|
12
|
-
|
13
|
-
* Update docs for ruby-3.3.4 ([#1923](https://github.com/ruby/rbs/pull/1923), Backported in [#1925](https://github.com/ruby/rbs/pull/1925))
|
14
|
-
* Update docs for ruby-3.3.3 ([#1889](https://github.com/ruby/rbs/pull/1889), Backported in [#1925](https://github.com/ruby/rbs/pull/1925))
|
15
|
-
* Fix #1905: Fix typo in `UntypedFunction` ([#1906](https://github.com/ruby/rbs/pull/1906), Backported in [#1925](https://github.com/ruby/rbs/pull/1925))
|
16
|
-
|
17
|
-
### Miscellaneous
|
18
|
-
|
19
|
-
* Use `File.open` instead of `IO.sysopen` ([#1913](https://github.com/ruby/rbs/pull/1913))
|
20
|
-
|
21
3
|
## 3.5.1 (2024-06-07)
|
22
4
|
|
23
5
|
### Library changes
|
data/core/array.rbs
CHANGED
@@ -1082,7 +1082,7 @@ class Array[unchecked out Elem] < Object
|
|
1082
1082
|
# a.at(0) # => :foo
|
1083
1083
|
# a.at(2) # => 2
|
1084
1084
|
#
|
1085
|
-
def at: (int index) -> Elem
|
1085
|
+
def at: %a{implicitly-returns-nil} (int index) -> Elem
|
1086
1086
|
|
1087
1087
|
# <!--
|
1088
1088
|
# rdoc-file=array.c
|
@@ -1378,7 +1378,7 @@ class Array[unchecked out Elem] < Object
|
|
1378
1378
|
#
|
1379
1379
|
# If `index` is too small (far from zero), returns nil.
|
1380
1380
|
#
|
1381
|
-
def delete_at: (int index) -> Elem
|
1381
|
+
def delete_at: %a{implicitly-returns-nil} (int index) -> Elem
|
1382
1382
|
|
1383
1383
|
# <!--
|
1384
1384
|
# rdoc-file=array.c
|
@@ -1942,7 +1942,7 @@ class Array[unchecked out Elem] < Object
|
|
1942
1942
|
#
|
1943
1943
|
# Related: #last.
|
1944
1944
|
#
|
1945
|
-
def first: () -> Elem
|
1945
|
+
def first: %a{implicitly-returns-nil} () -> Elem
|
1946
1946
|
| (int n) -> ::Array[Elem]
|
1947
1947
|
|
1948
1948
|
# <!--
|
@@ -2241,7 +2241,7 @@ class Array[unchecked out Elem] < Object
|
|
2241
2241
|
#
|
2242
2242
|
# Related: #first.
|
2243
2243
|
#
|
2244
|
-
def last: () -> Elem
|
2244
|
+
def last: %a{implicitly-returns-nil} () -> Elem
|
2245
2245
|
| (int n) -> ::Array[Elem]
|
2246
2246
|
|
2247
2247
|
# <!--
|
@@ -2321,8 +2321,8 @@ class Array[unchecked out Elem] < Object
|
|
2321
2321
|
#
|
2322
2322
|
# ['0', '00', '000'].max(2) {|a, b| a.size <=> b.size } # => ["000", "00"]
|
2323
2323
|
#
|
2324
|
-
def max: () -> Elem
|
2325
|
-
| () { (Elem a, Elem b) -> ::Integer? } -> Elem
|
2324
|
+
def max: %a{implicitly-returns-nil} () -> Elem
|
2325
|
+
| %a{implicitly-returns-nil} () { (Elem a, Elem b) -> ::Integer? } -> Elem
|
2326
2326
|
| (int n) -> ::Array[Elem]
|
2327
2327
|
| (int n) { (Elem a, Elem b) -> ::Integer? } -> ::Array[Elem]
|
2328
2328
|
|
@@ -3118,7 +3118,7 @@ class Array[unchecked out Elem] < Object
|
|
3118
3118
|
# a.sample(random: Random.new(1)) #=> 6
|
3119
3119
|
# a.sample(4, random: Random.new(1)) #=> [6, 10, 9, 2]
|
3120
3120
|
#
|
3121
|
-
def sample: (?random: _Rand rng) -> Elem
|
3121
|
+
def sample: %a{implicitly-returns-nil} (?random: _Rand rng) -> Elem
|
3122
3122
|
| (int n, ?random: _Rand rng) -> ::Array[Elem]
|
3123
3123
|
|
3124
3124
|
# <!--
|
@@ -3197,7 +3197,7 @@ class Array[unchecked out Elem] < Object
|
|
3197
3197
|
#
|
3198
3198
|
# Related: #push, #pop, #unshift.
|
3199
3199
|
#
|
3200
|
-
def shift: () -> Elem
|
3200
|
+
def shift: %a{implicitly-returns-nil} () -> Elem
|
3201
3201
|
| (int n) -> ::Array[Elem]
|
3202
3202
|
|
3203
3203
|
# <!--
|
@@ -3323,7 +3323,7 @@ class Array[unchecked out Elem] < Object
|
|
3323
3323
|
# # Raises TypeError (no implicit conversion of Symbol into Integer):
|
3324
3324
|
# a[:foo]
|
3325
3325
|
#
|
3326
|
-
def slice: (int index) -> Elem
|
3326
|
+
def slice: %a{implicitly-returns-nil} (int index) -> Elem
|
3327
3327
|
| (int start, int length) -> ::Array[Elem]?
|
3328
3328
|
| (::Range[::Integer] range) -> ::Array[Elem]?
|
3329
3329
|
|
@@ -3393,7 +3393,7 @@ class Array[unchecked out Elem] < Object
|
|
3393
3393
|
# a.slice!(-2..2) # => ["bar", 2]
|
3394
3394
|
# a # => [:foo]
|
3395
3395
|
#
|
3396
|
-
def slice!: (int index) -> Elem
|
3396
|
+
def slice!: %a{implicitly-returns-nil} (int index) -> Elem
|
3397
3397
|
| (int start, int length) -> ::Array[Elem]?
|
3398
3398
|
| (::Range[::Integer] range) -> ::Array[Elem]?
|
3399
3399
|
|
data/core/basic_object.rbs
CHANGED
@@ -163,7 +163,7 @@ class BasicObject
|
|
163
163
|
# k = Klass.new
|
164
164
|
# k.send :hello, "gentle", "readers" #=> "Hello gentle readers"
|
165
165
|
#
|
166
|
-
def __send__: (interned name, *untyped, **untyped) ?{ (
|
166
|
+
def __send__: (interned name, *untyped, **untyped) ?{ (?) -> untyped } -> untyped
|
167
167
|
|
168
168
|
# <!-- rdoc-file=object.c -->
|
169
169
|
# Equality --- At the Object level, #== returns `true` only if `obj` and `other`
|
@@ -248,7 +248,7 @@ class BasicObject
|
|
248
248
|
# k = KlassWithSecret.new
|
249
249
|
# k.instance_exec(5) {|x| @secret+x } #=> 104
|
250
250
|
#
|
251
|
-
def instance_exec: [U
|
251
|
+
def instance_exec: [U] (*untyped, **untyped) { (?) [self: self] -> U } -> U
|
252
252
|
|
253
253
|
# <!--
|
254
254
|
# rdoc-file=object.c
|
@@ -295,7 +295,7 @@ class BasicObject
|
|
295
295
|
# r.mm #=> 2000
|
296
296
|
# r.foo #=> NoMethodError
|
297
297
|
#
|
298
|
-
def method_missing: (Symbol, *untyped, **untyped) ?{ (
|
298
|
+
def method_missing: (Symbol, *untyped, **untyped) ?{ (?) -> untyped } -> untyped
|
299
299
|
|
300
300
|
# <!--
|
301
301
|
# rdoc-file=object.c
|
data/core/enumerable.rbs
CHANGED
@@ -528,6 +528,12 @@ module Enumerable[unchecked out Elem] : _Each[Elem]
|
|
528
528
|
#
|
529
529
|
def entries: () -> ::Array[Elem]
|
530
530
|
|
531
|
+
def enum_for: (Symbol method, *untyped, **untyped) ?{ (?) -> Integer } -> Enumerator[untyped, untyped]
|
532
|
+
| () ?{ () -> Integer } -> Enumerator[Elem, self]
|
533
|
+
|
534
|
+
%a{annotate:rdoc:skip}
|
535
|
+
alias to_enum enum_for
|
536
|
+
|
531
537
|
# <!--
|
532
538
|
# rdoc-file=enum.c
|
533
539
|
# - select {|element| ... } -> array
|
data/core/enumerator.rbs
CHANGED
@@ -130,6 +130,13 @@
|
|
130
130
|
class Enumerator[unchecked out Elem, out Return] < Object
|
131
131
|
include Enumerable[Elem]
|
132
132
|
|
133
|
+
# A convenience interface for `each` with optional block
|
134
|
+
#
|
135
|
+
interface _Each[out E, out R]
|
136
|
+
def each: () { (E) -> void } -> R
|
137
|
+
| () -> Enumerator[E, R]
|
138
|
+
end
|
139
|
+
|
133
140
|
# <!--
|
134
141
|
# rdoc-file=enumerator.c
|
135
142
|
# - Enumerator.produce(initial = nil) { |prev| block } -> enumerator
|
data/core/fiber.rbs
CHANGED
@@ -268,7 +268,7 @@ class Fiber < Object
|
|
268
268
|
# Explicitly using `storage: true` is currently experimental and may change in
|
269
269
|
# the future.
|
270
270
|
#
|
271
|
-
def initialize: (?blocking: boolish, ?storage: true | Hash[interned, untyped] | nil) { (
|
271
|
+
def initialize: (?blocking: boolish, ?storage: true | Hash[interned, untyped] | nil) { (?) -> void } -> void
|
272
272
|
|
273
273
|
# <!--
|
274
274
|
# rdoc-file=cont.c
|
data/core/global_variables.rbs
CHANGED
@@ -118,7 +118,7 @@ $;: Regexp | String | nil
|
|
118
118
|
$<: RBS::Unnamed::ARGFClass
|
119
119
|
|
120
120
|
# This variable is no longer effective. Deprecated.
|
121
|
-
$=:
|
121
|
+
$=: false
|
122
122
|
|
123
123
|
# The default output stream for Kernel#print and Kernel#printf. $stdout by default.
|
124
124
|
$>: IO
|
@@ -150,7 +150,7 @@ $LOADED_FEATURES: Array[String]
|
|
150
150
|
$LOAD_PATH: Array[String] & _LoadPathAPI
|
151
151
|
|
152
152
|
interface _LoadPathAPI
|
153
|
-
def resolve_feature_path: (
|
153
|
+
def resolve_feature_path: (path feature_path) -> [:rb | :so, String]?
|
154
154
|
end
|
155
155
|
|
156
156
|
# Contains the name of the script being executed. May be assignable.
|
data/core/kernel.rbs
CHANGED
@@ -282,7 +282,7 @@ module Kernel : BasicObject
|
|
282
282
|
# 1.class #=> Integer
|
283
283
|
# self.class #=> Object
|
284
284
|
#
|
285
|
-
def class: () ->
|
285
|
+
def class: () -> Class
|
286
286
|
|
287
287
|
# <!--
|
288
288
|
# rdoc-file=vm_eval.c
|
@@ -2066,7 +2066,7 @@ module Kernel : BasicObject
|
|
2066
2066
|
# Returns true if two objects do not match (using the *=~* method), otherwise
|
2067
2067
|
# false.
|
2068
2068
|
#
|
2069
|
-
def !~: (untyped) -> bool
|
2069
|
+
def !~: (untyped other) -> bool
|
2070
2070
|
|
2071
2071
|
# <!--
|
2072
2072
|
# rdoc-file=object.c
|
@@ -2086,7 +2086,7 @@ module Kernel : BasicObject
|
|
2086
2086
|
# When you define #<=>, you can include Comparable to gain the methods #<=, #<,
|
2087
2087
|
# #==, #>=, #> and #between?.
|
2088
2088
|
#
|
2089
|
-
def <=>: (untyped) ->
|
2089
|
+
def <=>: (untyped other) -> 0?
|
2090
2090
|
|
2091
2091
|
# <!--
|
2092
2092
|
# rdoc-file=object.c
|
@@ -2096,7 +2096,7 @@ module Kernel : BasicObject
|
|
2096
2096
|
# typically overridden by descendants to provide meaningful semantics in `case`
|
2097
2097
|
# statements.
|
2098
2098
|
#
|
2099
|
-
|
2099
|
+
alias === ==
|
2100
2100
|
|
2101
2101
|
# <!--
|
2102
2102
|
# rdoc-file=kernel.rb
|
@@ -2152,8 +2152,8 @@ module Kernel : BasicObject
|
|
2152
2152
|
# chris.define_singleton_method(:greet) {|greeting| "#{greeting}, I'm Chris!" }
|
2153
2153
|
# chris.greet("Hi") #=> "Hi, I'm Chris!"
|
2154
2154
|
#
|
2155
|
-
def define_singleton_method: (interned, Method | UnboundMethod | Proc method) -> Symbol
|
2156
|
-
| (interned) { (
|
2155
|
+
def define_singleton_method: (interned name, Method | UnboundMethod | Proc method) -> Symbol
|
2156
|
+
| (interned name) { (?) -> untyped } -> Symbol
|
2157
2157
|
|
2158
2158
|
# <!--
|
2159
2159
|
# rdoc-file=io.c
|
@@ -2170,7 +2170,7 @@ module Kernel : BasicObject
|
|
2170
2170
|
#
|
2171
2171
|
# 1cat[4, 5, 6]
|
2172
2172
|
#
|
2173
|
-
def display: (?_Writer port) ->
|
2173
|
+
def display: (?_Writer port) -> nil
|
2174
2174
|
|
2175
2175
|
# <!--
|
2176
2176
|
# rdoc-file=object.c
|
@@ -2210,7 +2210,7 @@ module Kernel : BasicObject
|
|
2210
2210
|
# s3 = s1.dup #=> #<Klass:0x401c1084>
|
2211
2211
|
# s3.foo #=> NoMethodError: undefined method `foo' for #<Klass:0x401c1084>
|
2212
2212
|
#
|
2213
|
-
def dup: () ->
|
2213
|
+
def dup: () -> instance
|
2214
2214
|
|
2215
2215
|
# <!-- rdoc-file=enumerator.c -->
|
2216
2216
|
# Creates a new Enumerator which will enumerate by calling `method` on `obj`,
|
@@ -2267,10 +2267,8 @@ module Kernel : BasicObject
|
|
2267
2267
|
# enum.first(4) # => [1, 1, 1, 2]
|
2268
2268
|
# enum.size # => 42
|
2269
2269
|
#
|
2270
|
-
def enum_for: (
|
2271
|
-
| () ?{ () -> Integer } -> Enumerator[untyped, self]
|
2270
|
+
def enum_for: (?interned method, *untyped, **untyped) ?{ (*untyped, **untyped) -> Integer } -> Enumerator[untyped, untyped]
|
2272
2271
|
|
2273
|
-
%a{annotate:rdoc:skip}
|
2274
2272
|
alias to_enum enum_for
|
2275
2273
|
|
2276
2274
|
# <!--
|
@@ -2308,7 +2306,7 @@ module Kernel : BasicObject
|
|
2308
2306
|
# 1 == 1.0 #=> true
|
2309
2307
|
# 1.eql? 1.0 #=> false
|
2310
2308
|
#
|
2311
|
-
def eql?: (untyped) -> bool
|
2309
|
+
def eql?: (untyped other) -> bool
|
2312
2310
|
|
2313
2311
|
# <!--
|
2314
2312
|
# rdoc-file=eval.c
|
@@ -2333,7 +2331,7 @@ module Kernel : BasicObject
|
|
2333
2331
|
# k.extend(Mod) #=> #<Klass:0x401b3bc8>
|
2334
2332
|
# k.hello #=> "Hello from Mod.\n"
|
2335
2333
|
#
|
2336
|
-
def extend: (Module, *Module) -> self
|
2334
|
+
def extend: (Module module, *Module other_modules) -> self
|
2337
2335
|
|
2338
2336
|
# <!--
|
2339
2337
|
# rdoc-file=object.c
|
@@ -2447,7 +2445,7 @@ module Kernel : BasicObject
|
|
2447
2445
|
# b.instance_of? B #=> true
|
2448
2446
|
# b.instance_of? C #=> false
|
2449
2447
|
#
|
2450
|
-
def instance_of?: (Module) -> bool
|
2448
|
+
def instance_of?: (Module | Class module_or_class) -> bool
|
2451
2449
|
|
2452
2450
|
# <!--
|
2453
2451
|
# rdoc-file=object.c
|
@@ -2467,7 +2465,7 @@ module Kernel : BasicObject
|
|
2467
2465
|
# fred.instance_variable_defined?("@b") #=> true
|
2468
2466
|
# fred.instance_variable_defined?("@c") #=> false
|
2469
2467
|
#
|
2470
|
-
def instance_variable_defined?: (interned
|
2468
|
+
def instance_variable_defined?: (interned variable) -> bool
|
2471
2469
|
|
2472
2470
|
# <!--
|
2473
2471
|
# rdoc-file=object.c
|
@@ -2489,7 +2487,7 @@ module Kernel : BasicObject
|
|
2489
2487
|
# fred.instance_variable_get(:@a) #=> "cat"
|
2490
2488
|
# fred.instance_variable_get("@b") #=> 99
|
2491
2489
|
#
|
2492
|
-
def instance_variable_get: (interned
|
2490
|
+
def instance_variable_get: (interned variable) -> untyped
|
2493
2491
|
|
2494
2492
|
# <!--
|
2495
2493
|
# rdoc-file=object.c
|
@@ -2512,7 +2510,7 @@ module Kernel : BasicObject
|
|
2512
2510
|
# fred.instance_variable_set(:@c, 'cat') #=> "cat"
|
2513
2511
|
# fred.inspect #=> "#<Fred:0x401b3da8 @a=\"dog\", @b=99, @c=\"cat\">"
|
2514
2512
|
#
|
2515
|
-
def instance_variable_set: [
|
2513
|
+
def instance_variable_set: [T] (interned variable, T value) -> T
|
2516
2514
|
|
2517
2515
|
# <!--
|
2518
2516
|
# rdoc-file=object.c
|
@@ -2553,9 +2551,8 @@ module Kernel : BasicObject
|
|
2553
2551
|
# b.kind_of? C #=> false
|
2554
2552
|
# b.kind_of? M #=> true
|
2555
2553
|
#
|
2556
|
-
def is_a?: (Module) -> bool
|
2554
|
+
def is_a?: (Module | Class module_or_class) -> bool
|
2557
2555
|
|
2558
|
-
%a{annotate:rdoc:skip}
|
2559
2556
|
alias kind_of? is_a?
|
2560
2557
|
|
2561
2558
|
# <!--
|
@@ -2636,7 +2633,7 @@ module Kernel : BasicObject
|
|
2636
2633
|
# k.extend M123
|
2637
2634
|
# k.methods(false) #=> [:singleton_method]
|
2638
2635
|
#
|
2639
|
-
def methods: () -> Array[Symbol]
|
2636
|
+
def methods: (?boolish regular) -> Array[Symbol]
|
2640
2637
|
|
2641
2638
|
# <!--
|
2642
2639
|
# rdoc-file=object.c
|
@@ -2647,7 +2644,7 @@ module Kernel : BasicObject
|
|
2647
2644
|
# Object.new.nil? #=> false
|
2648
2645
|
# nil.nil? #=> true
|
2649
2646
|
#
|
2650
|
-
def nil?: () ->
|
2647
|
+
def nil?: () -> false
|
2651
2648
|
|
2652
2649
|
# <!--
|
2653
2650
|
# rdoc-file=gc.c
|
@@ -2672,7 +2669,7 @@ module Kernel : BasicObject
|
|
2672
2669
|
# "hello".object_id == "hello".object_id # => false
|
2673
2670
|
# "hi".freeze.object_id == "hi".freeze.object_id # => true
|
2674
2671
|
#
|
2675
|
-
|
2672
|
+
alias object_id __id__
|
2676
2673
|
|
2677
2674
|
# <!--
|
2678
2675
|
# rdoc-file=object.c
|
@@ -2682,7 +2679,7 @@ module Kernel : BasicObject
|
|
2682
2679
|
# parameter is set to `false`, only those methods in the receiver will be
|
2683
2680
|
# listed.
|
2684
2681
|
#
|
2685
|
-
def private_methods: () -> Array[Symbol]
|
2682
|
+
def private_methods: (?boolish all) -> Array[Symbol]
|
2686
2683
|
|
2687
2684
|
# <!--
|
2688
2685
|
# rdoc-file=object.c
|
@@ -2692,7 +2689,7 @@ module Kernel : BasicObject
|
|
2692
2689
|
# parameter is set to `false`, only those methods in the receiver will be
|
2693
2690
|
# listed.
|
2694
2691
|
#
|
2695
|
-
def protected_methods: () -> Array[Symbol]
|
2692
|
+
def protected_methods: (?boolish all) -> Array[Symbol]
|
2696
2693
|
|
2697
2694
|
# <!--
|
2698
2695
|
# rdoc-file=proc.c
|
@@ -2722,7 +2719,7 @@ module Kernel : BasicObject
|
|
2722
2719
|
#
|
2723
2720
|
# 1.public_send(:puts, "hello") # causes NoMethodError
|
2724
2721
|
#
|
2725
|
-
def public_send: (interned name, *untyped
|
2722
|
+
def public_send: (interned name, *untyped, **untyped) ?{ (?) -> untyped } -> untyped
|
2726
2723
|
|
2727
2724
|
# <!--
|
2728
2725
|
# rdoc-file=object.c
|
@@ -2746,7 +2743,7 @@ module Kernel : BasicObject
|
|
2746
2743
|
# d.remove #=> 99
|
2747
2744
|
# d.var #=> nil
|
2748
2745
|
#
|
2749
|
-
def remove_instance_variable: (interned
|
2746
|
+
def remove_instance_variable: (interned variable) -> untyped
|
2750
2747
|
|
2751
2748
|
# <!--
|
2752
2749
|
# rdoc-file=vm_method.c
|
@@ -2782,8 +2779,7 @@ module Kernel : BasicObject
|
|
2782
2779
|
#
|
2783
2780
|
# See #respond_to?, and the example of BasicObject.
|
2784
2781
|
#
|
2785
|
-
|
2786
|
-
private def respond_to_missing?: (Symbol, bool) -> bool
|
2782
|
+
private def respond_to_missing?: (Symbol | String name, bool include_all) -> bool
|
2787
2783
|
|
2788
2784
|
# <!--
|
2789
2785
|
# rdoc-file=vm_eval.c
|
@@ -2808,7 +2804,7 @@ module Kernel : BasicObject
|
|
2808
2804
|
# k = Klass.new
|
2809
2805
|
# k.send :hello, "gentle", "readers" #=> "Hello gentle readers"
|
2810
2806
|
#
|
2811
|
-
|
2807
|
+
alias send __send__
|
2812
2808
|
|
2813
2809
|
# <!--
|
2814
2810
|
# rdoc-file=object.c
|
@@ -2883,7 +2879,7 @@ module Kernel : BasicObject
|
|
2883
2879
|
# a.singleton_methods(false) #=> [:two, :one]
|
2884
2880
|
# a.singleton_methods #=> [:two, :one, :three]
|
2885
2881
|
#
|
2886
|
-
def singleton_methods: () -> Array[Symbol]
|
2882
|
+
def singleton_methods: (?boolish all) -> Array[Symbol]
|
2887
2883
|
|
2888
2884
|
# <!--
|
2889
2885
|
# rdoc-file=kernel.rb
|
@@ -2919,17 +2915,50 @@ module Kernel : BasicObject
|
|
2919
2915
|
#
|
2920
2916
|
# "my string".yield_self {|s| s.upcase } #=> "MY STRING"
|
2921
2917
|
#
|
2922
|
-
def yield_self:
|
2923
|
-
| ()
|
2918
|
+
def yield_self: () -> Enumerator[self, untyped]
|
2919
|
+
| [T] () { (self) -> T } -> T
|
2924
2920
|
|
2925
|
-
|
2921
|
+
# <!--
|
2922
|
+
# rdoc-file=kernel.rb
|
2923
|
+
# - obj.then {|x| block } -> an_object
|
2924
|
+
# -->
|
2925
|
+
# Yields self to the block and returns the result of the block.
|
2926
|
+
#
|
2927
|
+
# 3.next.then {|x| x**x }.to_s #=> "256"
|
2928
|
+
#
|
2929
|
+
# Good usage for `then` is value piping in method chains:
|
2930
|
+
#
|
2931
|
+
# require 'open-uri'
|
2932
|
+
# require 'json'
|
2933
|
+
#
|
2934
|
+
# construct_url(arguments).
|
2935
|
+
# then {|url| URI(url).read }.
|
2936
|
+
# then {|response| JSON.parse(response) }
|
2937
|
+
#
|
2938
|
+
# When called without block, the method returns `Enumerator`, which can be used,
|
2939
|
+
# for example, for conditional circuit-breaking:
|
2940
|
+
#
|
2941
|
+
# # meets condition, no-op
|
2942
|
+
# 1.then.detect(&:odd?) # => 1
|
2943
|
+
# # does not meet condition, drop value
|
2944
|
+
# 2.then.detect(&:odd?) # => nil
|
2945
|
+
#
|
2946
|
+
# Good usage for `then` is value piping in method chains:
|
2947
|
+
#
|
2948
|
+
# require 'open-uri'
|
2949
|
+
# require 'json'
|
2950
|
+
#
|
2951
|
+
# construct_url(arguments).
|
2952
|
+
# then {|url| URI(url).read }.
|
2953
|
+
# then {|response| JSON.parse(response) }
|
2954
|
+
#
|
2926
2955
|
alias then yield_self
|
2927
2956
|
|
2928
|
-
private
|
2957
|
+
private
|
2929
2958
|
|
2930
|
-
|
2959
|
+
def initialize_copy: (instance object) -> self
|
2931
2960
|
|
2932
|
-
|
2933
|
-
end
|
2961
|
+
def initialize_clone: (instance object, ?freeze: bool?) -> self
|
2934
2962
|
|
2935
|
-
|
2963
|
+
def initialize_dup: (instance object) -> self
|
2964
|
+
end
|