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
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
  #
@@ -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)
@@ -483,8 +484,8 @@ 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"
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
  #