diff --git a/src/compiler/compile/render_dom/index.ts b/src/compiler/compile/render_dom/index.ts index 9fdaa0cbaaa0..452de092eb28 100644 --- a/src/compiler/compile/render_dom/index.ts +++ b/src/compiler/compile/render_dom/index.ts @@ -311,6 +311,9 @@ export default function dom( const reactive_stores = component.vars.filter(variable => variable.name[0] === '$' && variable.name[1] !== '$'); if (component.slots.size > 0) { + component.vars.map(v => { + if (v.hoistable) filtered_declarations.push(v.name); + }); filtered_declarations.push('$$slots', '$$scope'); } diff --git a/test/runtime/samples/component-slot-let-e/Nested.svelte b/test/runtime/samples/component-slot-let-e/Nested.svelte new file mode 100644 index 000000000000..6e7b1b1a5454 --- /dev/null +++ b/test/runtime/samples/component-slot-let-e/Nested.svelte @@ -0,0 +1,7 @@ + + +
+ +
diff --git a/test/runtime/samples/component-slot-let-e/_config.js b/test/runtime/samples/component-slot-let-e/_config.js new file mode 100644 index 000000000000..1f7633da0ca4 --- /dev/null +++ b/test/runtime/samples/component-slot-let-e/_config.js @@ -0,0 +1,20 @@ +export default { + html: ` +
+

foo

+
+ `, + + async test({ assert, target, window }) { + const div = target.querySelector('div'); + const click = new window.MouseEvent('click'); + + await div.dispatchEvent(click); + + assert.htmlEqual(target.innerHTML, ` +
+

foo

+
+ `); + } +}; diff --git a/test/runtime/samples/component-slot-let-e/main.svelte b/test/runtime/samples/component-slot-let-e/main.svelte new file mode 100644 index 000000000000..4662deef5726 --- /dev/null +++ b/test/runtime/samples/component-slot-let-e/main.svelte @@ -0,0 +1,7 @@ + + + +

{someText}

+