rbs 2.0.0 → 2.2.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 (208) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/comments.yml +34 -0
  3. data/.github/workflows/ruby.yml +5 -0
  4. data/CHANGELOG.md +82 -0
  5. data/README.md +6 -1
  6. data/Rakefile +56 -21
  7. data/core/array.rbs +2866 -1086
  8. data/core/basic_object.rbs +150 -30
  9. data/core/binding.rbs +33 -0
  10. data/core/builtin.rbs +4 -4
  11. data/core/class.rbs +43 -5
  12. data/core/comparable.rbs +57 -0
  13. data/core/complex.rbs +170 -4
  14. data/core/constants.rbs +51 -0
  15. data/core/deprecated.rbs +7 -0
  16. data/core/dir.rbs +305 -20
  17. data/core/encoding.rbs +1214 -77
  18. data/core/enumerable.rbs +2173 -234
  19. data/core/enumerator.rbs +448 -182
  20. data/core/env.rbs +448 -1
  21. data/core/errno.rbs +1 -10
  22. data/core/errors.rbs +152 -2
  23. data/core/exception.rbs +201 -127
  24. data/core/false_class.rbs +27 -0
  25. data/core/fiber.rbs +118 -37
  26. data/core/fiber_error.rbs +8 -9
  27. data/core/file.rbs +1060 -142
  28. data/core/file_test.rbs +287 -32
  29. data/core/float.rbs +776 -300
  30. data/core/gc.rbs +185 -34
  31. data/core/global_variables.rbs +5 -1
  32. data/core/hash.rbs +1582 -649
  33. data/core/integer.rbs +974 -204
  34. data/core/io/buffer.rbs +710 -0
  35. data/core/io/wait.rbs +29 -8
  36. data/core/io.rbs +2438 -417
  37. data/core/kernel.rbs +2319 -318
  38. data/core/marshal.rbs +37 -2
  39. data/core/match_data.rbs +123 -6
  40. data/core/math.rbs +126 -6
  41. data/core/method.rbs +226 -102
  42. data/core/module.rbs +421 -45
  43. data/core/nil_class.rbs +64 -0
  44. data/core/numeric.rbs +620 -142
  45. data/core/object.rbs +453 -81
  46. data/core/object_space.rbs +92 -2
  47. data/core/proc.rbs +482 -285
  48. data/core/process.rbs +443 -34
  49. data/core/ractor.rbs +232 -9
  50. data/core/random.rbs +151 -52
  51. data/core/range.rbs +885 -160
  52. data/core/rational.rbs +122 -6
  53. data/core/rb_config.rbs +14 -4
  54. data/core/refinement.rbs +44 -0
  55. data/core/regexp.rbs +156 -14
  56. data/core/ruby_vm.rbs +42 -3
  57. data/core/signal.rbs +78 -39
  58. data/core/string.rbs +2123 -567
  59. data/core/string_io.rbs +204 -0
  60. data/core/struct.rbs +283 -28
  61. data/core/symbol.rbs +304 -30
  62. data/core/thread.rbs +1288 -688
  63. data/core/thread_group.rbs +66 -10
  64. data/core/time.rbs +643 -217
  65. data/core/trace_point.rbs +100 -12
  66. data/core/true_class.rbs +24 -0
  67. data/core/unbound_method.rbs +73 -7
  68. data/core/warning.rbs +37 -12
  69. data/docs/CONTRIBUTING.md +40 -34
  70. data/docs/stdlib.md +3 -102
  71. data/docs/syntax.md +54 -11
  72. data/ext/rbs_extension/extconf.rb +1 -0
  73. data/ext/rbs_extension/lexer.h +5 -0
  74. data/ext/rbs_extension/lexstate.c +6 -0
  75. data/ext/rbs_extension/parser.c +85 -10
  76. data/ext/rbs_extension/ruby_objs.c +4 -2
  77. data/ext/rbs_extension/ruby_objs.h +2 -2
  78. data/goodcheck.yml +0 -11
  79. data/lib/rbs/annotate/annotations.rb +197 -0
  80. data/lib/rbs/annotate/formatter.rb +80 -0
  81. data/lib/rbs/annotate/rdoc_annotator.rb +398 -0
  82. data/lib/rbs/annotate/rdoc_source.rb +120 -0
  83. data/lib/rbs/annotate.rb +6 -0
  84. data/lib/rbs/ast/members.rb +21 -13
  85. data/lib/rbs/buffer.rb +17 -11
  86. data/lib/rbs/cli.rb +48 -1
  87. data/lib/rbs/definition_builder/method_builder.rb +28 -16
  88. data/lib/rbs/definition_builder.rb +6 -2
  89. data/lib/rbs/environment.rb +8 -4
  90. data/lib/rbs/location_aux.rb +12 -0
  91. data/lib/rbs/namespace.rb +1 -1
  92. data/lib/rbs/prototype/rb.rb +12 -0
  93. data/lib/rbs/type_alias_regularity.rb +6 -4
  94. data/lib/rbs/type_name.rb +1 -1
  95. data/lib/rbs/types.rb +1 -1
  96. data/lib/rbs/validator.rb +6 -0
  97. data/lib/rbs/version.rb +1 -1
  98. data/lib/rbs/writer.rb +54 -4
  99. data/lib/rbs.rb +0 -2
  100. data/schema/typeParam.json +3 -3
  101. data/sig/annotate/annotations.rbs +102 -0
  102. data/sig/annotate/formatter.rbs +24 -0
  103. data/sig/annotate/rdoc_annotater.rbs +82 -0
  104. data/sig/annotate/rdoc_source.rbs +30 -0
  105. data/sig/buffer.rbs +6 -2
  106. data/sig/cli.rbs +2 -0
  107. data/sig/collection/{collections.rbs → sources.rbs} +0 -0
  108. data/sig/location.rbs +6 -0
  109. data/sig/members.rbs +24 -18
  110. data/sig/method_builder.rbs +5 -4
  111. data/sig/method_types.rbs +5 -1
  112. data/sig/polyfill.rbs +78 -0
  113. data/sig/validator.rbs +3 -1
  114. data/sig/writer.rbs +79 -2
  115. data/stdlib/abbrev/0/abbrev.rbs +6 -0
  116. data/stdlib/abbrev/0/array.rbs +26 -0
  117. data/stdlib/base64/0/base64.rbs +31 -0
  118. data/stdlib/benchmark/0/benchmark.rbs +74 -3
  119. data/stdlib/bigdecimal/0/big_decimal.rbs +614 -165
  120. data/stdlib/bigdecimal-math/0/big_math.rbs +41 -64
  121. data/stdlib/cgi/0/core.rbs +649 -21
  122. data/stdlib/coverage/0/coverage.rbs +164 -2
  123. data/stdlib/csv/0/csv.rbs +2862 -398
  124. data/stdlib/date/0/date.rbs +483 -25
  125. data/stdlib/date/0/date_time.rbs +187 -12
  126. data/stdlib/dbm/0/dbm.rbs +152 -17
  127. data/stdlib/digest/0/digest.rbs +146 -0
  128. data/stdlib/erb/0/erb.rbs +65 -245
  129. data/stdlib/fiber/0/fiber.rbs +73 -91
  130. data/stdlib/fileutils/0/fileutils.rbs +301 -1
  131. data/stdlib/find/0/find.rbs +9 -0
  132. data/stdlib/forwardable/0/forwardable.rbs +65 -1
  133. data/stdlib/io-console/0/io-console.rbs +227 -15
  134. data/stdlib/ipaddr/0/ipaddr.rbs +161 -0
  135. data/stdlib/json/0/json.rbs +1147 -145
  136. data/stdlib/logger/0/formatter.rbs +24 -0
  137. data/stdlib/logger/0/log_device.rbs +64 -0
  138. data/stdlib/logger/0/logger.rbs +165 -13
  139. data/stdlib/logger/0/period.rbs +10 -0
  140. data/stdlib/logger/0/severity.rbs +26 -0
  141. data/stdlib/monitor/0/monitor.rbs +163 -0
  142. data/stdlib/mutex_m/0/mutex_m.rbs +35 -6
  143. data/stdlib/net-http/0/manifest.yaml +1 -0
  144. data/stdlib/net-http/0/net-http.rbs +1513 -683
  145. data/stdlib/nkf/0/nkf.rbs +372 -0
  146. data/stdlib/objspace/0/objspace.rbs +149 -90
  147. data/stdlib/openssl/0/openssl.rbs +8108 -71
  148. data/stdlib/optparse/0/optparse.rbs +487 -19
  149. data/stdlib/pathname/0/pathname.rbs +425 -124
  150. data/stdlib/prettyprint/0/prettyprint.rbs +120 -99
  151. data/stdlib/prime/0/integer-extension.rbs +20 -2
  152. data/stdlib/prime/0/prime.rbs +88 -21
  153. data/stdlib/pstore/0/pstore.rbs +102 -0
  154. data/stdlib/pty/0/pty.rbs +64 -14
  155. data/stdlib/resolv/0/resolv.rbs +420 -31
  156. data/stdlib/rubygems/0/basic_specification.rbs +4 -1
  157. data/stdlib/rubygems/0/config_file.rbs +33 -1
  158. data/stdlib/rubygems/0/dependency_installer.rbs +4 -3
  159. data/stdlib/rubygems/0/installer.rbs +13 -1
  160. data/stdlib/rubygems/0/path_support.rbs +4 -1
  161. data/stdlib/rubygems/0/platform.rbs +5 -1
  162. data/stdlib/rubygems/0/request_set.rbs +44 -2
  163. data/stdlib/rubygems/0/requirement.rbs +65 -2
  164. data/stdlib/rubygems/0/rubygems.rbs +407 -0
  165. data/stdlib/rubygems/0/source_list.rbs +13 -0
  166. data/stdlib/rubygems/0/specification.rbs +21 -1
  167. data/stdlib/rubygems/0/stream_ui.rbs +3 -1
  168. data/stdlib/rubygems/0/uninstaller.rbs +8 -1
  169. data/stdlib/rubygems/0/version.rbs +60 -157
  170. data/stdlib/securerandom/0/securerandom.rbs +44 -0
  171. data/stdlib/set/0/set.rbs +423 -109
  172. data/stdlib/shellwords/0/shellwords.rbs +55 -77
  173. data/stdlib/singleton/0/singleton.rbs +20 -0
  174. data/stdlib/socket/0/addrinfo.rbs +210 -9
  175. data/stdlib/socket/0/basic_socket.rbs +103 -11
  176. data/stdlib/socket/0/ip_socket.rbs +31 -9
  177. data/stdlib/socket/0/socket.rbs +586 -38
  178. data/stdlib/socket/0/tcp_server.rbs +22 -2
  179. data/stdlib/socket/0/tcp_socket.rbs +12 -1
  180. data/stdlib/socket/0/udp_socket.rbs +25 -2
  181. data/stdlib/socket/0/unix_server.rbs +22 -2
  182. data/stdlib/socket/0/unix_socket.rbs +45 -5
  183. data/stdlib/strscan/0/string_scanner.rbs +210 -9
  184. data/stdlib/tempfile/0/tempfile.rbs +58 -10
  185. data/stdlib/time/0/time.rbs +208 -116
  186. data/stdlib/timeout/0/timeout.rbs +10 -0
  187. data/stdlib/tmpdir/0/tmpdir.rbs +13 -4
  188. data/stdlib/tsort/0/cyclic.rbs +1 -0
  189. data/stdlib/tsort/0/interfaces.rbs +1 -0
  190. data/stdlib/tsort/0/tsort.rbs +42 -0
  191. data/stdlib/uri/0/common.rbs +57 -8
  192. data/stdlib/uri/0/file.rbs +55 -109
  193. data/stdlib/uri/0/ftp.rbs +6 -3
  194. data/stdlib/uri/0/generic.rbs +558 -329
  195. data/stdlib/uri/0/http.rbs +60 -114
  196. data/stdlib/uri/0/https.rbs +8 -102
  197. data/stdlib/uri/0/ldap.rbs +143 -137
  198. data/stdlib/uri/0/ldaps.rbs +8 -102
  199. data/stdlib/uri/0/mailto.rbs +3 -0
  200. data/stdlib/uri/0/rfc2396_parser.rbs +66 -26
  201. data/stdlib/uri/0/ws.rbs +6 -3
  202. data/stdlib/uri/0/wss.rbs +5 -3
  203. data/stdlib/yaml/0/dbm.rbs +151 -87
  204. data/stdlib/yaml/0/store.rbs +6 -0
  205. data/stdlib/zlib/0/zlib.rbs +90 -31
  206. metadata +18 -6
  207. data/lib/rbs/location.rb +0 -221
  208. data/sig/char_scanner.rbs +0 -9
@@ -1,3 +1,4 @@
1
+ # <!-- rdoc-file=object.c -->
1
2
  # BasicObject is the parent class of all classes in Ruby. It's an explicit
2
3
  # blank class.
3
4
  #
@@ -24,7 +25,7 @@
24
25
  # DELEGATE = [:puts, :p]
25
26
  #
26
27
  # def method_missing(name, *args, &block)
27
- # super unless DELEGATE.include? name
28
+ # return super unless DELEGATE.include? name
28
29
  # ::Kernel.send(name, *args, &block)
29
30
  # end
30
31
  #
@@ -44,21 +45,79 @@
44
45
  # end
45
46
  # end
46
47
  #
48
+ # ### What's Here
49
+ #
50
+ # These are the methods defined for BasicObject:
51
+ #
52
+ # ::new
53
+ # : Returns a new BasicObject instance.
54
+ #
55
+ # [!](#method-i-21)
56
+ # : Returns the boolean negation of `self`: `true` or `false`.
57
+ #
58
+ # [!=](#method-i-21-3D)
59
+ # : Returns whether `self` and the given object are *not* equal.
60
+ #
61
+ # [==](#method-i-3D-3D)
62
+ # : Returns whether `self` and the given object are equivalent.
63
+ #
64
+ # [__id__](#method-i-__id__)
65
+ # : Returns the integer object identifier for `self`.
66
+ #
67
+ # [__send__](#method-i-__send__)
68
+ # : Calls the method identified by the given symbol.
69
+ #
70
+ # #equal?
71
+ # : Returns whether `self` and the given object are the same object.
72
+ #
73
+ # #instance_eval
74
+ # : Evaluates the given string or block in the context of `self`.
75
+ #
76
+ # #instance_exec
77
+ # : Executes the given block in the context of `self`, passing the given
78
+ # arguments.
79
+ #
80
+ # #method_missing
81
+ # : Method called when an undefined method is called on `self`.
82
+ #
83
+ # #singleton_method_added
84
+ # : Method called when a singleton method is added to `self`.
85
+ #
86
+ # #singleton_method_removed
87
+ # : Method called when a singleton method is added removed from `self`.
88
+ #
89
+ # #singleton_method_undefined
90
+ # : Method called when a singleton method is undefined in `self`.
91
+ #
47
92
  class BasicObject
93
+ # <!--
94
+ # rdoc-file=object.c
95
+ # - !obj -> true or false
96
+ # -->
48
97
  # Boolean negate.
49
98
  #
50
99
  def !: () -> bool
51
100
 
101
+ # <!--
102
+ # rdoc-file=object.c
103
+ # - obj != other -> true or false
104
+ # -->
52
105
  # Returns true if two objects are not-equal, otherwise false.
53
106
  #
54
107
  def !=: (untyped other) -> bool
55
108
 
56
- # Equality --- At the `Object` level, `==` returns `true` only if `obj` and
57
- # `other` are the same object. Typically, this method is overridden in
58
- # descendant classes to provide class-specific meaning.
59
- #
60
- # Unlike `==`, the `equal?` method should never be overridden by subclasses as
61
- # it is used to determine object identity (that is, `a.equal?(b)` if and only if
109
+ # <!--
110
+ # rdoc-file=object.c
111
+ # - obj == other -> true or false
112
+ # - obj.equal?(other) -> true or false
113
+ # - obj.eql?(other) -> true or false
114
+ # -->
115
+ # Equality --- At the Object level, #== returns `true` only if `obj` and `other`
116
+ # are the same object. Typically, this method is overridden in descendant
117
+ # classes to provide class-specific meaning.
118
+ #
119
+ # Unlike #==, the #equal? method should never be overridden by subclasses as it
120
+ # is used to determine object identity (that is, `a.equal?(b)` if and only if
62
121
  # `a` is the same object as `b`):
63
122
  #
64
123
  # obj = "a"
@@ -68,18 +127,27 @@ class BasicObject
68
127
  # obj.equal? other #=> false
69
128
  # obj.equal? obj #=> true
70
129
  #
71
- # The `eql?` method returns `true` if `obj` and `other` refer to the same hash
72
- # key. This is used by Hash to test members for equality. For objects of class
73
- # `Object`, `eql?` is synonymous with `==`. Subclasses normally continue this
74
- # tradition by aliasing `eql?` to their overridden `==` method, but there are
75
- # exceptions. `Numeric` types, for example, perform type conversion across
76
- # `==`, but not across `eql?`, so:
130
+ # The #eql? method returns `true` if `obj` and `other` refer to the same hash
131
+ # key. This is used by Hash to test members for equality. For any pair of
132
+ # objects where #eql? returns `true`, the #hash value of both objects must be
133
+ # equal. So any subclass that overrides #eql? should also override #hash
134
+ # appropriately.
135
+ #
136
+ # For objects of class Object, #eql? is synonymous with #==. Subclasses
137
+ # normally continue this tradition by aliasing #eql? to their overridden #==
138
+ # method, but there are exceptions. Numeric types, for example, perform type
139
+ # conversion across #==, but not across #eql?, so:
77
140
  #
78
141
  # 1 == 1.0 #=> true
79
142
  # 1.eql? 1.0 #=> false
80
143
  #
81
144
  def ==: (untyped other) -> bool
82
145
 
146
+ # <!--
147
+ # rdoc-file=gc.c
148
+ # - obj.__id__ -> integer
149
+ # - obj.object_id -> integer
150
+ # -->
83
151
  # Returns an integer identifier for `obj`.
84
152
  #
85
153
  # The same number will be returned on all calls to `object_id` for a given
@@ -88,6 +156,8 @@ class BasicObject
88
156
  # Note: that some objects of builtin classes are reused for optimization. This
89
157
  # is the case for immediate values and frozen string literals.
90
158
  #
159
+ # BasicObject implements +__id__+, Kernel implements `object_id`.
160
+ #
91
161
  # Immediate values are not passed by reference but are passed by value: `nil`,
92
162
  # `true`, `false`, Fixnums, Symbols, and some Floats.
93
163
  #
@@ -98,11 +168,21 @@ class BasicObject
98
168
  #
99
169
  def __id__: () -> Integer
100
170
 
171
+ # <!--
172
+ # rdoc-file=vm_eval.c
173
+ # - foo.send(symbol [, args...]) -> obj
174
+ # - foo.__send__(symbol [, args...]) -> obj
175
+ # - foo.send(string [, args...]) -> obj
176
+ # - foo.__send__(string [, args...]) -> obj
177
+ # -->
101
178
  # Invokes the method identified by *symbol*, passing it any arguments specified.
