From a28cddd41b8e51096c2f54d85dff9539d33ad93b Mon Sep 17 00:00:00 2001 From: Rich Harris Date: Mon, 19 Aug 2019 11:41:34 -0400 Subject: [PATCH] allow slots to have missing props in SSR - fixes #3322 --- src/compiler/compile/render_ssr/handlers/Slot.ts | 2 +- .../samples/component-slot-let-missing-prop/Bar.svelte | 5 +++++ .../samples/component-slot-let-missing-prop/Foo.svelte | 1 + .../samples/component-slot-let-missing-prop/_config.js | 5 +++++ .../component-slot-let-missing-prop/main.svelte | 10 ++++++++++ 5 files changed, 22 insertions(+), 1 deletion(-) create mode 100644 test/runtime/samples/component-slot-let-missing-prop/Bar.svelte create mode 100644 test/runtime/samples/component-slot-let-missing-prop/Foo.svelte create mode 100644 test/runtime/samples/component-slot-let-missing-prop/_config.js create mode 100644 test/runtime/samples/component-slot-let-missing-prop/main.svelte diff --git a/src/compiler/compile/render_ssr/handlers/Slot.ts b/src/compiler/compile/render_ssr/handlers/Slot.ts index 087519979b..ef0699ee80 100644 --- a/src/compiler/compile/render_ssr/handlers/Slot.ts +++ b/src/compiler/compile/render_ssr/handlers/Slot.ts @@ -8,7 +8,7 @@ export default function(node: Slot, renderer: Renderer, options: RenderOptions) const slot_data = get_slot_data(node.values, true); - const arg = slot_data.length > 0 ? `{ ${slot_data.join(', ')} }` : ''; + const arg = slot_data.length > 0 ? `{ ${slot_data.join(', ')} }` : '{}'; renderer.append(`\${$$slots${prop} ? $$slots${prop}(${arg}) : \``); diff --git a/test/runtime/samples/component-slot-let-missing-prop/Bar.svelte b/test/runtime/samples/component-slot-let-missing-prop/Bar.svelte new file mode 100644 index 0000000000..d3707c7d8b --- /dev/null +++ b/test/runtime/samples/component-slot-let-missing-prop/Bar.svelte @@ -0,0 +1,5 @@ + + +

{thing}

\ No newline at end of file diff --git a/test/runtime/samples/component-slot-let-missing-prop/Foo.svelte b/test/runtime/samples/component-slot-let-missing-prop/Foo.svelte new file mode 100644 index 0000000000..49aeb95a1d --- /dev/null +++ b/test/runtime/samples/component-slot-let-missing-prop/Foo.svelte @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/test/runtime/samples/component-slot-let-missing-prop/_config.js b/test/runtime/samples/component-slot-let-missing-prop/_config.js new file mode 100644 index 0000000000..b3bf13b01b --- /dev/null +++ b/test/runtime/samples/component-slot-let-missing-prop/_config.js @@ -0,0 +1,5 @@ +export default { + html: ` +

undefined

+ ` +}; diff --git a/test/runtime/samples/component-slot-let-missing-prop/main.svelte b/test/runtime/samples/component-slot-let-missing-prop/main.svelte new file mode 100644 index 0000000000..3ac3ba5363 --- /dev/null +++ b/test/runtime/samples/component-slot-let-missing-prop/main.svelte @@ -0,0 +1,10 @@ + + + + + \ No newline at end of file