rbs 3.10.0 → 4.0.0.dev.1

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 (202) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/comments.yml +3 -3
  3. data/.github/workflows/ruby.yml +24 -35
  4. data/.github/workflows/typecheck.yml +3 -1
  5. data/.github/workflows/windows.yml +2 -2
  6. data/.gitignore +0 -4
  7. data/CHANGELOG.md +0 -88
  8. data/README.md +1 -38
  9. data/Rakefile +20 -142
  10. data/Steepfile +1 -0
  11. data/config.yml +43 -1
  12. data/core/array.rbs +46 -100
  13. data/core/complex.rbs +21 -32
  14. data/core/dir.rbs +2 -2
  15. data/core/encoding.rbs +9 -6
  16. data/core/enumerable.rbs +3 -90
  17. data/core/enumerator.rbs +1 -18
  18. data/core/errno.rbs +0 -8
  19. data/core/errors.rbs +1 -28
  20. data/core/exception.rbs +2 -2
  21. data/core/fiber.rbs +4 -5
  22. data/core/file.rbs +12 -27
  23. data/core/file_test.rbs +1 -1
  24. data/core/float.rbs +22 -209
  25. data/core/gc.rbs +281 -417
  26. data/core/hash.rbs +727 -1024
  27. data/core/integer.rbs +38 -78
  28. data/core/io/buffer.rbs +7 -18
  29. data/core/io/wait.rbs +33 -11
  30. data/core/io.rbs +12 -14
  31. data/core/kernel.rbs +51 -57
  32. data/core/marshal.rbs +1 -1
  33. data/core/match_data.rbs +1 -1
  34. data/core/math.rbs +3 -42
  35. data/core/method.rbs +6 -14
  36. data/core/module.rbs +17 -88
  37. data/core/nil_class.rbs +3 -3
  38. data/core/numeric.rbs +16 -16
  39. data/core/object.rbs +3 -3
  40. data/core/object_space.rbs +15 -21
  41. data/core/proc.rbs +8 -15
  42. data/core/process.rbs +2 -2
  43. data/core/ractor.rbs +437 -278
  44. data/core/range.rbs +8 -7
  45. data/core/rational.rbs +24 -37
  46. data/core/rbs/unnamed/argf.rbs +2 -2
  47. data/core/rbs/unnamed/env_class.rbs +1 -1
  48. data/core/rbs/unnamed/random.rbs +2 -4
  49. data/core/regexp.rbs +20 -25
  50. data/core/ruby_vm.rbs +4 -6
  51. data/core/rubygems/errors.rbs +70 -3
  52. data/core/rubygems/rubygems.rbs +79 -11
  53. data/core/rubygems/version.rbs +3 -2
  54. data/core/set.rbs +359 -488
  55. data/core/string.rbs +1228 -3153
  56. data/core/struct.rbs +1 -1
  57. data/core/symbol.rbs +4 -4
  58. data/core/thread.rbs +29 -92
  59. data/core/time.rbs +9 -35
  60. data/core/trace_point.rbs +4 -7
  61. data/core/unbound_method.rbs +6 -14
  62. data/docs/collection.md +2 -2
  63. data/docs/gem.md +1 -0
  64. data/docs/sigs.md +3 -3
  65. data/ext/rbs_extension/ast_translation.c +1077 -944
  66. data/ext/rbs_extension/ast_translation.h +0 -7
  67. data/ext/rbs_extension/class_constants.c +83 -71
  68. data/ext/rbs_extension/class_constants.h +7 -4
  69. data/ext/rbs_extension/extconf.rb +2 -24
  70. data/ext/rbs_extension/legacy_location.c +172 -173
  71. data/ext/rbs_extension/legacy_location.h +3 -8
  72. data/ext/rbs_extension/main.c +289 -239
  73. data/ext/rbs_extension/rbs_extension.h +0 -3
  74. data/ext/rbs_extension/rbs_string_bridging.h +0 -4
  75. data/include/rbs/ast.h +98 -37
  76. data/include/rbs/defines.h +12 -38
  77. data/include/rbs/lexer.h +114 -126
  78. data/include/rbs/location.h +14 -14
  79. data/include/rbs/parser.h +37 -21
  80. data/include/rbs/string.h +5 -3
  81. data/include/rbs/util/rbs_allocator.h +19 -40
  82. data/include/rbs/util/rbs_assert.h +1 -12
  83. data/include/rbs/util/rbs_constant_pool.h +3 -3
  84. data/include/rbs/util/rbs_encoding.h +1 -3
  85. data/include/rbs/util/rbs_unescape.h +1 -2
  86. data/lib/rbs/ast/ruby/annotations.rb +119 -0
  87. data/lib/rbs/ast/ruby/comment_block.rb +221 -0
  88. data/lib/rbs/ast/ruby/declarations.rb +86 -0
  89. data/lib/rbs/ast/ruby/helpers/constant_helper.rb +24 -0
  90. data/lib/rbs/ast/ruby/helpers/location_helper.rb +15 -0
  91. data/lib/rbs/ast/ruby/members.rb +213 -0
  92. data/lib/rbs/buffer.rb +104 -24
  93. data/lib/rbs/cli/validate.rb +40 -35
  94. data/lib/rbs/cli.rb +5 -6
  95. data/lib/rbs/collection/config/lockfile_generator.rb +0 -1
  96. data/lib/rbs/collection.rb +0 -1
  97. data/lib/rbs/definition.rb +6 -1
  98. data/lib/rbs/definition_builder/ancestor_builder.rb +65 -62
  99. data/lib/rbs/definition_builder/method_builder.rb +45 -30
  100. data/lib/rbs/definition_builder.rb +44 -9
  101. data/lib/rbs/environment/class_entry.rb +69 -0
  102. data/lib/rbs/environment/module_entry.rb +66 -0
  103. data/lib/rbs/environment.rb +244 -218
  104. data/lib/rbs/environment_loader.rb +3 -3
  105. data/lib/rbs/errors.rb +5 -4
  106. data/lib/rbs/inline_parser/comment_association.rb +117 -0
  107. data/lib/rbs/inline_parser.rb +206 -0
  108. data/lib/rbs/location_aux.rb +35 -3
  109. data/lib/rbs/parser_aux.rb +11 -6
  110. data/lib/rbs/prototype/runtime.rb +2 -2
  111. data/lib/rbs/resolver/constant_resolver.rb +2 -2
  112. data/lib/rbs/resolver/type_name_resolver.rb +38 -124
  113. data/lib/rbs/source.rb +99 -0
  114. data/lib/rbs/subtractor.rb +4 -3
  115. data/lib/rbs/test/type_check.rb +0 -14
  116. data/lib/rbs/types.rb +1 -3
  117. data/lib/rbs/version.rb +1 -1
  118. data/lib/rbs.rb +13 -1
  119. data/lib/rdoc/discover.rb +1 -1
  120. data/lib/rdoc_plugin/parser.rb +1 -1
  121. data/rbs.gemspec +1 -0
  122. data/sig/ancestor_builder.rbs +1 -1
  123. data/sig/ast/ruby/annotations.rbs +110 -0
  124. data/sig/ast/ruby/comment_block.rbs +119 -0
  125. data/sig/ast/ruby/declarations.rbs +60 -0
  126. data/sig/ast/ruby/helpers/constant_helper.rbs +11 -0
  127. data/sig/ast/ruby/helpers/location_helper.rbs +15 -0
  128. data/sig/ast/ruby/members.rbs +72 -0
  129. data/sig/buffer.rbs +63 -5
  130. data/sig/definition.rbs +1 -0
  131. data/sig/definition_builder.rbs +1 -1
  132. data/sig/environment/class_entry.rbs +50 -0
  133. data/sig/environment/module_entry.rbs +50 -0
  134. data/sig/environment.rbs +28 -133
  135. data/sig/errors.rbs +13 -6
  136. data/sig/inline_parser/comment_association.rbs +71 -0
  137. data/sig/inline_parser.rbs +87 -0
  138. data/sig/location.rbs +32 -7
  139. data/sig/manifest.yaml +1 -0
  140. data/sig/method_builder.rbs +7 -4
  141. data/sig/parser.rbs +16 -20
  142. data/sig/resolver/type_name_resolver.rbs +7 -38
  143. data/sig/source.rbs +48 -0
  144. data/sig/types.rbs +1 -4
  145. data/src/ast.c +290 -201
  146. data/src/lexer.c +2813 -2902
  147. data/src/lexer.re +4 -0
  148. data/src/lexstate.c +155 -169
  149. data/src/location.c +40 -40
  150. data/src/parser.c +2665 -2433
  151. data/src/string.c +48 -0
  152. data/src/util/rbs_allocator.c +77 -80
  153. data/src/util/rbs_assert.c +10 -10
  154. data/src/util/rbs_buffer.c +2 -2
  155. data/src/util/rbs_constant_pool.c +15 -13
  156. data/src/util/rbs_encoding.c +4062 -20097
  157. data/src/util/rbs_unescape.c +48 -85
  158. data/stdlib/bigdecimal/0/big_decimal.rbs +82 -100
  159. data/stdlib/bigdecimal-math/0/big_math.rbs +8 -169
  160. data/stdlib/cgi/0/core.rbs +396 -2
  161. data/stdlib/cgi/0/manifest.yaml +0 -1
  162. data/stdlib/coverage/0/coverage.rbs +1 -3
  163. data/stdlib/date/0/date.rbs +59 -67
  164. data/stdlib/date/0/date_time.rbs +1 -1
  165. data/stdlib/delegate/0/delegator.rbs +7 -10
  166. data/stdlib/erb/0/erb.rbs +347 -737
  167. data/stdlib/fileutils/0/fileutils.rbs +13 -18
  168. data/stdlib/forwardable/0/forwardable.rbs +0 -3
  169. data/stdlib/json/0/json.rbs +48 -68
  170. data/stdlib/net-http/0/net-http.rbs +0 -3
  171. data/stdlib/objspace/0/objspace.rbs +4 -9
  172. data/stdlib/open-uri/0/open-uri.rbs +0 -40
  173. data/stdlib/openssl/0/openssl.rbs +228 -331
  174. data/stdlib/optparse/0/optparse.rbs +3 -3
  175. data/{core → stdlib/pathname/0}/pathname.rbs +355 -255
  176. data/stdlib/psych/0/psych.rbs +3 -3
  177. data/stdlib/rdoc/0/rdoc.rbs +1 -1
  178. data/stdlib/resolv/0/resolv.rbs +68 -25
  179. data/stdlib/ripper/0/ripper.rbs +2 -5
  180. data/stdlib/singleton/0/singleton.rbs +0 -3
  181. data/stdlib/socket/0/socket.rbs +1 -13
  182. data/stdlib/socket/0/tcp_socket.rbs +2 -10
  183. data/stdlib/stringio/0/stringio.rbs +85 -1176
  184. data/stdlib/strscan/0/string_scanner.rbs +31 -31
  185. data/stdlib/tempfile/0/tempfile.rbs +3 -3
  186. data/stdlib/time/0/time.rbs +1 -1
  187. data/stdlib/timeout/0/timeout.rbs +7 -63
  188. data/stdlib/tsort/0/cyclic.rbs +0 -3
  189. data/stdlib/uri/0/common.rbs +2 -11
  190. data/stdlib/uri/0/file.rbs +1 -1
  191. data/stdlib/uri/0/generic.rbs +16 -17
  192. data/stdlib/uri/0/rfc2396_parser.rbs +7 -6
  193. data/stdlib/zlib/0/zstream.rbs +0 -1
  194. metadata +40 -12
  195. data/.clang-format +0 -74
  196. data/.clangd +0 -2
  197. data/.github/workflows/c-check.yml +0 -54
  198. data/core/ruby.rbs +0 -53
  199. data/docs/aliases.md +0 -79
  200. data/docs/encoding.md +0 -56
  201. data/ext/rbs_extension/compat.h +0 -10
  202. data/stdlib/cgi-escape/0/escape.rbs +0 -153
data/core/math.rbs CHANGED
@@ -410,27 +410,6 @@ module Math
410
410
  #
411
411
  def self.exp: (double x) -> Float
412
412
 
413
- # <!--
414
- # rdoc-file=math.c
415
- # - Math.expm1(x) -> float
416
- # -->
417
- # Returns "exp(x) - 1", `e` raised to the `x` power, minus 1.
418
- #
419
- # * Domain: `[-INFINITY, INFINITY]`.
420
- # * Range: `[-1.0, INFINITY]`.
421
- #
422
- # Examples:
423
- #
424
- # expm1(-INFINITY) # => 0.0
425
- # expm1(-1.0) # => -0.6321205588285577 # 1.0/E - 1
426
- # expm1(0.0) # => 0.0
427
- # expm1(0.5) # => 0.6487212707001282 # sqrt(E) - 1
428
- # expm1(1.0) # => 1.718281828459045 # E - 1
429
- # expm1(2.0) # => 6.38905609893065 # E**2 - 1
430
- # expm1(INFINITY) # => Infinity
431
- #
432
- def self.expm1: (double x) -> Float
433
-
434
413
  # <!--
435
414
  # rdoc-file=math.c
436
415
  # - Math.frexp(x) -> [fraction, exponent]
@@ -546,8 +525,9 @@ module Math
546
525
  #
547
526
  # [Math.log(Math.gamma(x).abs), Math.gamma(x) < 0 ? -1 : 1]
548
527
  #
549
- # See [log gamma
550
- # function](https://en.wikipedia.org/wiki/Gamma_function#Log-gamma_function).
528
+ # See [logarithmic gamma
529
+ # function](https://en.wikipedia.org/wiki/Gamma_function#The_log-gamma_function)
530
+ # .
551
531
  #
552
532
  # * Domain: `(-INFINITY, INFINITY]`.
553
533
  # * Range of first element: `(-INFINITY, INFINITY]`.
@@ -623,25 +603,6 @@ module Math
623
603
  #
624
604
  def self.log10: (double x) -> Float
625
605
 
626
- # <!--
627
- # rdoc-file=math.c
628
- # - Math.log1p(x) -> float
629
- # -->
630
- # Returns "log(x + 1)", the base E
631
- # [logarithm](https://en.wikipedia.org/wiki/Logarithm) of (`x` + 1).
632
- #
633
- # * Domain: `[-1, INFINITY]`.
634
- # * Range: `[-INFINITY, INFINITY]`.
635
- #
636
- # Examples:
637
- #
638
- # log1p(-1.0) # => -Infinity
639
- # log1p(0.0) # => 0.0
640
- # log1p(E - 1) # => 1.0
641
- # log1p(INFINITY) # => Infinity
642
- #
643
- def self.log1p: (double x) -> Float
644
-
645
606
  # <!--
646
607
  # rdoc-file=math.c
647
608
  # - Math.log2(x) -> float
data/core/method.rbs CHANGED
@@ -1,5 +1,5 @@
1
1
  # <!-- rdoc-file=proc.c -->
2
- # `Method` objects are created by Object#method, and are associated with a
2
+ # Method objects are created by Object#method, and are associated with a
3
3
  # particular object (not just with a class). They may be used to invoke the
4
4
  # method within the object, and as a block associated with an iterator. They
5
5
  # may also be unbound from one object (creating an UnboundMethod) and bound to
@@ -359,18 +359,10 @@ class Method
359
359
 
360
360
  # <!--
361
361
  # rdoc-file=proc.c
362
- # - meth.source_location -> [String, Integer, Integer, Integer, Integer]
362
+ # - meth.source_location -> [String, Integer]
363
363
  # -->
364
- # Returns the location where the method was defined. The returned Array
365
- # contains:
366
- # (1) the Ruby source filename
367
- # (2) the line number where the definition starts
368
- # (3) the column number where the definition starts
369
- # (4) the line number where the definition ends
370
- # (5) the column number where the definitions ends
371
- #
372
- # This method will return `nil` if the method was not defined in Ruby (i.e.
373
- # native).
364
+ # Returns the Ruby source filename and line number containing this method or nil
365
+ # if this method was not defined in Ruby (i.e. native).
374
366
  #
375
367
  def source_location: () -> [String, Integer]?
376
368
 
@@ -378,8 +370,8 @@ class Method
378
370
  # rdoc-file=proc.c
379
371
  # - meth.super_method -> method
380
372
  # -->
381
- # Returns a `Method` of superclass which would be called when super is used or
382
- # nil if there is no method on superclass.
373
+ # Returns a Method of superclass which would be called when super is used or nil
374
+ # if there is no method on superclass.
383
375
  #
384
376
  def super_method: () -> Method?
385
377
 
data/core/module.rbs CHANGED
@@ -135,25 +135,14 @@ class Module < Object
135
135
 
136
136
  # <!--
137
137
  # rdoc-file=object.c
138
- # - self <=> object -> -1, 0, +1, or nil
138
+ # - module <=> other_module -> -1, 0, +1, or nil
139
139
  # -->
140
- # Returns:
140
+ # Comparison---Returns -1, 0, +1 or nil depending on whether `module` includes
141
+ # `other_module`, they are the same, or if `module` is included by
142
+ # `other_module`.
141
143
  #
142
- # * `-1`, if `self` includes `object`, if or `self` is a subclass of `object`.
143
- # * `0`, if `self` and `object` are the same.
144
- # * `1`, if `object` includes `self`, or if `object` is a subclass of `self`.
145
- # * `nil`, if none of the above is true.
146
- #
147
- # Examples:
148
- #
149
- # # Class Array includes module Enumerable.
150
- # Array <=> Enumerable # => -1
151
- # Enumerable <=> Enumerable # => 0
152
- # Enumerable <=> Array # => 1
153
- # # Class File is a subclass of class IO.
154
- # File <=> IO # => -1
155
- # IO <=> File # => 1
156
- # File <=> File # => 0
144
+ # Returns `nil` if `module` has no relationship with `other_module`, if
145
+ # `other_module` is not a module, or if the two values are incomparable.
157
146
  #
158
147
  def <=>: (untyped other) -> Integer?
159
148
 
@@ -339,8 +328,6 @@ class Module < Object
339
328
  # replaced with *filename*. If *const* is defined but not as autoload, does
340
329
  # nothing.
341
330
  #
342
- # Files that are currently being loaded must not be registered for autoload.
343
- #
344
331
  def autoload: (interned _module, String filename) -> NilClass
345
332
 
346
333
  # <!--
@@ -500,31 +487,6 @@ class Module < Object
500
487
  #
501
488
  # Added :FOO
502
489
  #
503
- # If we define a class using the `class` keyword, `const_added` runs before
504
- # `inherited`:
505
- #
506
- # module M
507
- # def self.const_added(const_name)
508
- # super
509
- # p :const_added
510
- # end
511
- #
512
- # parent = Class.new do
513
- # def self.inherited(subclass)
514
- # super
515
- # p :inherited
516
- # end
517
- # end
518
- #
519
- # class Child < parent
520
- # end
521
- # end
522
- #
523
- # *produces:*
524
- #
525
- # :const_added
526
- # :inherited
527
- #
528
490
  def const_added: (Symbol) -> void
529
491
 
530
492
  # <!--
@@ -1359,52 +1321,19 @@ class Module < Object
1359
1321
  # - protected(method_name, method_name, ...) -> array
1360
1322
  # - protected(array) -> array
1361
1323
  # -->
1362
- # Sets the visibility of a section or of a list of method names as protected.
1363
- # Accepts no arguments, a splat of method names (symbols or strings) or an array
1364
- # of method names. Returns the arguments that it received.
1365
- #
1366
- # ## Important difference between protected in other languages
1367
- #
1368
- # Protected methods in Ruby are different from other languages such as Java,
1369
- # where methods are marked as protected to give access to subclasses. In Ruby,
1370
- # subclasses **already have access to all methods defined in the parent class**,
1371
- # even private ones.
1372
- #
1373
- # Marking a method as protected allows **different objects of the same class**
1374
- # to call it.
1375
- #
1376
- # One use case is for comparison methods, such as `==`, if we want to expose a
1377
- # method for comparison between objects of the same class without making the
1378
- # method public to objects of other classes.
1379
- #
1380
- # ## Performance considerations
1381
- #
1382
- # Protected methods are slower than others because they can't use inline cache.
1383
- #
1384
- # ## Example
1385
- #
1386
- # class Account
1387
- # # Mark balance as protected, so that we can compare between accounts
1388
- # # without making it public.
1389
- # attr_reader :balance
1390
- # protected :balance
1391
- #
1392
- # def initialize(balance)
1393
- # @balance = balance
1394
- # end
1395
- #
1396
- # def >(other)
1397
- # # The invocation to `other.balance` is allowed because `other` is a
1398
- # # different object of the same class (Account).
1399
- # balance > other.balance
1400
- # end
1401
- # end
1324
+ # With no arguments, sets the default visibility for subsequently defined
1325
+ # methods to protected. With arguments, sets the named methods to have protected
1326
+ # visibility. String arguments are converted to symbols. An Array of Symbols
1327
+ # and/or Strings is also accepted. If a single argument is passed, it is
1328
+ # returned. If no argument is passed, nil is returned. If multiple arguments are
1329
+ # passed, the arguments are returned as an array.
1402
1330
  #
1403
- # account1 = Account.new(100)
1404
- # account2 = Account.new(50)
1331
+ # If a method has protected visibility, it is callable only where `self` of the
1332
+ # context is the same as the method. (method definition or instance_eval). This
1333
+ # behavior is different from Java's protected method. Usually `private` should
1334
+ # be used.
1405
1335
  #
1406
- # account1 > account2 # => true (works)
1407
- # account1.balance # => NoMethodError (fails because balance is not public)
1336
+ # Note that a protected method is slow because it can't use inline cache.
1408
1337
  #
1409
1338
  # To show a private method on RDoc, use `:doc:` instead of this.
1410
1339
  #
data/core/nil_class.rbs CHANGED
@@ -112,7 +112,7 @@ class NilClass
112
112
  def nil?: () -> true
113
113
 
114
114
  # <!--
115
- # rdoc-file=nilclass.rb
115
+ # rdoc-file=rational.c
116
116
  # - rationalize(eps = nil) -> (0/1)
117
117
  # -->
118
118
  # Returns zero as a Rational:
@@ -134,7 +134,7 @@ class NilClass
134
134
  def to_a: () -> []
135
135
 
136
136
  # <!--
137
- # rdoc-file=nilclass.rb
137
+ # rdoc-file=complex.c
138
138
  # - to_c -> (0+0i)
139
139
  # -->
140
140
  # Returns zero as a Complex:
@@ -174,7 +174,7 @@ class NilClass
174
174
  def to_i: () -> 0
175
175
 
176
176
  # <!--
177
- # rdoc-file=nilclass.rb
177
+ # rdoc-file=rational.c
178
178
  # - to_r -> (0/1)
179
179
  # -->
180
180
  # Returns zero as a Rational:
data/core/numeric.rbs CHANGED
@@ -160,7 +160,7 @@ class Numeric
160
160
  # rdoc-file=numeric.c
161
161
  # - self % other -> real_numeric
162
162
  # -->
163
- # Returns `self` modulo `other` as a real numeric (Integer, Float, or Rational).
163
+ # Returns `self` modulo `other` as a real number.
164
164
  #
165
165
  # Of the Core and Standard Library classes, only Rational uses this
166
166
  # implementation.
@@ -212,7 +212,7 @@ class Numeric
212
212
  # rdoc-file=numeric.c
213
213
  # - -self -> numeric
214
214
  # -->
215
- # Returns `self`, negated.
215
+ # Unary Minus---Returns the receiver, negated.
216
216
  #
217
217
  def -@: () -> Numeric
218
218
 
@@ -336,7 +336,7 @@ class Numeric
336
336
  # - div(other) -> integer
337
337
  # -->
338
338
  # Returns the quotient `self/other` as an integer (via `floor`), using method
339
- # `/` as defined in the subclass of Numeric. (Numeric itself does not define
339
+ # `/` in the derived class of `self`. (Numeric itself does not define method
340
340
  # `/`.)
341
341
  #
342
342
  # Of the Core and Standard Library classes, Only Float and Rational use this
@@ -398,8 +398,8 @@ class Numeric
398
398
  # rdoc-file=numeric.c
399
399
  # - fdiv(other) -> float
400
400
  # -->
401
- # Returns the quotient `self/other` as a float, using method `/` as defined in
402
- # the subclass of Numeric. (Numeric itself does not define `/`.)
401
+ # Returns the quotient `self/other` as a float, using method `/` in the derived
402
+ # class of `self`. (Numeric itself does not define method `/`.)
403
403
  #
404
404
  # Of the Core and Standard Library classes, only BigDecimal uses this
405
405
  # implementation.
@@ -488,7 +488,7 @@ class Numeric
488
488
  alias magnitude abs
489
489
 
490
490
  # <!-- rdoc-file=numeric.c -->
491
- # Returns `self` modulo `other` as a real numeric (Integer, Float, or Rational).
491
+ # Returns `self` modulo `other` as a real number.
492
492
  #
493
493
  # Of the Core and Standard Library classes, only Rational uses this
494
494
  # implementation.
@@ -530,17 +530,17 @@ class Numeric
530
530
  # rdoc-file=numeric.c
531
531
  # - nonzero? -> self or nil
532
532
  # -->
