From b05d42c067ffa19ce7bac47a7915278ac1570252 Mon Sep 17 00:00:00 2001 From: Dominic Gannaway Date: Tue, 10 Dec 2024 00:00:51 +0000 Subject: [PATCH 1/4] fix: ensure snippet hoisting works in the correct scope --- .changeset/chatty-windows-own.md | 5 +++++ packages/svelte/src/compiler/phases/scope.js | 6 +----- .../samples/snippet-hoisting-2/_config.js | 5 +++++ .../samples/snippet-hoisting-2/main.svelte | 13 +++++++++++++ .../_expected/client/index.svelte.js | 14 +++++++------- .../_expected/server/index.svelte.js | 9 +++++---- 6 files changed, 36 insertions(+), 16 deletions(-) create mode 100644 .changeset/chatty-windows-own.md create mode 100644 packages/svelte/tests/runtime-runes/samples/snippet-hoisting-2/_config.js create mode 100644 packages/svelte/tests/runtime-runes/samples/snippet-hoisting-2/main.svelte diff --git a/.changeset/chatty-windows-own.md b/.changeset/chatty-windows-own.md new file mode 100644 index 000000000000..7a5ac00c44d0 --- /dev/null +++ b/.changeset/chatty-windows-own.md @@ -0,0 +1,5 @@ +--- +'svelte': patch +--- + +fix: ensure snippet hoisting works in the correct scope diff --git a/packages/svelte/src/compiler/phases/scope.js b/packages/svelte/src/compiler/phases/scope.js index 7f22aa7c8792..7155d3172049 100644 --- a/packages/svelte/src/compiler/phases/scope.js +++ b/packages/svelte/src/compiler/phases/scope.js @@ -628,12 +628,8 @@ export function create_scopes(ast, root, allow_reactive_declarations, parent) { SnippetBlock(node, context) { const state = context.state; - // Special-case for root-level snippets: they become part of the instance scope - const is_top_level = !context.path.at(-2); let scope = state.scope; - if (is_top_level) { - scope = /** @type {Scope} */ (parent); - } + scope.declare(node.expression, 'normal', 'function', node); const child_scope = state.scope.child(); diff --git a/packages/svelte/tests/runtime-runes/samples/snippet-hoisting-2/_config.js b/packages/svelte/tests/runtime-runes/samples/snippet-hoisting-2/_config.js new file mode 100644 index 000000000000..ae00bd9f56ef --- /dev/null +++ b/packages/svelte/tests/runtime-runes/samples/snippet-hoisting-2/_config.js @@ -0,0 +1,5 @@ +import { test } from '../../test'; + +export default test({ + html: 'a' +}); diff --git a/packages/svelte/tests/runtime-runes/samples/snippet-hoisting-2/main.svelte b/packages/svelte/tests/runtime-runes/samples/snippet-hoisting-2/main.svelte new file mode 100644 index 000000000000..d090460a09e9 --- /dev/null +++ b/packages/svelte/tests/runtime-runes/samples/snippet-hoisting-2/main.svelte @@ -0,0 +1,13 @@ + + +{@render b()} + +{#snippet a()} + {abc} +{/snippet} + +{#snippet b()} + {@render a()} +{/snippet} diff --git a/packages/svelte/tests/snapshot/samples/bind-component-snippet/_expected/client/index.svelte.js b/packages/svelte/tests/snapshot/samples/bind-component-snippet/_expected/client/index.svelte.js index bcddb6f658c8..58ccf7ed7fda 100644 --- a/packages/svelte/tests/snapshot/samples/bind-component-snippet/_expected/client/index.svelte.js +++ b/packages/svelte/tests/snapshot/samples/bind-component-snippet/_expected/client/index.svelte.js @@ -2,17 +2,17 @@ import "svelte/internal/disclose-version"; import * as $ from "svelte/internal/client"; import TextInput from './Child.svelte'; -const snippet = ($$anchor) => { - $.next(); +var root = $.template(` `, 1); - var text = $.text("Something"); +export default function Bind_component_snippet($$anchor) { + const snippet = ($$anchor) => { + $.next(); - $.append($$anchor, text); -}; + var text = $.text("Something"); -var root = $.template(` `, 1); + $.append($$anchor, text); + }; -export default function Bind_component_snippet($$anchor) { let value = $.state(''); const _snippet = snippet; var fragment = root(); diff --git a/packages/svelte/tests/snapshot/samples/bind-component-snippet/_expected/server/index.svelte.js b/packages/svelte/tests/snapshot/samples/bind-component-snippet/_expected/server/index.svelte.js index d223a3150269..b645d055702c 100644 --- a/packages/svelte/tests/snapshot/samples/bind-component-snippet/_expected/server/index.svelte.js +++ b/packages/svelte/tests/snapshot/samples/bind-component-snippet/_expected/server/index.svelte.js @@ -1,13 +1,14 @@ import * as $ from "svelte/internal/server"; import TextInput from './Child.svelte'; -function snippet($$payload) { - $$payload.out += `Something`; -} - export default function Bind_component_snippet($$payload) { let value = ''; const _snippet = snippet; + + function snippet($$payload) { + $$payload.out += `Something`; + } + let $$settled = true; let $$inner_payload; From bdf3a1aafaa31222a140f56fc9e90d63ed8f7575 Mon Sep 17 00:00:00 2001 From: Dominic Gannaway Date: Tue, 10 Dec 2024 10:16:12 +0000 Subject: [PATCH 2/4] fix bug --- .../phases/2-analyze/visitors/SnippetBlock.js | 3 ++- .../samples/action-duplicate/output.json | 8 ++++---- .../samples/action-with-call/output.json | 4 ++-- .../samples/action-with-identifier/output.json | 4 ++-- .../samples/action-with-literal/output.json | 4 ++-- .../tests/parser-legacy/samples/action/output.json | 4 ++-- .../parser-legacy/samples/animation/output.json | 4 ++-- .../samples/attribute-class-directive/output.json | 4 ++-- .../samples/attribute-with-whitespace/output.json | 4 ++-- .../samples/binding-shorthand/output.json | 4 ++-- .../parser-legacy/samples/binding/output.json | 4 ++-- .../samples/event-handler/output.json | 4 ++-- .../samples/javascript-comments/output.json | 4 ++-- .../tests/parser-legacy/samples/refs/output.json | 4 ++-- .../samples/transition-intro-no-params/output.json | 2 +- .../samples/transition-intro/output.json | 2 +- .../typescript-in-event-handler/output.json | 4 ++-- .../samples/snippet-hoisting-3/_config.js | 5 +++++ .../samples/snippet-hoisting-3/main.svelte | 13 +++++++++++++ .../_expected/client/index.svelte.js | 14 +++++++------- .../_expected/server/index.svelte.js | 9 ++++----- 21 files changed, 63 insertions(+), 45 deletions(-) create mode 100644 packages/svelte/tests/runtime-runes/samples/snippet-hoisting-3/_config.js create mode 100644 packages/svelte/tests/runtime-runes/samples/snippet-hoisting-3/main.svelte diff --git a/packages/svelte/src/compiler/phases/2-analyze/visitors/SnippetBlock.js b/packages/svelte/src/compiler/phases/2-analyze/visitors/SnippetBlock.js index cd8af21f98de..7b8cd7593fd3 100644 --- a/packages/svelte/src/compiler/phases/2-analyze/visitors/SnippetBlock.js +++ b/packages/svelte/src/compiler/phases/2-analyze/visitors/SnippetBlock.js @@ -99,8 +99,9 @@ function can_hoist_snippet(scope, scopes, visited = new Set()) { if (binding.initial?.type === 'SnippetBlock') { if (visited.has(binding)) continue; visited.add(binding); + const snippet_scope = /** @type {Scope} */ (scopes.get(binding.initial)); - if (can_hoist_snippet(binding.scope, scopes, visited)) { + if (can_hoist_snippet(snippet_scope, scopes, visited)) { continue; } } diff --git a/packages/svelte/tests/parser-legacy/samples/action-duplicate/output.json b/packages/svelte/tests/parser-legacy/samples/action-duplicate/output.json index 3dad9bb4e523..c6af77a47b6f 100644 --- a/packages/svelte/tests/parser-legacy/samples/action-duplicate/output.json +++ b/packages/svelte/tests/parser-legacy/samples/action-duplicate/output.json @@ -15,16 +15,16 @@ "end": 20, "type": "Action", "name": "autofocus", - "modifiers": [], - "expression": null + "expression": null, + "modifiers": [] }, { "start": 21, "end": 34, "type": "Action", "name": "autofocus", - "modifiers": [], - "expression": null + "expression": null, + "modifiers": [] } ], "children": [] diff --git a/packages/svelte/tests/parser-legacy/samples/action-with-call/output.json b/packages/svelte/tests/parser-legacy/samples/action-with-call/output.json index 66ce187c625a..a10d4eccf0eb 100644 --- a/packages/svelte/tests/parser-legacy/samples/action-with-call/output.json +++ b/packages/svelte/tests/parser-legacy/samples/action-with-call/output.json @@ -15,7 +15,6 @@ "end": 39, "type": "Action", "name": "tooltip", - "modifiers": [], "expression": { "type": "CallExpression", "start": 21, @@ -66,7 +65,8 @@ } ], "optional": false - } + }, + "modifiers": [] } ], "children": [] diff --git a/packages/svelte/tests/parser-legacy/samples/action-with-identifier/output.json b/packages/svelte/tests/parser-legacy/samples/action-with-identifier/output.json index 39a6f5f64702..e9a3e7e5da6f 100644 --- a/packages/svelte/tests/parser-legacy/samples/action-with-identifier/output.json +++ b/packages/svelte/tests/parser-legacy/samples/action-with-identifier/output.json @@ -15,7 +15,6 @@ "end": 28, "type": "Action", "name": "tooltip", - "modifiers": [], "expression": { "type": "Identifier", "start": 20, @@ -31,7 +30,8 @@ } }, "name": "message" - } + }, + "modifiers": [] } ], "children": [] diff --git a/packages/svelte/tests/parser-legacy/samples/action-with-literal/output.json b/packages/svelte/tests/parser-legacy/samples/action-with-literal/output.json index 94c60b701a44..94b60b9e5d13 100644 --- a/packages/svelte/tests/parser-legacy/samples/action-with-literal/output.json +++ b/packages/svelte/tests/parser-legacy/samples/action-with-literal/output.json @@ -15,7 +15,6 @@ "end": 36, "type": "Action", "name": "tooltip", - "modifiers": [], "expression": { "type": "Literal", "start": 21, @@ -32,7 +31,8 @@ }, "value": "tooltip msg", "raw": "'tooltip msg'" - } + }, + "modifiers": [] } ], "children": [] diff --git a/packages/svelte/tests/parser-legacy/samples/action/output.json b/packages/svelte/tests/parser-legacy/samples/action/output.json index d72bf7db1012..f241c81a933a 100644 --- a/packages/svelte/tests/parser-legacy/samples/action/output.json +++ b/packages/svelte/tests/parser-legacy/samples/action/output.json @@ -15,8 +15,8 @@ "end": 20, "type": "Action", "name": "autofocus", - "modifiers": [], - "expression": null + "expression": null, + "modifiers": [] } ], "children": [] diff --git a/packages/svelte/tests/parser-legacy/samples/animation/output.json b/packages/svelte/tests/parser-legacy/samples/animation/output.json index 0d82cb2bb917..bf4b43b87595 100644 --- a/packages/svelte/tests/parser-legacy/samples/animation/output.json +++ b/packages/svelte/tests/parser-legacy/samples/animation/output.json @@ -20,8 +20,8 @@ "end": 50, "type": "Animation", "name": "flip", - "modifiers": [], - "expression": null + "expression": null, + "modifiers": [] } ], "children": [ diff --git a/packages/svelte/tests/parser-legacy/samples/attribute-class-directive/output.json b/packages/svelte/tests/parser-legacy/samples/attribute-class-directive/output.json index 9efe9acf8dda..3cd54b66479b 100644 --- a/packages/svelte/tests/parser-legacy/samples/attribute-class-directive/output.json +++ b/packages/svelte/tests/parser-legacy/samples/attribute-class-directive/output.json @@ -15,7 +15,6 @@ "end": 22, "type": "Class", "name": "foo", - "modifiers": [], "expression": { "type": "Identifier", "start": 16, @@ -31,7 +30,8 @@ } }, "name": "isFoo" - } + }, + "modifiers": [] } ], "children": [] diff --git a/packages/svelte/tests/parser-legacy/samples/attribute-with-whitespace/output.json b/packages/svelte/tests/parser-legacy/samples/attribute-with-whitespace/output.json index 4d3a29180869..2e45184be928 100644 --- a/packages/svelte/tests/parser-legacy/samples/attribute-with-whitespace/output.json +++ b/packages/svelte/tests/parser-legacy/samples/attribute-with-whitespace/output.json @@ -15,7 +15,6 @@ "end": 23, "type": "EventHandler", "name": "click", - "modifiers": [], "expression": { "type": "Identifier", "start": 19, @@ -31,7 +30,8 @@ } }, "name": "foo" - } + }, + "modifiers": [] } ], "children": [ diff --git a/packages/svelte/tests/parser-legacy/samples/binding-shorthand/output.json b/packages/svelte/tests/parser-legacy/samples/binding-shorthand/output.json index 672014629791..42892457059c 100644 --- a/packages/svelte/tests/parser-legacy/samples/binding-shorthand/output.json +++ b/packages/svelte/tests/parser-legacy/samples/binding-shorthand/output.json @@ -22,13 +22,13 @@ "end": 46, "type": "Binding", "name": "foo", - "modifiers": [], "expression": { "start": 43, "end": 46, "type": "Identifier", "name": "foo" - } + }, + "modifiers": [] } ], "children": [] diff --git a/packages/svelte/tests/parser-legacy/samples/binding/output.json b/packages/svelte/tests/parser-legacy/samples/binding/output.json index 4ce069bd37c0..5256ede7bb9a 100644 --- a/packages/svelte/tests/parser-legacy/samples/binding/output.json +++ b/packages/svelte/tests/parser-legacy/samples/binding/output.json @@ -22,7 +22,6 @@ "end": 55, "type": "Binding", "name": "value", - "modifiers": [], "expression": { "type": "Identifier", "start": 50, @@ -38,7 +37,8 @@ } }, "name": "name" - } + }, + "modifiers": [] } ], "children": [] diff --git a/packages/svelte/tests/parser-legacy/samples/event-handler/output.json b/packages/svelte/tests/parser-legacy/samples/event-handler/output.json index 45b625667706..11ee562297ed 100644 --- a/packages/svelte/tests/parser-legacy/samples/event-handler/output.json +++ b/packages/svelte/tests/parser-legacy/samples/event-handler/output.json @@ -15,7 +15,6 @@ "end": 45, "type": "EventHandler", "name": "click", - "modifiers": [], "expression": { "type": "ArrowFunctionExpression", "start": 19, @@ -100,7 +99,8 @@ } } } - } + }, + "modifiers": [] } ], "children": [ diff --git a/packages/svelte/tests/parser-legacy/samples/javascript-comments/output.json b/packages/svelte/tests/parser-legacy/samples/javascript-comments/output.json index 15db05904cff..42229b741fbd 100644 --- a/packages/svelte/tests/parser-legacy/samples/javascript-comments/output.json +++ b/packages/svelte/tests/parser-legacy/samples/javascript-comments/output.json @@ -22,7 +22,6 @@ "end": 692, "type": "EventHandler", "name": "click", - "modifiers": [], "expression": { "type": "ArrowFunctionExpression", "start": 596, @@ -137,7 +136,8 @@ "end": 594 } ] - } + }, + "modifiers": [] } ], "children": [ diff --git a/packages/svelte/tests/parser-legacy/samples/refs/output.json b/packages/svelte/tests/parser-legacy/samples/refs/output.json index e2bda741fa71..7829a2787fab 100644 --- a/packages/svelte/tests/parser-legacy/samples/refs/output.json +++ b/packages/svelte/tests/parser-legacy/samples/refs/output.json @@ -22,7 +22,6 @@ "end": 53, "type": "Binding", "name": "this", - "modifiers": [], "expression": { "type": "Identifier", "start": 49, @@ -38,7 +37,8 @@ } }, "name": "foo" - } + }, + "modifiers": [] } ], "children": [] diff --git a/packages/svelte/tests/parser-legacy/samples/transition-intro-no-params/output.json b/packages/svelte/tests/parser-legacy/samples/transition-intro-no-params/output.json index f30788d7583f..18860d615b90 100644 --- a/packages/svelte/tests/parser-legacy/samples/transition-intro-no-params/output.json +++ b/packages/svelte/tests/parser-legacy/samples/transition-intro-no-params/output.json @@ -15,8 +15,8 @@ "end": 12, "type": "Transition", "name": "fade", - "modifiers": [], "expression": null, + "modifiers": [], "intro": true, "outro": false } diff --git a/packages/svelte/tests/parser-legacy/samples/transition-intro/output.json b/packages/svelte/tests/parser-legacy/samples/transition-intro/output.json index ae52f72c5d9c..973cfb7d3374 100644 --- a/packages/svelte/tests/parser-legacy/samples/transition-intro/output.json +++ b/packages/svelte/tests/parser-legacy/samples/transition-intro/output.json @@ -15,7 +15,6 @@ "end": 30, "type": "Transition", "name": "style", - "modifiers": [], "expression": { "type": "ObjectExpression", "start": 16, @@ -85,6 +84,7 @@ } ] }, + "modifiers": [], "intro": true, "outro": false } diff --git a/packages/svelte/tests/parser-modern/samples/typescript-in-event-handler/output.json b/packages/svelte/tests/parser-modern/samples/typescript-in-event-handler/output.json index 5d72e01b0ab6..0aa147911d22 100644 --- a/packages/svelte/tests/parser-modern/samples/typescript-in-event-handler/output.json +++ b/packages/svelte/tests/parser-modern/samples/typescript-in-event-handler/output.json @@ -25,7 +25,6 @@ "end": 147, "type": "OnDirective", "name": "click", - "modifiers": [], "expression": { "type": "ArrowFunctionExpression", "start": 73, @@ -316,7 +315,8 @@ } ] } - } + }, + "modifiers": [] } ], "fragment": { diff --git a/packages/svelte/tests/runtime-runes/samples/snippet-hoisting-3/_config.js b/packages/svelte/tests/runtime-runes/samples/snippet-hoisting-3/_config.js new file mode 100644 index 000000000000..240263603d28 --- /dev/null +++ b/packages/svelte/tests/runtime-runes/samples/snippet-hoisting-3/_config.js @@ -0,0 +1,5 @@ +import { test } from '../../test'; + +export default test({ + html: '

Hello world!

' +}); diff --git a/packages/svelte/tests/runtime-runes/samples/snippet-hoisting-3/main.svelte b/packages/svelte/tests/runtime-runes/samples/snippet-hoisting-3/main.svelte new file mode 100644 index 000000000000..b23a69d53d8d --- /dev/null +++ b/packages/svelte/tests/runtime-runes/samples/snippet-hoisting-3/main.svelte @@ -0,0 +1,13 @@ + + + + +

Hello {name}!

+ +{#snippet foo()} + oo +{/snippet} diff --git a/packages/svelte/tests/snapshot/samples/bind-component-snippet/_expected/client/index.svelte.js b/packages/svelte/tests/snapshot/samples/bind-component-snippet/_expected/client/index.svelte.js index 58ccf7ed7fda..bcddb6f658c8 100644 --- a/packages/svelte/tests/snapshot/samples/bind-component-snippet/_expected/client/index.svelte.js +++ b/packages/svelte/tests/snapshot/samples/bind-component-snippet/_expected/client/index.svelte.js @@ -2,17 +2,17 @@ import "svelte/internal/disclose-version"; import * as $ from "svelte/internal/client"; import TextInput from './Child.svelte'; -var root = $.template(` `, 1); +const snippet = ($$anchor) => { + $.next(); -export default function Bind_component_snippet($$anchor) { - const snippet = ($$anchor) => { - $.next(); + var text = $.text("Something"); - var text = $.text("Something"); + $.append($$anchor, text); +}; - $.append($$anchor, text); - }; +var root = $.template(` `, 1); +export default function Bind_component_snippet($$anchor) { let value = $.state(''); const _snippet = snippet; var fragment = root(); diff --git a/packages/svelte/tests/snapshot/samples/bind-component-snippet/_expected/server/index.svelte.js b/packages/svelte/tests/snapshot/samples/bind-component-snippet/_expected/server/index.svelte.js index b645d055702c..d223a3150269 100644 --- a/packages/svelte/tests/snapshot/samples/bind-component-snippet/_expected/server/index.svelte.js +++ b/packages/svelte/tests/snapshot/samples/bind-component-snippet/_expected/server/index.svelte.js @@ -1,14 +1,13 @@ import * as $ from "svelte/internal/server"; import TextInput from './Child.svelte'; +function snippet($$payload) { + $$payload.out += `Something`; +} + export default function Bind_component_snippet($$payload) { let value = ''; const _snippet = snippet; - - function snippet($$payload) { - $$payload.out += `Something`; - } - let $$settled = true; let $$inner_payload; From 93f675beba766894849b357c5b3f40aab3477094 Mon Sep 17 00:00:00 2001 From: Dominic Gannaway Date: Tue, 10 Dec 2024 12:25:02 +0000 Subject: [PATCH 3/4] revert --- .../parser-legacy/samples/action-duplicate/output.json | 8 ++++---- .../parser-legacy/samples/action-with-call/output.json | 4 ++-- .../samples/action-with-identifier/output.json | 4 ++-- .../parser-legacy/samples/action-with-literal/output.json | 4 ++-- .../svelte/tests/parser-legacy/samples/action/output.json | 4 ++-- .../tests/parser-legacy/samples/animation/output.json | 4 ++-- .../samples/attribute-class-directive/output.json | 4 ++-- .../samples/attribute-with-whitespace/output.json | 4 ++-- .../parser-legacy/samples/binding-shorthand/output.json | 4 ++-- .../tests/parser-legacy/samples/binding/output.json | 4 ++-- .../tests/parser-legacy/samples/event-handler/output.json | 4 ++-- .../parser-legacy/samples/javascript-comments/output.json | 4 ++-- .../svelte/tests/parser-legacy/samples/refs/output.json | 4 ++-- .../samples/transition-intro-no-params/output.json | 2 +- .../parser-legacy/samples/transition-intro/output.json | 2 +- 15 files changed, 30 insertions(+), 30 deletions(-) diff --git a/packages/svelte/tests/parser-legacy/samples/action-duplicate/output.json b/packages/svelte/tests/parser-legacy/samples/action-duplicate/output.json index c6af77a47b6f..3dad9bb4e523 100644 --- a/packages/svelte/tests/parser-legacy/samples/action-duplicate/output.json +++ b/packages/svelte/tests/parser-legacy/samples/action-duplicate/output.json @@ -15,16 +15,16 @@ "end": 20, "type": "Action", "name": "autofocus", - "expression": null, - "modifiers": [] + "modifiers": [], + "expression": null }, { "start": 21, "end": 34, "type": "Action", "name": "autofocus", - "expression": null, - "modifiers": [] + "modifiers": [], + "expression": null } ], "children": [] diff --git a/packages/svelte/tests/parser-legacy/samples/action-with-call/output.json b/packages/svelte/tests/parser-legacy/samples/action-with-call/output.json index a10d4eccf0eb..66ce187c625a 100644 --- a/packages/svelte/tests/parser-legacy/samples/action-with-call/output.json +++ b/packages/svelte/tests/parser-legacy/samples/action-with-call/output.json @@ -15,6 +15,7 @@ "end": 39, "type": "Action", "name": "tooltip", + "modifiers": [], "expression": { "type": "CallExpression", "start": 21, @@ -65,8 +66,7 @@ } ], "optional": false - }, - "modifiers": [] + } } ], "children": [] diff --git a/packages/svelte/tests/parser-legacy/samples/action-with-identifier/output.json b/packages/svelte/tests/parser-legacy/samples/action-with-identifier/output.json index e9a3e7e5da6f..39a6f5f64702 100644 --- a/packages/svelte/tests/parser-legacy/samples/action-with-identifier/output.json +++ b/packages/svelte/tests/parser-legacy/samples/action-with-identifier/output.json @@ -15,6 +15,7 @@ "end": 28, "type": "Action", "name": "tooltip", + "modifiers": [], "expression": { "type": "Identifier", "start": 20, @@ -30,8 +31,7 @@ } }, "name": "message" - }, - "modifiers": [] + } } ], "children": [] diff --git a/packages/svelte/tests/parser-legacy/samples/action-with-literal/output.json b/packages/svelte/tests/parser-legacy/samples/action-with-literal/output.json index 94b60b9e5d13..94c60b701a44 100644 --- a/packages/svelte/tests/parser-legacy/samples/action-with-literal/output.json +++ b/packages/svelte/tests/parser-legacy/samples/action-with-literal/output.json @@ -15,6 +15,7 @@ "end": 36, "type": "Action", "name": "tooltip", + "modifiers": [], "expression": { "type": "Literal", "start": 21, @@ -31,8 +32,7 @@ }, "value": "tooltip msg", "raw": "'tooltip msg'" - }, - "modifiers": [] + } } ], "children": [] diff --git a/packages/svelte/tests/parser-legacy/samples/action/output.json b/packages/svelte/tests/parser-legacy/samples/action/output.json index f241c81a933a..d72bf7db1012 100644 --- a/packages/svelte/tests/parser-legacy/samples/action/output.json +++ b/packages/svelte/tests/parser-legacy/samples/action/output.json @@ -15,8 +15,8 @@ "end": 20, "type": "Action", "name": "autofocus", - "expression": null, - "modifiers": [] + "modifiers": [], + "expression": null } ], "children": [] diff --git a/packages/svelte/tests/parser-legacy/samples/animation/output.json b/packages/svelte/tests/parser-legacy/samples/animation/output.json index bf4b43b87595..0d82cb2bb917 100644 --- a/packages/svelte/tests/parser-legacy/samples/animation/output.json +++ b/packages/svelte/tests/parser-legacy/samples/animation/output.json @@ -20,8 +20,8 @@ "end": 50, "type": "Animation", "name": "flip", - "expression": null, - "modifiers": [] + "modifiers": [], + "expression": null } ], "children": [ diff --git a/packages/svelte/tests/parser-legacy/samples/attribute-class-directive/output.json b/packages/svelte/tests/parser-legacy/samples/attribute-class-directive/output.json index 3cd54b66479b..9efe9acf8dda 100644 --- a/packages/svelte/tests/parser-legacy/samples/attribute-class-directive/output.json +++ b/packages/svelte/tests/parser-legacy/samples/attribute-class-directive/output.json @@ -15,6 +15,7 @@ "end": 22, "type": "Class", "name": "foo", + "modifiers": [], "expression": { "type": "Identifier", "start": 16, @@ -30,8 +31,7 @@ } }, "name": "isFoo" - }, - "modifiers": [] + } } ], "children": [] diff --git a/packages/svelte/tests/parser-legacy/samples/attribute-with-whitespace/output.json b/packages/svelte/tests/parser-legacy/samples/attribute-with-whitespace/output.json index 2e45184be928..4d3a29180869 100644 --- a/packages/svelte/tests/parser-legacy/samples/attribute-with-whitespace/output.json +++ b/packages/svelte/tests/parser-legacy/samples/attribute-with-whitespace/output.json @@ -15,6 +15,7 @@ "end": 23, "type": "EventHandler", "name": "click", + "modifiers": [], "expression": { "type": "Identifier", "start": 19, @@ -30,8 +31,7 @@ } }, "name": "foo" - }, - "modifiers": [] + } } ], "children": [ diff --git a/packages/svelte/tests/parser-legacy/samples/binding-shorthand/output.json b/packages/svelte/tests/parser-legacy/samples/binding-shorthand/output.json index 42892457059c..672014629791 100644 --- a/packages/svelte/tests/parser-legacy/samples/binding-shorthand/output.json +++ b/packages/svelte/tests/parser-legacy/samples/binding-shorthand/output.json @@ -22,13 +22,13 @@ "end": 46, "type": "Binding", "name": "foo", + "modifiers": [], "expression": { "start": 43, "end": 46, "type": "Identifier", "name": "foo" - }, - "modifiers": [] + } } ], "children": [] diff --git a/packages/svelte/tests/parser-legacy/samples/binding/output.json b/packages/svelte/tests/parser-legacy/samples/binding/output.json index 5256ede7bb9a..4ce069bd37c0 100644 --- a/packages/svelte/tests/parser-legacy/samples/binding/output.json +++ b/packages/svelte/tests/parser-legacy/samples/binding/output.json @@ -22,6 +22,7 @@ "end": 55, "type": "Binding", "name": "value", + "modifiers": [], "expression": { "type": "Identifier", "start": 50, @@ -37,8 +38,7 @@ } }, "name": "name" - }, - "modifiers": [] + } } ], "children": [] diff --git a/packages/svelte/tests/parser-legacy/samples/event-handler/output.json b/packages/svelte/tests/parser-legacy/samples/event-handler/output.json index 11ee562297ed..45b625667706 100644 --- a/packages/svelte/tests/parser-legacy/samples/event-handler/output.json +++ b/packages/svelte/tests/parser-legacy/samples/event-handler/output.json @@ -15,6 +15,7 @@ "end": 45, "type": "EventHandler", "name": "click", + "modifiers": [], "expression": { "type": "ArrowFunctionExpression", "start": 19, @@ -99,8 +100,7 @@ } } } - }, - "modifiers": [] + } } ], "children": [ diff --git a/packages/svelte/tests/parser-legacy/samples/javascript-comments/output.json b/packages/svelte/tests/parser-legacy/samples/javascript-comments/output.json index 42229b741fbd..15db05904cff 100644 --- a/packages/svelte/tests/parser-legacy/samples/javascript-comments/output.json +++ b/packages/svelte/tests/parser-legacy/samples/javascript-comments/output.json @@ -22,6 +22,7 @@ "end": 692, "type": "EventHandler", "name": "click", + "modifiers": [], "expression": { "type": "ArrowFunctionExpression", "start": 596, @@ -136,8 +137,7 @@ "end": 594 } ] - }, - "modifiers": [] + } } ], "children": [ diff --git a/packages/svelte/tests/parser-legacy/samples/refs/output.json b/packages/svelte/tests/parser-legacy/samples/refs/output.json index 7829a2787fab..e2bda741fa71 100644 --- a/packages/svelte/tests/parser-legacy/samples/refs/output.json +++ b/packages/svelte/tests/parser-legacy/samples/refs/output.json @@ -22,6 +22,7 @@ "end": 53, "type": "Binding", "name": "this", + "modifiers": [], "expression": { "type": "Identifier", "start": 49, @@ -37,8 +38,7 @@ } }, "name": "foo" - }, - "modifiers": [] + } } ], "children": [] diff --git a/packages/svelte/tests/parser-legacy/samples/transition-intro-no-params/output.json b/packages/svelte/tests/parser-legacy/samples/transition-intro-no-params/output.json index 18860d615b90..f30788d7583f 100644 --- a/packages/svelte/tests/parser-legacy/samples/transition-intro-no-params/output.json +++ b/packages/svelte/tests/parser-legacy/samples/transition-intro-no-params/output.json @@ -15,8 +15,8 @@ "end": 12, "type": "Transition", "name": "fade", - "expression": null, "modifiers": [], + "expression": null, "intro": true, "outro": false } diff --git a/packages/svelte/tests/parser-legacy/samples/transition-intro/output.json b/packages/svelte/tests/parser-legacy/samples/transition-intro/output.json index 973cfb7d3374..ae52f72c5d9c 100644 --- a/packages/svelte/tests/parser-legacy/samples/transition-intro/output.json +++ b/packages/svelte/tests/parser-legacy/samples/transition-intro/output.json @@ -15,6 +15,7 @@ "end": 30, "type": "Transition", "name": "style", + "modifiers": [], "expression": { "type": "ObjectExpression", "start": 16, @@ -84,7 +85,6 @@ } ] }, - "modifiers": [], "intro": true, "outro": false } From 2e4ab25f1d723b43d77117e1d48b77106ddbdc8f Mon Sep 17 00:00:00 2001 From: Dominic Gannaway Date: Tue, 10 Dec 2024 12:25:29 +0000 Subject: [PATCH 4/4] revert --- .../samples/typescript-in-event-handler/output.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/svelte/tests/parser-modern/samples/typescript-in-event-handler/output.json b/packages/svelte/tests/parser-modern/samples/typescript-in-event-handler/output.json index 0aa147911d22..5d72e01b0ab6 100644 --- a/packages/svelte/tests/parser-modern/samples/typescript-in-event-handler/output.json +++ b/packages/svelte/tests/parser-modern/samples/typescript-in-event-handler/output.json @@ -25,6 +25,7 @@ "end": 147, "type": "OnDirective", "name": "click", + "modifiers": [], "expression": { "type": "ArrowFunctionExpression", "start": 73, @@ -315,8 +316,7 @@ } ] } - }, - "modifiers": [] + } } ], "fragment": {