diff options
Diffstat (limited to 'lib/rubygems/core_ext')
-rw-r--r-- | lib/rubygems/core_ext/kernel_require.rb | 3 | ||||
-rw-r--r-- | lib/rubygems/core_ext/kernel_warn.rb | 13 |
2 files changed, 9 insertions, 7 deletions
diff --git a/lib/rubygems/core_ext/kernel_require.rb b/lib/rubygems/core_ext/kernel_require.rb index edf046651e..4b867c55e9 100644 --- a/lib/rubygems/core_ext/kernel_require.rb +++ b/lib/rubygems/core_ext/kernel_require.rb @@ -17,6 +17,8 @@ module Kernel private :gem_original_require end + file = Gem::KERNEL_WARN_IGNORES_INTERNAL_ENTRIES ? "<internal:#{__FILE__}>" : __FILE__ + module_eval <<'RUBY', file, __LINE__ + 1 ## # When RubyGems is required, Kernel#require is replaced with our own which # is capable of loading gems on demand. @@ -166,6 +168,7 @@ module Kernel end end end +RUBY private :require diff --git a/lib/rubygems/core_ext/kernel_warn.rb b/lib/rubygems/core_ext/kernel_warn.rb index e030ef815c..3373cfdd3b 100644 --- a/lib/rubygems/core_ext/kernel_warn.rb +++ b/lib/rubygems/core_ext/kernel_warn.rb @@ -1,12 +1,12 @@ # frozen_string_literal: true # `uplevel` keyword argument of Kernel#warn is available since ruby 2.5. -if RUBY_VERSION >= "2.5" +if RUBY_VERSION >= "2.5" && !Gem::KERNEL_WARN_IGNORES_INTERNAL_ENTRIES module Kernel rubygems_path = "#{__dir__}/" # Frames to be skipped start with this path. - original_warn = method(:warn) + original_warn = instance_method(:warn) remove_method :warn @@ -17,9 +17,9 @@ if RUBY_VERSION >= "2.5" module_function define_method(:warn) {|*messages, **kw| unless uplevel = kw[:uplevel] if Gem.java_platform? - return original_warn.call(*messages) + return original_warn.bind(self).call(*messages) else - return original_warn.call(*messages, **kw) + return original_warn.bind(self).call(*messages, **kw) end end @@ -45,11 +45,10 @@ if RUBY_VERSION >= "2.5" end end end - uplevel = start + kw[:uplevel] = start end - kw[:uplevel] = uplevel - original_warn.call(*messages, **kw) + original_warn.bind(self).call(*messages, **kw) } end end |