rbs 3.4.0.pre.1 → 3.4.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.
data/core/io/buffer.rbs CHANGED
@@ -1,26 +1,29 @@
1
1
  %a{annotate:rdoc:skip}
2
2
  class IO
3
3
  # <!-- rdoc-file=io_buffer.c -->
4
- # IO::Buffer is a low-level efficient buffer for input/output. There are three
5
- # ways of using buffer:
4
+ # IO::Buffer is a efficient zero-copy buffer for input/output. There are typical
5
+ # use cases:
6
6
  #
7
7
  # * Create an empty buffer with ::new, fill it with buffer using #copy or
8
- # #set_value, #set_string, get buffer with #get_string;
8
+ # #set_value, #set_string, get buffer with #get_string or write it directly
9
+ # to some file with #write.
9
10
  # * Create a buffer mapped to some string with ::for, then it could be used
10
11
  # both for reading with #get_string or #get_value, and writing (writing will
11
- # change the source string, too);
12
+ # change the source string, too).
12
13
  # * Create a buffer mapped to some file with ::map, then it could be used for
13
14
  # reading and writing the underlying file.
15
+ # * Create a string of a fixed size with ::string, then #read into it, or
16
+ # modify it using #set_value.
14
17
  #
15
18
  #
16
19
  # Interaction with string and file memory is performed by efficient low-level C
17
20
  # mechanisms like `memcpy`.
18
21
  #
19
22
  # The class is meant to be an utility for implementing more high-level
20
- # mechanisms like Fiber::SchedulerInterface#io_read and
21
- # Fiber::SchedulerInterface#io_write.
23
+ # mechanisms like Fiber::Scheduler#io_read and Fiber::Scheduler#io_write and
24
+ # parsing binary protocols.
22
25
  #
23
- # **Examples of usage:**
26
+ # ## Examples of Usage
24
27
  #
25
28
  # Empty buffer:
26
29
  #
@@ -81,7 +84,9 @@ class IO
81
84
  # File.read('test.txt')
82
85
  # # => "t--- buffer"
83
86
  #
84
- # **The class is experimental and the interface is subject to change.**
87
+ # **The class is experimental and the interface is subject to change, this is
88
+ # especially true of file mappings which may be removed entirely in the
89
+ # future.**
85
90
  #
86
91
  class Buffer
87
92
  include Comparable
@@ -91,10 +96,11 @@ class IO
91
96
  # - IO::Buffer.for(string) -> readonly io_buffer
92
97
  # - IO::Buffer.for(string) {|io_buffer| ... read/write io_buffer ...}
93
98
  # -->
94
- # Creates a IO::Buffer from the given string's memory. Without a block a frozen
95
- # internal copy of the string is created efficiently and used as the buffer
96
- # source. When a block is provided, the buffer is associated directly with the
97
- # string's internal buffer and updating the buffer will update the string.
99
+ # Creates a zero-copy IO::Buffer from the given string's memory. Without a block
100
+ # a frozen internal copy of the string is created efficiently and used as the
101
+ # buffer source. When a block is provided, the buffer is associated directly
102
+ # with the string's internal buffer and updating the buffer will update the
103
+ # string.
98
104
  #
99
105
  # Until #free is invoked on the buffer, either explicitly or via the garbage
100
106
  # collector, the source string will be locked and cannot be modified.
@@ -136,8 +142,6 @@ class IO
136
142
  # mapping, you need to open a file in read-write mode, and explicitly pass
137
143
  # `flags` argument without IO::Buffer::IMMUTABLE.
138
144
  #
139
- # Example:
140
- #
141
145
  # File.write('test.txt', 'test')
142
146
  #
143
147
  # buffer = IO::Buffer.map(File.open('test.txt'), nil, 0, IO::Buffer::READONLY)
@@ -169,9 +173,9 @@ class IO
169
173
  # rdoc-file=io_buffer.c
170
174
  # - IO::Buffer.string(length) {|io_buffer| ... read/write io_buffer ...} -> string
171
175
  # -->
172
- # Creates a new string of the given length and yields a IO::Buffer instance to
173
- # the block which uses the string as a source. The block is expected to write to
174
- # the buffer and the string will be returned.
176
+ # Creates a new string of the given length and yields a zero-copy IO::Buffer
177
+ # instance to the block which uses the string as a source. The block is expected
178
+ # to write to the buffer and the string will be returned.
175
179
  #
176
180
  # IO::Buffer.string(4) do |buffer|
177
181
  # buffer.set_string("Ruby")
@@ -316,8 +320,6 @@ class IO
316
320
  #
317
321
  # You can resize a freed buffer to re-allocate it.
318
322
  #
319
- # Example:
320
- #
321
323
  # buffer = IO::Buffer.for('test')
322
324
  # buffer.free
323
325
  # # => #<IO::Buffer 0x0000000000000000+0 NULL>
@@ -381,8 +383,6 @@ class IO
381
383
  # in the buffer. For example, a `:u32` buffer type is a 32-bit unsigned integer
382
384
  # in little-endian format.
383
385
  #
384
- # Example:
385
- #
386
386
  # string = [1.5].pack('f')
387
387
  # # => "\x00\x00\xC0?"
388
388
  # IO::Buffer.for(string).get_value(:f32, 0)
@@ -400,15 +400,35 @@ class IO
400
400
 
401
401
  # <!--
402
402
  # rdoc-file=io_buffer.c
403
- # - hexdump()
403
+ # - hexdump([offset, [length, [width]]]) -> string
404
404
  # -->
405
+ # Returns a human-readable string representation of the buffer. The exact format
406
+ # is subject to change.
407
+ #
408
+ # buffer = IO::Buffer.for("Hello World")
409
+ # puts buffer.hexdump
410
+ # # 0x00000000 48 65 6c 6c 6f 20 57 6f 72 6c 64 Hello World
411
+ #
412
+ # As buffers are usually fairly big, you may want to limit the output by
413
+ # specifying the offset and length:
414
+ #
415
+ # puts buffer.hexdump(6, 5)
416
+ # # 0x00000006 57 6f 72 6c 64 World
405
417
  #
406
418
  def hexdump: () -> String
407
419
 
408
420
  # <!--
409
421
  # rdoc-file=io_buffer.c
410
- # - inspect()
422
+ # - inspect -> string
411
423
  # -->
424
+ # Inspect the buffer and report useful information about it's internal state.
425
+ # Only a limited portion of the buffer will be displayed in a hexdump style
426
+ # format.
427
+ #
428
+ # buffer = IO::Buffer.for("Hello World")
429
+ # puts buffer.inspect
430
+ # # #<IO::Buffer 0x000000010198ccd8+11 EXTERNAL READONLY SLICE>
431
+ # # 0x00000000 48 65 6c 6c 6f 20 57 6f 72 6c 64 Hello World
412
432
  #
413
433
  def inspect: () -> String
414
434
 
@@ -445,8 +465,6 @@ class IO
445
465
  # system calls. You can only share a buffer between threads with appropriate
446
466
  # synchronisation techniques.
447
467
  #
448
- # Example:
449
- #
450
468
  # buffer = IO::Buffer.new(4)
451
469
  # buffer.locked? #=> false
452
470
  #
@@ -476,8 +494,6 @@ class IO
476
494
  # Locking is not thread safe, but is a semantic used to ensure buffers don't
477
495
  # move while being used by a system call.
478
496
  #
479
- # Example:
480
- #
481
497
  # buffer.locked do
482
498
  # buffer.write(io) # theoretical system call interface
483
499
  # end
@@ -503,7 +519,16 @@ class IO
503
519
  # rdoc-file=io_buffer.c
504
520
  # - null? -> true or false
505
521
  # -->
506
- # If the buffer was freed with #free or was never allocated in the first place.
522
+ # If the buffer was freed with #free, transferred with #transfer, or was never
523
+ # allocated in the first place.
524
+ #
525
+ # buffer = IO::Buffer.new(0)
526
+ # buffer.null? #=> true
527
+ #
528
+ # buffer = IO::Buffer.new(4)
529
+ # buffer.null? #=> false
530
+ # buffer.free
531
+ # buffer.null? #=> true
507
532
  #
508
533
  def null?: () -> bool
509
534
 
@@ -523,8 +548,6 @@ class IO
523
548
  # If `offset` is not given, it defaults to zero, i.e. the beginning of the
524
549
  # buffer.
525
550
  #
526
- # Example:
527
- #
528
551
  # IO::Buffer.for('test') do |buffer|
529
552
  # p buffer
530
553
  # # =>
@@ -561,8 +584,6 @@ class IO
561
584
  # If the `from` position is beyond the end of the file, the gap will be filled
562
585
  # with null (0 value) bytes.
563
586
  #
564
- # Example:
565
- #
566
587
  # out = File.open('output.txt', File::RDWR) # open for read/write, no truncation
567
588
  # IO::Buffer.for('1234567').pwrite(out, 2, 3, 1)
568
589
  #
@@ -586,8 +607,6 @@ class IO
586
607
  # If `offset` is not given, it defaults to zero, i.e. the beginning of the
587
608
  # buffer.
588
609
  #
589
- # Example:
590
- #
591
610
  # IO::Buffer.for('test') do |buffer|
592
611
  # p buffer
593
612
  # # =>
@@ -636,8 +655,8 @@ class IO
636
655
  # rdoc-file=io_buffer.c
637
656
  # - set_string(string, [offset, [length, [source_offset]]]) -> size
638
657
  # -->
639
- # Efficiently copy buffer from a source String into the buffer, at `offset`
640
- # using `memcpy`.
658
+ # Efficiently copy from a source String into the buffer, at `offset` using
659
+ # `memcpy`.
641
660
  #
642
661
  # buf = IO::Buffer.new(8)
643
662
  # # =>
@@ -721,8 +740,6 @@ class IO
721
740
  # Raises RuntimeError if the `offset+length` is out of the current buffer's
722
741
  # bounds.
723
742
  #
724
- # Example:
725
- #
726
743
  # string = 'test'
727
744
  # buffer = IO::Buffer.for(string)
728
745
  #
@@ -776,9 +793,8 @@ class IO
776
793
  # rdoc-file=io_buffer.c
777
794
  # - transfer -> new_io_buffer
778
795
  # -->
779
- # Transfers ownership to a new buffer, deallocating the current one.
780
- #
781
- # Example:
796
+ # Transfers ownership of the underlying memory to a new buffer, causing the
797
+ # current buffer to become uninitialized.
782
798
  #
783
799
  # buffer = IO::Buffer.new('test')
784
800
  # other = buffer.transfer
@@ -800,8 +816,8 @@ class IO
800
816
  # -->
801
817
  # Returns whether the buffer buffer is accessible.
802
818
  #
803
- # A buffer becomes invalid if it is a slice of another buffer which has been
804
- # freed.
819
+ # A buffer becomes invalid if it is a slice of another buffer (or string) which
820
+ # has been freed or re-allocated at a different address.
805
821
  #
806
822
  def valid?: () -> bool
807
823
 
@@ -820,8 +836,6 @@ class IO
820
836
  # If `offset` is not given, it defaults to zero, i.e. the beginning of the
821
837
  # buffer.
822
838
  #
823
- # Example:
824
- #
825
839
  # out = File.open('output.txt', 'wb')
826
840
  # IO::Buffer.for('1234567').write(out, 3)
827
841
  #
@@ -842,8 +856,6 @@ class IO
842
856
  # Unix, `VirtualAlloc` on Windows). The behavior can be forced by passing
843
857
  # IO::Buffer::MAPPED as a second parameter.
844
858
  #
845
- # Examples
846
- #
847
859
  # buffer = IO::Buffer.new(4)
848
860
  # # =>
849
861
  # # #<IO::Buffer 0x000055b34497ea10+4 INTERNAL>
@@ -859,42 +871,109 @@ class IO
859
871
  #
860
872
  def initialize: (?Integer size, ?Integer flags) -> void
861
873
 
874
+ # <!-- rdoc-file=io_buffer.c -->
875
+ # Refers to big endian byte order, where the most significant byte is stored
876
+ # first. See #get_value for more details.
877
+ #
862
878
  BIG_ENDIAN: Integer
863
879
 
880
+ # <!-- rdoc-file=io_buffer.c -->
881
+ # The default buffer size, typically a (small) multiple of the PAGE_SIZE. Can be
882
+ # explicitly specified by setting the RUBY_IO_BUFFER_DEFAULT_SIZE environment
883
+ # variable.
884
+ #
864
885
  DEFAULT_SIZE: Integer
865
886
 
887
+ # <!-- rdoc-file=io_buffer.c -->
888
+ # Indicates that the memory in the buffer is owned by someone else. See
889
+ # #external? for more details.
890
+ #
866
891
  EXTERNAL: Integer
867
892
 
893
+ # <!-- rdoc-file=io_buffer.c -->
894
+ # Refers to the byte order of the host machine. See #get_value for more details.
895
+ #
868
896
  HOST_ENDIAN: Integer
869
897
 
898
+ # <!-- rdoc-file=io_buffer.c -->
899
+ # Indicates that the memory in the buffer is owned by the buffer. See #internal?
900
+ # for more details.
901
+ #
870
902
  INTERNAL: Integer
871
903
 
904
+ # <!-- rdoc-file=io_buffer.c -->
905
+ # Refers to little endian byte order, where the least significant byte is stored
906
+ # first. See #get_value for more details.
907
+ #
872
908
  LITTLE_ENDIAN: Integer
873
909
 
910
+ # <!-- rdoc-file=io_buffer.c -->
911
+ # Indicates that the memory in the buffer is locked and cannot be resized or
912
+ # freed. See #locked? and #locked for more details.
913
+ #
874
914
  LOCKED: Integer
875
915
 
916
+ # <!-- rdoc-file=io_buffer.c -->
917
+ # Indicates that the memory in the buffer is mapped by the operating system. See
918
+ # #mapped? for more details.
919
+ #
876
920
  MAPPED: Integer
877
921
 
922
+ # <!-- rdoc-file=io_buffer.c -->
923
+ # Refers to network byte order, which is the same as big endian. See #get_value
924
+ # for more details.
925
+ #
878
926
  NETWORK_ENDIAN: Integer
879
927
 
928
+ # <!-- rdoc-file=io_buffer.c -->
929
+ # The operating system page size. Used for efficient page-aligned memory
930
+ # allocations.
931
+ #
880
932
  PAGE_SIZE: Integer
881
933
 
934
+ # <!-- rdoc-file=io_buffer.c -->
935
+ # Indicates that the memory in the buffer is mapped privately and changes won't
936
+ # be replicated to the underlying file. See #private? for more details.
937
+ #
882
938
  PRIVATE: Integer
883
939
 
940
+ # <!-- rdoc-file=io_buffer.c -->
941
+ # Indicates that the memory in the buffer is read only, and attempts to modify
942
+ # it will fail. See #readonly? for more details.
943
+ #
884
944
  READONLY: Integer
885
945
 
946
+ # <!-- rdoc-file=io_buffer.c -->
947
+ # Raised when an operation would resize or re-allocate a locked buffer.
948
+ #
886
949
  class LockedError < RuntimeError
887
950
  end
888
951
 
952
+ # <!-- rdoc-file=io_buffer.c -->
953
+ # Raised when the buffer cannot be allocated for some reason, or you try to use
954
+ # a buffer that's not allocated.
955
+ #
889
956
  class AllocationError < RuntimeError
890
957
  end
891
958
 
959
+ # <!-- rdoc-file=io_buffer.c -->
960
+ # Raised when you try to write to a read-only buffer, or resize an external
961
+ # buffer.
962
+ #
892
963
  class AccessError < RuntimeError
893
964
  end
894
965
 
966
+ # <!-- rdoc-file=io_buffer.c -->
967
+ # Raised if you try to access a buffer slice which no longer references a valid
968
+ # memory range of the underlying source.
969
+ #
895
970
  class InvalidatedError < RuntimeError
896
971
  end
897
972
 
973
+ # <!-- rdoc-file=io_buffer.c -->
974
+ # Raised if the mask given to a binary operation is invalid, e.g. zero length or
975
+ # overlaps the target buffer.
976
+ #
898
977
  class MaskError < ArgumentError
899
978
  end
900
979
  end
data/core/io.rbs CHANGED
@@ -1532,7 +1532,8 @@ class IO < Object
1532
1532
  #
1533
1533
  # Related: IO#write.
1534
1534
  #
1535
- def read: (?int? length, ?string outbuf) -> String?
1535
+ def read: (?nil, ?string outbuf) -> String
1536
+ | (int? length, ?string outbuf) -> String?
1536
1537
 
1537
1538
  # <!--
1538
1539
  # rdoc-file=io.rb
@@ -2533,10 +2534,19 @@ class IO < Object
2533
2534
  #
2534
2535
  # Raises exceptions that IO.pipe and Kernel.spawn raise.
2535
2536
  #
2536
- def self.popen: (string cmd, ?string | int mode, ?path: string?, ?external_encoding: String | Encoding | nil, ?internal_encoding: String | Encoding | nil, ?encoding: String | Encoding | nil, ?textmode: boolish, ?binmode: boolish, ?autoclose: boolish, ?mode: String, ?unsetenv_others: boolish, ?pgroup: true | Integer, ?umask: Integer, ?in: Kernel::redirect_fd, ?out: Kernel::redirect_fd, ?err: Kernel::redirect_fd, ?close_others: boolish, ?chdir: String) -> instance
2537
- | (Hash[string, string?] env, string cmd, ?string | int mode, ?path: string?, ?external_encoding: String | Encoding | nil, ?internal_encoding: String | Encoding | nil, ?encoding: String | Encoding | nil, ?textmode: boolish, ?binmode: boolish, ?autoclose: boolish, ?mode: String, ?unsetenv_others: boolish, ?pgroup: true | Integer, ?umask: Integer, ?in: Kernel::redirect_fd, ?out: Kernel::redirect_fd, ?err: Kernel::redirect_fd, ?close_others: boolish, ?chdir: String) -> instance
2538
- | [X] (string cmd, ?string | int mode, ?path: string?, ?external_encoding: String | Encoding | nil, ?internal_encoding: String | Encoding | nil, ?encoding: String | Encoding | nil, ?textmode: boolish, ?binmode: boolish, ?autoclose: boolish, ?mode: String, ?unsetenv_others: boolish, ?pgroup: true | Integer, ?umask: Integer, ?in: Kernel::redirect_fd, ?out: Kernel::redirect_fd, ?err: Kernel::redirect_fd, ?close_others: boolish, ?chdir: String) { (instance) -> X } -> X
2539
- | [X] (Hash[string, string?] env, string cmd, ?string | int mode, ?path: string?, ?external_encoding: String | Encoding | nil, ?internal_encoding: String | Encoding | nil, ?encoding: String | Encoding | nil, ?textmode: boolish, ?binmode: boolish, ?autoclose: boolish, ?mode: String, ?unsetenv_others: boolish, ?pgroup: true | Integer, ?umask: Integer, ?in: Kernel::redirect_fd, ?out: Kernel::redirect_fd, ?err: Kernel::redirect_fd, ?close_others: boolish, ?chdir: String) { (instance) -> X } -> X
2537
+ def self.popen: (string | cmd_array cmd, ?string | int mode, ?path: string?, ?external_encoding: String | Encoding | nil, ?internal_encoding: String | Encoding | nil, ?encoding: String | Encoding | nil, ?textmode: boolish, ?binmode: boolish, ?autoclose: boolish, ?mode: String, ?unsetenv_others: boolish, ?pgroup: true | Integer, ?umask: Integer, ?in: Kernel::redirect_fd, ?out: Kernel::redirect_fd, ?err: Kernel::redirect_fd, ?close_others: boolish, ?chdir: String) -> instance
2538
+ | (Hash[string, string?] env, string | cmd_array cmd, ?string | int mode, ?path: string?, ?external_encoding: String | Encoding | nil, ?internal_encoding: String | Encoding | nil, ?encoding: String | Encoding | nil, ?textmode: boolish, ?binmode: boolish, ?autoclose: boolish, ?mode: String, ?unsetenv_others: boolish, ?pgroup: true | Integer, ?umask: Integer, ?in: Kernel::redirect_fd, ?out: Kernel::redirect_fd, ?err: Kernel::redirect_fd, ?close_others: boolish, ?chdir: String) -> instance
2539
+ | [X] (string | cmd_array cmd, ?string | int mode, ?path: string?, ?external_encoding: String | Encoding | nil, ?internal_encoding: String | Encoding | nil, ?encoding: String | Encoding | nil, ?textmode: boolish, ?binmode: boolish, ?autoclose: boolish, ?mode: String, ?unsetenv_others: boolish, ?pgroup: true | Integer, ?umask: Integer, ?in: Kernel::redirect_fd, ?out: Kernel::redirect_fd, ?err: Kernel::redirect_fd, ?close_others: boolish, ?chdir: String) { (instance) -> X } -> X
2540
+ | [X] (Hash[string, string?] env, string | cmd_array cmd, ?string | int mode, ?path: string?, ?external_encoding: String | Encoding | nil, ?internal_encoding: String | Encoding | nil, ?encoding: String | Encoding | nil, ?textmode: boolish, ?binmode: boolish, ?autoclose: boolish, ?mode: String, ?unsetenv_others: boolish, ?pgroup: true | Integer, ?umask: Integer, ?in: Kernel::redirect_fd, ?out: Kernel::redirect_fd, ?err: Kernel::redirect_fd, ?close_others: boolish, ?chdir: String) { (instance) -> X } -> X
2541
+
2542
+ # The command can be given as:
2543
+ #
2544
+ # * Array of string `["ruby", "-v"]`, or
2545
+ # * Array of string with the first element of array `[["ruby", "RUBY"], "-v"]`
2546
+ #
2547
+ # But RBS cannot define such a type. So this is simply a union of `string` or `[String, String]`.
2548
+ #
2549
+ type cmd_array = array[string | [String, String]]
2540
2550
 
