From 7d9df9afc342d33b18b43c3c76718d2b5f2d23ef Mon Sep 17 00:00:00 2001 From: Rich Harris Date: Tue, 7 Apr 2026 17:41:11 -0400 Subject: [PATCH] WIP --- .../svelte/src/compiler/phases/1-parse/read/expression.js | 5 ++--- packages/svelte/src/compiler/phases/1-parse/state/tag.js | 4 +++- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/packages/svelte/src/compiler/phases/1-parse/read/expression.js b/packages/svelte/src/compiler/phases/1-parse/read/expression.js index b970e62f51..92010a16ed 100644 --- a/packages/svelte/src/compiler/phases/1-parse/read/expression.js +++ b/packages/svelte/src/compiler/phases/1-parse/read/expression.js @@ -27,16 +27,15 @@ export function get_loose_identifier(parser, opening_token) { /** * @param {Parser} parser * @param {string} [opening_token] - * @param {boolean} [disallow_loose] * @returns {Expression} */ -export default function read_expression(parser, opening_token, disallow_loose) { +export default function read_expression(parser, opening_token) { try { return /** @type {Expression} */ (parse_expression_at(parser, parser.template, parser.index)); } catch (err) { // If we are in an each loop we need the error to be thrown in cases like // `as { y = z }` so we still throw and handle the error there - if (parser.loose && !disallow_loose) { + if (parser.loose) { const expression = get_loose_identifier(parser, opening_token); if (expression) { return expression; diff --git a/packages/svelte/src/compiler/phases/1-parse/state/tag.js b/packages/svelte/src/compiler/phases/1-parse/state/tag.js index 606ce99d1e..1eb163819d 100644 --- a/packages/svelte/src/compiler/phases/1-parse/state/tag.js +++ b/packages/svelte/src/compiler/phases/1-parse/state/tag.js @@ -93,7 +93,9 @@ function open(parser) { // we get a valid expression while (!expression) { try { - expression = read_expression(parser, undefined, true); + expression = /** @type {Expression} */ ( + parse_expression_at(parser, parser.template, parser.index) + ); } catch (err) { end = /** @type {any} */ (err).position[0] - 2;