rbs 3.7.0 → 3.8.0.pre.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 (168) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/comments.yml +3 -3
  3. data/.github/workflows/ruby.yml +7 -7
  4. data/CHANGELOG.md +52 -0
  5. data/core/array.rbs +1743 -1580
  6. data/core/basic_object.rbs +38 -35
  7. data/core/comparable.rbs +1 -1
  8. data/core/complex.rbs +165 -93
  9. data/core/data.rbs +1 -1
  10. data/core/dir.rbs +1 -17
  11. data/core/encoding.rbs +12 -6
  12. data/core/enumerable.rbs +270 -266
  13. data/core/enumerator.rbs +0 -2
  14. data/core/env.rbs +1 -1
  15. data/core/errno.rbs +33 -16
  16. data/core/errors.rbs +2 -2
  17. data/core/exception.rbs +236 -170
  18. data/core/fiber.rbs +3 -2
  19. data/core/file.rbs +32 -74
  20. data/core/float.rbs +125 -72
  21. data/core/gc.rbs +138 -40
  22. data/core/hash.rbs +120 -141
  23. data/core/integer.rbs +79 -50
  24. data/core/io/buffer.rbs +49 -43
  25. data/core/io.rbs +97 -144
  26. data/core/kernel.rbs +290 -200
  27. data/core/match_data.rbs +76 -2
  28. data/core/math.rbs +0 -36
  29. data/core/module.rbs +28 -23
  30. data/core/nil_class.rbs +0 -3
  31. data/core/numeric.rbs +100 -103
  32. data/core/object.rbs +0 -4
  33. data/core/object_space/weak_key_map.rbs +3 -4
  34. data/core/object_space.rbs +3 -3
  35. data/core/proc.rbs +0 -2
  36. data/core/process.rbs +109 -57
  37. data/core/ractor.rbs +37 -4
  38. data/core/range.rbs +114 -87
  39. data/core/rational.rbs +0 -2
  40. data/core/rbs/unnamed/argf.rbs +234 -33
  41. data/core/rbs/unnamed/env_class.rbs +35 -53
  42. data/core/rbs/unnamed/random.rbs +1 -2
  43. data/core/regexp.rbs +4 -52
  44. data/core/ruby_vm.rbs +88 -9
  45. data/core/rubygems/config_file.rbs +3 -0
  46. data/core/rubygems/errors.rbs +0 -5
  47. data/core/rubygems/platform.rbs +0 -9
  48. data/core/rubygems/rubygems.rbs +0 -5
  49. data/core/rubygems/version.rbs +6 -6
  50. data/core/set.rbs +3 -15
  51. data/core/string.rbs +130 -136
  52. data/core/struct.rbs +6 -18
  53. data/core/symbol.rbs +14 -21
  54. data/core/thread.rbs +32 -35
  55. data/core/time.rbs +127 -50
  56. data/core/trace_point.rbs +16 -0
  57. data/core/true_class.rbs +0 -1
  58. data/core/warning.rbs +9 -2
  59. data/docs/architecture.md +1 -1
  60. data/docs/syntax.md +1 -1
  61. data/ext/rbs_extension/location.c +29 -19
  62. data/ext/rbs_extension/parser.c +267 -292
  63. data/ext/rbs_extension/parserstate.c +56 -22
  64. data/lib/rbs/annotate/annotations.rb +3 -3
  65. data/lib/rbs/annotate/rdoc_source.rb +2 -2
  66. data/lib/rbs/cli/diff.rb +3 -3
  67. data/lib/rbs/cli/validate.rb +1 -1
  68. data/lib/rbs/cli.rb +13 -13
  69. data/lib/rbs/collection/config.rb +3 -1
  70. data/lib/rbs/definition_builder/ancestor_builder.rb +3 -3
  71. data/lib/rbs/environment_loader.rb +1 -1
  72. data/lib/rbs/namespace.rb +1 -0
  73. data/lib/rbs/parser_aux.rb +2 -2
  74. data/lib/rbs/prototype/rb.rb +11 -8
  75. data/lib/rbs/prototype/rbi.rb +9 -5
  76. data/lib/rbs/prototype/runtime/value_object_generator.rb +7 -5
  77. data/lib/rbs/prototype/runtime.rb +4 -5
  78. data/lib/rbs/type_name.rb +14 -9
  79. data/lib/rbs/unit_test/type_assertions.rb +2 -2
  80. data/lib/rbs/validator.rb +3 -1
  81. data/lib/rbs/version.rb +1 -1
  82. data/lib/rdoc_plugin/parser.rb +2 -2
  83. data/rbs.gemspec +4 -0
  84. data/sig/ancestor_graph.rbs +4 -4
  85. data/sig/namespace.rbs +2 -3
  86. data/sig/resolver/constant_resolver.rbs +2 -2
  87. data/sig/resolver/context.rbs +1 -1
  88. data/sig/type_alias_regularity.rbs +5 -5
  89. data/sig/typename.rbs +8 -5
  90. data/sig/use_map.rbs +1 -1
  91. data/sig/validator.rbs +2 -2
  92. data/stdlib/base64/0/base64.rbs +0 -9
  93. data/stdlib/benchmark/0/benchmark.rbs +11 -2
  94. data/stdlib/bigdecimal/0/big_decimal.rbs +26 -182
  95. data/stdlib/cgi/0/core.rbs +47 -0
  96. data/stdlib/coverage/0/coverage.rbs +0 -3
  97. data/stdlib/csv/0/csv.rbs +18 -58
  98. data/stdlib/date/0/date.rbs +4 -19
  99. data/stdlib/did_you_mean/0/did_you_mean.rbs +0 -5
  100. data/stdlib/digest/0/digest.rbs +25 -2
  101. data/stdlib/erb/0/erb.rbs +0 -1
  102. data/stdlib/etc/0/etc.rbs +51 -34
  103. data/stdlib/fileutils/0/fileutils.rbs +3 -44
  104. data/stdlib/io-console/0/io-console.rbs +69 -15
  105. data/stdlib/ipaddr/0/ipaddr.rbs +8 -4
  106. data/stdlib/json/0/json.rbs +56 -71
  107. data/stdlib/logger/0/log_device.rbs +1 -1
  108. data/stdlib/logger/0/logger.rbs +3 -18
  109. data/stdlib/net-http/0/net-http.rbs +19 -77
  110. data/stdlib/nkf/0/nkf.rbs +30 -0
  111. data/stdlib/objspace/0/objspace.rbs +1 -2
  112. data/stdlib/observable/0/observable.rbs +1 -1
  113. data/stdlib/open-uri/0/open-uri.rbs +52 -0
  114. data/stdlib/open3/0/open3.rbs +0 -8
  115. data/stdlib/openssl/0/openssl.rbs +136 -69
  116. data/stdlib/optparse/0/optparse.rbs +58 -18
  117. data/stdlib/pathname/0/pathname.rbs +2 -8
  118. data/stdlib/pp/0/pp.rbs +3 -1
  119. data/stdlib/prettyprint/0/prettyprint.rbs +0 -4
  120. data/stdlib/pstore/0/pstore.rbs +0 -6
  121. data/stdlib/psych/0/psych.rbs +15 -4
  122. data/stdlib/pty/0/pty.rbs +46 -4
  123. data/stdlib/rdoc/0/code_object.rbs +0 -4
  124. data/stdlib/rdoc/0/markup.rbs +10 -12
  125. data/stdlib/rdoc/0/rdoc.rbs +1 -2
  126. data/stdlib/resolv/0/resolv.rbs +8 -3
  127. data/stdlib/ripper/0/ripper.rbs +0 -2
  128. data/stdlib/securerandom/0/securerandom.rbs +0 -2
  129. data/stdlib/shellwords/0/shellwords.rbs +11 -12
  130. data/stdlib/singleton/0/singleton.rbs +0 -1
  131. data/stdlib/socket/0/addrinfo.rbs +0 -1
  132. data/stdlib/socket/0/basic_socket.rbs +0 -5
  133. data/stdlib/socket/0/socket.rbs +49 -25
  134. data/stdlib/socket/0/tcp_server.rbs +0 -3
  135. data/stdlib/socket/0/tcp_socket.rbs +58 -3
  136. data/stdlib/socket/0/udp_socket.rbs +0 -1
  137. data/stdlib/socket/0/unix_server.rbs +0 -3
  138. data/stdlib/strscan/0/string_scanner.rbs +1265 -422
  139. data/stdlib/tempfile/0/tempfile.rbs +135 -28
  140. data/stdlib/time/0/time.rbs +48 -35
  141. data/stdlib/timeout/0/timeout.rbs +11 -8
  142. data/stdlib/tmpdir/0/tmpdir.rbs +8 -1
  143. data/stdlib/tsort/0/tsort.rbs +0 -4
  144. data/stdlib/uri/0/common.rbs +11 -30
  145. data/stdlib/uri/0/ftp.rbs +1 -1
  146. data/stdlib/uri/0/generic.rbs +22 -18
  147. data/stdlib/uri/0/http.rbs +2 -2
  148. data/stdlib/uri/0/rfc2396_parser.rbs +3 -0
  149. data/stdlib/zlib/0/buf_error.rbs +1 -70
  150. data/stdlib/zlib/0/data_error.rbs +1 -70
  151. data/stdlib/zlib/0/deflate.rbs +8 -72
  152. data/stdlib/zlib/0/error.rbs +1 -70
  153. data/stdlib/zlib/0/gzip_file/crc_error.rbs +2 -105
  154. data/stdlib/zlib/0/gzip_file/error.rbs +2 -105
  155. data/stdlib/zlib/0/gzip_file/length_error.rbs +2 -105
  156. data/stdlib/zlib/0/gzip_file/no_footer.rbs +2 -105
  157. data/stdlib/zlib/0/gzip_file.rbs +1 -71
  158. data/stdlib/zlib/0/gzip_reader.rbs +3 -74
  159. data/stdlib/zlib/0/gzip_writer.rbs +1 -70
  160. data/stdlib/zlib/0/inflate.rbs +4 -71
  161. data/stdlib/zlib/0/mem_error.rbs +1 -70
  162. data/stdlib/zlib/0/need_dict.rbs +1 -70
  163. data/stdlib/zlib/0/stream_end.rbs +1 -70
  164. data/stdlib/zlib/0/stream_error.rbs +1 -70
  165. data/stdlib/zlib/0/version_error.rbs +1 -70
  166. data/stdlib/zlib/0/zlib.rbs +0 -2
  167. data/stdlib/zlib/0/zstream.rbs +4 -72
  168. metadata +4 -6
data/core/float.rbs CHANGED
@@ -10,23 +10,21 @@
10
10
  # ys-floats-imprecise
11
11
  # * https://en.wikipedia.org/wiki/Floating_point#Accuracy_problems
12
12
  #
13
- #
14
13
  # You can create a Float object explicitly with:
15
14
  #
16
15
  # * A [floating-point literal](rdoc-ref:syntax/literals.rdoc@Float+Literals).
17
16
  #
18
- #
19
17
  # You can convert certain objects to Floats with:
20
18
  #
21
19
  # * Method #Float.
22
20
  #
23
- #
24
21
  # ## What's Here
25
22
  #
26
23
  # First, what's elsewhere. Class Float:
27
24
  #
28
- # * Inherits from [class Numeric](rdoc-ref:Numeric@What-27s+Here).
29
- #
25
+ # * Inherits from [class Numeric](rdoc-ref:Numeric@What-27s+Here) and [class
26
+ # Object](rdoc-ref:Object@What-27s+Here).
27
+ # * Includes [module Comparable](rdoc-ref:Comparable@What-27s+Here).
30
28
  #
31
29
  # Here, class Float provides methods for:
32
30
  #
@@ -34,7 +32,6 @@
34
32
  # * [Comparing](rdoc-ref:Float@Comparing)
35
33
  # * [Converting](rdoc-ref:Float@Converting)
36
34
  #
37
- #
38
35
  # ### Querying
39
36
  #
40
37
  # * #finite?: Returns whether `self` is finite.
@@ -42,7 +39,6 @@
42
39
  # * #infinite?: Returns whether `self` is infinite.
43
40
  # * #nan?: Returns whether `self` is a NaN (not-a-number).
44
41
  #
45
- #
46
42
  # ### Comparing
47
43
  #
48
44
  # * #<: Returns whether `self` is less than the given value.
@@ -54,7 +50,6 @@
54
50
  # * #>: Returns whether `self` is greater than the given value.
55
51
  # * #>=: Returns whether `self` is greater than or equal to the given value.
56
52
  #
57
- #
58
53
  # ### Converting
59
54
  #
60
55
  # * #% (aliased as #modulo): Returns `self` modulo the given value.
@@ -241,7 +236,6 @@ class Float < Numeric
241
236
  # * 1, if `self` is greater than `other`.
242
237
  # * `nil`, if the two values are incommensurate.
243
238
  #
244
- #
245
239
  # Examples:
246
240
  #
247
241
  # 2.0 <=> 2 # => 0
@@ -351,33 +345,58 @@ class Float < Numeric
351
345
  # rdoc-file=numeric.c
