Use an experimental warning for Fiber#storage=
This commit is contained in:
parent
45175962a6
commit
d557f17974
Notes:
git
2022-12-20 18:32:45 +00:00
14
common.mk
14
common.mk
@ -3406,12 +3406,14 @@ cont.$(OBJEXT): $(top_srcdir)/internal/array.h
|
||||
cont.$(OBJEXT): $(top_srcdir)/internal/basic_operators.h
|
||||
cont.$(OBJEXT): $(top_srcdir)/internal/compilers.h
|
||||
cont.$(OBJEXT): $(top_srcdir)/internal/cont.h
|
||||
cont.$(OBJEXT): $(top_srcdir)/internal/error.h
|
||||
cont.$(OBJEXT): $(top_srcdir)/internal/gc.h
|
||||
cont.$(OBJEXT): $(top_srcdir)/internal/imemo.h
|
||||
cont.$(OBJEXT): $(top_srcdir)/internal/proc.h
|
||||
cont.$(OBJEXT): $(top_srcdir)/internal/sanitizers.h
|
||||
cont.$(OBJEXT): $(top_srcdir)/internal/serial.h
|
||||
cont.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
|
||||
cont.$(OBJEXT): $(top_srcdir)/internal/string.h
|
||||
cont.$(OBJEXT): $(top_srcdir)/internal/variable.h
|
||||
cont.$(OBJEXT): $(top_srcdir)/internal/vm.h
|
||||
cont.$(OBJEXT): $(top_srcdir)/internal/warnings.h
|
||||
@ -3432,6 +3434,7 @@ cont.$(OBJEXT): {$(VPATH)}constant.h
|
||||
cont.$(OBJEXT): {$(VPATH)}cont.c
|
||||
cont.$(OBJEXT): {$(VPATH)}debug_counter.h
|
||||
cont.$(OBJEXT): {$(VPATH)}defines.h
|
||||
cont.$(OBJEXT): {$(VPATH)}encoding.h
|
||||
cont.$(OBJEXT): {$(VPATH)}eval_intern.h
|
||||
cont.$(OBJEXT): {$(VPATH)}fiber/scheduler.h
|
||||
cont.$(OBJEXT): {$(VPATH)}gc.h
|
||||
@ -3509,6 +3512,15 @@ cont.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
|
||||
cont.$(OBJEXT): {$(VPATH)}internal/ctype.h
|
||||
cont.$(OBJEXT): {$(VPATH)}internal/dllexport.h
|
||||
cont.$(OBJEXT): {$(VPATH)}internal/dosish.h
|
||||
cont.$(OBJEXT): {$(VPATH)}internal/encoding/coderange.h
|
||||
cont.$(OBJEXT): {$(VPATH)}internal/encoding/ctype.h
|
||||
cont.$(OBJEXT): {$(VPATH)}internal/encoding/encoding.h
|
||||
cont.$(OBJEXT): {$(VPATH)}internal/encoding/pathname.h
|
||||
cont.$(OBJEXT): {$(VPATH)}internal/encoding/re.h
|
||||
cont.$(OBJEXT): {$(VPATH)}internal/encoding/sprintf.h
|
||||
cont.$(OBJEXT): {$(VPATH)}internal/encoding/string.h
|
||||
cont.$(OBJEXT): {$(VPATH)}internal/encoding/symbol.h
|
||||
cont.$(OBJEXT): {$(VPATH)}internal/encoding/transcode.h
|
||||
cont.$(OBJEXT): {$(VPATH)}internal/error.h
|
||||
cont.$(OBJEXT): {$(VPATH)}internal/eval.h
|
||||
cont.$(OBJEXT): {$(VPATH)}internal/event.h
|
||||
@ -3584,6 +3596,8 @@ cont.$(OBJEXT): {$(VPATH)}method.h
|
||||
cont.$(OBJEXT): {$(VPATH)}missing.h
|
||||
cont.$(OBJEXT): {$(VPATH)}mjit.h
|
||||
cont.$(OBJEXT): {$(VPATH)}node.h
|
||||
cont.$(OBJEXT): {$(VPATH)}onigmo.h
|
||||
cont.$(OBJEXT): {$(VPATH)}oniguruma.h
|
||||
cont.$(OBJEXT): {$(VPATH)}ractor.h
|
||||
cont.$(OBJEXT): {$(VPATH)}ractor_core.h
|
||||
cont.$(OBJEXT): {$(VPATH)}ruby_assert.h
|
||||
|
6
cont.c
6
cont.c
@ -29,6 +29,7 @@ extern int madvise(caddr_t, size_t, int);
|
||||
#include "gc.h"
|
||||
#include "internal.h"
|
||||
#include "internal/cont.h"
|
||||
#include "internal/error.h"
|
||||
#include "internal/proc.h"
|
||||
#include "internal/sanitizers.h"
|
||||
#include "internal/warnings.h"
|
||||
@ -2128,6 +2129,11 @@ fiber_storage_validate(VALUE value)
|
||||
static VALUE
|
||||
rb_fiber_storage_set(VALUE self, VALUE value)
|
||||
{
|
||||
if (rb_warning_category_enabled_p(RB_WARN_CATEGORY_EXPERIMENTAL)) {
|
||||
rb_category_warn(RB_WARN_CATEGORY_EXPERIMENTAL,
|
||||
"Fiber#storage= is experimental and may be removed in the future!");
|
||||
}
|
||||
|
||||
fiber_storage_validate(value);
|
||||
|
||||
fiber_ptr(self)->cont.saved_ec.storage = rb_obj_dup(value);
|
||||
|
@ -31,15 +31,18 @@ class TestFiberStorage < Test::Unit::TestCase
|
||||
end
|
||||
|
||||
def test_storage_assignment
|
||||
old, Warning[:experimental] = Warning[:experimental], false
|
||||
|
||||
Fiber.new do
|
||||
Fiber.current.storage = {foo: :bar}
|
||||
assert_equal :bar, Fiber[:foo]
|
||||
end.resume
|
||||
ensure
|
||||
Warning[:experimental] = old
|
||||
end
|
||||
|
||||
def test_inherited_storage
|
||||
Fiber.new do
|
||||
Fiber.current.storage = {foo: :bar}
|
||||
Fiber.new(storage: {foo: :bar}) do
|
||||
f = Fiber.new do
|
||||
assert_equal :bar, Fiber[:foo]
|
||||
end
|
||||
|
Loading…
x
Reference in New Issue
Block a user