1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

context.rb: hide wrapping lines

* lib/irb/context.rb (IRB::Context#evaluate): separate the code
  from wrapping lines to propagate the given exception, not to show
  the wrapping lines when SyntaxError.
This commit is contained in:
Nobuyoshi Nakada 2019-05-27 11:05:51 +09:00
parent 9840f52c77
commit 0aa9b003de
No known key found for this signature in database
GPG key ID: 4BC7D6DF58D8DF60
2 changed files with 7 additions and 1 deletions

View file

@ -397,7 +397,8 @@ module IRB
def evaluate(line, line_no, exception: nil) # :nodoc:
@line_no = line_no
if exception
line = "begin ::Kernel.raise _; rescue _.class; #{line}; end"
line_no -= 1
line = "begin ::Kernel.raise _; rescue _.class\n#{line}\n""end"
@workspace.local_variable_set(:_, exception)
end
set_last_value(@workspace.evaluate(self, line, irb_path, line_no))

View file

@ -52,6 +52,11 @@ module TestIRB
}
assert_equal('foo', e.message)
assert_same(e, @context.evaluate('$!', 1, exception: e))
e = assert_raise(SyntaxError) {
@context.evaluate("1,2,3", 1, exception: e)
}
assert_match(/\A\(irb\):1:/, e.message)
assert_not_match(/rescue _\.class/, e.message)
end
def test_eval_input