From b581a64727aa06dcde783ce8cf73a5ee5c450764 Mon Sep 17 00:00:00 2001 From: Rich Harris Date: Thu, 30 Nov 2023 18:43:09 -0500 Subject: [PATCH] avoid using prop_source in more cases. bit hacky, could be tidier, but it works --- .../src/compiler/phases/3-transform/client/utils.js | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/packages/svelte/src/compiler/phases/3-transform/client/utils.js b/packages/svelte/src/compiler/phases/3-transform/client/utils.js index a36d6b27d6..33234aa4e6 100644 --- a/packages/svelte/src/compiler/phases/3-transform/client/utils.js +++ b/packages/svelte/src/compiler/phases/3-transform/client/utils.js @@ -67,7 +67,7 @@ export function serialize_get_binding(node, state) { if ( binding.kind === 'prop' && - !binding.mutated && + !(state.analysis.immutable ? binding.reassigned : binding.mutated) && !binding.initial && !state.analysis.accessors ) { @@ -364,7 +364,11 @@ export function get_props_method(binding, state, name, default_value) { // Use $.prop_source in the following cases: // - accessors/mutated: needs to be able to set the prop value from within // - default value: we set the fallback value only initially, and it's not possible to know this timing in $.prop - binding.mutated || binding.initial || state.analysis.accessors ? '$.prop_source' : '$.prop', + (state.analysis.immutable ? binding.reassigned : binding.mutated) || + binding.initial || + state.analysis.accessors + ? '$.prop_source' + : '$.prop', ...args ); }