Skip to content

Commit 841ef6f

Browse files
committed
feat: change AST of @render tag to match the latest version of svelte v5.
1 parent cfd7f31 commit 841ef6f

15 files changed

+1990
-187
lines changed

package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@
4747
"version:ci": "env-cmd -e version-ci pnpm run build:meta && changeset version"
4848
},
4949
"peerDependencies": {
50-
"svelte": "^3.37.0 || ^4.0.0 || ^5.0.0-next.37"
50+
"svelte": "^3.37.0 || ^4.0.0 || ^5.0.0-next.65"
5151
},
5252
"peerDependenciesMeta": {
5353
"svelte": {
@@ -105,7 +105,7 @@
105105
"prettier-plugin-svelte": "^3.1.2",
106106
"rimraf": "^5.0.5",
107107
"semver": "^7.5.4",
108-
"svelte": "^5.0.0-next.37",
108+
"svelte": "^5.0.0-next.65",
109109
"svelte2tsx": "^0.7.0",
110110
"typescript": "~5.3.0",
111111
"typescript-eslint-parser-for-extra-files": "^0.6.0"

src/ast/html.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -277,7 +277,7 @@ export interface SvelteConstTag extends BaseNode {
277277
export interface SvelteRenderTag extends BaseNode {
278278
type: "SvelteRenderTag";
279279
callee: ESTree.Identifier;
280-
argument: ESTree.Expression | null;
280+
arguments: (ESTree.Expression | ESTree.SpreadElement)[];
281281
parent:
282282
| SvelteProgram
283283
| SvelteElement

src/parser/converts/render.ts

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,14 +13,16 @@ export function convertRenderTag(
1313
const mustache: SvelteRenderTag = {
1414
type: "SvelteRenderTag",
1515
callee: null as any,
16-
argument: null,
16+
arguments: [],
1717
parent,
1818
...ctx.getConvertLocation(node),
1919
};
2020
const calleeRange = getWithLoc(node.expression);
2121
const closeParenIndex = ctx.code.indexOf(
2222
")",
23-
node.argument ? getWithLoc(node.argument).end : calleeRange.end,
23+
node.arguments.length
24+
? getWithLoc(node.arguments[node.arguments.length - 1]).end
25+
: calleeRange.end,
2426
);
2527
ctx.scriptLet.addExpressionFromRange(
2628
[calleeRange.start, closeParenIndex + 1],
@@ -29,9 +31,9 @@ export function convertRenderTag(
2931
(expression: ESTree.SimpleCallExpression) => {
3032
mustache.callee = expression.callee as ESTree.Identifier;
3133
(mustache.callee as any).parent = mustache;
32-
if (expression.arguments.length) {
33-
mustache.argument = expression.arguments[0] as ESTree.Expression;
34-
(mustache.argument as any).parent = mustache;
34+
for (const argument of expression.arguments) {
35+
mustache.arguments.push(argument);
36+
(argument as any).parent = mustache;
3537
}
3638
},
3739
);

src/parser/svelte-ast-types.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ export interface ConstTag extends BaseNode {
6161
export interface RenderTag extends BaseNode {
6262
type: "RenderTag";
6363
expression: ESTree.Identifier;
64-
argument: null | ESTree.Expression;
64+
arguments: (ESTree.Expression | ESTree.SpreadElement)[];
6565
}
6666
export interface IfBlock extends BaseNode {
6767
type: "IfBlock";

tests/fixtures/parser/ast/svelte5/docs/snippets/01-output.json

Lines changed: 36 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1124,24 +1124,26 @@
11241124
},
11251125
{
11261126
"type": "SvelteRenderTag",
1127-
"argument": {
1128-
"type": "Identifier",
1129-
"name": "image",
1130-
"range": [
1131-
288,
1132-
293
1133-
],
1134-
"loc": {
1135-
"start": {
1136-
"line": 16,
1137-
"column": 19
1138-
},
1139-
"end": {
1140-
"line": 16,
1141-
"column": 24
1127+
"arguments": [
1128+
{
1129+
"type": "Identifier",
1130+
"name": "image",
1131+
"range": [
1132+
288,
1133+
293
1134+
],
1135+
"loc": {
1136+
"start": {
1137+
"line": 16,
1138+
"column": 19
1139+
},
1140+
"end": {
1141+
"line": 16,
1142+
"column": 24
1143+
}
11421144
}
11431145
}
1144-
},
1146+
],
11451147
"callee": {
11461148
"type": "Identifier",
11471149
"name": "figure",
@@ -1233,24 +1235,26 @@
12331235
"children": [
12341236
{
12351237
"type": "SvelteRenderTag",
1236-
"argument": {
1237-
"type": "Identifier",
1238-
"name": "image",
1239-
"range": [
1240-
330,
1241-
335
1242-
],
1243-
"loc": {
1244-
"start": {
1245-
"line": 19,
1246-
"column": 18
1247-
},
1248-
"end": {
1249-
"line": 19,
1250-
"column": 23
1238+
"arguments": [
1239+
{
1240+
"type": "Identifier",
1241+
"name": "image",
1242+
"range": [
1243+
330,
1244+
335
1245+
],
1246+
"loc": {
1247+
"start": {
1248+
"line": 19,
1249+
"column": 18
1250+
},
1251+
"end": {
1252+
"line": 19,
1253+
"column": 23
1254+
}
12511255
}
12521256
}
1253-
},
1257+
],
12541258
"callee": {
12551259
"type": "Identifier",
12561260
"name": "figure",

tests/fixtures/parser/ast/svelte5/docs/snippets/01-scope-output.json

Lines changed: 36 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1254,24 +1254,26 @@
12541254
},
12551255
{
12561256
"type": "SvelteRenderTag",
1257-
"argument": {
1258-
"type": "Identifier",
1259-
"name": "image",
1260-
"range": [
1261-
288,
1262-
293
1263-
],
1264-
"loc": {
1265-
"start": {
1266-
"line": 16,
1267-
"column": 19
1268-
},
1269-
"end": {
1270-
"line": 16,
1271-
"column": 24
1257+
"arguments": [
1258+
{
1259+
"type": "Identifier",
1260+
"name": "image",
1261+
"range": [
1262+
288,
1263+
293
1264+
],
1265+
"loc": {
1266+
"start": {
1267+
"line": 16,
1268+
"column": 19
1269+
},
1270+
"end": {
1271+
"line": 16,
1272+
"column": 24
1273+
}
12721274
}
12731275
}
1274-
},
1276+
],
12751277
"callee": {
12761278
"type": "Identifier",
12771279
"name": "figure",
@@ -1363,24 +1365,26 @@
13631365
"children": [
13641366
{
13651367
"type": "SvelteRenderTag",
1366-
"argument": {
1367-
"type": "Identifier",
1368-
"name": "image",
1369-
"range": [
1370-
330,
1371-
335
1372-
],
1373-
"loc": {
1374-
"start": {
1375-
"line": 19,
1376-
"column": 18
1377-
},
1378-
"end": {
1379-
"line": 19,
1380-
"column": 23
1368+
"arguments": [
1369+
{
1370+
"type": "Identifier",
1371+
"name": "image",
1372+
"range": [
1373+
330,
1374+
335
1375+
],
1376+
"loc": {
1377+
"start": {
1378+
"line": 19,
1379+
"column": 18
1380+
},
1381+
"end": {
1382+
"line": 19,
1383+
"column": 23
1384+
}
13811385
}
13821386
}
1383-
},
1387+
],
13841388
"callee": {
13851389
"type": "Identifier",
13861390
"name": "figure",

tests/fixtures/parser/ast/svelte5/docs/snippets/03-snippet-scope-output.json

Lines changed: 38 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -576,25 +576,27 @@
576576
},
577577
{
578578
"type": "SvelteRenderTag",
579-
"argument": {
580-
"type": "Literal",
581-
"raw": "'alice'",
582-
"value": "alice",
583-
"range": [
584-
159,
585-
166
586-
],
587-
"loc": {
588-
"start": {
589-
"line": 9,
590-
"column": 15
591-
},
592-
"end": {
593-
"line": 9,
594-
"column": 22
579+
"arguments": [
580+
{
581+
"type": "Literal",
582+
"raw": "'alice'",
583+
"value": "alice",
584+
"range": [
585+
159,
586+
166
587+
],
588+
"loc": {
589+
"start": {
590+
"line": 9,
591+
"column": 15
592+
},
593+
"end": {
594+
"line": 9,
595+
"column": 22
596+
}
595597
}
596598
}
597-
},
599+
],
598600
"callee": {
599601
"type": "Identifier",
600602
"name": "hello",
@@ -648,25 +650,27 @@
648650
},
649651
{
650652
"type": "SvelteRenderTag",
651-
"argument": {
652-
"type": "Literal",
653-
"raw": "'bob'",
654-
"value": "bob",
655-
"range": [
656-
184,
657-
189
658-
],
659-
"loc": {
660-
"start": {
661-
"line": 10,
662-
"column": 15
663-
},
664-
"end": {
665-
"line": 10,
666-
"column": 20
653+
"arguments": [
654+
{
655+
"type": "Literal",
656+
"raw": "'bob'",
657+
"value": "bob",
658+
"range": [
659+
184,
660+
189
661+
],
662+
"loc": {
663+
"start": {
664+
"line": 10,
665+
"column": 15
666+
},
667+
"end": {
668+
"line": 10,
669+
"column": 20
670+
}
667671
}
668672
}
669-
},
673+
],
670674
"callee": {
671675
"type": "Identifier",
672676
"name": "hello",

tests/fixtures/parser/ast/svelte5/docs/snippets/04-snippet-scope-output.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -175,7 +175,7 @@
175175
},
176176
{
177177
"type": "SvelteRenderTag",
178-
"argument": null,
178+
"arguments": [],
179179
"callee": {
180180
"type": "Identifier",
181181
"name": "y",
@@ -300,7 +300,7 @@
300300
},
301301
{
302302
"type": "SvelteRenderTag",
303-
"argument": null,
303+
"arguments": [],
304304
"callee": {
305305
"type": "Identifier",
306306
"name": "y",
@@ -441,7 +441,7 @@
441441
},
442442
{
443443
"type": "SvelteRenderTag",
444-
"argument": null,
444+
"arguments": [],
445445
"callee": {
446446
"type": "Identifier",
447447
"name": "x",

0 commit comments

Comments
 (0)