Skip to content

Commit ff24f99

Browse files
authored
fix: crash when using component and {@const} (#354)
* fix: crash when using component and `{@const}` * Create curly-turkeys-appear.md
1 parent 37dda48 commit ff24f99

5 files changed

+2048
-27
lines changed

.changeset/curly-turkeys-appear.md

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"svelte-eslint-parser": patch
3+
---
4+
5+
fix: crash when using component and `{@const}`

src/context/script-let.ts

+27-27
Original file line numberDiff line numberDiff line change
@@ -423,7 +423,33 @@ export class ScriptLetContext {
423423
preparationScript?: string[];
424424
})
425425
): void {
426-
if (!params) {
426+
let resolvedParams;
427+
if (typeof params === "function") {
428+
if (this.ctx.isTypeScript()) {
429+
const generatedTypes = params({
430+
generateUniqueId: (base) => this.generateUniqueId(base),
431+
});
432+
resolvedParams = [generatedTypes.param];
433+
if (generatedTypes.preparationScript) {
434+
for (const preparationScript of generatedTypes.preparationScript) {
435+
this.appendScriptWithoutOffset(
436+
preparationScript,
437+
(node, tokens, comments, result) => {
438+
tokens.length = 0;
439+
comments.length = 0;
440+
removeAllScopeAndVariableAndReference(node, result);
441+
}
442+
);
443+
}
444+
}
445+
} else {
446+
const generatedTypes = params(null);
447+
resolvedParams = [generatedTypes.param];
448+
}
449+
} else {
450+
resolvedParams = params;
451+
}
452+
if (!resolvedParams || resolvedParams.length === 0) {
427453
const restore = this.appendScript(
428454
`{`,
429455
block.range[0],
@@ -442,32 +468,6 @@ export class ScriptLetContext {
442468
);
443469
this.pushScope(restore, "}");
444470
} else {
445-
let resolvedParams;
446-
if (typeof params === "function") {
447-
if (this.ctx.isTypeScript()) {
448-
const generatedTypes = params({
449-
generateUniqueId: (base) => this.generateUniqueId(base),
450-
});
451-
resolvedParams = [generatedTypes.param];
452-
if (generatedTypes.preparationScript) {
453-
for (const preparationScript of generatedTypes.preparationScript) {
454-
this.appendScriptWithoutOffset(
455-
preparationScript,
456-
(node, tokens, comments, result) => {
457-
tokens.length = 0;
458-
comments.length = 0;
459-
removeAllScopeAndVariableAndReference(node, result);
460-
}
461-
);
462-
}
463-
}
464-
} else {
465-
const generatedTypes = params(null);
466-
resolvedParams = [generatedTypes.param];
467-
}
468-
} else {
469-
resolvedParams = params;
470-
}
471471
const sortedParams = [...resolvedParams]
472472
.map((d) => {
473473
return {
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
<script>
2+
import Component from './Component.svelte'
3+
const b = 42
4+
</script>
5+
<Component>
6+
{@const a = b * 2}
7+
{a}
8+
</Component>

0 commit comments

Comments
 (0)