Bug #21447
closedFix handling of PM_CONSTANT_PATH_NODE node in keyword arguments with ARGS_SPLAT
Description
I added an optimization to reduce implicit allocations when using parse.y in 3de20efc308cccc38bf9dacfffca6c626d039a06. An implementation was added for prism in 14bb376b79ca9140bfd36dbbad06be045f31f92e. Unfortunately, when I added tests for the optimization, I only tested the optimizable case for NODE_COLON2
(Foo::Bar
). I neglected to add a test for the unoptimizable case (foo()::Bar
). The prism implementation of the optimization incorrectly optimized the unoptimizable case (for PM_CONSTANT_PATH_NODE
), but that's because the tests did not fail when it was incorrectly optimized. This can cause an evaluation order issue in the following code if foo
modifies array
:
method(*array, kw: foo(array)::Bar)
I've submitted a PR that adds tests for the unoptimizable case, and fixes the prism implementation of the optimization: https://github.com/ruby/ruby/pull/13664
Updated by jeremyevans0 (Jeremy Evans) 4 days ago
- Status changed from Open to Closed