rbs 3.7.0 → 3.8.0.pre.1

Sign up to get free protection for your applications and to get access to all the features.
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