102
- # You can use `__send__` if the name `send` clashes with an existing method in
103
- # *obj*. When the method is identified by a string, the string is converted to a
179
+ # When the method is identified by a string, the string is converted to a
104
180
  # symbol.
105
181
  #
182
+ # BasicObject implements +__send__+, Kernel implements `send`. `__send__` is
183
+ # safer than `send` when *obj* has the same method name like `Socket`. See also
184
+ # `public_send`.
185
+ #
106
186
  # class Klass
107
187
  # def hello(*args)
108
188
  # "Hello " + args.join(' ')
@@ -113,12 +193,13 @@ class BasicObject
113
193
  #
114
194
  def __send__: (String | Symbol arg0, *untyped args) -> untyped
115
195
 
116
- # Equality --- At the `Object` level, `==` returns `true` only if `obj` and
117
- # `other` are the same object. Typically, this method is overridden in
118
- # descendant classes to provide class-specific meaning.
196
+ # <!-- rdoc-file=object.c -->
197
+ # Equality --- At the Object level, #== returns `true` only if `obj` and `other`
198
+ # are the same object. Typically, this method is overridden in descendant
199
+ # classes to provide class-specific meaning.
119
200
  #
120
- # Unlike `==`, the `equal?` method should never be overridden by subclasses as
121
- # it is used to determine object identity (that is, `a.equal?(b)` if and only if
201
+ # Unlike #==, the #equal? method should never be overridden by subclasses as it
202
+ # is used to determine object identity (that is, `a.equal?(b)` if and only if
122
203
  # `a` is the same object as `b`):
123
204
  #
124
205
  # obj = "a"
@@ -128,18 +209,27 @@ class BasicObject
128
209
  # obj.equal? other #=> false
129
210
  # obj.equal? obj #=> true
130
211
  #
131
- # The `eql?` method returns `true` if `obj` and `other` refer to the same hash
132
- # key. This is used by Hash to test members for equality. For objects of class
133
- # `Object`, `eql?` is synonymous with `==`. Subclasses normally continue this
134
- # tradition by aliasing `eql?` to their overridden `==` method, but there are
135
- # exceptions. `Numeric` types, for example, perform type conversion across
136
- # `==`, but not across `eql?`, so:
212
+ # The #eql? method returns `true` if `obj` and `other` refer to the same hash
213
+ # key. This is used by Hash to test members for equality. For any pair of
214
+ # objects where #eql? returns `true`, the #hash value of both objects must be
215
+ # equal. So any subclass that overrides #eql? should also override #hash
216
+ # appropriately.
217
+ #
218
+ # For objects of class Object, #eql? is synonymous with #==. Subclasses
219
+ # normally continue this tradition by aliasing #eql? to their overridden #==
220
+ # method, but there are exceptions. Numeric types, for example, perform type
221
+ # conversion across #==, but not across #eql?, so:
137
222
  #
138
223
  # 1 == 1.0 #=> true
139
224
  # 1.eql? 1.0 #=> false
140
225
  #
141
226
  def equal?: (untyped other) -> bool
142
227
 
228
+ # <!--
229
+ # rdoc-file=vm_eval.c
230
+ # - obj.instance_eval(string [, filename [, lineno]] ) -> obj
231
+ # - obj.instance_eval {|obj| block } -> obj
232
+ # -->
143
233
  # Evaluates a string containing Ruby source code, or the given block, within the
144
234
  # context of the receiver (*obj*). In order to set the context, the variable
145
235
  # `self` is set to *obj* while the code is executing, giving the code access to
@@ -169,6 +259,10 @@ class BasicObject
169
259
  def instance_eval: (String, ?String filename, ?Integer lineno) -> untyped
170
260
  | [U] () { (self) -> U } -> U
171
261
 
262
+ # <!--
263
+ # rdoc-file=vm_eval.c
264
+ # - obj.instance_exec(arg...) {|var...| block } -> obj
265
+ # -->
172
266
  # Executes the given block within the context of the receiver (*obj*). In order
173
267
  # to set the context, the variable `self` is set to *obj* while the code is
174
268
  # executing, giving the code access to *obj*'s instance variables. Arguments
@@ -184,12 +278,20 @@ class BasicObject
184
278
  #
185
279
  def instance_exec: [U, V] (*V args) { (*V args) -> U } -> U
186
280
 
187
- # Not documented
281
+ # <!--
282
+ # rdoc-file=object.c
283
+ # - BasicObject.new
284
+ # -->
285
+ # Returns a new BasicObject.
188
286
  #
189
287
  def initialize: () -> void
190
288
 
191
289
  private
192
290
 
291
+ # <!--
292
+ # rdoc-file=vm_eval.c
293
+ # - obj.method_missing(symbol [, *args] ) -> result
294
+ # -->
193
295
  # Invoked by Ruby when *obj* is sent a message it cannot handle. *symbol* is the
194
296
  # symbol for the method called, and *args* are any arguments that were passed to
195
297
  # it. By default, the interpreter raises an error when this method is called.
@@ -204,9 +306,14 @@ class BasicObject
204
306
  # def roman_to_int(str)
205
307
  # # ...
206
308
  # end
207
- # def method_missing(methId)
208
- # str = methId.id2name
209
- # roman_to_int(str)
309
+ #
310
+ # def method_missing(symbol, *args)
311
+ # str = symbol.id2name
312
+ # begin
313
+ # roman_to_int(str)
314
+ # rescue
315
+ # super(symbol, *args)
316
+ # end
210
317
  # end
211
318
  # end
212
319
  #
@@ -214,9 +321,14 @@ class BasicObject
214
321
  # r.iv #=> 4
215
322
  # r.xxiii #=> 23
216
323
  # r.mm #=> 2000
324
+ # r.foo #=> NoMethodError
217
325
  #
218
326
  def method_missing: (Symbol, *untyped, **untyped) ?{ (*untyped, **untyped) -> untyped } -> untyped
219
327
 
328
+ # <!--
329
+ # rdoc-file=object.c
330
+ # - singleton_method_added(symbol)
331
+ # -->
220
332
  # Invoked as a callback whenever a singleton method is added to the receiver.
221
333
  #
222
334
  # module Chatty
@@ -236,6 +348,10 @@ class BasicObject
236
348
  #
237
349
  def singleton_method_added: (Symbol) -> void
238
350
 
351
+ # <!--
352
+ # rdoc-file=object.c
353
+ # - singleton_method_removed(symbol)
354
+ # -->
239
355
  # Invoked as a callback whenever a singleton method is removed from the
240
356
  # receiver.
241
357
  #
@@ -259,6 +375,10 @@ class BasicObject
259
375
  #
260
376
  def singleton_method_removed: (Symbol) -> void
261
377
 
378
+ # <!--
379
+ # rdoc-file=object.c
380
+ # - singleton_method_undefined(symbol)
381
+ # -->
262
382
  # Invoked as a callback whenever a singleton method is undefined in the
263
383
  # receiver.
264
384
  #
data/core/binding.rbs CHANGED
@@ -1,3 +1,4 @@
1
+ # <!-- rdoc-file=proc.c -->
1
2
  # Objects of class Binding encapsulate the execution context at some particular
2
3
  # place in the code and retain this context for future use. The variables,
3
4
  # methods, value of `self`, and possibly an iterator block that can be accessed
@@ -33,6 +34,10 @@ class Binding
33
34
 
34
35
  def clone: () -> self
35
36
 
37
+ # <!--
38
+ # rdoc-file=proc.c
39
+ # - binding.eval(string [, filename [,lineno]]) -> obj
40
+ # -->
36
41
  # Evaluates the Ruby expression(s) in *string*, in the *binding*'s context. If
37
42
  # the optional *filename* and *lineno* parameters are present, they will be used
38
43
  # when reporting syntax errors.
@@ -45,6 +50,10 @@ class Binding
45
50
  #
46
51
  def eval: (String arg0, ?String filename, ?Integer lineno) -> untyped
47
52
 
53
+ # <!--
54
+ # rdoc-file=lib/irb.rb
55
+ # - irb()
56
+ # -->
48
57
  # Opens an IRB session where `binding.irb` is called which allows for
49
58
  # interactive debugging. You can call any methods or variables available in the
50
59
  # current scope, and mutate state if you need to.
@@ -103,6 +112,10 @@ class Binding
103
112
  #
104
113
  def irb: () -> void
105
114
 
115
+ # <!--
116
+ # rdoc-file=proc.c
117
+ # - binding.local_variable_defined?(symbol) -> obj
118
+ # -->
106
119
  # Returns `true` if a local variable `symbol` exists.
107
120
  #
108
121
  # def foo
@@ -117,6 +130,10 @@ class Binding
117
130
  #
118
131
  def local_variable_defined?: (String | Symbol symbol) -> bool
119
132
 
133
+ # <!--
134
+ # rdoc-file=proc.c
135
+ # - binding.local_variable_get(symbol) -> obj
136
+ # -->
120
137
  # Returns the value of the local variable `symbol`.
121
138
  #
122
139
  # def foo
@@ -131,6 +148,10 @@ class Binding
131
148
  #
132
149
  def local_variable_get: (String | Symbol symbol) -> untyped
133
150
 
151
+ # <!--
152
+ # rdoc-file=proc.c
153
+ # - binding.local_variable_set(symbol, obj) -> obj
154
+ # -->
134
155
  # Set local variable named `symbol` as `obj`.
135
156
  #
136
157
  # def foo
@@ -154,6 +175,10 @@ class Binding
154
175
  #
155
176
  def local_variable_set: [U] (String | Symbol symbol, U obj) -> U
156
177
 
