rbs 3.8.0.pre.1 → 3.8.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.
data/core/trace_point.rbs CHANGED
@@ -1,123 +1,121 @@
1
1
  # <!-- rdoc-file=trace_point.rb -->
2
- # A class that provides the functionality of Kernel#set_trace_func in a nice
3
- # Object-Oriented API.
2
+ # A class that provides the functionality of Kernel#set_trace_func in a
3
+ # well-structured Object-Oriented API.
4
4
  #
5
5
  # ## Example
6
6
  #
7
- # We can use TracePoint to gather information specifically for exceptions:
7
+ # Use TracePoint to gather information specifically for exceptions:
8
8
  #
9
9
  # trace = TracePoint.new(:raise) do |tp|
10
- # p [tp.lineno, tp.event, tp.raised_exception]
10
+ # p [tp.lineno, tp.event, tp.raised_exception]
11
11
  # end
12
12
  # #=> #<TracePoint:disabled>
13
13
  #
14
- # trace.enable
15
- # #=> false
14
+ # trace.enable #=> false
16
15
  #
17
16
  # 0 / 0
18
17
  # #=> [5, :raise, #<ZeroDivisionError: divided by 0>]
19
18
  #
20
19
  # ## Events
21
20
  #
22
- # If you don't specify the type of events you want to listen for, TracePoint
21
+ # If you don't specify the types of events you want to listen for, TracePoint
23
22
  # will include all available events.
24
23
  #
25
- # **Note** do not depend on current event set, as this list is subject to
26
- # change. Instead, it is recommended you specify the type of events you want to
24
+ # **Note:** Do not depend on the current event set, as this list is subject to
25
+ # change. Instead, it is recommended to specify the types of events you want to
27
26
  # use.
28
27
  #
29
28
  # To filter what is traced, you can pass any of the following as `events`:
30
29
  #
31
30
  # `:line`
32
- # : execute an expression or statement on a new line
31
+ # : Execute an expression or statement on a new line.
33
32
  #
34
33
  # `:class`
35
- # : start a class or module definition
34
+ # : Start a class or module definition.
36
35
  #
37
36
  # `:end`
38
- # : finish a class or module definition
37
+ # : Finish a class or module definition.
39
38
  #
40
39
  # `:call`
41
- # : call a Ruby method
40
+ # : Call a Ruby method.
42
41
  #
43
42
  # `:return`
44
- # : return from a Ruby method
43
+ # : Return from a Ruby method.
45
44
  #
46
45
  # `:c_call`
47
- # : call a C-language routine
46
+ # : Call a C-language routine.
48
47
  #
49
48
  # `:c_return`
50
- # : return from a C-language routine
49
+ # : Return from a C-language routine.
51
50
  #
52
51
  # `:raise`
53
- # : raise an exception
52
+ # : Raise an exception.
54
53
  #
55
54
  # `:rescue`
56
- # : rescue an exception
55
+ # : Rescue an exception.
57
56
  #
58
57
  # `:b_call`
59
- # : event hook at block entry
58
+ # : Event hook at block entry.
60
59
  #
61
60
  # `:b_return`
62
- # : event hook at block ending
61
+ # : Event hook at block ending.
63
62
  #
64
63
  # `:a_call`
65
- # : event hook at all calls (`call`, `b_call`, and `c_call`)
64
+ # : Event hook at all calls (`call`, `b_call`, and `c_call`).
66
65
  #
67
66
  # `:a_return`
68
- # : event hook at all returns (`return`, `b_return`, and `c_return`)
67
+ # : Event hook at all returns (`return`, `b_return`, and `c_return`).
69
68
  #
70
69
  # `:thread_begin`
71
- # : event hook at thread beginning
70
+ # : Event hook at thread beginning.
72
71
  #
73
72
  # `:thread_end`
74
- # : event hook at thread ending
73
+ # : Event hook at thread ending.
75
74
  #
76
75
  # `:fiber_switch`
77
- # : event hook at fiber switch
76
+ # : Event hook at fiber switch.
78
77
  #
79
78
  # `:script_compiled`
80
- # : new Ruby code compiled (with `eval`, `load` or `require`)
79
+ # : New Ruby code compiled (with `eval`, `load`, or `require`).
81
80
  #
82
81
  class TracePoint
83
82
  # <!--
84
83
  # rdoc-file=trace_point.rb
85
- # - TracePoint.new(*events) { |obj| block } -> obj
84
+ # - TracePoint.new(*events) { |tp| block } -> tp
86
85
  # -->
87
86
  # Returns a new TracePoint object, not enabled by default.
88
87
  #
89
- # Next, in order to activate the trace, you must use TracePoint#enable
88
+ # To activate the TracePoint object, use TracePoint#enable:
90
89
  #
91
90
  # trace = TracePoint.new(:call) do |tp|
92
- # p [tp.lineno, tp.defined_class, tp.method_id, tp.event]
91
+ # p [tp.lineno, tp.defined_class, tp.method_id, tp.event]
93
92
  # end
94
93
  # #=> #<TracePoint:disabled>
95
94
  #
96
- # trace.enable
97
- # #=> false
95
+ # trace.enable #=> false
98
96
  #
99
97
  # puts "Hello, TracePoint!"
100
98
  # # ...
101
99
  # # [48, IRB::Notifier::AbstractNotifier, :printf, :call]
102
100
  # # ...
103
101
  #
104
- # When you want to deactivate the trace, you must use TracePoint#disable
102
+ # To deactivate the trace, use TracePoint#disable.
105
103
  #
106
104
  # trace.disable
107
105
  #
108
106
  # See TracePoint@Events for possible events and more information.
109
107
  #
110
- # A block must be given, otherwise an ArgumentError is raised.
108
+ # A block must be given; otherwise, an ArgumentError is raised.
111
109
  #
112
110
  # If the trace method isn't included in the given events filter, a RuntimeError
113
111
  # is raised.
114
112
  #
115
113
  # TracePoint.trace(:line) do |tp|
116
- # p tp.raised_exception
114
+ # p tp.raised_exception
117
115
  # end
118
116
  # #=> RuntimeError: 'raised_exception' not supported by this event
119
117
  #
120
- # If the trace method is called outside block, a RuntimeError is raised.
118
+ # If the trace method is called outside a block, a RuntimeError is raised.
121
119
  #
122
120
  # TracePoint.trace(:line) do |tp|
123
121
  # $tp = tp
@@ -132,13 +130,12 @@ class TracePoint
132
130
  # rdoc-file=trace_point.rb
133
131
  # - TracePoint.allow_reentry { block }
134
132
  # -->
135
- # In general, while a TracePoint callback is running, other registered callbacks
136
- # are not called to avoid confusion by reentrance. This method allows the
137
- # reentrance in a given block. This method should be used carefully, otherwise
138
- # the callback can be easily called infinitely.
133
+ # Generally, while a TracePoint callback is running, other registered callbacks
134
+ # are not called to avoid confusion from reentrance. This method allows
135
+ # reentrance within a given block. Use this method carefully to avoid infinite
136
+ # callback invocation.
139
137
  #
140
- # If this method is called when the reentrance is already allowed, it raises a
141
- # RuntimeError.
138
+ # If called when reentrance is already allowed, it raises a RuntimeError.
142
139
  #
143
140
  # **Example:**
144
141
  #
@@ -146,7 +143,7 @@ class TracePoint
146
143
  # # ---------------
147
144
  #
148
145
  # line_handler = TracePoint.new(:line) do |tp|
149
- # next if tp.path != __FILE__ # only work in this file
146
+ # next if tp.path != __FILE__ # Only works in this file
150
147
  # puts "Line handler"
151
148
  # binding.eval("class C; end")
152
149
  # end.enable
@@ -158,15 +155,15 @@ class TracePoint
158
155
  # class B
159
156
  # end
160
157
  #
161
- # # This script will print "Class handler" only once: when inside :line
162
- # # handler, all other handlers are ignored
158
+ # # This script will print "Class handler" only once: when inside the :line
159
+ # # handler, all other handlers are ignored.
163
160
  #
164
161
  # # With reentry
165
162
  # # ------------
166
163
  #
