From 31e8de2920935d500105949bda931f3ca22cdbff Mon Sep 17 00:00:00 2001 From: "nicholas a. evans" Date: Tue, 17 Nov 2020 19:23:51 -0500 Subject: Let Fiber#raise work with transferring fibers This automatically choosess whether to use transfer on a transferring fiber or resume on a yielding fiber. If the fiber is resuming, it raises a FiberError. --- test/ruby/test_fiber.rb | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'test/ruby/test_fiber.rb') diff --git a/test/ruby/test_fiber.rb b/test/ruby/test_fiber.rb index 96ffc79950..e0cc59bd3c 100644 --- a/test/ruby/test_fiber.rb +++ b/test/ruby/test_fiber.rb @@ -169,6 +169,16 @@ class TestFiber < Test::Unit::TestCase assert_equal(:ok, fib.raise) end + def test_raise_transferring_fiber + root = Fiber.current + fib = Fiber.new { root.transfer } + fib.transfer + assert_raise(RuntimeError){ + fib.raise "can raise with transfer: true" + } + assert_not_predicate(fib, :alive?) + end + def test_transfer ary = [] f2 = nil -- cgit v1.2.3