From 342ce159f704c5c5c6d5b2fd8868a2ea4216b0ee Mon Sep 17 00:00:00 2001 From: Nguyen Tran Date: Thu, 29 Jun 2023 00:23:17 -0400 Subject: [PATCH] Make sure this works when first var is reassigned store in destructure context --- packages/svelte/src/compiler/compile/render_dom/index.js | 2 +- packages/svelte/src/compiler/compile/render_ssr/index.js | 2 +- .../svelte/test/js/samples/capture-inject-state/expected.js | 4 ++-- .../samples/component-store-reassign-invalidate/expected.js | 4 ++-- .../test/js/samples/reactive-class-optimized/expected.js | 4 ++-- .../samples/destructure-store-non-store-5/main.svelte | 4 ++-- .../samples/destructure-store-non-store-7/main.svelte | 6 +++--- .../samples/destructure-store-non-store-8/main.svelte | 4 ++-- 8 files changed, 15 insertions(+), 15 deletions(-) diff --git a/packages/svelte/src/compiler/compile/render_dom/index.js b/packages/svelte/src/compiler/compile/render_dom/index.js index 9a11013fc9..227121158d 100644 --- a/packages/svelte/src/compiler/compile/render_dom/index.js +++ b/packages/svelte/src/compiler/compile/render_dom/index.js @@ -438,7 +438,7 @@ export default function dom(component, options) { const unsubscribe = `$$unsubscribe_${name}`; const subscribe = `$$subscribe_${name}`; const i = renderer.context_lookup.get($name).index; - return b`let ${$name}, ${unsubscribe} = @noop, ${subscribe} = () => (${unsubscribe}(), ${unsubscribe} = @subscribe(${name}, $$value => $$invalidate(${i}, ${$name} = $$value)), ${name})`; + return b`let ${$name}, ${unsubscribe} = @noop, ${subscribe} = (#node) => (${unsubscribe}(), ${unsubscribe} = @subscribe(${name}, $$value => $$invalidate(${i}, ${$name} = $$value)), #node)`; } return b`let ${$name};`; }); diff --git a/packages/svelte/src/compiler/compile/render_ssr/index.js b/packages/svelte/src/compiler/compile/render_ssr/index.js index be1297dd1b..4d4d714e8d 100644 --- a/packages/svelte/src/compiler/compile/render_ssr/index.js +++ b/packages/svelte/src/compiler/compile/render_ssr/index.js @@ -65,7 +65,7 @@ export default function ssr(component, options) { if (store && store.reassigned) { const unsubscribe = `$$unsubscribe_${store_name}`; const subscribe = `$$subscribe_${store_name}`; - return b`let ${name}, ${unsubscribe} = @noop, ${subscribe} = () => (${unsubscribe}(), ${unsubscribe} = @subscribe(${store_name}, $$value => ${name} = $$value), ${store_name})`; + return b`let ${name}, ${unsubscribe} = @noop, ${subscribe} = (#node) => (${unsubscribe}(), ${unsubscribe} = @subscribe(${store_name}, $$value => ${name} = $$value), #node)`; } return b`let ${name}, ${`$$unsubscribe_${store_name}`};`; }); diff --git a/packages/svelte/test/js/samples/capture-inject-state/expected.js b/packages/svelte/test/js/samples/capture-inject-state/expected.js index 0c081eaae9..13bf49cd4a 100644 --- a/packages/svelte/test/js/samples/capture-inject-state/expected.js +++ b/packages/svelte/test/js/samples/capture-inject-state/expected.js @@ -104,7 +104,7 @@ function instance($$self, $$props, $$invalidate) { let $prop, $$unsubscribe_prop = noop, - $$subscribe_prop = () => ($$unsubscribe_prop(), $$unsubscribe_prop = subscribe(prop, $$value => $$invalidate(2, $prop = $$value)), prop); + $$subscribe_prop = node => ($$unsubscribe_prop(), $$unsubscribe_prop = subscribe(prop, $$value => $$invalidate(2, $prop = $$value)), node); $$self.$$.on_destroy.push(() => $$unsubscribe_prop()); let { $$slots: slots = {}, $$scope } = $$props; @@ -199,4 +199,4 @@ class Component extends SvelteComponentDev { } export default Component; -export { moduleLiveBinding, moduleConstantProps }; \ No newline at end of file +export { moduleLiveBinding, moduleConstantProps }; diff --git a/packages/svelte/test/js/samples/component-store-reassign-invalidate/expected.js b/packages/svelte/test/js/samples/component-store-reassign-invalidate/expected.js index edff2112ec..06104b216f 100644 --- a/packages/svelte/test/js/samples/component-store-reassign-invalidate/expected.js +++ b/packages/svelte/test/js/samples/component-store-reassign-invalidate/expected.js @@ -65,7 +65,7 @@ function create_fragment(ctx) { function instance($$self, $$props, $$invalidate) { let $foo, $$unsubscribe_foo = noop, - $$subscribe_foo = () => ($$unsubscribe_foo(), $$unsubscribe_foo = subscribe(foo, $$value => $$invalidate(1, $foo = $$value)), foo); + $$subscribe_foo = node => ($$unsubscribe_foo(), $$unsubscribe_foo = subscribe(foo, $$value => $$invalidate(1, $foo = $$value)), node); $$self.$$.on_destroy.push(() => $$unsubscribe_foo()); let foo = writable(0); @@ -81,4 +81,4 @@ class Component extends SvelteComponent { } } -export default Component; \ No newline at end of file +export default Component; diff --git a/packages/svelte/test/js/samples/reactive-class-optimized/expected.js b/packages/svelte/test/js/samples/reactive-class-optimized/expected.js index 65445b62a4..594b182880 100644 --- a/packages/svelte/test/js/samples/reactive-class-optimized/expected.js +++ b/packages/svelte/test/js/samples/reactive-class-optimized/expected.js @@ -138,7 +138,7 @@ function instance($$self, $$props, $$invalidate) { let $reactiveDeclaration, $$unsubscribe_reactiveDeclaration = noop, - $$subscribe_reactiveDeclaration = () => ($$unsubscribe_reactiveDeclaration(), $$unsubscribe_reactiveDeclaration = subscribe(reactiveDeclaration, $$value => $$invalidate(3, $reactiveDeclaration = $$value)), reactiveDeclaration); + $$subscribe_reactiveDeclaration = node => ($$unsubscribe_reactiveDeclaration(), $$unsubscribe_reactiveDeclaration = subscribe(reactiveDeclaration, $$value => $$invalidate(3, $reactiveDeclaration = $$value)), node); component_subscribe($$self, reactiveStoreVal, $$value => $$invalidate(2, $reactiveStoreVal = $$value)); $$self.$$.on_destroy.push(() => $$unsubscribe_reactiveDeclaration()); @@ -161,4 +161,4 @@ class Component extends SvelteComponent { } } -export default Component; \ No newline at end of file +export default Component; diff --git a/packages/svelte/test/runtime/samples/destructure-store-non-store-5/main.svelte b/packages/svelte/test/runtime/samples/destructure-store-non-store-5/main.svelte index 89cff9bc54..1e8f84f96c 100644 --- a/packages/svelte/test/runtime/samples/destructure-store-non-store-5/main.svelte +++ b/packages/svelte/test/runtime/samples/destructure-store-non-store-5/main.svelte @@ -10,12 +10,12 @@ secondStore: writable(6) }; - ({ firstNonStore, secondNonStore, thirdNonStore, fourthNonStore, $firstStore, $secondStore } = { + ({ firstNonStore, secondNonStore, thirdNonStore, fourthNonStore, firstStore, $secondStore } = { firstNonStore: 7, secondNonStore: 8, thirdNonStore: 9, fourthNonStore: 11, - $firstStore: 10, + firstStore: writable(10), $secondStore: 12 }); diff --git a/packages/svelte/test/runtime/samples/destructure-store-non-store-7/main.svelte b/packages/svelte/test/runtime/samples/destructure-store-non-store-7/main.svelte index c9525921ea..57d0f46faf 100644 --- a/packages/svelte/test/runtime/samples/destructure-store-non-store-7/main.svelte +++ b/packages/svelte/test/runtime/samples/destructure-store-non-store-7/main.svelte @@ -14,12 +14,12 @@ function changeStores() { $bagOlStores = ({ + thirdStore, + $secondStore, + $firstStore, firstNonStore, secondNonStore, thirdNonStore, - $firstStore, - $secondStore, - thirdStore } = { firstNonStore: 7, secondNonStore: 8, diff --git a/packages/svelte/test/runtime/samples/destructure-store-non-store-8/main.svelte b/packages/svelte/test/runtime/samples/destructure-store-non-store-8/main.svelte index 64cb26c35d..5dc3d50cc2 100644 --- a/packages/svelte/test/runtime/samples/destructure-store-non-store-8/main.svelte +++ b/packages/svelte/test/runtime/samples/destructure-store-non-store-8/main.svelte @@ -11,14 +11,14 @@ firstNonStore, secondNonStore, thirdNonStore, - $firstStore, + firstStore, $secondStore, thirdStore ] = [ 7, 8, 9, - 10, + writable(10), 11, writable(12), writable(14),