From 2c5965c145d0abb0370bf8e27e9f50289ddcb960 Mon Sep 17 00:00:00 2001 From: Joel Howse Date: Mon, 17 Feb 2025 21:27:41 +1300 Subject: [PATCH 1/5] probably not the best fix but oh well --- .../phases/3-transform/client/visitors/RegularElement.js | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/packages/svelte/src/compiler/phases/3-transform/client/visitors/RegularElement.js b/packages/svelte/src/compiler/phases/3-transform/client/visitors/RegularElement.js index 98036aa9b609..26002e841b93 100644 --- a/packages/svelte/src/compiler/phases/3-transform/client/visitors/RegularElement.js +++ b/packages/svelte/src/compiler/phases/3-transform/client/visitors/RegularElement.js @@ -3,6 +3,7 @@ /** @import { SourceLocation } from '#shared' */ /** @import { ComponentClientTransformState, ComponentContext } from '../types' */ /** @import { Scope } from '../../../scope' */ +import { escape_html } from '../../../../../escaping.js'; import { cannot_be_set_statically, is_boolean_attribute, @@ -10,7 +11,6 @@ import { is_load_error_element, is_void } from '../../../../../utils.js'; -import { escape_html } from '../../../../../escaping.js'; import { dev, is_ignored, locator } from '../../../../state.js'; import { is_event_attribute, is_text_attribute } from '../../../../utils/ast.js'; import * as b from '../../../../utils/builders.js'; @@ -18,12 +18,13 @@ import { is_custom_element_node } from '../../../nodes.js'; import { clean_nodes, determine_namespace_for_children } from '../../utils.js'; import { build_getter } from '../utils.js'; import { - get_attribute_name, build_attribute_value, build_class_directives, + build_set_attributes, build_style_directives, - build_set_attributes + get_attribute_name } from './shared/element.js'; +import { visit_event_attribute } from './shared/events.js'; import { process_children } from './shared/fragment.js'; import { build_render_statement, @@ -31,7 +32,6 @@ import { build_update_assignment, get_expression_id } from './shared/utils.js'; -import { visit_event_attribute } from './shared/events.js'; /** * @param {AST.RegularElement} node @@ -693,6 +693,7 @@ function build_element_special_value_attribute(element, node_id, attribute, cont ); if (is_select_with_value) { + let { value } = build_attribute_value(attribute.value, context); state.init.push(b.stmt(b.call('$.init_select', node_id, b.thunk(value)))); } From 7a30a54e1fc6ac0d4230d074c4c557cb0d9593ef Mon Sep 17 00:00:00 2001 From: Joel Howse Date: Mon, 17 Feb 2025 21:35:10 +1300 Subject: [PATCH 2/5] add changeset --- .changeset/shiny-shoes-yell.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/shiny-shoes-yell.md diff --git a/.changeset/shiny-shoes-yell.md b/.changeset/shiny-shoes-yell.md new file mode 100644 index 000000000000..b4e706800c4a --- /dev/null +++ b/.changeset/shiny-shoes-yell.md @@ -0,0 +1,5 @@ +--- +'svelte': patch +--- + +Fix ReferenceError bug (#15316) From 198649375f3fb983d1d2ee35f7123e84dc5bdf6f Mon Sep 17 00:00:00 2001 From: Joel Howse Date: Tue, 18 Feb 2025 08:57:31 +1300 Subject: [PATCH 3/5] Revert "probably not the best fix but oh well" This reverts commit 2c5965c145d0abb0370bf8e27e9f50289ddcb960. --- .../phases/3-transform/client/visitors/RegularElement.js | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/packages/svelte/src/compiler/phases/3-transform/client/visitors/RegularElement.js b/packages/svelte/src/compiler/phases/3-transform/client/visitors/RegularElement.js index 26002e841b93..98036aa9b609 100644 --- a/packages/svelte/src/compiler/phases/3-transform/client/visitors/RegularElement.js +++ b/packages/svelte/src/compiler/phases/3-transform/client/visitors/RegularElement.js @@ -3,7 +3,6 @@ /** @import { SourceLocation } from '#shared' */ /** @import { ComponentClientTransformState, ComponentContext } from '../types' */ /** @import { Scope } from '../../../scope' */ -import { escape_html } from '../../../../../escaping.js'; import { cannot_be_set_statically, is_boolean_attribute, @@ -11,6 +10,7 @@ import { is_load_error_element, is_void } from '../../../../../utils.js'; +import { escape_html } from '../../../../../escaping.js'; import { dev, is_ignored, locator } from '../../../../state.js'; import { is_event_attribute, is_text_attribute } from '../../../../utils/ast.js'; import * as b from '../../../../utils/builders.js'; @@ -18,13 +18,12 @@ import { is_custom_element_node } from '../../../nodes.js'; import { clean_nodes, determine_namespace_for_children } from '../../utils.js'; import { build_getter } from '../utils.js'; import { + get_attribute_name, build_attribute_value, build_class_directives, - build_set_attributes, build_style_directives, - get_attribute_name + build_set_attributes } from './shared/element.js'; -import { visit_event_attribute } from './shared/events.js'; import { process_children } from './shared/fragment.js'; import { build_render_statement, @@ -32,6 +31,7 @@ import { build_update_assignment, get_expression_id } from './shared/utils.js'; +import { visit_event_attribute } from './shared/events.js'; /** * @param {AST.RegularElement} node @@ -693,7 +693,6 @@ function build_element_special_value_attribute(element, node_id, attribute, cont ); if (is_select_with_value) { - let { value } = build_attribute_value(attribute.value, context); state.init.push(b.stmt(b.call('$.init_select', node_id, b.thunk(value)))); } From 7be381cd53a5511adc2f4e85ac86b7510ab8602f Mon Sep 17 00:00:00 2001 From: Joel Howse Date: Tue, 18 Feb 2025 09:44:04 +1300 Subject: [PATCH 4/5] chore: add failing test --- .../samples/template-deriveds-with-init/_config.js | 6 ++++++ .../samples/template-deriveds-with-init/main.svelte | 5 +++++ 2 files changed, 11 insertions(+) create mode 100644 packages/svelte/tests/runtime-runes/samples/template-deriveds-with-init/_config.js create mode 100644 packages/svelte/tests/runtime-runes/samples/template-deriveds-with-init/main.svelte diff --git a/packages/svelte/tests/runtime-runes/samples/template-deriveds-with-init/_config.js b/packages/svelte/tests/runtime-runes/samples/template-deriveds-with-init/_config.js new file mode 100644 index 000000000000..12daafbd45a3 --- /dev/null +++ b/packages/svelte/tests/runtime-runes/samples/template-deriveds-with-init/_config.js @@ -0,0 +1,6 @@ +import { test } from '../../test'; + +export default test({ + mode: ['client'], + test() {} +}); diff --git a/packages/svelte/tests/runtime-runes/samples/template-deriveds-with-init/main.svelte b/packages/svelte/tests/runtime-runes/samples/template-deriveds-with-init/main.svelte new file mode 100644 index 000000000000..03a6fa256039 --- /dev/null +++ b/packages/svelte/tests/runtime-runes/samples/template-deriveds-with-init/main.svelte @@ -0,0 +1,5 @@ + + + From 817cf1a80b3deb99a69febcab6a875400d1fc2bd Mon Sep 17 00:00:00 2001 From: Joel Howse Date: Tue, 18 Feb 2025 10:12:32 +1300 Subject: [PATCH 5/5] chore: add all failing cases to test --- .../samples/template-deriveds-with-init/main.svelte | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/svelte/tests/runtime-runes/samples/template-deriveds-with-init/main.svelte b/packages/svelte/tests/runtime-runes/samples/template-deriveds-with-init/main.svelte index 03a6fa256039..c0346aa92e8c 100644 --- a/packages/svelte/tests/runtime-runes/samples/template-deriveds-with-init/main.svelte +++ b/packages/svelte/tests/runtime-runes/samples/template-deriveds-with-init/main.svelte @@ -2,4 +2,4 @@ const foobar = () => ''; - +