* [ruby-core:122561] [Ruby Bug#21447] Fix handling of PM_CONSTANT_PATH_NODE node in keyword arguments with ARGS_SPLAT
@ 2025-06-20 3:22 jeremyevans0 (Jeremy Evans) via ruby-core
2025-06-20 23:47 ` [ruby-core:122565] " jeremyevans0 (Jeremy Evans) via ruby-core
0 siblings, 1 reply; 2+ messages in thread
From: jeremyevans0 (Jeremy Evans) via ruby-core @ 2025-06-20 3:22 UTC (permalink / raw)
To: ruby-core; +Cc: jeremyevans0 (Jeremy Evans)
Issue #21447 has been reported by jeremyevans0 (Jeremy Evans).
----------------------------------------
Bug #21447: Fix handling of PM_CONSTANT_PATH_NODE node in keyword arguments with ARGS_SPLAT
https://bugs.ruby-lang.org/issues/21447
* Author: jeremyevans0 (Jeremy Evans)
* Status: Open
* Assignee: jeremyevans0 (Jeremy Evans)
* Backport: 3.2: DONTNEED, 3.3: DONTNEED, 3.4: REQUIRED
----------------------------------------
I added an optimization to reduce implicit allocations when using parse.y in commit:3de20efc308cccc38bf9dacfffca6c626d039a06. An implementation was added for prism in commit: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`:
```ruby
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
--
https://bugs.ruby-lang.org/
______________________________________________
ruby-core mailing list -- ruby-core@ml.ruby-lang.org
To unsubscribe send an email to ruby-core-leave@ml.ruby-lang.org
ruby-core info -- https://ml.ruby-lang.org/mailman3/lists/ruby-core.ml.ruby-lang.org/
^ permalink raw reply [flat|nested] 2+ messages in thread
* [ruby-core:122565] [Ruby Bug#21447] Fix handling of PM_CONSTANT_PATH_NODE node in keyword arguments with ARGS_SPLAT
2025-06-20 3:22 [ruby-core:122561] [Ruby Bug#21447] Fix handling of PM_CONSTANT_PATH_NODE node in keyword arguments with ARGS_SPLAT jeremyevans0 (Jeremy Evans) via ruby-core
@ 2025-06-20 23:47 ` jeremyevans0 (Jeremy Evans) via ruby-core
0 siblings, 0 replies; 2+ messages in thread
From: jeremyevans0 (Jeremy Evans) via ruby-core @ 2025-06-20 23:47 UTC (permalink / raw)
To: ruby-core; +Cc: jeremyevans0 (Jeremy Evans)
Issue #21447 has been updated by jeremyevans0 (Jeremy Evans).
Status changed from Open to Closed
Fixed by commit:1d94a9e1a4351e01f851dad250ba97dad859ee70
----------------------------------------
Bug #21447: Fix handling of PM_CONSTANT_PATH_NODE node in keyword arguments with ARGS_SPLAT
https://bugs.ruby-lang.org/issues/21447#change-113795
* Author: jeremyevans0 (Jeremy Evans)
* Status: Closed
* Assignee: jeremyevans0 (Jeremy Evans)
* Backport: 3.2: DONTNEED, 3.3: DONTNEED, 3.4: REQUIRED
----------------------------------------
I added an optimization to reduce implicit allocations when using parse.y in commit:3de20efc308cccc38bf9dacfffca6c626d039a06. An implementation was added for prism in commit: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`:
```ruby
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
--
https://bugs.ruby-lang.org/
______________________________________________
ruby-core mailing list -- ruby-core@ml.ruby-lang.org
To unsubscribe send an email to ruby-core-leave@ml.ruby-lang.org
ruby-core info -- https://ml.ruby-lang.org/mailman3/lists/ruby-core.ml.ruby-lang.org/
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2025-06-20 23:49 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2025-06-20 3:22 [ruby-core:122561] [Ruby Bug#21447] Fix handling of PM_CONSTANT_PATH_NODE node in keyword arguments with ARGS_SPLAT jeremyevans0 (Jeremy Evans) via ruby-core
2025-06-20 23:47 ` [ruby-core:122565] " jeremyevans0 (Jeremy Evans) via ruby-core
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).