rbs 3.6.1 → 3.9.5

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 (268) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/comments.yml +2 -2
  3. data/.github/workflows/dependabot.yml +1 -1
  4. data/.github/workflows/ruby.yml +34 -10
  5. data/.github/workflows/windows.yml +20 -3
  6. data/.gitignore +1 -0
  7. data/.rubocop.yml +26 -1
  8. data/CHANGELOG.md +241 -0
  9. data/Rakefile +54 -4
  10. data/config.yml +317 -0
  11. data/core/array.rbs +1756 -1591
  12. data/core/basic_object.rbs +38 -35
  13. data/core/comparable.rbs +1 -1
  14. data/core/complex.rbs +166 -94
  15. data/core/data.rbs +2 -2
  16. data/core/dir.rbs +2 -18
  17. data/core/encoding.rbs +12 -32
  18. data/core/enumerable.rbs +270 -266
  19. data/core/enumerator.rbs +14 -4
  20. data/core/env.rbs +1 -1
  21. data/core/errno.rbs +33 -16
  22. data/core/errors.rbs +6 -2
  23. data/core/exception.rbs +342 -167
  24. data/core/fiber.rbs +3 -2
  25. data/core/file.rbs +26 -75
  26. data/core/float.rbs +125 -72
  27. data/core/gc.rbs +158 -42
  28. data/core/hash.rbs +122 -143
  29. data/core/integer.rbs +79 -50
  30. data/core/io/buffer.rbs +49 -43
  31. data/core/io.rbs +108 -151
  32. data/core/kernel.rbs +341 -209
  33. data/core/match_data.rbs +76 -2
  34. data/core/math.rbs +0 -36
  35. data/core/method.rbs +2 -2
  36. data/core/module.rbs +32 -27
  37. data/core/nil_class.rbs +2 -2
  38. data/core/numeric.rbs +101 -104
  39. data/core/object.rbs +1 -5
  40. data/core/object_space/weak_key_map.rbs +3 -4
  41. data/core/object_space.rbs +3 -3
  42. data/core/proc.rbs +82 -14
  43. data/core/process.rbs +110 -58
  44. data/core/ractor.rbs +57 -4
  45. data/core/range.rbs +114 -87
  46. data/core/rational.rbs +0 -2
  47. data/core/rbs/unnamed/argf.rbs +237 -36
  48. data/core/rbs/unnamed/env_class.rbs +35 -53
  49. data/core/rbs/unnamed/random.rbs +1 -2
  50. data/core/regexp.rbs +10 -56
  51. data/core/ruby_vm.rbs +88 -9
  52. data/core/rubygems/config_file.rbs +3 -0
  53. data/core/rubygems/errors.rbs +3 -6
  54. data/core/rubygems/platform.rbs +0 -9
  55. data/core/rubygems/rubygems.rbs +3 -6
  56. data/core/rubygems/version.rbs +8 -8
  57. data/core/set.rbs +4 -16
  58. data/core/string.rbs +271 -264
  59. data/core/struct.rbs +6 -18
  60. data/core/symbol.rbs +14 -21
  61. data/core/thread.rbs +32 -35
  62. data/core/time.rbs +131 -50
  63. data/core/trace_point.rbs +124 -113
  64. data/core/true_class.rbs +0 -1
  65. data/core/unbound_method.rbs +1 -1
  66. data/core/warning.rbs +9 -2
  67. data/docs/architecture.md +1 -1
  68. data/docs/syntax.md +17 -10
  69. data/ext/rbs_extension/extconf.rb +11 -0
  70. data/ext/rbs_extension/location.c +61 -29
  71. data/ext/rbs_extension/location.h +4 -3
  72. data/ext/rbs_extension/main.c +23 -1
  73. data/ext/rbs_extension/parser.c +506 -517
  74. data/ext/rbs_extension/parserstate.c +109 -30
  75. data/ext/rbs_extension/parserstate.h +6 -4
  76. data/ext/rbs_extension/rbs_extension.h +1 -10
  77. data/{ext/rbs_extension → include/rbs}/constants.h +21 -19
  78. data/include/rbs/ruby_objs.h +72 -0
  79. data/include/rbs/util/rbs_constant_pool.h +219 -0
  80. data/include/rbs.h +7 -0
  81. data/lib/rbs/annotate/annotations.rb +3 -3
  82. data/lib/rbs/annotate/rdoc_source.rb +2 -2
  83. data/lib/rbs/ast/declarations.rb +9 -4
  84. data/lib/rbs/ast/directives.rb +10 -0
  85. data/lib/rbs/ast/members.rb +2 -0
  86. data/lib/rbs/ast/type_param.rb +2 -12
  87. data/lib/rbs/cli/diff.rb +3 -3
  88. data/lib/rbs/cli/validate.rb +2 -1
  89. data/lib/rbs/cli.rb +16 -16
  90. data/lib/rbs/collection/config/lockfile_generator.rb +58 -8
  91. data/lib/rbs/collection/config.rb +5 -3
  92. data/lib/rbs/collection/sources/rubygems.rb +1 -1
  93. data/lib/rbs/collection.rb +1 -0
  94. data/lib/rbs/definition.rb +51 -34
  95. data/lib/rbs/definition_builder/ancestor_builder.rb +5 -3
  96. data/lib/rbs/definition_builder.rb +83 -24
  97. data/lib/rbs/environment.rb +33 -18
  98. data/lib/rbs/environment_loader.rb +6 -1
  99. data/lib/rbs/errors.rb +24 -0
  100. data/lib/rbs/locator.rb +2 -0
  101. data/lib/rbs/method_type.rb +2 -0
  102. data/lib/rbs/namespace.rb +1 -0
  103. data/lib/rbs/parser_aux.rb +40 -3
  104. data/lib/rbs/prototype/rb.rb +20 -12
  105. data/lib/rbs/prototype/rbi.rb +11 -6
  106. data/lib/rbs/prototype/runtime/value_object_generator.rb +7 -5
  107. data/lib/rbs/prototype/runtime.rb +7 -5
  108. data/lib/rbs/subtractor.rb +3 -3
  109. data/lib/rbs/test/hook.rb +47 -42
  110. data/lib/rbs/test/type_check.rb +7 -5
  111. data/lib/rbs/type_name.rb +14 -9
  112. data/lib/rbs/types.rb +63 -14
  113. data/lib/rbs/unit_test/spy.rb +4 -2
  114. data/lib/rbs/unit_test/type_assertions.rb +19 -13
  115. data/lib/rbs/unit_test/with_aliases.rb +3 -1
  116. data/lib/rbs/validator.rb +7 -1
  117. data/lib/rbs/version.rb +1 -1
  118. data/lib/rbs/writer.rb +10 -5
  119. data/lib/rbs.rb +1 -0
  120. data/lib/rdoc_plugin/parser.rb +2 -2
  121. data/rbs.gemspec +6 -2
  122. data/sig/ancestor_graph.rbs +5 -5
  123. data/sig/annotate/rdoc_source.rbs +2 -0
  124. data/sig/cli.rbs +2 -0
  125. data/sig/collection/config/lockfile_generator.rbs +9 -1
  126. data/sig/declarations.rbs +10 -3
  127. data/sig/definition.rbs +80 -12
  128. data/sig/definition_builder.rbs +18 -4
  129. data/sig/directives.rbs +17 -1
  130. data/sig/environment.rbs +3 -1
  131. data/sig/errors.rbs +19 -0
  132. data/sig/namespace.rbs +2 -3
  133. data/sig/parser.rbs +5 -1
  134. data/sig/prototype/rb.rbs +1 -1
  135. data/sig/resolver/constant_resolver.rbs +2 -2
  136. data/sig/resolver/context.rbs +1 -1
  137. data/sig/subtractor.rbs +1 -1
  138. data/sig/test/type_check.rbs +2 -2
  139. data/sig/type_alias_dependency.rbs +2 -2
  140. data/sig/type_alias_regularity.rbs +6 -6
  141. data/sig/type_param.rbs +4 -4
  142. data/sig/typename.rbs +8 -5
  143. data/sig/types.rbs +1 -1
  144. data/sig/unit_test/spy.rbs +2 -0
  145. data/sig/unit_test/type_assertions.rbs +2 -0
  146. data/sig/use_map.rbs +1 -1
  147. data/sig/validator.rbs +6 -2
  148. data/sig/vendorer.rbs +1 -1
  149. data/sig/writer.rbs +1 -1
  150. data/{ext/rbs_extension → src}/constants.c +35 -36
  151. data/src/ruby_objs.c +799 -0
  152. data/src/util/rbs_constant_pool.c +342 -0
  153. data/stdlib/base64/0/base64.rbs +0 -9
  154. data/stdlib/benchmark/0/benchmark.rbs +11 -2
  155. data/stdlib/bigdecimal/0/big_decimal.rbs +26 -182
  156. data/stdlib/cgi/0/core.rbs +60 -3
  157. data/stdlib/cgi/0/manifest.yaml +1 -0
  158. data/stdlib/coverage/0/coverage.rbs +0 -3
  159. data/stdlib/csv/0/csv.rbs +18 -58
  160. data/stdlib/csv/0/manifest.yaml +1 -0
  161. data/stdlib/date/0/date.rbs +27 -42
  162. data/stdlib/did_you_mean/0/did_you_mean.rbs +1 -6
  163. data/stdlib/digest/0/digest.rbs +25 -2
  164. data/stdlib/erb/0/erb.rbs +0 -1
  165. data/stdlib/etc/0/etc.rbs +51 -34
  166. data/stdlib/fileutils/0/fileutils.rbs +3 -44
  167. data/stdlib/io-console/0/io-console.rbs +69 -15
  168. data/stdlib/ipaddr/0/ipaddr.rbs +16 -4
  169. data/stdlib/json/0/json.rbs +107 -120
  170. data/stdlib/logger/0/log_device.rbs +1 -1
  171. data/stdlib/logger/0/logger.rbs +3 -18
  172. data/stdlib/minitest/0/kernel.rbs +2 -2
  173. data/stdlib/minitest/0/minitest/abstract_reporter.rbs +4 -1
  174. data/stdlib/minitest/0/minitest/assertion.rbs +1 -0
  175. data/stdlib/minitest/0/minitest/assertions.rbs +58 -13
  176. data/stdlib/minitest/0/minitest/backtrace_filter.rbs +7 -0
  177. data/stdlib/minitest/0/minitest/bench_spec.rbs +8 -8
  178. data/stdlib/minitest/0/minitest/benchmark.rbs +17 -16
  179. data/stdlib/minitest/0/minitest/compress.rbs +13 -0
  180. data/stdlib/minitest/0/minitest/error_on_warning.rbs +3 -0
  181. data/stdlib/minitest/0/minitest/mock.rbs +9 -5
  182. data/stdlib/minitest/0/minitest/parallel/executor.rbs +4 -0
  183. data/stdlib/minitest/0/minitest/parallel/test/class_methods.rbs +0 -1
  184. data/stdlib/minitest/0/minitest/pride_io.rbs +8 -0
  185. data/stdlib/minitest/0/minitest/pride_lol.rbs +2 -0
  186. data/stdlib/minitest/0/minitest/progress_reporter.rbs +1 -1
  187. data/stdlib/minitest/0/minitest/reportable.rbs +2 -0
  188. data/stdlib/minitest/0/minitest/runnable.rbs +33 -1
  189. data/stdlib/minitest/0/minitest/spec/dsl/instance_methods.rbs +1 -1
  190. data/stdlib/minitest/0/minitest/spec/dsl.rbs +10 -6
  191. data/stdlib/minitest/0/minitest/spec.rbs +1 -1
  192. data/stdlib/minitest/0/minitest/statistics_reporter.rbs +5 -0
  193. data/stdlib/minitest/0/minitest/summary_reporter.rbs +0 -7
  194. data/stdlib/minitest/0/minitest/test/lifecycle_hooks.rbs +1 -1
  195. data/stdlib/minitest/0/minitest/test.rbs +7 -14
  196. data/stdlib/minitest/0/minitest/unexpected_error.rbs +2 -0
  197. data/stdlib/minitest/0/minitest/unexpected_warning.rbs +6 -0
  198. data/stdlib/minitest/0/minitest/unit.rbs +1 -2
  199. data/stdlib/minitest/0/minitest.rbs +41 -892
  200. data/stdlib/monitor/0/monitor.rbs +13 -4
  201. data/stdlib/net-http/0/net-http.rbs +42 -109
  202. data/stdlib/nkf/0/nkf.rbs +30 -0
  203. data/stdlib/objspace/0/objspace.rbs +1 -2
  204. data/stdlib/observable/0/observable.rbs +1 -1
  205. data/stdlib/open-uri/0/manifest.yaml +1 -0
  206. data/stdlib/open-uri/0/open-uri.rbs +52 -0
  207. data/stdlib/open3/0/open3.rbs +0 -8
  208. data/stdlib/openssl/0/manifest.yaml +1 -0
  209. data/stdlib/openssl/0/openssl.rbs +235 -143
  210. data/stdlib/optparse/0/optparse.rbs +58 -18
  211. data/stdlib/pathname/0/pathname.rbs +2 -8
  212. data/stdlib/pp/0/pp.rbs +3 -1
  213. data/stdlib/prettyprint/0/prettyprint.rbs +0 -4
  214. data/stdlib/pstore/0/pstore.rbs +0 -6
  215. data/stdlib/psych/0/core_ext.rbs +12 -0
  216. data/stdlib/psych/0/psych.rbs +15 -4
  217. data/stdlib/pty/0/pty.rbs +46 -4
  218. data/stdlib/rdoc/0/code_object.rbs +0 -4
  219. data/stdlib/rdoc/0/markup.rbs +10 -12
  220. data/stdlib/rdoc/0/rdoc.rbs +13 -8
  221. data/stdlib/resolv/0/resolv.rbs +21 -12
  222. data/stdlib/ripper/0/ripper.rbs +0 -2
  223. data/stdlib/securerandom/0/securerandom.rbs +7 -2
  224. data/stdlib/shellwords/0/shellwords.rbs +11 -12
  225. data/stdlib/singleton/0/singleton.rbs +0 -1
  226. data/stdlib/socket/0/addrinfo.rbs +1 -2
  227. data/stdlib/socket/0/basic_socket.rbs +0 -5
  228. data/stdlib/socket/0/socket.rbs +32 -27
  229. data/stdlib/socket/0/tcp_server.rbs +0 -3
  230. data/stdlib/socket/0/tcp_socket.rbs +36 -3
  231. data/stdlib/socket/0/udp_socket.rbs +0 -1
  232. data/stdlib/socket/0/unix_server.rbs +0 -3
  233. data/stdlib/socket/0/unix_socket.rbs +4 -2
  234. data/{core/string_io.rbs → stdlib/stringio/0/stringio.rbs} +1 -1
  235. data/stdlib/strscan/0/string_scanner.rbs +1265 -422
  236. data/stdlib/tempfile/0/tempfile.rbs +135 -28
  237. data/stdlib/time/0/time.rbs +48 -35
  238. data/stdlib/timeout/0/timeout.rbs +11 -8
  239. data/stdlib/tmpdir/0/tmpdir.rbs +10 -3
  240. data/stdlib/tsort/0/tsort.rbs +0 -4
  241. data/stdlib/uri/0/common.rbs +28 -30
  242. data/stdlib/uri/0/ftp.rbs +1 -1
  243. data/stdlib/uri/0/generic.rbs +22 -18
  244. data/stdlib/uri/0/http.rbs +2 -2
  245. data/stdlib/uri/0/rfc2396_parser.rbs +3 -0
  246. data/stdlib/zlib/0/buf_error.rbs +1 -70
  247. data/stdlib/zlib/0/data_error.rbs +1 -70
  248. data/stdlib/zlib/0/deflate.rbs +8 -72
  249. data/stdlib/zlib/0/error.rbs +1 -70
  250. data/stdlib/zlib/0/gzip_file/crc_error.rbs +2 -105
  251. data/stdlib/zlib/0/gzip_file/error.rbs +2 -105
  252. data/stdlib/zlib/0/gzip_file/length_error.rbs +2 -105
  253. data/stdlib/zlib/0/gzip_file/no_footer.rbs +2 -105
  254. data/stdlib/zlib/0/gzip_file.rbs +1 -71
  255. data/stdlib/zlib/0/gzip_reader.rbs +3 -74
  256. data/stdlib/zlib/0/gzip_writer.rbs +1 -70
  257. data/stdlib/zlib/0/inflate.rbs +4 -71
  258. data/stdlib/zlib/0/mem_error.rbs +1 -70
  259. data/stdlib/zlib/0/need_dict.rbs +1 -70
  260. data/stdlib/zlib/0/stream_end.rbs +1 -70
  261. data/stdlib/zlib/0/stream_error.rbs +1 -70
  262. data/stdlib/zlib/0/version_error.rbs +1 -70
  263. data/stdlib/zlib/0/zlib.rbs +0 -2
  264. data/stdlib/zlib/0/zstream.rbs +4 -72
  265. metadata +17 -13
  266. data/ext/rbs_extension/ruby_objs.c +0 -602
  267. data/ext/rbs_extension/ruby_objs.h +0 -51
  268. data/stdlib/minitest/0/manifest.yaml +0 -2
