rbs 4.0.0.dev.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 (281) 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 +18 -11
  5. data/.github/workflows/comments.yml +5 -3
  6. data/.github/workflows/dependabot.yml +2 -2
  7. data/.github/workflows/ruby.yml +27 -34
  8. data/.github/workflows/rust.yml +95 -0
  9. data/.github/workflows/typecheck.yml +2 -2
  10. data/.github/workflows/windows.yml +2 -2
  11. data/.rubocop.yml +1 -1
  12. data/CHANGELOG.md +323 -0
  13. data/README.md +1 -1
  14. data/Rakefile +43 -33
  15. data/Steepfile +1 -0
  16. data/config.yml +426 -24
  17. data/core/array.rbs +307 -227
  18. data/core/basic_object.rbs +9 -8
  19. data/core/binding.rbs +0 -2
  20. data/core/builtin.rbs +2 -2
  21. data/core/class.rbs +6 -5
  22. data/core/comparable.rbs +55 -34
  23. data/core/complex.rbs +104 -78
  24. data/core/dir.rbs +61 -49
  25. data/core/encoding.rbs +12 -15
  26. data/core/enumerable.rbs +179 -87
  27. data/core/enumerator/arithmetic_sequence.rbs +70 -0
  28. data/core/enumerator.rbs +65 -2
  29. data/core/errno.rbs +11 -2
  30. data/core/errors.rbs +58 -29
  31. data/core/exception.rbs +13 -13
  32. data/core/fiber.rbs +74 -54
  33. data/core/file.rbs +280 -177
  34. data/core/file_test.rbs +3 -3
  35. data/core/float.rbs +257 -92
  36. data/core/gc.rbs +425 -281
  37. data/core/hash.rbs +1045 -739
  38. data/core/integer.rbs +135 -137
  39. data/core/io/buffer.rbs +53 -42
  40. data/core/io/wait.rbs +13 -35
  41. data/core/io.rbs +192 -144
  42. data/core/kernel.rbs +216 -155
  43. data/core/marshal.rbs +4 -4
  44. data/core/match_data.rbs +15 -13
  45. data/core/math.rbs +107 -66
  46. data/core/method.rbs +69 -33
  47. data/core/module.rbs +244 -106
  48. data/core/nil_class.rbs +7 -6
  49. data/core/numeric.rbs +74 -63
  50. data/core/object.rbs +9 -11
  51. data/core/object_space.rbs +30 -23
  52. data/core/pathname.rbs +1322 -0
  53. data/core/proc.rbs +95 -58
  54. data/core/process.rbs +222 -202
  55. data/core/ractor.rbs +371 -515
  56. data/core/random.rbs +21 -3
  57. data/core/range.rbs +159 -57
  58. data/core/rational.rbs +60 -89
  59. data/core/rbs/unnamed/argf.rbs +60 -53
  60. data/core/rbs/unnamed/env_class.rbs +19 -14
  61. data/core/rbs/unnamed/main_class.rbs +123 -0
  62. data/core/rbs/unnamed/random.rbs +11 -118
  63. data/core/regexp.rbs +258 -214
  64. data/core/ruby.rbs +53 -0
  65. data/core/ruby_vm.rbs +38 -34
  66. data/core/rubygems/config_file.rbs +5 -5
  67. data/core/rubygems/errors.rbs +4 -71
  68. data/core/rubygems/requirement.rbs +5 -5
  69. data/core/rubygems/rubygems.rbs +16 -82
  70. data/core/rubygems/version.rbs +2 -3
  71. data/core/set.rbs +490 -360
  72. data/core/signal.rbs +26 -16
  73. data/core/string.rbs +3234 -1285
  74. data/core/struct.rbs +27 -26
  75. data/core/symbol.rbs +41 -34
  76. data/core/thread.rbs +135 -67
  77. data/core/time.rbs +81 -50
  78. data/core/trace_point.rbs +41 -35
  79. data/core/true_class.rbs +2 -2
  80. data/core/unbound_method.rbs +24 -16
  81. data/core/warning.rbs +7 -7
  82. data/docs/aliases.md +79 -0
  83. data/docs/collection.md +3 -3
  84. data/docs/config.md +171 -0
  85. data/docs/encoding.md +56 -0
  86. data/docs/gem.md +0 -1
  87. data/docs/inline.md +576 -0
  88. data/docs/sigs.md +3 -3
  89. data/docs/syntax.md +46 -16
  90. data/docs/type_fingerprint.md +21 -0
  91. data/exe/rbs +1 -1
  92. data/ext/rbs_extension/ast_translation.c +544 -116
  93. data/ext/rbs_extension/ast_translation.h +3 -0
  94. data/ext/rbs_extension/class_constants.c +16 -2
  95. data/ext/rbs_extension/class_constants.h +8 -0
  96. data/ext/rbs_extension/extconf.rb +5 -1
  97. data/ext/rbs_extension/legacy_location.c +33 -56
  98. data/ext/rbs_extension/legacy_location.h +37 -0
  99. data/ext/rbs_extension/main.c +44 -35
  100. data/include/rbs/ast.h +448 -173
  101. data/include/rbs/defines.h +27 -0
  102. data/include/rbs/lexer.h +30 -11
  103. data/include/rbs/location.h +25 -44
  104. data/include/rbs/parser.h +6 -6
  105. data/include/rbs/string.h +0 -2
  106. data/include/rbs/util/rbs_allocator.h +34 -13
  107. data/include/rbs/util/rbs_assert.h +12 -1
  108. data/include/rbs/util/rbs_constant_pool.h +0 -3
  109. data/include/rbs/util/rbs_encoding.h +2 -0
  110. data/include/rbs/util/rbs_unescape.h +2 -1
  111. data/include/rbs.h +8 -0
  112. data/lib/rbs/ast/annotation.rb +1 -1
  113. data/lib/rbs/ast/comment.rb +1 -1
  114. data/lib/rbs/ast/declarations.rb +10 -10
  115. data/lib/rbs/ast/members.rb +14 -14
  116. data/lib/rbs/ast/ruby/annotations.rb +293 -3
  117. data/lib/rbs/ast/ruby/comment_block.rb +24 -0
  118. data/lib/rbs/ast/ruby/declarations.rb +198 -3
  119. data/lib/rbs/ast/ruby/helpers/constant_helper.rb +4 -0
  120. data/lib/rbs/ast/ruby/members.rb +532 -22
  121. data/lib/rbs/ast/type_param.rb +24 -4
  122. data/lib/rbs/buffer.rb +20 -15
  123. data/lib/rbs/cli/diff.rb +16 -15
  124. data/lib/rbs/cli/validate.rb +38 -106
  125. data/lib/rbs/cli.rb +52 -19
  126. data/lib/rbs/collection/config/lockfile_generator.rb +14 -2
  127. data/lib/rbs/collection/sources/git.rb +1 -0
  128. data/lib/rbs/definition.rb +1 -1
  129. data/lib/rbs/definition_builder/ancestor_builder.rb +62 -9
  130. data/lib/rbs/definition_builder/method_builder.rb +20 -0
  131. data/lib/rbs/definition_builder.rb +147 -25
  132. data/lib/rbs/diff.rb +7 -1
  133. data/lib/rbs/environment.rb +227 -74
  134. data/lib/rbs/environment_loader.rb +0 -6
  135. data/lib/rbs/errors.rb +27 -18
  136. data/lib/rbs/inline_parser.rb +342 -6
  137. data/lib/rbs/location_aux.rb +1 -1
  138. data/lib/rbs/locator.rb +5 -1
  139. data/lib/rbs/method_type.rb +5 -3
  140. data/lib/rbs/parser_aux.rb +20 -7
  141. data/lib/rbs/prototype/helpers.rb +57 -0
  142. data/lib/rbs/prototype/rb.rb +3 -28
  143. data/lib/rbs/prototype/rbi.rb +3 -20
  144. data/lib/rbs/prototype/runtime.rb +8 -0
  145. data/lib/rbs/resolver/constant_resolver.rb +2 -2
  146. data/lib/rbs/resolver/type_name_resolver.rb +116 -38
  147. data/lib/rbs/subtractor.rb +3 -1
  148. data/lib/rbs/test/type_check.rb +19 -2
  149. data/lib/rbs/type_name.rb +1 -1
  150. data/lib/rbs/types.rb +88 -78
  151. data/lib/rbs/unit_test/type_assertions.rb +35 -8
  152. data/lib/rbs/validator.rb +2 -2
  153. data/lib/rbs/version.rb +1 -1
  154. data/lib/rbs.rb +1 -2
  155. data/lib/rdoc/discover.rb +1 -1
  156. data/lib/rdoc_plugin/parser.rb +1 -1
  157. data/rbs.gemspec +4 -3
  158. data/rust/.gitignore +1 -0
  159. data/rust/Cargo.lock +378 -0
  160. data/rust/Cargo.toml +7 -0
  161. data/rust/ruby-rbs/Cargo.toml +22 -0
  162. data/rust/ruby-rbs/build.rs +764 -0
  163. data/rust/ruby-rbs/examples/locations.rs +60 -0
  164. data/rust/ruby-rbs/src/lib.rs +1 -0
  165. data/rust/ruby-rbs/src/node/mod.rs +742 -0
  166. data/rust/ruby-rbs/tests/sanity.rs +47 -0
  167. data/rust/ruby-rbs/vendor/rbs/config.yml +1 -0
  168. data/rust/ruby-rbs-sys/Cargo.toml +23 -0
  169. data/rust/ruby-rbs-sys/build.rs +204 -0
  170. data/rust/ruby-rbs-sys/src/lib.rs +50 -0
  171. data/rust/ruby-rbs-sys/vendor/rbs/include +1 -0
  172. data/rust/ruby-rbs-sys/vendor/rbs/src +1 -0
  173. data/rust/ruby-rbs-sys/wrapper.h +1 -0
  174. data/schema/typeParam.json +17 -1
  175. data/sig/ast/ruby/annotations.rbs +315 -4
  176. data/sig/ast/ruby/comment_block.rbs +8 -0
  177. data/sig/ast/ruby/declarations.rbs +102 -4
  178. data/sig/ast/ruby/members.rbs +108 -2
  179. data/sig/cli/diff.rbs +5 -11
  180. data/sig/cli/validate.rbs +12 -8
  181. data/sig/cli.rbs +18 -18
  182. data/sig/definition.rbs +6 -1
  183. data/sig/definition_builder.rbs +2 -0
  184. data/sig/environment.rbs +70 -12
  185. data/sig/errors.rbs +13 -14
  186. data/sig/inline_parser.rbs +39 -2
  187. data/sig/locator.rbs +0 -2
  188. data/sig/manifest.yaml +0 -1
  189. data/sig/method_builder.rbs +3 -1
  190. data/sig/parser.rbs +31 -13
  191. data/sig/prototype/helpers.rbs +2 -0
  192. data/sig/resolver/type_name_resolver.rbs +35 -7
  193. data/sig/source.rbs +3 -3
  194. data/sig/type_param.rbs +13 -8
  195. data/sig/types.rbs +6 -7
  196. data/sig/unit_test/spy.rbs +0 -8
  197. data/sig/unit_test/type_assertions.rbs +11 -0
  198. data/src/ast.c +410 -153
  199. data/src/lexer.c +1392 -1313
  200. data/src/lexer.re +3 -0
  201. data/src/lexstate.c +58 -37
  202. data/src/location.c +8 -48
  203. data/src/parser.c +977 -516
  204. data/src/string.c +0 -48
  205. data/src/util/rbs_allocator.c +89 -71
  206. data/src/util/rbs_assert.c +1 -1
  207. data/src/util/rbs_buffer.c +2 -2
  208. data/src/util/rbs_constant_pool.c +10 -14
  209. data/src/util/rbs_encoding.c +4 -8
  210. data/src/util/rbs_unescape.c +56 -20
  211. data/stdlib/bigdecimal/0/big_decimal.rbs +116 -98
  212. data/stdlib/bigdecimal-math/0/big_math.rbs +169 -8
  213. data/stdlib/cgi/0/core.rbs +9 -393
  214. data/stdlib/cgi/0/manifest.yaml +1 -0
  215. data/stdlib/cgi-escape/0/escape.rbs +171 -0
  216. data/stdlib/coverage/0/coverage.rbs +7 -4
  217. data/stdlib/date/0/date.rbs +92 -79
  218. data/stdlib/date/0/date_time.rbs +25 -24
  219. data/stdlib/delegate/0/delegator.rbs +10 -7
  220. data/stdlib/did_you_mean/0/did_you_mean.rbs +17 -16
  221. data/stdlib/digest/0/digest.rbs +110 -0
  222. data/stdlib/erb/0/erb.rbs +748 -347
  223. data/stdlib/etc/0/etc.rbs +55 -50
  224. data/stdlib/fileutils/0/fileutils.rbs +158 -139
  225. data/stdlib/forwardable/0/forwardable.rbs +13 -10
  226. data/stdlib/io-console/0/io-console.rbs +2 -2
  227. data/stdlib/json/0/json.rbs +217 -136
  228. data/stdlib/monitor/0/monitor.rbs +3 -3
  229. data/stdlib/net-http/0/net-http.rbs +162 -134
  230. data/stdlib/objspace/0/objspace.rbs +17 -34
  231. data/stdlib/open-uri/0/open-uri.rbs +48 -8
  232. data/stdlib/open3/0/open3.rbs +469 -10
  233. data/stdlib/openssl/0/openssl.rbs +475 -357
  234. data/stdlib/optparse/0/optparse.rbs +26 -17
  235. data/stdlib/pathname/0/pathname.rbs +11 -1381
  236. data/stdlib/pp/0/pp.rbs +9 -8
  237. data/stdlib/prettyprint/0/prettyprint.rbs +7 -7
  238. data/stdlib/pstore/0/pstore.rbs +35 -30
  239. data/stdlib/psych/0/psych.rbs +65 -12
  240. data/stdlib/psych/0/store.rbs +2 -4
  241. data/stdlib/pty/0/pty.rbs +9 -6
  242. data/stdlib/random-formatter/0/random-formatter.rbs +277 -0
  243. data/stdlib/rdoc/0/code_object.rbs +2 -1
  244. data/stdlib/rdoc/0/parser.rbs +1 -1
  245. data/stdlib/rdoc/0/rdoc.rbs +1 -1
  246. data/stdlib/rdoc/0/store.rbs +1 -1
  247. data/stdlib/resolv/0/resolv.rbs +25 -68
  248. data/stdlib/ripper/0/ripper.rbs +22 -19
  249. data/stdlib/securerandom/0/manifest.yaml +2 -0
  250. data/stdlib/securerandom/0/securerandom.rbs +7 -20
  251. data/stdlib/shellwords/0/shellwords.rbs +2 -2
  252. data/stdlib/singleton/0/singleton.rbs +3 -0
  253. data/stdlib/socket/0/addrinfo.rbs +7 -7
  254. data/stdlib/socket/0/basic_socket.rbs +3 -3
  255. data/stdlib/socket/0/ip_socket.rbs +10 -8
  256. data/stdlib/socket/0/socket.rbs +23 -10
  257. data/stdlib/socket/0/tcp_server.rbs +1 -1
  258. data/stdlib/socket/0/tcp_socket.rbs +11 -3
  259. data/stdlib/socket/0/udp_socket.rbs +1 -1
  260. data/stdlib/socket/0/unix_server.rbs +1 -1
  261. data/stdlib/stringio/0/stringio.rbs +1177 -85
  262. data/stdlib/strscan/0/string_scanner.rbs +27 -25
  263. data/stdlib/tempfile/0/tempfile.rbs +25 -21
  264. data/stdlib/time/0/time.rbs +8 -6
  265. data/stdlib/timeout/0/timeout.rbs +63 -7
  266. data/stdlib/tsort/0/cyclic.rbs +3 -0
  267. data/stdlib/tsort/0/tsort.rbs +7 -6
  268. data/stdlib/uri/0/common.rbs +42 -20
  269. data/stdlib/uri/0/file.rbs +3 -3
  270. data/stdlib/uri/0/generic.rbs +26 -18
  271. data/stdlib/uri/0/http.rbs +2 -2
  272. data/stdlib/uri/0/ldap.rbs +2 -2
  273. data/stdlib/uri/0/mailto.rbs +3 -3
  274. data/stdlib/uri/0/rfc2396_parser.rbs +12 -12
  275. data/stdlib/zlib/0/deflate.rbs +4 -3
  276. data/stdlib/zlib/0/gzip_reader.rbs +6 -6
  277. data/stdlib/zlib/0/gzip_writer.rbs +14 -12
  278. data/stdlib/zlib/0/inflate.rbs +1 -1
  279. data/stdlib/zlib/0/need_dict.rbs +1 -1
  280. data/stdlib/zlib/0/zstream.rbs +1 -0
  281. metadata +50 -6
@@ -34,7 +34,7 @@ module RBS
34
34
  # ENV[''] = '0'
35
35
  # # Raises Errno::EINVAL (Invalid argument - ruby_setenv())
36
36
  #
37
- # * May not contain character `"="`:
37
+ # * May not contain character <code>"="</code>:
38
38
  # ENV['='] = '0'
39
39
  # # Raises Errno::EINVAL (Invalid argument - ruby_setenv(=))
40
40
  #
@@ -47,7 +47,7 @@ module RBS
47
47
  # ENV[Object.new] = '0'
48
48
  # # Raises TypeError (no implicit conversion of Object into String)
49
49
  #
50
- # * May not contain the NUL character `"\0"`:
50
+ # * May not contain the NUL character <code>"\0"</code>:
51
51
  #
52
52
  # ENV['foo'] = "\0"
53
53
  # # Raises ArgumentError (bad environment variable value: contains null byte)
@@ -140,7 +140,7 @@ module RBS
140
140
  #
141
141
  # * ::assoc: Returns a 2-element array containing the name and value of the
142
142
  # named environment variable if it exists:
143
- # * ::clone: Returns `ENV` (and issues a warning).
143
+ # * ::clone: Raises an exception.
144
144
  # * ::except: Returns a hash of all name/value pairs except those given.
