Project

General

Profile

Actions

Bug #21447

closed

Fix handling of PM_CONSTANT_PATH_NODE node in keyword arguments with ARGS_SPLAT

Added by jeremyevans0 (Jeremy Evans) 5 days ago. Updated 4 days ago.

Status:
Closed
Target version:
-
[ruby-core:122561]

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
Actions

Also available in: Atom PDF

Like0
Like0