summaryrefslogtreecommitdiff
path: root/prism_compile.c
diff options
context:
space:
mode:
authorJeremy Evans <[email protected]>2025-06-19 17:57:20 -0700
committerJeremy Evans <[email protected]>2025-06-22 06:43:13 +0900
commit353fa6f0bab278d9bd5bd8bd073b31f586116600 ()
tree90538134217d5756e23bab5740b001d87983cb3e /prism_compile.c
parentd84a811f31a65821642b165d712f380c0cc060e0 (diff)
Avoid allocation for positional splat for literal array keyword argument
If all nodes in the array are safe, then it is safe to avoid allocation for the positional splat: ```ruby m(*a, kw: [:a]) # Safe m(*a, kw: [meth]) # Unsafe ``` This avoids an unnecessary allocation in a Rails method call. Details: https://.com/rails/rails/pull/54949/files#r2052645431
-rw-r--r--prism_compile.c9
1 files changed, 9 insertions, 0 deletions
@@ -1882,6 +1882,15 @@ pm_setup_args_dup_rest_p(const pm_node_t *node)
}
case PM_IMPLICIT_NODE:
return pm_setup_args_dup_rest_p(((const pm_implicit_node_t *) node)->value);
default:
return true;
}