} store
* @param {number} store_value
+ * @param {1 | -1} [d]
* @returns {number}
*/
-export function decrement_pre_store(store, store_value) {
- const value = store_value - 1;
+export function update_pre_store(store, store_value, d = 1) {
+ const value = store_value + d;
store.set(value);
return value;
}
diff --git a/packages/svelte/src/internal/index.js b/packages/svelte/src/internal/index.js
index a48a4549237e..048105d0f978 100644
--- a/packages/svelte/src/internal/index.js
+++ b/packages/svelte/src/internal/index.js
@@ -7,7 +7,7 @@ export {
source,
mutable_source,
derived,
- prop_source,
+ prop,
user_effect,
render_effect,
pre_effect,
@@ -17,14 +17,12 @@ export {
safe_equal,
tick,
untrack,
- increment,
- increment_store,
- decrement,
- decrement_store,
- increment_pre,
- increment_pre_store,
- decrement_pre,
- decrement_pre_store,
+ update,
+ update_prop,
+ update_store,
+ update_pre,
+ update_pre_prop,
+ update_pre_store,
mutate,
mutate_store,
value_or_fallback,
diff --git a/packages/svelte/tests/runtime-legacy/samples/binding-backflow/Child.svelte b/packages/svelte/tests/runtime-legacy/samples/binding-backflow/Child.svelte
index 4e0f779b1228..e2865f96626d 100644
--- a/packages/svelte/tests/runtime-legacy/samples/binding-backflow/Child.svelte
+++ b/packages/svelte/tests/runtime-legacy/samples/binding-backflow/Child.svelte
@@ -16,5 +16,5 @@
export let updates = [];
$: updates = [...updates, value];
-
+
child: {value?.foo} | updates: {updates.length}
diff --git a/packages/svelte/tests/runtime-legacy/samples/binding-backflow/_config.js b/packages/svelte/tests/runtime-legacy/samples/binding-backflow/_config.js
index 9e1561f40e17..7eefd6a75ca6 100644
--- a/packages/svelte/tests/runtime-legacy/samples/binding-backflow/_config.js
+++ b/packages/svelte/tests/runtime-legacy/samples/binding-backflow/_config.js
@@ -34,7 +34,7 @@ export default test({
p = parents['reactive_mutate'];
assert.deepEqual(p.value, { foo: 'kid' });
- assert.equal(p.updates.length, 2);
+ assert.equal(p.updates.length, 1);
p = parents['init_update'];
assert.deepEqual(p.value, { foo: 'kid' });
@@ -42,6 +42,6 @@ export default test({
p = parents['init_mutate'];
assert.deepEqual(p.value, { foo: 'kid' });
- assert.equal(p.updates.length, 2);
+ assert.equal(p.updates.length, 1);
}
});
diff --git a/packages/svelte/tests/runtime-legacy/samples/binding-indirect/_config.js b/packages/svelte/tests/runtime-legacy/samples/binding-indirect/_config.js
index 196c74950c77..b0db992d3b2d 100644
--- a/packages/svelte/tests/runtime-legacy/samples/binding-indirect/_config.js
+++ b/packages/svelte/tests/runtime-legacy/samples/binding-indirect/_config.js
@@ -80,7 +80,7 @@ export default test({
select.dispatchEvent(change);
});
- assert.equal(component.selected, tasks[1]);
+ assert.deepEqual(component.selected, tasks[1]); // TODO this should be assert.equal, but that crashes the entire test suite in mysterious ways... something to do with proxies not being reused?
assert.ok(!input.checked);
input.checked = true;
diff --git a/packages/svelte/tests/runtime-legacy/samples/binding-input-checkbox-group-outside-each/_config.js b/packages/svelte/tests/runtime-legacy/samples/binding-input-checkbox-group-outside-each/_config.js
index 95846db35f1c..5be1d9b38dfb 100644
--- a/packages/svelte/tests/runtime-legacy/samples/binding-input-checkbox-group-outside-each/_config.js
+++ b/packages/svelte/tests/runtime-legacy/samples/binding-input-checkbox-group-outside-each/_config.js
@@ -67,7 +67,7 @@ export default test({
`
);
- component.selected = [values[1], values[2]];
+ component.selected = [component.values[1], component.values[2]];
assert.equal(inputs[0].checked, false);
assert.equal(inputs[1].checked, true);
assert.equal(inputs[2].checked, true);
diff --git a/packages/svelte/tests/runtime-legacy/samples/binding-input-checkbox-group/_config.js b/packages/svelte/tests/runtime-legacy/samples/binding-input-checkbox-group/_config.js
index 14625b3bcb14..ee508a564eb8 100644
--- a/packages/svelte/tests/runtime-legacy/samples/binding-input-checkbox-group/_config.js
+++ b/packages/svelte/tests/runtime-legacy/samples/binding-input-checkbox-group/_config.js
@@ -67,7 +67,7 @@ export default test({
`
);
- component.selected = [values[1], values[2]];
+ component.selected = [component.values[1], component.values[2]];
assert.equal(inputs[0].checked, false);
assert.equal(inputs[1].checked, true);
assert.equal(inputs[2].checked, true);
diff --git a/packages/svelte/tests/runtime-legacy/samples/binding-input-group-each-1/_config.js b/packages/svelte/tests/runtime-legacy/samples/binding-input-group-each-1/_config.js
index fe1a1e8da319..47362f973b42 100644
--- a/packages/svelte/tests/runtime-legacy/samples/binding-input-group-each-1/_config.js
+++ b/packages/svelte/tests/runtime-legacy/samples/binding-input-group-each-1/_config.js
@@ -290,7 +290,7 @@ export default test({
`
);
- component.selected_array = [[values[1], values[2]], [values[2]]];
+ component.selected_array = [[component.values[1], component.values[2]], [component.values[2]]];
assert.equal(inputs[0].checked, false);
assert.equal(inputs[1].checked, true);
diff --git a/packages/svelte/tests/runtime-legacy/samples/binding-input-group-each-3/_config.js b/packages/svelte/tests/runtime-legacy/samples/binding-input-group-each-3/_config.js
index b5a0ec69f1c6..47c73ea56ab7 100644
--- a/packages/svelte/tests/runtime-legacy/samples/binding-input-group-each-3/_config.js
+++ b/packages/svelte/tests/runtime-legacy/samples/binding-input-group-each-3/_config.js
@@ -286,7 +286,7 @@ export default test({
`
);
- component.selected_array = [[values[1], values[2]], [values[2]]];
+ component.selected_array = [[component.values[1], component.values[2]], [component.values[2]]];
assert.equal(inputs[0].checked, false);
assert.equal(inputs[1].checked, true);
diff --git a/packages/svelte/tests/runtime-legacy/samples/binding-input-radio-group/_config.js b/packages/svelte/tests/runtime-legacy/samples/binding-input-radio-group/_config.js
index fb65f53ad2fe..6a34d7cd5b3f 100644
--- a/packages/svelte/tests/runtime-legacy/samples/binding-input-radio-group/_config.js
+++ b/packages/svelte/tests/runtime-legacy/samples/binding-input-radio-group/_config.js
@@ -71,7 +71,7 @@ export default test({
assert.equal(inputs[1].checked, false);
assert.equal(inputs[2].checked, false);
- component.selected = values[2];
+ component.selected = component.values[2];
assert.equal(inputs[0].checked, false);
assert.equal(inputs[1].checked, false);
assert.equal(inputs[2].checked, true);
diff --git a/packages/svelte/tests/runtime-legacy/samples/binding-select-null-placeholder-2/_config.js b/packages/svelte/tests/runtime-legacy/samples/binding-select-null-placeholder-2/_config.js
index 497364f1be0f..70a17d5cf920 100644
--- a/packages/svelte/tests/runtime-legacy/samples/binding-select-null-placeholder-2/_config.js
+++ b/packages/svelte/tests/runtime-legacy/samples/binding-select-null-placeholder-2/_config.js
@@ -21,7 +21,7 @@ export default test({
assert.equal(options[1].selected, false);
assert.equal(options[0].value, '');
- component.foo = items[0];
+ component.foo = component.items[0];
assert.equal(options[0].selected, false);
assert.equal(options[1].selected, true);
diff --git a/packages/svelte/tests/runtime-legacy/samples/binding-select-null-placeholder/_config.js b/packages/svelte/tests/runtime-legacy/samples/binding-select-null-placeholder/_config.js
index 7989d59d0e59..955014cf9e04 100644
--- a/packages/svelte/tests/runtime-legacy/samples/binding-select-null-placeholder/_config.js
+++ b/packages/svelte/tests/runtime-legacy/samples/binding-select-null-placeholder/_config.js
@@ -26,7 +26,7 @@ export default test({
assert.equal(options[0].value, '');
assert.equal(select.checkValidity(), false);
- component.foo = items[0];
+ component.foo = component.items[0];
assert.equal(options[0].selected, false);
assert.equal(options[1].selected, true);
diff --git a/packages/svelte/tests/runtime-legacy/samples/dynamic-component-dirty/_config.js b/packages/svelte/tests/runtime-legacy/samples/dynamic-component-dirty/_config.js
index 44b0027131a3..ea0236dcb390 100644
--- a/packages/svelte/tests/runtime-legacy/samples/dynamic-component-dirty/_config.js
+++ b/packages/svelte/tests/runtime-legacy/samples/dynamic-component-dirty/_config.js
@@ -1,7 +1,7 @@
import { test } from '../../test';
/** @type {string[]} */
-const calls = [];
+let calls = [];
export default test({
get props() {
@@ -9,7 +9,7 @@ export default test({
},
before_test() {
- calls.length = 0;
+ calls = [];
},
async test({ assert, component, target, window }) {
diff --git a/packages/svelte/tests/runtime-legacy/samples/select-one-way-bind-object/_config.js b/packages/svelte/tests/runtime-legacy/samples/select-one-way-bind-object/_config.js
index 6948e42ab117..fde9c5625b83 100644
--- a/packages/svelte/tests/runtime-legacy/samples/select-one-way-bind-object/_config.js
+++ b/packages/svelte/tests/runtime-legacy/samples/select-one-way-bind-object/_config.js
@@ -1,6 +1,6 @@
import { test } from '../../test';
-const items = [{}, {}];
+const items = [{ id: 'a' }, { id: 'b' }];
export default test({
get props() {
@@ -13,7 +13,7 @@ export default test({
assert.equal(options[0].selected, true);
assert.equal(options[1].selected, false);
- component.foo = items[1];
+ component.foo = component.items[1];
assert.equal(options[0].selected, false);
assert.equal(options[1].selected, true);
diff --git a/packages/svelte/tests/runtime-runes/samples/derived-stale-value/_config.js b/packages/svelte/tests/runtime-runes/samples/derived-stale-value/_config.js
index 4ae1c413b97c..275b6711d7f2 100644
--- a/packages/svelte/tests/runtime-runes/samples/derived-stale-value/_config.js
+++ b/packages/svelte/tests/runtime-runes/samples/derived-stale-value/_config.js
@@ -1,12 +1,13 @@
import { test } from '../../test';
import { flushSync } from 'svelte';
+import { log } from './log.js';
export default test({
- get props() {
- return { log: [] };
+ before_test() {
+ log.length = 0;
},
- async test({ assert, target, component }) {
+ async test({ assert, target }) {
const [b1] = target.querySelectorAll('button');
flushSync(() => {
b1.click();
@@ -20,6 +21,6 @@ export default test({
flushSync(() => {
b1.click();
});
- assert.deepEqual(component.log, [0, 2, 4]);
+ assert.deepEqual(log, [0, 2, 4]);
}
});
diff --git a/packages/svelte/tests/runtime-runes/samples/derived-stale-value/log.js b/packages/svelte/tests/runtime-runes/samples/derived-stale-value/log.js
new file mode 100644
index 000000000000..d3df521f4da7
--- /dev/null
+++ b/packages/svelte/tests/runtime-runes/samples/derived-stale-value/log.js
@@ -0,0 +1,2 @@
+/** @type {any[]} */
+export const log = [];
diff --git a/packages/svelte/tests/runtime-runes/samples/derived-stale-value/main.svelte b/packages/svelte/tests/runtime-runes/samples/derived-stale-value/main.svelte
index 413028647ed7..91baf81e4ac4 100644
--- a/packages/svelte/tests/runtime-runes/samples/derived-stale-value/main.svelte
+++ b/packages/svelte/tests/runtime-runes/samples/derived-stale-value/main.svelte
@@ -1,5 +1,5 @@
diff --git a/packages/svelte/tests/runtime-runes/samples/lifecycle-render-order-for-children-2/_config.js b/packages/svelte/tests/runtime-runes/samples/lifecycle-render-order-for-children-2/_config.js
index 098a6c8c58f4..2667fff13ce9 100644
--- a/packages/svelte/tests/runtime-runes/samples/lifecycle-render-order-for-children-2/_config.js
+++ b/packages/svelte/tests/runtime-runes/samples/lifecycle-render-order-for-children-2/_config.js
@@ -1,24 +1,17 @@
import { test } from '../../test';
-
-/**
- * @type {any[]}
- */
-let order = [];
-let n = 0;
+import { log } from './log.js';
export default test({
get props() {
- return {
- order,
- n
- };
+ return { n: 0 };
},
+
before_test() {
- order.length = 0;
- n = 0;
+ log.length = 0;
},
- async test({ assert, compileOptions, component }) {
- assert.deepEqual(order, [
+
+ async test({ assert, component }) {
+ assert.deepEqual(log, [
'parent: $effect.pre 0',
'parent: $effect.pre (2) 0',
'parent: render 0',
@@ -37,11 +30,11 @@ export default test({
'parent: $effect 0'
]);
- order.length = 0;
+ log.length = 0;
component.n += 1;
- assert.deepEqual(order, [
+ assert.deepEqual(log, [
'parent: $effect.pre 1',
'parent: $effect.pre (2) 1',
'parent: render 1',
diff --git a/packages/svelte/tests/runtime-runes/samples/lifecycle-render-order-for-children-2/log.js b/packages/svelte/tests/runtime-runes/samples/lifecycle-render-order-for-children-2/log.js
new file mode 100644
index 000000000000..d3df521f4da7
--- /dev/null
+++ b/packages/svelte/tests/runtime-runes/samples/lifecycle-render-order-for-children-2/log.js
@@ -0,0 +1,2 @@
+/** @type {any[]} */
+export const log = [];
diff --git a/packages/svelte/tests/runtime-runes/samples/lifecycle-render-order-for-children-2/main.svelte b/packages/svelte/tests/runtime-runes/samples/lifecycle-render-order-for-children-2/main.svelte
index bab1b4cd276c..cc21df4f1b17 100644
--- a/packages/svelte/tests/runtime-runes/samples/lifecycle-render-order-for-children-2/main.svelte
+++ b/packages/svelte/tests/runtime-runes/samples/lifecycle-render-order-for-children-2/main.svelte
@@ -1,30 +1,31 @@
{logRender()}
{#each [1,2,3] as index}
-
+
{/each}
diff --git a/packages/svelte/tests/runtime-runes/samples/lifecycle-render-order-for-children-3/Item.svelte b/packages/svelte/tests/runtime-runes/samples/lifecycle-render-order-for-children-3/Item.svelte
index eb9bf54f12b9..8719c578f93d 100644
--- a/packages/svelte/tests/runtime-runes/samples/lifecycle-render-order-for-children-3/Item.svelte
+++ b/packages/svelte/tests/runtime-runes/samples/lifecycle-render-order-for-children-3/Item.svelte
@@ -1,17 +1,19 @@
diff --git a/packages/svelte/tests/runtime-runes/samples/lifecycle-render-order-for-children-3/_config.js b/packages/svelte/tests/runtime-runes/samples/lifecycle-render-order-for-children-3/_config.js
index 6547999c0c89..e52818959745 100644
--- a/packages/svelte/tests/runtime-runes/samples/lifecycle-render-order-for-children-3/_config.js
+++ b/packages/svelte/tests/runtime-runes/samples/lifecycle-render-order-for-children-3/_config.js
@@ -1,24 +1,17 @@
import { test } from '../../test';
-
-/**
- * @type {any[]}
- */
-let order = [];
-let n = 0;
+import { log } from './log.js';
export default test({
get props() {
- return {
- order,
- n
- };
+ return { n: 0 };
},
+
before_test() {
- order.length = 0;
- n = 0;
+ log.length = 0;
},
- async test({ assert, compileOptions, component }) {
- assert.deepEqual(order, [
+
+ async test({ assert, component }) {
+ assert.deepEqual(log, [
'parent: render 0',
'1: $effect.pre 0',
'1: render 0',
@@ -32,11 +25,11 @@ export default test({
'parent: $effect 0'
]);
- order.length = 0;
+ log.length = 0;
component.n += 1;
- assert.deepEqual(order, [
+ assert.deepEqual(log, [
'parent: render 1',
'1: $effect.pre 1',
'1: render 1',
diff --git a/packages/svelte/tests/runtime-runes/samples/lifecycle-render-order-for-children-3/log.js b/packages/svelte/tests/runtime-runes/samples/lifecycle-render-order-for-children-3/log.js
new file mode 100644
index 000000000000..d3df521f4da7
--- /dev/null
+++ b/packages/svelte/tests/runtime-runes/samples/lifecycle-render-order-for-children-3/log.js
@@ -0,0 +1,2 @@
+/** @type {any[]} */
+export const log = [];
diff --git a/packages/svelte/tests/runtime-runes/samples/lifecycle-render-order-for-children-3/main.svelte b/packages/svelte/tests/runtime-runes/samples/lifecycle-render-order-for-children-3/main.svelte
index 6a84700f0d19..57d85095d5b0 100644
--- a/packages/svelte/tests/runtime-runes/samples/lifecycle-render-order-for-children-3/main.svelte
+++ b/packages/svelte/tests/runtime-runes/samples/lifecycle-render-order-for-children-3/main.svelte
@@ -1,22 +1,23 @@
{logRender()}
{#each [1,2,3] as index}
-
+
{/each}
diff --git a/packages/svelte/tests/runtime-runes/samples/lifecycle-render-order-for-children-4/Item.svelte b/packages/svelte/tests/runtime-runes/samples/lifecycle-render-order-for-children-4/Item.svelte
index 4e048313a2d9..2e9dc09c7a74 100644
--- a/packages/svelte/tests/runtime-runes/samples/lifecycle-render-order-for-children-4/Item.svelte
+++ b/packages/svelte/tests/runtime-runes/samples/lifecycle-render-order-for-children-4/Item.svelte
@@ -1,21 +1,23 @@
diff --git a/packages/svelte/tests/runtime-runes/samples/lifecycle-render-order-for-children-4/_config.js b/packages/svelte/tests/runtime-runes/samples/lifecycle-render-order-for-children-4/_config.js
index e61b574d27a9..62a4b85546ce 100644
--- a/packages/svelte/tests/runtime-runes/samples/lifecycle-render-order-for-children-4/_config.js
+++ b/packages/svelte/tests/runtime-runes/samples/lifecycle-render-order-for-children-4/_config.js
@@ -1,24 +1,17 @@
import { test } from '../../test';
-
-/**
- * @type {any[]}
- */
-let order = [];
-let n = 0;
+import { log } from './log.js';
export default test({
get props() {
- return {
- order,
- n
- };
+ return { n: 0 };
},
+
before_test() {
- order.length = 0;
- n = 0;
+ log.length = 0;
},
- async test({ assert, compileOptions, component }) {
- assert.deepEqual(order, [
+
+ async test({ assert, component }) {
+ assert.deepEqual(log, [
'parent: $effect.pre 0',
'parent: nested $effect.pre 0',
'parent: render 0',
@@ -37,11 +30,11 @@ export default test({
'parent: $effect 0'
]);
- order.length = 0;
+ log.length = 0;
component.n += 1;
- assert.deepEqual(order, [
+ assert.deepEqual(log, [
'parent: $effect.pre 1',
'parent: nested $effect.pre 1',
'parent: render 1',
diff --git a/packages/svelte/tests/runtime-runes/samples/lifecycle-render-order-for-children-4/log.js b/packages/svelte/tests/runtime-runes/samples/lifecycle-render-order-for-children-4/log.js
new file mode 100644
index 000000000000..d3df521f4da7
--- /dev/null
+++ b/packages/svelte/tests/runtime-runes/samples/lifecycle-render-order-for-children-4/log.js
@@ -0,0 +1,2 @@
+/** @type {any[]} */
+export const log = [];
diff --git a/packages/svelte/tests/runtime-runes/samples/lifecycle-render-order-for-children-4/main.svelte b/packages/svelte/tests/runtime-runes/samples/lifecycle-render-order-for-children-4/main.svelte
index 644bef32786b..d9b83f837c79 100644
--- a/packages/svelte/tests/runtime-runes/samples/lifecycle-render-order-for-children-4/main.svelte
+++ b/packages/svelte/tests/runtime-runes/samples/lifecycle-render-order-for-children-4/main.svelte
@@ -1,30 +1,31 @@
{logRender()}
{#each [1,2,3] as index}
-
+
{/each}
diff --git a/packages/svelte/tests/runtime-runes/samples/lifecycle-render-order-for-children/Item.svelte b/packages/svelte/tests/runtime-runes/samples/lifecycle-render-order-for-children/Item.svelte
index eb9bf54f12b9..8719c578f93d 100644
--- a/packages/svelte/tests/runtime-runes/samples/lifecycle-render-order-for-children/Item.svelte
+++ b/packages/svelte/tests/runtime-runes/samples/lifecycle-render-order-for-children/Item.svelte
@@ -1,17 +1,19 @@
diff --git a/packages/svelte/tests/runtime-runes/samples/lifecycle-render-order-for-children/_config.js b/packages/svelte/tests/runtime-runes/samples/lifecycle-render-order-for-children/_config.js
index f9b512215163..0c7118df75e9 100644
--- a/packages/svelte/tests/runtime-runes/samples/lifecycle-render-order-for-children/_config.js
+++ b/packages/svelte/tests/runtime-runes/samples/lifecycle-render-order-for-children/_config.js
@@ -1,24 +1,17 @@
import { test } from '../../test';
-
-/**
- * @type {any[]}
- */
-let order = [];
-let n = 0;
+import { log } from './log.js';
export default test({
get props() {
- return {
- order,
- n
- };
+ return { n: 0 };
},
+
before_test() {
- order.length = 0;
- n = 0;
+ log.length = 0;
},
- async test({ assert, compileOptions, component }) {
- assert.deepEqual(order, [
+
+ async test({ assert, component }) {
+ assert.deepEqual(log, [
'parent: $effect.pre 0',
'parent: render 0',
'1: $effect.pre 0',
@@ -33,11 +26,11 @@ export default test({
'parent: $effect 0'
]);
- order.length = 0;
+ log.length = 0;
component.n += 1;
- assert.deepEqual(order, [
+ assert.deepEqual(log, [
'parent: $effect.pre 1',
'parent: render 1',
'1: $effect.pre 1',
diff --git a/packages/svelte/tests/runtime-runes/samples/lifecycle-render-order-for-children/log.js b/packages/svelte/tests/runtime-runes/samples/lifecycle-render-order-for-children/log.js
new file mode 100644
index 000000000000..d3df521f4da7
--- /dev/null
+++ b/packages/svelte/tests/runtime-runes/samples/lifecycle-render-order-for-children/log.js
@@ -0,0 +1,2 @@
+/** @type {any[]} */
+export const log = [];
diff --git a/packages/svelte/tests/runtime-runes/samples/lifecycle-render-order-for-children/main.svelte b/packages/svelte/tests/runtime-runes/samples/lifecycle-render-order-for-children/main.svelte
index fd2cce5beb5d..9cfa2b834c73 100644
--- a/packages/svelte/tests/runtime-runes/samples/lifecycle-render-order-for-children/main.svelte
+++ b/packages/svelte/tests/runtime-runes/samples/lifecycle-render-order-for-children/main.svelte
@@ -1,26 +1,27 @@
{logRender()}
{#each [1,2,3] as index}
-
+
{/each}
diff --git a/packages/svelte/tests/runtime-runes/samples/nullish-operator/_config.js b/packages/svelte/tests/runtime-runes/samples/nullish-operator/_config.js
index 4c425bc5f7f6..11e729c3c782 100644
--- a/packages/svelte/tests/runtime-runes/samples/nullish-operator/_config.js
+++ b/packages/svelte/tests/runtime-runes/samples/nullish-operator/_config.js
@@ -1,13 +1,14 @@
import { test } from '../../test';
+import { log } from './log.js';
export default test({
- get props() {
- return { log: [] };
+ before_test() {
+ log.length = 0;
},
- async test({ assert, target, component }) {
+ async test({ assert }) {
await Promise.resolve();
await Promise.resolve();
- assert.deepEqual(component.log, ['a1: ', true, 'b1: ', true]);
+ assert.deepEqual(log, ['a1: ', true, 'b1: ', true]);
}
});
diff --git a/packages/svelte/tests/runtime-runes/samples/nullish-operator/log.js b/packages/svelte/tests/runtime-runes/samples/nullish-operator/log.js
new file mode 100644
index 000000000000..d3df521f4da7
--- /dev/null
+++ b/packages/svelte/tests/runtime-runes/samples/nullish-operator/log.js
@@ -0,0 +1,2 @@
+/** @type {any[]} */
+export const log = [];
diff --git a/packages/svelte/tests/runtime-runes/samples/nullish-operator/main.svelte b/packages/svelte/tests/runtime-runes/samples/nullish-operator/main.svelte
index 892973063a38..a98c4b4f391e 100644
--- a/packages/svelte/tests/runtime-runes/samples/nullish-operator/main.svelte
+++ b/packages/svelte/tests/runtime-runes/samples/nullish-operator/main.svelte
@@ -1,12 +1,13 @@