rbs 3.10.4 → 4.0.0
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/dependabot.yml +14 -14
- data/.github/workflows/bundle-update.yml +60 -0
- data/.github/workflows/c-check.yml +7 -5
- data/.github/workflows/comments.yml +2 -2
- data/.github/workflows/dependabot.yml +2 -2
- data/.github/workflows/ruby.yml +16 -26
- data/.github/workflows/rust.yml +95 -0
- data/.github/workflows/typecheck.yml +1 -1
- data/.github/workflows/windows.yml +2 -2
- data/.rubocop.yml +2 -2
- data/.vscode/extensions.json +5 -0
- data/.vscode/settings.json +19 -0
- data/CHANGELOG.md +202 -2
- data/Rakefile +9 -23
- data/Steepfile +2 -0
- data/config.yml +457 -13
- data/core/array.rbs +218 -188
- data/core/basic_object.rbs +9 -8
- data/core/binding.rbs +0 -2
- data/core/builtin.rbs +2 -2
- data/core/class.rbs +6 -5
- data/core/comparable.rbs +45 -31
- data/core/complex.rbs +66 -55
- data/core/dir.rbs +57 -45
- data/core/encoding.rbs +6 -6
- data/core/enumerable.rbs +105 -91
- data/core/enumerator/arithmetic_sequence.rbs +70 -0
- data/core/enumerator.rbs +24 -3
- data/core/errno.rbs +3 -2
- data/core/errors.rbs +31 -29
- data/core/exception.rbs +12 -12
- data/core/fiber.rbs +47 -36
- data/core/file.rbs +242 -169
- data/core/file_test.rbs +2 -2
- data/core/float.rbs +42 -68
- data/core/gc.rbs +78 -70
- data/core/hash.rbs +70 -60
- data/core/integer.rbs +32 -75
- data/core/io/buffer.rbs +36 -36
- data/core/io/wait.rbs +7 -7
- data/core/io.rbs +192 -146
- data/core/kernel.rbs +198 -147
- data/core/marshal.rbs +3 -3
- data/core/match_data.rbs +14 -12
- data/core/math.rbs +69 -67
- data/core/method.rbs +6 -8
- data/core/module.rbs +148 -88
- data/core/nil_class.rbs +4 -3
- data/core/numeric.rbs +53 -50
- data/core/object.rbs +6 -8
- data/core/object_space.rbs +11 -10
- data/core/pathname.rbs +131 -81
- data/core/proc.rbs +65 -34
- data/core/process.rbs +221 -201
- data/core/ractor.rbs +15 -11
- data/core/random.rbs +21 -3
- data/core/range.rbs +152 -49
- data/core/rational.rbs +5 -56
- data/core/rbs/unnamed/argf.rbs +58 -51
- data/core/rbs/unnamed/env_class.rbs +18 -13
- data/core/rbs/unnamed/main_class.rbs +123 -0
- data/core/rbs/unnamed/random.rbs +7 -116
- data/core/regexp.rbs +236 -197
- data/core/ruby.rbs +1 -1
- data/core/ruby_vm.rbs +32 -30
- data/core/rubygems/config_file.rbs +5 -5
- data/core/rubygems/errors.rbs +1 -1
- data/core/rubygems/requirement.rbs +5 -5
- data/core/rubygems/rubygems.rbs +5 -3
- data/core/set.rbs +17 -16
- data/core/signal.rbs +2 -2
- data/core/string.rbs +318 -298
- data/core/struct.rbs +26 -25
- data/core/symbol.rbs +25 -24
- data/core/thread.rbs +40 -41
- data/core/time.rbs +47 -42
- data/core/trace_point.rbs +34 -31
- data/core/true_class.rbs +2 -2
- data/core/unbound_method.rbs +10 -10
- data/core/warning.rbs +7 -7
- data/docs/collection.md +1 -1
- data/docs/config.md +171 -0
- data/docs/inline.md +576 -0
- data/docs/syntax.md +46 -16
- data/docs/type_fingerprint.md +21 -0
- data/exe/rbs +1 -1
- data/ext/rbs_extension/ast_translation.c +595 -98
- data/ext/rbs_extension/class_constants.c +30 -0
- data/ext/rbs_extension/class_constants.h +15 -0
- data/ext/rbs_extension/legacy_location.c +30 -53
- data/ext/rbs_extension/legacy_location.h +37 -0
- data/ext/rbs_extension/main.c +125 -24
- data/include/rbs/ast.h +485 -150
- data/include/rbs/lexer.h +11 -4
- data/include/rbs/location.h +25 -44
- data/include/rbs/parser.h +20 -2
- data/include/rbs/util/rbs_constant_pool.h +0 -3
- data/include/rbs.h +8 -0
- data/lib/rbs/ast/annotation.rb +1 -1
- data/lib/rbs/ast/comment.rb +1 -1
- data/lib/rbs/ast/declarations.rb +10 -10
- data/lib/rbs/ast/members.rb +14 -14
- data/lib/rbs/ast/ruby/annotations.rb +409 -0
- data/lib/rbs/ast/ruby/comment_block.rb +245 -0
- data/lib/rbs/ast/ruby/declarations.rb +281 -0
- data/lib/rbs/ast/ruby/helpers/constant_helper.rb +28 -0
- data/lib/rbs/ast/ruby/helpers/location_helper.rb +15 -0
- data/lib/rbs/ast/ruby/members.rb +723 -0
- data/lib/rbs/ast/type_param.rb +24 -4
- data/lib/rbs/buffer.rb +105 -20
- data/lib/rbs/cli/diff.rb +16 -15
- data/lib/rbs/cli/validate.rb +62 -125
- data/lib/rbs/cli.rb +55 -23
- data/lib/rbs/collection/config/lockfile_generator.rb +8 -4
- data/lib/rbs/collection/sources/git.rb +1 -0
- data/lib/rbs/collection.rb +0 -1
- data/lib/rbs/definition.rb +6 -1
- data/lib/rbs/definition_builder/ancestor_builder.rb +119 -63
- data/lib/rbs/definition_builder/method_builder.rb +65 -30
- data/lib/rbs/definition_builder.rb +177 -20
- data/lib/rbs/diff.rb +7 -1
- data/lib/rbs/environment/class_entry.rb +69 -0
- data/lib/rbs/environment/module_entry.rb +66 -0
- data/lib/rbs/environment.rb +338 -155
- data/lib/rbs/environment_loader.rb +2 -2
- data/lib/rbs/errors.rb +30 -20
- data/lib/rbs/inline_parser/comment_association.rb +117 -0
- data/lib/rbs/inline_parser.rb +542 -0
- data/lib/rbs/location_aux.rb +36 -4
- data/lib/rbs/locator.rb +5 -1
- data/lib/rbs/method_type.rb +5 -3
- data/lib/rbs/namespace.rb +0 -7
- data/lib/rbs/parser_aux.rb +31 -8
- data/lib/rbs/prototype/helpers.rb +57 -0
- data/lib/rbs/prototype/rb.rb +3 -28
- data/lib/rbs/prototype/rbi.rb +3 -20
- data/lib/rbs/prototype/runtime.rb +10 -2
- data/lib/rbs/resolver/type_name_resolver.rb +0 -8
- data/lib/rbs/source.rb +99 -0
- data/lib/rbs/subtractor.rb +4 -3
- data/lib/rbs/test/type_check.rb +5 -2
- data/lib/rbs/type_name.rb +1 -8
- data/lib/rbs/types.rb +88 -78
- data/lib/rbs/unit_test/convertibles.rb +1 -0
- data/lib/rbs/unit_test/type_assertions.rb +35 -8
- data/lib/rbs/validator.rb +2 -2
- data/lib/rbs/version.rb +1 -1
- data/lib/rbs.rb +12 -1
- data/rbs.gemspec +3 -2
- data/rust/.gitignore +1 -0
- data/rust/Cargo.lock +378 -0
- data/rust/Cargo.toml +7 -0
- data/rust/ruby-rbs/Cargo.toml +22 -0
- data/rust/ruby-rbs/build.rs +764 -0
- data/rust/ruby-rbs/examples/locations.rs +60 -0
- data/rust/ruby-rbs/src/lib.rs +1 -0
- data/rust/ruby-rbs/src/node/mod.rs +742 -0
- data/rust/ruby-rbs/tests/sanity.rs +47 -0
- data/rust/ruby-rbs/vendor/rbs/config.yml +1 -0
- data/rust/ruby-rbs-sys/Cargo.toml +23 -0
- data/rust/ruby-rbs-sys/build.rs +204 -0
- data/rust/ruby-rbs-sys/src/lib.rs +50 -0
- data/rust/ruby-rbs-sys/vendor/rbs/include +1 -0
- data/rust/ruby-rbs-sys/vendor/rbs/src +1 -0
- data/rust/ruby-rbs-sys/wrapper.h +1 -0
- data/schema/typeParam.json +17 -1
- data/sig/ancestor_builder.rbs +1 -1
- data/sig/ast/ruby/annotations.rbs +421 -0
- data/sig/ast/ruby/comment_block.rbs +127 -0
- data/sig/ast/ruby/declarations.rbs +158 -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 +178 -0
- data/sig/buffer.rbs +63 -5
- data/sig/cli/diff.rbs +5 -11
- data/sig/cli/validate.rbs +12 -8
- data/sig/cli.rbs +18 -18
- data/sig/definition.rbs +6 -0
- data/sig/definition_builder.rbs +3 -1
- data/sig/environment/class_entry.rbs +50 -0
- data/sig/environment/module_entry.rbs +50 -0
- data/sig/environment.rbs +37 -81
- data/sig/errors.rbs +26 -20
- data/sig/inline_parser/comment_association.rbs +71 -0
- data/sig/inline_parser.rbs +124 -0
- data/sig/location.rbs +32 -7
- data/sig/locator.rbs +0 -2
- data/sig/method_builder.rbs +9 -4
- data/sig/namespace.rbs +0 -5
- data/sig/parser.rbs +47 -13
- data/sig/prototype/helpers.rbs +2 -0
- data/sig/resolver/type_name_resolver.rbs +0 -3
- data/sig/source.rbs +48 -0
- data/sig/type_param.rbs +13 -8
- data/sig/typename.rbs +0 -5
- data/sig/types.rbs +6 -7
- data/sig/unit_test/spy.rbs +0 -8
- data/sig/unit_test/type_assertions.rbs +11 -0
- data/src/ast.c +491 -143
- data/src/lexer.c +1552 -1314
- data/src/lexer.re +7 -0
- data/src/lexstate.c +8 -1
- data/src/location.c +8 -48
- data/src/parser.c +1107 -409
- data/src/util/rbs_constant_pool.c +0 -4
- data/stdlib/bigdecimal/0/big_decimal.rbs +16 -16
- data/stdlib/cgi-escape/0/escape.rbs +4 -4
- data/stdlib/coverage/0/coverage.rbs +4 -3
- data/stdlib/date/0/date.rbs +33 -28
- data/stdlib/date/0/date_time.rbs +24 -23
- data/stdlib/did_you_mean/0/did_you_mean.rbs +17 -16
- data/stdlib/digest/0/digest.rbs +110 -0
- data/stdlib/erb/0/erb.rbs +64 -53
- data/stdlib/etc/0/etc.rbs +55 -50
- data/stdlib/fileutils/0/fileutils.rbs +140 -126
- data/stdlib/forwardable/0/forwardable.rbs +10 -10
- data/stdlib/io-console/0/io-console.rbs +2 -2
- data/stdlib/json/0/json.rbs +158 -131
- data/stdlib/monitor/0/monitor.rbs +3 -3
- data/stdlib/net-http/0/net-http.rbs +159 -134
- data/stdlib/objspace/0/objspace.rbs +8 -30
- data/stdlib/open-uri/0/open-uri.rbs +8 -8
- data/stdlib/open3/0/open3.rbs +469 -10
- data/stdlib/openssl/0/openssl.rbs +144 -129
- data/stdlib/optparse/0/optparse.rbs +23 -14
- data/stdlib/pathname/0/pathname.rbs +2 -2
- data/stdlib/pp/0/pp.rbs +9 -8
- data/stdlib/prettyprint/0/prettyprint.rbs +7 -7
- data/stdlib/pstore/0/pstore.rbs +35 -30
- data/stdlib/psych/0/psych.rbs +62 -9
- data/stdlib/psych/0/store.rbs +2 -4
- data/stdlib/pty/0/pty.rbs +9 -6
- data/stdlib/random-formatter/0/random-formatter.rbs +277 -0
- data/stdlib/rdoc/0/code_object.rbs +2 -1
- data/stdlib/rdoc/0/parser.rbs +1 -1
- data/stdlib/rdoc/0/store.rbs +1 -1
- data/stdlib/ripper/0/ripper.rbs +20 -17
- data/stdlib/securerandom/0/manifest.yaml +2 -0
- data/stdlib/securerandom/0/securerandom.rbs +7 -20
- data/stdlib/shellwords/0/shellwords.rbs +2 -2
- data/stdlib/socket/0/addrinfo.rbs +9 -9
- data/stdlib/socket/0/basic_socket.rbs +3 -3
- data/stdlib/socket/0/ip_socket.rbs +10 -8
- data/stdlib/socket/0/socket.rbs +10 -9
- data/stdlib/socket/0/tcp_server.rbs +1 -1
- data/stdlib/socket/0/tcp_socket.rbs +1 -1
- data/stdlib/socket/0/udp_socket.rbs +1 -1
- data/stdlib/socket/0/unix_server.rbs +1 -1
- data/stdlib/stringio/0/stringio.rbs +55 -54
- data/stdlib/strscan/0/string_scanner.rbs +46 -44
- data/stdlib/tempfile/0/tempfile.rbs +24 -20
- data/stdlib/time/0/time.rbs +7 -5
- data/stdlib/tsort/0/tsort.rbs +7 -6
- data/stdlib/uri/0/common.rbs +31 -18
- data/stdlib/uri/0/file.rbs +2 -2
- data/stdlib/uri/0/generic.rbs +9 -2
- data/stdlib/uri/0/http.rbs +2 -2
- data/stdlib/uri/0/ldap.rbs +2 -2
- data/stdlib/uri/0/mailto.rbs +3 -3
- data/stdlib/uri/0/rfc2396_parser.rbs +6 -5
- data/stdlib/zlib/0/deflate.rbs +4 -3
- data/stdlib/zlib/0/gzip_reader.rbs +6 -6
- data/stdlib/zlib/0/gzip_writer.rbs +14 -12
- data/stdlib/zlib/0/inflate.rbs +1 -1
- data/stdlib/zlib/0/need_dict.rbs +1 -1
- metadata +66 -3
data/core/proc.rbs
CHANGED
|
@@ -37,7 +37,7 @@
|
|
|
37
37
|
#
|
|
38
38
|
# proc2 = proc {|x| x**2 }
|
|
39
39
|
#
|
|
40
|
-
# * Receiving a block of code into proc argument (note the
|
|
40
|
+
# * Receiving a block of code into proc argument (note the <code>&</code>):
|
|
41
41
|
#
|
|
42
42
|
# def make_proc(&block)
|
|
43
43
|
# block
|
|
@@ -149,7 +149,7 @@
|
|
|
149
149
|
# method.
|
|
150
150
|
#
|
|
151
151
|
# Lambda semantics is typically preserved during the proc lifetime, including
|
|
152
|
-
#
|
|
152
|
+
# <code>&</code>-deconstruction to a block of code:
|
|
153
153
|
#
|
|
154
154
|
# p = proc {|x, y| x }
|
|
155
155
|
# l = lambda {|x, y| x }
|
|
@@ -184,7 +184,7 @@
|
|
|
184
184
|
# ## Conversion of other objects to procs
|
|
185
185
|
#
|
|
186
186
|
# Any object that implements the `to_proc` method can be converted into a proc
|
|
187
|
-
# by the
|
|
187
|
+
# by the <code>&</code> operator, and therefore can be consumed by iterators.
|
|
188
188
|
#
|
|
189
189
|
# class Greeter
|
|
190
190
|
# def initialize(greeting)
|
|
@@ -377,7 +377,6 @@ class Proc
|
|
|
377
377
|
def self.new: () { (?) -> untyped } -> instance
|
|
378
378
|
|
|
379
379
|
def clone: () -> self
|
|
380
|
-
def dup: () -> self
|
|
381
380
|
|
|
382
381
|
# <!-- rdoc-file=proc.c -->
|
|
383
382
|
# Invokes the block, setting the block's parameters to the arguments using
|
|
@@ -390,13 +389,13 @@ class Proc
|
|
|
390
389
|
# a_proc.(9, 1, 2, 3) #=> [9, 18, 27]
|
|
391
390
|
# a_proc.yield(9, 1, 2, 3) #=> [9, 18, 27]
|
|
392
391
|
#
|
|
393
|
-
# Note that
|
|
394
|
-
# syntactic sugar to hide "call".
|
|
392
|
+
# Note that <code>prc.()</code> invokes <code>prc.call()</code> with the
|
|
393
|
+
# parameters given. It's syntactic sugar to hide "call".
|
|
395
394
|
#
|
|
396
|
-
# For procs created using #lambda or
|
|
397
|
-
# number of parameters are passed to the proc. For procs created
|
|
398
|
-
# or Kernel.proc, extra parameters are silently discarded and
|
|
399
|
-
# are set to `nil`.
|
|
395
|
+
# For procs created using #lambda or <code>->()</code> an error is generated if
|
|
396
|
+
# the wrong number of parameters are passed to the proc. For procs created
|
|
397
|
+
# using Proc.new or Kernel.proc, extra parameters are silently discarded and
|
|
398
|
+
# missing parameters are set to `nil`.
|
|
400
399
|
#
|
|
401
400
|
# a_proc = proc {|a,b| [a,b] }
|
|
402
401
|
# a_proc.call(1) #=> [1, nil]
|
|
@@ -419,13 +418,13 @@ class Proc
|
|
|
419
418
|
# a_proc.(9, 1, 2, 3) #=> [9, 18, 27]
|
|
420
419
|
# a_proc.yield(9, 1, 2, 3) #=> [9, 18, 27]
|
|
421
420
|
#
|
|
422
|
-
# Note that
|
|
423
|
-
# syntactic sugar to hide "call".
|
|
421
|
+
# Note that <code>prc.()</code> invokes <code>prc.call()</code> with the
|
|
422
|
+
# parameters given. It's syntactic sugar to hide "call".
|
|
424
423
|
#
|
|
425
|
-
# For procs created using #lambda or
|
|
426
|
-
# number of parameters are passed to the proc. For procs created
|
|
427
|
-
# or Kernel.proc, extra parameters are silently discarded and
|
|
428
|
-
# are set to `nil`.
|
|
424
|
+
# For procs created using #lambda or <code>->()</code> an error is generated if
|
|
425
|
+
# the wrong number of parameters are passed to the proc. For procs created
|
|
426
|
+
# using Proc.new or Kernel.proc, extra parameters are silently discarded and
|
|
427
|
+
# missing parameters are set to `nil`.
|
|
429
428
|
#
|
|
430
429
|
# a_proc = proc {|a,b| [a,b] }
|
|
431
430
|
# a_proc.call(1) #=> [1, nil]
|
|
@@ -546,8 +545,8 @@ class Proc
|
|
|
546
545
|
# lambdas and have only a finite number of optional arguments; in this latter
|
|
547
546
|
# case, returns n. Keyword arguments will be considered as a single additional
|
|
548
547
|
# argument, that argument being mandatory if any keyword argument is mandatory.
|
|
549
|
-
# A #proc with no argument declarations is the same as a block declaring
|
|
550
|
-
# its arguments.
|
|
548
|
+
# A #proc with no argument declarations is the same as a block declaring
|
|
549
|
+
# <code>||</code> as its arguments.
|
|
551
550
|
#
|
|
552
551
|
# proc {}.arity #=> 0
|
|
553
552
|
# proc { || }.arity #=> 0
|
|
@@ -606,13 +605,13 @@ class Proc
|
|
|
606
605
|
# a_proc.(9, 1, 2, 3) #=> [9, 18, 27]
|
|
607
606
|
# a_proc.yield(9, 1, 2, 3) #=> [9, 18, 27]
|
|
608
607
|
#
|
|
609
|
-
# Note that
|
|
610
|
-
# syntactic sugar to hide "call".
|
|
608
|
+
# Note that <code>prc.()</code> invokes <code>prc.call()</code> with the
|
|
609
|
+
# parameters given. It's syntactic sugar to hide "call".
|
|
611
610
|
#
|
|
612
|
-
# For procs created using #lambda or
|
|
613
|
-
# number of parameters are passed to the proc. For procs created
|
|
614
|
-
# or Kernel.proc, extra parameters are silently discarded and
|
|
615
|
-
# are set to `nil`.
|
|
611
|
+
# For procs created using #lambda or <code>->()</code> an error is generated if
|
|
612
|
+
# the wrong number of parameters are passed to the proc. For procs created
|
|
613
|
+
# using Proc.new or Kernel.proc, extra parameters are silently discarded and
|
|
614
|
+
# missing parameters are set to `nil`.
|
|
616
615
|
#
|
|
617
616
|
# a_proc = proc {|a,b| [a,b] }
|
|
618
617
|
# a_proc.call(1) #=> [1, nil]
|
|
@@ -635,13 +634,13 @@ class Proc
|
|
|
635
634
|
# a_proc.(9, 1, 2, 3) #=> [9, 18, 27]
|
|
636
635
|
# a_proc.yield(9, 1, 2, 3) #=> [9, 18, 27]
|
|
637
636
|
#
|
|
638
|
-
# Note that
|
|
639
|
-
# syntactic sugar to hide "call".
|
|
637
|
+
# Note that <code>prc.()</code> invokes <code>prc.call()</code> with the
|
|
638
|
+
# parameters given. It's syntactic sugar to hide "call".
|
|
640
639
|
#
|
|
641
|
-
# For procs created using #lambda or
|
|
642
|
-
# number of parameters are passed to the proc. For procs created
|
|
643
|
-
# or Kernel.proc, extra parameters are silently discarded and
|
|
644
|
-
# are set to `nil`.
|
|
640
|
+
# For procs created using #lambda or <code>->()</code> an error is generated if
|
|
641
|
+
# the wrong number of parameters are passed to the proc. For procs created
|
|
642
|
+
# using Proc.new or Kernel.proc, extra parameters are silently discarded and
|
|
643
|
+
# missing parameters are set to `nil`.
|
|
645
644
|
#
|
|
646
645
|
# a_proc = proc {|a,b| [a,b] }
|
|
647
646
|
# a_proc.call(1) #=> [1, nil]
|
|
@@ -748,7 +747,7 @@ class Proc
|
|
|
748
747
|
# Proc.new {}.lambda? #=> false
|
|
749
748
|
#
|
|
750
749
|
# `lambda`, `proc` and Proc.new preserve the tricks of a Proc object given by
|
|
751
|
-
#
|
|
750
|
+
# <code>&</code> argument.
|
|
752
751
|
#
|
|
753
752
|
# lambda(&lambda {}).lambda? #=> true
|
|
754
753
|
# proc(&lambda {}).lambda? #=> true
|
|
@@ -758,13 +757,13 @@ class Proc
|
|
|
758
757
|
# proc(&proc {}).lambda? #=> false
|
|
759
758
|
# Proc.new(&proc {}).lambda? #=> false
|
|
760
759
|
#
|
|
761
|
-
# A Proc object generated by
|
|
760
|
+
# A Proc object generated by <code>&</code> argument has the tricks
|
|
762
761
|
#
|
|
763
762
|
# def n(&b) b.lambda? end
|
|
764
763
|
# n {} #=> false
|
|
765
764
|
#
|
|
766
|
-
# The
|
|
767
|
-
# argument.
|
|
765
|
+
# The <code>&</code> argument preserves the tricks if a Proc object is given by
|
|
766
|
+
# <code>&</code> argument.
|
|
768
767
|
#
|
|
769
768
|
# n(&lambda {}) #=> true
|
|
770
769
|
# n(&proc {}) #=> false
|
|
@@ -832,6 +831,38 @@ class Proc
|
|
|
832
831
|
#
|
|
833
832
|
def parameters: (?lambda: boolish) -> Method::param_types
|
|
834
833
|
|
|
834
|
+
# <!--
|
|
835
|
+
# rdoc-file=proc.c
|
|
836
|
+
# - proc.ruby2_keywords -> proc
|
|
837
|
+
# -->
|
|
838
|
+
# Marks the proc as passing keywords through a normal argument splat. This
|
|
839
|
+
# should only be called on procs that accept an argument splat
|
|
840
|
+
# (<code>*args</code>) but not explicit keywords or a keyword splat. It marks
|
|
841
|
+
# the proc such that if the proc is called with keyword arguments, the final
|
|
842
|
+
# hash argument is marked with a special flag such that if it is the final
|
|
843
|
+
# element of a normal argument splat to another method call, and that method
|
|
844
|
+
# call does not include explicit keywords or a keyword splat, the final element
|
|
845
|
+
# is interpreted as keywords. In other words, keywords will be passed through
|
|
846
|
+
# the proc to other methods.
|
|
847
|
+
#
|
|
848
|
+
# This should only be used for procs that delegate keywords to another method,
|
|
849
|
+
# and only for backwards compatibility with Ruby versions before 2.7.
|
|
850
|
+
#
|
|
851
|
+
# This method will probably be removed at some point, as it exists only for
|
|
852
|
+
# backwards compatibility. As it does not exist in Ruby versions before 2.7,
|
|
853
|
+
# check that the proc responds to this method before calling it. Also, be aware
|
|
854
|
+
# that if this method is removed, the behavior of the proc will change so that
|
|
855
|
+
# it does not pass through keywords.
|
|
856
|
+
#
|
|
857
|
+
# module Mod
|
|
858
|
+
# foo = ->(meth, *args, &block) do
|
|
859
|
+
# send(:"do_#{meth}", *args, &block)
|
|
860
|
+
# end
|
|
861
|
+
# foo.ruby2_keywords if foo.respond_to?(:ruby2_keywords)
|
|
862
|
+
# end
|
|
863
|
+
#
|
|
864
|
+
def ruby2_keywords: () -> self
|
|
865
|
+
|
|
835
866
|
# <!--
|
|
836
867
|
# rdoc-file=proc.c
|
|
837
868
|
# - prc.source_location -> [String, Integer, Integer, Integer, Integer]
|