summaryrefslogtreecommitdiff
path: root/lib/irb/context.rb
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/irb/context.rb
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/irb/context.rb')
-rw-r--r--lib/irb/context.rb7
1 files changed, 4 insertions, 3 deletions
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: