Skip to content

Commit 472a3bb

Browse files
authored
fix: wrong scope for reactive block statement (#299)
* fix: wrong scope for reactive block statement * Create .changeset/eleven-coins-protect.md
1 parent 885012d commit 472a3bb

10 files changed

+11320
-195
lines changed

.changeset/eleven-coins-protect.md

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"svelte-eslint-parser": patch
3+
---
4+
5+
fix: wrong scope for reactive block statement

src/parser/typescript/analyze/index.ts

+3-12
Original file line numberDiff line numberDiff line change
@@ -447,14 +447,9 @@ function transformForReactiveStatement(
447447
const functionId = ctx.generateUniqueId("reactiveStatementScopeFunction");
448448
const originalBody = statement.body;
449449
ctx.appendOriginal(originalBody.range[0]);
450-
ctx.appendVirtualScript(`function ${functionId}()`);
451-
if (originalBody.type !== "BlockStatement") {
452-
ctx.appendVirtualScript(`{`);
453-
}
450+
ctx.appendVirtualScript(`function ${functionId}(){`);
454451
ctx.appendOriginal(originalBody.range[1]);
455-
if (originalBody.type !== "BlockStatement") {
456-
ctx.appendVirtualScript(`}`);
457-
}
452+
ctx.appendVirtualScript(`}`);
458453
ctx.appendOriginal(statement.range[1]);
459454

460455
ctx.restoreContext.addRestoreStatementProcess((node, result) => {
@@ -466,11 +461,7 @@ function transformForReactiveStatement(
466461
if (body.type !== "FunctionDeclaration" || body.id.name !== functionId) {
467462
return false;
468463
}
469-
if (originalBody.type === "BlockStatement") {
470-
reactiveStatement.body = body.body;
471-
} else {
472-
reactiveStatement.body = body.body.body[0];
473-
}
464+
reactiveStatement.body = body.body.body[0];
474465
reactiveStatement.body.parent = reactiveStatement;
475466

476467
const scopeManager = result.scopeManager as ScopeManager;
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
<script>
2+
let foo
3+
$: {
4+
foo = 1
5+
}
6+
</script>
7+
8+
{foo}

0 commit comments

Comments
 (0)