Issue #17481 has been updated by nobu (Nobuyoshi Nakada). Bisect resulted in commit:d2c41b1bff1f3102544bb0d03d4e82356d034d33. ---------------------------------------- Bug #17481: Keyword arguments change value after calling super without arguments in Ruby 3.0 https://bugs.ruby-lang.org/issues/17481#change-89565 * Author: janko (Janko Marohni) * Status: Open * Priority: Normal * ruby -v: ruby 3.0.0p0 (2020-12-25 revision 95aff21468) [x86_64-darwin19] * Backport: 2.5: UNKNOWN, 2.6: UNKNOWN, 2.7: UNKNOWN ---------------------------------------- There seems to be a bug in Ruby 3.0 regarding keyword arguments and calling super without arguments, where the splatted variable changes its value after super is called. The following self-contained example reproduces the issue: ``` ruby class BaseTest def call(a:, b:, **) end end class Test < BaseTest def call(a:, b:, **options) p options super p options end end Test.new.call(a: 1, b: 2, c: {}) ``` ``` {:c=>{}} {:c=>{}, :a=>1, :b=>2} ``` We can see that the `options` variable changed value to all keyword arguments after `super` was called. This doesn't happen when explicitly passing arguments to `super`, i.e. `super(a: a, b: b, **options)`. -- https://bugs.ruby-lang.org/ Unsubscribe: <mailto:ruby-core-request / ruby-lang.org?subject=unsubscribe> <http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>