Skip to content

Fix splice params in dynamic expressions#4750

Merged
josevalim merged 1 commit into
elixir-ecto:masterfrom
lukaszsamson:ls-splice-duplication
Jul 8, 2026
Merged

Fix splice params in dynamic expressions#4750
josevalim merged 1 commit into
elixir-ecto:masterfrom
lukaszsamson:ls-splice-duplication

Conversation

@lukaszsamson

@lukaszsamson lukaszsamson commented Jul 8, 2026

Copy link
Copy Markdown
Contributor

This PR does 2 changes

  1. dynamic.ex changes expand/4 to recurese accumulating splices into a map. Previously the postwalk appended the shared {list, {:splice, :any}} param once per placeholder occurrence resulting in k placeholders x k copies of params and mis-bound placeholders. Now the first occurrence appends the param, so the following ones can reuse it
  2. builder.ex changes length(unquote(params)) into unquote(length(params)) as params is a plain compile-time list

Fixes #4748

@lukaszsamson lukaszsamson marked this pull request as draft July 8, 2026 16:54
@lukaszsamson lukaszsamson force-pushed the ls-splice-duplication branch from 6488eea to 96c27b7 Compare July 8, 2026 17:37
@lukaszsamson lukaszsamson marked this pull request as ready for review July 8, 2026 18:57
@josevalim josevalim merged commit f1bd9d1 into elixir-ecto:master Jul 8, 2026
8 checks passed
@josevalim

Copy link
Copy Markdown
Member

💚 💙 💜 💛 ❤️

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants