From 67b53bfe6dac2d94d0c50783a04492fd460207bc Mon Sep 17 00:00:00 2001 From: Conduitry Date: Wed, 22 Sep 2021 16:39:03 -0400 Subject: [PATCH] [fix] prefer context from constructor options (#6759) --- src/runtime/internal/Component.ts | 2 +- src/runtime/internal/ssr.ts | 2 +- .../ChildComponent.svelte | 6 ++++++ .../constructor-prefer-passed-context/_config.js | 6 ++++++ .../constructor-prefer-passed-context/main.svelte | 15 +++++++++++++++ .../ChildComponent.svelte | 6 ++++++ .../_expected.html | 1 + .../constructor-prefer-passed-context/main.svelte | 10 ++++++++++ 8 files changed, 46 insertions(+), 2 deletions(-) create mode 100644 test/runtime/samples/constructor-prefer-passed-context/ChildComponent.svelte create mode 100644 test/runtime/samples/constructor-prefer-passed-context/_config.js create mode 100644 test/runtime/samples/constructor-prefer-passed-context/main.svelte create mode 100644 test/server-side-rendering/samples/constructor-prefer-passed-context/ChildComponent.svelte create mode 100644 test/server-side-rendering/samples/constructor-prefer-passed-context/_expected.html create mode 100644 test/server-side-rendering/samples/constructor-prefer-passed-context/main.svelte diff --git a/src/runtime/internal/Component.ts b/src/runtime/internal/Component.ts index e706928af3..93ba42e37c 100644 --- a/src/runtime/internal/Component.ts +++ b/src/runtime/internal/Component.ts @@ -124,7 +124,7 @@ export function init(component, options, instance, create_fragment, not_equal, p on_disconnect: [], before_update: [], after_update: [], - context: new Map(parent_component ? parent_component.$$.context : options.context || []), + context: new Map(options.context || (parent_component ? parent_component.$$.context : [])), // everything else callbacks: blank_object(), diff --git a/src/runtime/internal/ssr.ts b/src/runtime/internal/ssr.ts index c64d88fa75..fd72aa1548 100644 --- a/src/runtime/internal/ssr.ts +++ b/src/runtime/internal/ssr.ts @@ -91,7 +91,7 @@ export function create_ssr_component(fn) { const $$ = { on_destroy, - context: new Map(parent_component ? parent_component.$$.context : context || []), + context: new Map(context || (parent_component ? parent_component.$$.context : [])), // these will be immediately discarded on_mount: [], diff --git a/test/runtime/samples/constructor-prefer-passed-context/ChildComponent.svelte b/test/runtime/samples/constructor-prefer-passed-context/ChildComponent.svelte new file mode 100644 index 0000000000..af77418a1f --- /dev/null +++ b/test/runtime/samples/constructor-prefer-passed-context/ChildComponent.svelte @@ -0,0 +1,6 @@ + + +
Value in child component: {value}
diff --git a/test/runtime/samples/constructor-prefer-passed-context/_config.js b/test/runtime/samples/constructor-prefer-passed-context/_config.js new file mode 100644 index 0000000000..5d5cf9e44a --- /dev/null +++ b/test/runtime/samples/constructor-prefer-passed-context/_config.js @@ -0,0 +1,6 @@ +export default { + skip_if_ssr: true, + html: ` +
Value in child component: undefined
+ ` +}; diff --git a/test/runtime/samples/constructor-prefer-passed-context/main.svelte b/test/runtime/samples/constructor-prefer-passed-context/main.svelte new file mode 100644 index 0000000000..dd051a123a --- /dev/null +++ b/test/runtime/samples/constructor-prefer-passed-context/main.svelte @@ -0,0 +1,15 @@ + + +
diff --git a/test/server-side-rendering/samples/constructor-prefer-passed-context/ChildComponent.svelte b/test/server-side-rendering/samples/constructor-prefer-passed-context/ChildComponent.svelte new file mode 100644 index 0000000000..af77418a1f --- /dev/null +++ b/test/server-side-rendering/samples/constructor-prefer-passed-context/ChildComponent.svelte @@ -0,0 +1,6 @@ + + +
Value in child component: {value}
diff --git a/test/server-side-rendering/samples/constructor-prefer-passed-context/_expected.html b/test/server-side-rendering/samples/constructor-prefer-passed-context/_expected.html new file mode 100644 index 0000000000..d9a67c64e9 --- /dev/null +++ b/test/server-side-rendering/samples/constructor-prefer-passed-context/_expected.html @@ -0,0 +1 @@ +
Value in child component: undefined
diff --git a/test/server-side-rendering/samples/constructor-prefer-passed-context/main.svelte b/test/server-side-rendering/samples/constructor-prefer-passed-context/main.svelte new file mode 100644 index 0000000000..eaf89dd813 --- /dev/null +++ b/test/server-side-rendering/samples/constructor-prefer-passed-context/main.svelte @@ -0,0 +1,10 @@ + + +
{@html content}