diff options
author | Koichi Sasada <ko1@atdot.net> | 2019-10-24 15:03:26 +0900 |
---|---|---|
committer | Koichi Sasada <ko1@atdot.net> | 2019-10-24 16:46:21 +0900 |
commit | 4c3e3b8028ca76fcaedc0e40d9ac678e3ac79ee9 (patch) | |
tree | a09193934fde2f72c3760a61de6b276c218c0a50 | |
parent | 65e8267938a260620bbfe1c1d97e67dde8c31f6c (diff) | |
download | ruby-4c3e3b8028ca76fcaedc0e40d9ac678e3ac79ee9.tar.gz |
Revert "Fix Fiber#transfer"
This reverts commit fa8ac91e957a076f6df1adaecad7896817138009.
Previous behavior is intentional.
-rw-r--r-- | cont.c | 3 | ||||
-rw-r--r-- | spec/ruby/library/fiber/transfer_spec.rb | 15 | ||||
-rw-r--r-- | test/ruby/test_fiber.rb | 10 |
3 files changed, 10 insertions, 18 deletions
@@ -2226,8 +2226,7 @@ static VALUE rb_fiber_m_transfer(int argc, VALUE *argv, VALUE fiber_value) { rb_fiber_t *fiber = fiber_ptr(fiber_value); - fiber_current()->transferred = 1; - fiber->transferred = 0; + fiber->transferred = 1; return fiber_switch(fiber, argc, argv, 0, PASS_KW_SPLAT); } diff --git a/spec/ruby/library/fiber/transfer_spec.rb b/spec/ruby/library/fiber/transfer_spec.rb index fa094a022d..d13053666c 100644 --- a/spec/ruby/library/fiber/transfer_spec.rb +++ b/spec/ruby/library/fiber/transfer_spec.rb @@ -42,18 +42,9 @@ describe "Fiber#transfer" do fiber2.transfer.should == [:fiber2_start, :fiber1, :fiber2_end] end - ruby_version_is ''...'2.7' do - it "raises a FiberError when transferring to a Fiber which resumes itself" do - fiber = Fiber.new { fiber.resume } - -> { fiber.transfer }.should raise_error(FiberError) - end - end - - ruby_version_is '2.7' do - it "allows transferring to a Fiber which resumes itself" do - fiber = Fiber.new { fiber.resume 1 } - fiber.transfer.should == 1 - end + it "raises a FiberError when transferring to a Fiber which resumes itself" do + fiber = Fiber.new { fiber.resume } + -> { fiber.transfer }.should raise_error(FiberError) end it "works if Fibers in different Threads each transfer to a Fiber in the same Thread" do diff --git a/test/ruby/test_fiber.rb b/test/ruby/test_fiber.rb index aa47aaf9be..2d7cbc8a9e 100644 --- a/test/ruby/test_fiber.rb +++ b/test/ruby/test_fiber.rb @@ -222,8 +222,8 @@ class TestFiber < Test::Unit::TestCase end def test_resume_self - f = Fiber.new {f.resume 1} - assert_equal(1, f.transfer) + f = Fiber.new {f.resume} + assert_raise(FiberError, '[ruby-core:23651]') {f.transfer} end def test_fiber_transfer_segv @@ -289,12 +289,14 @@ class TestFiber < Test::Unit::TestCase assert_raise(FiberError){ g=nil f=Fiber.new{ - g.transfer + g.resume + g.resume } g=Fiber.new{ f.resume + f.resume } - f.resume + f.transfer } end |