2541
2551
  # <!--
2542
2552
  # rdoc-file=io.c
@@ -3368,10 +3378,19 @@ IO::TRUNC: Integer
3368
3378
 
3369
3379
  IO::WRONLY: Integer
3370
3380
 
3381
+ # <!-- rdoc-file=io.c -->
3382
+ # Readable event mask for IO#wait.
3383
+ #
3371
3384
  IO::READABLE: Integer
3372
3385
 
3386
+ # <!-- rdoc-file=io.c -->
3387
+ # Writable event mask for IO#wait.
3388
+ #
3373
3389
  IO::WRITABLE: Integer
3374
3390
 
3391
+ # <!-- rdoc-file=io.c -->
3392
+ # Priority event mask for IO#wait.
3393
+ #
3375
3394
  IO::PRIORITY: Integer
3376
3395
 
3377
3396
  # <!-- rdoc-file=io.c -->
data/core/kernel.rbs CHANGED
@@ -445,14 +445,14 @@ module Kernel : BasicObject
445
445
 
446
446
  # <!--
447
447
  # rdoc-file=complex.c
448
- # - Complex(abs, arg = 0, exception: true) -> complex or nil
448
+ # - Complex(real, imag = 0, exception: true) -> complex or nil
449
449
  # - Complex(s, exception: true) -> complex or nil
450
450
  # -->
451
451
  # Returns a new Complex object if the arguments are valid; otherwise raises an
452
452
  # exception if `exception` is `true`; otherwise returns `nil`.
453
453
  #
454
- # With Numeric argument `abs`, returns `Complex.rect(abs, arg)` if the arguments
455
- # are valid.
454
+ # With Numeric arguments `real` and `imag`, returns `Complex.rect(real, imag)`
455
+ # if the arguments are valid.
456
456
  #
457
457
  # With string argument `s`, returns a new Complex object if the argument is
458
458
  # valid; the string may have:
data/core/match_data.rbs CHANGED
@@ -81,6 +81,16 @@ class MatchData
81
81
  # m['foo'] # => "h"
82
82
  # m[:bar] # => "ge"
83
83
  #
84
+ # If multiple captures have the same name, returns the last matched substring.
85
+ #
86
+ # m = /(?<foo>.)(?<foo>.+)/.match("hoge")
87
+ # # => #<MatchData "hoge" foo:"h" foo:"oge">
88
+ # m[:foo] #=> "oge"
89
+ #
90
+ # m = /\W(?<foo>.+)|\w(?<foo>.+)|(?<foo>.+)/.match("hoge")
91
+ # #<MatchData "hoge" foo:nil foo:"oge" foo:nil>
92
+ # m[:foo] #=> "oge"
93
+ #
84
94
  def []: (capture backref, ?nil) -> String?
85
95
  | (int start, int length) -> Array[String?]
86
96
  | (range[int?] range) -> Array[String?]
@@ -278,24 +288,24 @@ class MatchData
278
288
  # rdoc-file=re.c
279
289
  # - named_captures(symbolize_names: false) -> hash
280
290
  # -->
281
- # Returns a hash of the named captures;
282
- # each key is a capture name; each value is its captured string or +nil+:
291
+ # Returns a hash of the named captures; each key is a capture name; each value
292
+ # is its captured string or `nil`:
283
293
  #
284
- # m = /(?<foo>.)(.)(?<bar>.+)/.match("hoge")
285
- # # => #<MatchData "hoge" foo:"h" bar:"ge">
286
- # m.named_captures # => {"foo"=>"h", "bar"=>"ge"}
294
+ # m = /(?<foo>.)(.)(?<bar>.+)/.match("hoge")
295
+ # # => #<MatchData "hoge" foo:"h" bar:"ge">
296
+ # m.named_captures # => {"foo"=>"h", "bar"=>"ge"}
287
297
  #
288
- # m = /(?<a>.)(?<b>.)/.match("01")
289
- # # => #<MatchData "01" a:"0" b:"1">
290
- # m.named_captures #=> {"a" => "0", "b" => "1"}
298
+ # m = /(?<a>.)(?<b>.)/.match("01")
299
+ # # => #<MatchData "01" a:"0" b:"1">
300
+ # m.named_captures #=> {"a" => "0", "b" => "1"}
291
301
  #
292
- # m = /(?<a>.)(?<b>.)?/.match("0")
293
- # # => #<MatchData "0" a:"0" b:nil>
294
- # m.named_captures #=> {"a" => "0", "b" => nil}
302
+ # m = /(?<a>.)(?<b>.)?/.match("0")
303
+ # # => #<MatchData "0" a:"0" b:nil>
304
+ # m.named_captures #=> {"a" => "0", "b" => nil}
295
305
  #
296
- # m = /(?<a>.)(?<a>.)/.match("01")
297
- # # => #<MatchData "01" a:"0" a:"1">
298
- # m.named_captures #=> {"a" => "1"}
306
+ # m = /(?<a>.)(?<a>.)/.match("01")
307
+ # # => #<MatchData "01" a:"0" a:"1">
308
+ # m.named_captures #=> {"a" => "1"}
299
309
  #
300
310
  # If keyword argument `symbolize_names` is given a true value, the keys in the
301
311
  # resulting hash are Symbols:
data/core/module.rbs CHANGED
@@ -1532,21 +1532,21 @@ class Module < Object
1532
1532
  # - mod.set_temporary_name(string) -> self
1533
1533
  # - mod.set_temporary_name(nil) -> self
1534
1534
  # -->
1535
- # Sets the temporary name of the module `mod`. This name is used as a prefix for
1536
- # the names of constants declared in `mod`. If the module is assigned a
1537
- # permanent name, the temporary name is discarded.
1535
+ # Sets the temporary name of the module. This name is reflected in introspection
1536
+ # of the module and the values that are related to it, such as instances,
1537
+ # constants, and methods.
1538
1538
  #
1539
- # After a permanent name is assigned, a temporary name can no longer be set, and
1540
- # this method raises a RuntimeError.
1539
+ # The name should be `nil` or non-empty string that is not a valid constant name
1540
+ # (to avoid confusing between permanent and temporary names).
1541
1541
  #
1542
- # If the name given is not a string or is a zero length string, this method
1543
- # raises an ArgumentError.
1542
+ # The method can be useful to distinguish dynamically generated classes and
1543
+ # modules without assigning them to constants.
1544
1544
  #
1545
- # The temporary name must not be a valid constant name, to avoid confusion with
1546
- # actual constants. If you attempt to set a temporary name that is a a valid
1547
- # constant name, this method raises an ArgumentError.
1545
+ # If the module is given a permanent name by assigning it to a constant, the
1546
+ # temporary name is discarded. A temporary name can't be assigned to modules
1547
+ # that have a permanent name.
1548
1548
  #
1549
- # If the given name is `nil`, the module becomes anonymous.
1549
+ # If the given name is `nil`, the module becomes anonymous again.
1550
1550
  #
1551
1551
  # Example:
