From: "shugo (Shugo Maeda)" <noreply@...> Date: 2022-11-16T14:16:06+00:00 Subject: [ruby-dev:51197] [Ruby master Bug#19132] `**` を引数に指定すると no anonymous keyword rest parameter になる Issue #19132 has been updated by shugo (Shugo Maeda). new_args_tail()でkw_argsがある時にANON_KEYWORD_REST_IDがローカル変数のテーブルから削られてしまうようです。 f_kwrestの値をinternal_idからANON_KEYWORD_REST_IDに変えると動くようになりました。 https://github.com/ruby/ruby/pull/6743 内部的な変数名が変わってtest/ruby/test_ast.rbが失敗するようになったのでその部分は対処しましたが、この修正方法だと他にも問題があるかもしれません。 ---------------------------------------- Bug #19132: `**` を引数に指定すると no anonymous keyword rest parameter になる https://bugs.ruby-lang.org/issues/19132#change-100122 * Author: tommy (Masahiro Tomita) * Status: Open * Priority: Normal * ruby -v: ruby 3.2.0preview3 (2022-11-14) [arm64-darwin21] * Backport: 2.7: UNKNOWN, 3.0: UNKNOWN, 3.1: UNKNOWN ---------------------------------------- Ruby 3.2.0-preview3 で次のスクリプトを実行するとエラーになります。 ```ruby def hoge(a, *, k: nil, **) foo(*, **) end ``` ``` % ruby hoge.rb hoge.rb:2: no anonymous keyword rest parameter ``` 次のようにキーワードパラメータが `**` だけであればエラーになりませんでした。 ```ruby def hoge(a, *, **) foo(*, **) end ``` -- https://bugs.ruby-lang.org/