145
145
  # * ::fetch: Returns the value for the given name.
146
146
  # * ::inspect: Returns the contents of `ENV` as a string.
@@ -156,7 +156,7 @@ module RBS
156
156
  # * ::to_a: Returns the entries as an array of 2-element Arrays.
157
157
  # * ::to_h: Returns a hash of entries selected by the block.
158
158
  # * ::to_hash: Returns a hash of all entries.
159
- # * ::to_s: Returns the string `'ENV'`.
159
+ # * ::to_s: Returns the string <code>'ENV'</code>.
160
160
  # * ::values: Returns all values as an array.
161
161
  # * ::values_at: Returns an array of the values for the given name.
162
162
  #
@@ -1001,11 +1001,12 @@ module RBS
1001
1001
  # ENV.include?('baz') # => false
1002
1002
  #
1003
1003
  # Returns `false` if `name` is the empty String or is a String containing
1004
- # character `'='`:
1004
+ # character <code>'='</code>:
1005
1005
  # ENV.include?('') # => false
1006
1006
  # ENV.include?('=') # => false
1007
1007
  #
1008
- # Raises an exception if `name` is a String containing the NUL character `"\0"`:
1008
+ # Raises an exception if `name` is a String containing the NUL character
1009
+ # <code>"\0"</code>:
1009
1010
  # ENV.include?("\0") # Raises ArgumentError (bad environment variable name: contains null byte)
1010
1011
  #
1011
1012
  # Raises an exception if `name` has an encoding that is not ASCII-compatible:
@@ -1034,11 +1035,12 @@ module RBS
1034
1035
  # ENV.include?('baz') # => false
1035
1036
  #
1036
1037
  # Returns `false` if `name` is the empty String or is a String containing
1037
- # character `'='`:
1038
+ # character <code>'='</code>:
1038
1039
  # ENV.include?('') # => false
1039
1040
  # ENV.include?('=') # => false
1040
1041
  #
1041
- # Raises an exception if `name` is a String containing the NUL character `"\0"`:
1042
+ # Raises an exception if `name` is a String containing the NUL character
1043
+ # <code>"\0"</code>:
1042
1044
  # ENV.include?("\0") # Raises ArgumentError (bad environment variable name: contains null byte)
1043
1045
  #
1044
1046
  # Raises an exception if `name` has an encoding that is not ASCII-compatible:
@@ -1067,11 +1069,12 @@ module RBS
1067
1069
  # ENV.include?('baz') # => false
1068
1070
  #
1069
1071
  # Returns `false` if `name` is the empty String or is a String containing
1070
- # character `'='`:
1072
+ # character <code>'='</code>:
1071
1073
  # ENV.include?('') # => false
1072
1074
  # ENV.include?('=') # => false