1552
1552
  #
@@ -1559,15 +1559,20 @@ class Module < Object
1559
1559
  # m.set_temporary_name(nil) # => #<Module:0x0000000102c68f38>
1560
1560
  # m.name #=> nil
1561
1561
  #
1562
- # n = Module.new
1563
- # n.set_temporary_name("fake_name")
1562
+ # c = Class.new
1563
+ # c.set_temporary_name("MyClass(with description)")
1564
1564
  #
1565
- # n::M = m
1566
- # n::M.name #=> "fake_name::M"
1567
- # N = n
1565
+ # c.new # => #<MyClass(with description):0x0....>
1568
1566
  #
1569
- # N.name #=> "N"
1570
- # N::M.name #=> "N::M"
1567
+ # c::M = m
1568
+ # c::M.name #=> "MyClass(with description)::M"
1569
+ #
1570
+ # # Assigning to a constant replaces the name with a permanent one
1571
+ # C = c
1572
+ #
1573
+ # C.name #=> "C"
1574
+ # C::M.name #=> "C::M"
1575
+ # c.new # => #<C:0x0....>
1571
1576
  #
1572
1577
  def set_temporary_name: (string?) -> self
1573
1578
 
data/core/numeric.rbs CHANGED
@@ -248,24 +248,22 @@ class Numeric
248
248
 
249
249
  # <!--
250
250
  # rdoc-file=complex.c
251
- # - num.abs2 -> real
251
+ # - abs2 -> real
252
252
  # -->
253
- # Returns square of self.
253
+ # Returns the square of `self`.
254
254
  #
255
255
  def abs2: () -> Numeric
256
256
 
257
257
  # <!-- rdoc-file=complex.c -->
258
- # Returns 0 if the value is positive, pi otherwise.
258
+ # Returns zero if `self` is positive, Math::PI otherwise.
259
259
  #
260
260
  def angle: () -> Numeric
261
261
 
262
262
  # <!--
263
263
  # rdoc-file=complex.c
264
- # - num.arg -> 0 or float
265
- # - num.angle -> 0 or float
266
- # - num.phase -> 0 or float
264
+ # - arg -> 0 or Math::PI
267
265
  # -->
268
- # Returns 0 if the value is positive, pi otherwise.
266
+ # Returns zero if `self` is positive, Math::PI otherwise.
269
267
  #
270
268
  alias arg angle
271
269
 
@@ -559,15 +557,15 @@ class Numeric
559
557
  def numerator: () -> Numeric
560
558
 
561
559
  # <!-- rdoc-file=complex.c -->
562
- # Returns 0 if the value is positive, pi otherwise.
560
+ # Returns zero if `self` is positive, Math::PI otherwise.
563
561
  #
564
562
  alias phase angle
565
563
 
566
564
  # <!--
567
565
  # rdoc-file=complex.c
568
- # - num.polar -> array
566
+ # - polar -> array
569
567
  # -->
570
- # Returns an array; [num.abs, num.arg].
568
+ # Returns array `[self.abs, self.arg]`.
571
569
  #
572
570
  def polar: () -> [ Numeric, Numeric ]
573
571
 
@@ -605,16 +603,15 @@ class Numeric
605
603
  def real?: () -> bool
606
604
 
607
605
  # <!-- rdoc-file=complex.c -->
608
- # Returns an array; [num, 0].
606
+ # Returns array `[self, 0]`.
609
607
  #
610
608
  def rect: () -> [ Numeric, Numeric ]
611
609
 
612
610
  # <!--
613
611
  # rdoc-file=complex.c
614
- # - num.rect -> array
615
- # - num.rectangular -> array
612
+ # - rect -> array
616
613
  # -->
617
- # Returns an array; [num, 0].
614
+ # Returns array `[self, 0]`.
618
615
  #
619
616
  alias rectangular rect
620
617
 
@@ -763,9 +760,9 @@ class Numeric
763
760
 
764
761
  # <!--
765
762
  # rdoc-file=complex.c
766
- # - num.to_c -> complex
763
+ # - to_c -> complex
767
764
  # -->
768
- # Returns the value as a complex.
765
+ # Returns `self` as a Complex object.
769
766
  #
770
767
  def to_c: () -> Complex
771
768