[ruby-core:120351] [Ruby master Bug#20974] Required and optional anonymous parameter show differently in Proc#parameters
From:
"alanwu (Alan Wu) via ruby-core" <ruby-core@...>
Date:
2024-12-20 23:40:52 UTC
List:
ruby-core #120351
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/