Skip to content

Commit 16cb265

Browse files
committed
validation
1 parent 9e5f992 commit 16cb265

File tree

6 files changed

+23
-11
lines changed

6 files changed

+23
-11
lines changed

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

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -865,6 +865,12 @@ function validate_call_expression(node, scope, path) {
865865
error(node, 'invalid-rune-args-length', rune, [1]);
866866
}
867867
}
868+
869+
if (rune === '$state.snapshot') {
870+
if (node.arguments.length !== 1) {
871+
error(node, 'invalid-rune-args-length', rune, [1]);
872+
}
873+
}
868874
}
869875

870876
/**

packages/svelte/src/compiler/phases/3-transform/client/visitors/javascript-runes.js

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -389,11 +389,10 @@ export const javascript_visitors_runes = {
389389
}
390390

391391
if (rune === '$state.snapshot') {
392-
const arg =
393-
node.arguments.length > 0
394-
? /** @type {import('estree').Expression} */ (context.visit(node.arguments[0]))
395-
: b.id('undefined');
396-
return b.call('$.snapshot', arg);
392+
return b.call(
393+
'$.snapshot',
394+
/** @type {import('estree').Expression} */ (context.visit(node.arguments[0]))
395+
);
397396
}
398397

399398
if (rune === '$effect.root') {

packages/svelte/src/compiler/phases/3-transform/server/transform-server.js

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -794,11 +794,7 @@ const javascript_visitors_runes = {
794794
}
795795

796796
if (rune === '$state.snapshot') {
797-
const arg =
798-
node.arguments.length > 0
799-
? /** @type {import('estree').Expression} */ (context.visit(node.arguments[0]))
800-
: b.id('undefined');
801-
return context.visit(arg);
797+
return /** @type {import('estree').Expression} */ (context.visit(node.arguments[0]));
802798
}
803799

804800
if (rune === '$inspect' || rune === '$inspect().with') {
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
import { test } from '../../test';
2+
3+
export default test({
4+
error: {
5+
code: 'invalid-rune-args-length',
6+
message: '$state.snapshot can only be called with 1 argument'
7+
}
8+
});
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
<script>
2+
const foo = $state.snapshot();
3+
</script>

sites/svelte-5-preview/src/routes/docs/content/01-api/02-runes.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ class Todo {
4040

4141
> In this example, the compiler transforms `done` and `text` into `get`/`set` methods on the class prototype referencing private fields
4242
43-
Objects and arrays [are made deeply reactive](/#H4sIAAAAAAAAE42QwWrDMBBEf2URhUhUNEl7c21DviPOwZY3jVpZEtIqUBz9e-UUt9BTj7M784bdmZ21wciq48xsPyGr2MF7Jhl9-kXEKxrCoqNLQS2TOqqgPbWd7cgggU3TgCFCAw-RekJ-3Et4lvByEq-drbe_dlsPichZcFYZrT6amQto2pXw5FO88FUYtG90gUfYi3zvWrYL75vxL57zfA07_zfr23k1vjtt-aZ0bQTcbrDL5ZifZcAxKeS8lzDc8X0xDhJ2ItdbX1jlOZMb9VnjyCoKCfMpfwG975NFVwEAAA==) by wrapping with with [`Proxies`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy):
43+
Objects and arrays [are made deeply reactive](/#H4sIAAAAAAAAE42QwWrDMBBEf2URhUhUNEl7c21DviPOwZY3jVpZEtIqUBz9e-UUt9BTj7M784bdmZ21wciq48xsPyGr2MF7Jhl9-kXEKxrCoqNLQS2TOqqgPbWd7cgggU3TgCFCAw-RekJ-3Et4lvByEq-drbe_dlsPichZcFYZrT6amQto2pXw5FO88FUYtG90gUfYi3zvWrYL75vxL57zfA07_zfr23k1vjtt-aZ0bQTcbrDL5ZifZcAxKeS8lzDc8X0xDhJ2ItdbX1jlOZMb9VnjyCoKCfMpfwG975NFVwEAAA==) by wrapping them with [`Proxies`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy):
4444

4545
```svelte
4646
<script>

0 commit comments

Comments
 (0)