rbs 3.8.0.pre.1 → 3.8.0

Sign up to get free protection for your applications and to get access to all the features.
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