data/core/match_data.rbs CHANGED
@@ -41,7 +41,6 @@
41
41
  # * `$'` is Regexp.last_match`.post_match`;
42
42
  # * `$+` is Regexp.last_match`[ -1 ]` (the last capture).
43
43
  #
44
- #
45
44
  # See also "Special global variables" section in Regexp documentation.
46
45
  #
47
46
  class MatchData
@@ -133,6 +132,82 @@ class MatchData
133
132
  #
134
133
  def begin: (capture backref) -> Integer?
135
134
 
135
+ # <!--
136
+ # rdoc-file=re.c
137
+ # - bytebegin(n) -> integer
138
+ # - bytebegin(name) -> integer
139
+ # -->
140
+ # Returns the offset (in bytes) of the beginning of the specified match.
141
+ #
142
+ # When non-negative integer argument `n` is given, returns the offset of the
143
+ # beginning of the `n`th match:
144
+ #
145
+ # m = /(.)(.)(\d+)(\d)/.match("THX1138.")
146
+ # # => #<MatchData "HX1138" 1:"H" 2:"X" 3:"113" 4:"8">
147
+ # m[0] # => "HX1138"
148
+ # m.bytebegin(0) # => 1
149
+ # m[3] # => "113"
150
+ # m.bytebegin(3) # => 3
151
+ #
152
+ # m = /(т)(е)(с)/.match('тест')
153
+ # # => #<MatchData "тес" 1:"т" 2:"е" 3:"с">
154
+ # m[0] # => "тес"
155
+ # m.bytebegin(0) # => 0
156
+ # m[3] # => "с"
157
+ # m.bytebegin(3) # => 4
158
+ #
159
+ # When string or symbol argument `name` is given, returns the offset of the
160
+ # beginning for the named match:
161
+ #
162
+ # m = /(?<foo>.)(.)(?<bar>.)/.match("hoge")
163
+ # # => #<MatchData "hog" foo:"h" bar:"g">
164
+ # m[:foo] # => "h"
165
+ # m.bytebegin('foo') # => 0
166
+ # m[:bar] # => "g"
167
+ # m.bytebegin(:bar) # => 2
168
+ #
169
+ # Related: MatchData#byteend, MatchData#byteoffset.
170
+ #
171
+ def bytebegin: (capture backref) -> Integer?
172
+
173
+ # <!--
174
+ # rdoc-file=re.c
175
+ # - byteend(n) -> integer
176
+ # - byteend(name) -> integer
177
+ # -->
178
+ # Returns the offset (in bytes) of the end of the specified match.
179
+ #
180
+ # When non-negative integer argument `n` is given, returns the offset of the end
181
+ # of the `n`th match:
182
+ #
183
+ # m = /(.)(.)(\d+)(\d)/.match("THX1138.")
184
+ # # => #<MatchData "HX1138" 1:"H" 2:"X" 3:"113" 4:"8">
185
+ # m[0] # => "HX1138"
186
+ # m.byteend(0) # => 7
187
+ # m[3] # => "113"
188
+ # m.byteend(3) # => 6
189
+ #
190
+ # m = /(т)(е)(с)/.match('тест')
191
+ # # => #<MatchData "тес" 1:"т" 2:"е" 3:"с">
192
+ # m[0] # => "тес"
193
+ # m.byteend(0) # => 6
194
+ # m[3] # => "с"
195
+ # m.byteend(3) # => 6
196
+ #
197
+ # When string or symbol argument `name` is given, returns the offset of the end
198
+ # for the named match:
199
+ #
200
+ # m = /(?<foo>.)(.)(?<bar>.)/.match("hoge")
201
+ # # => #<MatchData "hog" foo:"h" bar:"g">
202
+ # m[:foo] # => "h"
203
+ # m.byteend('foo') # => 1
204
+ # m[:bar] # => "g"
205
+ # m.byteend(:bar) # => 3
206
+ #
207
+ # Related: MatchData#bytebegin, MatchData#byteoffset.
208
+ #
209
+ def byteend: (capture backref) -> Integer?
210
+
136
211
  # <!--
137
212
  # rdoc-file=re.c
138
213
  # - mtch.byteoffset(n) -> array
@@ -544,7 +619,6 @@ class MatchData
544
619
  # * Ranges.
545
620
  # * Names (strings and symbols).
546
621
  #
547
- #
548
622
  # Examples:
549
623
  #
550
624
  # m = /(.)(.)(\d+)(\d)/.match("THX1138: The Movie")
data/core/math.rbs CHANGED
@@ -37,7 +37,6 @@
37
37
  #
38
38
  # [1.0, INFINITY)
39
39
  #
40
- #
41
40
  # Many values returned by Math methods are numerical approximations. This is
42
41
  # because many such values are, in mathematics, of infinite precision, while in
43
42
  # numerical computation the precision is finite.
@@ -64,7 +63,6 @@
64
63
  # * ::sin: Returns the sine of the given argument.
65
64
  # * ::tan: Returns the tangent of the given argument.
66
65
  #
67
- #
68
66
  # #### Inverse Trigonometric Functions
69
67
  #
70
68
  # * ::acos: Returns the arc cosine of the given argument.
@@ -72,21 +70,18 @@
72
70
  # * ::atan: Returns the arc tangent of the given argument.
73
71
  # * ::atan2: Returns the arg tangent of two given arguments.
74
72
  #
75
- #
76
73
  # #### Hyperbolic Trigonometric Functions
77
74
  #
78
75
  # * ::cosh: Returns the hyperbolic cosine of the given argument.
79
76
  # * ::sinh: Returns the hyperbolic sine of the given argument.
80
77
  # * ::tanh: Returns the hyperbolic tangent of the given argument.
81
78
  #
82
- #
83
79
  # #### Inverse Hyperbolic Trigonometric Functions
84
80
  #
85
81
  # * ::acosh: Returns the inverse hyperbolic cosine of the given argument.
86
82
  # * ::asinh: Returns the inverse hyperbolic sine of the given argument.
87
83
  # * ::atanh: Returns the inverse hyperbolic tangent of the given argument.
88
84
  #
89
- #
90
85
  # #### Exponentiation and Logarithmic Functions
91
86
  #
92
87
  # * ::exp: Returns the value of a given value raised to a given power.
@@ -94,19 +89,16 @@
94
89
  # * ::log10: Returns the base 10 logarithm of the given argument.
95
90
  # * ::log2: Returns the base 2 logarithm of the given argument.
96
91
  #
97
- #
98
92
  # #### Fraction and Exponent Functions
99
93
  #
100
94
  # * ::frexp: Returns the fraction and exponent of the given argument.
101
95
  # * ::ldexp: Returns the value for a given fraction and exponent.
102
96
  #
103
- #
104
97
  # #### Root Functions
105
98
  #
106
99
  # * ::cbrt: Returns the cube root of the given argument.
107
100
  # * ::sqrt: Returns the square root of the given argument.
108
101
  #
109
- #
110
102
  # #### Error Functions
111
103
  #
112
104
  # * ::erf: Returns the value of the Gauss error function for the given
@@ -114,14 +106,12 @@
114
106
  # * ::erfc: Returns the value of the complementary error function for the
115
107
  # given argument.
116
108
  #
117
- #
118
109
  # #### Gamma Functions
119
110
  #
120
111
  # * ::gamma: Returns the value of the gamma function for the given argument.
121
112
  # * ::lgamma: Returns the value of the logarithmic gamma function for the
122
113
  # given argument.
123
114
  #
124
- #
125
115
  # #### Hypotenuse Function
126
116
  #
127
117
  # * ::hypot: Returns `sqrt(a**2 + b**2)` for the given `a` and `b`.
@@ -168,7 +158,6 @@ module Math
168
158
  # * Domain: `[-1, 1]`.
169
159
  # * Range: `[0, PI]`.
170
160
  #
171
- #
172
161
  # Examples:
173
162
  #
174
163
  # acos(-1.0) # => 3.141592653589793 # PI
@@ -187,7 +176,6 @@ module Math
187
176
  # * Domain: `[1, INFINITY]`.
188
177
  # * Range: `[0, INFINITY]`.
189
178
  #
190
- #
191
179
  # Examples:
192
180
  #
193
181
  # acosh(1.0) # => 0.0
@@ -205,7 +193,6 @@ module Math
205
193
  # * Domain: `[-1, -1]`.
206
194
  # * Range: `[-PI/2, PI/2]`.
207
195
  #
208
- #
209
196
  # Examples:
210
197
  #
211
198
  # asin(-1.0) # => -1.5707963267948966 # -PI/2
@@ -224,7 +211,6 @@ module Math
224
211
  # * Domain: `[-INFINITY, INFINITY]`.
225
212
  # * Range: `[-INFINITY, INFINITY]`.
226
213
  #
227
- #
228
214
  # Examples:
229
215
  #
230
216
  # asinh(-INFINITY) # => -Infinity
@@ -244,7 +230,6 @@ module Math
244
230
  # * Domain: `[-INFINITY, INFINITY]`.
245
231
  # * Range: `[-PI/2, PI/2] `.
246
232
  #
247
- #
248
233
  # Examples:
249
234
  #
250
235
  # atan(-INFINITY) # => -1.5707963267948966 # -PI2
@@ -270,7 +255,6 @@ module Math
270
255
  # * Domain of `x`: `[-INFINITY, INFINITY]`.
271
256
  # * Range: `[-PI, PI]`.
272
257
  #
273
- #
274
258
  # Examples:
275
259
  #
276
260
  # atan2(-1.0, -1.0) # => -2.356194490192345 # -3*PI/4
@@ -290,7 +274,6 @@ module Math
290
274
  # * Domain: `[-1, 1]`.
291
275
  # * Range: `[-INFINITY, INFINITY]`.
292
276
  #
293
- #
294
277
  # Examples:
295
278
  #
296
279
  # atanh(-1.0) # => -Infinity
@@ -308,7 +291,6 @@ module Math
308
291
  # * Domain: `[-INFINITY, INFINITY]`.
309
292
  # * Range: `[-INFINITY, INFINITY]`.
310
293
  #
311
- #
312
294
  # Examples:
313
295
  #
314
296
  # cbrt(-INFINITY) # => -Infinity
@@ -336,7 +318,6 @@ module Math
336
318
  # * Domain: `(-INFINITY, INFINITY)`.
337
319
  # * Range: `[-1.0, 1.0]`.
338
320
  #
339
- #
340
321
  # Examples:
341
322
  #
342
323
  # cos(-PI) # => -1.0
@@ -359,7 +340,6 @@ module Math
359
340
  # * Domain: `[-INFINITY, INFINITY]`.
360
341
  # * Range: `[1, INFINITY]`.
361
342
  #
362
- #
363
343
  # Examples:
364
344
  #
365
345
  # cosh(-INFINITY) # => Infinity
@@ -378,7 +358,6 @@ module Math
378
358
  # * Domain: `[-INFINITY, INFINITY]`.
379
359
  # * Range: `[-1, 1]`.
380
360
  #
381
- #
382
361
  # Examples:
383
362
  #
384
363
  # erf(-INFINITY) # => -1.0
@@ -400,7 +379,6 @@ module Math
400
379
  # * Domain: `[-INFINITY, INFINITY]`.
401
380
  # * Range: `[0, 2]`.
402
381
  #
403
- #
404
382
  # Examples:
405
383
  #
406
384
  # erfc(-INFINITY) # => 2.0
@@ -420,7 +398,6 @@ module Math
420
398
  # * Domain: `[-INFINITY, INFINITY]`.
421
399
  # * Range: `[0, INFINITY]`.
422
400
  #
423
- #
424
401
  # Examples:
425
402
  #
426
403
  # exp(-INFINITY) # => 0.0
@@ -449,7 +426,6 @@ module Math
449
426
  # * Domain: `[-INFINITY, INFINITY]`.
450
427
  # * Range `[-INFINITY, INFINITY]`.
451
428
  #
452
- #
453
429
  # Examples:
454
430
  #
455
431
  # frexp(-INFINITY) # => [-Infinity, -1]
@@ -474,7 +450,6 @@ module Math
474
450
  # * Domain: `(-INFINITY, INFINITY]` excluding negative integers.
475
451
  # * Range: `[-INFINITY, INFINITY]`.
476
452
  #
477
- #
478
453
  # Examples:
479
454
  #
480
455
  # gamma(-2.5) # => -0.9453087204829431
@@ -502,7 +477,6 @@ module Math
502
477
  # * Domain of +ab: `[-INFINITY, INFINITY]`.
503
478
  # * Range: `[0, INFINITY]`.
504
479
  #
505
- #
506
480
  # Examples:
507
481
  #
508
482
  # hypot(0.0, 1.0) # => 1.0
@@ -525,7 +499,6 @@ module Math
525
499
  # * Domain of `fraction`: `[0.0, 1.0)`.
526
500
  # * Domain of `exponent`: `[0, 1024]` (larger values are equivalent to 1024).
527
501
  #
528
- #
529
502
  # See [IEEE 754 double-precision binary floating-point format:
530
503
  # binary64](https://en.wikipedia.org/wiki/Double-precision_floating-point_format
531
504
  # #IEEE_754_double-precision_binary_floating-point_format:_binary64).
@@ -560,7 +533,6 @@ module Math
560
533
  # * Range of first element: `(-INFINITY, INFINITY]`.
561
534
  # * Second element is -1 or 1.
562
535
  #
563
- #
564
536
  # Examples:
565
537
  #
566
538
  # lgamma(-4.0) # => [Infinity, -1]
@@ -595,7 +567,6 @@ module Math
595
567
  # * Domain: `[0, INFINITY]`.
