Skip to content

Commit f877a78

Browse files
chore: skip emitting $.proxy() calls for more expressions
1 parent eab690d commit f877a78

File tree

4 files changed

+11
-3
lines changed

4 files changed

+11
-3
lines changed

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -498,6 +498,8 @@ export function should_proxy(node) {
498498
node.type === 'Literal' ||
499499
node.type === 'ArrowFunctionExpression' ||
500500
node.type === 'FunctionExpression' ||
501+
node.type === 'UnaryExpression' ||
502+
node.type === 'BinaryExpression' ||
501503
(node.type === 'Identifier' && node.name === 'undefined')
502504
) {
503505
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)