chore: add error for non-inline options

pull/15579/head
paoloricciuti 8 months ago
parent 7c215bf249
commit ec77f8bdf1

@ -648,6 +648,12 @@ Cannot access a computed property of a rune
`%name%` is not a valid rune
```
### rune_invalid_options
```
Options for `%rune%` needs to be declared inline
```
### rune_invalid_usage
```

@ -158,6 +158,10 @@ This turned out to be buggy and unpredictable, particularly when working with de
> `%name%` is not a valid rune
## rune_invalid_options
> Options for `%rune%` needs to be declared inline
## rune_invalid_usage
> Cannot use `%rune%` rune in non-runes mode

@ -373,6 +373,16 @@ export function rune_invalid_name(node, name) {
e(node, 'rune_invalid_name', `\`${name}\` is not a valid rune\nhttps://svelte.dev/e/rune_invalid_name`);
}
/**
* Options for `%rune%` needs to be declared inline
* @param {null | number | NodeLike} node
* @param {string} rune
* @returns {never}
*/
export function rune_invalid_options(node, rune) {
e(node, 'rune_invalid_options', `Options for \`${rune}\` needs to be declared inline\nhttps://svelte.dev/e/rune_invalid_options`);
}
/**
* Cannot use `%rune%` rune in non-runes mode
* @param {null | number | NodeLike} node

@ -87,8 +87,13 @@ export function CallExpression(node, context) {
if ((rune === '$derived' || rune === '$derived.by') && node.arguments.length !== 1) {
e.rune_invalid_arguments_length(node, rune, 'exactly one argument');
} else if (rune === '$state' && node.arguments.length > 2) {
e.rune_invalid_arguments_length(node, rune, 'at most two arguments');
} else if (rune === '$state' || rune === '$state.raw') {
if (node.arguments.length > 2) {
e.rune_invalid_arguments_length(node, rune, 'at most two arguments');
}
if (node.arguments.length === 2 && node.arguments[1].type !== 'ObjectExpression') {
e.rune_invalid_options(node.arguments[1], rune);
}
}
break;

@ -0,0 +1,14 @@
[
{
"code": "rune_invalid_options",
"end": {
"column": 29,
"line": 3
},
"start": {
"column": 22,
"line": 3
},
"message": "Options for `$state` needs to be declared inline"
}
]

@ -0,0 +1,4 @@
<script>
let options = {};
let test = $state(0, options);
</script>
Loading…
Cancel
Save