From: "alanwu (Alan Wu) via ruby-core" Date: 2024-12-20T23:40:52+00:00 Subject: [ruby-core:120351] [Ruby master Bug#20974] Required and optional anonymous parameter show differently in Proc#parameters Issue #20974 has been updated by alanwu (Alan Wu). It's not hard to patch this small issue. We need consensus on whether this is an issue and what the new behavior should be, though. ```diff diff --git a/iseq.c b/iseq.c index 639ca3a4cd..d5808b81a5 100644 --- a/iseq.c +++ b/iseq.c @@ -3606,7 +3606,9 @@ rb_iseq_parameters(const rb_iseq_t *iseq, int is_proc) if (is_proc) { for (i = 0; i < body->param.lead_num; i++) { PARAM_TYPE(opt); - rb_ary_push(a, rb_id2str(PARAM_ID(i)) ? ID2SYM(PARAM_ID(i)) : Qnil); + if (rb_id2str(PARAM_ID(i))) { + rb_ary_push(a, ID2SYM(PARAM_ID(i))); + } rb_ary_push(args, a); } } ``` ---------------------------------------- Bug #20974: Required and optional anonymous parameter show differently in Proc#parameters https://bugs.ruby-lang.org/issues/20974#change-111131 * Author: alanwu (Alan Wu) * Status: Open * Backport: 3.1: UNKNOWN, 3.2: UNKNOWN, 3.3: UNKNOWN ---------------------------------------- The following has had the same output since Ruby 1.9, when Proc#parameters was [introduced]: ```ruby p(proc { |(_a)| }.parameters) # => [[:opt, nil]] p(lambda { |(_a)| }.parameters) # => [[:req]] ``` I think they should be `[[:opt]]` and `[[:req]]` or `[[:opt, nil]]` and `[[:req, nil]]`. I prefer the nil-free option since that feels more anonymous. [introduced]: https://docs.ruby-lang.org/en/master/NEWS/NEWS-1_9_2.html -- https://bugs.ruby-lang.org/ ______________________________________________ ruby-core mailing list -- ruby-core@ml.ruby-lang.org To unsubscribe send an email to ruby-core-leave@ml.ruby-lang.org ruby-core info -- https://ml.ruby-lang.org/mailman3/lists/ruby-core.ml.ruby-lang.org/