ruby-core@ruby-lang.org archive (unofficial mirror)
 help / color / mirror / Atom feed
* [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).