summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/irb.rb2
-rw-r--r--lib/irb/workspace.rb3
-rwxr-xr-xlibexec/irb1
3 files changed, 4 insertions, 2 deletions
diff --git a/lib/irb.rb b/lib/irb.rb
index c22e6db03b..665f67b946 100644
--- a/lib/irb.rb
+++ b/lib/irb.rb
@@ -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
diff --git a/lib/irb/workspace.rb b/lib/irb/workspace.rb
index 8157e21644..2c4c40f348 100644
--- a/lib/irb/workspace.rb
+++ b/lib/irb/workspace.rb
@@ -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
diff --git a/libexec/irb b/libexec/irb
index 7cd24482da..c64ee85fbd 100755
--- a/libexec/irb
+++ b/libexec/irb
@@ -8,5 +8,4 @@
require "irb"
-IRB::TOPLEVEL_BINDING = binding
IRB.start(__FILE__)