1073
1075
  #
1074
- # Raises an exception if `name` is a String containing the NUL character `"\0"`:
1076
+ # Raises an exception if `name` is a String containing the NUL character
1077
+ # <code>"\0"</code>:
1075
1078
  # ENV.include?("\0") # Raises ArgumentError (bad environment variable name: contains null byte)
1076
1079
  #
1077
1080
  # Raises an exception if `name` has an encoding that is not ASCII-compatible:
@@ -1132,11 +1135,12 @@ module RBS
1132
1135
  # ENV.include?('baz') # => false
1133
1136
  #
1134
1137
  # Returns `false` if `name` is the empty String or is a String containing
1135
- # character `'='`:
1138
+ # character <code>'='</code>:
1136
1139
  # ENV.include?('') # => false
1137
1140
  # ENV.include?('=') # => false
1138
1141
  #
1139
- # Raises an exception if `name` is a String containing the NUL character `"\0"`:
1142
+ # Raises an exception if `name` is a String containing the NUL character
1143
+ # <code>"\0"</code>:
1140
1144
  # ENV.include?("\0") # Raises ArgumentError (bad environment variable name: contains null byte)
1141
1145
  #
1142
1146
  # Raises an exception if `name` has an encoding that is not ASCII-compatible:
@@ -1173,9 +1177,10 @@ module RBS
1173
1177
  # variable.
1174
1178
  #
1175
1179
  # Returns `nil` if `name` is the empty String or is a String containing
1176
- # character `'='`.
1180
+ # character <code>'='</code>.
1177
1181
  #
1178
- # Raises an exception if `name` is a String containing the NUL character `"\0"`:
1182
+ # Raises an exception if `name` is a String containing the NUL character
1183
+ # <code>"\0"</code>:
1179
1184
  # ENV.assoc("\0") # Raises ArgumentError (bad environment variable name: contains null byte)
1180
1185
  #
1181
1186
  # Raises an exception if `name` has an encoding that is not ASCII-compatible:
@@ -0,0 +1,123 @@
1
+ module RBS
2
+ module Unnamed
3
+ class TopLevelSelfClass
4
+ private
5
+
6
+ # <!--
7
+ # rdoc-file=eval.c
8
+ # - include(module, ...) -> self
9
+ # -->
10
+ # Invokes Module.append_features on each parameter in reverse order.
11
+ #
12
+ %a{annotate:rdoc:copy:Module#include}
13
+ def include: (Module, *Module arg0) -> self
14
+
15
+ # <!--
16
+ # rdoc-file=eval.c
17
+ # - using(module) -> self
18
+ # -->
19
+ # Import class refinements from *module* into the current class or module
20
+ # definition.
21
+ #
22
+ %a{annotate:rdoc:copy:Module#using}
23
+ def using: (Module arg0) -> self
24
+
25
+ # <!--
26
+ # rdoc-file=proc.c
27
+ # - define_method(symbol, method) -> symbol
28
+ # - define_method(symbol) { block } -> symbol
29
+ # -->
30
+ # Defines an instance method in the receiver. The *method* parameter can be a
31
+ # `Proc`, a `Method` or an `UnboundMethod` object. If a block is specified, it
32
+ # is used as the method body. If a block or the *method* parameter has
33
+ # parameters, they're used as method parameters. This block is evaluated using
34
+ # #instance_eval.
35
+ #
36
+ # class A
37
+ # def fred
38
+ # puts "In Fred"
39
+ # end
40
+ # def create_method(name, &block)
41
+ # self.class.define_method(name, &block)
42
+ # end
43
+ # define_method(:wilma) { puts "Charge it!" }
44
+ # define_method(:flint) {|name| puts "I'm #{name}!"}
45
+ # end
46
+ # class B < A
47
+ # define_method(:barney, instance_method(:fred))
48
+ # end
49
+ # a = B.new
50
+ # a.barney
51
+ # a.wilma
52
+ # a.flint('Dino')
53
+ # a.create_method(:betty) { p self }
54
+ # a.betty
55
+ #
56
+ # <em>produces:</em>
57
+ #
58
+ # In Fred
59
+ # Charge it!
60
+ # I'm Dino!
61
+ # #<B:0x401b39e8>
62
+ #
63
+ %a{annotate:rdoc:copy:Module#define_method}
64
+ def define_method: (interned symbol, ^(?) [self: top] -> untyped | Method | UnboundMethod method) -> Symbol
65
+ | (interned symbol) { (?) [self: top] -> untyped } -> Symbol
66
+
67
+ # <!--
68
+ # rdoc-file=vm_method.c
69
+ # - public -> nil
70
+ # - public(method_name) -> method_name
71
+ # - public(method_name, method_name, ...) -> array
72
+ # - public(array) -> array
73
+ # -->
74
+ # With no arguments, sets the default visibility for subsequently defined
75
+ # methods to public. With arguments, sets the named methods to have public
76
+ # visibility. String arguments are converted to symbols. An Array of Symbols
77
+ # and/or Strings is also accepted. If a single argument is passed, it is
78
+ # returned. If no argument is passed, nil is returned. If multiple arguments are
79
+ # passed, the arguments are returned as an array.
80
+ #
81
+ %a{annotate:rdoc:copy:Module#public}
82
+ def public: () -> nil
83
+ | (Symbol method_name) -> Symbol
84
+ | (Symbol, Symbol, *Symbol method_name) -> Array[Symbol]
85
+ | (string method_name) -> string
86
+ | (interned, interned, *interned method_name) -> Array[interned]
87
+ | (Array[interned]) -> Array[interned]
88
+
89
+ # <!--
90
+ # rdoc-file=vm_method.c
91
+ # - private -> nil
92
+ # - private(method_name) -> method_name
93
+ # - private(method_name, method_name, ...) -> array
94
+ # - private(array) -> array
95
+ # -->
96
+ # With no arguments, sets the default visibility for subsequently defined
97
+ # methods to private. With arguments, sets the named methods to have private
98
+ # visibility. String arguments are converted to symbols. An Array of Symbols
99
+ # and/or Strings is also accepted. If a single argument is passed, it is
100
+ # returned. If no argument is passed, nil is returned. If multiple arguments are
101
+ # passed, the arguments are returned as an array.
102
+ #
103
+ # module Mod
104
+ # def a() end
105
+ # def b() end
106
+ # private
107
+ # def c() end
108
+ # private :a
109
+ # end
110
+ # Mod.private_instance_methods #=> [:a, :c]
111
+ #
112
+ # Note that to show a private method on RDoc, use <code>:doc:</code>.
113
+ #
114
+ %a{annotate:rdoc:copy:Module#private}
115
+ def private: () -> nil
116
+ | (Symbol method_name) -> Symbol
117
+ | (Symbol, Symbol, *Symbol method_name) -> Array[Symbol]
118
+ | (string method_name) -> string
119
+ | (interned, interned, *interned method_name) -> Array[interned]
120
+ | (Array[interned]) -> Array[interned]
121
+ end
122
+ end
123
+ end
@@ -31,12 +31,14 @@ module RBS
31
31
  # prng.rand(100) # => 42
32
32
  #
33
33
  # When `max` is a Float, `rand` returns a random floating point number between
34
- # 0.0 and `max`, including 0.0 and excluding `max`.
34
+ # 0.0 and `max`, including 0.0 and excluding `max`. Note that it behaves
35
+ # differently from Kernel.rand.
35
36
  #
36
- # prng.rand(1.5) # => 1.4600282860034115
37
+ # prng.rand(1.5) # => 1.4600282860034115
38
+ # rand(1.5) # => 0
37
39
  #
38
40
  # When `range` is a Range, `rand` returns a random number where
39
- # `range.member?(number) == true`.
41
+ # <code>range.member?(number) == true</code>.
40
42
  #
41
43
  # prng.rand(5..9) # => one of [5, 6, 7, 8, 9]
42
44
  # prng.rand(5...9) # => one of [5, 6, 7, 8]
@@ -44,7 +46,8 @@ module RBS
44
46
  # prng.rand(5.0...9.0) # => between 5.0 and 9.0, excluding 9.0
45
47
  #
46
48
  # Both the beginning and ending values of the range must respond to subtract
47
- # (`-`) and add (`+`)methods, or rand will raise an ArgumentError.
49
+ # (<code>-</code>) and add (<code>+</code>)methods, or rand will raise an
50
+ # ArgumentError.
48
51
  #
49
52
  %a{annotate:rdoc:copy:Random#rand}
50
53
  def rand: (?0) -> Float
@@ -85,9 +88,10 @@ module RBS
85
88
  # <!-- rdoc-file=lib/random/formatter.rb -->
86
89
  # ## Random number formatter.
87
90
  #
88
- # Formats generated random numbers in many manners. When `'random/formatter'` is
89
- # required, several methods are added to empty core module `Random::Formatter`,
90
- # 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.
91
95
  #
92
96
  # Standard library SecureRandom is also extended with the module, and the
93
97
  # methods described below are available as a module methods in it.
@@ -146,56 +150,6 @@ module RBS
146
150
  #
147
151
  %a{annotate:rdoc:copy:Random::Formatter}
148
152
  module Random_Formatter
149
- # <!--
150
- # rdoc-file=lib/random/formatter.rb
151
- # - base64(n=nil)
152
- # -->
153
- # Generate a random base64 string.
154
- #
155
- # The argument *n* specifies the length, in bytes, of the random number to be
156
- # generated. The length of the result string is about 4/3 of *n*.
157
- #
158
- # If *n* is not specified or is nil, 16 is assumed. It may be larger in the
159
- # future.
160
- #
161
- # The result may contain A-Z, a-z, 0-9, "+", "/" and "=".
162
- #
163
- # require 'random/formatter'
164
- #
165
- # Random.base64 #=> "/2BuBuLf3+WfSKyQbRcc/A=="
166
- # # or
167
- # prng = Random.new
168
- # prng.base64 #=> "6BbW0pxO0YENxn38HMUbcQ=="
169
- #
170
- # See RFC 3548 for the definition of base64.
171
- #
172
- %a{annotate:rdoc:copy:Random::Formatter#base64}
173
- def base64: (?Integer? n) -> String
174
-
175
- # <!--
176
- # rdoc-file=lib/random/formatter.rb
177
- # - hex(n=nil)
178
- # -->
179
- # Generate a random hexadecimal string.
180
- #
181
- # The argument *n* specifies the length, in bytes, of the random number to be
182
- # generated. The length of the resulting hexadecimal string is twice of *n*.
183
- #
184
- # If *n* is not specified or is nil, 16 is assumed. It may be larger in the
185
- # future.
186
- #
187
- # The result may contain 0-9 and a-f.
188
- #
189
- # require 'random/formatter'
190
- #
191
- # Random.hex #=> "eb693ec8252cd630102fd0d0fb7c3485"
192
- # # or
193
- # prng = Random.new
194
- # prng.hex #=> "91dc3bfb4de5b11d029d376634589b61"
195
- #
196
- %a{annotate:rdoc:copy:Random::Formatter#hex}
197
- def hex: (?Integer? n) -> String
198
-
199
153
  # <!-- rdoc-file=random.c -->
200
154
  # Generates formatted random number from raw random bytes. See Random#rand.
201
155
  #
@@ -208,9 +162,6 @@ module RBS
208
162
  | (::Range[Integer] n) -> Integer
209
163
  | (::Range[Numeric] n) -> Numeric
210
164
 
211
- %a{annotate:rdoc:copy:Random::Formatter#random_byte}
212
- def random_bytes: (?Integer? n) -> String
213
-
214
165
  # <!--
215
166
  # rdoc-file=random.c
216
167
  # - prng.random_number -> float
@@ -230,64 +181,6 @@ module RBS
230
181
  | (?::Range[Float]? n) -> Float
231
182
  | (?::Range[Integer]? n) -> Integer
232
183
  | (?::Range[Numeric]? n) -> Numeric
233
-
234
- # <!--
235
- # rdoc-file=lib/random/formatter.rb
236
- # - urlsafe_base64(n=nil, padding=false)
237
- # -->
238
- # Generate a random URL-safe base64 string.
239
- #
240
- # The argument *n* specifies the length, in bytes, of the random number to be
241
- # generated. The length of the result string is about 4/3 of *n*.
242
- #
243
- # If *n* is not specified or is nil, 16 is assumed. It may be larger in the
244
- # future.
245
- #
246
- # The boolean argument *padding* specifies the padding. If it is false or nil,
247
- # padding is not generated. Otherwise padding is generated. By default, padding
248
- # is not generated because "=" may be used as a URL delimiter.
249
- #
250
- # The result may contain A-Z, a-z, 0-9, "-" and "_". "=" is also used if
251
- # *padding* is true.
252
- #
253
- # require 'random/formatter'
254
- #
255
- # Random.urlsafe_base64 #=> "b4GOKm4pOYU_-BOXcrUGDg"
256
- # # or
257
- # prng = Random.new
258
- # prng.urlsafe_base64 #=> "UZLdOkzop70Ddx-IJR0ABg"
259
- #
260
- # prng.urlsafe_base64(nil, true) #=> "i0XQ-7gglIsHGV2_BNPrdQ=="
261
- # prng.urlsafe_base64(nil, true) #=> "-M8rLhr7JEpJlqFGUMmOxg=="
262
- #
263
- # See RFC 3548 for the definition of URL-safe base64.
264
- #
265
- %a{annotate:rdoc:copy:Random::Formatter#urlsafe_base64}
266
- def urlsafe_base64: (?Integer? n, ?boolish padding) -> String
267
-
268
- # <!--
269
- # rdoc-file=lib/random/formatter.rb
270
- # - uuid()
271
- # -->
272
- # Generate a random v4 UUID (Universally Unique IDentifier).
273
- #
274
- # require 'random/formatter'
275
- #
276
- # Random.uuid #=> "2d931510-d99f-494a-8c67-87feb05e1594"
277
- # Random.uuid #=> "bad85eb9-0713-4da7-8d36-07a8e4b00eab"
278
- # # or
279
- # prng = Random.new
280
- # prng.uuid #=> "62936e70-1815-439b-bf89-8492855a7e6b"
281
- #
282
- # The version 4 UUID is purely random (except the version). It doesn't contain
283
- # meaningful information such as MAC addresses, timestamps, etc.
284
- #
285
- # The result contains 122 random bits (15.25 random bytes).
286
- #
287
- # See [RFC9562](https://www.rfc-editor.org/rfc/rfc9562) for details of UUIDv4.
288
- #
289
- %a{annotate:rdoc:copy:Random::Formatter#uuid}
290
- def uuid: () -> String
291
184
  end
292
185
  end
293
186
  end