rbs 2.0.0 → 2.2.2
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/comments.yml +34 -0
- data/.github/workflows/ruby.yml +5 -0
- data/CHANGELOG.md +82 -0
- data/README.md +6 -1
- data/Rakefile +56 -21
- data/core/array.rbs +2866 -1086
- data/core/basic_object.rbs +150 -30
- data/core/binding.rbs +33 -0
- data/core/builtin.rbs +4 -4
- data/core/class.rbs +43 -5
- data/core/comparable.rbs +57 -0
- data/core/complex.rbs +170 -4
- data/core/constants.rbs +51 -0
- data/core/deprecated.rbs +7 -0
- data/core/dir.rbs +305 -20
- data/core/encoding.rbs +1214 -77
- data/core/enumerable.rbs +2173 -234
- data/core/enumerator.rbs +448 -182
- data/core/env.rbs +448 -1
- data/core/errno.rbs +1 -10
- data/core/errors.rbs +152 -2
- data/core/exception.rbs +201 -127
- data/core/false_class.rbs +27 -0
- data/core/fiber.rbs +118 -37
- data/core/fiber_error.rbs +8 -9
- data/core/file.rbs +1060 -142
- data/core/file_test.rbs +287 -32
- data/core/float.rbs +776 -300
- data/core/gc.rbs +185 -34
- data/core/global_variables.rbs +5 -1
- data/core/hash.rbs +1582 -649
- data/core/integer.rbs +974 -204
- data/core/io/buffer.rbs +710 -0
- data/core/io/wait.rbs +29 -8
- data/core/io.rbs +2438 -417
- data/core/kernel.rbs +2319 -318
- data/core/marshal.rbs +37 -2
- data/core/match_data.rbs +123 -6
- data/core/math.rbs +126 -6
- data/core/method.rbs +226 -102
- data/core/module.rbs +421 -45
- data/core/nil_class.rbs +64 -0
- data/core/numeric.rbs +620 -142
- data/core/object.rbs +453 -81
- data/core/object_space.rbs +92 -2
- data/core/proc.rbs +482 -285
- data/core/process.rbs +443 -34
- data/core/ractor.rbs +232 -9
- data/core/random.rbs +151 -52
- data/core/range.rbs +885 -160
- data/core/rational.rbs +122 -6
- data/core/rb_config.rbs +14 -4
- data/core/refinement.rbs +44 -0
- data/core/regexp.rbs +156 -14
- data/core/ruby_vm.rbs +42 -3
- data/core/signal.rbs +78 -39
- data/core/string.rbs +2123 -567
- data/core/string_io.rbs +204 -0
- data/core/struct.rbs +283 -28
- data/core/symbol.rbs +304 -30
- data/core/thread.rbs +1288 -688
- data/core/thread_group.rbs +66 -10
- data/core/time.rbs +643 -217
- data/core/trace_point.rbs +100 -12
- data/core/true_class.rbs +24 -0
- data/core/unbound_method.rbs +73 -7
- data/core/warning.rbs +37 -12
- data/docs/CONTRIBUTING.md +40 -34
- data/docs/stdlib.md +3 -102
- data/docs/syntax.md +54 -11
- data/ext/rbs_extension/extconf.rb +1 -0
- data/ext/rbs_extension/lexer.h +5 -0
- data/ext/rbs_extension/lexstate.c +6 -0
- data/ext/rbs_extension/parser.c +85 -10
- data/ext/rbs_extension/ruby_objs.c +4 -2
- data/ext/rbs_extension/ruby_objs.h +2 -2
- data/goodcheck.yml +0 -11
- data/lib/rbs/annotate/annotations.rb +197 -0
- data/lib/rbs/annotate/formatter.rb +80 -0
- data/lib/rbs/annotate/rdoc_annotator.rb +398 -0
- data/lib/rbs/annotate/rdoc_source.rb +120 -0
- data/lib/rbs/annotate.rb +6 -0
- data/lib/rbs/ast/members.rb +21 -13
- data/lib/rbs/buffer.rb +17 -11
- data/lib/rbs/cli.rb +48 -1
- data/lib/rbs/definition_builder/method_builder.rb +28 -16
- data/lib/rbs/definition_builder.rb +6 -2
- data/lib/rbs/environment.rb +8 -4
- data/lib/rbs/location_aux.rb +12 -0
- data/lib/rbs/namespace.rb +1 -1
- data/lib/rbs/prototype/rb.rb +12 -0
- data/lib/rbs/type_alias_regularity.rb +6 -4
- data/lib/rbs/type_name.rb +1 -1
- data/lib/rbs/types.rb +1 -1
- data/lib/rbs/validator.rb +6 -0
- data/lib/rbs/version.rb +1 -1
- data/lib/rbs/writer.rb +54 -4
- data/lib/rbs.rb +0 -2
- data/schema/typeParam.json +3 -3
- data/sig/annotate/annotations.rbs +102 -0
- data/sig/annotate/formatter.rbs +24 -0
- data/sig/annotate/rdoc_annotater.rbs +82 -0
- data/sig/annotate/rdoc_source.rbs +30 -0
- data/sig/buffer.rbs +6 -2
- data/sig/cli.rbs +2 -0
- data/sig/collection/{collections.rbs → sources.rbs} +0 -0
- data/sig/location.rbs +6 -0
- data/sig/members.rbs +24 -18
- data/sig/method_builder.rbs +5 -4
- data/sig/method_types.rbs +5 -1
- data/sig/polyfill.rbs +78 -0
- data/sig/validator.rbs +3 -1
- data/sig/writer.rbs +79 -2
- data/stdlib/abbrev/0/abbrev.rbs +6 -0
- data/stdlib/abbrev/0/array.rbs +26 -0
- data/stdlib/base64/0/base64.rbs +31 -0
- data/stdlib/benchmark/0/benchmark.rbs +74 -3
- data/stdlib/bigdecimal/0/big_decimal.rbs +614 -165
- data/stdlib/bigdecimal-math/0/big_math.rbs +41 -64
- data/stdlib/cgi/0/core.rbs +649 -21
- data/stdlib/coverage/0/coverage.rbs +164 -2
- data/stdlib/csv/0/csv.rbs +2862 -398
- data/stdlib/date/0/date.rbs +483 -25
- data/stdlib/date/0/date_time.rbs +187 -12
- data/stdlib/dbm/0/dbm.rbs +152 -17
- data/stdlib/digest/0/digest.rbs +146 -0
- data/stdlib/erb/0/erb.rbs +65 -245
- data/stdlib/fiber/0/fiber.rbs +73 -91
- data/stdlib/fileutils/0/fileutils.rbs +301 -1
- data/stdlib/find/0/find.rbs +9 -0
- data/stdlib/forwardable/0/forwardable.rbs +65 -1
- data/stdlib/io-console/0/io-console.rbs +227 -15
- data/stdlib/ipaddr/0/ipaddr.rbs +161 -0
- data/stdlib/json/0/json.rbs +1147 -145
- data/stdlib/logger/0/formatter.rbs +24 -0
- data/stdlib/logger/0/log_device.rbs +64 -0
- data/stdlib/logger/0/logger.rbs +165 -13
- data/stdlib/logger/0/period.rbs +10 -0
- data/stdlib/logger/0/severity.rbs +26 -0
- data/stdlib/monitor/0/monitor.rbs +163 -0
- data/stdlib/mutex_m/0/mutex_m.rbs +35 -6
- data/stdlib/net-http/0/manifest.yaml +1 -0
- data/stdlib/net-http/0/net-http.rbs +1513 -683
- data/stdlib/nkf/0/nkf.rbs +372 -0
- data/stdlib/objspace/0/objspace.rbs +149 -90
- data/stdlib/openssl/0/openssl.rbs +8108 -71
- data/stdlib/optparse/0/optparse.rbs +487 -19
- data/stdlib/pathname/0/pathname.rbs +425 -124
- data/stdlib/prettyprint/0/prettyprint.rbs +120 -99
- data/stdlib/prime/0/integer-extension.rbs +20 -2
- data/stdlib/prime/0/prime.rbs +88 -21
- data/stdlib/pstore/0/pstore.rbs +102 -0
- data/stdlib/pty/0/pty.rbs +64 -14
- data/stdlib/resolv/0/resolv.rbs +420 -31
- data/stdlib/rubygems/0/basic_specification.rbs +4 -1
- data/stdlib/rubygems/0/config_file.rbs +33 -1
- data/stdlib/rubygems/0/dependency_installer.rbs +4 -3
- data/stdlib/rubygems/0/installer.rbs +13 -1
- data/stdlib/rubygems/0/path_support.rbs +4 -1
- data/stdlib/rubygems/0/platform.rbs +5 -1
- data/stdlib/rubygems/0/request_set.rbs +44 -2
- data/stdlib/rubygems/0/requirement.rbs +65 -2
- data/stdlib/rubygems/0/rubygems.rbs +407 -0
- data/stdlib/rubygems/0/source_list.rbs +13 -0
- data/stdlib/rubygems/0/specification.rbs +21 -1
- data/stdlib/rubygems/0/stream_ui.rbs +3 -1
- data/stdlib/rubygems/0/uninstaller.rbs +8 -1
- data/stdlib/rubygems/0/version.rbs +60 -157
- data/stdlib/securerandom/0/securerandom.rbs +44 -0
- data/stdlib/set/0/set.rbs +423 -109
- data/stdlib/shellwords/0/shellwords.rbs +55 -77
- data/stdlib/singleton/0/singleton.rbs +20 -0
- data/stdlib/socket/0/addrinfo.rbs +210 -9
- data/stdlib/socket/0/basic_socket.rbs +103 -11
- data/stdlib/socket/0/ip_socket.rbs +31 -9
- data/stdlib/socket/0/socket.rbs +586 -38
- data/stdlib/socket/0/tcp_server.rbs +22 -2
- data/stdlib/socket/0/tcp_socket.rbs +12 -1
- data/stdlib/socket/0/udp_socket.rbs +25 -2
- data/stdlib/socket/0/unix_server.rbs +22 -2
- data/stdlib/socket/0/unix_socket.rbs +45 -5
- data/stdlib/strscan/0/string_scanner.rbs +210 -9
- data/stdlib/tempfile/0/tempfile.rbs +58 -10
- data/stdlib/time/0/time.rbs +208 -116
- data/stdlib/timeout/0/timeout.rbs +10 -0
- data/stdlib/tmpdir/0/tmpdir.rbs +13 -4
- data/stdlib/tsort/0/cyclic.rbs +1 -0
- data/stdlib/tsort/0/interfaces.rbs +1 -0
- data/stdlib/tsort/0/tsort.rbs +42 -0
- data/stdlib/uri/0/common.rbs +57 -8
- data/stdlib/uri/0/file.rbs +55 -109
- data/stdlib/uri/0/ftp.rbs +6 -3
- data/stdlib/uri/0/generic.rbs +558 -329
- data/stdlib/uri/0/http.rbs +60 -114
- data/stdlib/uri/0/https.rbs +8 -102
- data/stdlib/uri/0/ldap.rbs +143 -137
- data/stdlib/uri/0/ldaps.rbs +8 -102
- data/stdlib/uri/0/mailto.rbs +3 -0
- data/stdlib/uri/0/rfc2396_parser.rbs +66 -26
- data/stdlib/uri/0/ws.rbs +6 -3
- data/stdlib/uri/0/wss.rbs +5 -3
- data/stdlib/yaml/0/dbm.rbs +151 -87
- data/stdlib/yaml/0/store.rbs +6 -0
- data/stdlib/zlib/0/zlib.rbs +90 -31
- metadata +18 -6
- data/lib/rbs/location.rb +0 -221
- data/sig/char_scanner.rbs +0 -9
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: d38dbf926f1fd55787f5d4a70ed5e31ce737e040b698e2aa3d5f68ab14a8b791
|
|
4
|
+
data.tar.gz: 0d86ba79682c662bc3ab2058a0e4464be43d8a317e58194c0e7dfd1f8aaec735
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 25801791a12dfe85b729fc0e72eb9ebdb0e801c3c1fe3a1f8d9ec2ded0476e8b2a35a7ac520f034a1d8fe2e954bf4bc6d59caaaf9136286cd5844e8f3d8ae7da
|
|
7
|
+
data.tar.gz: b5ad3e185184b6ffcb786379abd5909284bab2a680ece911db40fccc7b8d258a52d588114ee99178c00b1d5bcf2030698c7e9db94b7b00b3d2ea88d269dd9de7
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
name: RBS Comments
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches:
|
|
6
|
+
- master
|
|
7
|
+
pull_request: {}
|
|
8
|
+
|
|
9
|
+
jobs:
|
|
10
|
+
test:
|
|
11
|
+
runs-on: "ubuntu-latest"
|
|
12
|
+
container:
|
|
13
|
+
image: rubylang/ruby:3.1-focal
|
|
14
|
+
steps:
|
|
15
|
+
- uses: actions/checkout@v2
|
|
16
|
+
- name: Install dependencies
|
|
17
|
+
run: |
|
|
18
|
+
apt-get update
|
|
19
|
+
apt-get install -y libdb-dev
|
|
20
|
+
- name: Update rubygems & bundler
|
|
21
|
+
run: |
|
|
22
|
+
ruby -v
|
|
23
|
+
gem update --system
|
|
24
|
+
- name: bundle config set with
|
|
25
|
+
run: |
|
|
26
|
+
echo "NO_MINITEST=true" >> $GITHUB_ENV
|
|
27
|
+
bundle config set --local without 'minitest'
|
|
28
|
+
if: "contains(matrix.container_tag, 'master-nightly')"
|
|
29
|
+
- name: bin/setup
|
|
30
|
+
run: |
|
|
31
|
+
bin/setup
|
|
32
|
+
- name: Run test
|
|
33
|
+
run: |
|
|
34
|
+
bundle exec rake annotate confirm_annotation
|
data/.github/workflows/ruby.yml
CHANGED
|
@@ -13,6 +13,7 @@ jobs:
|
|
|
13
13
|
matrix:
|
|
14
14
|
container_tag:
|
|
15
15
|
- master-nightly-focal
|
|
16
|
+
- 3.1-focal
|
|
16
17
|
- 3.0-focal
|
|
17
18
|
- 2.7-bionic
|
|
18
19
|
- 2.6-bionic
|
|
@@ -27,6 +28,10 @@ jobs:
|
|
|
27
28
|
job: confirm_lexer
|
|
28
29
|
- container_tag: 2.6-bionic
|
|
29
30
|
job: stdlib_test
|
|
31
|
+
- container_tag: 2.7-bionic
|
|
32
|
+
job: stdlib_test
|
|
33
|
+
- container_tag: 3.0-focal
|
|
34
|
+
job: stdlib_test
|
|
30
35
|
container:
|
|
31
36
|
image: rubylang/ruby:${{ matrix.container_tag }}
|
|
32
37
|
steps:
|
data/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,88 @@
|
|
|
2
2
|
|
|
3
3
|
## master
|
|
4
4
|
|
|
5
|
+
## 2.2.2 (2022-02-22)
|
|
6
|
+
|
|
7
|
+
### Signature updates
|
|
8
|
+
|
|
9
|
+
* `cgi` ([\#761](https://github.com/ruby/rbs/pull/761))
|
|
10
|
+
* `json` ([\#761](https://github.com/ruby/rbs/pull/761))
|
|
11
|
+
* `set` ([\#761](https://github.com/ruby/rbs/pull/761))
|
|
12
|
+
|
|
13
|
+
## 2.2.1 (2022-02-22)
|
|
14
|
+
|
|
15
|
+
### Library changes
|
|
16
|
+
|
|
17
|
+
* Let `validate_type_alias` run without an error on unknown type ([\#912](https://github.com/ruby/rbs/pull/912))
|
|
18
|
+
|
|
19
|
+
## 2.2.0 (2022-02-22)
|
|
20
|
+
|
|
21
|
+
RBS 2.2 ships with a new syntax to specify the visibility of a method per definition bases.
|
|
22
|
+
|
|
23
|
+
```rbs
|
|
24
|
+
class Foo
|
|
25
|
+
private def hello: () -> void
|
|
26
|
+
|
|
27
|
+
private attr_accessor world: String
|
|
28
|
+
end
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
It also changes the semantics of `self?` method.
|
|
32
|
+
It defines both _public_ singleton method and _private_ instance method, which is equivalent to `module_function`.
|
|
33
|
+
|
|
34
|
+
## Signature updates
|
|
35
|
+
|
|
36
|
+
* `net-http` ([\#892](https://github.com/ruby/rbs/pull/892))
|
|
37
|
+
* `uri` ([\#864](https://github.com/ruby/rbs/pull/864))
|
|
38
|
+
* `Encoding` ([\#897](https://github.com/ruby/rbs/pull/897), [\#898](https://github.com/ruby/rbs/pull/898))
|
|
39
|
+
* `File::Stat` ([\#879](https://github.com/ruby/rbs/pull/879))
|
|
40
|
+
* `Kernel#sleep` ([\#893](https://github.com/ruby/rbs/pull/893))
|
|
41
|
+
|
|
42
|
+
### Language updates
|
|
43
|
+
|
|
44
|
+
* Add public/private per member modifier ([\#911](https://github.com/ruby/rbs/pull/911))
|
|
45
|
+
* Let `self?.` be equivalent to `module_function` ([\#910](https://github.com/ruby/rbs/pull/910))
|
|
46
|
+
|
|
47
|
+
### Library changes
|
|
48
|
+
|
|
49
|
+
* Add c99 flag for compiling on Ruby 2 ([\#895](https://github.com/ruby/rbs/pull/895))
|
|
50
|
+
* Fix incorrect URI reference in `schema/typeParam.json` ([\#891](https://github.com/ruby/rbs/pull/891))
|
|
51
|
+
* Allow scaffolding below namespace ([\#894](https://github.com/ruby/rbs/pull/894))
|
|
52
|
+
* Let `Writer` preserve format ([\#900](https://github.com/ruby/rbs/pull/900))
|
|
53
|
+
* Reduce memory usage of `RBS::Buffer` ([\#907](https://github.com/ruby/rbs/pull/907))
|
|
54
|
+
* Do not call `#class` from `#hash` to improve performance ([\#906](https://github.com/ruby/rbs/pull/906))
|
|
55
|
+
* Skip type variable validation if `unchcked` ([\#909](https://github.com/ruby/rbs/pull/909))
|
|
56
|
+
|
|
57
|
+
### Miscellaneous
|
|
58
|
+
|
|
59
|
+
* Add `Thread::Backtrace` and `Thread::Backtrace::Location` test ([\#896](https://github.com/ruby/rbs/pull/896))
|
|
60
|
+
* Test annotations ([\#902](https://github.com/ruby/rbs/pull/902))
|
|
61
|
+
* Remove goodcheck rule for arglists section ([\#901](https://github.com/ruby/rbs/pull/901))
|
|
62
|
+
* Remove `CharScanner` due to no longer used ([\#905](https://github.com/ruby/rbs/pull/905))
|
|
63
|
+
|
|
64
|
+
## 2.1.0 (2022-02-02)
|
|
65
|
+
|
|
66
|
+
RBS 2.1 is a release to deliver the types and documents of the new and updated methods of Ruby 3.1.
|
|
67
|
+
|
|
68
|
+
### Signature updates
|
|
69
|
+
|
|
70
|
+
* Documents imported from Ruby 3.1 ([\#881](https://github.com/ruby/rbs/pull/881))
|
|
71
|
+
* Methods/classes updated in Ruby 3.1 ([\#886](https://github.com/ruby/rbs/pull/886))
|
|
72
|
+
* io/wait ([\#865](https://github.com/ruby/rbs/pull/865))
|
|
73
|
+
* json ([\#863](https://github.com/ruby/rbs/pull/863))
|
|
74
|
+
* nkf ([\#873](https://github.com/ruby/rbs/pull/873))
|
|
75
|
+
* openssl ([\#866](https://github.com/ruby/rbs/pull/866))
|
|
76
|
+
* `Dir.exists?`, `FileTest#exists?` ([\#884](https://github.com/ruby/rbs/pull/884))
|
|
77
|
+
* `FileTest` ([\#880](https://github.com/ruby/rbs/pull/880))
|
|
78
|
+
* `Gem::Version#<=>` ([\#869](https://github.com/ruby/rbs/pull/869))
|
|
79
|
+
* `Process.clock_gettime` ([\#858](https://github.com/ruby/rbs/pull/858))
|
|
80
|
+
|
|
81
|
+
### Library changes
|
|
82
|
+
|
|
83
|
+
* Introduce `rbs annotate` command ([\#881](https://github.com/ruby/rbs/pull/881))
|
|
84
|
+
* Make prototype rb to be aware of prepend ([\#861](https://github.com/ruby/rbs/pull/861))
|
|
85
|
+
* Fixes incorrect "Invalid Variance" error when method type variable shadows outer type variable ([#889](https://github.com/ruby/rbs/pull/889))
|
|
86
|
+
|
|
5
87
|
## 2.0.0 (2021-12-24)
|
|
6
88
|
|
|
7
89
|
### Bounded Generics
|
data/README.md
CHANGED
|
@@ -52,6 +52,11 @@ end
|
|
|
52
52
|
```
|
|
53
53
|
<!-- run-end -->
|
|
54
54
|
|
|
55
|
+
## The Target Version
|
|
56
|
+
|
|
57
|
+
* The standard library signatures targets Ruby 3.1. (The latest release of Ruby.)
|
|
58
|
+
* The library code targets Ruby 3.1, 3.0, and 2.7. (It runs on 2.6 in fact.)
|
|
59
|
+
|
|
55
60
|
## Installation
|
|
56
61
|
|
|
57
62
|
Install the `rbs` gem. `$ gem install rbs` from the command line, or add a line in your `Gemfile`.
|
|
@@ -122,7 +127,7 @@ puts singleton.methods[:gsub]
|
|
|
122
127
|
|
|
123
128
|
## Guides
|
|
124
129
|
|
|
125
|
-
- [
|
|
130
|
+
- [Core and standard library signature contribution guide](docs/CONTRIBUTING.md)
|
|
126
131
|
- [Writing signatures guide](docs/sigs.md)
|
|
127
132
|
- [Stdlib signatures guide](docs/stdlib.md)
|
|
128
133
|
- [Syntax](docs/syntax.md)
|
data/Rakefile
CHANGED
|
@@ -34,6 +34,15 @@ rule ".c" => ".re" do |t|
|
|
|
34
34
|
puts "⚠️⚠️⚠️ #{t.name} is older than #{t.source}. You may need to run `rake lexer` ⚠️⚠️⚠️"
|
|
35
35
|
end
|
|
36
36
|
|
|
37
|
+
task :annotate do
|
|
38
|
+
sh "rbs annotate core stdlib"
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
task :confirm_annotation do
|
|
42
|
+
puts "Testing if RBS docs are updated with respect to RDoc"
|
|
43
|
+
sh "git diff --exit-code core stdlib"
|
|
44
|
+
end
|
|
45
|
+
|
|
37
46
|
task :compile => "ext/rbs_extension/lexer.c"
|
|
38
47
|
|
|
39
48
|
task :test_doc do
|
|
@@ -63,6 +72,10 @@ task :validate => :compile do
|
|
|
63
72
|
lib << "monitor"
|
|
64
73
|
end
|
|
65
74
|
|
|
75
|
+
if lib == ["cgi"]
|
|
76
|
+
lib << "tempfile"
|
|
77
|
+
end
|
|
78
|
+
|
|
66
79
|
if lib == ["csv"]
|
|
67
80
|
lib << "forwardable"
|
|
68
81
|
end
|
|
@@ -73,6 +86,7 @@ task :validate => :compile do
|
|
|
73
86
|
|
|
74
87
|
if lib == ["net-http"]
|
|
75
88
|
lib << "uri"
|
|
89
|
+
lib << "timeout"
|
|
76
90
|
end
|
|
77
91
|
|
|
78
92
|
if lib == ["resolv"]
|
|
@@ -106,17 +120,40 @@ namespace :generate do
|
|
|
106
120
|
raise "Class name is necessary. e.g. rake 'generate:stdlib_test[String]'"
|
|
107
121
|
end
|
|
108
122
|
|
|
109
|
-
path = Pathname(ENV["RBS_GENERATE_TEST_PATH"] || "test/stdlib/#{klass}_test.rb")
|
|
110
|
-
raise "#{path} already exists!" if path.exist?
|
|
111
|
-
|
|
112
123
|
require "erb"
|
|
113
124
|
require "rbs"
|
|
114
125
|
|
|
126
|
+
class TestTarget
|
|
127
|
+
def initialize(klass)
|
|
128
|
+
@type_name = RBS::Namespace.parse(klass).to_type_name
|
|
129
|
+
end
|
|
130
|
+
|
|
131
|
+
def path
|
|
132
|
+
Pathname(ENV['RBS_GENERATE_TEST_PATH'] || "test/stdlib/#{file_name}_test.rb")
|
|
133
|
+
end
|
|
134
|
+
|
|
135
|
+
def file_name
|
|
136
|
+
@type_name.to_s.gsub(/\A::/, '').gsub(/::/, '_')
|
|
137
|
+
end
|
|
138
|
+
|
|
139
|
+
def to_s
|
|
140
|
+
@type_name.to_s
|
|
141
|
+
end
|
|
142
|
+
|
|
143
|
+
def absolute_type_name
|
|
144
|
+
@absolute_type_name ||= @type_name.absolute!
|
|
145
|
+
end
|
|
146
|
+
end
|
|
147
|
+
|
|
148
|
+
target = TestTarget.new(klass)
|
|
149
|
+
path = target.path
|
|
150
|
+
raise "#{path} already exists!" if path.exist?
|
|
151
|
+
|
|
115
152
|
class TestTemplateBuilder
|
|
116
|
-
attr_reader :
|
|
153
|
+
attr_reader :target, :env
|
|
117
154
|
|
|
118
|
-
def initialize(
|
|
119
|
-
@
|
|
155
|
+
def initialize(target)
|
|
156
|
+
@target = target
|
|
120
157
|
|
|
121
158
|
loader = RBS::EnvironmentLoader.new
|
|
122
159
|
Dir['stdlib/*'].each do |lib|
|
|
@@ -132,17 +169,17 @@ namespace :generate do
|
|
|
132
169
|
require_relative "test_helper"
|
|
133
170
|
|
|
134
171
|
<%- unless class_methods.empty? -%>
|
|
135
|
-
class <%=
|
|
172
|
+
class <%= target %>SingletonTest < Test::Unit::TestCase
|
|
136
173
|
include TypeAssertions
|
|
137
174
|
|
|
138
175
|
# library "pathname", "set", "securerandom" # Declare library signatures to load
|
|
139
|
-
testing "singleton(::<%=
|
|
176
|
+
testing "singleton(::<%= target %>)"
|
|
140
177
|
|
|
141
178
|
<%- class_methods.each do |method_name, definition| %>
|
|
142
179
|
def test_<%= test_name_for(method_name) %>
|
|
143
180
|
<%- definition.method_types.each do |method_type| -%>
|
|
144
181
|
assert_send_type "<%= method_type %>",
|
|
145
|
-
<%=
|
|
182
|
+
<%= target %>, :<%= method_name %>
|
|
146
183
|
<%- end -%>
|
|
147
184
|
end
|
|
148
185
|
<%- end -%>
|
|
@@ -150,17 +187,17 @@ namespace :generate do
|
|
|
150
187
|
<%- end -%>
|
|
151
188
|
|
|
152
189
|
<%- unless instance_methods.empty? -%>
|
|
153
|
-
class <%=
|
|
190
|
+
class <%= target %>Test < Test::Unit::TestCase
|
|
154
191
|
include TypeAssertions
|
|
155
192
|
|
|
156
193
|
# library "pathname", "set", "securerandom" # Declare library signatures to load
|
|
157
|
-
testing "::<%=
|
|
194
|
+
testing "::<%= target %>"
|
|
158
195
|
|
|
159
196
|
<%- instance_methods.each do |method_name, definition| %>
|
|
160
197
|
def test_<%= test_name_for(method_name) %>
|
|
161
198
|
<%- definition.method_types.each do |method_type| -%>
|
|
162
199
|
assert_send_type "<%= method_type %>",
|
|
163
|
-
<%=
|
|
200
|
+
<%= target %>.new, :<%= method_name %>
|
|
164
201
|
<%- end -%>
|
|
165
202
|
end
|
|
166
203
|
<%- end -%>
|
|
@@ -200,24 +237,20 @@ namespace :generate do
|
|
|
200
237
|
}.fetch(method_name, method_name)
|
|
201
238
|
end
|
|
202
239
|
|
|
203
|
-
def type_name
|
|
204
|
-
@type_name ||= RBS::TypeName.new(name: klass.to_sym, namespace: RBS::Namespace.new(path: [], absolute: true))
|
|
205
|
-
end
|
|
206
|
-
|
|
207
240
|
def class_methods
|
|
208
|
-
@class_methods ||= RBS::DefinitionBuilder.new(env: env).build_singleton(
|
|
209
|
-
definition.implemented_in ==
|
|
241
|
+
@class_methods ||= RBS::DefinitionBuilder.new(env: env).build_singleton(target.absolute_type_name).methods.select {|_, definition|
|
|
242
|
+
definition.implemented_in == target.absolute_type_name
|
|
210
243
|
}
|
|
211
244
|
end
|
|
212
245
|
|
|
213
246
|
def instance_methods
|
|
214
|
-
@instance_methods ||= RBS::DefinitionBuilder.new(env: env).build_instance(
|
|
215
|
-
definition.implemented_in ==
|
|
247
|
+
@instance_methods ||= RBS::DefinitionBuilder.new(env: env).build_instance(target.absolute_type_name).methods.select {|_, definition|
|
|
248
|
+
definition.implemented_in == target.absolute_type_name
|
|
216
249
|
}
|
|
217
250
|
end
|
|
218
251
|
end
|
|
219
252
|
|
|
220
|
-
path.write TestTemplateBuilder.new(
|
|
253
|
+
path.write TestTemplateBuilder.new(target).call
|
|
221
254
|
|
|
222
255
|
puts "Created: #{path}"
|
|
223
256
|
end
|
|
@@ -226,4 +259,6 @@ end
|
|
|
226
259
|
task :test_generate_stdlib do
|
|
227
260
|
sh "RBS_GENERATE_TEST_PATH=/tmp/Array_test.rb rake 'generate:stdlib_test[Array]'"
|
|
228
261
|
sh "ruby -c /tmp/Array_test.rb"
|
|
262
|
+
sh "RBS_GENERATE_TEST_PATH=/tmp/Thread_Mutex_test.rb rake 'generate:stdlib_test[Thread::Mutex]'"
|
|
263
|
+
sh "ruby -c /tmp/Thread_Mutex_test.rb"
|
|
229
264
|
end
|