167
164
  # line_handler = TracePoint.new(:line) do |tp|
168
- # next if tp.path != __FILE__ # only work in this file
169
- # next if (__LINE__..__LINE__+3).cover?(tp.lineno) # don't be invoked from itself
165
+ # next if tp.path != __FILE__ # Only works in this file
166
+ # next if (__LINE__..__LINE__+3).cover?(tp.lineno) # Prevent infinite calls
170
167
  # puts "Line handler"
171
168
  # TracePoint.allow_reentry { binding.eval("class C; end") }
172
169
  # end.enable
@@ -178,15 +175,15 @@ class TracePoint
178
175
  # class B
179
176
  # end
180
177
  #
181
- # # This wil print "Class handler" twice: inside allow_reentry block in :line
178
+ # # This will print "Class handler" twice: inside the allow_reentry block in the :line
182
179
  # # handler, other handlers are enabled.
183
180
  #
184
181
  # Note that the example shows the principal effect of the method, but its
185
182
  # practical usage is for debugging libraries that sometimes require other
186
- # libraries hooks to not be affected by debugger being inside trace point
183
+ # libraries' hooks to not be affected by the debugger being inside trace point
187
184
  # handling. Precautions should be taken against infinite recursion in this case
188
- # (note that we needed to filter out calls by itself from :line handler,
189
- # otherwise it will call itself infinitely).
185
+ # (note that we needed to filter out calls by itself from the :line handler,
186
+ # otherwise it would call itself infinitely).
190
187
  #
191
188
  def self.allow_reentry: [T] () { (nil) -> T } -> T
192
189
 
@@ -196,8 +193,8 @@ class TracePoint
196
193
  # -->
197
194
  # Returns internal information of TracePoint.
198
195
  #
199
- # The contents of the returned value are implementation specific. It may be
200
- # changed in future.
196
+ # The contents of the returned value are implementation-specific and may change
197
+ # in the future.
201
198
  #
202
199
  # This method is only for debugging TracePoint itself.
203
200
  #
@@ -205,15 +202,15 @@ class TracePoint
205
202
 
206
203
  # <!--
207
204
  # rdoc-file=trace_point.rb
208
- # - TracePoint.trace(*events) { |obj| block } -> obj
205
+ # - TracePoint.trace(*events) { |tp| block } -> obj
209
206
  # -->
210
- # A convenience method for TracePoint.new, that activates the trace
207
+ # A convenience method for TracePoint.new that activates the trace
211
208
  # automatically.
212
209
  #
213
210
  # trace = TracePoint.trace(:call) { |tp| [tp.lineno, tp.event] }
214
211
  # #=> #<TracePoint:enabled>
215
212
  #
216
- # trace.enabled? #=> true
213
+ # trace.enabled? #=> true
217
214
  #
218
215
  def self.trace: (*_ToSym events) { (instance tp) -> void } -> instance
219
216
 
@@ -221,9 +218,9 @@ class TracePoint
221
218
  # rdoc-file=trace_point.rb
222
219
  # - binding()
223
220
  # -->
224
- # Return the generated binding object from event.
221
+ # Returns the generated binding object from the event.
225
222
  #
226
- # Note that for `:c_call` and `:c_return` events, the method will return `nil`,
223
+ # Note that for `:c_call` and `:c_return` events, the method returns `nil`,
227
224
  # since C methods themselves do not have bindings.
228
225
  #
229
226
  def binding: () -> Binding?
@@ -232,7 +229,7 @@ class TracePoint
232
229
  # rdoc-file=trace_point.rb
233
230
  # - callee_id()
234
231
  # -->
235
- # Return the called name of the method being called
232
+ # Returns the called name of the method being called.
236
233
  #
237
234
  def callee_id: () -> Symbol?
238
235
 
@@ -240,7 +237,7 @@ class TracePoint
240
237
  # rdoc-file=trace_point.rb
241
238
  # - defined_class()
242
239
  # -->
243
- # Return class or module of the method being called.
240
+ # Returns the class or module of the method being called.
244
241
  #
245
242
  # class C; def foo; end; end
246
243
  # trace = TracePoint.new(:call) do |tp|
@@ -249,20 +246,20 @@ class TracePoint
249
246
  # C.new.foo
250
247
  # end
251
248
  #
252
- # If method is defined by a module, then that module is returned.
249
+ # If the method is defined by a module, then that module is returned.
253
250
  #
254
251
  # module M; def foo; end; end
255
- # class C; include M; end;
252
+ # class C; include M; end
256
253
  # trace = TracePoint.new(:call) do |tp|
257
254
  # p tp.defined_class #=> M
258
255
  # end.enable do
259
256
  # C.new.foo
260
257
  # end
261
258
  #
262
- # **Note:** #defined_class returns singleton class.
259
+ # **Note:** #defined_class returns the singleton class.
263
260
  #
264
- # 6th block parameter of Kernel#set_trace_func passes original class of attached
265
- # by singleton class.
261
+ # The 6th block parameter of Kernel#set_trace_func passes the original class
262
+ # attached by the singleton class.
266
263
  #
267
264
  # **This is a difference between Kernel#set_trace_func and TracePoint.**
268
265
  #
@@ -277,31 +274,30 @@ class TracePoint
277
274
 
278
275
  # <!--
279
276
  # rdoc-file=trace_point.rb
280
- # - trace.disable -> true or false
277
+ # - trace.disable -> true or false
281
278
  # - trace.disable { block } -> obj
282
279
  # -->
283
- # Deactivates the trace
280
+ # Deactivates the trace.
284
281
  #
285
- # Return true if trace was enabled. Return false if trace was disabled.
282
+ # Returns `true` if the trace was enabled. Returns `false` if the trace was
283
+ # disabled.
286
284
  #
287
- # trace.enabled? #=> true
288
- # trace.disable #=> true (previous status)
289
- # trace.enabled? #=> false
290
- # trace.disable #=> false
285
+ # trace.enabled? #=> true
286
+ # trace.disable #=> true (previous status)
287
+ # trace.enabled? #=> false
288
+ # trace.disable #=> false
291
289
  #
292
- # If a block is given, the trace will only be disable within the scope of the
290
+ # If a block is given, the trace will only be disabled within the scope of the
293
291
  # block.
294
292
  #
295
- # trace.enabled?
296
- # #=> true
293
+ # trace.enabled? #=> true
297
294
  #
298
295
  # trace.disable do
299
- # trace.enabled?
300
- # # only disabled for this block
296
+ # trace.enabled?
297
+ # # Only disabled for this block
301
298
  # end
302
299
  #
303
- # trace.enabled?
304
- # #=> true
300
+ # trace.enabled? #=> true
305
301
  #
306
302
  # Note: You cannot access event hooks within the block.
307
303
  #
@@ -313,12 +309,13 @@ class TracePoint
313
309
 
314
310
  # <!--
315
311
  # rdoc-file=trace_point.rb
316
- # - trace.enable(target: nil, target_line: nil, target_thread: nil) -> true or false
317
- # - trace.enable(target: nil, target_line: nil, target_thread: :default) { block } -> obj
312
+ # - trace.enable(target: nil, target_line: nil, target_thread: nil) -> true or false
313
+ # - trace.enable(target: nil, target_line: nil, target_thread: :default) { block } -> obj
318
314
  # -->
319
315
  # Activates the trace.
320
316
  #
321
- # Returns `true` if trace was enabled. Returns `false` if trace was disabled.
317
+ # Returns `true` if the trace was enabled. Returns `false` if the trace was
318
+ # disabled.
322
319
  #
323
320
  # trace.enabled? #=> false
324
321
  # trace.enable #=> false (previous state)
@@ -327,24 +324,22 @@ class TracePoint
327
324
  # trace.enable #=> true (previous state)
328
325
  # # trace is still enabled
329
326
  #
330
- # If a block is given, the trace will only be enabled during the block call. If
331
- # target and target_line are both nil, then target_thread will default to the
332
- # current thread if a block is given.
327
+ # If a block is given, the trace will only be enabled during the block
328
+ # execution. If target and target_line are both nil, then target_thread will
329
+ # default to the current thread if a block is given.
333
330
  #
334
- # trace.enabled?
335
- # #=> false
331
+ # trace.enabled? #=> false
336
332
  #
337
333
  # trace.enable do
338
334
  # trace.enabled?
339
- # # only enabled for this block and thread
335
+ # # Only enabled for this block and thread
340
336
  # end
341
337
  #
342
- # trace.enabled?
343
- # #=> false
338
+ # trace.enabled? #=> false
344
339
  #
345
- # `target`, `target_line` and `target_thread` parameters are used to limit
346
- # tracing only to specified code objects. `target` should be a code object for
347
- # which RubyVM::InstructionSequence.of will return an instruction sequence.
340
+ # The `target`, `target_line`, and `target_thread` parameters are used to limit
341
+ # tracing to specified code objects. `target` should be a code object for which
342
+ # RubyVM::InstructionSequence.of will return an instruction sequence.
348
343
  #
349
344
  # t = TracePoint.new(:line) { |tp| p tp }
350
345
  #
@@ -359,9 +354,9 @@ class TracePoint
359
354
  # t.enable(target: method(:m1))
360
355
  #
361
356
  # m1
362
- # # prints #<TracePoint:line test.rb:4 in `m1'>
357
+ # # Prints #<TracePoint:line test.rb:4 in `m1'>
363
358
  # m2
364
- # # prints nothing
359
+ # # Prints nothing
365
360
  #
366
361
  # Note: You cannot access event hooks within the `enable` block.
367
362
  #
@@ -373,9 +368,9 @@ class TracePoint
373
368
 
374
369
  # <!--
375
370
  # rdoc-file=trace_point.rb
376
- # - trace.enabled? -> true or false
371
+ # - trace.enabled? -> true or false
377
372
  # -->
378
- # The current status of the trace
373
+ # Returns the current status of the trace.
379
374
  #
380
375
  def enabled?: () -> bool
381
376
 
@@ -383,7 +378,7 @@ class TracePoint
383
378
  # rdoc-file=trace_point.rb
384
379
  # - event()
385
380
  # -->
386
- # Type of event
381
+ # Returns the type of event.
387
382
  #
388
383
  # See TracePoint@Events for more information.
389
384
  #
@@ -391,9 +386,9 @@ class TracePoint
391
386
 
392
387
  # <!--
393
388
  # rdoc-file=trace_point.rb
394
- # - trace.inspect -> string
389
+ # - trace.inspect -> string
395
390
  # -->
396
- # Return a string containing a human-readable TracePoint status.
391
+ # Returns a string containing a human-readable TracePoint status.
397
392
  #
398
393
  def inspect: () -> String
399
394
 
@@ -401,7 +396,7 @@ class TracePoint
401
396
  # rdoc-file=trace_point.rb
402
397
  # - lineno()
403
398
  # -->
404
- # Line number of the event
399
+ # Returns the line number of the event.
405
400
  #
406
401
  def lineno: () -> Integer
407
402
 
@@ -409,7 +404,7 @@ class TracePoint
409
404
  # rdoc-file=trace_point.rb
410
405
  # - method_id()
411
406
  # -->
412
- # Return the name at the definition of the method being called
407
+ # Returns the name at the definition of the method being called.
413
408
  #
414
409
  def method_id: () -> Symbol?
415
410
 
@@ -417,7 +412,7 @@ class TracePoint
417
412
  # rdoc-file=trace_point.rb
418
413
  # - path()
419
414
  # -->
420
- # Path of the file being run
415
+ # Returns the path of the file being executed.
421
416
  #
422
417
  def path: () -> String
423
418
 
@@ -425,8 +420,8 @@ class TracePoint
425
420
  # rdoc-file=trace_point.rb
426
421
  # - parameters()
427
422
  # -->
428
- # Return the parameters definition of the method or block that the current hook
429
- # belongs to. Format is the same as for Method#parameters
423
+ # Returns the parameter definitions of the method or block that the current hook
424
+ # belongs to. The format is the same as for Method#parameters.
430
425
  #
431
426
  def parameters: () -> Method::param_types?
432
427
 
@@ -434,7 +429,7 @@ class TracePoint
434
429
  # rdoc-file=trace_point.rb
435
430
  # - raised_exception()
436
431
  # -->
437
- # Value from exception raised on the `:raise` event, or rescued on the `:rescue`
432
+ # Returns the exception raised on the `:raise` event or rescued on the `:rescue`
438
433
  # event.
439
434
  #
440
435
  def raised_exception: () -> Exception
@@ -443,7 +438,7 @@ class TracePoint
443
438
  # rdoc-file=trace_point.rb
444
439
  # - return_value()
445
440
  # -->
446
- # Return value from `:return`, `:c_return`, and `:b_return` event
441
+ # Returns the return value from `:return`, `:c_return`, and `:b_return` events.
447
442
  #
448
443
  def return_value: () -> untyped
449
444
 
@@ -451,9 +446,9 @@ class TracePoint
451
446
  # rdoc-file=trace_point.rb
452
447
  # - self()
453
448
  # -->
454
- # Return the trace object during event
449
+ # Returns the trace object during the event.
455
450
  #
456
- # Same as the following, except it returns the correct object (the method
451
+ # Similar to the following, but it returns the correct object (the method
457
452
  # receiver) for `:c_call` and `:c_return` events:
458
453
  #
459
454
  # trace.binding.eval('self')
@@ -464,8 +459,8 @@ class TracePoint
464
459
  # rdoc-file=trace_point.rb
465
460
  # - eval_script()
466
461
  # -->
467
- # Compiled source code (String) on *eval methods on the `:script_compiled`
468
- # event. If loaded from a file, it will return nil.
462
+ # Returns the compiled source code (String) from eval methods on the
463
+ # `:script_compiled` event. If loaded from a file, it returns `nil`.
469
464
  #
470
465
  def eval_script: () -> String?
471
466
 
@@ -473,10 +468,10 @@ class TracePoint
473
468
  # rdoc-file=trace_point.rb
474
469
  # - instruction_sequence()
475
470
  # -->
476
- # Compiled instruction sequence represented by a RubyVM::InstructionSequence
477
- # instance on the `:script_compiled` event.
471
+ # Returns the compiled instruction sequence represented by a
472
+ # RubyVM::InstructionSequence instance on the `:script_compiled` event.
478
473
  #
479
- # Note that this method is MRI specific.
474
+ # Note that this method is CRuby-specific.
480
475
  #
481
476
  def instruction_sequence: () -> RubyVM::InstructionSequence
482
477
  end
@@ -1220,7 +1220,7 @@ static VALUE parse_type_params(parserstate *state, range *rg, bool module_type_p
1220
1220
 
1221
1221
  VALUE location = rbs_new_location(state->buffer, param_range);
1222
1222
  rbs_loc *loc = rbs_check_location(location);
1223
- rbs_loc_alloc_children(loc, 4);
1223
+ rbs_loc_alloc_children(loc, 5);
1224
1224
  rbs_loc_add_required_child(loc, rb_intern("name"), name_range);
1225
1225
  rbs_loc_add_optional_child(loc, rb_intern("variance"), variance_range);
1226
1226
  rbs_loc_add_optional_child(loc, rb_intern("unchecked"), unchecked_range);
data/lib/rbs/types.rb CHANGED
@@ -1427,6 +1427,7 @@ module RBS
1427
1427
  def each_type(&block)
1428
1428
  if block
1429
1429
  type.each_type(&block)
1430
+ yield self_type if self_type
1430
1431
  self.block&.type&.each_type(&block)
1431
1432
  if self_type = self.block&.self_type
1432
1433
  yield self_type
@@ -1467,7 +1468,7 @@ module RBS
1467
1468
  end
1468
1469
 
1469
1470
  def with_nonreturn_void?
1470
- if type.with_nonreturn_void?
1471
+ if type.with_nonreturn_void? || self_type&.with_nonreturn_void?
1471
1472
  true
1472
1473
  else
1473
1474
  if block = block()
data/lib/rbs/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module RBS
4
- VERSION = "3.8.0.pre.1"
4
+ VERSION = "3.8.0"
5
5
  end