From: nobu.nakada@... Date: 2004-02-27T13:56:32+09:00 Subject: [ruby-dev:23038] Re: [ruby-cvs] ruby: * eval.c (localjump_destination): lambda should not interfere なかだです。 At Thu, 26 Feb 2004 17:14:57 +0000, matz wrote in [ruby-cvs:10920]: > * eval.c (localjump_destination): lambda should not interfere > return from the yielded block. これでエラーがsample/test.rbで二つとtest/ruby/test_iterator.rb で一つ、test/drbでSEGVするようになっています。 SEGVはLocalJumpError#exit_valueがQundefになっているからですが、 テストに関してはこういう仕様になった、ということでいいでしょう か。 Index: sample/test.rb =================================================================== RCS file: /cvs/ruby/src/ruby/sample/test.rb,v retrieving revision 1.83 diff -u -2 -p -d -r1.83 test.rb --- sample/test.rb 1 Dec 2003 13:16:08 -0000 1.83 +++ sample/test.rb 27 Feb 2004 01:00:29 -0000 @@ -1091,5 +1091,5 @@ def test_return2 }.call + 5 end -test_ok(test_return2() == 60) +test_ok(test_return2() == 55) def proc_call(&b) Index: test/ruby/test_iterator.rb =================================================================== RCS file: /cvs/ruby/src/ruby/test/ruby/test_iterator.rb,v retrieving revision 1.13 diff -u -2 -p -d -r1.13 test_iterator.rb --- test/ruby/test_iterator.rb 18 Feb 2004 13:08:07 -0000 1.13 +++ test/ruby/test_iterator.rb 27 Feb 2004 01:16:19 -0000 @@ -273,5 +273,5 @@ class TestIterator < Test::Unit::TestCas def test_return2 - assert_equal(60, return2_test()) + assert_equal(55, return2_test()) end @@ -299,10 +299,17 @@ class TestIterator < Test::Unit::TestCas def test_ljump - block = get_block{11} - lambda = lambda{44} assert_raises(LocalJumpError) {get_block{break}.call} - assert_nothing_raised {lambda{break}.call} - assert_instance_of(LocalJumpError, (get_block{break}.call rescue $!)) + # cannot use assert_nothing_raised due to passing block. + begin + lambda{break}.call + rescue LocalJumpError + assert(false, "LocalJumpError occurred from break in lambda") + else + assert(true) + end + + block = get_block{11} + lambda = lambda{44} assert_equal(-1, block.arity) assert_equal(-1, lambda.arity) -- --- 僕の前にBugはない。 --- 僕の後ろにBugはできる。 中田 伸悦