533
- # Returns `self` if `self` is not a zero value, `nil` otherwise; uses method
534
- # `zero?` for the evaluation.
533
+ # Returns +self+ if +self+ is not a zero value, +nil+ otherwise;
534
+ # uses method <tt>zero?</tt> for the evaluation.
535
535
  #
536
- # The returned `self` allows the method to be chained:
536
+ # The returned +self+ allows the method to be chained:
537
537
  #
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"]
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"]
541
541
  #
542
- # Of the Core and Standard Library classes, Integer, Float, Rational, and
543
- # Complex use this implementation.
542
+ # Of the Core and Standard Library classes,
543
+ # Integer, Float, Rational, and Complex use this implementation.
544
544
  #
545
545
  # Related: #zero?
546
546
  #
@@ -765,8 +765,8 @@ class Numeric
765
765
  # rdoc-file=numeric.c
766
766
  # - to_int -> integer
767
767
  # -->
768
- # Returns `self` as an integer; converts using method `to_i` in the subclass of
769
- # Numeric. (Numeric itself does not define `to_i`.)
768
+ # Returns `self` as an integer; converts using method `to_i` in the derived
769
+ # class.
770
770
  #
771
771
  # Of the Core and Standard Library classes, only Rational and Complex use this
772
772
  # implementation.
data/core/object.rbs CHANGED
@@ -40,7 +40,7 @@
40
40
  # * #instance_of?: Returns whether `self` is an instance of the given class.
41
41
  # * #instance_variable_defined?: Returns whether the given instance variable
42
42
  # is defined in `self`.
43
- # * #method: Returns the `Method` object for the given method in `self`.
43
+ # * #method: Returns the Method object for the given method in `self`.
44
44
  # * #methods: Returns an array of symbol names of public and protected methods
45
45
  # in `self`.
46
46
  # * #nil?: Returns `false`. (Only `nil` responds `true` to method `nil?`.)
@@ -50,13 +50,13 @@
50
50
  # methods in `self`.
51
51
  # * #protected_methods: Returns an array of the symbol names of the protected
52
52
  # methods in `self`.
53
- # * #public_method: Returns the `Method` object for the given public method in
53
+ # * #public_method: Returns the Method object for the given public method in
54
54
  # `self`.
55
55
  # * #public_methods: Returns an array of the symbol names of the public
56
56
  # methods in `self`.
57
57
  # * #respond_to?: Returns whether `self` responds to the given method.
58
58
  # * #singleton_class: Returns the singleton class of `self`.
59
- # * #singleton_method: Returns the `Method` object for the given singleton
59
+ # * #singleton_method: Returns the Method object for the given singleton
60
60
  # method in `self`.
61
61
  # * #singleton_methods: Returns an array of the symbol names of the singleton
62
62
  # methods in `self`.
@@ -29,7 +29,6 @@ module ObjectSpace
29
29
  # - _id2ref(p1)
30
30
  # -->
31
31
  #
32
- %a{deprecated}
33
32
  def self._id2ref: (Integer id) -> untyped
34
33
 
35
34
  # <!--
@@ -137,33 +136,28 @@ module ObjectSpace
137
136
  # Calls the block once for each living, nonimmediate object in this Ruby
138
137
  # process. If *module* is specified, calls the block for only those classes or
139
138
  # modules that match (or are a subclass of) *module*. Returns the number of
140
- # objects found. Immediate objects (such as `Fixnum`s, static `Symbol`s `true`,
141
- # `false` and `nil`) are never returned.
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.
142
142
  #
143
143
  # If no block is given, an enumerator is returned instead.
144
144
  #
145
- # Job = Class.new
146
- # jobs = [Job.new, Job.new]
147
- # count = ObjectSpace.each_object(Job) {|x| p x }
145
+ # a = 102.7
146
+ # b = 95 # Won't be returned
147
+ # c = 12345678987654321
148
+ # count = ObjectSpace.each_object(Numeric) {|x| p x }
148
149
  # puts "Total count: #{count}"
149
150
  #
150
151
  # *produces:*
151
152
  #
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 `Ractor.new` has been called for the first
159
- # time. See https://bugs.ruby-lang.org/issues/19387 for more information.
160
- #
161
- # a = 12345678987654321 # shareable
162
- # b = [].freeze # shareable
163
- # c = {} # not shareable
164
- # ObjectSpace.each_object {|x| x } # yields a, b, and c
165
- # Ractor.new {} # enter multi-Ractor mode
166
- # ObjectSpace.each_object {|x| x } # does not yield c
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
167
161
  #
168
162
  def self.each_object: (?Module `module`) -> Enumerator[untyped, Integer]
169
163
  | (?Module `module`) { (untyped obj) -> void } -> Integer
data/core/proc.rbs CHANGED
@@ -201,8 +201,8 @@
201
201
  # ["Bob", "Jane"].map(&hi) #=> ["Hi, Bob!", "Hi, Jane!"]
202
202
  # ["Bob", "Jane"].map(&hey) #=> ["Hey, Bob!", "Hey, Jane!"]
203
203
  #
204
- # Of the Ruby core classes, this method is implemented by `Symbol`, `Method`,
205
- # and `Hash`.
204
+ # Of the Ruby core classes, this method is implemented by Symbol, Method, and
205
+ # Hash.
206
206
  #
207
207
  # :to_s.to_proc.call(1) #=> "1"
208
208
  # [1, 2].map(&:to_s) #=> ["1", "2"]
@@ -285,7 +285,7 @@
285
285
  # [1, 2, 3].each { |x| p it }
286
286
  # # syntax error found (SyntaxError)
287
287
  # # [1, 2, 3].each { |x| p it }
288
- # # ^~ 'it' is not allowed when an ordinary parameter is defined
288
+ # # ^~ `it` is not allowed when an ordinary parameter is defined
289
289
  #
290
290
  # But if a local name (variable or method) is available, it would be used:
291
291
  #
@@ -302,7 +302,7 @@
302
302
  #
303
303
  # p = proc { it**2 }
304
304
  # l = lambda { it**2 }
305
- # p.parameters # => [[:opt]]
305
+ # p.parameters # => [[:opt, nil]]
306
306
  # p.arity # => 1
307
307
  # l.parameters # => [[:req]]
308
308
  # l.arity # => 1
@@ -332,7 +332,7 @@
332
332
  # Numbered parameters can't be mixed with `it` either:
333
333
  #
334
334
  # [10, 20, 30].map { _1 + it }
335
- # # SyntaxError: 'it' is not allowed when a numbered parameter is already used
335
+ # # SyntaxError: `it` is not allowed when a numbered parameter is already used
336
336
  #
337
337
  # To avoid conflicts, naming local variables or method arguments `_1`, `_2` and
338
338
  # so on, causes an error.
@@ -835,17 +835,10 @@ class Proc
835
835
 
836
836
  # <!--
837
837
  # rdoc-file=proc.c
838
- # - prc.source_location -> [String, Integer, Integer, Integer, Integer]
838
+ # - prc.source_location -> [String, Integer]
839
839
  # -->
840
- # Returns the location where the Proc was defined. The returned Array contains:
841
- # (1) the Ruby source filename
842
- # (2) the line number where the definition starts
843
- # (3) the column number where the definition starts
844
- # (4) the line number where the definition ends
845
- # (5) the column number where the definitions ends
846
- #
847
- # This method will return `nil` if the Proc was not defined in Ruby (i.e.
848
- # native).
840
+ # Returns the Ruby source filename and line number containing this proc or `nil`
841
+ # if this proc was not defined in Ruby (i.e. native).
849
842
  #
850
843
  def source_location: () -> [String, Integer]?
851
844
 
data/core/process.rbs CHANGED
@@ -590,7 +590,7 @@ module Process
590
590
  # * `:microsecond`: Number of microseconds as an integer.
591
591
  # * `:millisecond`: Number of milliseconds as an integer.
592
592
  # * `:nanosecond`: Number of nanoseconds as an integer.
593
- # * `:second`: Number of seconds as an integer.
593
+ # * `::second`: Number of seconds as an integer.
594
594
  #
595
595
  # Examples:
596
596
  #
@@ -2023,7 +2023,7 @@ end
2023
2023
  # <!-- rdoc-file=process.c -->
2024
2024
  # The Process::Sys module contains UID and GID functions which provide direct
2025
2025
  # bindings to the system calls of the same names instead of the more-portable
2026
- # versions of the same functionality found in the `Process`, Process::UID, and
2026
+ # versions of the same functionality found in the Process, Process::UID, and
2027
2027
  # Process::GID modules.
2028
2028
  #
2029
2029
  module Process::Sys