Skip to content

Commit 346041f

Browse files
chore: skip generating $.proxy() calls for more expressions (#9979)
* chore: skip emitting $.proxy() calls for more expressions * Update pretty-ties-help.md --------- Co-authored-by: Dominic Gannaway <[email protected]>
1 parent 60575ad commit 346041f

File tree

5 files changed

+16
-3
lines changed

5 files changed

+16
-3
lines changed

.changeset/pretty-ties-help.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'svelte': patch
3+
---
4+
5+
fix: skip generating $.proxy() calls for unary and binary expressions

packages/svelte/src/compiler/phases/3-transform/client/utils.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -525,6 +525,8 @@ export function should_proxy_or_freeze(node) {
525525
node.type === 'Literal' ||
526526
node.type === 'ArrowFunctionExpression' ||
527527
node.type === 'FunctionExpression' ||
528+
node.type === 'UnaryExpression' ||
529+
node.type === 'BinaryExpression' ||
528530
(node.type === 'Identifier' && node.name === 'undefined')
529531
) {
530532
return false;

packages/svelte/tests/snapshot/samples/function-prop-no-getter/_expected/client/index.svelte.js

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,16 +9,18 @@ export default function Function_prop_no_getter($$anchor, $$props) {
99
let count = $.source(0);
1010

1111
function onmouseup() {
12-
$.set(count, $.proxy($.get(count) + 2));
12+
$.set(count, $.get(count) + 2);
1313
}
1414

15+
const plusOne = (num) => num + 1;
1516
/* Init */
1617
var fragment = $.comment($$anchor);
1718
var node = $.child_frag(fragment);
1819

1920
Button(node, {
20-
onmousedown: () => $.set(count, $.proxy($.get(count) + 1)),
21+
onmousedown: () => $.set(count, $.get(count) + 1),
2122
onmouseup,
23+
onmouseenter: () => $.set(count, $.proxy(plusOne($.get(count)))),
2224
children: ($$anchor, $$slotProps) => {
2325
/* Init */
2426
var node_1 = $.space($$anchor);

packages/svelte/tests/snapshot/samples/function-prop-no-getter/_expected/server/index.svelte.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,13 +11,15 @@ export default function Function_prop_no_getter($$payload, $$props) {
1111
count += 2;
1212
}
1313

14+
const plusOne = (num) => num + 1;
1415
const anchor = $.create_anchor($$payload);
1516

1617
$$payload.out += `${anchor}`;
1718

1819
Button($$payload, {
1920
onmousedown: () => count += 1,
2021
onmouseup,
22+
onmouseenter: () => count = plusOne(count),
2123
children: ($$payload, $$slotProps) => {
2224
$$payload.out += `clicks: ${$.escape(count)}`;
2325
}

packages/svelte/tests/snapshot/samples/function-prop-no-getter/index.svelte

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,10 @@
44
function onmouseup() {
55
count += 2;
66
}
7+
8+
const plusOne = (num) => num + 1;
79
</script>
810

9-
<Button onmousedown={() => count += 1} {onmouseup}>
11+
<Button onmousedown={() => count += 1} {onmouseup} onmouseenter={() => count = plusOne(count)}>
1012
clicks: {count}
1113
</Button>

0 commit comments

Comments
 (0)