rbs 3.4.4 → 3.5.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/dependabot.yml +12 -4
- data/.github/workflows/dependabot.yml +26 -0
- data/.github/workflows/ruby.yml +14 -1
- data/CHANGELOG.md +87 -1
- data/README.md +5 -3
- data/Rakefile +20 -3
- data/Steepfile +1 -1
- data/core/enumerator.rbs +1 -1
- data/core/float.rbs +2 -1
- data/core/gc.rbs +272 -150
- data/core/integer.rbs +6 -4
- data/core/io/wait.rbs +4 -4
- data/core/io.rbs +10 -3
- data/core/kernel.rbs +8 -7
- data/core/module.rbs +17 -4
- data/core/proc.rbs +1 -1
- data/core/range.rbs +2 -2
- data/core/rational.rbs +2 -1
- data/core/regexp.rbs +101 -90
- data/core/ruby_vm.rbs +107 -103
- data/core/rubygems/rubygems.rbs +1 -1
- data/core/set.rbs +13 -7
- data/core/string.rbs +3 -3
- data/core/symbol.rbs +2 -1
- data/core/thread.rbs +1 -1
- data/core/time.rbs +24 -4
- data/docs/architecture.md +110 -0
- data/docs/gem.md +0 -1
- data/docs/syntax.md +5 -1
- data/ext/rbs_extension/constants.c +2 -0
- data/ext/rbs_extension/constants.h +1 -0
- data/ext/rbs_extension/lexer.c +1338 -1341
- data/ext/rbs_extension/lexer.h +2 -0
- data/ext/rbs_extension/lexer.re +2 -3
- data/ext/rbs_extension/lexstate.c +5 -1
- data/ext/rbs_extension/location.c +80 -70
- data/ext/rbs_extension/location.h +25 -5
- data/ext/rbs_extension/parser.c +149 -43
- data/ext/rbs_extension/parserstate.c +12 -1
- data/ext/rbs_extension/parserstate.h +9 -0
- data/ext/rbs_extension/ruby_objs.c +13 -3
- data/ext/rbs_extension/ruby_objs.h +1 -0
- data/lib/rbs/cli/validate.rb +2 -2
- data/lib/rbs/cli.rb +4 -6
- data/lib/rbs/collection/config.rb +1 -1
- data/lib/rbs/collection/sources/git.rb +1 -6
- data/lib/rbs/definition_builder/method_builder.rb +1 -1
- data/lib/rbs/definition_builder.rb +8 -8
- data/lib/rbs/diff.rb +1 -1
- data/lib/rbs/environment_loader.rb +2 -1
- data/lib/rbs/errors.rb +0 -14
- data/lib/rbs/location_aux.rb +6 -1
- data/lib/rbs/parser/lex_result.rb +15 -0
- data/lib/rbs/parser/token.rb +23 -0
- data/lib/rbs/parser_aux.rb +12 -5
- data/lib/rbs/prototype/helpers.rb +22 -12
- data/lib/rbs/prototype/rb.rb +38 -4
- data/lib/rbs/prototype/rbi.rb +30 -20
- data/lib/rbs/test/errors.rb +19 -14
- data/lib/rbs/test/tester.rb +1 -1
- data/lib/rbs/test/type_check.rb +95 -16
- data/lib/rbs/types.rb +112 -13
- data/lib/rbs/unit_test/spy.rb +1 -1
- data/lib/rbs/version.rb +1 -1
- data/rbs.gemspec +7 -2
- data/sig/environment_loader.rbs +1 -1
- data/sig/errors.rbs +1 -1
- data/sig/manifest.yaml +0 -1
- data/sig/method_types.rbs +3 -3
- data/sig/parser.rbs +28 -0
- data/sig/prototype/helpers.rbs +4 -0
- data/sig/prototype/rbi.rbs +2 -0
- data/sig/types.rbs +54 -4
- data/sig/variance_calculator.rbs +2 -2
- data/stdlib/csv/0/csv.rbs +4 -1
- data/stdlib/fileutils/0/fileutils.rbs +1 -1
- data/stdlib/net-http/0/net-http.rbs +29 -27
- data/stdlib/socket/0/socket.rbs +2 -2
- data/stdlib/timeout/0/timeout.rbs +6 -0
- data/stdlib/uri/0/generic.rbs +2 -2
- data/stdlib/uri/0/http.rbs +2 -2
- data/stdlib/uri/0/mailto.rbs +84 -0
- metadata +7 -9
- data/Gemfile +0 -30
- data/Gemfile.lock +0 -117
- data/lib/rbs/parser_compat/lexer_error.rb +0 -6
- data/lib/rbs/parser_compat/located_value.rb +0 -7
- data/lib/rbs/parser_compat/semantics_error.rb +0 -6
- data/lib/rbs/parser_compat/syntax_error.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: 3dc7a972ca885618f8bcb3beb35d5096ddd9cc3dc6880fb6ae6b06d4a1845be0
|
4
|
+
data.tar.gz: 3fd84cf6a4869385f16e98cb1319855fcc1fcc242e16731b6bbdd5d249f1df8a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0b79dcac9fa9f94eff95b2c098208784f45e8ee891b94202f8e82886d15e0af04bbb26acdff5428277470536cfef164f79b5a1f73ded288b320600bd15568500
|
7
|
+
data.tar.gz: c0c6f53213e0b0aac09747c2aef470548b2b872b8ace2647ebdedca292a55b8aa0dbbebfa5c3ff75c47d3f76e87643f23f75883cacc49726fd778f95e1c3ee9e
|
data/.github/dependabot.yml
CHANGED
@@ -1,13 +1,21 @@
|
|
1
1
|
version: 2
|
2
2
|
updates:
|
3
|
-
- package-ecosystem:
|
3
|
+
- package-ecosystem: bundler
|
4
4
|
directory: "/"
|
5
5
|
schedule:
|
6
|
-
interval:
|
7
|
-
|
6
|
+
interval: daily
|
7
|
+
open-pull-requests-limit: 3
|
8
|
+
allow:
|
9
|
+
- dependency-type: all
|
10
|
+
|
11
|
+
- package-ecosystem: bundler
|
8
12
|
directory: "/steep"
|
9
13
|
schedule:
|
10
|
-
interval:
|
14
|
+
interval: daily
|
15
|
+
open-pull-requests-limit: 3
|
16
|
+
allow:
|
17
|
+
- dependency-type: all
|
18
|
+
|
11
19
|
- package-ecosystem: 'github-actions'
|
12
20
|
directory: '/'
|
13
21
|
schedule:
|
@@ -0,0 +1,26 @@
|
|
1
|
+
name: Merge dependabot PRs automatically
|
2
|
+
on: pull_request_target
|
3
|
+
|
4
|
+
permissions:
|
5
|
+
pull-requests: write
|
6
|
+
contents: write
|
7
|
+
|
8
|
+
env:
|
9
|
+
blocker_files: rbs.gemspec Gemfile steep/Gemfile
|
10
|
+
|
11
|
+
jobs:
|
12
|
+
dependabot:
|
13
|
+
runs-on: ubuntu-latest
|
14
|
+
if: ${{ github.actor == 'dependabot[bot]' }}
|
15
|
+
steps:
|
16
|
+
- name: Checkout repository
|
17
|
+
uses: actions/checkout@v4
|
18
|
+
with:
|
19
|
+
fetch-depth: 0
|
20
|
+
- name: Abort if blocker files are changed
|
21
|
+
run: git diff --exit-code ${{ github.event.pull_request.base.sha }} ${{ github.event.pull_request.head.sha }} ${{ env.blocker_files }}
|
22
|
+
- name: Enable auto-merge for Dependabot PRs
|
23
|
+
run: gh pr merge --auto --merge "$PR_URL"
|
24
|
+
env:
|
25
|
+
PR_URL: ${{github.event.pull_request.html_url}}
|
26
|
+
GH_TOKEN: ${{secrets.DEPENDABOT_MERGE_GH_TOKEN}}
|
data/.github/workflows/ruby.yml
CHANGED
@@ -14,6 +14,7 @@ jobs:
|
|
14
14
|
fail-fast: false
|
15
15
|
matrix:
|
16
16
|
ruby: ['3.0', '3.1', '3.2', '3.3', head]
|
17
|
+
rubyopt: [""]
|
17
18
|
job:
|
18
19
|
- test
|
19
20
|
include:
|
@@ -21,10 +22,18 @@ jobs:
|
|
21
22
|
job: stdlib_test rubocop
|
22
23
|
- ruby: "3.3"
|
23
24
|
job: stdlib_test
|
25
|
+
- ruby: "3.3"
|
26
|
+
job: test
|
27
|
+
rubyopt: "--enable-frozen-string-literal"
|
28
|
+
- ruby: "3.3"
|
29
|
+
job: stdlib_test
|
30
|
+
rubyopt: "--enable-frozen-string-literal"
|
24
31
|
- ruby: "3.3"
|
25
32
|
job: lexer compile confirm_lexer
|
26
33
|
- ruby: "3.3"
|
27
|
-
job: rubocop validate test_doc build test_generate_stdlib
|
34
|
+
job: rubocop validate test_doc build test_generate_stdlib raap
|
35
|
+
- ruby: "3.3"
|
36
|
+
job: typecheck_test
|
28
37
|
steps:
|
29
38
|
- uses: actions/checkout@v4
|
30
39
|
- uses: ruby/setup-ruby@v1
|
@@ -57,6 +66,10 @@ jobs:
|
|
57
66
|
echo "NO_MINITEST=true" >> $GITHUB_ENV
|
58
67
|
bundle config set --local without 'minitest'
|
59
68
|
if: ${{ contains(matrix.ruby, 'head') }}
|
69
|
+
- name: Skip installing type checkers
|
70
|
+
if: ${{ ! contains(matrix.job, 'typecheck_test') }}
|
71
|
+
run: |
|
72
|
+
bundle config set without 'typecheck_test'
|
60
73
|
- name: bin/setup
|
61
74
|
run: |
|
62
75
|
bin/setup
|
data/CHANGELOG.md
CHANGED
@@ -1,6 +1,92 @@
|
|
1
1
|
# CHANGELOG
|
2
2
|
|
3
|
-
##
|
3
|
+
## 3.5.1 (2024-06-07)
|
4
|
+
|
5
|
+
### Library changes
|
6
|
+
|
7
|
+
* Add explicit dependency on the `logger` gem ([#1865](https://github.com/ruby/rbs/pull/1865))
|
8
|
+
* Make c99, c23 compatible ([#1870](https://github.com/ruby/rbs/pull/1870))
|
9
|
+
|
10
|
+
### Miscellaneous
|
11
|
+
|
12
|
+
* Don't try to sign git commits when running tests ([#1867](https://github.com/ruby/rbs/pull/1867))
|
13
|
+
|
14
|
+
## 3.5.0 (2024-06-06)
|
15
|
+
|
16
|
+
### Signature updates
|
17
|
+
|
18
|
+
* `net-http` headers ([#1750](https://github.com/ruby/rbs/pull/1750))
|
19
|
+
* `CSV.foreach` ([#1738](https://github.com/ruby/rbs/pull/1738))
|
20
|
+
* `Enumerator#initialize` ([#1801](https://github.com/ruby/rbs/pull/1801))
|
21
|
+
* `Float#divmod`, `Rational#divmod` ([#1868](https://github.com/ruby/rbs/pull/1868))
|
22
|
+
* `GC` ([#1530](https://github.com/ruby/rbs/pull/1530))
|
23
|
+
* `Integer#pow` ([#1706](https://github.com/ruby/rbs/pull/1706))
|
24
|
+
* `Kernel.rand` ([#1783](https://github.com/ruby/rbs/pull/1783))
|
25
|
+
* `Kernel#extend` ([#1769](https://github.com/ruby/rbs/pull/1769))
|
26
|
+
* `Module#include`, `Module#prepend` ([#1769](https://github.com/ruby/rbs/pull/1769))
|
27
|
+
* `Proc#parameters` ([#1819](https://github.com/ruby/rbs/pull/1819))
|
28
|
+
* `Range#step` ([#1709](https://github.com/ruby/rbs/pull/1709))
|
29
|
+
* `Regexp.union` ([#1809](https://github.com/ruby/rbs/pull/1809))
|
30
|
+
* `RubyVM::YJIT.enable` ([#1812](https://github.com/ruby/rbs/pull/1812))
|
31
|
+
* `RubyVM::YJIT`, `RubyVM::RJIT` ([#1746](https://github.com/ruby/rbs/pull/1746))
|
32
|
+
* `String#bytesplice` ([#1793](https://github.com/ruby/rbs/pull/1793))
|
33
|
+
* `String#gsub!` ([#1768](https://github.com/ruby/rbs/pull/1768))
|
34
|
+
* `Symbol#=~` ([#1704](https://github.com/ruby/rbs/pull/1704))
|
35
|
+
* `Time#initialize` ([#1771](https://github.com/ruby/rbs/pull/1771))
|
36
|
+
* `Time#zone` ([#1770](https://github.com/ruby/rbs/pull/1770))
|
37
|
+
* `Timeout::ExitException` ([#1803](https://github.com/ruby/rbs/pull/1803))
|
38
|
+
* `URI::MailTo` ([#1858](https://github.com/ruby/rbs/pull/1858))
|
39
|
+
* Update docs ([#1811](https://github.com/ruby/rbs/pull/1811), [#1699](https://github.com/ruby/rbs/pull/1699))
|
40
|
+
|
41
|
+
### Language updates
|
42
|
+
|
43
|
+
* Fix proc type syntax ([#1807](https://github.com/ruby/rbs/pull/1807))
|
44
|
+
* Function types with untyped parameter ([#1806](https://github.com/ruby/rbs/pull/1806))
|
45
|
+
* Fix record type ([#1732](https://github.com/ruby/rbs/pull/1732))
|
46
|
+
* parser: enable record types with optional fields ([#1717](https://github.com/ruby/rbs/pull/1717))
|
47
|
+
|
48
|
+
### Library changes
|
49
|
+
|
50
|
+
* Drop dependency on `abbrev` ([#1866](https://github.com/ruby/rbs/pull/1866))
|
51
|
+
* Fix source display ([#1832](https://github.com/ruby/rbs/pull/1832))
|
52
|
+
* Include trivia tokens to lex result ([#1831](https://github.com/ruby/rbs/pull/1831))
|
53
|
+
* Implement token list API ([#1829](https://github.com/ruby/rbs/pull/1829))
|
54
|
+
* Fix memory leak when ParsingError ([#1830](https://github.com/ruby/rbs/pull/1830))
|
55
|
+
* [rbs diff] Fix error when empty manifest.yaml ([#1762](https://github.com/ruby/rbs/pull/1762))
|
56
|
+
* Remove deprecated API since RBS v1 ([#1805](https://github.com/ruby/rbs/pull/1805))
|
57
|
+
* Use array instead of linked list for rbs location's child ([#1786](https://github.com/ruby/rbs/pull/1786))
|
58
|
+
* Fix SEGV with parse negative position ([#1790](https://github.com/ruby/rbs/pull/1790))
|
59
|
+
* Add location for attribute ([#1787](https://github.com/ruby/rbs/pull/1787))
|
60
|
+
* Always be private ([#1774](https://github.com/ruby/rbs/pull/1774))
|
61
|
+
* Prevent resource leak with type/method-type parser when reaching EOF. ([#1742](https://github.com/ruby/rbs/pull/1742))
|
62
|
+
* Allow loading RBS from different version of a gem ([#1731](https://github.com/ruby/rbs/pull/1731))
|
63
|
+
* Fix method name tag on assertion ([#1705](https://github.com/ruby/rbs/pull/1705))
|
64
|
+
* Improve interface check by method parameters ([#1698](https://github.com/ruby/rbs/pull/1698))
|
65
|
+
|
66
|
+
#### rbs prototype
|
67
|
+
|
68
|
+
* Fix prototype for ruby-3.4 ([#1760](https://github.com/ruby/rbs/pull/1760))
|
69
|
+
* Fix 3.4 `prototype rb` failure ([#1713](https://github.com/ruby/rbs/pull/1713))
|
70
|
+
* Add Numeric Node's check for parse rbs ([#1711](https://github.com/ruby/rbs/pull/1711))
|
71
|
+
|
72
|
+
#### rbs collection
|
73
|
+
|
74
|
+
* Fix RBS loading precedence ([#1720](https://github.com/ruby/rbs/pull/1720))
|
75
|
+
* Refactor Git source by using `git?` method ([#1701](https://github.com/ruby/rbs/pull/1701))
|
76
|
+
|
77
|
+
### Miscellaneous
|
78
|
+
|
79
|
+
* Introduce RaaP for testing of signature ([#1810](https://github.com/ruby/rbs/pull/1810))
|
80
|
+
* Revise .gemspec to remove `Gemfile` and `Gemfile.lock` ([#1856](https://github.com/ruby/rbs/pull/1856))
|
81
|
+
* Add link to gem_rbs_collection to README ([#1827](https://github.com/ruby/rbs/pull/1827))
|
82
|
+
* Remove `Gemfile.lock` from the gem package ([#1823](https://github.com/ruby/rbs/pull/1823))
|
83
|
+
* Modify template to use TestHelper ([#1776](https://github.com/ruby/rbs/pull/1776))
|
84
|
+
* Should focus on `String.new` not `String#initialize`. ([#1789](https://github.com/ruby/rbs/pull/1789))
|
85
|
+
* Make the test suite compatible with `--enable-frozen-string-literal` ([#1767](https://github.com/ruby/rbs/pull/1767))
|
86
|
+
* Stop reusing `fd` ([#1752](https://github.com/ruby/rbs/pull/1752))
|
87
|
+
* Fix test failures on Ruby 3.4 ([#1734](https://github.com/ruby/rbs/pull/1734))
|
88
|
+
* Stop trace object allocations during test ([#1724](https://github.com/ruby/rbs/pull/1724))
|
89
|
+
* Fix head test fails ([#1719](https://github.com/ruby/rbs/pull/1719))
|
4
90
|
|
5
91
|
## 3.4.4 (2024-02-08)
|
6
92
|
|
data/README.md
CHANGED
@@ -69,7 +69,7 @@ gem "rbs"
|
|
69
69
|
|
70
70
|
The gem ships with the `rbs` command line tool to demonstrate what it can do and help develop RBS.
|
71
71
|
|
72
|
-
```
|
72
|
+
```console
|
73
73
|
$ rbs version
|
74
74
|
$ rbs list
|
75
75
|
$ rbs ancestors ::Object
|
@@ -98,7 +98,7 @@ end
|
|
98
98
|
|
99
99
|
Running prototype on the above will automatically generate
|
100
100
|
|
101
|
-
```
|
101
|
+
```console
|
102
102
|
$ rbs prototype rb person.rb
|
103
103
|
class Person
|
104
104
|
@name: untyped
|
@@ -118,7 +118,7 @@ end
|
|
118
118
|
It prints signatures for all methods, classes, instance variables, and constants.
|
119
119
|
This is only a starting point, and you should edit the output to match your signature more accurately.
|
120
120
|
|
121
|
-
`rbs
|
121
|
+
`rbs prototype` offers three options.
|
122
122
|
|
123
123
|
- `rb` generates from just the available Ruby code
|
124
124
|
- `rbi` generates from Sorbet RBI
|
@@ -174,6 +174,7 @@ puts singleton.methods[:gsub]
|
|
174
174
|
|
175
175
|
## Guides
|
176
176
|
|
177
|
+
- [Architecture](docs/architecture.md)
|
177
178
|
- [Core and standard library signature contribution guide](docs/CONTRIBUTING.md)
|
178
179
|
- [Writing signatures guide](docs/sigs.md)
|
179
180
|
- [Stdlib signatures guide](docs/stdlib.md)
|
@@ -189,6 +190,7 @@ Here is a list of some places you can talk with active maintainers.
|
|
189
190
|
|
190
191
|
- [Ruby Discord Server (invite link)](https://discord.gg/ad2acQFtkh) -- We have `rbs` channel in Ruby Discord server.
|
191
192
|
- [ruby-jp Slack Workspace (in Japanese)](https://ruby-jp.github.io/) -- We have `types` channel in ruby-jp slack workspace.
|
193
|
+
- [gem_rbs_collection](https://github.com/ruby/gem_rbs_collection) -- We have a repository of third-party RBS type definitions, for the case your dependency doesn't ship with RBS files.
|
192
194
|
|
193
195
|
## Development
|
194
196
|
|
data/Rakefile
CHANGED
@@ -19,7 +19,7 @@ Rake::TestTask.new(:test => :compile) do |t|
|
|
19
19
|
end
|
20
20
|
end
|
21
21
|
|
22
|
-
multitask :default => [:test, :stdlib_test, :rubocop, :validate, :test_doc]
|
22
|
+
multitask :default => [:test, :stdlib_test, :typecheck_test, :rubocop, :validate, :test_doc]
|
23
23
|
|
24
24
|
task :lexer do
|
25
25
|
sh "re2c -W --no-generation-date -o ext/rbs_extension/lexer.c ext/rbs_extension/lexer.re"
|
@@ -92,6 +92,23 @@ task :stdlib_test => :compile do
|
|
92
92
|
sh "#{ruby} -Ilib #{bin}/test_runner.rb test/stdlib/Encoding_test.rb"
|
93
93
|
end
|
94
94
|
|
95
|
+
task :typecheck_test => :compile do
|
96
|
+
FileList["test/typecheck/*"].each do |test|
|
97
|
+
Dir.chdir(test) do
|
98
|
+
expectations = File.join(test, "steep_expectations.yml")
|
99
|
+
if File.exist?(expectations)
|
100
|
+
sh "steep check --with_expectations"
|
101
|
+
else
|
102
|
+
sh "steep check"
|
103
|
+
end
|
104
|
+
end
|
105
|
+
end
|
106
|
+
end
|
107
|
+
|
108
|
+
task :raap => :compile do
|
109
|
+
sh %q[cat test/raap.txt | egrep -v '^#|^$' | xargs bundle exec raap]
|
110
|
+
end
|
111
|
+
|
95
112
|
task :rubocop do
|
96
113
|
sh "rubocop --parallel"
|
97
114
|
end
|
@@ -153,7 +170,7 @@ namespace :generate do
|
|
153
170
|
|
154
171
|
<%- unless class_methods.empty? -%>
|
155
172
|
class <%= target %>SingletonTest < Test::Unit::TestCase
|
156
|
-
include
|
173
|
+
include TestHelper
|
157
174
|
|
158
175
|
# library "pathname", "securerandom" # Declare library signatures to load
|
159
176
|
testing "singleton(::<%= target %>)"
|
@@ -172,7 +189,7 @@ namespace :generate do
|
|
172
189
|
|
173
190
|
<%- unless instance_methods.empty? -%>
|
174
191
|
class <%= target %>Test < Test::Unit::TestCase
|
175
|
-
include
|
192
|
+
include TestHelper
|
176
193
|
|
177
194
|
# library "pathname", "securerandom" # Declare library signatures to load
|
178
195
|
testing "::<%= target %>"
|
data/Steepfile
CHANGED
@@ -8,7 +8,7 @@ target :lib do
|
|
8
8
|
# "lib/rbs/test.rb"
|
9
9
|
)
|
10
10
|
|
11
|
-
library "pathname", "json", "logger", "monitor", "tsort", "uri", 'dbm', 'pstore', 'singleton', 'shellwords', 'fileutils', 'find', 'digest', '
|
11
|
+
library "pathname", "json", "logger", "monitor", "tsort", "uri", 'dbm', 'pstore', 'singleton', 'shellwords', 'fileutils', 'find', 'digest', 'prettyprint', 'yaml', "psych", "securerandom"
|
12
12
|
signature "stdlib/strscan/0/"
|
13
13
|
signature "stdlib/optparse/0/"
|
14
14
|
signature "stdlib/rdoc/0/"
|
data/core/enumerator.rbs
CHANGED
@@ -293,7 +293,7 @@ class Enumerator[unchecked out Elem, out Return] < Object
|
|
293
293
|
# lazy fashion (see Enumerator#size). It can either be a value or a callable
|
294
294
|
# object.
|
295
295
|
#
|
296
|
-
def initialize: (?Integer arg0) { (Enumerator::Yielder arg0) ->
|
296
|
+
def initialize: (?Integer arg0) { (Enumerator::Yielder arg0) -> Return } -> void
|
297
297
|
|
298
298
|
# <!--
|
299
299
|
# rdoc-file=enumerator.c
|
data/core/float.rbs
CHANGED
@@ -442,7 +442,8 @@ class Float < Numeric
|
|
442
442
|
# 13.0.divmod(4.0) # => [3, 1.0]
|
443
443
|
# 13.0.divmod(Rational(4, 1)) # => [3, 1.0]
|
444
444
|
#
|
445
|
-
def divmod: (
|
445
|
+
def divmod: (Integer | Float | Rational) -> [ Integer, Float ]
|
446
|
+
| (Numeric) -> [ Numeric, Numeric ]
|
446
447
|
|
447
448
|
def dup: () -> self
|
448
449
|
|