summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorStan Lo <[email protected]>2024-04-27 01:52:08 +0800
committergit <[email protected]>2024-04-26 17:52:12 +0000
commit148518baa06c50669de98d078f743a594ffe2fba (patch)
treef3accafda36262a43132708cc18121a2cdc57da7 /lib
parent6b120135afe1529a8ed1532b9da6878f1f4b1fbf (diff)
[ruby/irb] Suppress command return values
(https://github.com/ruby/irb/pull/934) Since commands can't be chained with methods, their return values are not intended to be used. But if IRB keeps storing command return values as the last value, and print them, users may rely on such implicit behaviour. So to avoid such confusion, this commit suppresses command's return values. It also updates some commands that currently rely on this implicit behaviour. https://github.com/ruby/irb/commit/fa96bea76f
Diffstat (limited to 'lib')
-rw-r--r--lib/irb/command/chws.rb5
-rw-r--r--lib/irb/command/subirb.rb5
-rw-r--r--lib/irb/context.rb7
3 files changed, 11 insertions, 6 deletions
diff --git a/lib/irb/command/chws.rb b/lib/irb/command/chws.rb
index e0a406885f..ef456d0961 100644
--- a/lib/irb/command/chws.rb
+++ b/lib/irb/command/chws.rb
@@ -15,7 +15,7 @@ module IRB
description "Show the current workspace."
def execute(_arg)
- irb_context.main
+ puts "Current workspace: #{irb_context.main}"
end
end
@@ -30,7 +30,8 @@ module IRB
obj = eval(arg, irb_context.workspace.binding)
irb_context.change_workspace(obj)
end
- irb_context.main
+
+ puts "Current workspace: #{irb_context.main}"
end
end
end
diff --git a/lib/irb/command/subirb.rb b/lib/irb/command/subirb.rb
index 138d61c930..85af28c1a5 100644
--- a/lib/irb/command/subirb.rb
+++ b/lib/irb/command/subirb.rb
@@ -49,6 +49,7 @@ module IRB
extend_irb_context
IRB.irb(nil, *obj)
+ puts IRB.JobManager.inspect
end
end
@@ -65,7 +66,7 @@ module IRB
end
extend_irb_context
- IRB.JobManager
+ puts IRB.JobManager.inspect
end
end
@@ -90,6 +91,7 @@ module IRB
raise CommandArgumentError.new("Please specify the id of target IRB job (listed in the `jobs` command).") unless key
IRB.JobManager.switch(key)
+ puts IRB.JobManager.inspect
end
end
@@ -112,6 +114,7 @@ module IRB
extend_irb_context
IRB.JobManager.kill(*keys)
+ puts IRB.JobManager.inspect
end
end
end
diff --git a/lib/irb/context.rb b/lib/irb/context.rb
index 836b8d2625..22e855f1ef 100644
--- a/lib/irb/context.rb
+++ b/lib/irb/context.rb
@@ -587,18 +587,19 @@ module IRB
def evaluate(statement, line_no) # :nodoc:
@line_no = line_no
- result = nil
case statement
when Statement::EmptyInput
return
when Statement::Expression
result = evaluate_expression(statement.code, line_no)
+ set_last_value(result)
when Statement::Command
- result = statement.command_class.execute(self, statement.arg)
+ statement.command_class.execute(self, statement.arg)
+ set_last_value(nil)
end
- set_last_value(result)
+ nil
end
def evaluate_expression(code, line_no) # :nodoc: