From 0d8bdee83c0742e893081e3224c2e511ea2d6673 Mon Sep 17 00:00:00 2001 From: Richard Harris Date: Sat, 21 Sep 2019 09:00:27 -0400 Subject: [PATCH] deep destructuring in each block --- src/compiler/compile/nodes/EachBlock.ts | 12 ++++++------ src/compiler/compile/render_dom/index.ts | 2 +- .../samples/invalidation-in-if-condition/_config.js | 1 - .../_config.js | 1 - 4 files changed, 7 insertions(+), 9 deletions(-) diff --git a/src/compiler/compile/nodes/EachBlock.ts b/src/compiler/compile/nodes/EachBlock.ts index 876646ea9c..6a1f21cfd9 100644 --- a/src/compiler/compile/nodes/EachBlock.ts +++ b/src/compiler/compile/nodes/EachBlock.ts @@ -4,7 +4,7 @@ import map_children from './shared/map_children'; import TemplateScope from './shared/TemplateScope'; import AbstractBlock from './shared/AbstractBlock'; import Element from './Element'; -import { x } from 'code-red'; +import { x, p } from 'code-red'; import { Node, Identifier } from 'estree'; interface Context { @@ -24,9 +24,9 @@ function unpack_destructuring(contexts: Context[], node: Node, modifier: (node: } else if (node.type === 'ArrayPattern') { node.elements.forEach((element, i) => { if (element && (element as any).type === 'RestIdentifier') { - unpack_destructuring(contexts, element, node => x`${node}.slice(${i})` as Node); + unpack_destructuring(contexts, element, node => x`${modifier(node)}.slice(${i})` as Node); } else { - unpack_destructuring(contexts, element, node => x`${node}[${i}]` as Node); + unpack_destructuring(contexts, element, node => x`${modifier(node)}[${i}]` as Node); } }); } else if (node.type === 'ObjectPattern') { @@ -37,12 +37,12 @@ function unpack_destructuring(contexts: Context[], node: Node, modifier: (node: unpack_destructuring( contexts, property.value, - node => x`@object_without_properties(${node}, ${JSON.stringify(used_properties)})` as Node + node => x`@object_without_properties(${modifier(node)}, [${used_properties}])` as Node ); } else { - used_properties.push((property.key as Identifier).name); + used_properties.push(x`"${(property.key as Identifier).name}"`); - unpack_destructuring(contexts, property.value, node => x`${node}.${(property.key as Identifier).name}` as Node); + unpack_destructuring(contexts, property.value, node => x`${modifier(node)}.${(property.key as Identifier).name}` as Node); } }); } diff --git a/src/compiler/compile/render_dom/index.ts b/src/compiler/compile/render_dom/index.ts index b4a38ff0c7..3f8f2c1330 100644 --- a/src/compiler/compile/render_dom/index.ts +++ b/src/compiler/compile/render_dom/index.ts @@ -404,7 +404,7 @@ export default function dom( ${unknown_props_check} - ${component.slots.size && b`let { $$slots = {}, $$scope } = $$props;`} + ${component.slots.size ? b`let { $$slots = {}, $$scope } = $$props;` : null} ${renderer.binding_groups.length > 0 && b`const $$binding_groups = [${renderer.binding_groups.map(_ => x`[]`)}];`} diff --git a/test/runtime/samples/invalidation-in-if-condition/_config.js b/test/runtime/samples/invalidation-in-if-condition/_config.js index 60b02d9934..27209c75c9 100644 --- a/test/runtime/samples/invalidation-in-if-condition/_config.js +++ b/test/runtime/samples/invalidation-in-if-condition/_config.js @@ -1,5 +1,4 @@ export default { - show: 1, html: ``, async test({ assert, target, window }) { diff --git a/test/runtime/samples/reactive-values-implicit-self-dependency/_config.js b/test/runtime/samples/reactive-values-implicit-self-dependency/_config.js index d7f2bbf920..f215de098e 100644 --- a/test/runtime/samples/reactive-values-implicit-self-dependency/_config.js +++ b/test/runtime/samples/reactive-values-implicit-self-dependency/_config.js @@ -1,5 +1,4 @@ export default { - show: 1, html: `

1 / 1

`,