rbs 0.13.1 → 0.14.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.
Files changed (70) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ruby.yml +1 -1
  3. data/.gitignore +0 -1
  4. data/CHANGELOG.md +7 -2
  5. data/Gemfile +3 -0
  6. data/README.md +8 -2
  7. data/Steepfile +1 -0
  8. data/bin/annotate-with-rdoc +1 -1
  9. data/bin/setup +0 -2
  10. data/docs/CONTRIBUTING.md +1 -0
  11. data/goodcheck.yml +22 -5
  12. data/lib/rbs/ast/comment.rb +1 -1
  13. data/lib/rbs/definition_builder.rb +4 -5
  14. data/lib/rbs/environment.rb +1 -1
  15. data/lib/rbs/namespace.rb +1 -1
  16. data/lib/rbs/parser.rb +3146 -0
  17. data/lib/rbs/parser.y +7 -2
  18. data/lib/rbs/test/setup_helper.rb +4 -4
  19. data/lib/rbs/test/type_check.rb +2 -2
  20. data/lib/rbs/type_name.rb +1 -1
  21. data/lib/rbs/variance_calculator.rb +1 -1
  22. data/lib/rbs/version.rb +1 -1
  23. data/lib/rbs/writer.rb +1 -1
  24. data/sig/constant.rbs +2 -2
  25. data/sig/constant_table.rbs +10 -10
  26. data/sig/declarations.rbs +1 -1
  27. data/sig/definition.rbs +1 -1
  28. data/sig/namespace.rbs +3 -3
  29. data/sig/parser.rbs +25 -0
  30. data/sig/substitution.rbs +3 -3
  31. data/sig/typename.rbs +1 -1
  32. data/sig/types.rbs +1 -1
  33. data/sig/writer.rbs +15 -15
  34. data/stdlib/benchmark/benchmark.rbs +2 -2
  35. data/stdlib/builtin/basic_object.rbs +54 -54
  36. data/stdlib/builtin/binding.rbs +42 -42
  37. data/stdlib/builtin/class.rbs +33 -33
  38. data/stdlib/builtin/complex.rbs +90 -90
  39. data/stdlib/builtin/encoding.rbs +33 -33
  40. data/stdlib/builtin/enumerable.rbs +32 -32
  41. data/stdlib/builtin/enumerator.rbs +35 -35
  42. data/stdlib/builtin/errors.rbs +1 -1
  43. data/stdlib/builtin/exception.rbs +50 -50
  44. data/stdlib/builtin/false_class.rbs +6 -6
  45. data/stdlib/builtin/fiber.rbs +14 -14
  46. data/stdlib/builtin/fiber_error.rbs +1 -1
  47. data/stdlib/builtin/float.rbs +161 -161
  48. data/stdlib/builtin/gc.rbs +1 -1
  49. data/stdlib/builtin/io.rbs +83 -83
  50. data/stdlib/builtin/kernel.rbs +69 -69
  51. data/stdlib/builtin/match_data.rbs +1 -1
  52. data/stdlib/builtin/method.rbs +19 -19
  53. data/stdlib/builtin/nil_class.rbs +20 -20
  54. data/stdlib/builtin/numeric.rbs +101 -101
  55. data/stdlib/builtin/object.rbs +172 -172
  56. data/stdlib/builtin/proc.rbs +91 -91
  57. data/stdlib/builtin/range.rbs +2 -4
  58. data/stdlib/builtin/rational.rbs +83 -83
  59. data/stdlib/builtin/signal.rbs +7 -7
  60. data/stdlib/builtin/string.rbs +4 -4
  61. data/stdlib/builtin/string_io.rbs +1 -1
  62. data/stdlib/builtin/thread.rbs +185 -185
  63. data/stdlib/builtin/thread_group.rbs +2 -2
  64. data/stdlib/builtin/true_class.rbs +9 -9
  65. data/stdlib/builtin/warning.rbs +1 -1
  66. data/stdlib/date/date.rbs +2 -2
  67. data/stdlib/find/find.rbs +10 -10
  68. data/stdlib/pathname/pathname.rbs +1 -1
  69. data/stdlib/tmpdir/tmpdir.rbs +12 -12
  70. metadata +3 -2
@@ -221,7 +221,7 @@ module GC::Profiler
221
221
  # `:HEAP_LIVE_OBJECTS`
222
222
  # `:HEAP_FREE_OBJECTS`
223
223
  # `:HAVE_FINALIZE`
224
- # :
224
+ # :
225
225
  #
226
226
  def self.raw_data: () -> ::Array[::Hash[Symbol, untyped]]
227
227
 
@@ -2,7 +2,7 @@
2
2
  # output in Ruby. An I/O stream may be *duplexed* (that is,
3
3
  # bidirectional), and so may use more than one native operating system
4
4
  # stream.
5
- #
5
+ #
6
6
  # Many of the examples in this section use the
7
7
  # [File](https://ruby-doc.org/core-2.6.3/File.html) class, the only
8
8
  # standard subclass of [IO](IO). The two classes are
@@ -10,47 +10,47 @@
10
10
  # [File](https://ruby-doc.org/core-2.6.3/File.html) class, the Socket
11
11
  # library subclasses from [IO](IO) (such as TCPSocket
12
12
  # or UDPSocket).
13
- #
13
+ #
14
14
  # The
15
15
  # [Kernel\#open](https://ruby-doc.org/core-2.6.3/Kernel.html#method-i-open)
16
16
  # method can create an [IO](IO) (or
17
17
  # [File](https://ruby-doc.org/core-2.6.3/File.html) ) object for these
18
18
  # types of arguments:
19
- #
19
+ #
20
20
  # - A plain string represents a filename suitable for the underlying
21
21
  # operating system.
22
- #
22
+ #
23
23
  # - A string starting with `"|"` indicates a subprocess. The remainder
24
24
  # of the string following the `"|"` is invoked as a process with
25
25
  # appropriate input/output channels connected to it.
26
- #
26
+ #
27
27
  # - A string equal to `"|-"` will create another Ruby instance as a
28
28
  # subprocess.
29
- #
29
+ #
30
30
  # The [IO](IO) may be opened with different file modes
31
31
  # (read-only, write-only) and encodings for proper conversion. See
32
32
  # [::new](IO#method-c-new) for these options. See
33
33
  # [Kernel\#open](https://ruby-doc.org/core-2.6.3/Kernel.html#method-i-open)
34
34
  # for details of the various command formats described above.
35
- #
35
+ #
36
36
  # [::popen](IO#method-c-popen), the Open3 library, or
37
37
  # Process\#spawn may also be used to communicate with subprocesses through
38
38
  # an [IO](IO).
39
- #
39
+ #
40
40
  # Ruby will convert pathnames between different operating system
41
41
  # conventions if possible. For instance, on a Windows system the filename
42
42
  # `"/gumby/ruby/test.rb"` will be opened as `"\gumby\ruby\test.rb"` . When
43
43
  # specifying a Windows-style filename in a Ruby string, remember to escape
44
44
  # the backslashes:
45
- #
45
+ #
46
46
  # ```ruby
47
47
  # "C:\\gumby\\ruby\\test.rb"
48
48
  # ```
49
- #
49
+ #
50
50
  # Our examples here will use the Unix-style forward slashes;
51
51
  # File::ALT\_SEPARATOR can be used to get the platform-specific separator
52
52
  # character.
53
- #
53
+ #
54
54
  # The global constant [ARGF](https://ruby-doc.org/core-2.6.3/ARGF.html)
55
55
  # (also accessible as `$<` ) provides an IO-like stream which allows
56
56
  # access to all files mentioned on the command line (or STDIN if no files
@@ -59,44 +59,44 @@
59
59
  # and its alias
60
60
  # [ARGF\#filename](https://ruby-doc.org/core-2.6.3/ARGF.html#method-i-filename)
61
61
  # are provided to access the name of the file currently being read.
62
- #
63
- #
62
+ #
63
+ #
64
64
  # The io/console extension provides methods for interacting with the
65
65
  # console. The console can be accessed from IO.console or the standard
66
66
  # input/output/error [IO](IO) objects.
67
- #
67
+ #
68
68
  # Requiring io/console adds the following methods:
69
- #
69
+ #
70
70
  # - IO::console
71
- #
71
+ #
72
72
  # - IO\#raw
73
- #
73
+ #
74
74
  # - IO\#raw\!
75
- #
75
+ #
76
76
  # - IO\#cooked
77
- #
77
+ #
78
78
  # - IO\#cooked\!
79
- #
79
+ #
80
80
  # - IO\#getch
81
- #
81
+ #
82
82
  # - IO\#echo=
83
- #
83
+ #
84
84
  # - IO\#echo?
85
- #
85
+ #
86
86
  # - IO\#noecho
87
- #
87
+ #
88
88
  # - IO\#winsize
89
- #
89
+ #
90
90
  # - IO\#winsize=
91
- #
91
+ #
92
92
  # - IO\#iflush
93
- #
93
+ #
94
94
  # - IO\#ioflush
95
- #
95
+ #
96
96
  # - IO\#oflush
97
- #
97
+ #
98
98
  # Example:
99
- #
99
+ #
100
100
  # ```ruby
101
101
  # require 'io/console'
102
102
  # rows, columns = $stdout.winsize
@@ -119,11 +119,11 @@ class IO < Object
119
119
 
120
120
  # Puts *ios* into binary mode. Once a stream is in binary mode, it cannot
121
121
  # be reset to nonbinary mode.
122
- #
122
+ #
123
123
  # - newline conversion disabled
124
- #
124
+ #
125
125
  # - encoding conversion disabled
126
- #
126
+ #
127
127
  # - content is treated as ASCII-8BIT
128
128
  def binmode: () -> self
129
129
 
@@ -134,9 +134,9 @@ class IO < Object
134
134
  # stream is unavailable for any further data operations; an `IOError` is
135
135
  # raised if such an attempt is made. I/O streams are automatically closed
136
136
  # when they are claimed by the garbage collector.
137
- #
137
+ #
138
138
  # If *ios* is opened by `IO.popen`, `close` sets `$?` .
139
- #
139
+ #
140
140
  # Calling this method on closed [IO](IO.downloaded.ruby_doc) object is
141
141
  # just ignored since Ruby 2.3.
142
142
  def close: () -> NilClass
@@ -144,7 +144,7 @@ class IO < Object
144
144
  def close_on_exec=: (bool arg0) -> bool
145
145
 
146
146
  # Returns `true` if *ios* will be closed on exec.
147
- #
147
+ #
148
148
  # ```ruby
149
149
  # f = open("/dev/null")
150
150
  # f.close_on_exec? #=> false
@@ -158,18 +158,18 @@ class IO < Object
158
158
  # Closes the read end of a duplex I/O stream (i.e., one that contains both
159
159
  # a read and a write stream, such as a pipe). Will raise an `IOError` if
160
160
  # the stream is not duplexed.
161
- #
161
+ #
162
162
  # ```ruby
163
163
  # f = IO.popen("/bin/sh","r+")
164
164
  # f.close_read
165
165
  # f.readlines
166
166
  # ```
167
- #
167
+ #
168
168
  # *produces:*
169
- #
169
+ #
170
170
  # prog.rb:3:in `readlines': not opened for reading (IOError)
171
171
  # from prog.rb:3
172
- #
172
+ #
173
173
  # Calling this method on closed [IO](IO.downloaded.ruby_doc) object is
174
174
  # just ignored since Ruby 2.3.
175
175
  def close_read: () -> NilClass
@@ -177,26 +177,26 @@ class IO < Object
177
177
  # Closes the write end of a duplex I/O stream (i.e., one that contains
178
178
  # both a read and a write stream, such as a pipe). Will raise an `IOError`
179
179
  # if the stream is not duplexed.
180
- #
180
+ #
181
181
  # ```ruby
182
182
  # f = IO.popen("/bin/sh","r+")
183
183
  # f.close_write
184
184
  # f.print "nowhere"
185
185
  # ```
186
- #
186
+ #
187
187
  # *produces:*
188
- #
188
+ #
189
189
  # prog.rb:3:in `write': not opened for writing (IOError)
190
190
  # from prog.rb:3:in `print'
191
191
  # from prog.rb:3
192
- #
192
+ #
193
193
  # Calling this method on closed [IO](IO.downloaded.ruby_doc) object is
194
194
  # just ignored since Ruby 2.3.
195
195
  def close_write: () -> NilClass
196
196
 
197
197
  # Returns `true` if *ios* is completely closed (for duplex streams, both
198
198
  # reader and writer), `false` otherwise.
199
- #
199
+ #
200
200
  # ```ruby
201
201
  # f = File.new("testfile")
202
202
  # f.close #=> nil
@@ -224,29 +224,29 @@ class IO < Object
224
224
  # Returns true if *ios* is at end of file that means there are no more
225
225
  # data to read. The stream must be opened for reading or an `IOError` will
226
226
  # be raised.
227
- #
227
+ #
228
228
  # ```ruby
229
229
  # f = File.new("testfile")
230
230
  # dummy = f.readlines
231
231
  # f.eof #=> true
232
232
  # ```
233
- #
233
+ #
234
234
  # If *ios* is a stream such as pipe or socket, `IO#eof?` blocks until the
235
235
  # other end sends some data or closes it.
236
- #
236
+ #
237
237
  # ```ruby
238
238
  # r, w = IO.pipe
239
239
  # Thread.new { sleep 1; w.close }
240
240
  # r.eof? #=> true after 1 second blocking
241
- #
241
+ #
242
242
  # r, w = IO.pipe
243
243
  # Thread.new { sleep 1; w.puts "a" }
244
244
  # r.eof? #=> false after 1 second blocking
245
- #
245
+ #
246
246
  # r, w = IO.pipe
247
247
  # r.eof? # blocks forever
248
248
  # ```
249
- #
249
+ #
250
250
  # Note that `IO#eof?` reads data to the input byte buffer. So `IO#sysread`
251
251
  # may not behave as you intend with `IO#eof?`, unless you call
252
252
  # `IO#rewind` first (which is not available for some streams).
@@ -255,35 +255,35 @@ class IO < Object
255
255
  def fcntl: (Integer integer_cmd, String | Integer arg) -> Integer
256
256
 
257
257
  # Immediately writes all buffered data in *ios* to disk.
258
- #
258
+ #
259
259
  # If the underlying operating system does not support *fdatasync(2)* ,
260
260
  # `IO#fsync` is called instead (which might raise a `NotImplementedError`
261
261
  # ).
262
262
  def fdatasync: () -> Integer?
263
263
 
264
264
  # Returns an integer representing the numeric file descriptor for *ios* .
265
- #
265
+ #
266
266
  # ```ruby
267
267
  # $stdin.fileno #=> 0
268
268
  # $stdout.fileno #=> 1
269
269
  # ```
270
- #
271
- #
272
- #
270
+ #
271
+ #
272
+ #
273
273
  # Also aliased as: [to\_i](IO.downloaded.ruby_doc#method-i-to_i)
274
274
  def fileno: () -> Integer
275
275
 
276
276
  # Flushes any buffered data within *ios* to the underlying operating
277
277
  # system (note that this is Ruby internal buffering only; the OS may
278
278
  # buffer the data as well).
279
- #
279
+ #
280
280
  # ```ruby
281
281
  # $stdout.print "no newline"
282
282
  # $stdout.flush
283
283
  # ```
284
- #
284
+ #
285
285
  # *produces:*
286
- #
286
+ #
287
287
  # ```ruby
288
288
  # no newline
289
289
  # ```
@@ -293,14 +293,14 @@ class IO < Object
293
293
  # differs from using `IO#sync=` . The latter ensures that data is flushed
294
294
  # from Ruby’s buffers, but does not guarantee that the underlying
295
295
  # operating system actually writes it to disk.
296
- #
296
+ #
297
297
  # `NotImplementedError` is raised if the underlying operating system does
298
298
  # not support *fsync(2)* .
299
299
  def fsync: () -> Integer?
300
300
 
301
301
  # Gets the next 8-bit byte (0..255) from *ios* . Returns `nil` if called
302
302
  # at end of file.
303
- #
303
+ #
304
304
  # ```ruby
305
305
  # f = File.new("testfile")
306
306
  # f.getbyte #=> 84
@@ -310,7 +310,7 @@ class IO < Object
310
310
 
311
311
  # Reads a one-character string from *ios* . Returns `nil` if called at end
312
312
  # of file.
313
- #
313
+ #
314
314
  # ```ruby
315
315
  # f = File.new("testfile")
316
316
  # f.getc #=> "h"
@@ -334,7 +334,7 @@ class IO < Object
334
334
 
335
335
  # Returns `true` if *ios* is associated with a terminal device (tty),
336
336
  # `false` otherwise.
337
- #
337
+ #
338
338
  # ```ruby
339
339
  # File.new("testfile").isatty #=> false
340
340
  # File.new("/dev/tty").isatty #=> true
@@ -347,14 +347,14 @@ class IO < Object
347
347
  # number of newlines encountered. The two values will differ if
348
348
  # [gets](IO.downloaded.ruby_doc#method-i-gets) is called with a separator
349
349
  # other than newline.
350
- #
350
+ #
351
351
  # Methods that use `$/` like [each](IO.downloaded.ruby_doc#method-i-each)
352
352
  # , [lines](IO.downloaded.ruby_doc#method-i-lines) and
353
353
  # [readline](IO.downloaded.ruby_doc#method-i-readline) will also increment
354
354
  # `lineno` .
355
- #
355
+ #
356
356
  # See also the `$.` variable.
357
- #
357
+ #
358
358
  # ```ruby
359
359
  # f = File.new("testfile")
360
360
  # f.lineno #=> 0
@@ -369,7 +369,7 @@ class IO < Object
369
369
 
370
370
  # Returns the process ID of a child process associated with *ios* . This
371
371
  # will be set by `IO.popen` .
372
- #
372
+ #
373
373
  # ```ruby
374
374
  # pipe = IO.popen("-")
375
375
  # if pipe
@@ -378,15 +378,15 @@ class IO < Object
378
378
  # $stderr.puts "In child, pid is #{$$}"
379
379
  # end
380
380
  # ```
381
- #
381
+ #
382
382
  # *produces:*
383
- #
383
+ #
384
384
  # In child, pid is 26209
385
385
  # In parent, child pid is 26209
386
386
  def pid: () -> Integer
387
387
 
388
388
  # Returns the current offset (in bytes) of *ios* .
389
- #
389
+ #
390
390
  # ```ruby
391
391
  # f = File.new("testfile")
392
392
  # f.pos #=> 0
@@ -416,7 +416,7 @@ class IO < Object
416
416
 
417
417
  # Reads a one-character string from *ios* . Raises an `EOFError` on end of
418
418
  # file.
419
- #
419
+ #
420
420
  # ```ruby
421
421
  # f = File.new("testfile")
422
422
  # f.readchar #=> "h"
@@ -435,7 +435,7 @@ class IO < Object
435
435
  | (String other_IO_or_path, ?String mode_str) -> IO
436
436
 
437
437
  # Positions *ios* to the beginning of input, resetting `lineno` to zero.
438
- #
438
+ #
439
439
  # ```ruby
440
440
  # f = File.new("testfile")
441
441
  # f.readline #=> "This is line one\n"
@@ -443,7 +443,7 @@ class IO < Object
443
443
  # f.lineno #=> 0
444
444
  # f.readline #=> "This is line one\n"
445
445
  # ```
446
- #
446
+ #
447
447
  # Note that it cannot be used with streams such as pipes, ttys, and
448
448
  # sockets.
449
449
  def rewind: () -> Integer
@@ -454,7 +454,7 @@ class IO < Object
454
454
  | (?String | Encoding ext_or_ext_int_enc, ?String | Encoding int_enc) -> self
455
455
 
456
456
  # Returns status information for *ios* as an object of type `File::Stat` .
457
- #
457
+ #
458
458
  # ```ruby
459
459
  # f = File.new("testfile")
460
460
  # s = f.stat
@@ -467,7 +467,7 @@ class IO < Object
467
467
  # Returns the current “sync mode” of *ios* . When sync mode is true, all
468
468
  # output is immediately flushed to the underlying operating system and is
469
469
  # not buffered by Ruby internally. See also `IO#fsync` .
470
- #
470
+ #
471
471
  # ```ruby
472
472
  # f = File.new("testfile")
473
473
  # f.sync #=> false
@@ -483,7 +483,7 @@ class IO < Object
483
483
  def syswrite: (_ToS arg0) -> Integer
484
484
 
485
485
  # Returns the current offset (in bytes) of *ios* .
486
- #
486
+ #
487
487
  # ```ruby
488
488
  # f = File.new("testfile")
489
489
  # f.pos #=> 0
@@ -497,7 +497,7 @@ class IO < Object
497
497
 
498
498
  # Returns `true` if *ios* is associated with a terminal device (tty),
499
499
  # `false` otherwise.
500
- #
500
+ #
501
501
  # ```ruby
502
502
  # File.new("testfile").isatty #=> false
503
503
  # File.new("/dev/tty").isatty #=> true
@@ -547,29 +547,29 @@ class IO < Object
547
547
  # Returns true if *ios* is at end of file that means there are no more
548
548
  # data to read. The stream must be opened for reading or an `IOError` will
549
549
  # be raised.
550
- #
550
+ #
551
551
  # ```ruby
552
552
  # f = File.new("testfile")
553
553
  # dummy = f.readlines
554
554
  # f.eof #=> true
555
555
  # ```
556
- #
556
+ #
557
557
  # If *ios* is a stream such as pipe or socket, `IO#eof?` blocks until the
558
558
  # other end sends some data or closes it.
559
- #
559
+ #
560
560
  # ```ruby
561
561
  # r, w = IO.pipe
562
562
  # Thread.new { sleep 1; w.close }
563
563
  # r.eof? #=> true after 1 second blocking
564
- #
564
+ #
565
565
  # r, w = IO.pipe
566
566
  # Thread.new { sleep 1; w.puts "a" }
567
567
  # r.eof? #=> false after 1 second blocking
568
- #
568
+ #
569
569
  # r, w = IO.pipe
570
570
  # r.eof? # blocks forever
571
571
  # ```
572
- #
572
+ #
573
573
  # Note that `IO#eof?` reads data to the input byte buffer. So `IO#sysread`
574
574
  # may not behave as you intend with `IO#eof?`, unless you call
575
575
  # `IO#rewind` first (which is not available for some streams).