[ruby/irb] Move IRB::TOPLEVEL_BINDING from exe/irb to lib/irb/workspace.rb

https://github.com/ruby/irb/commit/e736a77076
This commit is contained in:
aycabta 2021-09-10 06:08:56 +09:00
Родитель 3503c94af5
Коммит 90afe5f11f
3 изменённых файлов: 4 добавлений и 2 удалений

Просмотреть файл

@ -669,6 +669,8 @@ module IRB
lines = lines.reverse if order == :bottom
lines.map{ |l| l + "\n" }.join
}
# The "<top (required)>" in "(irb)" may be the top level of IRB so imitate the main object.
message = message.gsub(/\(irb\):(?<num>\d+):in `<(?<frame>top \(required\))>'/) { "(irb):#{$~[:num]}:in `<main>'" }
puts message
end
print "Maybe IRB bug!\n" if irb_bug

Просмотреть файл

@ -12,6 +12,7 @@
require "delegate"
IRB::TOPLEVEL_BINDING = binding
module IRB # :nodoc:
class WorkSpace
# Creates a new workspace.
@ -57,7 +58,7 @@ EOF
__FILE__,
__LINE__ - 3)
when 4 # binding is a copy of TOPLEVEL_BINDING (default)
# Note that this will typically be IRB::TOPLEVEL_BINDING (see exe/irb)
# Note that this will typically be IRB::TOPLEVEL_BINDING
# This is to avoid RubyGems' local variables (see issue #17623)
@binding = TOPLEVEL_BINDING.dup
end

Просмотреть файл

@ -8,5 +8,4 @@
require "irb"
IRB::TOPLEVEL_BINDING = binding
IRB.start(__FILE__)