rbs 4.0.0.dev.4 → 4.0.0

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 (281) hide show
  1. checksums.yaml +4 -4
  2. data/.github/dependabot.yml +14 -14
  3. data/.github/workflows/bundle-update.yml +60 -0
  4. data/.github/workflows/c-check.yml +18 -11
  5. data/.github/workflows/comments.yml +5 -3
  6. data/.github/workflows/dependabot.yml +2 -2
  7. data/.github/workflows/ruby.yml +27 -34
  8. data/.github/workflows/rust.yml +95 -0
  9. data/.github/workflows/typecheck.yml +2 -2
  10. data/.github/workflows/windows.yml +2 -2
  11. data/.rubocop.yml +1 -1
  12. data/CHANGELOG.md +323 -0
  13. data/README.md +1 -1
  14. data/Rakefile +43 -33
  15. data/Steepfile +1 -0
  16. data/config.yml +426 -24
  17. data/core/array.rbs +307 -227
  18. data/core/basic_object.rbs +9 -8
  19. data/core/binding.rbs +0 -2
  20. data/core/builtin.rbs +2 -2
  21. data/core/class.rbs +6 -5
  22. data/core/comparable.rbs +55 -34
  23. data/core/complex.rbs +104 -78
  24. data/core/dir.rbs +61 -49
  25. data/core/encoding.rbs +12 -15
  26. data/core/enumerable.rbs +179 -87
  27. data/core/enumerator/arithmetic_sequence.rbs +70 -0
  28. data/core/enumerator.rbs +65 -2
  29. data/core/errno.rbs +11 -2
  30. data/core/errors.rbs +58 -29
  31. data/core/exception.rbs +13 -13
  32. data/core/fiber.rbs +74 -54
  33. data/core/file.rbs +280 -177
  34. data/core/file_test.rbs +3 -3
  35. data/core/float.rbs +257 -92
  36. data/core/gc.rbs +425 -281
  37. data/core/hash.rbs +1045 -739
  38. data/core/integer.rbs +135 -137
  39. data/core/io/buffer.rbs +53 -42
  40. data/core/io/wait.rbs +13 -35
  41. data/core/io.rbs +192 -144
  42. data/core/kernel.rbs +216 -155
  43. data/core/marshal.rbs +4 -4
  44. data/core/match_data.rbs +15 -13
  45. data/core/math.rbs +107 -66
  46. data/core/method.rbs +69 -33
  47. data/core/module.rbs +244 -106
  48. data/core/nil_class.rbs +7 -6
  49. data/core/numeric.rbs +74 -63
  50. data/core/object.rbs +9 -11
  51. data/core/object_space.rbs +30 -23
  52. data/core/pathname.rbs +1322 -0
  53. data/core/proc.rbs +95 -58
  54. data/core/process.rbs +222 -202
  55. data/core/ractor.rbs +371 -515
  56. data/core/random.rbs +21 -3
  57. data/core/range.rbs +159 -57
  58. data/core/rational.rbs +60 -89
  59. data/core/rbs/unnamed/argf.rbs +60 -53
  60. data/core/rbs/unnamed/env_class.rbs +19 -14
  61. data/core/rbs/unnamed/main_class.rbs +123 -0
  62. data/core/rbs/unnamed/random.rbs +11 -118
  63. data/core/regexp.rbs +258 -214
  64. data/core/ruby.rbs +53 -0
  65. data/core/ruby_vm.rbs +38 -34
  66. data/core/rubygems/config_file.rbs +5 -5
  67. data/core/rubygems/errors.rbs +4 -71
  68. data/core/rubygems/requirement.rbs +5 -5
  69. data/core/rubygems/rubygems.rbs +16 -82
  70. data/core/rubygems/version.rbs +2 -3
  71. data/core/set.rbs +490 -360
  72. data/core/signal.rbs +26 -16
  73. data/core/string.rbs +3234 -1285
  74. data/core/struct.rbs +27 -26
  75. data/core/symbol.rbs +41 -34
  76. data/core/thread.rbs +135 -67
  77. data/core/time.rbs +81 -50
  78. data/core/trace_point.rbs +41 -35
  79. data/core/true_class.rbs +2 -2
  80. data/core/unbound_method.rbs +24 -16
  81. data/core/warning.rbs +7 -7
  82. data/docs/aliases.md +79 -0
  83. data/docs/collection.md +3 -3
  84. data/docs/config.md +171 -0
  85. data/docs/encoding.md +56 -0
  86. data/docs/gem.md +0 -1
  87. data/docs/inline.md +576 -0
  88. data/docs/sigs.md +3 -3
  89. data/docs/syntax.md +46 -16
  90. data/docs/type_fingerprint.md +21 -0
  91. data/exe/rbs +1 -1
  92. data/ext/rbs_extension/ast_translation.c +544 -116
  93. data/ext/rbs_extension/ast_translation.h +3 -0
  94. data/ext/rbs_extension/class_constants.c +16 -2
  95. data/ext/rbs_extension/class_constants.h +8 -0
  96. data/ext/rbs_extension/extconf.rb +5 -1
  97. data/ext/rbs_extension/legacy_location.c +33 -56
  98. data/ext/rbs_extension/legacy_location.h +37 -0
  99. data/ext/rbs_extension/main.c +44 -35
  100. data/include/rbs/ast.h +448 -173
  101. data/include/rbs/defines.h +27 -0
  102. data/include/rbs/lexer.h +30 -11
  103. data/include/rbs/location.h +25 -44
  104. data/include/rbs/parser.h +6 -6
  105. data/include/rbs/string.h +0 -2
  106. data/include/rbs/util/rbs_allocator.h +34 -13
  107. data/include/rbs/util/rbs_assert.h +12 -1
  108. data/include/rbs/util/rbs_constant_pool.h +0 -3
  109. data/include/rbs/util/rbs_encoding.h +2 -0
  110. data/include/rbs/util/rbs_unescape.h +2 -1
  111. data/include/rbs.h +8 -0
  112. data/lib/rbs/ast/annotation.rb +1 -1
  113. data/lib/rbs/ast/comment.rb +1 -1
  114. data/lib/rbs/ast/declarations.rb +10 -10
  115. data/lib/rbs/ast/members.rb +14 -14
  116. data/lib/rbs/ast/ruby/annotations.rb +293 -3
  117. data/lib/rbs/ast/ruby/comment_block.rb +24 -0
  118. data/lib/rbs/ast/ruby/declarations.rb +198 -3
  119. data/lib/rbs/ast/ruby/helpers/constant_helper.rb +4 -0
  120. data/lib/rbs/ast/ruby/members.rb +532 -22
  121. data/lib/rbs/ast/type_param.rb +24 -4
  122. data/lib/rbs/buffer.rb +20 -15
  123. data/lib/rbs/cli/diff.rb +16 -15
  124. data/lib/rbs/cli/validate.rb +38 -106
  125. data/lib/rbs/cli.rb +52 -19
  126. data/lib/rbs/collection/config/lockfile_generator.rb +14 -2
  127. data/lib/rbs/collection/sources/git.rb +1 -0
  128. data/lib/rbs/definition.rb +1 -1
  129. data/lib/rbs/definition_builder/ancestor_builder.rb +62 -9
  130. data/lib/rbs/definition_builder/method_builder.rb +20 -0
  131. data/lib/rbs/definition_builder.rb +147 -25
  132. data/lib/rbs/diff.rb +7 -1
  133. data/lib/rbs/environment.rb +227 -74
  134. data/lib/rbs/environment_loader.rb +0 -6
  135. data/lib/rbs/errors.rb +27 -18
  136. data/lib/rbs/inline_parser.rb +342 -6
  137. data/lib/rbs/location_aux.rb +1 -1
  138. data/lib/rbs/locator.rb +5 -1
  139. data/lib/rbs/method_type.rb +5 -3
  140. data/lib/rbs/parser_aux.rb +20 -7
  141. data/lib/rbs/prototype/helpers.rb +57 -0
  142. data/lib/rbs/prototype/rb.rb +3 -28
  143. data/lib/rbs/prototype/rbi.rb +3 -20
  144. data/lib/rbs/prototype/runtime.rb +8 -0
  145. data/lib/rbs/resolver/constant_resolver.rb +2 -2
  146. data/lib/rbs/resolver/type_name_resolver.rb +116 -38
  147. data/lib/rbs/subtractor.rb +3 -1
  148. data/lib/rbs/test/type_check.rb +19 -2
  149. data/lib/rbs/type_name.rb +1 -1
  150. data/lib/rbs/types.rb +88 -78
  151. data/lib/rbs/unit_test/type_assertions.rb +35 -8
  152. data/lib/rbs/validator.rb +2 -2
  153. data/lib/rbs/version.rb +1 -1
  154. data/lib/rbs.rb +1 -2
  155. data/lib/rdoc/discover.rb +1 -1
  156. data/lib/rdoc_plugin/parser.rb +1 -1
  157. data/rbs.gemspec +4 -3
  158. data/rust/.gitignore +1 -0
  159. data/rust/Cargo.lock +378 -0
  160. data/rust/Cargo.toml +7 -0
  161. data/rust/ruby-rbs/Cargo.toml +22 -0
  162. data/rust/ruby-rbs/build.rs +764 -0
  163. data/rust/ruby-rbs/examples/locations.rs +60 -0
  164. data/rust/ruby-rbs/src/lib.rs +1 -0
  165. data/rust/ruby-rbs/src/node/mod.rs +742 -0
  166. data/rust/ruby-rbs/tests/sanity.rs +47 -0
  167. data/rust/ruby-rbs/vendor/rbs/config.yml +1 -0
  168. data/rust/ruby-rbs-sys/Cargo.toml +23 -0
  169. data/rust/ruby-rbs-sys/build.rs +204 -0
  170. data/rust/ruby-rbs-sys/src/lib.rs +50 -0
  171. data/rust/ruby-rbs-sys/vendor/rbs/include +1 -0
  172. data/rust/ruby-rbs-sys/vendor/rbs/src +1 -0
  173. data/rust/ruby-rbs-sys/wrapper.h +1 -0
  174. data/schema/typeParam.json +17 -1
  175. data/sig/ast/ruby/annotations.rbs +315 -4
  176. data/sig/ast/ruby/comment_block.rbs +8 -0
  177. data/sig/ast/ruby/declarations.rbs +102 -4
  178. data/sig/ast/ruby/members.rbs +108 -2
  179. data/sig/cli/diff.rbs +5 -11
  180. data/sig/cli/validate.rbs +12 -8
  181. data/sig/cli.rbs +18 -18
  182. data/sig/definition.rbs +6 -1
  183. data/sig/definition_builder.rbs +2 -0
  184. data/sig/environment.rbs +70 -12
  185. data/sig/errors.rbs +13 -14
  186. data/sig/inline_parser.rbs +39 -2
  187. data/sig/locator.rbs +0 -2
  188. data/sig/manifest.yaml +0 -1
  189. data/sig/method_builder.rbs +3 -1
  190. data/sig/parser.rbs +31 -13
  191. data/sig/prototype/helpers.rbs +2 -0
  192. data/sig/resolver/type_name_resolver.rbs +35 -7
  193. data/sig/source.rbs +3 -3
  194. data/sig/type_param.rbs +13 -8
  195. data/sig/types.rbs +6 -7
  196. data/sig/unit_test/spy.rbs +0 -8
  197. data/sig/unit_test/type_assertions.rbs +11 -0
  198. data/src/ast.c +410 -153
  199. data/src/lexer.c +1392 -1313
  200. data/src/lexer.re +3 -0
  201. data/src/lexstate.c +58 -37
  202. data/src/location.c +8 -48
  203. data/src/parser.c +977 -516
  204. data/src/string.c +0 -48
  205. data/src/util/rbs_allocator.c +89 -71
  206. data/src/util/rbs_assert.c +1 -1
  207. data/src/util/rbs_buffer.c +2 -2
  208. data/src/util/rbs_constant_pool.c +10 -14
  209. data/src/util/rbs_encoding.c +4 -8
  210. data/src/util/rbs_unescape.c +56 -20
  211. data/stdlib/bigdecimal/0/big_decimal.rbs +116 -98
  212. data/stdlib/bigdecimal-math/0/big_math.rbs +169 -8
  213. data/stdlib/cgi/0/core.rbs +9 -393
  214. data/stdlib/cgi/0/manifest.yaml +1 -0
  215. data/stdlib/cgi-escape/0/escape.rbs +171 -0
  216. data/stdlib/coverage/0/coverage.rbs +7 -4
  217. data/stdlib/date/0/date.rbs +92 -79
  218. data/stdlib/date/0/date_time.rbs +25 -24
  219. data/stdlib/delegate/0/delegator.rbs +10 -7
  220. data/stdlib/did_you_mean/0/did_you_mean.rbs +17 -16
  221. data/stdlib/digest/0/digest.rbs +110 -0
  222. data/stdlib/erb/0/erb.rbs +748 -347
  223. data/stdlib/etc/0/etc.rbs +55 -50
  224. data/stdlib/fileutils/0/fileutils.rbs +158 -139
  225. data/stdlib/forwardable/0/forwardable.rbs +13 -10
  226. data/stdlib/io-console/0/io-console.rbs +2 -2
  227. data/stdlib/json/0/json.rbs +217 -136
  228. data/stdlib/monitor/0/monitor.rbs +3 -3
  229. data/stdlib/net-http/0/net-http.rbs +162 -134
  230. data/stdlib/objspace/0/objspace.rbs +17 -34
  231. data/stdlib/open-uri/0/open-uri.rbs +48 -8
  232. data/stdlib/open3/0/open3.rbs +469 -10
  233. data/stdlib/openssl/0/openssl.rbs +475 -357
  234. data/stdlib/optparse/0/optparse.rbs +26 -17
  235. data/stdlib/pathname/0/pathname.rbs +11 -1381
  236. data/stdlib/pp/0/pp.rbs +9 -8
  237. data/stdlib/prettyprint/0/prettyprint.rbs +7 -7
  238. data/stdlib/pstore/0/pstore.rbs +35 -30
  239. data/stdlib/psych/0/psych.rbs +65 -12
  240. data/stdlib/psych/0/store.rbs +2 -4
  241. data/stdlib/pty/0/pty.rbs +9 -6
  242. data/stdlib/random-formatter/0/random-formatter.rbs +277 -0
  243. data/stdlib/rdoc/0/code_object.rbs +2 -1
  244. data/stdlib/rdoc/0/parser.rbs +1 -1
  245. data/stdlib/rdoc/0/rdoc.rbs +1 -1
  246. data/stdlib/rdoc/0/store.rbs +1 -1
  247. data/stdlib/resolv/0/resolv.rbs +25 -68
  248. data/stdlib/ripper/0/ripper.rbs +22 -19
  249. data/stdlib/securerandom/0/manifest.yaml +2 -0
  250. data/stdlib/securerandom/0/securerandom.rbs +7 -20
  251. data/stdlib/shellwords/0/shellwords.rbs +2 -2
  252. data/stdlib/singleton/0/singleton.rbs +3 -0
  253. data/stdlib/socket/0/addrinfo.rbs +7 -7
  254. data/stdlib/socket/0/basic_socket.rbs +3 -3
  255. data/stdlib/socket/0/ip_socket.rbs +10 -8
  256. data/stdlib/socket/0/socket.rbs +23 -10
  257. data/stdlib/socket/0/tcp_server.rbs +1 -1
  258. data/stdlib/socket/0/tcp_socket.rbs +11 -3
  259. data/stdlib/socket/0/udp_socket.rbs +1 -1
  260. data/stdlib/socket/0/unix_server.rbs +1 -1
  261. data/stdlib/stringio/0/stringio.rbs +1177 -85
  262. data/stdlib/strscan/0/string_scanner.rbs +27 -25
  263. data/stdlib/tempfile/0/tempfile.rbs +25 -21
  264. data/stdlib/time/0/time.rbs +8 -6
  265. data/stdlib/timeout/0/timeout.rbs +63 -7
  266. data/stdlib/tsort/0/cyclic.rbs +3 -0
  267. data/stdlib/tsort/0/tsort.rbs +7 -6
  268. data/stdlib/uri/0/common.rbs +42 -20
  269. data/stdlib/uri/0/file.rbs +3 -3
  270. data/stdlib/uri/0/generic.rbs +26 -18
  271. data/stdlib/uri/0/http.rbs +2 -2
  272. data/stdlib/uri/0/ldap.rbs +2 -2
  273. data/stdlib/uri/0/mailto.rbs +3 -3
  274. data/stdlib/uri/0/rfc2396_parser.rbs +12 -12
  275. data/stdlib/zlib/0/deflate.rbs +4 -3
  276. data/stdlib/zlib/0/gzip_reader.rbs +6 -6
  277. data/stdlib/zlib/0/gzip_writer.rbs +14 -12
  278. data/stdlib/zlib/0/inflate.rbs +1 -1
  279. data/stdlib/zlib/0/need_dict.rbs +1 -1
  280. data/stdlib/zlib/0/zstream.rbs +1 -0
  281. metadata +50 -6
data/core/nil_class.rbs CHANGED
@@ -19,7 +19,7 @@
19
19
  # * #to_s
20
20
  #
21
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
+ # in <code>**</code> unpacking, not adding any keyword arguments.
23
23
  #
24
24
  # Another method provides inspection:
25
25
  #
@@ -97,7 +97,7 @@ class NilClass
97
97
  # rdoc-file=object.c
98
98
  # - inspect -> 'nil'
99
99
  # -->
100
- # Returns string `'nil'`:
100
+ # Returns string <code>'nil'</code>:
101
101
  #
102
102
  # nil.inspect # => "nil"
103
103
  #
@@ -107,12 +107,13 @@ class NilClass
107
107
  # rdoc-file=object.c
108
108
  # - nil.nil? -> true
109
109
  # -->
110
- # Returns `true`. For all other objects, method `nil?` returns `false`.
110
+ # Returns `true`. For all other objects, method <code>nil?</code> returns
111
+ # `false`.
111
112
  #
112
113
  def nil?: () -> true
113
114
 
114
115
  # <!--
115
- # rdoc-file=rational.c
116
+ # rdoc-file=nilclass.rb
116
117
  # - rationalize(eps = nil) -> (0/1)
117
118
  # -->
118
119
  # Returns zero as a Rational:
@@ -134,7 +135,7 @@ class NilClass
134
135
  def to_a: () -> []
135
136
 
136
137
  # <!--
137
- # rdoc-file=complex.c
138
+ # rdoc-file=nilclass.rb
138
139
  # - to_c -> (0+0i)
139
140
  # -->
140
141
  # Returns zero as a Complex:
@@ -174,7 +175,7 @@ class NilClass
174
175
  def to_i: () -> 0
175
176
 
176
177
  # <!--
177
- # rdoc-file=rational.c
178
+ # rdoc-file=nilclass.rb
178
179
  # - to_r -> (0/1)
179
180
  # -->
180
181
  # Returns zero as a Rational:
data/core/numeric.rbs CHANGED
@@ -23,10 +23,10 @@
23
23
  # two-member Array containing an object that has been coerced into an instance
24
24
  # of the new class and `self` (see #coerce).
25
25
  #
26
- # Inheriting classes should also implement arithmetic operator methods (`+`,
27
- # `-`, `*` and `/`) and the `<=>` operator (see Comparable). These methods may
28
- # rely on `coerce` to ensure interoperability with instances of other numeric
29
- # classes.
26
+ # Inheriting classes should also implement arithmetic operator methods
27
+ # (<code>+</code>, <code>-</code>, <code>*</code> and <code>/</code>) and the
28
+ # <code><=></code> operator (see Comparable). These methods may rely on `coerce`
29
+ # to ensure interoperability with instances of other numeric classes.
30
30
  #
31
31
  # class Tally < Numeric
32
32
  # def initialize(string)
@@ -88,7 +88,7 @@
88
88
  #
89
89
  # * #finite?: Returns true unless `self` is infinite or not a number.
90
90
  # * #infinite?: Returns -1, `nil` or +1, depending on whether `self` is
91
- # `-Infinity<tt>, finite, or <tt>+Infinity`.
91
+ # <code>-Infinity<tt>, finite, or <tt>+Infinity</code>.
92
92
  # * #integer?: Returns whether `self` is an integer.
93
93
  # * #negative?: Returns whether `self` is negative.
94
94
  # * #nonzero?: Returns whether `self` is not zero.
@@ -119,27 +119,29 @@
119
119
  # Math::PI otherwise.
120
120
  # * #ceil: Returns the smallest number greater than or equal to `self`, to a
121
121
  # given precision.
122
- # * #coerce: Returns array `[coerced_self, coerced_other]` for the given other
123
- # value.
122
+ # * #coerce: Returns array <code>[coerced_self, coerced_other]</code> for the
123
+ # given other value.
124
124
  # * #conj (aliased as #conjugate): Returns the complex conjugate of `self`.
125
125
  # * #denominator: Returns the denominator (always positive) of the Rational
126
126
  # representation of `self`.
127
127
  # * #div: Returns the value of `self` divided by the given value and converted
128
128
  # to an integer.
129
- # * #divmod: Returns array `[quotient, modulus]` resulting from dividing
130
- # `self` the given divisor.
129
+ # * #divmod: Returns array <code>[quotient, modulus]</code> resulting from
130
+ # dividing `self` the given divisor.
131
131
  # * #fdiv: Returns the Float result of dividing `self` by the given divisor.
132
132
  # * #floor: Returns the largest number less than or equal to `self`, to a
133
133
  # given precision.
134
- # * #i: Returns the Complex object `Complex(0, self)`. the given value.
134
+ # * #i: Returns the Complex object <code>Complex(0, self)</code>. the given
135
+ # value.
135
136
  # * #imaginary (aliased as #imag): Returns the imaginary part of the `self`.
136
137
  # * #numerator: Returns the numerator of the Rational representation of
137
138
  # `self`; has the same sign as `self`.
