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.
- checksums.yaml +4 -4
- data/.github/workflows/comments.yml +3 -3
- data/.github/workflows/ruby.yml +7 -7
- data/CHANGELOG.md +52 -0
- data/core/array.rbs +1743 -1580
- data/core/basic_object.rbs +38 -35
- data/core/comparable.rbs +1 -1
- data/core/complex.rbs +165 -93
- data/core/data.rbs +1 -1
- data/core/dir.rbs +1 -17
- data/core/encoding.rbs +12 -6
- data/core/enumerable.rbs +270 -266
- data/core/enumerator.rbs +0 -2
- data/core/env.rbs +1 -1
- data/core/errno.rbs +33 -16
- data/core/errors.rbs +2 -2
- data/core/exception.rbs +236 -170
- data/core/fiber.rbs +3 -2
- data/core/file.rbs +32 -74
- data/core/float.rbs +125 -72
- data/core/gc.rbs +138 -40
- data/core/hash.rbs +120 -141
- data/core/integer.rbs +79 -50
- data/core/io/buffer.rbs +49 -43
- data/core/io.rbs +97 -144
- data/core/kernel.rbs +290 -200
- data/core/match_data.rbs +76 -2
- data/core/math.rbs +0 -36
- data/core/module.rbs +28 -23
- data/core/nil_class.rbs +0 -3
- data/core/numeric.rbs +100 -103
- data/core/object.rbs +0 -4
- data/core/object_space/weak_key_map.rbs +3 -4
- data/core/object_space.rbs +3 -3
- data/core/proc.rbs +0 -2
- data/core/process.rbs +109 -57
- data/core/ractor.rbs +37 -4
- data/core/range.rbs +114 -87
- data/core/rational.rbs +0 -2
- data/core/rbs/unnamed/argf.rbs +234 -33
- data/core/rbs/unnamed/env_class.rbs +35 -53
- data/core/rbs/unnamed/random.rbs +1 -2
- data/core/regexp.rbs +4 -52
- data/core/ruby_vm.rbs +88 -9
- data/core/rubygems/config_file.rbs +3 -0
- data/core/rubygems/errors.rbs +0 -5
- data/core/rubygems/platform.rbs +0 -9
- data/core/rubygems/rubygems.rbs +0 -5
- data/core/rubygems/version.rbs +6 -6
- data/core/set.rbs +3 -15
- data/core/string.rbs +130 -136
- data/core/struct.rbs +6 -18
- data/core/symbol.rbs +14 -21
- data/core/thread.rbs +32 -35
- data/core/time.rbs +127 -50
- data/core/trace_point.rbs +16 -0
- data/core/true_class.rbs +0 -1
- data/core/warning.rbs +9 -2
- data/docs/architecture.md +1 -1
- data/docs/syntax.md +1 -1
- data/ext/rbs_extension/location.c +29 -19
- data/ext/rbs_extension/parser.c +267 -292
- data/ext/rbs_extension/parserstate.c +56 -22
- data/lib/rbs/annotate/annotations.rb +3 -3
- data/lib/rbs/annotate/rdoc_source.rb +2 -2
- data/lib/rbs/cli/diff.rb +3 -3
- data/lib/rbs/cli/validate.rb +1 -1
- data/lib/rbs/cli.rb +13 -13
- data/lib/rbs/collection/config.rb +3 -1
- data/lib/rbs/definition_builder/ancestor_builder.rb +3 -3
- data/lib/rbs/environment_loader.rb +1 -1
- data/lib/rbs/namespace.rb +1 -0
- data/lib/rbs/parser_aux.rb +2 -2
- data/lib/rbs/prototype/rb.rb +11 -8
- data/lib/rbs/prototype/rbi.rb +9 -5
- data/lib/rbs/prototype/runtime/value_object_generator.rb +7 -5
- data/lib/rbs/prototype/runtime.rb +4 -5
- data/lib/rbs/type_name.rb +14 -9
- data/lib/rbs/unit_test/type_assertions.rb +2 -2
- data/lib/rbs/validator.rb +3 -1
- data/lib/rbs/version.rb +1 -1
- data/lib/rdoc_plugin/parser.rb +2 -2
- data/rbs.gemspec +4 -0
- data/sig/ancestor_graph.rbs +4 -4
- data/sig/namespace.rbs +2 -3
- data/sig/resolver/constant_resolver.rbs +2 -2
- data/sig/resolver/context.rbs +1 -1
- data/sig/type_alias_regularity.rbs +5 -5
- data/sig/typename.rbs +8 -5
- data/sig/use_map.rbs +1 -1
- data/sig/validator.rbs +2 -2
- data/stdlib/base64/0/base64.rbs +0 -9
- data/stdlib/benchmark/0/benchmark.rbs +11 -2
- data/stdlib/bigdecimal/0/big_decimal.rbs +26 -182
- data/stdlib/cgi/0/core.rbs +47 -0
- data/stdlib/coverage/0/coverage.rbs +0 -3
- data/stdlib/csv/0/csv.rbs +18 -58
- data/stdlib/date/0/date.rbs +4 -19
- data/stdlib/did_you_mean/0/did_you_mean.rbs +0 -5
- data/stdlib/digest/0/digest.rbs +25 -2
- data/stdlib/erb/0/erb.rbs +0 -1
- data/stdlib/etc/0/etc.rbs +51 -34
- data/stdlib/fileutils/0/fileutils.rbs +3 -44
- data/stdlib/io-console/0/io-console.rbs +69 -15
- data/stdlib/ipaddr/0/ipaddr.rbs +8 -4
- data/stdlib/json/0/json.rbs +56 -71
- data/stdlib/logger/0/log_device.rbs +1 -1
- data/stdlib/logger/0/logger.rbs +3 -18
- data/stdlib/net-http/0/net-http.rbs +19 -77
- data/stdlib/nkf/0/nkf.rbs +30 -0
- data/stdlib/objspace/0/objspace.rbs +1 -2
- data/stdlib/observable/0/observable.rbs +1 -1
- data/stdlib/open-uri/0/open-uri.rbs +52 -0
- data/stdlib/open3/0/open3.rbs +0 -8
- data/stdlib/openssl/0/openssl.rbs +136 -69
- data/stdlib/optparse/0/optparse.rbs +58 -18
- data/stdlib/pathname/0/pathname.rbs +2 -8
- data/stdlib/pp/0/pp.rbs +3 -1
- data/stdlib/prettyprint/0/prettyprint.rbs +0 -4
- data/stdlib/pstore/0/pstore.rbs +0 -6
- data/stdlib/psych/0/psych.rbs +15 -4
- data/stdlib/pty/0/pty.rbs +46 -4
- data/stdlib/rdoc/0/code_object.rbs +0 -4
- data/stdlib/rdoc/0/markup.rbs +10 -12
- data/stdlib/rdoc/0/rdoc.rbs +1 -2
- data/stdlib/resolv/0/resolv.rbs +8 -3
- data/stdlib/ripper/0/ripper.rbs +0 -2
- data/stdlib/securerandom/0/securerandom.rbs +0 -2
- data/stdlib/shellwords/0/shellwords.rbs +11 -12
- data/stdlib/singleton/0/singleton.rbs +0 -1
- data/stdlib/socket/0/addrinfo.rbs +0 -1
- data/stdlib/socket/0/basic_socket.rbs +0 -5
- data/stdlib/socket/0/socket.rbs +49 -25
- data/stdlib/socket/0/tcp_server.rbs +0 -3
- data/stdlib/socket/0/tcp_socket.rbs +58 -3
- data/stdlib/socket/0/udp_socket.rbs +0 -1
- data/stdlib/socket/0/unix_server.rbs +0 -3
- data/stdlib/strscan/0/string_scanner.rbs +1265 -422
- data/stdlib/tempfile/0/tempfile.rbs +135 -28
- data/stdlib/time/0/time.rbs +48 -35
- data/stdlib/timeout/0/timeout.rbs +11 -8
- data/stdlib/tmpdir/0/tmpdir.rbs +8 -1
- data/stdlib/tsort/0/tsort.rbs +0 -4
- data/stdlib/uri/0/common.rbs +11 -30
- data/stdlib/uri/0/ftp.rbs +1 -1
- data/stdlib/uri/0/generic.rbs +22 -18
- data/stdlib/uri/0/http.rbs +2 -2
- data/stdlib/uri/0/rfc2396_parser.rbs +3 -0
- data/stdlib/zlib/0/buf_error.rbs +1 -70
- data/stdlib/zlib/0/data_error.rbs +1 -70
- data/stdlib/zlib/0/deflate.rbs +8 -72
- data/stdlib/zlib/0/error.rbs +1 -70
- data/stdlib/zlib/0/gzip_file/crc_error.rbs +2 -105
- data/stdlib/zlib/0/gzip_file/error.rbs +2 -105
- data/stdlib/zlib/0/gzip_file/length_error.rbs +2 -105
- data/stdlib/zlib/0/gzip_file/no_footer.rbs +2 -105
- data/stdlib/zlib/0/gzip_file.rbs +1 -71
- data/stdlib/zlib/0/gzip_reader.rbs +3 -74
- data/stdlib/zlib/0/gzip_writer.rbs +1 -70
- data/stdlib/zlib/0/inflate.rbs +4 -71
- data/stdlib/zlib/0/mem_error.rbs +1 -70
- data/stdlib/zlib/0/need_dict.rbs +1 -70
- data/stdlib/zlib/0/stream_end.rbs +1 -70
- data/stdlib/zlib/0/stream_error.rbs +1 -70
- data/stdlib/zlib/0/version_error.rbs +1 -70
- data/stdlib/zlib/0/zlib.rbs +0 -2
- data/stdlib/zlib/0/zstream.rbs +4 -72
- 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
|
355
|
-
#
|
356
|
-
#
|
357
|
-
#
|
358
|
-
#
|
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
|
-
#
|
362
|
-
#
|
363
|
-
#
|
364
|
-
#
|
365
|
-
#
|
366
|
-
#
|
367
|
-
#
|
368
|
-
#
|
369
|
-
#
|
370
|
-
#
|
371
|
-
#
|
372
|
-
#
|
373
|
-
#
|
374
|
-
#
|
375
|
-
#
|
376
|
-
#
|
377
|
-
#
|
378
|
-
#
|
379
|
-
#
|
380
|
-
#
|
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
|
502
|
-
# `ndigits
|
503
|
-
#
|
504
|
-
#
|
505
|
-
#
|
506
|
-
#
|
507
|
-
#
|
508
|
-
#
|
509
|
-
#
|
510
|
-
# f =
|
511
|
-
#
|
512
|
-
#
|
513
|
-
#
|
514
|
-
#
|
515
|
-
#
|
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
|
-
#
|
519
|
-
#
|
520
|
-
#
|
521
|
-
#
|
522
|
-
#
|
523
|
-
#
|
524
|
-
#
|
525
|
-
#
|
526
|
-
#
|
527
|
-
#
|
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
|
-
#
|
632
|
+
# (-10.1**500).to_s # => "-Infinity"
|
583
633
|
#
|
584
|
-
#
|
585
|
-
#
|
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
|
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
|
-
#
|
986
|
+
# (-10.1**500).to_s # => "-Infinity"
|
933
987
|
#
|
934
|
-
#
|
935
|
-
#
|
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
|
|