File Manager

Current Path : /usr/lib/ruby/gems/3.0.0/gems/rbs-1.0.4/core/
Upload File :
Current File : //usr/lib/ruby/gems/3.0.0/gems/rbs-1.0.4/core/trace_point.rbs

# Document-class: TracePoint
#
# A class that provides the functionality of Kernel#set_trace_func in a nice
# Object-Oriented API.
#
# ## Example
#
# We can use TracePoint to gather information specifically for exceptions:
#
#     trace = TracePoint.new(:raise) do |tp|
#         p [tp.lineno, tp.event, tp.raised_exception]
#     end
#     #=> #<TracePoint:disabled>
#
#     trace.enable
#     #=> false
#
#     0 / 0
#     #=> [5, :raise, #<ZeroDivisionError: divided by 0>]
#
# ## Events
#
# If you don't specify the type of events you want to listen for, TracePoint
# will include all available events.
#
# **Note** do not depend on current event set, as this list is subject to
# change. Instead, it is recommended you specify the type of events you want to
# use.
#
# To filter what is traced, you can pass any of the following as `events`:
#
# `:line`
# :   execute code on a new line
# `:class`
# :   start a class or module definition
# `:end`
# :   finish a class or module definition
# `:call`
# :   call a Ruby method
# `:return`
# :   return from a Ruby method
# `:c_call`
# :   call a C-language routine
# `:c_return`
# :   return from a C-language routine
# `:raise`
# :   raise an exception
# `:b_call`
# :   event hook at block entry
# `:b_return`
# :   event hook at block ending
# `:thread_begin`
# :   event hook at thread beginning
# `:thread_end`
# :   event hook at thread ending
# `:fiber_switch`
# :   event hook at fiber switch
# `:script_compiled`
# :   new Ruby code compiled (with `eval`, `load` or `require`)
#
#
class TracePoint < Object
  # Returns a new TracePoint object, not enabled by default.
  #
  # Next, in order to activate the trace, you must use TracePoint#enable
  #
  #     trace = TracePoint.new(:call) do |tp|
  #         p [tp.lineno, tp.defined_class, tp.method_id, tp.event]
  #     end
  #     #=> #<TracePoint:disabled>
  #
  #     trace.enable
  #     #=> false
  #
  #     puts "Hello, TracePoint!"
  #     # ...
  #     # [48, IRB::Notifier::AbstractNotifier, :printf, :call]
  #     # ...
  #
  # When you want to deactivate the trace, you must use TracePoint#disable
  #
  #     trace.disable
  #
  # See TracePoint@Events for possible events and more information.
  #
  # A block must be given, otherwise an ArgumentError is raised.
  #
  # If the trace method isn't included in the given events filter, a RuntimeError
  # is raised.
  #
  #     TracePoint.trace(:line) do |tp|
  #         p tp.raised_exception
  #     end
  #     #=> RuntimeError: 'raised_exception' not supported by this event
  #
  # If the trace method is called outside block, a RuntimeError is raised.
  #
  #     TracePoint.trace(:line) do |tp|
  #       $tp = tp
  #     end
  #     $tp.lineno #=> access from outside (RuntimeError)
  #
  # Access from other threads is also forbidden.
  #
  def initialize: (*Symbol events) { (TracePoint tp) -> void } -> void

  # Returns internal information of TracePoint.
  #
  # The contents of the returned value are implementation specific. It may be
  # changed in future.
  #
  # This method is only for debugging TracePoint itself.
  #
  def self.stat: () -> untyped

  # Document-method: trace
  #
  #     A convenience method for TracePoint.new, that activates the trace
  #     automatically.
  #
  #            trace = TracePoint.trace(:call) { |tp| [tp.lineno, tp.event] }
  #            #=> #<TracePoint:enabled>
  #
  #            trace.enabled? #=> true
  #
  def self.trace: (*Symbol events) { (TracePoint tp) -> void } -> TracePoint

  # Return the generated binding object from event
  #
  def binding: () -> Binding

  # Return the called name of the method being called
  #
  def callee_id: () -> Symbol

  # Return class or module of the method being called.
  #
  #     class C; def foo; end; end
  #     trace = TracePoint.new(:call) do |tp|
  #       p tp.defined_class #=> C
  #     end.enable do
  #       C.new.foo
  #     end
  #
  # If method is defined by a module, then that module is returned.
  #
  #     module M; def foo; end; end
  #     class C; include M; end;
  #     trace = TracePoint.new(:call) do |tp|
  #       p tp.defined_class #=> M
  #     end.enable do
  #       C.new.foo
  #     end
  #
  # **Note:** #defined_class returns singleton class.
  #
  # 6th block parameter of Kernel#set_trace_func passes original class of attached
  # by singleton class.
  #
  # **This is a difference between Kernel#set_trace_func and TracePoint.**
  #
  #     class C; def self.foo; end; end
  #     trace = TracePoint.new(:call) do |tp|
  #       p tp.defined_class #=> #<Class:C>
  #     end.enable do
  #       C.foo
  #     end
  #
  def defined_class: () -> Module

  # Deactivates the trace
  #
  # Return true if trace was enabled. Return false if trace was disabled.
  #
  #     trace.enabled?      #=> true
  #     trace.disable       #=> true (previous status)
  #     trace.enabled?      #=> false
  #     trace.disable       #=> false
  #
  # If a block is given, the trace will only be disable within the scope of the
  # block.
  #
  #     trace.enabled?
  #     #=> true
  #
  #     trace.disable do
  #         trace.enabled?
  #         # only disabled for this block
  #     end
  #
  #     trace.enabled?
  #     #=> true
  #
  # Note: You cannot access event hooks within the block.
  #
  #     trace.disable { p tp.lineno }
  #     #=> RuntimeError: access from outside
  #
  def disable: () -> bool
             | () { () -> void } -> void

  # Activates the trace.
  #
  # Returns `true` if trace was enabled. Returns `false` if trace was disabled.
  #
  #     trace.enabled?  #=> false
  #     trace.enable    #=> false (previous state)
  #                     #   trace is enabled
  #     trace.enabled?  #=> true
  #     trace.enable    #=> true (previous state)
  #                     #   trace is still enabled
  #
  # If a block is given, the trace will only be enabled within the scope of the
  # block.
  #
  #     trace.enabled?
  #     #=> false
  #
  #     trace.enable do
  #       trace.enabled?
  #       # only enabled for this block
  #     end
  #
  #     trace.enabled?
  #     #=> false
  #
  # `target`, `target_line` and `target_thread` parameters are used to limit
  # tracing only to specified code objects. `target` should be a code object for
  # which RubyVM::InstructionSequence.of will return an instruction sequence.
  #
  #     t = TracePoint.new(:line) { |tp| p tp }
  #
  #     def m1
  #       p 1
  #     end
  #
  #     def m2
  #       p 2
  #     end
  #
  #     t.enable(target: method(:m1))
  #
  #     m1
  #     # prints #<TracePoint:line@test.rb:5 in `m1'>
  #     m2
  #     # prints nothing
  #
  # Note: You cannot access event hooks within the `enable` block.
  #
  #     trace.enable { p tp.lineno }
  #     #=> RuntimeError: access from outside
  #
  def enable: () -> bool
            | () { () -> void } -> void

  # The current status of the trace
  #
  def enabled?: () -> bool

  # Return a string containing a human-readable TracePoint status.
  #
  def inspect: () -> String

  # Line number of the event
  #
  def lineno: () -> Integer

  # Return the name at the definition of the method being called
  #
  def method_id: () -> Symbol

  # Path of the file being run
  #
  def path: () -> String

  # Value from exception raised on the `:raise` event
  #
  def raised_exception: () -> untyped

  # Return value from `:return`, `c_return`, and `b_return` event
  #
  def return_value: () -> untyped

  # Return the trace object during event
  #
  # Same as TracePoint#binding:
  #     trace.binding.eval('self')
  #
  def `self`: () -> Binding
end

File Manager Version 1.0, Coded By Lucas
Email: hehe@yahoo.com