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.
Files changed (208) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/comments.yml +34 -0
  3. data/.github/workflows/ruby.yml +5 -0
  4. data/CHANGELOG.md +82 -0
  5. data/README.md +6 -1
  6. data/Rakefile +56 -21
  7. data/core/array.rbs +2866 -1086
  8. data/core/basic_object.rbs +150 -30
  9. data/core/binding.rbs +33 -0
  10. data/core/builtin.rbs +4 -4
  11. data/core/class.rbs +43 -5
  12. data/core/comparable.rbs +57 -0
  13. data/core/complex.rbs +170 -4
  14. data/core/constants.rbs +51 -0
  15. data/core/deprecated.rbs +7 -0
  16. data/core/dir.rbs +305 -20
  17. data/core/encoding.rbs +1214 -77
  18. data/core/enumerable.rbs +2173 -234
  19. data/core/enumerator.rbs +448 -182
  20. data/core/env.rbs +448 -1
  21. data/core/errno.rbs +1 -10
  22. data/core/errors.rbs +152 -2
  23. data/core/exception.rbs +201 -127
  24. data/core/false_class.rbs +27 -0
  25. data/core/fiber.rbs +118 -37
  26. data/core/fiber_error.rbs +8 -9
  27. data/core/file.rbs +1060 -142
  28. data/core/file_test.rbs +287 -32
  29. data/core/float.rbs +776 -300
  30. data/core/gc.rbs +185 -34
  31. data/core/global_variables.rbs +5 -1
  32. data/core/hash.rbs +1582 -649
  33. data/core/integer.rbs +974 -204
  34. data/core/io/buffer.rbs +710 -0
  35. data/core/io/wait.rbs +29 -8
  36. data/core/io.rbs +2438 -417
  37. data/core/kernel.rbs +2319 -318
  38. data/core/marshal.rbs +37 -2
  39. data/core/match_data.rbs +123 -6
  40. data/core/math.rbs +126 -6
  41. data/core/method.rbs +226 -102
  42. data/core/module.rbs +421 -45
  43. data/core/nil_class.rbs +64 -0
  44. data/core/numeric.rbs +620 -142
  45. data/core/object.rbs +453 -81
  46. data/core/object_space.rbs +92 -2
  47. data/core/proc.rbs +482 -285
  48. data/core/process.rbs +443 -34
  49. data/core/ractor.rbs +232 -9
  50. data/core/random.rbs +151 -52
  51. data/core/range.rbs +885 -160
  52. data/core/rational.rbs +122 -6
  53. data/core/rb_config.rbs +14 -4
  54. data/core/refinement.rbs +44 -0
  55. data/core/regexp.rbs +156 -14
  56. data/core/ruby_vm.rbs +42 -3
  57. data/core/signal.rbs +78 -39
  58. data/core/string.rbs +2123 -567
  59. data/core/string_io.rbs +204 -0
  60. data/core/struct.rbs +283 -28
  61. data/core/symbol.rbs +304 -30
  62. data/core/thread.rbs +1288 -688
  63. data/core/thread_group.rbs +66 -10
  64. data/core/time.rbs +643 -217
  65. data/core/trace_point.rbs +100 -12
  66. data/core/true_class.rbs +24 -0
  67. data/core/unbound_method.rbs +73 -7
  68. data/core/warning.rbs +37 -12
  69. data/docs/CONTRIBUTING.md +40 -34
  70. data/docs/stdlib.md +3 -102
  71. data/docs/syntax.md +54 -11
  72. data/ext/rbs_extension/extconf.rb +1 -0
  73. data/ext/rbs_extension/lexer.h +5 -0
  74. data/ext/rbs_extension/lexstate.c +6 -0
  75. data/ext/rbs_extension/parser.c +85 -10
  76. data/ext/rbs_extension/ruby_objs.c +4 -2
  77. data/ext/rbs_extension/ruby_objs.h +2 -2
  78. data/goodcheck.yml +0 -11
  79. data/lib/rbs/annotate/annotations.rb +197 -0
  80. data/lib/rbs/annotate/formatter.rb +80 -0
  81. data/lib/rbs/annotate/rdoc_annotator.rb +398 -0
  82. data/lib/rbs/annotate/rdoc_source.rb +120 -0
  83. data/lib/rbs/annotate.rb +6 -0
  84. data/lib/rbs/ast/members.rb +21 -13
  85. data/lib/rbs/buffer.rb +17 -11
  86. data/lib/rbs/cli.rb +48 -1
  87. data/lib/rbs/definition_builder/method_builder.rb +28 -16
  88. data/lib/rbs/definition_builder.rb +6 -2
  89. data/lib/rbs/environment.rb +8 -4
  90. data/lib/rbs/location_aux.rb +12 -0
  91. data/lib/rbs/namespace.rb +1 -1
  92. data/lib/rbs/prototype/rb.rb +12 -0
  93. data/lib/rbs/type_alias_regularity.rb +6 -4
  94. data/lib/rbs/type_name.rb +1 -1
  95. data/lib/rbs/types.rb +1 -1
  96. data/lib/rbs/validator.rb +6 -0
  97. data/lib/rbs/version.rb +1 -1
  98. data/lib/rbs/writer.rb +54 -4
  99. data/lib/rbs.rb +0 -2
  100. data/schema/typeParam.json +3 -3
  101. data/sig/annotate/annotations.rbs +102 -0
  102. data/sig/annotate/formatter.rbs +24 -0
  103. data/sig/annotate/rdoc_annotater.rbs +82 -0
  104. data/sig/annotate/rdoc_source.rbs +30 -0
  105. data/sig/buffer.rbs +6 -2
  106. data/sig/cli.rbs +2 -0
  107. data/sig/collection/{collections.rbs → sources.rbs} +0 -0
  108. data/sig/location.rbs +6 -0
  109. data/sig/members.rbs +24 -18
  110. data/sig/method_builder.rbs +5 -4
  111. data/sig/method_types.rbs +5 -1
  112. data/sig/polyfill.rbs +78 -0
  113. data/sig/validator.rbs +3 -1
  114. data/sig/writer.rbs +79 -2
  115. data/stdlib/abbrev/0/abbrev.rbs +6 -0
  116. data/stdlib/abbrev/0/array.rbs +26 -0
  117. data/stdlib/base64/0/base64.rbs +31 -0
  118. data/stdlib/benchmark/0/benchmark.rbs +74 -3
  119. data/stdlib/bigdecimal/0/big_decimal.rbs +614 -165
  120. data/stdlib/bigdecimal-math/0/big_math.rbs +41 -64
  121. data/stdlib/cgi/0/core.rbs +649 -21
  122. data/stdlib/coverage/0/coverage.rbs +164 -2
  123. data/stdlib/csv/0/csv.rbs +2862 -398
  124. data/stdlib/date/0/date.rbs +483 -25
  125. data/stdlib/date/0/date_time.rbs +187 -12
  126. data/stdlib/dbm/0/dbm.rbs +152 -17
  127. data/stdlib/digest/0/digest.rbs +146 -0
  128. data/stdlib/erb/0/erb.rbs +65 -245
  129. data/stdlib/fiber/0/fiber.rbs +73 -91
  130. data/stdlib/fileutils/0/fileutils.rbs +301 -1
  131. data/stdlib/find/0/find.rbs +9 -0
  132. data/stdlib/forwardable/0/forwardable.rbs +65 -1
  133. data/stdlib/io-console/0/io-console.rbs +227 -15
  134. data/stdlib/ipaddr/0/ipaddr.rbs +161 -0
  135. data/stdlib/json/0/json.rbs +1147 -145
  136. data/stdlib/logger/0/formatter.rbs +24 -0
  137. data/stdlib/logger/0/log_device.rbs +64 -0
  138. data/stdlib/logger/0/logger.rbs +165 -13
  139. data/stdlib/logger/0/period.rbs +10 -0
  140. data/stdlib/logger/0/severity.rbs +26 -0
  141. data/stdlib/monitor/0/monitor.rbs +163 -0
  142. data/stdlib/mutex_m/0/mutex_m.rbs +35 -6
  143. data/stdlib/net-http/0/manifest.yaml +1 -0
  144. data/stdlib/net-http/0/net-http.rbs +1513 -683
  145. data/stdlib/nkf/0/nkf.rbs +372 -0
  146. data/stdlib/objspace/0/objspace.rbs +149 -90
  147. data/stdlib/openssl/0/openssl.rbs +8108 -71
  148. data/stdlib/optparse/0/optparse.rbs +487 -19
  149. data/stdlib/pathname/0/pathname.rbs +425 -124
  150. data/stdlib/prettyprint/0/prettyprint.rbs +120 -99
  151. data/stdlib/prime/0/integer-extension.rbs +20 -2
  152. data/stdlib/prime/0/prime.rbs +88 -21
  153. data/stdlib/pstore/0/pstore.rbs +102 -0
  154. data/stdlib/pty/0/pty.rbs +64 -14
  155. data/stdlib/resolv/0/resolv.rbs +420 -31
  156. data/stdlib/rubygems/0/basic_specification.rbs +4 -1
  157. data/stdlib/rubygems/0/config_file.rbs +33 -1
  158. data/stdlib/rubygems/0/dependency_installer.rbs +4 -3
  159. data/stdlib/rubygems/0/installer.rbs +13 -1
  160. data/stdlib/rubygems/0/path_support.rbs +4 -1
  161. data/stdlib/rubygems/0/platform.rbs +5 -1
  162. data/stdlib/rubygems/0/request_set.rbs +44 -2
  163. data/stdlib/rubygems/0/requirement.rbs +65 -2
  164. data/stdlib/rubygems/0/rubygems.rbs +407 -0
  165. data/stdlib/rubygems/0/source_list.rbs +13 -0
  166. data/stdlib/rubygems/0/specification.rbs +21 -1
  167. data/stdlib/rubygems/0/stream_ui.rbs +3 -1
  168. data/stdlib/rubygems/0/uninstaller.rbs +8 -1
  169. data/stdlib/rubygems/0/version.rbs +60 -157
  170. data/stdlib/securerandom/0/securerandom.rbs +44 -0
  171. data/stdlib/set/0/set.rbs +423 -109
  172. data/stdlib/shellwords/0/shellwords.rbs +55 -77
  173. data/stdlib/singleton/0/singleton.rbs +20 -0
  174. data/stdlib/socket/0/addrinfo.rbs +210 -9
  175. data/stdlib/socket/0/basic_socket.rbs +103 -11
  176. data/stdlib/socket/0/ip_socket.rbs +31 -9
  177. data/stdlib/socket/0/socket.rbs +586 -38
  178. data/stdlib/socket/0/tcp_server.rbs +22 -2
  179. data/stdlib/socket/0/tcp_socket.rbs +12 -1
  180. data/stdlib/socket/0/udp_socket.rbs +25 -2
  181. data/stdlib/socket/0/unix_server.rbs +22 -2
  182. data/stdlib/socket/0/unix_socket.rbs +45 -5
  183. data/stdlib/strscan/0/string_scanner.rbs +210 -9
  184. data/stdlib/tempfile/0/tempfile.rbs +58 -10
  185. data/stdlib/time/0/time.rbs +208 -116
  186. data/stdlib/timeout/0/timeout.rbs +10 -0
  187. data/stdlib/tmpdir/0/tmpdir.rbs +13 -4
  188. data/stdlib/tsort/0/cyclic.rbs +1 -0
  189. data/stdlib/tsort/0/interfaces.rbs +1 -0
  190. data/stdlib/tsort/0/tsort.rbs +42 -0
  191. data/stdlib/uri/0/common.rbs +57 -8
  192. data/stdlib/uri/0/file.rbs +55 -109
  193. data/stdlib/uri/0/ftp.rbs +6 -3
  194. data/stdlib/uri/0/generic.rbs +558 -329
  195. data/stdlib/uri/0/http.rbs +60 -114
  196. data/stdlib/uri/0/https.rbs +8 -102
  197. data/stdlib/uri/0/ldap.rbs +143 -137
  198. data/stdlib/uri/0/ldaps.rbs +8 -102
  199. data/stdlib/uri/0/mailto.rbs +3 -0
  200. data/stdlib/uri/0/rfc2396_parser.rbs +66 -26
  201. data/stdlib/uri/0/ws.rbs +6 -3
  202. data/stdlib/uri/0/wss.rbs +5 -3
  203. data/stdlib/yaml/0/dbm.rbs +151 -87
  204. data/stdlib/yaml/0/store.rbs +6 -0
  205. data/stdlib/zlib/0/zlib.rbs +90 -31
  206. metadata +18 -6
  207. data/lib/rbs/location.rb +0 -221
  208. data/sig/char_scanner.rbs +0 -9
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f6c23428bebbddb53710d5f77761d75bdcafa38d988b9fdc62b20563ff3eb60a
4
- data.tar.gz: 65c065d547aed025238d0350800830e31e18a3fcd21db73406a7374202517b80
3
+ metadata.gz: d38dbf926f1fd55787f5d4a70ed5e31ce737e040b698e2aa3d5f68ab14a8b791
4
+ data.tar.gz: 0d86ba79682c662bc3ab2058a0e4464be43d8a317e58194c0e7dfd1f8aaec735
5
5
  SHA512:
6
- metadata.gz: c0fbada9d621cb2e1cd2a3793ad208d78a50f826c1c58e03eb5d256f8e6fa024446549f2943c85e37dc0ad1170672b66651dab66d5f8eb3d0a0f9b5757e9315e
7
- data.tar.gz: 505fcfdf431ac0c904325494157fab4c5b1855b200ba1d416be0cf3680c173ac302517eb99a93d6657a0344a1fa198a2455498fec493f6b240a96d7b8cddf994
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
@@ -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
- - [Standard library signature contribution guide](docs/CONTRIBUTING.md)
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 :klass, :env
153
+ attr_reader :target, :env
117
154
 
118
- def initialize(klass)
119
- @klass = klass
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 <%= klass %>SingletonTest < Test::Unit::TestCase
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(::<%= klass %>)"
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
- <%= klass %>, :<%= method_name %>
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 <%= klass %>Test < Test::Unit::TestCase
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 "::<%= klass %>"
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
- <%= klass %>.new, :<%= method_name %>
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(type_name).methods.select {|_, definition|
209
- definition.implemented_in == type_name
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(type_name).methods.select {|_, definition|
215
- definition.implemented_in == type_name
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(klass).call
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