diff options
author | Stan Lo <[email protected]> | 2024-04-27 01:52:08 +0800 |
---|---|---|
committer | git <[email protected]> | 2024-04-26 17:52:12 +0000 |
commit | 148518baa06c50669de98d078f743a594ffe2fba (patch) | |
tree | f3accafda36262a43132708cc18121a2cdc57da7 /lib | |
parent | 6b120135afe1529a8ed1532b9da6878f1f4b1fbf (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.rb | 5 | ||||
-rw-r--r-- | lib/irb/command/subirb.rb | 5 | ||||
-rw-r--r-- | lib/irb/context.rb | 7 |
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: |