596
568
  # * Range: `[-INFINITY, INFINITY)]`.
597
569
  #
598
- #
599
570
  # Examples:
600
571
  #
601
572
  # log(0.0) # => -Infinity
@@ -623,7 +594,6 @@ module Math
623
594
  # * Domain: `[0, INFINITY]`.
624
595
  # * Range: `[-INFINITY, INFINITY]`.
625
596
  #
626
- #
627
597
  # Examples:
628
598
  #
629
599
  # log10(0.0) # => -Infinity
@@ -643,7 +613,6 @@ module Math
643
613
  # * Domain: `[0, INFINITY]`.
644
614
  # * Range: `[-INFINITY, INFINITY]`.
645
615
  #
646
- #
647
616
  # Examples:
648
617
  #
649
618
  # log2(0.0) # => -Infinity
@@ -664,7 +633,6 @@ module Math
664
633
  # * Domain: `(-INFINITY, INFINITY)`.
665
634
  # * Range: `[-1.0, 1.0]`.
666
635
  #
667
- #
668
636
  # Examples:
669
637
  #
670
638
  # sin(-PI) # => -1.2246063538223773e-16 # -0.0000000000000001
@@ -687,7 +655,6 @@ module Math
687
655
  # * Domain: `[-INFINITY, INFINITY]`.
688
656
  # * Range: `[-INFINITY, INFINITY]`.
689
657
  #
690
- #
691
658
  # Examples:
692
659
  #
693
660
  # sinh(-INFINITY) # => -Infinity
@@ -706,7 +673,6 @@ module Math
706
673
  # * Domain: `[0, INFINITY]`.
707
674
  # * Range: `[0, INFINITY]`.
708
675
  #
709
- #
710
676
  # Examples:
711
677
  #
712
678
  # sqrt(0.0) # => 0.0
@@ -731,7 +697,6 @@ module Math
731
697
  # * Domain: `(-INFINITY, INFINITY)`.
732
698
  # * Range: `(-INFINITY, INFINITY)`.
733
699
  #
734
- #
735
700
  # Examples:
736
701
  #
737
702
  # tan(-PI) # => 1.2246467991473532e-16 # -0.0000000000000001
@@ -754,7 +719,6 @@ module Math
754
719
  # * Domain: `[-INFINITY, INFINITY]`.
755
720
  # * Range: `[-1, 1]`.
756
721
  #
757
- #
758
722
  # Examples:
759
723
  #
760
724
  # tanh(-INFINITY) # => -1.0
data/core/method.rbs CHANGED
@@ -54,7 +54,7 @@ class Method
54
54
  #
55
55
  def hash: () -> Integer
56
56
 
57
- def dup: () -> instance
57
+ def dup: () -> self
58
58
 
59
59
  # <!--
60
60
  # rdoc-file=proc.c
@@ -252,7 +252,7 @@ class Method
252
252
  # m.call # => "bar"
253
253
  # n = m.clone.call # => "bar"
254
254
  #
255
- def clone: () -> instance
255
+ def clone: () -> self
256
256
 
257
257
  # <!--
258
258
  # rdoc-file=proc.c
data/core/module.rbs CHANGED
@@ -315,14 +315,14 @@ class Module < Object
315
315
  # rdoc-file=load.c
316
316
  # - mod.autoload(const, filename) -> nil
317
317
  # -->
318
- # Registers _filename_ to be loaded (using Kernel::require)
319
- # the first time that _const_ (which may be a String or
320
- # a symbol) is accessed in the namespace of _mod_.
318
+ # Registers *filename* to be loaded (using Kernel::require) the first time that
319
+ # *const* (which may be a String or a symbol) is accessed in the namespace of
320
+ # *mod*.
321
321
  #
322
- # module A
323
- # end
324
- # A.autoload(:B, "b")
325
- # A::B.doit # autoloads "b"
322
+ # module A
323
+ # end
324
+ # A.autoload(:B, "b")
325
+ # A::B.doit # autoloads "b"
326
326
  #
327
327
  # If *const* in *mod* is defined as autoload, the file name to be loaded is
328
328
  # replaced with *filename*. If *const* is defined but not as autoload, does
@@ -574,7 +574,7 @@ class Module < Object
574
574
  # -->
575
575
  # Invoked when a reference is made to an undefined constant in *mod*. It is
576
576
  # passed a symbol for the undefined constant, and returns a value to be used for
577
- # that constant. The following code is an example of the same:
577
+ # that constant. For example, consider:
578
578
  #
579
579
  # def Foo.const_missing(name)
580
580
  # name # return the constant name as Symbol
@@ -582,22 +582,27 @@ class Module < Object
582
582
  #
583
583
  # Foo::UNDEFINED_CONST #=> :UNDEFINED_CONST: symbol returned
584
584
  #
585
- # In the next example when a reference is made to an undefined constant, it
586
- # attempts to load a file whose name is the lowercase version of the constant
587
- # (thus class `Fred` is assumed to be in file `fred.rb`). If found, it returns
588
- # the loaded class. It therefore implements an autoload feature similar to
589
- # Kernel#autoload and Module#autoload.
585
+ # As the example above shows, `const_missing` is not required to create the
586
+ # missing constant in *mod*, though that is often a side-effect. The caller gets
587
+ # its return value when triggered. If the constant is also defined, further
588
+ # lookups won't hit `const_missing` and will return the value stored in the
589
+ # constant as usual. Otherwise, `const_missing` will be invoked again.
590
+ #
591
+ # In the next example, when a reference is made to an undefined constant,
592
+ # `const_missing` attempts to load a file whose path is the lowercase version of
593
+ # the constant name (thus class `Fred` is assumed to be in file `fred.rb`). If
594
+ # defined as a side-effect of loading the file, the method returns the value
595
+ # stored in the constant. This implements an autoload feature similar to
596
+ # Kernel#autoload and Module#autoload, though it differs in important ways.
590
597
  #
591
598
  # def Object.const_missing(name)
592
599
  # @looked_for ||= {}
593
600
  # str_name = name.to_s
594
- # raise "Class not found: #{name}" if @looked_for[str_name]
601
+ # raise "Constant not found: #{name}" if @looked_for[str_name]
595
602
  # @looked_for[str_name] = 1
596
603
  # file = str_name.downcase
597
604
  # require file
598
- # klass = const_get(name)
599
- # return klass if klass
600
- # raise "Class not found: #{name}"
605
+ # const_get(name, false)
601
606
  # end
602
607
  #
603
608
  def const_missing: (Symbol arg0) -> untyped
@@ -726,8 +731,8 @@ class Module < Object
726
731
  # I'm Dino!
727
732
  # #<B:0x401b39e8>
728
733
  #
729
- def define_method: (interned symbol, ^() [self: instance] -> untyped | Method | UnboundMethod method) -> Symbol
730
- | (interned symbol) { () [self: instance] -> untyped } -> Symbol
734
+ def define_method: (interned symbol, ^(?) [self: top] -> untyped | Method | UnboundMethod method) -> Symbol
735
+ | (interned symbol) { (?) [self: top] -> untyped } -> Symbol
731
736
 
732
737
  # <!--
733
738
  # rdoc-file=object.c
@@ -1155,11 +1160,11 @@ class Module < Object
1155
1160
 
1156
1161
  # <!--
1157
1162
  # rdoc-file=object.c
1158
- # - mod.name -> string
1163
+ # - mod.name -> string or nil
1159
1164
  # -->
1160
- # Returns the name of the module *mod*. Returns nil for anonymous modules.
1165
+ # Returns the name of the module *mod*. Returns `nil` for anonymous modules.
1161
1166
  #
1162
- def name: () -> String?
1167
+ def name: %a{implicitly-returns-nil} () -> String
1163
1168
 
1164
1169
  # <!--
1165
1170
  # rdoc-file=eval.c
@@ -1482,7 +1487,7 @@ class Module < Object
1482
1487
  # rdoc-file=eval.c
1483
1488
  # - refinements -> array
1484
1489
  # -->
1485
- # Returns an array of modules defined within the receiver.
1490
+ # Returns an array of `Refinement` defined within the receiver.
1486
1491
  #
1487
1492
  # module A
1488
1493
  # refine Integer do
@@ -1549,8 +1554,8 @@ class Module < Object
1549
1554
  # of the module and the values that are related to it, such as instances,
1550
1555
  # constants, and methods.
1551
1556
  #
1552
- # The name should be `nil` or non-empty string that is not a valid constant name
1553
- # (to avoid confusing between permanent and temporary names).
1557
+ # The name should be `nil` or a non-empty string that is not a valid constant
1558
+ # path (to avoid confusing between permanent and temporary names).
1554
1559
  #
1555
1560
  # The method can be useful to distinguish dynamically generated classes and
1556
1561
  # modules without assigning them to constants.
@@ -1651,7 +1656,7 @@ class Module < Object
1651
1656
  #
1652
1657
  # In child
1653
1658
  # In parent
1654
- # prog.rb:23: undefined method `hello' for #<Child:0x401b3bb4> (NoMethodError)
1659
+ # prog.rb:23: undefined method 'hello' for #<Child:0x401b3bb4> (NoMethodError)
1655
1660
  #
1656
1661
  def undef_method: (*interned arg0) -> self
1657
1662
 
@@ -1694,6 +1699,6 @@ class Module < Object
1694
1699
  def attr: (*interned arg0) -> Array[Symbol]
1695
1700
 
1696
1701
  # A previous incarnation of `interned` for backward-compatibility (see #1499)
1697
- %a{steep:deprecated}
1702
+ %a{deprecated: Use `interned`}
1698
1703
  type id = interned
1699
1704
  end
data/core/nil_class.rbs CHANGED
@@ -9,7 +9,6 @@
9
9
  # * #=~
10
10
  # * #^
11
11
  #
12
- #
13
12
  # Others act as converters, carrying the concept of *nullity* to other classes:
14
13
  #
15
14
  # * #rationalize
@@ -19,12 +18,13 @@
19
18
  # * #to_r
20
19
  # * #to_s
21
20
  #
21
+ # While `nil` doesn't have an explicitly defined #to_hash method, it can be used
22
+ # in `**` unpacking, not adding any keyword arguments.
22
23
  #
23
24
  # Another method provides inspection:
24
25
  #
25
26
  # * #inspect
26
27
  #
27
- #
28
28
  # Finally, there is this query method:
29
29
  #
30
30
  # * #nil?