From: janko.marohnic@... Date: 2020-12-27T12:40:14+00:00 Subject: [ruby-core:101741] [Ruby master Bug#17481] Keyword arguments change value after calling super without arguments in Ruby 3.0 Issue #17481 has been reported by janko (Janko Marohni��). ---------------------------------------- Bug #17481: Keyword arguments change value after calling super without arguments in Ruby 3.0 https://bugs.ruby-lang.org/issues/17481 * 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: