Sha256: b674ab4ab2e5b9c2f981f06d4cf16ce521d1aa190c2b266b401bfdb4a517eb08
Contents?: true
Size: 1.08 KB
Versions: 10
Compression:
Stored size: 1.08 KB
Contents
# frozen_string_literal: true # `uplevel` keyword argument of Kernel#warn is available since ruby 2.5. if RUBY_VERSION >= "2.5" module Kernel path = "#{__dir__}/" # Frames to be skipped start with this path. # Suppress "method redefined" warning original_warn = instance_method(:warn) Module.new {define_method(:warn, original_warn)} original_warn = method(:warn) module_function define_method(:warn) {|*messages, uplevel: nil| unless uplevel return original_warn.call(*messages) end # Ensure `uplevel` fits a `long` uplevel, = [uplevel].pack("l!").unpack("l!") if uplevel >= 0 start = 0 while uplevel >= 0 loc, = caller_locations(start, 1) unless loc # No more backtrace start += uplevel break end start += 1 unless loc.path.start_with?(path) # Non-rubygems frames uplevel -= 1 end end uplevel = start end original_warn.call(*messages, uplevel: uplevel) } end end
Version data entries
10 entries across 10 versions & 1 rubygems