diff --git a/src/compiler/compile/render_dom/wrappers/InlineComponent/index.ts b/src/compiler/compile/render_dom/wrappers/InlineComponent/index.ts index c85f47cd54..c63879c06f 100644 --- a/src/compiler/compile/render_dom/wrappers/InlineComponent/index.ts +++ b/src/compiler/compile/render_dom/wrappers/InlineComponent/index.ts @@ -185,7 +185,7 @@ export default class InlineComponentWrapper extends Wrapper { add_to_set(all_dependencies, attr.dependencies); }); - this.node.attributes.forEach(attr => { + this.node.attributes.forEach((attr, i) => { const { name, dependencies } = attr; const condition = dependencies.size > 0 && (dependencies.size !== all_dependencies.size) @@ -201,7 +201,7 @@ export default class InlineComponentWrapper extends Wrapper { const obj = `{ ${quote_name_if_necessary(name)}: ${attr.get_value(block)} }`; initial_props.push(obj); - changes.push(condition ? `${condition} && ${obj}` : obj); + changes.push(condition ? `${condition} && ${obj}` : `${levels}[${i}]`); } }); diff --git a/test/runtime/samples/spread-reuse-levels/Nested.svelte b/test/runtime/samples/spread-reuse-levels/Nested.svelte new file mode 100644 index 0000000000..800d6cd602 --- /dev/null +++ b/test/runtime/samples/spread-reuse-levels/Nested.svelte @@ -0,0 +1,21 @@ + + +
{JSON.stringify({ a, b, c })}+
{JSON.stringify(changed)}\ No newline at end of file diff --git a/test/runtime/samples/spread-reuse-levels/_config.js b/test/runtime/samples/spread-reuse-levels/_config.js new file mode 100644 index 0000000000..5acd36bdf8 --- /dev/null +++ b/test/runtime/samples/spread-reuse-levels/_config.js @@ -0,0 +1,20 @@ +export default { + html: ` +
{"a":1,"b":[1],"c":42}+
{"a":false,"b":false,"c":false}+ `, + + ssrHtml: ` +
{"a":1,"b":[1],"c":42}+
{}+ `, + + test({ assert, component, target }) { + component.a = 2; + + assert.htmlEqual(target.innerHTML, ` +
{"a":2,"b":[1],"c":42}+
{"a":true,"b":false,"c":false}+ `); + } +}; diff --git a/test/runtime/samples/spread-reuse-levels/main.svelte b/test/runtime/samples/spread-reuse-levels/main.svelte new file mode 100644 index 0000000000..a22ecfc1bb --- /dev/null +++ b/test/runtime/samples/spread-reuse-levels/main.svelte @@ -0,0 +1,8 @@ + + +