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.
Files changed (267) hide show
  1. checksums.yaml +4 -4
  2. data/.github/dependabot.yml +14 -14
  3. data/.github/workflows/bundle-update.yml +60 -0
  4. data/.github/workflows/c-check.yml +7 -5
  5. data/.github/workflows/comments.yml +2 -2
  6. data/.github/workflows/dependabot.yml +2 -2
  7. data/.github/workflows/ruby.yml +16 -26
  8. data/.github/workflows/rust.yml +95 -0
  9. data/.github/workflows/typecheck.yml +1 -1
  10. data/.github/workflows/windows.yml +2 -2
  11. data/.rubocop.yml +2 -2
  12. data/.vscode/extensions.json +5 -0
  13. data/.vscode/settings.json +19 -0
  14. data/CHANGELOG.md +202 -2
  15. data/Rakefile +9 -23
  16. data/Steepfile +2 -0
  17. data/config.yml +457 -13
  18. data/core/array.rbs +218 -188
  19. data/core/basic_object.rbs +9 -8
  20. data/core/binding.rbs +0 -2
  21. data/core/builtin.rbs +2 -2
  22. data/core/class.rbs +6 -5
  23. data/core/comparable.rbs +45 -31
  24. data/core/complex.rbs +66 -55
  25. data/core/dir.rbs +57 -45
  26. data/core/encoding.rbs +6 -6
  27. data/core/enumerable.rbs +105 -91
  28. data/core/enumerator/arithmetic_sequence.rbs +70 -0
  29. data/core/enumerator.rbs +24 -3
  30. data/core/errno.rbs +3 -2
  31. data/core/errors.rbs +31 -29
  32. data/core/exception.rbs +12 -12
  33. data/core/fiber.rbs +47 -36
  34. data/core/file.rbs +242 -169
  35. data/core/file_test.rbs +2 -2
  36. data/core/float.rbs +42 -68
  37. data/core/gc.rbs +78 -70
  38. data/core/hash.rbs +70 -60
  39. data/core/integer.rbs +32 -75
  40. data/core/io/buffer.rbs +36 -36
  41. data/core/io/wait.rbs +7 -7
  42. data/core/io.rbs +192 -146
  43. data/core/kernel.rbs +198 -147
  44. data/core/marshal.rbs +3 -3
  45. data/core/match_data.rbs +14 -12
  46. data/core/math.rbs +69 -67
  47. data/core/method.rbs +6 -8
  48. data/core/module.rbs +148 -88
  49. data/core/nil_class.rbs +4 -3
  50. data/core/numeric.rbs +53 -50
  51. data/core/object.rbs +6 -8
  52. data/core/object_space.rbs +11 -10
  53. data/core/pathname.rbs +131 -81
  54. data/core/proc.rbs +65 -34
  55. data/core/process.rbs +221 -201
  56. data/core/ractor.rbs +15 -11
  57. data/core/random.rbs +21 -3
  58. data/core/range.rbs +152 -49
  59. data/core/rational.rbs +5 -56
  60. data/core/rbs/unnamed/argf.rbs +58 -51
  61. data/core/rbs/unnamed/env_class.rbs +18 -13
  62. data/core/rbs/unnamed/main_class.rbs +123 -0
  63. data/core/rbs/unnamed/random.rbs +7 -116
  64. data/core/regexp.rbs +236 -197
  65. data/core/ruby.rbs +1 -1
  66. data/core/ruby_vm.rbs +32 -30
  67. data/core/rubygems/config_file.rbs +5 -5
  68. data/core/rubygems/errors.rbs +1 -1
  69. data/core/rubygems/requirement.rbs +5 -5
  70. data/core/rubygems/rubygems.rbs +5 -3
  71. data/core/set.rbs +17 -16
  72. data/core/signal.rbs +2 -2
  73. data/core/string.rbs +318 -298
  74. data/core/struct.rbs +26 -25
  75. data/core/symbol.rbs +25 -24
  76. data/core/thread.rbs +40 -41
  77. data/core/time.rbs +47 -42
  78. data/core/trace_point.rbs +34 -31
  79. data/core/true_class.rbs +2 -2
  80. data/core/unbound_method.rbs +10 -10
  81. data/core/warning.rbs +7 -7
  82. data/docs/collection.md +1 -1
  83. data/docs/config.md +171 -0
  84. data/docs/inline.md +576 -0
  85. data/docs/syntax.md +46 -16
  86. data/docs/type_fingerprint.md +21 -0
  87. data/exe/rbs +1 -1
  88. data/ext/rbs_extension/ast_translation.c +595 -98
  89. data/ext/rbs_extension/class_constants.c +30 -0
  90. data/ext/rbs_extension/class_constants.h +15 -0
  91. data/ext/rbs_extension/legacy_location.c +30 -53
  92. data/ext/rbs_extension/legacy_location.h +37 -0
  93. data/ext/rbs_extension/main.c +125 -24
  94. data/include/rbs/ast.h +485 -150
  95. data/include/rbs/lexer.h +11 -4
  96. data/include/rbs/location.h +25 -44
  97. data/include/rbs/parser.h +20 -2
  98. data/include/rbs/util/rbs_constant_pool.h +0 -3
  99. data/include/rbs.h +8 -0
  100. data/lib/rbs/ast/annotation.rb +1 -1
  101. data/lib/rbs/ast/comment.rb +1 -1
  102. data/lib/rbs/ast/declarations.rb +10 -10
  103. data/lib/rbs/ast/members.rb +14 -14
  104. data/lib/rbs/ast/ruby/annotations.rb +409 -0
  105. data/lib/rbs/ast/ruby/comment_block.rb +245 -0
  106. data/lib/rbs/ast/ruby/declarations.rb +281 -0
  107. data/lib/rbs/ast/ruby/helpers/constant_helper.rb +28 -0
  108. data/lib/rbs/ast/ruby/helpers/location_helper.rb +15 -0
  109. data/lib/rbs/ast/ruby/members.rb +723 -0
  110. data/lib/rbs/ast/type_param.rb +24 -4
  111. data/lib/rbs/buffer.rb +105 -20
  112. data/lib/rbs/cli/diff.rb +16 -15
  113. data/lib/rbs/cli/validate.rb +62 -125
  114. data/lib/rbs/cli.rb +55 -23
  115. data/lib/rbs/collection/config/lockfile_generator.rb +8 -4
  116. data/lib/rbs/collection/sources/git.rb +1 -0
  117. data/lib/rbs/collection.rb +0 -1
  118. data/lib/rbs/definition.rb +6 -1
  119. data/lib/rbs/definition_builder/ancestor_builder.rb +119 -63
  120. data/lib/rbs/definition_builder/method_builder.rb +65 -30
  121. data/lib/rbs/definition_builder.rb +177 -20
  122. data/lib/rbs/diff.rb +7 -1
  123. data/lib/rbs/environment/class_entry.rb +69 -0
  124. data/lib/rbs/environment/module_entry.rb +66 -0
  125. data/lib/rbs/environment.rb +338 -155
  126. data/lib/rbs/environment_loader.rb +2 -2
  127. data/lib/rbs/errors.rb +30 -20
  128. data/lib/rbs/inline_parser/comment_association.rb +117 -0
  129. data/lib/rbs/inline_parser.rb +542 -0
  130. data/lib/rbs/location_aux.rb +36 -4
  131. data/lib/rbs/locator.rb +5 -1
  132. data/lib/rbs/method_type.rb +5 -3
  133. data/lib/rbs/namespace.rb +0 -7
  134. data/lib/rbs/parser_aux.rb +31 -8
  135. data/lib/rbs/prototype/helpers.rb +57 -0
  136. data/lib/rbs/prototype/rb.rb +3 -28
  137. data/lib/rbs/prototype/rbi.rb +3 -20
  138. data/lib/rbs/prototype/runtime.rb +10 -2
  139. data/lib/rbs/resolver/type_name_resolver.rb +0 -8
  140. data/lib/rbs/source.rb +99 -0
  141. data/lib/rbs/subtractor.rb +4 -3
  142. data/lib/rbs/test/type_check.rb +5 -2
  143. data/lib/rbs/type_name.rb +1 -8
  144. data/lib/rbs/types.rb +88 -78
  145. data/lib/rbs/unit_test/convertibles.rb +1 -0
  146. data/lib/rbs/unit_test/type_assertions.rb +35 -8
  147. data/lib/rbs/validator.rb +2 -2
  148. data/lib/rbs/version.rb +1 -1
  149. data/lib/rbs.rb +12 -1
  150. data/rbs.gemspec +3 -2
  151. data/rust/.gitignore +1 -0
  152. data/rust/Cargo.lock +378 -0
  153. data/rust/Cargo.toml +7 -0
  154. data/rust/ruby-rbs/Cargo.toml +22 -0
  155. data/rust/ruby-rbs/build.rs +764 -0
  156. data/rust/ruby-rbs/examples/locations.rs +60 -0
  157. data/rust/ruby-rbs/src/lib.rs +1 -0
  158. data/rust/ruby-rbs/src/node/mod.rs +742 -0
  159. data/rust/ruby-rbs/tests/sanity.rs +47 -0
  160. data/rust/ruby-rbs/vendor/rbs/config.yml +1 -0
  161. data/rust/ruby-rbs-sys/Cargo.toml +23 -0
  162. data/rust/ruby-rbs-sys/build.rs +204 -0
  163. data/rust/ruby-rbs-sys/src/lib.rs +50 -0
  164. data/rust/ruby-rbs-sys/vendor/rbs/include +1 -0
  165. data/rust/ruby-rbs-sys/vendor/rbs/src +1 -0
  166. data/rust/ruby-rbs-sys/wrapper.h +1 -0
  167. data/schema/typeParam.json +17 -1
  168. data/sig/ancestor_builder.rbs +1 -1
  169. data/sig/ast/ruby/annotations.rbs +421 -0
  170. data/sig/ast/ruby/comment_block.rbs +127 -0
  171. data/sig/ast/ruby/declarations.rbs +158 -0
  172. data/sig/ast/ruby/helpers/constant_helper.rbs +11 -0
  173. data/sig/ast/ruby/helpers/location_helper.rbs +15 -0
  174. data/sig/ast/ruby/members.rbs +178 -0
  175. data/sig/buffer.rbs +63 -5
  176. data/sig/cli/diff.rbs +5 -11
  177. data/sig/cli/validate.rbs +12 -8
  178. data/sig/cli.rbs +18 -18
  179. data/sig/definition.rbs +6 -0
  180. data/sig/definition_builder.rbs +3 -1
  181. data/sig/environment/class_entry.rbs +50 -0
  182. data/sig/environment/module_entry.rbs +50 -0
  183. data/sig/environment.rbs +37 -81
  184. data/sig/errors.rbs +26 -20
  185. data/sig/inline_parser/comment_association.rbs +71 -0
  186. data/sig/inline_parser.rbs +124 -0
  187. data/sig/location.rbs +32 -7
  188. data/sig/locator.rbs +0 -2
  189. data/sig/method_builder.rbs +9 -4
  190. data/sig/namespace.rbs +0 -5
  191. data/sig/parser.rbs +47 -13
  192. data/sig/prototype/helpers.rbs +2 -0
  193. data/sig/resolver/type_name_resolver.rbs +0 -3
  194. data/sig/source.rbs +48 -0
  195. data/sig/type_param.rbs +13 -8
  196. data/sig/typename.rbs +0 -5
  197. data/sig/types.rbs +6 -7
  198. data/sig/unit_test/spy.rbs +0 -8
  199. data/sig/unit_test/type_assertions.rbs +11 -0
  200. data/src/ast.c +491 -143
  201. data/src/lexer.c +1552 -1314
  202. data/src/lexer.re +7 -0
  203. data/src/lexstate.c +8 -1
  204. data/src/location.c +8 -48
  205. data/src/parser.c +1107 -409
  206. data/src/util/rbs_constant_pool.c +0 -4
  207. data/stdlib/bigdecimal/0/big_decimal.rbs +16 -16
  208. data/stdlib/cgi-escape/0/escape.rbs +4 -4
  209. data/stdlib/coverage/0/coverage.rbs +4 -3
  210. data/stdlib/date/0/date.rbs +33 -28
  211. data/stdlib/date/0/date_time.rbs +24 -23
  212. data/stdlib/did_you_mean/0/did_you_mean.rbs +17 -16
  213. data/stdlib/digest/0/digest.rbs +110 -0
  214. data/stdlib/erb/0/erb.rbs +64 -53
  215. data/stdlib/etc/0/etc.rbs +55 -50
  216. data/stdlib/fileutils/0/fileutils.rbs +140 -126
  217. data/stdlib/forwardable/0/forwardable.rbs +10 -10
  218. data/stdlib/io-console/0/io-console.rbs +2 -2
  219. data/stdlib/json/0/json.rbs +158 -131
  220. data/stdlib/monitor/0/monitor.rbs +3 -3
  221. data/stdlib/net-http/0/net-http.rbs +159 -134
  222. data/stdlib/objspace/0/objspace.rbs +8 -30
  223. data/stdlib/open-uri/0/open-uri.rbs +8 -8
  224. data/stdlib/open3/0/open3.rbs +469 -10
  225. data/stdlib/openssl/0/openssl.rbs +144 -129
  226. data/stdlib/optparse/0/optparse.rbs +23 -14
  227. data/stdlib/pathname/0/pathname.rbs +2 -2
  228. data/stdlib/pp/0/pp.rbs +9 -8
  229. data/stdlib/prettyprint/0/prettyprint.rbs +7 -7
  230. data/stdlib/pstore/0/pstore.rbs +35 -30
  231. data/stdlib/psych/0/psych.rbs +62 -9
  232. data/stdlib/psych/0/store.rbs +2 -4
  233. data/stdlib/pty/0/pty.rbs +9 -6
  234. data/stdlib/random-formatter/0/random-formatter.rbs +277 -0
  235. data/stdlib/rdoc/0/code_object.rbs +2 -1
  236. data/stdlib/rdoc/0/parser.rbs +1 -1
  237. data/stdlib/rdoc/0/store.rbs +1 -1
  238. data/stdlib/ripper/0/ripper.rbs +20 -17
  239. data/stdlib/securerandom/0/manifest.yaml +2 -0
  240. data/stdlib/securerandom/0/securerandom.rbs +7 -20
  241. data/stdlib/shellwords/0/shellwords.rbs +2 -2
  242. data/stdlib/socket/0/addrinfo.rbs +9 -9
  243. data/stdlib/socket/0/basic_socket.rbs +3 -3
  244. data/stdlib/socket/0/ip_socket.rbs +10 -8
  245. data/stdlib/socket/0/socket.rbs +10 -9
  246. data/stdlib/socket/0/tcp_server.rbs +1 -1
  247. data/stdlib/socket/0/tcp_socket.rbs +1 -1
  248. data/stdlib/socket/0/udp_socket.rbs +1 -1
  249. data/stdlib/socket/0/unix_server.rbs +1 -1
  250. data/stdlib/stringio/0/stringio.rbs +55 -54
  251. data/stdlib/strscan/0/string_scanner.rbs +46 -44
  252. data/stdlib/tempfile/0/tempfile.rbs +24 -20
  253. data/stdlib/time/0/time.rbs +7 -5
  254. data/stdlib/tsort/0/tsort.rbs +7 -6
  255. data/stdlib/uri/0/common.rbs +31 -18
  256. data/stdlib/uri/0/file.rbs +2 -2
  257. data/stdlib/uri/0/generic.rbs +9 -2
  258. data/stdlib/uri/0/http.rbs +2 -2
  259. data/stdlib/uri/0/ldap.rbs +2 -2
  260. data/stdlib/uri/0/mailto.rbs +3 -3
  261. data/stdlib/uri/0/rfc2396_parser.rbs +6 -5
  262. data/stdlib/zlib/0/deflate.rbs +4 -3
  263. data/stdlib/zlib/0/gzip_reader.rbs +6 -6
  264. data/stdlib/zlib/0/gzip_writer.rbs +14 -12
  265. data/stdlib/zlib/0/inflate.rbs +1 -1
  266. data/stdlib/zlib/0/need_dict.rbs +1 -1
  267. metadata +66 -3
@@ -38,7 +38,7 @@ module RBS
38
38
  # rand(1.5) # => 0
39
39
  #
40
40
  # When `range` is a Range, `rand` returns a random number where
41
- # `range.member?(number) == true`.
41
+ # <code>range.member?(number) == true</code>.
42
42
  #
43
43
  # prng.rand(5..9) # => one of [5, 6, 7, 8, 9]
44
44
  # prng.rand(5...9) # => one of [5, 6, 7, 8]
@@ -46,7 +46,8 @@ module RBS
46
46
  # prng.rand(5.0...9.0) # => between 5.0 and 9.0, excluding 9.0
47
47
  #
48
48
  # Both the beginning and ending values of the range must respond to subtract
49
- # (`-`) and add (`+`)methods, or rand will raise an ArgumentError.
49
+ # (<code>-</code>) and add (<code>+</code>)methods, or rand will raise an
50
+ # ArgumentError.
50
51
  #
51
52
  %a{annotate:rdoc:copy:Random#rand}
52
53
  def rand: (?0) -> Float
@@ -87,9 +88,10 @@ module RBS
87
88
  # <!-- rdoc-file=lib/random/formatter.rb -->
88
89
  # ## Random number formatter.
89
90
  #
90
- # Formats generated random numbers in many manners. When `'random/formatter'` is
91
- # required, several methods are added to empty core module `Random::Formatter`,
92
- # making them available as Random's instance and module methods.
91
+ # Formats generated random numbers in many manners. When
92
+ # <code>'random/formatter'</code> is required, several methods are added to
93
+ # empty core module <code>Random::Formatter</code>, making them available as
94
+ # Random's instance and module methods.
93
95
  #
94
96
  # Standard library SecureRandom is also extended with the module, and the
95
97
  # methods described below are available as a module methods in it.
@@ -148,56 +150,6 @@ module RBS
148
150
  #
149
151
  %a{annotate:rdoc:copy:Random::Formatter}
150
152
  module Random_Formatter
151
- # <!--
152
- # rdoc-file=lib/random/formatter.rb
153
- # - base64(n=nil)
154
- # -->
155
- # Generate a random base64 string.
156
- #
157
- # The argument *n* specifies the length, in bytes, of the random number to be
158
- # generated. The length of the result string is about 4/3 of *n*.
159
- #
160
- # If *n* is not specified or is nil, 16 is assumed. It may be larger in the
161
- # future.
162
- #
163
- # The result may contain A-Z, a-z, 0-9, "+", "/" and "=".
164
- #
165
- # require 'random/formatter'
166
- #
167
- # Random.base64 #=> "/2BuBuLf3+WfSKyQbRcc/A=="
168
- # # or
169
- # prng = Random.new
170
- # prng.base64 #=> "6BbW0pxO0YENxn38HMUbcQ=="
171
- #
172
- # See RFC 3548 for the definition of base64.
173
- #
174
- %a{annotate:rdoc:copy:Random::Formatter#base64}
175
- def base64: (?Integer? n) -> String
176
-
177
- # <!--
178
- # rdoc-file=lib/random/formatter.rb
179
- # - hex(n=nil)
180
- # -->
181
- # Generate a random hexadecimal string.
182
- #
183
- # The argument *n* specifies the length, in bytes, of the random number to be
184
- # generated. The length of the resulting hexadecimal string is twice of *n*.
185
- #
186
- # If *n* is not specified or is nil, 16 is assumed. It may be larger in the
187
- # future.
188
- #
189
- # The result may contain 0-9 and a-f.
190
- #
191
- # require 'random/formatter'
192
- #
193
- # Random.hex #=> "eb693ec8252cd630102fd0d0fb7c3485"
194
- # # or
195
- # prng = Random.new
196
- # prng.hex #=> "91dc3bfb4de5b11d029d376634589b61"
197
- #
198
- %a{annotate:rdoc:copy:Random::Formatter#hex}
199
- def hex: (?Integer? n) -> String
200
-
201
153
  # <!-- rdoc-file=random.c -->
202
154
  # Generates formatted random number from raw random bytes. See Random#rand.
203
155
  #
@@ -210,9 +162,6 @@ module RBS
210
162
  | (::Range[Integer] n) -> Integer
211
163
  | (::Range[Numeric] n) -> Numeric
212
164
 
213
- %a{annotate:rdoc:copy:Random::Formatter#random_byte}
214
- def random_bytes: (?Integer? n) -> String
215
-
216
165
  # <!--
217
166
  # rdoc-file=random.c
218
167
  # - prng.random_number -> float
@@ -232,64 +181,6 @@ module RBS
232
181
  | (?::Range[Float]? n) -> Float
233
182
  | (?::Range[Integer]? n) -> Integer
234
183
  | (?::Range[Numeric]? n) -> Numeric
235
-
236
- # <!--
237
- # rdoc-file=lib/random/formatter.rb
238
- # - urlsafe_base64(n=nil, padding=false)
239
- # -->
240
- # Generate a random URL-safe base64 string.
241
- #
242
- # The argument *n* specifies the length, in bytes, of the random number to be
243
- # generated. The length of the result string is about 4/3 of *n*.
244
- #
245
- # If *n* is not specified or is nil, 16 is assumed. It may be larger in the
246
- # future.
247
- #
248
- # The boolean argument *padding* specifies the padding. If it is false or nil,
249
- # padding is not generated. Otherwise padding is generated. By default, padding
250
- # is not generated because "=" may be used as a URL delimiter.
251
- #
252
- # The result may contain A-Z, a-z, 0-9, "-" and "_". "=" is also used if
253
- # *padding* is true.
254
- #
255
- # require 'random/formatter'
256
- #
257
- # Random.urlsafe_base64 #=> "b4GOKm4pOYU_-BOXcrUGDg"
258
- # # or
259
- # prng = Random.new
260
- # prng.urlsafe_base64 #=> "UZLdOkzop70Ddx-IJR0ABg"
261
- #
262
- # prng.urlsafe_base64(nil, true) #=> "i0XQ-7gglIsHGV2_BNPrdQ=="
263
- # prng.urlsafe_base64(nil, true) #=> "-M8rLhr7JEpJlqFGUMmOxg=="
264
- #
265
- # See RFC 3548 for the definition of URL-safe base64.
266
- #
267
- %a{annotate:rdoc:copy:Random::Formatter#urlsafe_base64}
268
- def urlsafe_base64: (?Integer? n, ?boolish padding) -> String
269
-
270
- # <!--
271
- # rdoc-file=lib/random/formatter.rb
272
- # - uuid()
273
- # -->
274
- # Generate a random v4 UUID (Universally Unique IDentifier).
275
- #
276
- # require 'random/formatter'
277
- #
278
- # Random.uuid #=> "2d931510-d99f-494a-8c67-87feb05e1594"
279
- # Random.uuid #=> "bad85eb9-0713-4da7-8d36-07a8e4b00eab"
280
- # # or
281
- # prng = Random.new
282
- # prng.uuid #=> "62936e70-1815-439b-bf89-8492855a7e6b"
283
- #
284
- # The version 4 UUID is purely random (except the version). It doesn't contain
285
- # meaningful information such as MAC addresses, timestamps, etc.
286
- #
287
- # The result contains 122 random bits (15.25 random bytes).
288
- #
289
- # See [RFC9562](https://www.rfc-editor.org/rfc/rfc9562) for details of UUIDv4.
290
- #
291
- %a{annotate:rdoc:copy:Random::Formatter#uuid}
292
- def uuid: () -> String
293
184
  end
294
185
  end
295
186
  end