Skip to content

Commit 45c7e64

Browse files
committed
fix: error on snippet rest parameters
closes #12464
1 parent c287bd5 commit 45c7e64

File tree

5 files changed

+21
-3
lines changed

5 files changed

+21
-3
lines changed

packages/svelte/messages/compile-errors/template.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -250,7 +250,7 @@
250250
251251
## snippet_invalid_rest_parameter
252252

253-
> snippets do not support rest parameters; use an array instead
253+
> Snippets do not support rest parameters; use an array instead
254254
255255
## snippet_shadowing_prop
256256

packages/svelte/src/compiler/errors.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -1108,12 +1108,12 @@ export function snippet_conflict(node) {
11081108
}
11091109

11101110
/**
1111-
* snippets do not support rest parameters; use an array instead
1111+
* Snippets do not support rest parameters; use an array instead
11121112
* @param {null | number | NodeLike} node
11131113
* @returns {never}
11141114
*/
11151115
export function snippet_invalid_rest_parameter(node) {
1116-
e(node, "snippet_invalid_rest_parameter", "snippets do not support rest parameters; use an array instead");
1116+
e(node, "snippet_invalid_rest_parameter", "Snippets do not support rest parameters; use an array instead");
11171117
}
11181118

11191119
/**

packages/svelte/src/compiler/phases/2-analyze/validation.js

+6
Original file line numberDiff line numberDiff line change
@@ -674,6 +674,12 @@ const validation = {
674674
SnippetBlock(node, context) {
675675
validate_block_not_empty(node.body, context);
676676

677+
for (const arg of node.parameters) {
678+
if (arg.type === 'RestElement') {
679+
e.snippet_invalid_rest_parameter(arg);
680+
}
681+
}
682+
677683
context.next({ ...context.state, parent_element: null });
678684

679685
const { path } = context;
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
import { test } from '../../test';
2+
3+
export default test({
4+
error: {
5+
code: 'snippet_invalid_rest_parameter',
6+
message: 'Snippets do not support rest parameters; use an array instead',
7+
position: [19, 26]
8+
}
9+
});
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{#snippet children(...args)}
2+
{args}
3+
{/snippet}

0 commit comments

Comments
 (0)