rbs 3.3.2 → 3.4.0.pre.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (128) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/comments.yml +2 -5
  3. data/.github/workflows/ruby.yml +7 -8
  4. data/.github/workflows/typecheck.yml +37 -0
  5. data/CHANGELOG.md +50 -0
  6. data/Gemfile +1 -1
  7. data/Gemfile.lock +11 -11
  8. data/Steepfile +2 -2
  9. data/core/array.rbs +19 -49
  10. data/core/basic_object.rbs +2 -2
  11. data/core/comparable.rbs +17 -8
  12. data/core/complex.rbs +82 -43
  13. data/core/data.rbs +2 -4
  14. data/core/dir.rbs +635 -295
  15. data/core/enumerable.rbs +11 -18
  16. data/core/enumerator.rbs +37 -31
  17. data/core/errors.rbs +4 -0
  18. data/core/false_class.rbs +34 -15
  19. data/core/fiber.rbs +23 -0
  20. data/core/file.rbs +329 -120
  21. data/core/float.rbs +17 -32
  22. data/core/gc.rbs +17 -11
  23. data/core/hash.rbs +22 -44
  24. data/core/integer.rbs +82 -113
  25. data/core/io/buffer.rbs +90 -47
  26. data/core/io.rbs +39 -116
  27. data/core/kernel.rbs +442 -489
  28. data/core/match_data.rbs +55 -56
  29. data/core/module.rbs +45 -1
  30. data/core/nil_class.rbs +98 -35
  31. data/core/numeric.rbs +22 -32
  32. data/core/object_space/weak_key_map.rbs +102 -0
  33. data/core/process.rbs +1242 -655
  34. data/core/ractor.rbs +139 -120
  35. data/core/range.rbs +100 -4
  36. data/core/rational.rbs +0 -4
  37. data/core/rbs/unnamed/argf.rbs +16 -8
  38. data/core/rbs/unnamed/env_class.rbs +0 -24
  39. data/core/refinement.rbs +8 -0
  40. data/core/regexp.rbs +1149 -598
  41. data/core/ruby_vm.rbs +126 -12
  42. data/core/rubygems/platform.rbs +9 -0
  43. data/core/rubygems/rubygems.rbs +1 -1
  44. data/core/rubygems/version.rbs +5 -1
  45. data/core/set.rbs +20 -22
  46. data/core/signal.rbs +4 -4
  47. data/core/string.rbs +283 -230
  48. data/core/string_io.rbs +2 -14
  49. data/core/struct.rbs +404 -24
  50. data/core/symbol.rbs +1 -19
  51. data/core/thread.rbs +29 -12
  52. data/core/time.rbs +227 -104
  53. data/core/trace_point.rbs +2 -5
  54. data/core/true_class.rbs +54 -21
  55. data/core/warning.rbs +14 -11
  56. data/docs/data_and_struct.md +29 -0
  57. data/docs/syntax.md +3 -5
  58. data/docs/tools.md +1 -0
  59. data/ext/rbs_extension/lexer.c +643 -559
  60. data/ext/rbs_extension/lexer.re +5 -1
  61. data/ext/rbs_extension/parser.c +12 -3
  62. data/ext/rbs_extension/unescape.c +7 -47
  63. data/lib/rbs/cli/diff.rb +4 -1
  64. data/lib/rbs/cli/validate.rb +280 -0
  65. data/lib/rbs/cli.rb +2 -194
  66. data/lib/rbs/collection/config.rb +5 -6
  67. data/lib/rbs/collection/sources/git.rb +1 -1
  68. data/lib/rbs/collection.rb +1 -0
  69. data/lib/rbs/diff.rb +7 -4
  70. data/lib/rbs/errors.rb +11 -0
  71. data/lib/rbs/test/errors.rb +4 -1
  72. data/lib/rbs/test/guaranteed.rb +2 -3
  73. data/lib/rbs/test/type_check.rb +15 -10
  74. data/lib/rbs/test.rb +3 -3
  75. data/lib/rbs/types.rb +29 -0
  76. data/lib/rbs/unit_test/convertibles.rb +176 -0
  77. data/lib/rbs/unit_test/spy.rb +136 -0
  78. data/lib/rbs/unit_test/type_assertions.rb +341 -0
  79. data/lib/rbs/unit_test/with_aliases.rb +143 -0
  80. data/lib/rbs/unit_test.rb +6 -0
  81. data/lib/rbs/version.rb +1 -1
  82. data/sig/cli/validate.rbs +43 -0
  83. data/sig/diff.rbs +3 -1
  84. data/sig/errors.rbs +8 -0
  85. data/sig/rbs.rbs +1 -1
  86. data/sig/test/errors.rbs +52 -0
  87. data/sig/test/guranteed.rbs +9 -0
  88. data/sig/test/type_check.rbs +19 -0
  89. data/sig/test.rbs +82 -0
  90. data/sig/types.rbs +6 -1
  91. data/sig/unit_test/convertibles.rbs +154 -0
  92. data/sig/unit_test/spy.rbs +28 -0
  93. data/sig/unit_test/type_assertions.rbs +194 -0
  94. data/sig/unit_test/with_aliases.rbs +136 -0
  95. data/stdlib/base64/0/base64.rbs +307 -45
  96. data/stdlib/bigdecimal/0/big_decimal.rbs +35 -15
  97. data/stdlib/coverage/0/coverage.rbs +2 -2
  98. data/stdlib/csv/0/csv.rbs +25 -55
  99. data/stdlib/date/0/date.rbs +1 -43
  100. data/stdlib/date/0/date_time.rbs +1 -13
  101. data/stdlib/delegate/0/delegator.rbs +186 -0
  102. data/stdlib/delegate/0/kernel.rbs +47 -0
  103. data/stdlib/delegate/0/simple_delegator.rbs +98 -0
  104. data/stdlib/did_you_mean/0/did_you_mean.rbs +1 -1
  105. data/stdlib/erb/0/erb.rbs +2 -2
  106. data/stdlib/fileutils/0/fileutils.rbs +0 -19
  107. data/stdlib/io-console/0/io-console.rbs +12 -1
  108. data/stdlib/ipaddr/0/ipaddr.rbs +2 -1
  109. data/stdlib/json/0/json.rbs +320 -81
  110. data/stdlib/logger/0/logger.rbs +9 -5
  111. data/stdlib/monitor/0/monitor.rbs +78 -0
  112. data/stdlib/net-http/0/net-http.rbs +1880 -543
  113. data/stdlib/objspace/0/objspace.rbs +19 -13
  114. data/stdlib/openssl/0/openssl.rbs +508 -127
  115. data/stdlib/optparse/0/optparse.rbs +25 -11
  116. data/stdlib/pathname/0/pathname.rbs +1 -1
  117. data/stdlib/pp/0/pp.rbs +2 -5
  118. data/stdlib/prettyprint/0/prettyprint.rbs +2 -2
  119. data/stdlib/pstore/0/pstore.rbs +2 -4
  120. data/stdlib/rdoc/0/comment.rbs +1 -2
  121. data/stdlib/resolv/0/resolv.rbs +4 -2
  122. data/stdlib/socket/0/socket.rbs +2 -2
  123. data/stdlib/socket/0/unix_socket.rbs +2 -2
  124. data/stdlib/strscan/0/string_scanner.rbs +3 -2
  125. data/stdlib/tempfile/0/tempfile.rbs +1 -1
  126. data/stdlib/uri/0/common.rbs +245 -123
  127. metadata +23 -4
  128. data/lib/rbs/test/spy.rb +0 -6
@@ -0,0 +1,98 @@
1
+ # <!-- rdoc-file=lib/delegate.rb -->
2
+ # A concrete implementation of Delegator, this class provides the means to
3
+ # delegate all supported method calls to the object passed into the constructor
4
+ # and even to change the object being delegated to at a later time with
5
+ # #__setobj__.
6
+ #
7
+ # class User
8
+ # def born_on
9
+ # Date.new(1989, 9, 10)
10
+ # end
11
+ # end
12
+ #
13
+ # require 'delegate'
14
+ #
15
+ # class UserDecorator < SimpleDelegator
16
+ # def birth_year
17
+ # born_on.year
18
+ # end
19
+ # end
20
+ #
21
+ # decorated_user = UserDecorator.new(User.new)
22
+ # decorated_user.birth_year #=> 1989
23
+ # decorated_user.__getobj__ #=> #<User: ...>
24
+ #
25
+ # A SimpleDelegator instance can take advantage of the fact that SimpleDelegator
26
+ # is a subclass of `Delegator` to call `super` to have methods called on the
27
+ # object being delegated to.
28
+ #
29
+ # class SuperArray < SimpleDelegator
30
+ # def [](*args)
31
+ # super + 1
32
+ # end
33
+ # end
34
+ #
35
+ # SuperArray.new([1])[0] #=> 2
36
+ #
37
+ # Here's a simple example that takes advantage of the fact that
38
+ # SimpleDelegator's delegation object can be changed at any time.
39
+ #
40
+ # class Stats
41
+ # def initialize
42
+ # @source = SimpleDelegator.new([])
43
+ # end
44
+ #
45
+ # def stats(records)
46
+ # @source.__setobj__(records)
47
+ #
48
+ # "Elements: #{@source.size}\n" +
49
+ # " Non-Nil: #{@source.compact.size}\n" +
50
+ # " Unique: #{@source.uniq.size}\n"
51
+ # end
52
+ # end
53
+ #
54
+ # s = Stats.new
55
+ # puts s.stats(%w{James Edward Gray II})
56
+ # puts
57
+ # puts s.stats([1, 2, 3, nil, 4, 5, 1, 2])
58
+ #
59
+ # Prints:
60
+ #
61
+ # Elements: 4
62
+ # Non-Nil: 4
63
+ # Unique: 4
64
+ #
65
+ # Elements: 8
66
+ # Non-Nil: 7
67
+ # Unique: 6
68
+ #
69
+ class SimpleDelegator < Delegator
70
+ public
71
+
72
+ # <!--
73
+ # rdoc-file=lib/delegate.rb
74
+ # - __getobj__() { || ... }
75
+ # -->
76
+ # Returns the current object method calls are being delegated to.
77
+ #
78
+ def __getobj__: () -> untyped
79
+
80
+ # <!--
81
+ # rdoc-file=lib/delegate.rb
82
+ # - __setobj__(obj)
83
+ # -->
84
+ # Changes the delegate object to *obj*.
85
+ #
86
+ # It's important to note that this does **not** cause SimpleDelegator's methods
87
+ # to change. Because of this, you probably only want to change delegation to
88
+ # objects of the same type as the original delegate.
89
+ #
90
+ # Here's an example of changing the delegation object.
91
+ #
92
+ # names = SimpleDelegator.new(%w{James Edward Gray II})
93
+ # puts names[1] # => Edward
94
+ # names.__setobj__(%w{Gavin Sinclair})
95
+ # puts names[1] # => Sinclair
96
+ #
97
+ def __setobj__: (untyped obj) -> untyped
98
+ end
@@ -72,7 +72,7 @@
72
72
  #
73
73
  module DidYouMean
74
74
  # <!-- rdoc-file=lib/did_you_mean.rb -->
75
- # TODO: Remove on 3.3:
75
+ # TODO: Remove on the 3.4 development start:
76
76
  #
77
77
  SPELL_CHECKERS: untyped
78
78
 
data/stdlib/erb/0/erb.rbs CHANGED
@@ -286,11 +286,11 @@ class ERB
286
286
  # def build
287
287
  # b = binding
288
288
  # # create and run templates, filling member data variables
289
- # ERB.new(<<-'END_PRODUCT'.gsub(/^\s+/, ""), trim_mode: "", eoutvar: "@product").result b
289
+ # ERB.new(<<~'END_PRODUCT', trim_mode: "", eoutvar: "@product").result b
290
290
  # <%= PRODUCT[:name] %>
291
291
  # <%= PRODUCT[:desc] %>
292
292
  # END_PRODUCT
293
- # ERB.new(<<-'END_PRICE'.gsub(/^\s+/, ""), trim_mode: "", eoutvar: "@price").result b
293
+ # ERB.new(<<~'END_PRICE', trim_mode: "", eoutvar: "@price").result b
294
294
  # <%= PRODUCT[:name] %> -- <%= PRODUCT[:cost] %>
295
295
  # <%= PRODUCT[:desc] %>
296
296
  # END_PRICE
@@ -238,8 +238,6 @@ module FileUtils
238
238
  # cd fileutils
239
239
  #
240
240
  #
241
- # FileUtils.chdir is an alias for FileUtils.cd.
242
- #
243
241
  # Related: FileUtils.pwd.
244
242
  #
245
243
  def self?.cd: (path dir, ?verbose: boolish) -> void
@@ -652,8 +650,6 @@ module FileUtils
652
650
  #
653
651
  # Raises an exception if `src` is a directory.
654
652
  #
655
- # FileUtils.copy is an alias for FileUtils.cp.
656
- #
657
653
  # Related: [methods for copying](rdoc-ref:FileUtils@Copying).
658
654
  #
659
655
  def self?.cp: (pathlist src, path dest, ?preserve: boolish, ?noop: boolish, ?verbose: boolish) -> void
@@ -1066,8 +1062,6 @@ module FileUtils
1066
1062
  # Raises an exception if `dest` is the path to an existing file and keyword
1067
1063
  # argument `force` is not `true`.
1068
1064
  #
1069
- # FileUtils#link is an alias for FileUtils#ln.
1070
- #
1071
1065
  # Related: FileUtils.link_entry (has different options).
1072
1066
  #
1073
1067
  def self?.ln: (pathlist src, path dest, ?force: boolish, ?noop: boolish, ?verbose: boolish) -> void
@@ -1157,8 +1151,6 @@ module FileUtils
1157
1151
  # ln -s srcdir3/src0.txt srcdir3/src1.txt destdir3
1158
1152
  #
1159
1153
  #
1160
- # FileUtils.symlink is an alias for FileUtils.ln_s.
1161
- #
1162
1154
  # Related: FileUtils.ln_sf.
1163
1155
  #
1164
1156
  def self?.ln_s: (pathlist src, path dest, ?force: boolish, ?relative: boolish, ?target_directory: boolish, ?noop: boolish, ?verbose: boolish) -> void
@@ -1368,9 +1360,6 @@ module FileUtils
1368
1360
  # mv src0 dest0
1369
1361
  # mv src1.txt src1 dest1
1370
1362
  #
1371
- #
1372
- # FileUtils.move is an alias for FileUtils.mv.
1373
- #
1374
1363
  def self?.mv: (pathlist src, path dest, ?force: boolish, ?noop: boolish, ?verbose: boolish, ?secure: boolish) -> void
1375
1364
 
1376
1365
  # <!--
@@ -1417,8 +1406,6 @@ module FileUtils
1417
1406
  #
1418
1407
  # FileUtils.pwd # => "/rdoc/fileutils"
1419
1408
  #
1420
- # FileUtils.getwd is an alias for FileUtils.pwd.
1421
- #
1422
1409
  # Related: FileUtils.cd.
1423
1410
  #
1424
1411
  def self?.pwd: () -> String
@@ -1538,8 +1525,6 @@ module FileUtils
1538
1525
  # rm src0.dat src0.txt
1539
1526
  #
1540
1527
  #
1541
- # FileUtils.remove is an alias for FileUtils.rm.
1542
- #
1543
1528
  # Related: [methods for deleting](rdoc-ref:FileUtils@Deleting).
1544
1529
  #
1545
1530
  def self?.rm: (pathlist list, ?force: boolish, ?noop: boolish, ?verbose: boolish) -> void
@@ -1571,8 +1556,6 @@ module FileUtils
1571
1556
  #
1572
1557
  # See FileUtils.rm for keyword arguments.
1573
1558
  #
1574
- # FileUtils.safe_unlink is an alias for FileUtils.rm_f.
1575
- #
1576
1559
  # Related: [methods for deleting](rdoc-ref:FileUtils@Deleting).
1577
1560
  #
1578
1561
  def self?.rm_f: (pathlist list, ?noop: boolish, ?verbose: boolish) -> void
@@ -1664,8 +1647,6 @@ module FileUtils
1664
1647
  #
1665
1648
  # See FileUtils.rm_r for keyword arguments.
1666
1649
  #
1667
- # FileUtils.rmtree is an alias for FileUtils.rm_rf.
1668
- #
1669
1650
  # Related: [methods for deleting](rdoc-ref:FileUtils@Deleting).
1670
1651
  #
1671
1652
  def self?.rm_rf: (pathlist list, ?noop: boolish, ?verbose: boolish, ?secure: boolish) -> void
@@ -106,8 +106,14 @@ class IO
106
106
 
107
107
  # <!--
108
108
  # rdoc-file=ext/io/console/console.c
109
- # - cursor()
109
+ # - io.cursor -> [row, column]
110
110
  # -->
111
+ # Returns the current cursor position as a two-element array of integers (row,
112
+ # column)
113
+ #
114
+ # io.cursor # => [3, 5]
115
+ #
116
+ # You must require 'io/console' to use this method.
111
117
  #
112
118
  def cursor: () -> [ Integer, Integer ]
113
119
 
@@ -205,6 +211,11 @@ class IO
205
211
  #
206
212
  # You must require 'io/console' to use this method.
207
213
  #
214
+ # require 'io/console'
215
+ # IO::console.getpass("Enter password:")
216
+ # Enter password:
217
+ # # => "mypassword"
218
+ #
208
219
  def getpass: (?String) -> String
209
220
 
210
221
  # <!--
@@ -295,7 +295,8 @@ class IPAddr
295
295
  # Returns true if the ipaddr is a private address. IPv4 addresses in
296
296
  # 10.0.0.0/8, 172.16.0.0/12 and 192.168.0.0/16 as defined in RFC 1918 and IPv6
297
297
  # Unique Local Addresses in fc00::/7 as defined in RFC 4193 are considered
298
- # private.
298
+ # private. Private IPv4 addresses in the IPv4-mapped IPv6 address range are also
299
+ # considered private.
299
300
  #
300
301
  def private?: () -> bool
301
302