From d5fa66156ab116df558448402b93c9c129b30291 Mon Sep 17 00:00:00 2001 From: Quang-Minh Nguyen Date: Fri, 18 Sep 2020 12:15:32 +0700 Subject: [PATCH] Add status to Ractor#inspect --- bootstraptest/test_ractor.rb | 21 +++++++++++++++++++++ ractor.rb | 9 ++++++--- 2 files changed, 27 insertions(+), 3 deletions(-) diff --git a/bootstraptest/test_ractor.rb b/bootstraptest/test_ractor.rb index ab20082711..4b6afc2c53 100644 --- a/bootstraptest/test_ractor.rb +++ b/bootstraptest/test_ractor.rb @@ -17,6 +17,27 @@ assert_equal "must be called with a block", %q{ end } +# Ractor#inspect +assert_equal "#", %q{ + Ractor.current.inspect +} + +assert_match /^#$/, %q{ + r = Ractor.new { Ractor.recv } + r.inspect +} + +assert_match /^#$/, %q{ + r = Ractor.new { '' } + r.take + r.inspect +} + +assert_match /^#$/, %q{ + r = Ractor.new(name: 'Test Ractor') { Ractor.recv } + r.inspect +} + # A return value of a Ractor block will be a message from the Ractor. assert_equal 'ok', %q{ # join diff --git a/ractor.rb b/ractor.rb index 893a3f14c6..4188f39161 100644 --- a/ractor.rb +++ b/ractor.rb @@ -12,7 +12,7 @@ class Ractor # receive them. # # The result of the block is sent via the outgoing channel - # and other + # and other # # r = Ractor.new do # Ractor.recv # recv via r's mailbox => 1 @@ -29,7 +29,7 @@ class Ractor # # other options: # name: Ractor's name - # + # def self.new *args, name: nil, &block b = block # TODO: builtin bug raise ArgumentError, "must be called with a block" unless block @@ -132,7 +132,10 @@ class Ractor loc = __builtin_cexpr! %q{ RACTOR_PTR(self)->loc } name = __builtin_cexpr! %q{ RACTOR_PTR(self)->name } id = __builtin_cexpr! %q{ INT2FIX(RACTOR_PTR(self)->id) } - "#" + status = __builtin_cexpr! %q{ + rb_str_new2(ractor_status_str(RACTOR_PTR(self)->status_)) + } + "#" end def name