rbs 3.3.2 → 3.4.0.pre.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/comments.yml +2 -5
- data/.github/workflows/ruby.yml +7 -8
- data/.github/workflows/typecheck.yml +37 -0
- data/CHANGELOG.md +50 -0
- data/Gemfile +1 -1
- data/Gemfile.lock +11 -11
- data/Steepfile +2 -2
- data/core/array.rbs +19 -49
- data/core/basic_object.rbs +2 -2
- data/core/comparable.rbs +17 -8
- data/core/complex.rbs +82 -43
- data/core/data.rbs +2 -4
- data/core/dir.rbs +635 -295
- data/core/enumerable.rbs +11 -18
- data/core/enumerator.rbs +37 -31
- data/core/errors.rbs +4 -0
- data/core/false_class.rbs +34 -15
- data/core/fiber.rbs +23 -0
- data/core/file.rbs +329 -120
- data/core/float.rbs +17 -32
- data/core/gc.rbs +17 -11
- data/core/hash.rbs +22 -44
- data/core/integer.rbs +82 -113
- data/core/io/buffer.rbs +90 -47
- data/core/io.rbs +39 -116
- data/core/kernel.rbs +442 -489
- data/core/match_data.rbs +55 -56
- data/core/module.rbs +45 -1
- data/core/nil_class.rbs +98 -35
- data/core/numeric.rbs +22 -32
- data/core/object_space/weak_key_map.rbs +102 -0
- data/core/process.rbs +1242 -655
- data/core/ractor.rbs +139 -120
- data/core/range.rbs +100 -4
- data/core/rational.rbs +0 -4
- data/core/rbs/unnamed/argf.rbs +16 -8
- data/core/rbs/unnamed/env_class.rbs +0 -24
- data/core/refinement.rbs +8 -0
- data/core/regexp.rbs +1149 -598
- data/core/ruby_vm.rbs +126 -12
- data/core/rubygems/platform.rbs +9 -0
- data/core/rubygems/rubygems.rbs +1 -1
- data/core/rubygems/version.rbs +5 -1
- data/core/set.rbs +20 -22
- data/core/signal.rbs +4 -4
- data/core/string.rbs +283 -230
- data/core/string_io.rbs +2 -14
- data/core/struct.rbs +404 -24
- data/core/symbol.rbs +1 -19
- data/core/thread.rbs +29 -12
- data/core/time.rbs +227 -104
- data/core/trace_point.rbs +2 -5
- data/core/true_class.rbs +54 -21
- data/core/warning.rbs +14 -11
- data/docs/data_and_struct.md +29 -0
- data/docs/syntax.md +3 -5
- data/docs/tools.md +1 -0
- data/ext/rbs_extension/lexer.c +643 -559
- data/ext/rbs_extension/lexer.re +5 -1
- data/ext/rbs_extension/parser.c +12 -3
- data/ext/rbs_extension/unescape.c +7 -47
- data/lib/rbs/cli/diff.rb +4 -1
- data/lib/rbs/cli/validate.rb +280 -0
- data/lib/rbs/cli.rb +2 -194
- data/lib/rbs/collection/config.rb +5 -6
- data/lib/rbs/collection/sources/git.rb +1 -1
- data/lib/rbs/collection.rb +1 -0
- data/lib/rbs/diff.rb +7 -4
- data/lib/rbs/errors.rb +11 -0
- data/lib/rbs/test/errors.rb +4 -1
- data/lib/rbs/test/guaranteed.rb +2 -3
- data/lib/rbs/test/type_check.rb +15 -10
- data/lib/rbs/test.rb +3 -3
- data/lib/rbs/types.rb +29 -0
- data/lib/rbs/unit_test/convertibles.rb +176 -0
- data/lib/rbs/unit_test/spy.rb +136 -0
- data/lib/rbs/unit_test/type_assertions.rb +341 -0
- data/lib/rbs/unit_test/with_aliases.rb +143 -0
- data/lib/rbs/unit_test.rb +6 -0
- data/lib/rbs/version.rb +1 -1
- data/sig/cli/validate.rbs +43 -0
- data/sig/diff.rbs +3 -1
- data/sig/errors.rbs +8 -0
- data/sig/rbs.rbs +1 -1
- data/sig/test/errors.rbs +52 -0
- data/sig/test/guranteed.rbs +9 -0
- data/sig/test/type_check.rbs +19 -0
- data/sig/test.rbs +82 -0
- data/sig/types.rbs +6 -1
- data/sig/unit_test/convertibles.rbs +154 -0
- data/sig/unit_test/spy.rbs +28 -0
- data/sig/unit_test/type_assertions.rbs +194 -0
- data/sig/unit_test/with_aliases.rbs +136 -0
- data/stdlib/base64/0/base64.rbs +307 -45
- data/stdlib/bigdecimal/0/big_decimal.rbs +35 -15
- data/stdlib/coverage/0/coverage.rbs +2 -2
- data/stdlib/csv/0/csv.rbs +25 -55
- data/stdlib/date/0/date.rbs +1 -43
- data/stdlib/date/0/date_time.rbs +1 -13
- data/stdlib/delegate/0/delegator.rbs +186 -0
- data/stdlib/delegate/0/kernel.rbs +47 -0
- data/stdlib/delegate/0/simple_delegator.rbs +98 -0
- data/stdlib/did_you_mean/0/did_you_mean.rbs +1 -1
- data/stdlib/erb/0/erb.rbs +2 -2
- data/stdlib/fileutils/0/fileutils.rbs +0 -19
- data/stdlib/io-console/0/io-console.rbs +12 -1
- data/stdlib/ipaddr/0/ipaddr.rbs +2 -1
- data/stdlib/json/0/json.rbs +320 -81
- data/stdlib/logger/0/logger.rbs +9 -5
- data/stdlib/monitor/0/monitor.rbs +78 -0
- data/stdlib/net-http/0/net-http.rbs +1880 -543
- data/stdlib/objspace/0/objspace.rbs +19 -13
- data/stdlib/openssl/0/openssl.rbs +508 -127
- data/stdlib/optparse/0/optparse.rbs +25 -11
- data/stdlib/pathname/0/pathname.rbs +1 -1
- data/stdlib/pp/0/pp.rbs +2 -5
- data/stdlib/prettyprint/0/prettyprint.rbs +2 -2
- data/stdlib/pstore/0/pstore.rbs +2 -4
- data/stdlib/rdoc/0/comment.rbs +1 -2
- data/stdlib/resolv/0/resolv.rbs +4 -2
- data/stdlib/socket/0/socket.rbs +2 -2
- data/stdlib/socket/0/unix_socket.rbs +2 -2
- data/stdlib/strscan/0/string_scanner.rbs +3 -2
- data/stdlib/tempfile/0/tempfile.rbs +1 -1
- data/stdlib/uri/0/common.rbs +245 -123
- metadata +23 -4
- data/lib/rbs/test/spy.rb +0 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 48c814d4cbaac5fe01ca09ff353a0fdde62a95b37a677e398925e0f1905b5a4f
|
4
|
+
data.tar.gz: 3e8ff356790ab3879392996f26db15d0c0e01686a7e496ee4c6e26f9b326b9b2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a14fdcafb7e142a4685fd31325900e24aceee40c17b453e87800bebcc1958e02d9ade0ff912ef711650a8e1ca8adae62c150ccd8377a6859d687be55ba999440
|
7
|
+
data.tar.gz: 8c69b1dafc7738fb35c6da0a12c33ac7fdc7bcd75f7fcefaf4dc68383b85fb3717fc21ca632d151ec9182633ebea115160edf44324681275de8dbfd945e7ba02
|
@@ -12,6 +12,8 @@ jobs:
|
|
12
12
|
runs-on: "ubuntu-latest"
|
13
13
|
container:
|
14
14
|
image: rubylang/ruby:3.2-dev-focal
|
15
|
+
env:
|
16
|
+
RUBY_COMMIT: v3_3_0_rc1
|
15
17
|
steps:
|
16
18
|
- uses: actions/checkout@v4
|
17
19
|
- name: Install dependencies
|
@@ -22,11 +24,6 @@ jobs:
|
|
22
24
|
run: |
|
23
25
|
ruby -v
|
24
26
|
gem update --system
|
25
|
-
- name: bundle config set with
|
26
|
-
run: |
|
27
|
-
echo "NO_MINITEST=true" >> $GITHUB_ENV
|
28
|
-
bundle config set --local without 'minitest'
|
29
|
-
if: "contains(matrix.container_tag, 'master-nightly')"
|
30
27
|
- name: bin/setup
|
31
28
|
run: |
|
32
29
|
bin/setup
|
data/.github/workflows/ruby.yml
CHANGED
@@ -31,9 +31,8 @@ jobs:
|
|
31
31
|
job: stdlib_test
|
32
32
|
- container_tag: 3.1-dev-focal
|
33
33
|
job: stdlib_test
|
34
|
-
|
35
|
-
|
36
|
-
allow_failures: "true"
|
34
|
+
- container_tag: 3.2-dev-focal
|
35
|
+
job: stdlib_test
|
37
36
|
container:
|
38
37
|
image: rubylang/ruby:${{ matrix.container_tag }}
|
39
38
|
steps:
|
@@ -43,14 +42,14 @@ jobs:
|
|
43
42
|
- name: Install dependencies
|
44
43
|
run: |
|
45
44
|
apt-get update
|
46
|
-
apt-get install -y libdb-dev curl autoconf automake m4 libtool
|
45
|
+
apt-get install -y libdb-dev curl autoconf automake m4 libtool python3
|
47
46
|
- name: Install Re2c
|
48
47
|
if: contains(matrix.job, 'lexer')
|
49
48
|
run: |
|
50
49
|
cd /tmp
|
51
|
-
curl -L https://github.com/skvadrik/re2c/archive/refs/tags/3.
|
52
|
-
tar xf re2c-3.
|
53
|
-
cd re2c-3.
|
50
|
+
curl -L https://github.com/skvadrik/re2c/archive/refs/tags/3.1.tar.gz > re2c-3.1.tar.gz
|
51
|
+
tar xf re2c-3.1.tar.gz
|
52
|
+
cd re2c-3.1
|
54
53
|
autoreconf -i -W all
|
55
54
|
./configure
|
56
55
|
make
|
@@ -63,7 +62,7 @@ jobs:
|
|
63
62
|
run: |
|
64
63
|
echo "NO_MINITEST=true" >> $GITHUB_ENV
|
65
64
|
bundle config set --local without 'minitest'
|
66
|
-
if:
|
65
|
+
if: ${{ contains(matrix.container_tag, 'master-nightly') }}
|
67
66
|
- name: bin/setup
|
68
67
|
run: |
|
69
68
|
bin/setup
|
@@ -0,0 +1,37 @@
|
|
1
|
+
name: Type check
|
2
|
+
|
3
|
+
on:
|
4
|
+
push:
|
5
|
+
branches:
|
6
|
+
- master
|
7
|
+
pull_request: {}
|
8
|
+
merge_group: {}
|
9
|
+
|
10
|
+
jobs:
|
11
|
+
test:
|
12
|
+
runs-on: "ubuntu-latest"
|
13
|
+
strategy:
|
14
|
+
fail-fast: false
|
15
|
+
matrix:
|
16
|
+
container_tag:
|
17
|
+
- 3.2-dev-focal
|
18
|
+
container:
|
19
|
+
image: rubylang/ruby:${{ matrix.container_tag }}
|
20
|
+
steps:
|
21
|
+
- uses: actions/checkout@v4
|
22
|
+
- name: Set working directory as safe
|
23
|
+
run: git config --global --add safe.directory $(pwd)
|
24
|
+
- name: Install dependencies
|
25
|
+
run: |
|
26
|
+
apt-get update
|
27
|
+
apt-get install -y libdb-dev curl autoconf automake m4 libtool
|
28
|
+
- name: Update rubygems & bundler
|
29
|
+
run: |
|
30
|
+
ruby -v
|
31
|
+
gem update --system
|
32
|
+
- name: bin/setup
|
33
|
+
run: |
|
34
|
+
bin/setup
|
35
|
+
- name: Run steep check
|
36
|
+
run: |
|
37
|
+
bin/steep check -j 2
|
data/CHANGELOG.md
CHANGED
@@ -2,6 +2,56 @@
|
|
2
2
|
|
3
3
|
## master
|
4
4
|
|
5
|
+
## 3.4.0.pre.1 (2023-12-19)
|
6
|
+
|
7
|
+
### Signature updates
|
8
|
+
|
9
|
+
* Changes in ruby-3.3 ([#1684](https://github.com/ruby/rbs/pull/1684), [#1674](https://github.com/ruby/rbs/pull/1674))
|
10
|
+
* Embedded docs update ([#1689](https://github.com/ruby/rbs/pull/1689), [#1676](https://github.com/ruby/rbs/pull/1676))
|
11
|
+
* delegate ([#1677](https://github.com/ruby/rbs/pull/1677))
|
12
|
+
* `MatchData` ([#1651](https://github.com/ruby/rbs/pull/1651))
|
13
|
+
* `String` ([#1672](https://github.com/ruby/rbs/pull/1672), [#1641](https://github.com/ruby/rbs/pull/1641))
|
14
|
+
* `Struct` ([#1621](https://github.com/ruby/rbs/pull/1621))
|
15
|
+
* `Warning` categories ([#1576](https://github.com/ruby/rbs/pull/1576))
|
16
|
+
* `ConditionVariable#wait` ([#1670](https://github.com/ruby/rbs/pull/1670))
|
17
|
+
* `Date.parse` ([#1653](https://github.com/ruby/rbs/pull/1653))
|
18
|
+
* `IO#gets` ([#1620](https://github.com/ruby/rbs/pull/1620))
|
19
|
+
* `Kernel.Pathname` ([#1681](https://github.com/ruby/rbs/pull/1681))
|
20
|
+
* `Resolv::DNS::Resource::Generic.create` ([#1655](https://github.com/ruby/rbs/pull/1655))
|
21
|
+
* `Thread#raise` ([#1668](https://github.com/ruby/rbs/pull/1668))
|
22
|
+
* Builtin types ([#1680](https://github.com/ruby/rbs/pull/1680), [#1644](https://github.com/ruby/rbs/pull/1644))
|
23
|
+
|
24
|
+
### Library changes
|
25
|
+
|
26
|
+
* Add more details error message for `UnresolvedOverloadingError` ([#1688](https://github.com/ruby/rbs/pull/1688))
|
27
|
+
* Add `with_***` helpers ([#1687](https://github.com/ruby/rbs/pull/1687))
|
28
|
+
* Fix lexer ([#1685](https://github.com/ruby/rbs/pull/1685))
|
29
|
+
* Support `Delegator` object ([#1682](https://github.com/ruby/rbs/pull/1682))
|
30
|
+
* Should raise `ParsingError` instead of NoMethodError ([#1675](https://github.com/ruby/rbs/pull/1675))
|
31
|
+
* Implement multiple validate ([#1648](https://github.com/ruby/rbs/pull/1648))
|
32
|
+
* Add `RBS::UnitTest` modules ([#1660](https://github.com/ruby/rbs/pull/1660))
|
33
|
+
* Not cached as it may be replaced ([#1656](https://github.com/ruby/rbs/pull/1656))
|
34
|
+
* Should raise `ParsingError` instead of ArgumentError ([#1652](https://github.com/ruby/rbs/pull/1652))
|
35
|
+
* Added `WithEnum#but` and `with_range` ([#1649](https://github.com/ruby/rbs/pull/1649))
|
36
|
+
* Bugfix; `.respond_to` is no longer used in `Rbs::Test::Errors#inspect_` ([#1650](https://github.com/ruby/rbs/pull/1650))
|
37
|
+
* Add `--detail` option to rbs diff ([#1623](https://github.com/ruby/rbs/pull/1623))
|
38
|
+
* Fix parse error when quoted required keywords ([#1627](https://github.com/ruby/rbs/pull/1627))
|
39
|
+
|
40
|
+
#### rbs collection
|
41
|
+
|
42
|
+
* Fix order for collection sources ([#1659](https://github.com/ruby/rbs/pull/1659))
|
43
|
+
* [collection] Ignore directory starting with `_` as version from git source ([#1657](https://github.com/ruby/rbs/pull/1657))
|
44
|
+
|
45
|
+
### Miscellaneous
|
46
|
+
|
47
|
+
* Fix token names in comments ([#1658](https://github.com/ruby/rbs/pull/1658))
|
48
|
+
* Small bugfix to have guaranteed print out instance variables ([#1642](https://github.com/ruby/rbs/pull/1642))
|
49
|
+
* Fix flaky test ([#1616](https://github.com/ruby/rbs/pull/1616))
|
50
|
+
* Update syntax.md ([#1634](https://github.com/ruby/rbs/pull/1634))
|
51
|
+
* Add steep typecheck workflow ([#1632](https://github.com/ruby/rbs/pull/1632))
|
52
|
+
* Add doc for Generating RBS ([#1617](https://github.com/ruby/rbs/pull/1617))
|
53
|
+
* updated test harness utils ([#1600](https://github.com/ruby/rbs/pull/1600))
|
54
|
+
|
5
55
|
## 3.3.2 (2023-11-21)
|
6
56
|
|
7
57
|
### Miscellaneous
|
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
rbs (3.
|
4
|
+
rbs (3.4.0.pre.1)
|
5
5
|
abbrev
|
6
6
|
|
7
7
|
PATH
|
@@ -12,7 +12,7 @@ PATH
|
|
12
12
|
GEM
|
13
13
|
remote: https://rubygems.org/
|
14
14
|
specs:
|
15
|
-
abbrev (0.1.
|
15
|
+
abbrev (0.1.2)
|
16
16
|
addressable (2.8.5)
|
17
17
|
public_suffix (>= 2.0.2, < 6.0)
|
18
18
|
ast (2.4.2)
|
@@ -24,7 +24,7 @@ GEM
|
|
24
24
|
psych (>= 3.1, < 5.0)
|
25
25
|
rainbow (>= 3.0, < 4.0)
|
26
26
|
strong_json (>= 1.1, < 2.2)
|
27
|
-
json (2.
|
27
|
+
json (2.7.1)
|
28
28
|
json-schema (4.1.1)
|
29
29
|
addressable (>= 2.8)
|
30
30
|
language_server-protocol (3.17.0.3)
|
@@ -42,14 +42,14 @@ GEM
|
|
42
42
|
psych (4.0.6)
|
43
43
|
stringio
|
44
44
|
public_suffix (5.0.3)
|
45
|
-
racc (1.7.
|
45
|
+
racc (1.7.3)
|
46
46
|
rainbow (3.1.1)
|
47
47
|
rake (13.1.0)
|
48
48
|
rake-compiler (1.2.5)
|
49
49
|
rake
|
50
|
-
rdoc (6.
|
50
|
+
rdoc (6.6.2)
|
51
51
|
psych (>= 4.0.0)
|
52
|
-
regexp_parser (2.8.
|
52
|
+
regexp_parser (2.8.3)
|
53
53
|
rexml (3.2.6)
|
54
54
|
rspec (3.12.0)
|
55
55
|
rspec-core (~> 3.12.0)
|
@@ -64,7 +64,7 @@ GEM
|
|
64
64
|
diff-lcs (>= 1.2.0, < 2.0)
|
65
65
|
rspec-support (~> 3.12.0)
|
66
66
|
rspec-support (3.12.0)
|
67
|
-
rubocop (1.
|
67
|
+
rubocop (1.59.0)
|
68
68
|
json (~> 2.3)
|
69
69
|
language_server-protocol (>= 3.17.0)
|
70
70
|
parallel (~> 1.10)
|
@@ -72,7 +72,7 @@ GEM
|
|
72
72
|
rainbow (>= 2.2.2, < 4.0)
|
73
73
|
regexp_parser (>= 1.8, < 3.0)
|
74
74
|
rexml (>= 3.2.5, < 4.0)
|
75
|
-
rubocop-ast (>= 1.
|
75
|
+
rubocop-ast (>= 1.30.0, < 2.0)
|
76
76
|
ruby-progressbar (~> 1.7)
|
77
77
|
unicode-display_width (>= 2.4.0, < 3.0)
|
78
78
|
rubocop-ast (1.30.0)
|
@@ -81,9 +81,9 @@ GEM
|
|
81
81
|
rubocop (~> 1.0)
|
82
82
|
ruby-progressbar (1.13.0)
|
83
83
|
stackprof (0.2.25)
|
84
|
-
stringio (3.0
|
84
|
+
stringio (3.1.0)
|
85
85
|
strong_json (2.1.2)
|
86
|
-
tempfile (0.2.
|
86
|
+
tempfile (0.2.1)
|
87
87
|
test-unit (3.6.1)
|
88
88
|
power_assert
|
89
89
|
timeout (0.4.0)
|
@@ -105,7 +105,7 @@ DEPENDENCIES
|
|
105
105
|
rake-compiler
|
106
106
|
rbs!
|
107
107
|
rbs-amber!
|
108
|
-
rdoc
|
108
|
+
rdoc
|
109
109
|
rspec
|
110
110
|
rubocop
|
111
111
|
rubocop-rubycw
|
data/Steepfile
CHANGED
@@ -5,10 +5,10 @@ target :lib do
|
|
5
5
|
check "lib"
|
6
6
|
ignore(
|
7
7
|
"lib/rbs/test",
|
8
|
-
"lib/rbs/test.rb"
|
8
|
+
# "lib/rbs/test.rb"
|
9
9
|
)
|
10
10
|
|
11
|
-
library "pathname", "json", "logger", "monitor", "tsort", "uri", 'dbm', 'pstore', 'singleton', 'shellwords', 'fileutils', 'find', 'digest', 'abbrev', 'prettyprint', 'yaml'
|
11
|
+
library "pathname", "json", "logger", "monitor", "tsort", "uri", 'dbm', 'pstore', 'singleton', 'shellwords', 'fileutils', 'find', 'digest', 'abbrev', 'prettyprint', 'yaml', "psych", "securerandom"
|
12
12
|
signature "stdlib/strscan/0/"
|
13
13
|
signature "stdlib/optparse/0/"
|
14
14
|
signature "stdlib/rdoc/0/"
|
data/core/array.rbs
CHANGED
@@ -607,7 +607,8 @@ class Array[unchecked out Elem] < Object
|
|
607
607
|
# - array & other_array -> new_array
|
608
608
|
# -->
|
609
609
|
# Returns a new Array containing each element found in both `array` and Array
|
610
|
-
# `other_array`; duplicates are omitted; items are compared using `eql
|
610
|
+
# `other_array`; duplicates are omitted; items are compared using `eql?` (items
|
611
|
+
# must also implement `hash` correctly):
|
611
612
|
#
|
612
613
|
# [0, 1, 2, 3] & [1, 2] # => [1, 2]
|
613
614
|
# [0, 1, 0, 1] & [0, 1] # => [0, 1]
|
@@ -837,8 +838,6 @@ class Array[unchecked out Elem] < Object
|
|
837
838
|
# # Raises TypeError (no implicit conversion of Symbol into Integer):
|
838
839
|
# a[:foo]
|
839
840
|
#
|
840
|
-
# Array#slice is an alias for Array#[].
|
841
|
-
#
|
842
841
|
def []: %a{implicitly-returns-nil} (int index) -> Elem
|
843
842
|
| (int start, int length) -> ::Array[Elem]?
|
844
843
|
| (::Range[::Integer?] range) -> ::Array[Elem]?
|
@@ -972,6 +971,8 @@ class Array[unchecked out Elem] < Object
|
|
972
971
|
# -->
|
973
972
|
# Returns `true` if all elements of `self` meet a given criterion.
|
974
973
|
#
|
974
|
+
# If `self` has no element, returns `true` and argument or block are not used.
|
975
|
+
#
|
975
976
|
# With no block given and no argument, returns `true` if `self` contains only
|
976
977
|
# truthy elements, `false` otherwise:
|
977
978
|
#
|
@@ -1009,6 +1010,8 @@ class Array[unchecked out Elem] < Object
|
|
1009
1010
|
# -->
|
1010
1011
|
# Returns `true` if any element of `self` meets a given criterion.
|
1011
1012
|
#
|
1013
|
+
# If `self` has no element, returns `false` and argument or block are not used.
|
1014
|
+
#
|
1012
1015
|
# With no block given and no argument, returns `true` if `self` has any truthy
|
1013
1016
|
# element, `false` otherwise:
|
1014
1017
|
#
|
@@ -1050,8 +1053,6 @@ class Array[unchecked out Elem] < Object
|
|
1050
1053
|
# a1 = a.push([:baz, :bat], [:bam, :bad])
|
1051
1054
|
# a1 # => [:foo, "bar", 2, [:baz, :bat], [:bam, :bad]]
|
1052
1055
|
#
|
1053
|
-
# Array#append is an alias for Array#push.
|
1054
|
-
#
|
1055
1056
|
# Related: #pop, #shift, #unshift.
|
1056
1057
|
#
|
1057
1058
|
alias append push
|
@@ -1135,8 +1136,6 @@ class Array[unchecked out Elem] < Object
|
|
1135
1136
|
# a1 = a.map
|
1136
1137
|
# a1 # => #<Enumerator: [:foo, "bar", 2]:map>
|
1137
1138
|
#
|
1138
|
-
# Array#collect is an alias for Array#map.
|
1139
|
-
#
|
1140
1139
|
def collect: [U] () { (Elem item) -> U } -> ::Array[U]
|
1141
1140
|
| () -> ::Enumerator[Elem, ::Array[untyped]]
|
1142
1141
|
|
@@ -1157,8 +1156,6 @@ class Array[unchecked out Elem] < Object
|
|
1157
1156
|
# a1 = a.map!
|
1158
1157
|
# a1 # => #<Enumerator: [:foo, "bar", 2]:map!>
|
1159
1158
|
#
|
1160
|
-
# Array#collect! is an alias for Array#map!.
|
1161
|
-
#
|
1162
1159
|
def collect!: () { (Elem item) -> Elem } -> self
|
1163
1160
|
| () -> ::Enumerator[Elem, self]
|
1164
1161
|
|
@@ -1388,18 +1385,16 @@ class Array[unchecked out Elem] < Object
|
|
1388
1385
|
# - array.delete_if {|element| ... } -> self
|
1389
1386
|
# - array.delete_if -> Enumerator
|
1390
1387
|
# -->
|
1391
|
-
# Removes each element in
|
1392
|
-
#
|
1393
|
-
#
|
1394
|
-
# a = [:foo, 'bar', 2, 'bat']
|
1395
|
-
# a.delete_if {|element| element.to_s.start_with?('b') } # => [:foo, 2]
|
1388
|
+
# Removes each element in `self` for which the block returns a truthy value;
|
1389
|
+
# returns `self`:
|
1396
1390
|
#
|
1397
|
-
#
|
1391
|
+
# a = [:foo, 'bar', 2, 'bat']
|
1392
|
+
# a.delete_if {|element| element.to_s.start_with?('b') } # => [:foo, 2]
|
1398
1393
|
#
|
1399
|
-
#
|
1400
|
-
# a.delete_if # => #<Enumerator: [:foo, "bar", 2]:delete_if>
|
1394
|
+
# Returns a new Enumerator if no block given:
|
1401
1395
|
#
|
1402
|
-
#
|
1396
|
+
# a = [:foo, 'bar', 2]
|
1397
|
+
# a.delete_if # => #<Enumerator: [:foo, "bar", 2]:delete_if>
|
1403
1398
|
#
|
1404
1399
|
def delete_if: () { (Elem item) -> boolish } -> self
|
1405
1400
|
| () -> ::Enumerator[Elem, self]
|
@@ -1854,8 +1849,6 @@ class Array[unchecked out Elem] < Object
|
|
1854
1849
|
# a = [:foo, 'bar', 2, :bam]
|
1855
1850
|
# a.select # => #<Enumerator: [:foo, "bar", 2, :bam]:select>
|
1856
1851
|
#
|
1857
|
-
# Array#filter is an alias for Array#select.
|
1858
|
-
#
|
1859
1852
|
def filter: () { (Elem item) -> boolish } -> ::Array[Elem]
|
1860
1853
|
| () -> ::Enumerator[Elem, ::Array[Elem]]
|
1861
1854
|
|
@@ -1875,8 +1868,6 @@ class Array[unchecked out Elem] < Object
|
|
1875
1868
|
# a = [:foo, 'bar', 2, :bam]
|
1876
1869
|
# a.select! # => #<Enumerator: [:foo, "bar", 2, :bam]:select!>
|
1877
1870
|
#
|
1878
|
-
# Array#filter! is an alias for Array#select!.
|
1879
|
-
#
|
1880
1871
|
def filter!: () { (Elem item) -> boolish } -> self?
|
1881
1872
|
| () -> ::Enumerator[Elem, self?]
|
1882
1873
|
|
@@ -1912,8 +1903,6 @@ class Array[unchecked out Elem] < Object
|
|
1912
1903
|
# e # => #<Enumerator: [:foo, "bar", 2]:index>
|
1913
1904
|
# e.each {|element| element == 'bar' } # => 1
|
1914
1905
|
#
|
1915
|
-
# Array#find_index is an alias for Array#index.
|
1916
|
-
#
|
1917
1906
|
# Related: #rindex.
|
1918
1907
|
#
|
1919
1908
|
def find_index: (untyped obj) -> ::Integer?
|
@@ -1921,7 +1910,7 @@ class Array[unchecked out Elem] < Object
|
|
1921
1910
|
| () -> ::Enumerator[Elem, ::Integer?]
|
1922
1911
|
|
1923
1912
|
# <!--
|
1924
|
-
# rdoc-file=array.
|
1913
|
+
# rdoc-file=array.rb
|
1925
1914
|
# - array.first -> object or nil
|
1926
1915
|
# - array.first(n) -> new_array
|
1927
1916
|
# -->
|
@@ -2078,8 +2067,6 @@ class Array[unchecked out Elem] < Object
|
|
2078
2067
|
# e # => #<Enumerator: [:foo, "bar", 2]:index>
|
2079
2068
|
# e.each {|element| element == 'bar' } # => 1
|
2080
2069
|
#
|
2081
|
-
# Array#find_index is an alias for Array#index.
|
2082
|
-
#
|
2083
2070
|
# Related: #rindex.
|
2084
2071
|
#
|
2085
2072
|
alias index find_index
|
@@ -2130,8 +2117,6 @@ class Array[unchecked out Elem] < Object
|
|
2130
2117
|
# a = [:foo, 'bar', 2]
|
2131
2118
|
# a.inspect # => "[:foo, \"bar\", 2]"
|
2132
2119
|
#
|
2133
|
-
# Array#to_s is an alias for Array#inspect.
|
2134
|
-
#
|
2135
2120
|
def inspect: () -> String
|
2136
2121
|
|
2137
2122
|
# <!--
|
@@ -2147,6 +2132,9 @@ class Array[unchecked out Elem] < Object
|
|
2147
2132
|
# a.intersect?(b) #=> true
|
2148
2133
|
# a.intersect?(c) #=> false
|
2149
2134
|
#
|
2135
|
+
# Array elements are compared using `eql?` (items must also implement `hash`
|
2136
|
+
# correctly).
|
2137
|
+
#
|
2150
2138
|
def intersect?: (_ToAry[untyped]) -> bool
|
2151
2139
|
|
2152
2140
|
# <!--
|
@@ -2155,7 +2143,7 @@ class Array[unchecked out Elem] < Object
|
|
2155
2143
|
# -->
|
2156
2144
|
# Returns a new Array containing each element found both in `self` and in all of
|
2157
2145
|
# the given Arrays `other_arrays`; duplicates are omitted; items are compared
|
2158
|
-
# using `eql
|
2146
|
+
# using `eql?` (items must also implement `hash` correctly):
|
2159
2147
|
#
|
2160
2148
|
# [0, 1, 2, 3].intersection([0, 1, 2], [0, 1, 3]) # => [0, 1]
|
2161
2149
|
# [0, 0, 1, 1, 2, 3].intersection([0, 1, 2], [0, 1, 3]) # => [0, 1]
|
@@ -2221,7 +2209,7 @@ class Array[unchecked out Elem] < Object
|
|
2221
2209
|
| () -> ::Enumerator[Elem, self]
|
2222
2210
|
|
2223
2211
|
# <!--
|
2224
|
-
# rdoc-file=array.
|
2212
|
+
# rdoc-file=array.rb
|
2225
2213
|
# - array.last -> object or nil
|
2226
2214
|
# - array.last(n) -> new_array
|
2227
2215
|
# -->
|
@@ -2277,8 +2265,6 @@ class Array[unchecked out Elem] < Object
|
|
2277
2265
|
# a1 = a.map
|
2278
2266
|
# a1 # => #<Enumerator: [:foo, "bar", 2]:map>
|
2279
2267
|
#
|
2280
|
-
# Array#collect is an alias for Array#map.
|
2281
|
-
#
|
2282
2268
|
alias map collect
|
2283
2269
|
|
2284
2270
|
# <!-- rdoc-file=array.c -->
|
@@ -2294,8 +2280,6 @@ class Array[unchecked out Elem] < Object
|
|
2294
2280
|
# a1 = a.map!
|
2295
2281
|
# a1 # => #<Enumerator: [:foo, "bar", 2]:map!>
|
2296
2282
|
#
|
2297
|
-
# Array#collect! is an alias for Array#map!.
|
2298
|
-
#
|
2299
2283
|
alias map! collect!
|
2300
2284
|
|
2301
2285
|
# <!--
|
@@ -2608,8 +2592,6 @@ class Array[unchecked out Elem] < Object
|
|
2608
2592
|
# a = [:foo, 'bar', 2]
|
2609
2593
|
# a.unshift(:bam, :bat) # => [:bam, :bat, :foo, "bar", 2]
|
2610
2594
|
#
|
2611
|
-
# Array#prepend is an alias for Array#unshift.
|
2612
|
-
#
|
2613
2595
|
# Related: #push, #pop, #shift.
|
2614
2596
|
#
|
2615
2597
|
alias prepend unshift
|
@@ -2695,8 +2677,6 @@ class Array[unchecked out Elem] < Object
|
|
2695
2677
|
# a1 = a.push([:baz, :bat], [:bam, :bad])
|
2696
2678
|
# a1 # => [:foo, "bar", 2, [:baz, :bat], [:bam, :bad]]
|
2697
2679
|
#
|
2698
|
-
# Array#append is an alias for Array#push.
|
2699
|
-
#
|
2700
2680
|
# Related: #pop, #shift, #unshift.
|
2701
2681
|
#
|
2702
2682
|
def push: (*Elem obj) -> self
|
@@ -3159,8 +3139,6 @@ class Array[unchecked out Elem] < Object
|
|
3159
3139
|
# a = [:foo, 'bar', 2, :bam]
|
3160
3140
|
# a.select # => #<Enumerator: [:foo, "bar", 2, :bam]:select>
|
3161
3141
|
#
|
3162
|
-
# Array#filter is an alias for Array#select.
|
3163
|
-
#
|
3164
3142
|
def select: () { (Elem item) -> boolish } -> ::Array[Elem]
|
3165
3143
|
| () -> ::Enumerator[Elem, ::Array[Elem]]
|
3166
3144
|
|
@@ -3184,8 +3162,6 @@ class Array[unchecked out Elem] < Object
|
|
3184
3162
|
# a = [:foo, 'bar', 2, :bam]
|
3185
3163
|
# a.select! # => #<Enumerator: [:foo, "bar", 2, :bam]:select!>
|
3186
3164
|
#
|
3187
|
-
# Array#filter! is an alias for Array#select!.
|
3188
|
-
#
|
3189
3165
|
def select!: () { (Elem item) -> boolish } -> self?
|
3190
3166
|
| () -> ::Enumerator[Elem, self?]
|
3191
3167
|
|
@@ -3347,8 +3323,6 @@ class Array[unchecked out Elem] < Object
|
|
3347
3323
|
# # Raises TypeError (no implicit conversion of Symbol into Integer):
|
3348
3324
|
# a[:foo]
|
3349
3325
|
#
|
3350
|
-
# Array#slice is an alias for Array#[].
|
3351
|
-
#
|
3352
3326
|
def slice: (int index) -> Elem?
|
3353
3327
|
| (int start, int length) -> ::Array[Elem]?
|
3354
3328
|
| (::Range[::Integer] range) -> ::Array[Elem]?
|
@@ -3682,8 +3656,6 @@ class Array[unchecked out Elem] < Object
|
|
3682
3656
|
# a = [:foo, 'bar', 2]
|
3683
3657
|
# a.inspect # => "[:foo, \"bar\", 2]"
|
3684
3658
|
#
|
3685
|
-
# Array#to_s is an alias for Array#inspect.
|
3686
|
-
#
|
3687
3659
|
alias to_s inspect
|
3688
3660
|
|
3689
3661
|
# <!--
|
@@ -3780,8 +3752,6 @@ class Array[unchecked out Elem] < Object
|
|
3780
3752
|
# a = [:foo, 'bar', 2]
|
3781
3753
|
# a.unshift(:bam, :bat) # => [:bam, :bat, :foo, "bar", 2]
|
3782
3754
|
#
|
3783
|
-
# Array#prepend is an alias for Array#unshift.
|
3784
|
-
#
|
3785
3755
|
# Related: #push, #pop, #shift.
|
3786
3756
|
#
|
3787
3757
|
def unshift: (*Elem obj) -> self
|
data/core/basic_object.rbs
CHANGED
@@ -128,7 +128,7 @@ class BasicObject
|
|
128
128
|
# Note: that some objects of builtin classes are reused for optimization. This
|
129
129
|
# is the case for immediate values and frozen string literals.
|
130
130
|
#
|
131
|
-
# BasicObject implements
|
131
|
+
# BasicObject implements `__id__`, Kernel implements `object_id`.
|
132
132
|
#
|
133
133
|
# Immediate values are not passed by reference but are passed by value: `nil`,
|
134
134
|
# `true`, `false`, Fixnums, Symbols, and some Floats.
|
@@ -151,7 +151,7 @@ class BasicObject
|
|
151
151
|
# When the method is identified by a string, the string is converted to a
|
152
152
|
# symbol.
|
153
153
|
#
|
154
|
-
# BasicObject implements
|
154
|
+
# BasicObject implements `__send__`, Kernel implements `send`. `__send__` is
|
155
155
|
# safer than `send` when *obj* has the same method name like `Socket`. See also
|
156
156
|
# `public_send`.
|
157
157
|
#
|
data/core/comparable.rbs
CHANGED
@@ -8,25 +8,28 @@
|
|
8
8
|
# implement the conventional comparison operators (`<`, `<=`, `==`, `>=`, and
|
9
9
|
# `>`) and the method `between?`.
|
10
10
|
#
|
11
|
-
# class
|
11
|
+
# class StringSorter
|
12
12
|
# include Comparable
|
13
|
+
#
|
13
14
|
# attr :str
|
14
15
|
# def <=>(other)
|
15
16
|
# str.size <=> other.str.size
|
16
17
|
# end
|
18
|
+
#
|
17
19
|
# def initialize(str)
|
18
20
|
# @str = str
|
19
21
|
# end
|
22
|
+
#
|
20
23
|
# def inspect
|
21
24
|
# @str
|
22
25
|
# end
|
23
26
|
# end
|
24
27
|
#
|
25
|
-
# s1 =
|
26
|
-
# s2 =
|
27
|
-
# s3 =
|
28
|
-
# s4 =
|
29
|
-
# s5 =
|
28
|
+
# s1 = StringSorter.new("Z")
|
29
|
+
# s2 = StringSorter.new("YY")
|
30
|
+
# s3 = StringSorter.new("XXX")
|
31
|
+
# s4 = StringSorter.new("WWWW")
|
32
|
+
# s5 = StringSorter.new("VVVVV")
|
30
33
|
#
|
31
34
|
# s1 < s2 #=> true
|
32
35
|
# s4.between?(s1, s3) #=> false
|
@@ -40,8 +43,8 @@
|
|
40
43
|
# * #<: Returns whether `self` is less than the given object.
|
41
44
|
# * #<=: Returns whether `self` is less than or equal to the given object.
|
42
45
|
# * #==: Returns whether `self` is equal to the given object.
|
43
|
-
# * #>: Returns whether `self` is greater than
|
44
|
-
# * #>=: Returns whether `self` is greater than the given object.
|
46
|
+
# * #>: Returns whether `self` is greater than the given object.
|
47
|
+
# * #>=: Returns whether `self` is greater than or equal to the given object.
|
45
48
|
# * #between?: Returns `true` if `self` is between two given objects.
|
46
49
|
# * #clamp: For given objects `min` and `max`, or range `(min..max)`, returns:
|
47
50
|
#
|
@@ -124,6 +127,12 @@ module Comparable : _WithSpaceshipOperator
|
|
124
127
|
# 'd'.clamp('a', 'f') #=> 'd'
|
125
128
|
# 'z'.clamp('a', 'f') #=> 'f'
|
126
129
|
#
|
130
|
+
# If *min* is `nil`, it is considered smaller than *obj*, and if *max* is `nil`,
|
131
|
+
# it is considered greater than *obj*.
|
132
|
+
#
|
133
|
+
# -20.clamp(0, nil) #=> 0
|
134
|
+
# 523.clamp(nil, 100) #=> 100
|
135
|
+
#
|
127
136
|
# In `(range)` form, returns *range.begin* if *obj* `<=>` *range.begin* is less
|
128
137
|
# than zero, *range.end* if *obj* `<=>` *range.end* is greater than zero, and
|
129
138
|
# *obj* otherwise.
|