diff --git a/.changeset/wicked-readers-knock.md b/.changeset/wicked-readers-knock.md new file mode 100644 index 0000000000..fd828b003c --- /dev/null +++ b/.changeset/wicked-readers-knock.md @@ -0,0 +1,5 @@ +--- +'svelte': patch +--- + +fix: ensure inline object literals are correctly serialised diff --git a/packages/svelte/src/compiler/phases/2-analyze/visitors/shared/utils.js b/packages/svelte/src/compiler/phases/2-analyze/visitors/shared/utils.js index 82356ea619..0c297bb203 100644 --- a/packages/svelte/src/compiler/phases/2-analyze/visitors/shared/utils.js +++ b/packages/svelte/src/compiler/phases/2-analyze/visitors/shared/utils.js @@ -184,6 +184,9 @@ export function is_pure(node, context) { if (node.type !== 'Identifier' && node.type !== 'MemberExpression') { return false; } + if (node.type === 'MemberExpression' && node.object.type === 'Literal') { + return true; + } const left = object(node); if (!left) return false; diff --git a/packages/svelte/tests/runtime-legacy/samples/inline-expressions-2/_config.js b/packages/svelte/tests/runtime-legacy/samples/inline-expressions-2/_config.js new file mode 100644 index 0000000000..3f98592777 --- /dev/null +++ b/packages/svelte/tests/runtime-legacy/samples/inline-expressions-2/_config.js @@ -0,0 +1,10 @@ +import { test } from '../../test'; + +export default test({ + html: ` +
Without text expression: 7.36
+With text expression: 7.36
+With text expression and function call: 7.36
+With text expression and property access: 4
+4
` +}); diff --git a/packages/svelte/tests/runtime-legacy/samples/inline-expressions-2/main.svelte b/packages/svelte/tests/runtime-legacy/samples/inline-expressions-2/main.svelte new file mode 100644 index 0000000000..ec25943c75 --- /dev/null +++ b/packages/svelte/tests/runtime-legacy/samples/inline-expressions-2/main.svelte @@ -0,0 +1,5 @@ +Without text expression: 7.36
+With text expression: {7.36}
+With text expression and function call: {(7.36).toLocaleString()}
+With text expression and property access: {"test".length}
+{"test".length}