138
- # * #polar: Returns the array `[self.abs, self.arg]`.
139
+ # * #polar: Returns the array <code>[self.abs, self.arg]</code>.
139
140
  # * #quo: Returns the value of `self` divided by the given value.
140
141
  # * #real: Returns the real part of `self`.
141
- # * #rect (aliased as #rectangular): Returns the array `[self, 0]`.
142
- # * #remainder: Returns `self-arg*(self/arg).truncate` for the given `arg`.
142
+ # * #rect (aliased as #rectangular): Returns the array <code>[self, 0]</code>.
143
+ # * #remainder: Returns <code>self-arg*(self/arg).truncate</code> for the
144
+ # given `arg`.
143
145
  # * #round: Returns the value of `self` rounded to the nearest value for the
144
146
  # given a precision.
145
147
  # * #to_c: Returns the Complex representation of `self`.
@@ -160,7 +162,7 @@ class Numeric
160
162
  # rdoc-file=numeric.c
161
163
  # - self % other -> real_numeric
162
164
  # -->
163
- # Returns `self` modulo `other` as a real number.
165
+ # Returns `self` modulo `other` as a real numeric (Integer, Float, or Rational).
164
166
  #
165
167
  # Of the Core and Standard Library classes, only Rational uses this
166
168
  # implementation.
@@ -201,7 +203,7 @@ class Numeric
201
203
  # -->
202
204
  # Returns `self`.
203
205
  #
204
- def +@: () -> Numeric
206
+ def +@: () -> self
205
207
 
206
208
  # Performs subtraction: the class of the resulting object depends on the class
207
209
  # of `numeric`.
@@ -212,15 +214,23 @@ class Numeric
212
214
  # rdoc-file=numeric.c
213
215
  # - -self -> numeric
214
216
  # -->
215
- # Unary Minus---Returns the receiver, negated.
217
+ # Returns `self`, negated.
216
218
  #
217
- def -@: () -> Numeric
219
+ def -@: () -> self
218
220
 
219
221
  # <!--
220
222
  # rdoc-file=numeric.c
221
223
  # - self <=> other -> zero or nil
222
224
  # -->
223
- # Returns zero if `self` is the same as `other`, `nil` otherwise.
225
+ # Compares `self` and `other`.
226
+ #
227
+ # Returns:
228
+ #
229
+ # * Zero, if `self` is the same as `other`.
230
+ # * `nil`, otherwise.
231
+ #
232
+ # Class Numeric includes module Comparable, each of whose methods uses
233
+ # Numeric#<=> for comparison.
224
234
  #
225
235
  # No subclass in the Ruby Core or Standard Library uses this implementation.
226
236
  #
@@ -244,12 +254,12 @@ class Numeric
244
254
  # -->
245
255
  # Returns the square of `self`.
246
256
  #
247
- def abs2: () -> Numeric
257
+ def abs2: () -> self
248
258
 
249
259
  # <!-- rdoc-file=complex.c -->
250
260
  # Returns zero if `self` is positive, Math::PI otherwise.
251
261
  #
252
- def angle: () -> Numeric
262
+ def angle: () -> (0 | Float)
253
263
 
254
264
  # <!--
255
265
  # rdoc-file=complex.c
@@ -267,7 +277,7 @@ class Numeric
267
277
  # as specified by the given `ndigits`, which must be an [integer-convertible
268
278
  # object](rdoc-ref:implicit_conversion.rdoc@Integer-Convertible+Objects).
269
279
  #
270
- # Equivalent to `self.to_f.ceil(ndigits)`.
280
+ # Equivalent to <code>self.to_f.ceil(ndigits)</code>.
271
281
  #
272
282
  # Related: #floor, Float#ceil.
273
283
  #
@@ -310,18 +320,18 @@ class Numeric
310
320
 
311
321
  # <!--
312
322
  # rdoc-file=numeric.rb
313
- # - conj()
323
+ # - conj -> self
314
324
  # -->
325
+ # Returns `self`.
315
326
  #
316
- def conj: () -> Numeric
327
+ def conjugate: () -> self
317
328
 
318
329
  # <!--
319
330
  # rdoc-file=numeric.rb
320
- # - conj -> self
331
+ # - conj()
321
332
  # -->
322
- # Returns `self`.
323
333
  #
324
- def conjugate: () -> Numeric
334
+ alias conj conjugate
325
335
 
326
336
  # <!--
327
337
  # rdoc-file=rational.c
@@ -335,9 +345,9 @@ class Numeric
335
345
  # rdoc-file=numeric.c
336
346
  # - div(other) -> integer
337
347
  # -->
338
- # Returns the quotient `self/other` as an integer (via `floor`), using method
339
- # `/` in the derived class of `self`. (Numeric itself does not define method
340
- # `/`.)
348
+ # Returns the quotient <code>self/other</code> as an integer (via `floor`),
349
+ # using method <code>/</code> as defined in the subclass of Numeric. (Numeric
350
+ # itself does not define <code>/</code>.)
341
351
  #
342
352
  # Of the Core and Standard Library classes, Only Float and Rational use this
343
353
  # implementation.
@@ -348,7 +358,7 @@ class Numeric
348
358
  # rdoc-file=numeric.c
349
359
  # - divmod(other) -> array
350
360
  # -->
351
- # Returns a 2-element array `[q, r]`, where
361
+ # Returns a 2-element array <code>[q, r]</code>, where
352
362
  #
353
363
  # q = (self/other).floor # Quotient
354
364
  # r = self % other # Remainder
@@ -389,8 +399,8 @@ class Numeric
389
399
  # 1.eql?(Rational(1, 1)) # => false
390
400
  # 1.eql?(Complex(1, 0)) # => false
391
401
  #
392
- # Method `eql?` is different from `==` in that `eql?` requires matching types,
393
- # while `==` does not.
402
+ # Method <code>eql?</code> is different from <code>==</code> in that
403
+ # <code>eql?</code> requires matching types, while <code>==</code> does not.
394
404
  #
395
405
  def eql?: (untyped) -> bool
396
406
 
@@ -398,8 +408,9 @@ class Numeric
398
408
  # rdoc-file=numeric.c
399
409
  # - fdiv(other) -> float
400
410
  # -->
401
- # Returns the quotient `self/other` as a float, using method `/` in the derived
402
- # class of `self`. (Numeric itself does not define method `/`.)
411
+ # Returns the quotient <code>self/other</code> as a float, using method
412
+ # <code>/</code> as defined in the subclass of Numeric. (Numeric itself does not
413
+ # define <code>/</code>.)
403
414
  #
404
415
  # Of the Core and Standard Library classes, only BigDecimal uses this
405
416
  # implementation.
@@ -422,7 +433,7 @@ class Numeric
422
433
  # specified by the given `ndigits`, which must be an [integer-convertible
423
434
  # object](rdoc-ref:implicit_conversion.rdoc@Integer-Convertible+Objects).
424
435
  #
425
- # Equivalent to `self.to_f.floor(ndigits)`.
436
+ # Equivalent to <code>self.to_f.floor(ndigits)</code>.
426
437
  #
427
438
  # Related: #ceil, Float#floor.
428
439
  #
@@ -433,7 +444,7 @@ class Numeric
433
444
  # rdoc-file=numeric.c
434
445
  # - i -> complex
435
446
  # -->
436
- # Returns `Complex(0, self)`:
447
+ # Returns <code>Complex(0, self)</code>:
437
448
  #
438
449
  # 2.i # => (0+2i)
439
450
  # -2.i # => (0-2i)
@@ -445,25 +456,25 @@ class Numeric
445
456
 
446
457
  # <!--
447
458
  # rdoc-file=numeric.rb
448
- # - imag()
459
+ # - imag -> 0
449
460
  # -->
461
+ # Returns zero.
450
462
  #
451
- def imag: () -> Numeric
463
+ def imaginary: () -> 0
452
464
 
453
465
  # <!--
454
466
  # rdoc-file=numeric.rb
455
- # - imag -> 0
467
+ # - imag()
456
468
  # -->
457
- # Returns zero.
458
469
  #
459
- def imaginary: () -> Numeric
470
+ alias imag imaginary
460
471
 
461
472
  # <!--
462
473
  # rdoc-file=numeric.rb
463
474
  # - infinite? -> -1, 1, or nil
464
475
  # -->
465
- # Returns `nil`, -1, or 1 depending on whether `self` is finite, `-Infinity`, or
466
- # `+Infinity`.
476
+ # Returns `nil`, -1, or 1 depending on whether `self` is finite,
477
+ # <code>-Infinity</code>, or <code>+Infinity</code>.
467
478
  #
468
479
  def infinite?: () -> Integer?
469
480
 
@@ -488,7 +499,7 @@ class Numeric
488
499
  alias magnitude abs
489
500
 
490
501
  # <!-- rdoc-file=numeric.c -->
491
- # Returns `self` modulo `other` as a real number.
502
+ # Returns `self` modulo `other` as a real numeric (Integer, Float, or Rational).
492
503
  #
493
504
  # Of the Core and Standard Library classes, only Rational uses this
494
505
  # implementation.
@@ -530,17 +541,17 @@ class Numeric
530
541
  # rdoc-file=numeric.c
531
542
  # - nonzero? -> self or nil
532
543
  # -->
533
- # Returns +self+ if +self+ is not a zero value, +nil+ otherwise;
534
- # uses method <tt>zero?</tt> for the evaluation.
544
+ # Returns `self` if `self` is not a zero value, `nil` otherwise; uses method
545
+ # <code>zero?</code> for the evaluation.
535
546
  #
536
- # The returned +self+ allows the method to be chained:
547
+ # The returned `self` allows the method to be chained:
537
548
  #
538
- # a = %w[z Bb bB bb BB a aA Aa AA A]
539
- # a.sort {|a, b| (a.downcase <=> b.downcase).nonzero? || a <=> b }
540
- # # => ["A", "a", "AA", "Aa", "aA", "BB", "Bb", "bB", "bb", "z"]
549
+ # a = %w[z Bb bB bb BB a aA Aa AA A]
550
+ # a.sort {|a, b| (a.downcase <=> b.downcase).nonzero? || a <=> b }
551
+ # # => ["A", "a", "AA", "Aa", "aA", "BB", "Bb", "bB", "bb", "z"]
541
552
  #
542
- # Of the Core and Standard Library classes,
543
- # Integer, Float, Rational, and Complex use this implementation.
553
+ # Of the Core and Standard Library classes, Integer, Float, Rational, and
554
+ # Complex use this implementation.
544
555
  #
545
556
  # Related: #zero?
546
557
  #
@@ -563,7 +574,7 @@ class Numeric
563
574
  # rdoc-file=complex.c
564
575
  # - polar -> array
565
576
  # -->
566
- # Returns array `[self.abs, self.arg]`.
577
+ # Returns array <code>[self.abs, self.arg]</code>.
567
578
  #
568
579
  def polar: () -> [ Numeric, Numeric ]
569
580
 
@@ -590,7 +601,7 @@ class Numeric
590
601
  # -->
591
602
  # Returns `self`.
592
603
  #
593
- def real: () -> Numeric
604
+ def real: () -> self
594
605
 
595
606
  # <!--
596
607
  # rdoc-file=numeric.rb
@@ -598,10 +609,10 @@ class Numeric
598
609
  # -->
599
610
  # Returns `true` if `self` is a real number (i.e. not Complex).
600
611
  #
601
- def real?: () -> bool
612
+ def real?: () -> true
602
613
 
603
614
  # <!-- rdoc-file=complex.c -->
604
- # Returns array `[self, 0]`.
615
+ # Returns array <code>[self, 0]</code>.
605
616
  #
606
617
  def rect: () -> [ Numeric, Numeric ]
607
618
 
@@ -609,7 +620,7 @@ class Numeric
609
620
  # rdoc-file=complex.c
610
621
  # - rect -> array
611
622
  # -->
612
- # Returns array `[self, 0]`.
623
+ # Returns array <code>[self, 0]</code>.
613
624
  #
614
625
  alias rectangular rect
615
626
 
@@ -745,13 +756,13 @@ class Numeric
745
756
  # If all the arguments are integers, the loop operates using an integer counter.
746
757
  #
747
758
  # If any of the arguments are floating point numbers, all are converted to
748
- # floats, and the loop is executed *floor(n + n*Float::EPSILON) + 1* times,
749
- # where *n = (limit - self)/step*.
759
+ # floats, and the loop is executed <em>floor(n + n*Float::EPSILON) + 1</em>
760
+ # times, where <em>n = (limit - self)/step</em>.
750
761
  #
751
762
  def step: (?Numeric limit, ?Numeric step) { (Numeric) -> void } -> self
752
- | (?Numeric limit, ?Numeric step) -> Enumerator[Numeric, self]
763
+ | (?Numeric limit, ?Numeric step) -> Enumerator::ArithmeticSequence
753
764
  | (?by: Numeric, ?to: Numeric) { (Numeric) -> void } -> self
754
- | (?by: Numeric, ?to: Numeric) -> Enumerator[Numeric, self]
765
+ | (?by: Numeric, ?to: Numeric) -> Enumerator::ArithmeticSequence
755
766
 
756
767
  # <!--
757
768
  # rdoc-file=complex.c
@@ -765,8 +776,8 @@ class Numeric
765
776
  # rdoc-file=numeric.c
766
777
  # - to_int -> integer
767
778
  # -->
768
- # Returns `self` as an integer; converts using method `to_i` in the derived
769
- # class.
779
+ # Returns `self` as an integer; converts using method `to_i` in the subclass of
780
+ # Numeric. (Numeric itself does not define `to_i`.)
770
781
  #
771
782
  # Of the Core and Standard Library classes, only Rational and Complex use this
772
783
  # implementation.
data/core/object.rbs CHANGED
@@ -12,7 +12,8 @@
12
12
  # will find the top-level File class.
13
13
  #
14
14
  # In the descriptions of Object's methods, the parameter *symbol* refers to a
15
- # symbol, which is either a quoted string or a Symbol (such as `:name`).
15
+ # symbol, which is either a quoted string or a Symbol (such as
16
+ # <code>:name</code>).
16
17
  #
17
18
  # ## What's Here
18
19
  #
@@ -32,7 +33,7 @@
32
33
  # * #!~: Returns `true` if `self` does not match the given object, otherwise
33
34
  # `false`.
34
35
  # * #<=>: Returns 0 if `self` and the given object `object` are the same
35
- # object, or if `self == object`; otherwise returns `nil`.
36
+ # object, or if <code>self == object</code>; otherwise returns `nil`.
36
37
  # * #===: Implements case equality, effectively the same as calling #==.
37
38
  # * #eql?: Implements hash equality, effectively the same as calling #==.
38
39
  # * #kind_of? (aliased as #is_a?): Returns whether given argument is an
@@ -40,23 +41,24 @@
40
41
  # * #instance_of?: Returns whether `self` is an instance of the given class.
41
42
  # * #instance_variable_defined?: Returns whether the given instance variable
42
43
  # is defined in `self`.
43
- # * #method: Returns the Method object for the given method in `self`.
44
+ # * #method: Returns the `Method` object for the given method in `self`.
44
45
  # * #methods: Returns an array of symbol names of public and protected methods
45
46
  # in `self`.
46
- # * #nil?: Returns `false`. (Only `nil` responds `true` to method `nil?`.)
47
+ # * #nil?: Returns `false`. (Only `nil` responds `true` to method
48
+ # <code>nil?</code>.)
47
49
  # * #object_id: Returns an integer corresponding to `self` that is unique for
48
50
  # the current process
49
51
  # * #private_methods: Returns an array of the symbol names of the private
50
52
  # methods in `self`.
51
53
  # * #protected_methods: Returns an array of the symbol names of the protected
52
54
  # methods in `self`.
53
- # * #public_method: Returns the Method object for the given public method in
55
+ # * #public_method: Returns the `Method` object for the given public method in
54
56
  # `self`.
55
57
  # * #public_methods: Returns an array of the symbol names of the public
56
58
  # methods in `self`.
57
59
  # * #respond_to?: Returns whether `self` responds to the given method.
58
60
  # * #singleton_class: Returns the singleton class of `self`.
59
- # * #singleton_method: Returns the Method object for the given singleton
61
+ # * #singleton_method: Returns the `Method` object for the given singleton
60
62
  # method in `self`.
61
63
  # * #singleton_methods: Returns an array of the symbol names of the singleton
62
64
  # methods in `self`.
@@ -85,7 +87,7 @@
85
87
  # frozen state.
86
88
  # * #define_singleton_method: Defines a singleton method in `self` for the
87
89
  # given symbol method-name and block or proc.
88
- # * #display: Prints `self` to the given IO stream or `$stdout`.
90
+ # * #display: Prints `self` to the given IO stream or <code>$stdout</code>.
89
91
  # * #dup: Returns a shallow unfrozen copy of `self`.
90
92
  # * #enum_for (aliased as #to_enum): Returns an Enumerator for `self` using
91
93
  # the using the given method, arguments, and block.
@@ -104,7 +106,3 @@
104
106
  class Object < BasicObject
105
107
  include Kernel
106
108
  end
107
-
108
- # A previous incarnation of `interned` for backward-compatibility (see #1499)
109
- %a{deprecated: Use `interned` instead}
110
- type Object::name = interned
@@ -5,8 +5,8 @@
5
5
  #
6
6
  # ObjectSpace also provides support for object finalizers, procs that will be
7
7
  # called after a specific object was destroyed by garbage collection. See the
8
- # documentation for `ObjectSpace.define_finalizer` for important information on
9
- # how to use this method correctly.
8
+ # documentation for <code>ObjectSpace.define_finalizer</code> for important
9
+ # information on how to use this method correctly.
10
10
  #
11
11
  # a = "A"
12
12
  # b = "B"
@@ -17,7 +17,7 @@
17
17
  # a = nil
18
18
  # b = nil
19
19
  #
20
- # *produces:*
20
+ # <em>produces:</em>
21
21
  #
22
22
  # Finalizer two on 537763470
23
23
  # Finalizer one on 537763480
@@ -29,6 +29,7 @@ module ObjectSpace
29
29
  # - _id2ref(p1)
30
30
  # -->
31
31
  #
32
+ %a{deprecated}
32
33
  def self._id2ref: (Integer id) -> untyped
33
34
 
34
35
  # <!--
@@ -49,9 +50,9 @@ module ObjectSpace
49
50
  # The contents of the returned hash are implementation specific. It may be
50
51
  # changed in future.
51
52
  #
52
- # The keys starting with `:T_` means live objects. For example, `:T_ARRAY` is
53
- # the number of arrays. `:FREE` means object slots which is not used now.
54
- # `:TOTAL` means sum of above.
53
+ # The keys starting with <code>:T_</code> means live objects. For example,
54
+ # <code>:T_ARRAY</code> is the number of arrays. <code>:FREE</code> means object
55
+ # slots which is not used now. <code>:TOTAL</code> means sum of above.
55
56
  #
56
57
  # If the optional argument `result_hash` is given, it is overwritten and
57
58
  # returned. This is intended to avoid probe effect.
@@ -73,7 +74,7 @@ module ObjectSpace
73
74
  # object ID of the *obj* will be passed as an argument to *aProc*. If *aProc* is
74
75
  # a lambda or method, make sure it can be called with a single argument.
75
76
  #
76
- # The return value is an array `[0, aProc]`.
77
+ # The return value is an array <code>[0, aProc]</code>.
77
78
  #
78
79
  # The two recommended patterns are to either create the finaliser proc in a
79
80
  # non-instance method where it can safely capture the needed state, or to use a
@@ -136,28 +137,34 @@ module ObjectSpace
136
137
  # Calls the block once for each living, nonimmediate object in this Ruby
137
138
  # process. If *module* is specified, calls the block for only those classes or
138
139
  # modules that match (or are a subclass of) *module*. Returns the number of
139
- # objects found. Immediate objects (`Fixnum`s, `Symbol`s `true`, `false`, and
140
- # `nil`) are never returned. In the example below, #each_object returns both the
141
- # numbers we defined and several constants defined in the Math module.
140
+ # objects found. Immediate objects (such as `Fixnum`s, static `Symbol`s `true`,
141
+ # `false` and `nil`) are never returned.
142
142
  #
143
143
  # If no block is given, an enumerator is returned instead.
144
144
  #
145
- # a = 102.7
146
- # b = 95 # Won't be returned
147
- # c = 12345678987654321
148
- # count = ObjectSpace.each_object(Numeric) {|x| p x }
145
+ # Job = Class.new
146
+ # jobs = [Job.new, Job.new]
147
+ # count = ObjectSpace.each_object(Job) {|x| p x }
149
148
  # puts "Total count: #{count}"
150
149
  #
151
- # *produces:*
150
+ # <em>produces:</em>
152
151
  #
153
- # 12345678987654321
154
- # 102.7
155
- # 2.71828182845905
156
- # 3.14159265358979
157
- # 2.22044604925031e-16
158
- # 1.7976931348623157e+308
159
- # 2.2250738585072e-308
160
- # Total count: 7
152
+ # #<Job:0x000000011d6cbbf0>
153
+ # #<Job:0x000000011d6cbc68>
154
+ # Total count: 2
155
+ #
156
+ # Due to a current Ractor implementation issue, this method does not yield
157
+ # Ractor-unshareable objects when the process is in multi-Ractor mode.
158
+ # Multi-ractor mode is enabled when <code>Ractor.new</code> has been called for
159
+ # the first time. See https://bugs.ruby-lang.org/issues/19387 for more
160
+ # information.
161
+ #
162
+ # a = 12345678987654321 # shareable
163
+ # b = [].freeze # shareable
164
+ # c = {} # not shareable
165
+ # ObjectSpace.each_object {|x| x } # yields a, b, and c
166
+ # Ractor.new {} # enter multi-Ractor mode
167
+ # ObjectSpace.each_object {|x| x } # does not yield c
161
168
  #
162
169
  def self.each_object: (?Module `module`) -> Enumerator[untyped, Integer]
163
170
  | (?Module `module`) { (untyped obj) -> void } -> Integer