diff --git a/src/compile/render-dom/index.ts b/src/compile/render-dom/index.ts index ce2f3a0046..0a0743b2a0 100644 --- a/src/compile/render-dom/index.ts +++ b/src/compile/render-dom/index.ts @@ -182,7 +182,7 @@ export default function dom( if (node.operator === '=' && nodes_match(node.left, node.right)) { const dirty = names.filter(name => { - return scope.find_owner(name) === component.instance_scope; + return name[0] === '$' || scope.find_owner(name) === component.instance_scope; }); if (dirty.length) component.has_reactive_assignments = true; diff --git a/test/runtime/samples/instrumentation-auto-subscription-self-assignment/_config.js b/test/runtime/samples/instrumentation-auto-subscription-self-assignment/_config.js new file mode 100644 index 0000000000..f70a80fe44 --- /dev/null +++ b/test/runtime/samples/instrumentation-auto-subscription-self-assignment/_config.js @@ -0,0 +1,8 @@ +export default { + html: `[]`, + + async test({ assert, component, target }) { + await component.go(); + assert.htmlEqual(target.innerHTML, `[42]`); + } +}; \ No newline at end of file diff --git a/test/runtime/samples/instrumentation-auto-subscription-self-assignment/main.svelte b/test/runtime/samples/instrumentation-auto-subscription-self-assignment/main.svelte new file mode 100644 index 0000000000..8611e773f2 --- /dev/null +++ b/test/runtime/samples/instrumentation-auto-subscription-self-assignment/main.svelte @@ -0,0 +1,11 @@ + + +{JSON.stringify(bar)}