352
346
  # - ceil(ndigits = 0) -> float or integer
353
347
  # -->
354
- # Returns the smallest number greater than or equal to `self` with a precision
355
- # of `ndigits` decimal digits.
356
- #
357
- # When `ndigits` is positive, returns a float with `ndigits` digits after the
358
- # decimal point (as available):
359
- #
348
+ # Returns a numeric that is a "ceiling" value for `self`,
349
+ # as specified by the given `ndigits`,
350
+ # which must be an
351
+ # [integer-convertible
352
+ # object](rdoc-ref:implicit_conversion.rdoc@Integer-Convertible+Objects).
353
+ # When `ndigits` is positive, returns a Float with `ndigits`
354
+ # decimal digits after the decimal point
355
+ # (as available, but no fewer than 1):
360
356
  # f = 12345.6789
361
- # f.ceil(1) # => 12345.7
362
- # f.ceil(3) # => 12345.679
363
- # f = -12345.6789
364
- # f.ceil(1) # => -12345.6
365
- # f.ceil(3) # => -12345.678
366
- #
367
- # When `ndigits` is non-positive, returns an integer with at least `ndigits.abs`
368
- # trailing zeros:
369
- #
370
- # f = 12345.6789
371
- # f.ceil(0) # => 12346
372
- # f.ceil(-3) # => 13000
373
- # f = -12345.6789
374
- # f.ceil(0) # => -12345
375
- # f.ceil(-3) # => -12000
376
- #
377
- # Note that the limited precision of floating-point arithmetic may lead to
378
- # surprising results:
379
- #
380
- # (2.1 / 0.7).ceil #=> 4 (!)
357
+ # f.ceil(1) # => 12345.7
358
+ # f.ceil(3) # => 12345.679
359
+ # f.ceil(30) # => 12345.6789
360
+ # f = -12345.6789
361
+ # f.ceil(1) # => -12345.6
362
+ # f.ceil(3) # => -12345.678
363
+ # f.ceil(30) # => -12345.6789
364
+ # f = 0.0
365
+ # f.ceil(1) # => 0.0
366
+ # f.ceil(100) # => 0.0
367
+ #
368
+ # When `ndigits` is non-positive,
369
+ # returns an Integer based on a computed granularity:
370
+ # * The granularity is `10 ** ndigits.abs`.
371
+ # * The returned value is the largest multiple of the granularity
372
+ # that is less than or equal to `self`.
373
+ # Examples with positive `self`:
374
+ # ndigits|Granularity|12345.6789.ceil(ndigits)
375
+ # -------|-----------|------------------------
376
+ # 0| 1| 12346
377
+ # -1| 10| 12350
378
+ # -2| 100| 12400
379
+ # -3| 1000| 13000
380
+ # -4| 10000| 20000
381
+ # -5| 100000| 100000
382
+ # Examples with negative `self`:
383
+ # ndigits|Granularity|-12345.6789.ceil(ndigits)
384
+ # -------|-----------|-------------------------
385
+ # 0| 1| -12345
386
+ # -1| 10| -12340
387
+ # -2| 100| -12300
388
+ # -3| 1000| -12000
389
+ # -4| 10000| -10000
390
+ # -5| 100000| 0
391
+ # When `self` is zero and `ndigits` is non-positive,
392
+ # returns Integer zero:
393
+ # 0.0.ceil(0) # => 0
394
+ # 0.0.ceil(-1) # => 0
395
+ # 0.0.ceil(-2) # => 0
396
+ #
397
+ # Note that the limited precision of floating-point arithmetic
398
+ # may lead to surprising results:
399
+ # (2.1 / 0.7).ceil #=> 4 # Not 3 (because 2.1 / 0.7 # => 3.0000000000000004, not 3.0)
381
400
  #
382
401
  # Related: Float#floor.
383
402
  #
@@ -498,33 +517,59 @@ class Float < Numeric
498
517
  # rdoc-file=numeric.c
499
518
  # - floor(ndigits = 0) -> float or integer
500
519
  # -->
501
- # Returns the largest number less than or equal to `self` with a precision of
502
- # `ndigits` decimal digits.
503
- #
504
- # When `ndigits` is positive, returns a float with `ndigits` digits after the
505
- # decimal point (as available):
506
- #
507
- # f = 12345.6789
508
- # f.floor(1) # => 12345.6
509
- # f.floor(3) # => 12345.678
510
- # f = -12345.6789
511
- # f.floor(1) # => -12345.7
512
- # f.floor(3) # => -12345.679
513
- #
514
- # When `ndigits` is non-positive, returns an integer with at least `ndigits.abs`
515
- # trailing zeros:
516
- #
520
+ # Returns a float or integer that is a "floor" value for `self`,
521
+ # as specified by `ndigits`,
522
+ # which must be an
523
+ # [integer-convertible
524
+ # object](rdoc-ref:implicit_conversion.rdoc@Integer-Convertible+Objects).
525
+ # When `self` is zero,
526
+ # returns a zero value:
527
+ # a float if `ndigits` is positive,
528
+ # an integer otherwise:
529
+ # f = 0.0 # => 0.0
530
+ # f.floor(20) # => 0.0
531
+ # f.floor(0) # => 0
532
+ # f.floor(-20) # => 0
533
+ #
534
+ # When `self` is non-zero and `ndigits` is positive, returns a float with
535
+ # `ndigits`
536
+ # digits after the decimal point (as available):
517
537
  # f = 12345.6789
518
- # f.floor(0) # => 12345
519
- # f.floor(-3) # => 12000
520
- # f = -12345.6789
521
- # f.floor(0) # => -12346
522
- # f.floor(-3) # => -13000
523
- #
524
- # Note that the limited precision of floating-point arithmetic may lead to
525
- # surprising results:
526
- #
527
- # (0.3 / 0.1).floor #=> 2 (!)
538
+ # f.floor(1) # => 12345.6
539
+ # f.floor(3) # => 12345.678
540
+ # f.floor(30) # => 12345.6789
541
+ # f = -12345.6789
542
+ # f.floor(1) # => -12345.7
543
+ # f.floor(3) # => -12345.679
544
+ # f.floor(30) # => -12345.6789
545
+ #
546
+ # When `self` is non-zero and `ndigits` is non-positive,
547
+ # returns an integer value based on a computed granularity:
548
+ # * The granularity is `10 ** ndigits.abs`.
549
+ # * The returned value is the largest multiple of the granularity
550
+ # that is less than or equal to `self`.
551
+ # Examples with positive `self`:
552
+ # ndigits|Granularity|12345.6789.floor(ndigits)
553
+ # -------|-----------|-------------------------
554
+ # 0| 1| 12345
555
+ # -1| 10| 12340
556
+ # -2| 100| 12300
557
+ # -3| 1000| 12000
558
+ # -4| 10000| 10000
559
+ # -5| 100000| 0
560
+ # Examples with negative `self`:
561
+ # ndigits|Granularity|-12345.6789.floor(ndigits)
562
+ # -------|-----------|--------------------------
563
+ # 0| 1| -12346
564
+ # -1| 10| -12350
565
+ # -2| 100| -12400
566
+ # -3| 1000| -13000
567
+ # -4| 10000| -20000
568
+ # -5| 100000| -100000
569
+ # -6| 1000000| -1000000
570
+ # Note that the limited precision of floating-point arithmetic
571
+ # may lead to surprising results:
572
+ # (0.3 / 0.1).floor # => 2 # Not 3, (because (0.3 / 0.1) # => 2.9999999999999996, not 3.0)
528
573
  #
529
574
  # Related: Float#ceil.
530
575
  #
@@ -557,7 +602,6 @@ class Float < Numeric
557
602
  # * -1 if `self` is `-Infinity`.
558
603
  # * `nil`, otherwise.
559
604
  #
560
- #
561
605
  # Examples:
562
606
  #
563
607
  # f = 1.0/0.0 # => Infinity
@@ -576,14 +620,19 @@ class Float < Numeric
576
620
  # of `self`, the string representation may contain:
577
621
  #
578
622
  # * A fixed-point number.
623
+ # 3.14.to_s # => "3.14"
624
+ #
579
625
  # * A number in "scientific notation" (containing an exponent).
626
+ # (10.1**50).to_s # => "1.644631821843879e+50"
627
+ #
580
628
  # * 'Infinity'.
629
+ # (10.1**500).to_s # => "Infinity"
630
+ #
581
631
  # * '-Infinity'.
582
- # * 'NaN' (indicating not-a-number).
632
+ # (-10.1**500).to_s # => "-Infinity"
583
633
  #
584
- # 3.14.to_s # => "3.14" (10.1**50).to_s # =>
585
- # "1.644631821843879e+50" (10.1**500).to_s # => "Infinity"
586
- # (-10.1**500).to_s # => "-Infinity" (0.0/0.0).to_s # => "NaN"
634
+ # * 'NaN' (indicating not-a-number).
635
+ # (0.0/0.0).to_s # => "NaN"
587
636
  #
588
637
  alias inspect to_s
589
638
 
@@ -798,7 +847,7 @@ class Float < Numeric
798
847
 
799
848
  # <!--
800
849
  # rdoc-file=numeric.c
801
- # - round(ndigits = 0, half: :up]) -> integer or float
850
+ # - round(ndigits = 0, half: :up) -> integer or float
802
851
  # -->
803
852
  # Returns `self` rounded to the nearest value with a precision of `ndigits`
804
853
  # decimal digits.
@@ -844,7 +893,6 @@ class Float < Numeric
844
893
  # 3.5.round(half: :even) # => 4
845
894
  # (-2.5).round(half: :even) # => -2
846
895
  #
847
- #
848
896
  # Raises and exception if the value for `half` is invalid.
849
897
  #
850
898
  # Related: Float#truncate.
@@ -926,14 +974,19 @@ class Float < Numeric
926
974
  # of `self`, the string representation may contain:
927
975
  #
928
976
  # * A fixed-point number.
977
+ # 3.14.to_s # => "3.14"
978
+ #
929
979
  # * A number in "scientific notation" (containing an exponent).
980
+ # (10.1**50).to_s # => "1.644631821843879e+50"
981
+ #
930
982
  # * 'Infinity'.
983
+ # (10.1**500).to_s # => "Infinity"
984
+ #
931
985
  # * '-Infinity'.
932
- # * 'NaN' (indicating not-a-number).
986
+ # (-10.1**500).to_s # => "-Infinity"
933
987
  #
934
- # 3.14.to_s # => "3.14" (10.1**50).to_s # =>
935
- # "1.644631821843879e+50" (10.1**500).to_s # => "Infinity"
936
- # (-10.1**500).to_s # => "-Infinity" (0.0/0.0).to_s # => "NaN"
988
+ # * 'NaN' (indicating not-a-number).
989
+ # (0.0/0.0).to_s # => "NaN"
937
990
  #
938
991
  def to_s: () -> String
939
992