From: "jeremyevans0 (Jeremy Evans)" Date: 2022-03-18T15:59:31+00:00 Subject: [ruby-core:107979] [Ruby master Feature#18648] ruby2_keywords and ... name arguments with impossible names Issue #18648 has been updated by jeremyevans0 (Jeremy Evans). Backport deleted (2.6: UNKNOWN, 2.7: UNKNOWN, 3.0: UNKNOWN, 3.1: UNKNOWN) Status changed from Open to Feedback Tracker changed from Bug to Feature This isn't a bug, it's currently expected behavior, even if it is a bit inconsistent. I'll switch this to feature, but if you would like the behavior changed, you'll need to respond with what you would like the behavior changed to. You don't mention what problem was caused downstream, so it's hard to guess what you want. IMO, it seems unlikely the benefits of changing things are worth the backwards compatibility cost. ---------------------------------------- Feature #18648: ruby2_keywords and ... name arguments with impossible names https://bugs.ruby-lang.org/issues/18648#change-96931 * Author: aaronjensen (Aaron Jensen) * Status: Feedback * Priority: Normal ---------------------------------------- While investigating a break in a library using reflection, I realized that when ... is used or ruby2_keywords is used that Ruby will name arguments with their symbol, rather than leaving them unnamed. This test demonstrates the issue: https://github.com/ruby/ruby/blob/97426e15d721119738a548ecfa7232b1d027cd34/test/ruby/test_method.rb#L35 https://github.com/ruby/ruby/blob/97426e15d721119738a548ecfa7232b1d027cd34/test/ruby/test_method.rb#L586 I do not understand how `:*`, `:**`, and `:&` are meant to be considered valid parameter names. I assume the reason is so that they do not conflict with something a person could write but that they can still be referenced in Ruby to facilitate delegation but I just wanted to report that it caused a problem downstream. It's also curious that: ``` def foo(*, **, &) end ``` Gives these parameter: `[[:rest], [:keyrest], [:block, :&]]` Why does only `block` get the faux name? Is it because that's how yield works so there needs to be a way to reference it in Ruby? -- https://bugs.ruby-lang.org/ Unsubscribe: