From afd2efa2d776d2abbbf7871578339e6824f4c32d Mon Sep 17 00:00:00 2001 From: Rich Harris Date: Thu, 30 Nov 2023 17:47:27 -0500 Subject: [PATCH] add immutable to transform state --- .../svelte/src/compiler/phases/2-analyze/index.js | 14 ++++++++------ packages/svelte/src/compiler/phases/types.d.ts | 1 + 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/packages/svelte/src/compiler/phases/2-analyze/index.js b/packages/svelte/src/compiler/phases/2-analyze/index.js index 51318ce638..b0bb6d55d2 100644 --- a/packages/svelte/src/compiler/phases/2-analyze/index.js +++ b/packages/svelte/src/compiler/phases/2-analyze/index.js @@ -220,7 +220,8 @@ export function analyze_module(ast, options) { name: options.filename || 'module', warnings, accessors: false, - runes: true + runes: true, + immutable: true }; } @@ -301,6 +302,10 @@ export function analyze_component(root, options) { const component_name = get_component_name(options.filename ?? 'Component'); + const runes = + options.runes ?? + Array.from(module.scope.references).some(([name]) => Runes.includes(/** @type {any} */ (name))); + // TODO remove all the ?? stuff, we don't need it now that we're validating the config /** @type {import('../types.js').ComponentAnalysis} */ const analysis = { @@ -317,11 +322,8 @@ export function analyze_component(root, options) { component_name, get_css_hash: options.cssHash }), - runes: - options.runes ?? - Array.from(module.scope.references).some(([name]) => - Runes.includes(/** @type {any} */ (name)) - ), + runes, + immutable: runes || options.immutable, exports: [], uses_props: false, uses_rest_props: false, diff --git a/packages/svelte/src/compiler/phases/types.d.ts b/packages/svelte/src/compiler/phases/types.d.ts index f7e411447b..f2f9868e13 100644 --- a/packages/svelte/src/compiler/phases/types.d.ts +++ b/packages/svelte/src/compiler/phases/types.d.ts @@ -47,6 +47,7 @@ export interface Analysis { name: string; // TODO should this be filename? it's used in `compileModule` as well as `compile` warnings: RawWarning[]; runes: boolean; + immutable: boolean; // TODO figure out if we can move this to ComponentAnalysis accessors: boolean;