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.
- checksums.yaml +4 -4
- data/.github/workflows/comments.yml +3 -3
- data/.github/workflows/ruby.yml +24 -35
- data/.github/workflows/typecheck.yml +3 -1
- data/.github/workflows/windows.yml +2 -2
- data/.gitignore +0 -4
- data/CHANGELOG.md +0 -88
- data/README.md +1 -38
- data/Rakefile +20 -142
- data/Steepfile +1 -0
- data/config.yml +43 -1
- data/core/array.rbs +46 -100
- data/core/complex.rbs +21 -32
- data/core/dir.rbs +2 -2
- data/core/encoding.rbs +9 -6
- data/core/enumerable.rbs +3 -90
- data/core/enumerator.rbs +1 -18
- data/core/errno.rbs +0 -8
- data/core/errors.rbs +1 -28
- data/core/exception.rbs +2 -2
- data/core/fiber.rbs +4 -5
- data/core/file.rbs +12 -27
- data/core/file_test.rbs +1 -1
- data/core/float.rbs +22 -209
- data/core/gc.rbs +281 -417
- data/core/hash.rbs +727 -1024
- data/core/integer.rbs +38 -78
- data/core/io/buffer.rbs +7 -18
- data/core/io/wait.rbs +33 -11
- data/core/io.rbs +12 -14
- data/core/kernel.rbs +51 -57
- data/core/marshal.rbs +1 -1
- data/core/match_data.rbs +1 -1
- data/core/math.rbs +3 -42
- data/core/method.rbs +6 -14
- data/core/module.rbs +17 -88
- data/core/nil_class.rbs +3 -3
- data/core/numeric.rbs +16 -16
- data/core/object.rbs +3 -3
- data/core/object_space.rbs +15 -21
- data/core/proc.rbs +8 -15
- data/core/process.rbs +2 -2
- data/core/ractor.rbs +437 -278
- data/core/range.rbs +8 -7
- data/core/rational.rbs +24 -37
- data/core/rbs/unnamed/argf.rbs +2 -2
- data/core/rbs/unnamed/env_class.rbs +1 -1
- data/core/rbs/unnamed/random.rbs +2 -4
- data/core/regexp.rbs +20 -25
- data/core/ruby_vm.rbs +4 -6
- data/core/rubygems/errors.rbs +70 -3
- data/core/rubygems/rubygems.rbs +79 -11
- data/core/rubygems/version.rbs +3 -2
- data/core/set.rbs +359 -488
- data/core/string.rbs +1228 -3153
- data/core/struct.rbs +1 -1
- data/core/symbol.rbs +4 -4
- data/core/thread.rbs +29 -92
- data/core/time.rbs +9 -35
- data/core/trace_point.rbs +4 -7
- data/core/unbound_method.rbs +6 -14
- data/docs/collection.md +2 -2
- data/docs/gem.md +1 -0
- data/docs/sigs.md +3 -3
- data/ext/rbs_extension/ast_translation.c +1077 -944
- data/ext/rbs_extension/ast_translation.h +0 -7
- data/ext/rbs_extension/class_constants.c +83 -71
- data/ext/rbs_extension/class_constants.h +7 -4
- data/ext/rbs_extension/extconf.rb +2 -24
- data/ext/rbs_extension/legacy_location.c +172 -173
- data/ext/rbs_extension/legacy_location.h +3 -8
- data/ext/rbs_extension/main.c +289 -239
- data/ext/rbs_extension/rbs_extension.h +0 -3
- data/ext/rbs_extension/rbs_string_bridging.h +0 -4
- data/include/rbs/ast.h +98 -37
- data/include/rbs/defines.h +12 -38
- data/include/rbs/lexer.h +114 -126
- data/include/rbs/location.h +14 -14
- data/include/rbs/parser.h +37 -21
- data/include/rbs/string.h +5 -3
- data/include/rbs/util/rbs_allocator.h +19 -40
- data/include/rbs/util/rbs_assert.h +1 -12
- data/include/rbs/util/rbs_constant_pool.h +3 -3
- data/include/rbs/util/rbs_encoding.h +1 -3
- data/include/rbs/util/rbs_unescape.h +1 -2
- data/lib/rbs/ast/ruby/annotations.rb +119 -0
- data/lib/rbs/ast/ruby/comment_block.rb +221 -0
- data/lib/rbs/ast/ruby/declarations.rb +86 -0
- data/lib/rbs/ast/ruby/helpers/constant_helper.rb +24 -0
- data/lib/rbs/ast/ruby/helpers/location_helper.rb +15 -0
- data/lib/rbs/ast/ruby/members.rb +213 -0
- data/lib/rbs/buffer.rb +104 -24
- data/lib/rbs/cli/validate.rb +40 -35
- data/lib/rbs/cli.rb +5 -6
- data/lib/rbs/collection/config/lockfile_generator.rb +0 -1
- data/lib/rbs/collection.rb +0 -1
- data/lib/rbs/definition.rb +6 -1
- data/lib/rbs/definition_builder/ancestor_builder.rb +65 -62
- data/lib/rbs/definition_builder/method_builder.rb +45 -30
- data/lib/rbs/definition_builder.rb +44 -9
- data/lib/rbs/environment/class_entry.rb +69 -0
- data/lib/rbs/environment/module_entry.rb +66 -0
- data/lib/rbs/environment.rb +244 -218
- data/lib/rbs/environment_loader.rb +3 -3
- data/lib/rbs/errors.rb +5 -4
- data/lib/rbs/inline_parser/comment_association.rb +117 -0
- data/lib/rbs/inline_parser.rb +206 -0
- data/lib/rbs/location_aux.rb +35 -3
- data/lib/rbs/parser_aux.rb +11 -6
- data/lib/rbs/prototype/runtime.rb +2 -2
- data/lib/rbs/resolver/constant_resolver.rb +2 -2
- data/lib/rbs/resolver/type_name_resolver.rb +38 -124
- data/lib/rbs/source.rb +99 -0
- data/lib/rbs/subtractor.rb +4 -3
- data/lib/rbs/test/type_check.rb +0 -14
- data/lib/rbs/types.rb +1 -3
- data/lib/rbs/version.rb +1 -1
- data/lib/rbs.rb +13 -1
- data/lib/rdoc/discover.rb +1 -1
- data/lib/rdoc_plugin/parser.rb +1 -1
- data/rbs.gemspec +1 -0
- data/sig/ancestor_builder.rbs +1 -1
- data/sig/ast/ruby/annotations.rbs +110 -0
- data/sig/ast/ruby/comment_block.rbs +119 -0
- data/sig/ast/ruby/declarations.rbs +60 -0
- data/sig/ast/ruby/helpers/constant_helper.rbs +11 -0
- data/sig/ast/ruby/helpers/location_helper.rbs +15 -0
- data/sig/ast/ruby/members.rbs +72 -0
- data/sig/buffer.rbs +63 -5
- data/sig/definition.rbs +1 -0
- data/sig/definition_builder.rbs +1 -1
- data/sig/environment/class_entry.rbs +50 -0
- data/sig/environment/module_entry.rbs +50 -0
- data/sig/environment.rbs +28 -133
- data/sig/errors.rbs +13 -6
- data/sig/inline_parser/comment_association.rbs +71 -0
- data/sig/inline_parser.rbs +87 -0
- data/sig/location.rbs +32 -7
- data/sig/manifest.yaml +1 -0
- data/sig/method_builder.rbs +7 -4
- data/sig/parser.rbs +16 -20
- data/sig/resolver/type_name_resolver.rbs +7 -38
- data/sig/source.rbs +48 -0
- data/sig/types.rbs +1 -4
- data/src/ast.c +290 -201
- data/src/lexer.c +2813 -2902
- data/src/lexer.re +4 -0
- data/src/lexstate.c +155 -169
- data/src/location.c +40 -40
- data/src/parser.c +2665 -2433
- data/src/string.c +48 -0
- data/src/util/rbs_allocator.c +77 -80
- data/src/util/rbs_assert.c +10 -10
- data/src/util/rbs_buffer.c +2 -2
- data/src/util/rbs_constant_pool.c +15 -13
- data/src/util/rbs_encoding.c +4062 -20097
- data/src/util/rbs_unescape.c +48 -85
- data/stdlib/bigdecimal/0/big_decimal.rbs +82 -100
- data/stdlib/bigdecimal-math/0/big_math.rbs +8 -169
- data/stdlib/cgi/0/core.rbs +396 -2
- data/stdlib/cgi/0/manifest.yaml +0 -1
- data/stdlib/coverage/0/coverage.rbs +1 -3
- data/stdlib/date/0/date.rbs +59 -67
- data/stdlib/date/0/date_time.rbs +1 -1
- data/stdlib/delegate/0/delegator.rbs +7 -10
- data/stdlib/erb/0/erb.rbs +347 -737
- data/stdlib/fileutils/0/fileutils.rbs +13 -18
- data/stdlib/forwardable/0/forwardable.rbs +0 -3
- data/stdlib/json/0/json.rbs +48 -68
- data/stdlib/net-http/0/net-http.rbs +0 -3
- data/stdlib/objspace/0/objspace.rbs +4 -9
- data/stdlib/open-uri/0/open-uri.rbs +0 -40
- data/stdlib/openssl/0/openssl.rbs +228 -331
- data/stdlib/optparse/0/optparse.rbs +3 -3
- data/{core → stdlib/pathname/0}/pathname.rbs +355 -255
- data/stdlib/psych/0/psych.rbs +3 -3
- data/stdlib/rdoc/0/rdoc.rbs +1 -1
- data/stdlib/resolv/0/resolv.rbs +68 -25
- data/stdlib/ripper/0/ripper.rbs +2 -5
- data/stdlib/singleton/0/singleton.rbs +0 -3
- data/stdlib/socket/0/socket.rbs +1 -13
- data/stdlib/socket/0/tcp_socket.rbs +2 -10
- data/stdlib/stringio/0/stringio.rbs +85 -1176
- data/stdlib/strscan/0/string_scanner.rbs +31 -31
- data/stdlib/tempfile/0/tempfile.rbs +3 -3
- data/stdlib/time/0/time.rbs +1 -1
- data/stdlib/timeout/0/timeout.rbs +7 -63
- data/stdlib/tsort/0/cyclic.rbs +0 -3
- data/stdlib/uri/0/common.rbs +2 -11
- data/stdlib/uri/0/file.rbs +1 -1
- data/stdlib/uri/0/generic.rbs +16 -17
- data/stdlib/uri/0/rfc2396_parser.rbs +7 -6
- data/stdlib/zlib/0/zstream.rbs +0 -1
- metadata +40 -12
- data/.clang-format +0 -74
- data/.clangd +0 -2
- data/.github/workflows/c-check.yml +0 -54
- data/core/ruby.rbs +0 -53
- data/docs/aliases.md +0 -79
- data/docs/encoding.md +0 -56
- data/ext/rbs_extension/compat.h +0 -10
- 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 [
|
|
550
|
-
# function](https://en.wikipedia.org/wiki/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
|
-
#
|
|
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
|
|
362
|
+
# - meth.source_location -> [String, Integer]
|
|
363
363
|
# -->
|
|
364
|
-
# Returns the
|
|
365
|
-
#
|
|
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
|
|
382
|
-
#
|
|
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
|
-
# -
|
|
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
|
-
#
|
|
143
|
-
#
|
|
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
|
-
#
|
|
1363
|
-
#
|
|
1364
|
-
#
|
|
1365
|
-
#
|
|
1366
|
-
#
|
|
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
|
-
#
|
|
1404
|
-
#
|
|
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
|
-
#
|
|
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=
|
|
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=
|
|
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=
|
|
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
|
|
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
|
|
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
|
-
# `/`
|
|
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 `/`
|
|
402
|
-
#
|
|
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
|
|
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
|
|
534
|
-
#
|
|
533
|
+
# Returns +self+ if +self+ is not a zero value, +nil+ otherwise;
|
|
534
|
+
# uses method <tt>zero?</tt> for the evaluation.
|
|
535
535
|
#
|
|
536
|
-
#
|
|
536
|
+
# The returned +self+ allows the method to be chained:
|
|
537
537
|
#
|
|
538
|
-
#
|
|
539
|
-
#
|
|
540
|
-
#
|
|
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
|
-
#
|
|
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
|
|
769
|
-
#
|
|
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
|
|
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
|
|
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
|
|
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`.
|
data/core/object_space.rbs
CHANGED
|
@@ -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 (
|
|
141
|
-
# `
|
|
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
|
-
#
|
|
146
|
-
#
|
|
147
|
-
#
|
|
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
|
-
#
|
|
153
|
-
#
|
|
154
|
-
#
|
|
155
|
-
#
|
|
156
|
-
#
|
|
157
|
-
#
|
|
158
|
-
#
|
|
159
|
-
#
|
|
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
|
|
205
|
-
#
|
|
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
|
-
# # ^~
|
|
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:
|
|
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
|
|
838
|
+
# - prc.source_location -> [String, Integer]
|
|
839
839
|
# -->
|
|
840
|
-
# Returns the
|
|
841
|
-
#
|
|
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
|
-
# *
|
|
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
|
|
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
|