From fc5727c187bfa86b67cd43effcb76d52eb465799 Mon Sep 17 00:00:00 2001 From: Conduitry Date: Sat, 4 May 2019 22:16:53 -0400 Subject: [PATCH] fix instrumentation of auto-subscription self-assignments (#2681) --- src/compile/render-dom/index.ts | 2 +- .../_config.js | 8 ++++++++ .../main.svelte | 11 +++++++++++ 3 files changed, 20 insertions(+), 1 deletion(-) create mode 100644 test/runtime/samples/instrumentation-auto-subscription-self-assignment/_config.js create mode 100644 test/runtime/samples/instrumentation-auto-subscription-self-assignment/main.svelte 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)}