diff options
author | Nobuyoshi Nakada <nobu@ruby-lang.org> | 2022-10-26 19:43:14 +0900 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-10-26 19:43:14 +0900 |
commit | 131c31a9209c61f84d318aa18b61f468f48b8219 (patch) | |
tree | 72dd4a22a3c25f7a912a64adcf2061a3999fd035 | |
parent | a14611cd54d2ac02daad5ccfe99fc3ec9b0818bd (diff) |
[Bug #19081] Show the caller location in warning for Ractor
The internal location in ractor.rb is not usefull at all.
```
$ ruby -e 'Ractor.new {}'
<internal:ractor>:267: warning: Ractor is experimental, ...
```
Notes
Notes:
Merged: https://github.com/ruby/ruby/pull/6629
Merged-By: nobu <nobu@ruby-lang.org>
-rw-r--r-- | bootstraptest/test_ractor.rb | 6 | ||||
-rw-r--r-- | ractor.c | 6 | ||||
-rw-r--r-- | ractor.rb | 4 |
3 files changed, 10 insertions, 6 deletions
diff --git a/bootstraptest/test_ractor.rb b/bootstraptest/test_ractor.rb index 6373349e42..0fad04ebbc 100644 --- a/bootstraptest/test_ractor.rb +++ b/bootstraptest/test_ractor.rb @@ -1618,4 +1618,10 @@ assert_equal "ok", %q{ "ok" } +assert_match /\Atest_ractor\.rb:1:\s+warning:\s+Ractor is experimental/, %q{ + Warning[:experimental] = $VERBOSE = true + STDERR.reopen(STDOUT) + eval("Ractor.new{}.take", nil, "test_ractor.rb", 1) +} + end # if !ENV['GITHUB_WORKFLOW'] @@ -1438,12 +1438,6 @@ cancel_single_ractor_mode(void) } ruby_single_main_ractor = NULL; - - if (rb_warning_category_enabled_p(RB_WARN_CATEGORY_EXPERIMENTAL)) { - rb_category_warn(RB_WARN_CATEGORY_EXPERIMENTAL, - "Ractor is experimental, and the behavior may change in future versions of Ruby! " - "Also there are many implementation issues."); - } } static void @@ -262,6 +262,10 @@ class Ractor def self.new(*args, name: nil, &block) b = block # TODO: builtin bug raise ArgumentError, "must be called with a block" unless block + if __builtin_cexpr!("RBOOL(ruby_single_main_ractor)") + warn("Ractor is experimental, and the behavior may change in future versions of Ruby! " \ + "Also there are many implementation issues.", uplevel: 0, category: :experimental) + end loc = caller_locations(1, 1).first loc = "#{loc.path}:#{loc.lineno}" __builtin_ractor_create(loc, name, args, b) |