rbs 4.0.0.dev.4 → 4.1.0.pre.2

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 (306) hide show
  1. checksums.yaml +4 -4
  2. data/.clang-format +1 -0
  3. data/.github/dependabot.yml +16 -14
  4. data/.github/workflows/bundle-update.yml +63 -0
  5. data/.github/workflows/c-check.yml +21 -11
  6. data/.github/workflows/comments.yml +5 -3
  7. data/.github/workflows/dependabot.yml +2 -2
  8. data/.github/workflows/jruby.yml +67 -0
  9. data/.github/workflows/milestone.yml +83 -0
  10. data/.github/workflows/ruby.yml +63 -24
  11. data/.github/workflows/rust.yml +184 -0
  12. data/.github/workflows/truffleruby.yml +54 -0
  13. data/.github/workflows/typecheck.yml +5 -2
  14. data/.github/workflows/wasm.yml +53 -0
  15. data/.github/workflows/windows.yml +8 -2
  16. data/.gitignore +11 -0
  17. data/.rubocop.yml +1 -1
  18. data/CHANGELOG.md +357 -0
  19. data/README.md +4 -4
  20. data/Rakefile +365 -33
  21. data/Steepfile +8 -0
  22. data/config.yml +450 -24
  23. data/core/array.rbs +443 -363
  24. data/core/basic_object.rbs +9 -8
  25. data/core/binding.rbs +0 -2
  26. data/core/builtin.rbs +9 -8
  27. data/core/class.rbs +11 -8
  28. data/core/comparable.rbs +55 -34
  29. data/core/complex.rbs +104 -78
  30. data/core/dir.rbs +61 -49
  31. data/core/encoding.rbs +12 -15
  32. data/core/enumerable.rbs +288 -196
  33. data/core/enumerator/arithmetic_sequence.rbs +70 -0
  34. data/core/enumerator/product.rbs +5 -5
  35. data/core/enumerator.rbs +91 -28
  36. data/core/errno.rbs +11 -2
  37. data/core/errors.rbs +58 -29
  38. data/core/exception.rbs +13 -13
  39. data/core/fiber.rbs +74 -54
  40. data/core/file.rbs +260 -1151
  41. data/core/file_constants.rbs +463 -0
  42. data/core/file_stat.rbs +534 -0
  43. data/core/file_test.rbs +3 -3
  44. data/core/float.rbs +257 -92
  45. data/core/gc.rbs +425 -281
  46. data/core/hash.rbs +1151 -829
  47. data/core/integer.rbs +156 -195
  48. data/core/io/buffer.rbs +53 -42
  49. data/core/io/wait.rbs +13 -35
  50. data/core/io.rbs +216 -150
  51. data/core/kernel.rbs +239 -163
  52. data/core/marshal.rbs +4 -4
  53. data/core/match_data.rbs +15 -13
  54. data/core/math.rbs +107 -66
  55. data/core/method.rbs +69 -33
  56. data/core/module.rbs +302 -150
  57. data/core/nil_class.rbs +7 -6
  58. data/core/numeric.rbs +77 -63
  59. data/core/object.rbs +9 -11
  60. data/core/object_space/weak_key_map.rbs +7 -7
  61. data/core/object_space.rbs +30 -23
  62. data/core/pathname.rbs +1322 -0
  63. data/core/proc.rbs +95 -58
  64. data/core/process.rbs +222 -202
  65. data/core/ractor.rbs +371 -515
  66. data/core/random.rbs +21 -3
  67. data/core/range.rbs +181 -79
  68. data/core/rational.rbs +60 -89
  69. data/core/rbs/ops.rbs +154 -0
  70. data/core/rbs/unnamed/argf.rbs +63 -56
  71. data/core/rbs/unnamed/env_class.rbs +19 -14
  72. data/core/rbs/unnamed/main_class.rbs +123 -0
  73. data/core/rbs/unnamed/random.rbs +11 -118
  74. data/core/regexp.rbs +258 -214
  75. data/core/ruby.rbs +53 -0
  76. data/core/ruby_vm.rbs +78 -34
  77. data/core/rubygems/config_file.rbs +5 -5
  78. data/core/rubygems/errors.rbs +4 -71
  79. data/core/rubygems/requirement.rbs +5 -5
  80. data/core/rubygems/rubygems.rbs +16 -82
  81. data/core/rubygems/version.rbs +2 -3
  82. data/core/set.rbs +493 -363
  83. data/core/signal.rbs +26 -16
  84. data/core/string.rbs +3234 -1285
  85. data/core/struct.rbs +43 -42
  86. data/core/symbol.rbs +41 -34
  87. data/core/thread.rbs +141 -73
  88. data/core/time.rbs +81 -50
  89. data/core/trace_point.rbs +41 -35
  90. data/core/true_class.rbs +2 -2
  91. data/core/unbound_method.rbs +24 -16
  92. data/core/warning.rbs +7 -7
  93. data/docs/CONTRIBUTING.md +2 -1
  94. data/docs/aliases.md +79 -0
  95. data/docs/collection.md +3 -3
  96. data/docs/config.md +171 -0
  97. data/docs/encoding.md +56 -0
  98. data/docs/gem.md +0 -1
  99. data/docs/inline.md +634 -0
  100. data/docs/rbs_by_example.md +20 -20
  101. data/docs/rust.md +96 -0
  102. data/docs/sigs.md +3 -3
  103. data/docs/syntax.md +48 -18
  104. data/docs/type_fingerprint.md +21 -0
  105. data/docs/wasm_serialization.md +80 -0
  106. data/exe/rbs +1 -1
  107. data/ext/rbs_extension/ast_translation.c +1441 -671
  108. data/ext/rbs_extension/ast_translation.h +7 -0
  109. data/ext/rbs_extension/class_constants.c +18 -2
  110. data/ext/rbs_extension/class_constants.h +9 -0
  111. data/ext/rbs_extension/extconf.rb +6 -1
  112. data/ext/rbs_extension/legacy_location.c +33 -56
  113. data/ext/rbs_extension/legacy_location.h +37 -0
  114. data/ext/rbs_extension/main.c +183 -39
  115. data/include/rbs/ast.h +597 -297
  116. data/include/rbs/defines.h +40 -0
  117. data/include/rbs/lexer.h +31 -11
  118. data/include/rbs/location.h +25 -44
  119. data/include/rbs/parser.h +6 -6
  120. data/include/rbs/serialize.h +39 -0
  121. data/include/rbs/string.h +0 -2
  122. data/include/rbs/util/rbs_allocator.h +34 -13
  123. data/include/rbs/util/rbs_assert.h +12 -1
  124. data/include/rbs/util/rbs_constant_pool.h +0 -3
  125. data/include/rbs/util/rbs_encoding.h +2 -0
  126. data/include/rbs/util/rbs_unescape.h +2 -1
  127. data/include/rbs.h +8 -0
  128. data/lib/rbs/annotate/rdoc_annotator.rb +27 -31
  129. data/lib/rbs/ast/annotation.rb +1 -1
  130. data/lib/rbs/ast/comment.rb +1 -1
  131. data/lib/rbs/ast/declarations.rb +10 -10
  132. data/lib/rbs/ast/members.rb +14 -14
  133. data/lib/rbs/ast/ruby/annotations.rb +335 -3
  134. data/lib/rbs/ast/ruby/comment_block.rb +30 -4
  135. data/lib/rbs/ast/ruby/declarations.rb +209 -4
  136. data/lib/rbs/ast/ruby/helpers/constant_helper.rb +4 -0
  137. data/lib/rbs/ast/ruby/helpers/location_helper.rb +1 -1
  138. data/lib/rbs/ast/ruby/members.rb +571 -22
  139. data/lib/rbs/ast/type_param.rb +24 -4
  140. data/lib/rbs/buffer.rb +66 -24
  141. data/lib/rbs/cli/diff.rb +16 -15
  142. data/lib/rbs/cli/validate.rb +38 -106
  143. data/lib/rbs/cli.rb +55 -24
  144. data/lib/rbs/collection/config/lockfile_generator.rb +28 -3
  145. data/lib/rbs/collection/sources/git.rb +7 -0
  146. data/lib/rbs/definition.rb +1 -1
  147. data/lib/rbs/definition_builder/ancestor_builder.rb +62 -9
  148. data/lib/rbs/definition_builder/method_builder.rb +32 -6
  149. data/lib/rbs/definition_builder.rb +147 -25
  150. data/lib/rbs/diff.rb +7 -1
  151. data/lib/rbs/environment.rb +235 -75
  152. data/lib/rbs/environment_loader.rb +0 -6
  153. data/lib/rbs/errors.rb +27 -18
  154. data/lib/rbs/inline_parser.rb +377 -15
  155. data/lib/rbs/location_aux.rb +1 -1
  156. data/lib/rbs/locator.rb +5 -1
  157. data/lib/rbs/method_type.rb +5 -3
  158. data/lib/rbs/namespace.rb +47 -11
  159. data/lib/rbs/parser_aux.rb +20 -7
  160. data/lib/rbs/prototype/helpers.rb +57 -0
  161. data/lib/rbs/prototype/rb.rb +3 -28
  162. data/lib/rbs/prototype/rbi.rb +3 -20
  163. data/lib/rbs/prototype/runtime.rb +10 -0
  164. data/lib/rbs/resolver/constant_resolver.rb +2 -2
  165. data/lib/rbs/resolver/type_name_resolver.rb +120 -44
  166. data/lib/rbs/rewriter.rb +70 -0
  167. data/lib/rbs/subtractor.rb +3 -1
  168. data/lib/rbs/test/type_check.rb +25 -3
  169. data/lib/rbs/type_name.rb +34 -14
  170. data/lib/rbs/types.rb +88 -78
  171. data/lib/rbs/unit_test/type_assertions.rb +44 -8
  172. data/lib/rbs/validator.rb +2 -2
  173. data/lib/rbs/version.rb +1 -1
  174. data/lib/rbs/wasm/deserializer.rb +213 -0
  175. data/lib/rbs/wasm/location.rb +61 -0
  176. data/lib/rbs/wasm/parser.rb +137 -0
  177. data/lib/rbs/wasm/runtime.rb +217 -0
  178. data/lib/rbs/wasm/serialization_schema.rb +110 -0
  179. data/lib/rbs.rb +13 -2
  180. data/lib/rdoc/discover.rb +1 -1
  181. data/lib/rdoc_plugin/parser.rb +1 -1
  182. data/rbs.gemspec +24 -6
  183. data/schema/typeParam.json +17 -1
  184. data/sig/annotate/rdoc_annotater.rbs +12 -9
  185. data/sig/ast/ruby/annotations.rbs +364 -4
  186. data/sig/ast/ruby/comment_block.rbs +8 -0
  187. data/sig/ast/ruby/declarations.rbs +102 -4
  188. data/sig/ast/ruby/members.rbs +128 -2
  189. data/sig/buffer.rbs +19 -1
  190. data/sig/cli/diff.rbs +5 -11
  191. data/sig/cli/validate.rbs +12 -8
  192. data/sig/cli.rbs +18 -18
  193. data/sig/collection/config/lockfile_generator.rbs +2 -0
  194. data/sig/definition.rbs +6 -1
  195. data/sig/definition_builder.rbs +2 -0
  196. data/sig/environment.rbs +70 -12
  197. data/sig/errors.rbs +13 -14
  198. data/sig/inline_parser.rbs +41 -2
  199. data/sig/locator.rbs +0 -2
  200. data/sig/manifest.yaml +0 -2
  201. data/sig/method_builder.rbs +3 -1
  202. data/sig/namespace.rbs +20 -0
  203. data/sig/parser.rbs +41 -13
  204. data/sig/prototype/helpers.rbs +2 -0
  205. data/sig/resolver/type_name_resolver.rbs +36 -10
  206. data/sig/rewriter.rbs +45 -0
  207. data/sig/source.rbs +3 -3
  208. data/sig/type_param.rbs +13 -8
  209. data/sig/typename.rbs +15 -0
  210. data/sig/types.rbs +6 -7
  211. data/sig/unit_test/spy.rbs +0 -8
  212. data/sig/unit_test/type_assertions.rbs +15 -0
  213. data/sig/wasm/deserializer.rbs +66 -0
  214. data/sig/wasm/serialization_schema.rbs +13 -0
  215. data/src/ast.c +443 -162
  216. data/src/lexer.c +1415 -1313
  217. data/src/lexer.re +4 -0
  218. data/src/lexstate.c +63 -37
  219. data/src/location.c +7 -47
  220. data/src/parser.c +1032 -521
  221. data/src/serialize.c +958 -0
  222. data/src/string.c +0 -48
  223. data/src/util/rbs_allocator.c +89 -74
  224. data/src/util/rbs_assert.c +1 -1
  225. data/src/util/rbs_buffer.c +2 -2
  226. data/src/util/rbs_constant_pool.c +10 -14
  227. data/src/util/rbs_encoding.c +4 -8
  228. data/src/util/rbs_unescape.c +56 -20
  229. data/stdlib/abbrev/0/array.rbs +1 -1
  230. data/stdlib/bigdecimal/0/big_decimal.rbs +116 -98
  231. data/stdlib/bigdecimal-math/0/big_math.rbs +169 -8
  232. data/stdlib/cgi/0/core.rbs +9 -393
  233. data/stdlib/cgi/0/manifest.yaml +1 -0
  234. data/stdlib/cgi-escape/0/escape.rbs +171 -0
  235. data/stdlib/coverage/0/coverage.rbs +7 -4
  236. data/stdlib/csv/0/csv.rbs +5 -5
  237. data/stdlib/date/0/date.rbs +92 -79
  238. data/stdlib/date/0/date_time.rbs +25 -24
  239. data/stdlib/delegate/0/delegator.rbs +10 -7
  240. data/stdlib/did_you_mean/0/did_you_mean.rbs +17 -16
  241. data/stdlib/digest/0/digest.rbs +111 -1
  242. data/stdlib/erb/0/erb.rbs +748 -347
  243. data/stdlib/etc/0/etc.rbs +73 -54
  244. data/stdlib/fileutils/0/fileutils.rbs +179 -160
  245. data/stdlib/forwardable/0/forwardable.rbs +13 -10
  246. data/stdlib/io-console/0/io-console.rbs +2 -2
  247. data/stdlib/json/0/json.rbs +223 -142
  248. data/stdlib/monitor/0/monitor.rbs +3 -3
  249. data/stdlib/net-http/0/net-http.rbs +162 -134
  250. data/stdlib/objspace/0/objspace.rbs +17 -34
  251. data/stdlib/open-uri/0/open-uri.rbs +48 -8
  252. data/stdlib/open3/0/open3.rbs +469 -10
  253. data/stdlib/openssl/0/openssl.rbs +482 -364
  254. data/stdlib/optparse/0/optparse.rbs +26 -17
  255. data/stdlib/pathname/0/pathname.rbs +11 -1381
  256. data/stdlib/pp/0/pp.rbs +9 -8
  257. data/stdlib/prettyprint/0/prettyprint.rbs +7 -7
  258. data/stdlib/pstore/0/pstore.rbs +35 -30
  259. data/stdlib/psych/0/psych.rbs +65 -12
  260. data/stdlib/psych/0/store.rbs +2 -4
  261. data/stdlib/pty/0/pty.rbs +9 -6
  262. data/stdlib/random-formatter/0/random-formatter.rbs +277 -0
  263. data/stdlib/rdoc/0/code_object.rbs +2 -1
  264. data/stdlib/rdoc/0/parser.rbs +1 -1
  265. data/stdlib/rdoc/0/rdoc.rbs +1 -1
  266. data/stdlib/rdoc/0/store.rbs +1 -1
  267. data/stdlib/resolv/0/resolv.rbs +26 -69
  268. data/stdlib/ripper/0/ripper.rbs +22 -19
  269. data/stdlib/securerandom/0/manifest.yaml +2 -0
  270. data/stdlib/securerandom/0/securerandom.rbs +7 -20
  271. data/stdlib/shellwords/0/shellwords.rbs +3 -3
  272. data/stdlib/singleton/0/singleton.rbs +3 -0
  273. data/stdlib/socket/0/addrinfo.rbs +7 -7
  274. data/stdlib/socket/0/basic_socket.rbs +3 -3
  275. data/stdlib/socket/0/ip_socket.rbs +10 -8
  276. data/stdlib/socket/0/socket.rbs +23 -10
  277. data/stdlib/socket/0/tcp_server.rbs +1 -1
  278. data/stdlib/socket/0/tcp_socket.rbs +11 -3
  279. data/stdlib/socket/0/udp_socket.rbs +1 -1
  280. data/stdlib/socket/0/unix_server.rbs +1 -1
  281. data/stdlib/stringio/0/stringio.rbs +1209 -95
  282. data/stdlib/strscan/0/string_scanner.rbs +101 -80
  283. data/stdlib/tempfile/0/tempfile.rbs +25 -21
  284. data/stdlib/time/0/time.rbs +8 -6
  285. data/stdlib/timeout/0/timeout.rbs +63 -7
  286. data/stdlib/tsort/0/cyclic.rbs +4 -1
  287. data/stdlib/tsort/0/interfaces.rbs +8 -8
  288. data/stdlib/tsort/0/tsort.rbs +16 -15
  289. data/stdlib/uri/0/common.rbs +42 -20
  290. data/stdlib/uri/0/file.rbs +3 -3
  291. data/stdlib/uri/0/generic.rbs +26 -18
  292. data/stdlib/uri/0/http.rbs +2 -2
  293. data/stdlib/uri/0/ldap.rbs +2 -2
  294. data/stdlib/uri/0/mailto.rbs +3 -3
  295. data/stdlib/uri/0/rfc2396_parser.rbs +12 -12
  296. data/stdlib/zlib/0/deflate.rbs +4 -3
  297. data/stdlib/zlib/0/gzip_reader.rbs +8 -8
  298. data/stdlib/zlib/0/gzip_writer.rbs +14 -12
  299. data/stdlib/zlib/0/inflate.rbs +1 -1
  300. data/stdlib/zlib/0/need_dict.rbs +1 -1
  301. data/stdlib/zlib/0/zstream.rbs +1 -0
  302. data/wasm/README.md +59 -0
  303. data/wasm/rbs_wasm.c +411 -0
  304. metadata +56 -8
  305. data/.vscode/extensions.json +0 -5
  306. data/.vscode/settings.json +0 -19
