mirror of
https://github.com/ruby/ruby.git
synced 2025-09-16 00:54:01 +02:00
vm_eval.c: UncaughtThrowError
* vm_eval.c (rb_throw_obj): throw UncaughtThrowError instead of ArgumentError. [Feature #10480] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@48433 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
abd5ba5af2
commit
558b9191c0
7 changed files with 98 additions and 9 deletions
|
@ -147,7 +147,7 @@ class TestException < Test::Unit::TestCase
|
|||
end
|
||||
|
||||
def test_catch_throw_noarg
|
||||
assert_nothing_raised(ArgumentError) {
|
||||
assert_nothing_raised(UncaughtThrowError) {
|
||||
result = catch {|obj|
|
||||
throw obj, :ok
|
||||
assert(false, "should not reach here")
|
||||
|
@ -157,13 +157,18 @@ class TestException < Test::Unit::TestCase
|
|||
end
|
||||
|
||||
def test_uncaught_throw
|
||||
assert_raise_with_message(ArgumentError, /uncaught throw/) {
|
||||
tag = nil
|
||||
e = assert_raise_with_message(UncaughtThrowError, /uncaught throw/) {
|
||||
catch("foo") {|obj|
|
||||
throw obj.dup, :ok
|
||||
tag = obj.dup
|
||||
throw tag, :ok
|
||||
assert(false, "should not reach here")
|
||||
}
|
||||
assert(false, "should not reach here")
|
||||
}
|
||||
assert_not_nil(tag)
|
||||
assert_same(tag, e.tag)
|
||||
assert_equal(:ok, e.value)
|
||||
end
|
||||
|
||||
def test_catch_throw_in_require
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue