Skip to content

Commit ae530e1

Browse files
committed
prevent spread arguments for all runes except $inspect
1 parent 1b58ca0 commit ae530e1

File tree

1 file changed

+8
-4
lines changed

1 file changed

+8
-4
lines changed

packages/svelte/src/compiler/phases/2-analyze/visitors/CallExpression.js

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,14 @@ export function CallExpression(node, context) {
1717

1818
const rune = get_rune(node, context.state.scope);
1919

20+
if (rune && rune !== '$inspect') {
21+
for (const arg of node.arguments) {
22+
if (arg.type === 'SpreadElement') {
23+
e.rune_invalid_spread(node, rune);
24+
}
25+
}
26+
}
27+
2028
switch (rune) {
2129
case null:
2230
if (!is_safe_identifier(node.callee, context.state.scope)) {
@@ -115,10 +123,6 @@ export function CallExpression(node, context) {
115123
e.state_invalid_placement(node, rune);
116124
}
117125

118-
if (node.arguments.some((arg) => arg.type === 'SpreadElement')) {
119-
e.rune_invalid_spread(node, rune);
120-
}
121-
122126
if ((rune === '$derived' || rune === '$derived.by') && node.arguments.length !== 1) {
123127
e.rune_invalid_arguments_length(node, rune, 'exactly one argument');
124128
} else if (node.arguments.length > 1) {

0 commit comments

Comments
 (0)