Skip to content

Commit 6167eaa

Browse files
committed
[GR-18163] Allow Fiber#raise after Fiber#transfer like ruby 3.0
PullRequest: truffleruby/2633
2 parents d2c8638 + be084ca commit 6167eaa

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
@@ -24,6 +24,7 @@ Compatibility:
2424
* TruffleRuby now supports the Truffle polyglot Hash interop API.
2525
* Implement `Fiber#raise` (#2338).
2626
* Update `File.basename` to return new `String` instances (#2343).
27+
* Allow `Fiber#raise` after `Fiber#transfer` like Ruby 3.0 (#2342).
2728

2829
Performance:
2930

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)