178
+ # <!--
179
+ # rdoc-file=proc.c
180
+ # - binding.local_variables -> Array
181
+ # -->
157
182
  # Returns the names of the binding's local variables as symbols.
158
183
  #
159
184
  # def foo
@@ -169,10 +194,18 @@ class Binding
169
194
  #
170
195
  def local_variables: () -> Array[Symbol]
171
196
 
197
+ # <!--
198
+ # rdoc-file=proc.c
199
+ # - binding.receiver -> object
200
+ # -->
172
201
  # Returns the bound receiver of the binding object.
173
202
  #
174
203
  def receiver: () -> untyped
175
204
 
205
+ # <!--
206
+ # rdoc-file=proc.c
207
+ # - binding.source_location -> [String, Integer]
208
+ # -->
176
209
  # Returns the Ruby source filename and line number of the binding object.
177
210
  #
178
211
  def source_location: () -> [ String, Integer ]
data/core/builtin.rbs CHANGED
@@ -1,9 +1,9 @@
1
1
  interface _ToI
2
- def to_i: -> Integer
2
+ def to_i: () -> Integer
3
3
  end
4
4
 
5
5
  interface _ToInt
6
- def to_int: -> Integer
6
+ def to_int: () -> Integer
7
7
  end
8
8
 
9
9
  interface _ToR
@@ -11,7 +11,7 @@ interface _ToR
11
11
  end
12
12
 
13
13
  interface _ToS
14
- def to_s: -> String
14
+ def to_s: () -> String
15
15
  end
16
16
 
17
17
  interface _ToStr
@@ -31,7 +31,7 @@ interface _ToPath
31
31
  end
32
32
 
33
33
  interface _Each[out A]
34
- def each: { (A) -> void } -> void
34
+ def each: () { (A) -> void } -> void
35
35
  end
36
36
 
37
37
  interface _Reader
data/core/class.rbs CHANGED
@@ -1,4 +1,4 @@
1
- # Extends any Class to include *json_creatable?* method.
1
+ # <!-- rdoc-file=object.c -->
2
2
  # Classes in Ruby are first-class objects---each is an instance of class Class.
3
3
  #
4
4
  # Typically, you create a new class by using:
@@ -52,7 +52,13 @@
52
52
  # | |
53
53
  # obj--->OtherClass---------->(OtherClass)-----------...
54
54
  #
55
+ %a{annotate:rdoc:source:from=object.c}
55
56
  class Class < Module
57
+ # <!--
58
+ # rdoc-file=object.c
59
+ # - Class.new(super_class=Object) -> a_class
60
+ # - Class.new(super_class=Object) { |mod| ... } -> a_class
61
+ # -->
56
62
  # Creates a new anonymous (unnamed) class with the given superclass (or Object
57
63
  # if no parameter is given). You can give a class a name by assigning the class
58
64
  # object to a constant.
@@ -78,6 +84,10 @@ class Class < Module
78
84
  #
79
85
  def initialize: (?Class superclass) ?{ (Class newclass) -> void } -> void
80
86
 
87
+ # <!--
88
+ # rdoc-file=object.c
89
+ # - class.allocate() -> obj
90
+ # -->
81
91
  # Allocates space for a new object of *class*'s class and does not call
82
92
  # initialize on the new instance. The returned object must be an instance of
83
93
  # *class*.
@@ -96,6 +106,10 @@ class Class < Module
96
106
  #
97
107
  def allocate: () -> untyped
98
108
 
109
+ # <!--
110
+ # rdoc-file=object.c
111
+ # - inherited(subclass)
112
+ # -->
99
113
  # Callback invoked whenever a subclass of the current class is created.
100
114
  #
101
115
  # Example:
@@ -119,12 +133,39 @@ class Class < Module
119
133
  #
120
134
  def inherited: (Class arg0) -> untyped
121
135
 
136
+ # <!--
137
+ # rdoc-file=object.c
138
+ # - class.new(args, ...) -> obj
139
+ # -->
122
140
  # Calls #allocate to create a new object of *class*'s class, then invokes that
123
141
  # object's #initialize method, passing it *args*. This is the method that ends
124
142
  # up getting called whenever an object is constructed using `.new`.
125
143
  #
126
144
  def new: () -> untyped
127
145
 
146
+ # <!--
147
+ # rdoc-file=object.c
148
+ # - subclasses -> array
149
+ # -->
150
+ # Returns an array of classes where the receiver is the direct superclass of the
151
+ # class, excluding singleton classes. The order of the returned array is not
152
+ # defined.
153
+ #
154
+ # class A; end
155
+ # class B < A; end
156
+ # class C < B; end
157
+ # class D < A; end
158
+ #
159
+ # A.subclasses #=> [D, B]
160
+ # B.subclasses #=> [C]
161
+ # C.subclasses #=> []
162
+ #
163
+ def subclasses: () -> Array[Class]
164
+
165
+ # <!--
166
+ # rdoc-file=object.c
167
+ # - class.superclass -> a_super_class or nil
168
+ # -->
128
169
  # Returns the superclass of *class*, or `nil`.
129
170
  #
130
171
  # File.superclass #=> IO
@@ -138,8 +179,5 @@ class Class < Module
138
179
  #
139
180
  # BasicObject.superclass #=> nil
140
181
  #
141
- # # arglists
142
- # class.superclass -> a_super_class or nil
143
- #
144
- def `superclass`: () -> Class?
182
+ def superclass: () -> Class?
145
183
  end
data/core/comparable.rbs CHANGED
@@ -1,3 +1,4 @@
1
+ # <!-- rdoc-file=compar.c -->
1
2
  # The Comparable mixin is used by classes whose objects may be ordered. The
2
3
  # class must define the `<=>` operator, which compares the receiver against
3
4
  # another object, returning a value less than 0, returning 0, or returning a
@@ -32,32 +33,83 @@
32
33
  # s4.between?(s3, s5) #=> true
33
34
  # [ s3, s2, s5, s4, s1 ].sort #=> [Z, YY, XXX, WWWW, VVVVV]
34
35
  #
36
+ # ## What's Here
37
+ #
38
+ # Module Comparable provides these methods, all of which use method `<=>`:
39
+ #
40
+ # [<](#method-i-3C)
41
+ # : Returns whether `self` is less than the given object.
42
+ #
43
+ # [<=](#method-i-3C-3D)
44
+ # : Returns whether `self` is less than or equal to the given object.
45
+ #
46
+ # [==](#method-i-3D-3D)
47
+ # : Returns whether `self` is equal to the given object.
48
+ #
49
+ # [>](#method-i-3E)
50
+ # : Returns whether `self` is greater than or equal to the given object.
51
+ #
52
+ # [>=](#method-i-3E-3D)
53
+ # : Returns whether `self` is greater than the given object.
54
+ #
55
+ # * #between? Returns `true` if `self` is between two given objects.
56
+ # #clamp
57
+ # : For given objects `min` and `max`, or range `(min..max)`, returns:
58
+ #
59
+ # * `min` if `(self <=> min) < 0`.
60
+ # * `max` if `(self <=> max) > 0`.
61
+ # * `self` otherwise.
62
+ #
35
63
  module Comparable : _WithSpaceshipOperator
64
+ # <!--
65
+ # rdoc-file=compar.c
66
+ # - obj < other -> true or false
67
+ # -->
36
68
  # Compares two objects based on the receiver's `<=>` method, returning true if
37
69
  # it returns a value less than 0.
38
70
  #
39
71
  def <: (untyped other) -> bool
40
72
 
73
+ # <!--
74
+ # rdoc-file=compar.c
75
+ # - obj <= other -> true or false
76
+ # -->
41
77
  # Compares two objects based on the receiver's `<=>` method, returning true if
42
78
  # it returns a value less than or equal to 0.
43
79
  #
44
80
  def <=: (untyped other) -> bool
45
81
 
82
+ # <!--
83
+ # rdoc-file=compar.c
84
+ # - obj == other -> true or false
85
+ # -->
46
86
  # Compares two objects based on the receiver's `<=>` method, returning true if
47
87
  # it returns 0. Also returns true if *obj* and *other* are the same object.
48
88
  #
49
89
  def ==: (untyped other) -> bool
50
90
 
91
+ # <!--
92
+ # rdoc-file=compar.c
93
+ # - obj > other -> true or false
94
+ # -->
51
95
  # Compares two objects based on the receiver's `<=>` method, returning true if
52
96
  # it returns a value greater than 0.
53
97
  #
54
98
  def >: (untyped other) -> bool
55
99
 
100
+ # <!--
101
+ # rdoc-file=compar.c
102
+ # - obj >= other -> true or false
103
+ # -->
56
104
  # Compares two objects based on the receiver's `<=>` method, returning true if
57
105
  # it returns a value greater than or equal to 0.
58
106
  #
59
107
  def >=: (untyped other) -> bool
60
108
 
109
+ # <!--
110
+ # rdoc-file=compar.c
111
+ # - obj.between?(min, max) -> true or false
112
+ # -->
61
113
  # Returns `false` if *obj* `<=>` *min* is less than zero or if *obj* `<=>` *max*
62
114
  # is greater than zero, `true` otherwise.
63
115
  #
@@ -68,6 +120,11 @@ module Comparable : _WithSpaceshipOperator
68
120
  #
69
121
  def between?: (untyped min, untyped max) -> bool
70
122
 
123
+ # <!--
124
+ # rdoc-file=compar.c
125
+ # - obj.clamp(min, max) -> obj
126
+ # - obj.clamp(range) -> obj
127
+ # -->
71
128
  # In `(min, max)` form, returns *min* if *obj* `<=>` *min* is less than zero,
72
129
  # *max* if *obj* `<=>` *max* is greater than zero, and *obj* otherwise.
73
130
  #