data/core/struct.rbs CHANGED
@@ -2,9 +2,9 @@
2
2
  # Class Struct provides a convenient way to create a simple class that can store
3
3
  # and fetch values.
4
4
  #
5
- # This example creates a subclass of `Struct`, `Struct::Customer`; the first
6
- # argument, a string, is the name of the subclass; the other arguments, symbols,
7
- # determine the *members* of the new subclass.
5
+ # This example creates a subclass of `Struct`, <code>Struct::Customer</code>;
6
+ # the first argument, a string, is the name of the subclass; the other
7
+ # arguments, symbols, determine the *members* of the new subclass.
8
8
  #
9
9
  # Customer = Struct.new('Customer', :name, :address, :zip)
10
10
  # Customer.name # => "Struct::Customer"
@@ -18,7 +18,7 @@
18
18
  # methods # => [:zip, :address=, :zip=, :address, :name, :name=]
19
19
  #
20
20
  # An instance of the subclass may be created, and its members assigned values,
21
- # via method `::new`:
21
+ # via method <code>::new</code>:
22
22
  #
23
23
  # joe = Customer.new("Joe Smith", "123 Maple, Anytown NC", 12345)
24
24
  # joe # => #<struct Struct::Customer name="Joe Smith", address="123 Maple, Anytown NC", zip=12345>
@@ -71,10 +71,10 @@
71
71
  #
72
72
  # ### Methods for Comparing
73
73
  #
74
- # * #==: Returns whether a given object is equal to `self`, using `==` to
75
- # compare member values.
76
- # * #eql?: Returns whether a given object is equal to `self`, using `eql?` to
77
- # compare member values.
74
+ # * #==: Returns whether a given object is equal to `self`, using
75
+ # <code>==</code> to compare member values.
76
+ # * #eql?: Returns whether a given object is equal to `self`, using
77
+ # <code>eql?</code> to compare member values.
78
78
  #
79
79
  # ### Methods for Fetching
80
80
  #
@@ -104,8 +104,8 @@
104
104
  # * #inspect (aliased as #to_s): Returns a string representation of `self`.
105
105
  # * #to_h: Returns a hash of the member name/value pairs in `self`.
106
106
  #
107
- class Struct[Elem]
108
- include Enumerable[Elem]
107
+ class Struct[E]
108
+ include Enumerable[E]
109
109
 
110
110
  # The types that can be used when "indexing" into a `Struct` via `[]`, `[]=`, `dig`, and
111
111
  # `deconstruct_keys`.
@@ -119,21 +119,21 @@ class Struct[Elem]
119
119
  # - Struct_subclass.new(*member_names) -> Struct_subclass_instance
120
120
  # - Struct_subclass.new(**member_names) -> Struct_subclass_instance
121
121
  # -->
122
- # `Struct.new` returns a new subclass of `Struct`. The new subclass:
122
+ # <code>Struct.new</code> returns a new subclass of `Struct`. The new subclass:
123
123
  #
124
124
  # * May be anonymous, or may have the name given by `class_name`.
125
125
  # * May have members as given by `member_names`.
126
126
  # * May have initialization via ordinary arguments, or via keyword arguments
127
127
  #
128
- # The new subclass has its own method `::new`; thus:
128
+ # The new subclass has its own method <code>::new</code>; thus:
129
129
  #
130
130
  # Foo = Struct.new('Foo', :foo, :bar) # => Struct::Foo
131
131
  # f = Foo.new(0, 1) # => #<struct Struct::Foo foo=0, bar=1>
132
132
  #
133
- # **\Class Name**
133
+ # **Class Name**
134
134
  #
135
135
  # With string argument `class_name`, returns a new subclass of `Struct` named
136
- # `Struct::*class_name`*:
136
+ # <code>Struct::<em>class_name</em></code>:
137
137
  #
138
138
  # Foo = Struct.new('Foo', :foo, :bar) # => Struct::Foo
139
139
  # Foo.name # => "Struct::Foo"
@@ -158,7 +158,7 @@ class Struct[Elem]
158
158
  # dave # => #<struct Struct::Customer name="Dave", address="123 Main">
159
159
  # dave.greeting # => "Hello Dave at 123 Main"
160
160
  #
161
- # Output, from `Struct.new`:
161
+ # Output, from <code>Struct.new</code>:
162
162
  #
163
163
  # "The new subclass is Struct::Customer"
164
164
  #
@@ -184,7 +184,7 @@ class Struct[Elem]
184
184
  #
185
185
  # A subclass returned by Struct.new has these singleton methods:
186
186
  #
187
- # * Method `::new ` creates an instance of the subclass:
187
+ # * Method <code>::new </code> creates an instance of the subclass:
188
188
  #
189
189
  # Foo.new # => #<struct Struct::Foo foo=nil, bar=nil>
190
190
  # Foo.new(0) # => #<struct Struct::Foo foo=0, bar=nil>
@@ -197,12 +197,13 @@ class Struct[Elem]
197
197
  # Foo.new(foo: 0, bar: 1, baz: 2)
198
198
  # # Raises ArgumentError: unknown keywords: baz
199
199
  #
200
- # * Method `:inspect` returns a string representation of the subclass:
200
+ # * Method <code>:inspect</code> returns a string representation of the
201
+ # subclass:
201
202
  #
202
203
  # Foo.inspect
203
204
  # # => "Struct::Foo"
204
205
  #
205
- # * Method `::members` returns an array of the member names:
206
+ # * Method <code>::members</code> returns an array of the member names:
206
207
  #
207
208
  # Foo.members # => [:foo, :bar]
208
209
  #
@@ -211,8 +212,8 @@ class Struct[Elem]
211
212
  # By default, the arguments for initializing an instance of the new subclass can
212
213
  # be both positional and keyword arguments.
213
214
  #
214
- # Optional keyword argument `keyword_init:` allows to force only one type of
215
- # arguments to be accepted:
215
+ # Optional keyword argument <code>keyword_init:</code> allows to force only one
216
+ # type of arguments to be accepted:
216
217
  #
217
218
  # KeywordsOnly = Struct.new(:foo, :bar, keyword_init: true)
218
219
  # KeywordsOnly.new(bar: 1, foo: 0)
@@ -252,8 +253,8 @@ class Struct[Elem]
252
253
  # rdoc-file=struct.c
253
254
  # - StructClass::keyword_init? -> true or falsy value
254
255
  # -->
255
- # Returns `true` if the class was initialized with `keyword_init: true`.
256
- # Otherwise returns `nil` or `false`.
256
+ # Returns `true` if the class was initialized with <code>keyword_init:
257
+ # true</code>. Otherwise returns `nil` or `false`.
257
258
  #
258
259
  # Examples:
259
260
  # Foo = Struct.new(:a)
@@ -272,8 +273,8 @@ class Struct[Elem]
272
273
  # Returns `true` if and only if the following are true; otherwise returns
273
274
  # `false`:
274
275
  #
275
- # * `other.class == self.class`.
276
- # * For each member name `name`, `other.name == self.name`.
276
+ # * <code>other.class == self.class</code>.
277
+ # * For each member name `name`, <code>other.name == self.name</code>.
277
278
  #
278
279
  # Examples:
279
280
  #
@@ -294,8 +295,8 @@ class Struct[Elem]
294
295
  # Returns `true` if and only if the following are true; otherwise returns
295
296
  # `false`:
296
297
  #
297
- # * `other.class == self.class`.
298
- # * For each member name `name`, `other.name.eql?(self.name)`.
298
+ # * <code>other.class == self.class</code>.
299
+ # * For each member name `name`, <code>other.name.eql?(self.name)</code>.
299
300
  #
300
301
  # Customer = Struct.new(:name, :address, :zip)
301
302
  # joe = Customer.new("Joe Smith", "123 Maple, Anytown NC", 12345)
@@ -361,7 +362,7 @@ class Struct[Elem]
361
362
  #
362
363
  # Related: #members.
363
364
  #
364
- def to_a: () -> Array[Elem]
365
+ def to_a: () -> Array[E]
365
366
 
366
367
  # <!--
367
368
  # rdoc-file=struct.c
@@ -384,8 +385,8 @@ class Struct[Elem]
384
385
  #
385
386
  # Raises ArgumentError if the block returns an inappropriate value.
386
387
  #
387
- def to_h: () -> Hash[Symbol, Elem]
388
- | [K, V] () { (Symbol key, Elem value) -> [K, V] } -> Hash[K, V]
388
+ def to_h: () -> Hash[Symbol, E]
389
+ | [K, V] () { (Symbol key, E value) -> [K, V] } -> Hash[K, V]
389
390
 
390
391
  # <!-- rdoc-file=struct.c -->
391
392
  # Returns the values in `self` as an array:
@@ -440,8 +441,8 @@ class Struct[Elem]
440
441
  #
441
442
  # Related: #each_pair.
442
443
  #
443
- def each: () -> Enumerator[Elem, self]
444
- | () { (Elem value) -> void } -> self
444
+ def each: () -> Enumerator[E, self]
445
+ | () { (E value) -> void } -> self
445
446
 
446
447
  # <!--
447
448
  # rdoc-file=struct.c
@@ -464,8 +465,8 @@ class Struct[Elem]
464
465
  #
465
466
  # Related: #each.
466
467
  #
467
- def each_pair: () -> Enumerator[[Symbol, Elem], self]
468
- | () { ([Symbol, Elem] key_value) -> void } -> self
468
+ def each_pair: () -> Enumerator[[Symbol, E], self]
469
+ | () { ([Symbol, E] key_value) -> void } -> self
469
470
 
470
471
  # <!--
471
472
  # rdoc-file=struct.c
@@ -483,15 +484,15 @@ class Struct[Elem]
483
484
  #
484
485
  # Raises NameError if `name` is not the name of a member.
485
486
  #
486
- # With integer argument `n` given, returns `self.values[n]` if `n` is in range;
487
- # see Array@Array+Indexes:
487
+ # With integer argument `n` given, returns <code>self.values[n]</code> if `n` is
488
+ # in range; see Array@Array+Indexes:
488
489
  #
489
490
  # joe[2] # => 12345
490
491
  # joe[-2] # => "123 Maple, Anytown NC"
491
492
  #
492
493
  # Raises IndexError if `n` is out of range.
493
494
  #
494
- def []: (index name_or_position) -> Elem
495
+ def []: (index name_or_position) -> E
495
496
 
496
497
  # <!--
497
498
  # rdoc-file=struct.c
@@ -520,7 +521,7 @@ class Struct[Elem]
520
521
  #
521
522
  # Raises IndexError if `n` is out of range.
522
523
  #
523
- def []=: (index name_or_position, Elem value) -> Elem
524
+ def []=: (index name_or_position, E value) -> E
524
525
 
525
526
  # <!--
526
527
  # rdoc-file=struct.c
@@ -539,8 +540,8 @@ class Struct[Elem]
539
540
  #
540
541
  # With no block given, returns an Enumerator.
541
542
  #
542
- def select: () -> Enumerator[Elem, Array[Elem]]
543
- | () { (Elem value) -> boolish } -> Array[Elem]
543
+ def select: () -> Enumerator[E, Array[E]]
544
+ | () { (E value) -> boolish } -> Array[E]
544
545
 
545
546
  # <!-- rdoc-file=struct.c -->
546
547
  # With a block given, returns an array of values from `self` for which the block
@@ -590,7 +591,7 @@ class Struct[Elem]
590
591
  # Raises RangeError if any element of the range is negative and out of range;
591
592
  # see Array@Array+Indexes.
592
593
  #
593
- def values_at: (*int | range[int?] positions) -> Array[Elem]
594
+ def values_at: (*int | range[int?] positions) -> Array[E]
594
595
 
595
596
  # <!--
596
597
  # rdoc-file=struct.c
@@ -633,7 +634,7 @@ class Struct[Elem]
633
634
  # f.dig(0, 0, :b, 0) # => 1
634
635
  # f.dig(:b, 0) # => nil
635
636
  #
636
- def dig: (index name_or_position) -> Elem
637
+ def dig: (index name_or_position) -> E
637
638
  | (index name_or_position, untyped, *untyped) -> untyped
638
639
 
639
640
  # <!-- rdoc-file=struct.c -->
@@ -663,5 +664,5 @@ class Struct[Elem]
663
664
  # h = joe.deconstruct_keys(nil)
664
665
  # h # => {:name=>"Joseph Smith, Jr.", :address=>"123 Maple, Anytown NC", :zip=>12345}
665
666
  #
666
- def deconstruct_keys: (Array[index & Hash::_Key]? indices) -> Hash[index & Hash::_Key, Elem]
667
+ def deconstruct_keys: (Array[index & Hash::_Key]? indices) -> Hash[index & Hash::_Key, E]
667
668
  end
data/core/symbol.rbs CHANGED
@@ -8,8 +8,8 @@
8
8
  # The same `Symbol` object will be created for a given name or string for the
9
9
  # duration of a program's execution, regardless of the context or meaning of
10
10
  # that name. Thus if `Fred` is a constant in one context, a method in another,
11
- # and a class in a third, the `Symbol` `:Fred` will be the same object in all
12
- # three contexts.
11
+ # and a class in a third, the `Symbol` <code>:Fred</code> will be the same
12
+ # object in all three contexts.
13
13
  #
14
14
  # module One
15
15
  # class Fred
@@ -75,7 +75,8 @@
75
75
  # given Regexp or other object; returns `nil` if no match is found.
76
76
  # * #[], #slice : Returns a substring of symbol determined by a given index,
77
77
  # start/length, or range, or string.
78
- # * #empty?: Returns `true` if `self.length` is zero; `false` otherwise.
78
+ # * #empty?: Returns `true` if <code>self.length</code> is zero; `false`
79
+ # otherwise.
79
80
  # * #encoding: Returns the Encoding object that represents the encoding of
80
81
  # symbol.
81
82
  # * #end_with?: Returns `true` if symbol ends with any of the given strings.
@@ -130,19 +131,25 @@ class Symbol
130
131
 
131
132
  # <!--
132
133
  # rdoc-file=string.c
133
- # - symbol <=> object -> -1, 0, +1, or nil
134
+ # - self <=> other -> -1, 0, 1, or nil
134
135
  # -->
135
- # If `object` is a symbol, returns the equivalent of `symbol.to_s <=>
136
- # object.to_s`:
136
+ # Compares `self` and `other`, using String#<=>.
137
+ #
138
+ # Returns:
137
139
  #
138
- # :bar <=> :foo # => -1
139
- # :foo <=> :foo # => 0
140
- # :foo <=> :bar # => 1
140
+ # * <code>self.to_s <=> other.to_s</code>, if `other` is a symbol.
141
+ # * `nil`, otherwise.
141
142
  #
142
- # Otherwise, returns `nil`:
143
+ # Examples:
143
144
  #
145
+ # :bar <=> :foo # => -1
146
+ # :foo <=> :foo # => 0
147
+ # :foo <=> :bar # => 1
144
148
  # :foo <=> 'bar' # => nil
145
149
  #
150
+ # Class Symbol includes module Comparable, each of whose methods uses Symbol#<=>
151
+ # for comparison.
152
+ #
146
153
  # Related: String#<=>.
147
154
  #
148
155
  def <=>: (Symbol object) -> (-1 | 0 | 1)
@@ -165,8 +172,8 @@ class Symbol
165
172
  # rdoc-file=string.c
166
173
  # - symbol =~ object -> integer or nil
167
174
  # -->
168
- # Equivalent to `symbol.to_s =~ object`, including possible updates to global
169
- # variables; see String#=~.
175
+ # Equivalent to <code>symbol.to_s =~ object</code>, including possible updates
176
+ # to global variables; see String#=~.
170
177
  #
171
178
  def =~: (Regexp regex) -> Integer?
172
179
  | [T] (String::_MatchAgainst[String, T] object) -> T
@@ -179,7 +186,7 @@ class Symbol
179
186
  # - symbol[regexp, capture = 0] -> string or nil
180
187
  # - symbol[substring] -> string or nil
181
188
  # -->
182
- # Equivalent to `symbol.to_s[]`; see String#[].
189
+ # Equivalent to <code>symbol.to_s[]</code>; see String#[].
183
190
  #
184
191
  def []: (int start, ?int length) -> String?
185
192
  | (range[int?] range) -> String?
@@ -188,9 +195,9 @@ class Symbol
188
195
 
189
196
  # <!--
190
197
  # rdoc-file=string.c
191
- # - capitalize(*options) -> symbol
198
+ # - capitalize(mapping) -> symbol
192
199
  # -->
193
- # Equivalent to `sym.to_s.capitalize.to_sym`.
200
+ # Equivalent to <code>sym.to_s.capitalize.to_sym</code>.
194
201
  #
195
202
  # See String#capitalize.
196
203
  #
@@ -204,7 +211,7 @@ class Symbol
204
211
  # - casecmp(object) -> -1, 0, 1, or nil
205
212
  # -->
206
213
  # Like Symbol#<=>, but case-insensitive; equivalent to
207
- # `self.to_s.casecmp(object.to_s)`:
214
+ # <code>self.to_s.casecmp(object.to_s)</code>:
208
215
  #
209
216
  # lower = :abc
210
217
  # upper = :ABC
@@ -268,9 +275,9 @@ class Symbol
268
275
 
269
276
  # <!--
270
277
  # rdoc-file=string.c
271
- # - downcase(*options) -> symbol
278
+ # - downcase(mapping) -> symbol
272
279
  # -->
273
- # Equivalent to `sym.to_s.downcase.to_sym`.
280
+ # Equivalent to <code>sym.to_s.downcase.to_sym</code>.
274
281
  #
275
282
  # See String#downcase.
276
283
  #
@@ -285,7 +292,7 @@ class Symbol
285
292
  # rdoc-file=string.c
286
293
  # - empty? -> true or false
287
294
  # -->
288
- # Returns `true` if `self` is `:''`, `false` otherwise.
295
+ # Returns `true` if `self` is <code>:''</code>, `false` otherwise.
289
296
  #
290
297
  def empty?: () -> bool
291
298
 
@@ -293,7 +300,7 @@ class Symbol
293
300
  # rdoc-file=string.c
294
301
  # - encoding -> encoding
295
302
  # -->
296
- # Equivalent to `self.to_s.encoding`; see String#encoding.
303
+ # Equivalent to <code>self.to_s.encoding</code>; see String#encoding.
297
304
  #
298
305
  def encoding: () -> Encoding
299
306
 
@@ -301,7 +308,7 @@ class Symbol
301
308
  # rdoc-file=string.c
302
309
  # - end_with?(*strings) -> true or false
303
310
  # -->
304
- # Equivalent to `self.to_s.end_with?`; see String#end_with?.
311
+ # Equivalent to <code>self.to_s.end_with?</code>; see String#end_with?.
305
312
  #
306
313
  def end_with?: (*string suffixes) -> bool
307
314
 
@@ -335,7 +342,7 @@ class Symbol
335
342
  # rdoc-file=string.c
336
343
  # - length -> integer
337
344
  # -->
338
- # Equivalent to `self.to_s.length`; see String#length.
345
+ # Equivalent to <code>self.to_s.length</code>; see String#length.
339
346
  #
340
347
  def length: () -> Integer
341
348
 
@@ -344,8 +351,8 @@ class Symbol
344
351
  # - match(pattern, offset = 0) -> matchdata or nil
345
352
  # - match(pattern, offset = 0) {|matchdata| } -> object
346
353
  # -->
347
- # Equivalent to `self.to_s.match`, including possible updates to global
348
- # variables; see String#match.
354
+ # Equivalent to <code>self.to_s.match</code>, including possible updates to
355
+ # global variables; see String#match.
349
356
  #
350
357
  def match: (Regexp | string pattern, ?int offset) -> MatchData?
351
358
  | [T] (Regexp | string pattern, ?int offset) { (MatchData matchdata) -> T } -> T?
@@ -354,12 +361,12 @@ class Symbol
354
361
  # rdoc-file=string.c
355
362
  # - match?(pattern, offset) -> true or false
356
363
  # -->
357
- # Equivalent to `sym.to_s.match?`; see String#match.
364
+ # Equivalent to <code>sym.to_s.match?</code>; see String#match.
358
365
  #
359
366
  def match?: (Regexp | string pattern, ?int offset) -> bool
360
367
 
361
368
  # <!-- rdoc-file=string.c -->
362
- # Equivalent to `self.to_s.succ.to_sym`:
369
+ # Equivalent to <code>self.to_s.succ.to_sym</code>:
363
370
  #
364
371
  # :foo.succ # => :fop
365
372
  #
@@ -382,12 +389,12 @@ class Symbol
382
389
  def name: () -> String
383
390
 
384
391
  # <!-- rdoc-file=string.c -->
385
- # Equivalent to `self.to_s.length`; see String#length.
392
+ # Equivalent to <code>self.to_s.length</code>; see String#length.
386
393
  #
387
394
  alias size length
388
395
 
389
396
  # <!-- rdoc-file=string.c -->
390
- # Equivalent to `symbol.to_s[]`; see String#[].
397
+ # Equivalent to <code>symbol.to_s[]</code>; see String#[].
391
398
  #
392
399
  alias slice []
393
400
 
@@ -395,7 +402,7 @@ class Symbol
395
402
  # rdoc-file=string.c
396
403
  # - start_with?(*string_or_regexp) -> true or false
397
404
  # -->
398
- # Equivalent to `self.to_s.start_with?`; see String#start_with?.
405
+ # Equivalent to <code>self.to_s.start_with?</code>; see String#start_with?.
399
406
  #
400
407
  def start_with?: (*Regexp | string prefixes) -> bool
401
408
 
@@ -403,7 +410,7 @@ class Symbol
403
410
  # rdoc-file=string.c
404
411
  # - succ
405
412
  # -->
406
- # Equivalent to `self.to_s.succ.to_sym`:
413
+ # Equivalent to <code>self.to_s.succ.to_sym</code>:
407
414
  #
408
415
  # :foo.succ # => :fop
409
416
  #
@@ -413,9 +420,9 @@ class Symbol
413
420
 
414
421
  # <!--
415
422
  # rdoc-file=string.c
416
- # - swapcase(*options) -> symbol
423
+ # - swapcase(mapping) -> symbol
417
424
  # -->
418
- # Equivalent to `sym.to_s.swapcase.to_sym`.
425
+ # Equivalent to <code>sym.to_s.swapcase.to_sym</code>.
419
426
  #
420
427
  # See String#swapcase.
421
428
  #
@@ -462,9 +469,9 @@ class Symbol
462
469
 
463
470
  # <!--
464
471
  # rdoc-file=string.c
465
- # - upcase(*options) -> symbol
472
+ # - upcase(mapping) -> symbol
466
473
  # -->
467
- # Equivalent to `sym.to_s.upcase.to_sym`.
474
+ # Equivalent to <code>sym.to_s.upcase.to_sym</code>.
468
475
  #
469
476
  # See String#upcase.
470
477
  #