Skip to content

Commit be084ca

Browse files
committed
Allow Fiber#raise after Fiber#transfer like ruby 3.0.0
1 parent 1cb5019 commit be084ca

File tree

4 files changed

+4
-1
lines changed

4 files changed

+4
-1
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ Compatibility:
2323
* Configure `mandir` value in `RbConfig::CONFIG` and `RbConfig::MAKEFILE_CONFIG` (#2315).
2424
* TruffleRuby now supports the Truffle polyglot Hash interop API.
2525
* Implement `Fiber#raise` (#2338).
26+
* Allow `Fiber#raise` after `Fiber#transfer` like Ruby 3.0 (#2342).
2627

2728
Performance:
2829

spec/tags/core/fiber/raise_tags.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,2 @@
11
fails:Fiber#raise re-raises a previously rescued exception without overwriting the backtrace
2+
fails(implemented next):Fiber#raise raises a FiberError if invoked on a transferring Fiber

spec/truffleruby.mspec

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,7 @@ class MSpecScript
9393

9494
set :next, %w[
9595
spec/ruby/core/mutex/owned_spec.rb
96+
spec/ruby/core/fiber/raise_spec.rb
9697
]
9798

9899
set :tags_patterns, [

src/main/java/org/truffleruby/core/fiber/FiberNodes.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -178,7 +178,7 @@ protected Object resume(FiberOperation operation, RubyFiber fiber, Object[] args
178178
throw new RaiseException(getContext(), coreExceptions().fiberError("double resume", this));
179179
}
180180

181-
if (transferredProfile.profile(fiber.transferred)) {
181+
if (operation != FiberOperation.RAISE && transferredProfile.profile(fiber.transferred)) {
182182
throw new RaiseException(
183183
getContext(),
184184
coreExceptions().fiberError("cannot resume transferred Fiber", this));

0 commit comments

Comments
 (0)