Skip to content

Commit d7cd467

Browse files
authored
fix build and test with svelte 4 (#2041)
* fix build with estree-walker 3.0.3 * update to svelte 4 to test in CI * format * wrong pnpm version * make some test pass in both svelte 4 and svelte3 * make another pass in both * different snapshot for svelte 4 * format * try invalidating pnpm cache * what about this * I think I should go to sleep now * back to svelte 3 * should have just use git revert lol
1 parent 98b9256 commit d7cd467

File tree

24 files changed

+488
-121
lines changed

24 files changed

+488
-121
lines changed

packages/language-server/src/plugins/typescript/DocumentSnapshot.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -326,7 +326,7 @@ export class SvelteDocumentSnapshot implements DocumentSnapshot {
326326
: this.parent.offsetAt(positionOrOffset);
327327

328328
let foundNode: SvelteNode | null = null;
329-
walk(this.htmlAst, {
329+
walk(this.htmlAst as any, {
330330
enter(node) {
331331
// In case the offset is at a point where a node ends and a new one begins,
332332
// the node where the code ends is used. If this introduces problems, introduce

packages/language-server/test/plugins/typescript/features/CodeActionsProvider.test.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1799,7 +1799,6 @@ describe('CodeActionsProvider', () => {
17991799
}
18001800
);
18011801

1802-
console.log(JSON.stringify(codeActions, null, 2));
18031802
assert.deepStrictEqual(codeActions, [
18041803
{
18051804
title: 'Organize Imports',

packages/language-server/test/plugins/typescript/features/CompletionProvider.test.ts

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -710,21 +710,17 @@ describe('CompletionProviderImpl', () => {
710710
);
711711
document.version++;
712712

713-
const item = completions?.items.find((item) => item.label === 'onMount');
713+
const item = completions?.items.find((item) => item.label === 'ComponentDef');
714714
const { additionalTextEdits, detail } = await completionProvider.resolveCompletion(
715715
document,
716716
item!
717717
);
718718

719-
assert.strictEqual(
720-
detail,
721-
'Add import from "svelte"\n\nfunction onMount(fn: () => any): void'
722-
);
719+
assert.strictEqual(detail, 'Add import from "./ComponentDef"\n\nclass ComponentDef');
723720

724721
assert.strictEqual(
725722
harmonizeNewLines(additionalTextEdits![0]?.newText),
726-
// " instead of ' because VSCode uses " by default when there are no other imports indicating otherwise
727-
`${newLine}${indent}import { onMount } from "svelte";${newLine}`
723+
`${newLine}${indent}import { ComponentDef } from "./ComponentDef";${newLine}`
728724
);
729725

730726
assert.deepEqual(

packages/language-server/test/plugins/typescript/features/RenameProvider.test.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -276,8 +276,6 @@ describe('RenameProvider', () => {
276276
const { provider, renameDoc3 } = await setup();
277277
const result = await provider.rename(renameDoc3, Position.create(2, 20), 'newName');
278278

279-
console.log(JSON.stringify(result, null, 3));
280-
281279
assert.deepStrictEqual(result, {
282280
changes: {
283281
[getUri('rename3.svelte')]: [

packages/language-server/test/plugins/typescript/features/diagnostics/fixtures/$$events/input.svelte

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
dispatch('foo', 'bar');
1212
// invalid
1313
dispatch('foo', true);
14-
dispatch('click');
14+
dispatch('click', '');
1515
</script>
1616

1717
<button on:click>click</button>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
import { SvelteComponentTyped } from 'svelte';
2+
3+
export class Component extends SvelteComponentTyped<{ prop: number }> {}

packages/language-server/test/plugins/typescript/features/diagnostics/fixtures/$store-bind/expectedv2.json

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
[
22
{
33
"range": {
4-
"start": { "line": 19, "character": 24 },
5-
"end": { "line": 19, "character": 34 }
4+
"start": { "line": 17, "character": 24 },
5+
"end": { "line": 17, "character": 34 }
66
},
77
"severity": 1,
88
"source": "ts",
@@ -12,8 +12,8 @@
1212
},
1313
{
1414
"range": {
15-
"start": { "line": 20, "character": 16 },
16-
"end": { "line": 20, "character": 20 }
15+
"start": { "line": 18, "character": 16 },
16+
"end": { "line": 18, "character": 20 }
1717
},
1818
"severity": 1,
1919
"source": "ts",
@@ -23,8 +23,8 @@
2323
},
2424
{
2525
"range": {
26-
"start": { "line": 21, "character": 24 },
27-
"end": { "line": 21, "character": 41 }
26+
"start": { "line": 19, "character": 24 },
27+
"end": { "line": 19, "character": 41 }
2828
},
2929
"severity": 1,
3030
"source": "ts",
@@ -34,8 +34,8 @@
3434
},
3535
{
3636
"range": {
37-
"start": { "line": 22, "character": 16 },
38-
"end": { "line": 22, "character": 20 }
37+
"start": { "line": 20, "character": 16 },
38+
"end": { "line": 20, "character": 20 }
3939
},
4040
"severity": 1,
4141
"source": "ts",

packages/language-server/test/plugins/typescript/features/diagnostics/fixtures/$store-bind/input.svelte

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,11 @@
11
<script lang="ts">
22
import { writable } from 'svelte/store';
3-
import { SvelteComponentTyped } from 'svelte';
3+
import { Component } from './components'
44
55
const storeNr = writable(1);
66
const storeBool = writable(true);
77
const storeObjNr = writable({foo: 1});
88
const storeObjBool = writable({foo: true});
9-
10-
class Component extends SvelteComponentTyped<{prop: number}> {}
119
</script>
1210

1311
<!-- valid -->
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
import { SvelteComponentTyped } from 'svelte';
2+
export class Component extends SvelteComponentTyped<{ prop: boolean }> {}
3+
export class OtherComponent extends SvelteComponentTyped<{ prop: string }> {}
4+
export class ComponentWithFunction1 extends SvelteComponentTyped {
5+
action(a: number): string | number;
6+
}
7+
export class ComponentWithFunction2 extends SvelteComponentTyped {
8+
action(): string;
9+
}
10+
export class ComponentWithGeneric<T> extends SvelteComponentTyped<{ prop: T }> {}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,155 @@
1+
[
2+
{
3+
"range": {
4+
"start": {
5+
"line": 9,
6+
"character": 6
7+
},
8+
"end": {
9+
"line": 9,
10+
"character": 13
11+
}
12+
},
13+
"severity": 4,
14+
"source": "ts",
15+
"message": "'element' is declared but its value is never read.",
16+
"code": 6133,
17+
"tags": [1]
18+
},
19+
{
20+
"range": {
21+
"start": {
22+
"line": 18,
23+
"character": 2
24+
},
25+
"end": {
26+
"line": 18,
27+
"character": 11
28+
}
29+
},
30+
"severity": 1,
31+
"source": "ts",
32+
"message": "Variable 'component' is used before being assigned.",
33+
"code": 2454,
34+
"tags": []
35+
},
36+
{
37+
"range": {
38+
"start": {
39+
"line": 40,
40+
"character": 16
41+
},
42+
"end": {
43+
"line": 40,
44+
"character": 23
45+
}
46+
},
47+
"severity": 1,
48+
"source": "ts",
49+
"message": "Type 'HTMLDivElement' is missing the following properties from type 'HTMLInputElement': accept, alt, autocomplete, capture, and 52 more.",
50+
"code": 2740,
51+
"tags": []
52+
},
53+
{
54+
"range": {
55+
"start": {
56+
"line": 41,
57+
"character": 34
58+
},
59+
"end": {
60+
"line": 41,
61+
"character": 48
62+
}
63+
},
64+
"severity": 1,
65+
"source": "ts",
66+
"message": "Type 'Component' is not assignable to type 'OtherComponent'.\n Type '{ prop: boolean; }' is not assignable to type '{ prop: string; }'.\n Types of property 'prop' are incompatible.\n Type 'boolean' is not assignable to type 'string'.",
67+
"code": 2322,
68+
"tags": []
69+
},
70+
{
71+
"range": {
72+
"start": {
73+
"line": 42,
74+
"character": 35
75+
},
76+
"end": {
77+
"line": 42,
78+
"character": 57
79+
}
80+
},
81+
"severity": 1,
82+
"source": "ts",
83+
"message": "Type 'ComponentWithFunction1' is not assignable to type 'ComponentWithFunction2'.\n Types of property 'action' are incompatible.\n Type '(a: number) => string | number' is not assignable to type '() => string'.",
84+
"code": 2322,
85+
"tags": []
86+
},
87+
{
88+
"range": {
89+
"start": {
90+
"line": 43,
91+
"character": 1
92+
},
93+
"end": {
94+
"line": 43,
95+
"character": 17
96+
}
97+
},
98+
"severity": 1,
99+
"source": "ts",
100+
"message": "Property 'prop' is missing in type '{}' but required in type '{ prop: boolean; }'.",
101+
"code": 2741,
102+
"tags": []
103+
},
104+
{
105+
"range": {
106+
"start": {
107+
"line": 43,
108+
"character": 46
109+
},
110+
"end": {
111+
"line": 43,
112+
"character": 60
113+
}
114+
},
115+
"severity": 1,
116+
"source": "ts",
117+
"message": "Type 'Component' is not assignable to type 'OtherComponent'.",
118+
"code": 2322,
119+
"tags": []
120+
},
121+
{
122+
"range": {
123+
"start": {
124+
"line": 46,
125+
"character": 45
126+
},
127+
"end": {
128+
"line": 46,
129+
"character": 65
130+
}
131+
},
132+
"severity": 1,
133+
"source": "ts",
134+
"message": "Type 'ComponentWithGeneric<boolean>' is not assignable to type 'ComponentWithGeneric<string>'.\n Type 'boolean' is not assignable to type 'string'.",
135+
"code": 2322,
136+
"tags": []
137+
},
138+
{
139+
"range": {
140+
"start": {
141+
"line": 47,
142+
"character": 1
143+
},
144+
"end": {
145+
"line": 47,
146+
"character": 17
147+
}
148+
},
149+
"severity": 1,
150+
"source": "ts",
151+
"message": "Property 'prop' is missing in type '{}' but required in type '{ prop: boolean; }'.",
152+
"code": 2741,
153+
"tags": []
154+
}
155+
]

packages/language-server/test/plugins/typescript/features/diagnostics/fixtures/bind-this/expectedv2.json

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
[
22
{
33
"range": {
4-
"start": { "line": 14, "character": 6 },
5-
"end": { "line": 14, "character": 13 }
4+
"start": { "line": 9, "character": 6 },
5+
"end": { "line": 9, "character": 13 }
66
},
77
"severity": 4,
88
"source": "ts",
@@ -12,8 +12,8 @@
1212
},
1313
{
1414
"range": {
15-
"start": { "line": 23, "character": 2 },
16-
"end": { "line": 23, "character": 11 }
15+
"start": { "line": 18, "character": 2 },
16+
"end": { "line": 18, "character": 11 }
1717
},
1818
"severity": 1,
1919
"source": "ts",
@@ -23,8 +23,8 @@
2323
},
2424
{
2525
"range": {
26-
"start": { "line": 45, "character": 16 },
27-
"end": { "line": 45, "character": 23 }
26+
"start": { "line": 40, "character": 16 },
27+
"end": { "line": 40, "character": 23 }
2828
},
2929
"severity": 1,
3030
"source": "ts",
@@ -34,8 +34,8 @@
3434
},
3535
{
3636
"range": {
37-
"start": { "line": 46, "character": 34 },
38-
"end": { "line": 46, "character": 48 }
37+
"start": { "line": 41, "character": 34 },
38+
"end": { "line": 41, "character": 48 }
3939
},
4040
"severity": 1,
4141
"source": "ts",
@@ -45,8 +45,8 @@
4545
},
4646
{
4747
"range": {
48-
"start": { "line": 47, "character": 35 },
49-
"end": { "line": 47, "character": 57 }
48+
"start": { "line": 42, "character": 35 },
49+
"end": { "line": 42, "character": 57 }
5050
},
5151
"severity": 1,
5252
"source": "ts",
@@ -56,8 +56,8 @@
5656
},
5757
{
5858
"range": {
59-
"start": { "line": 48, "character": 1 },
60-
"end": { "line": 48, "character": 17 }
59+
"start": { "line": 43, "character": 1 },
60+
"end": { "line": 43, "character": 17 }
6161
},
6262
"severity": 1,
6363
"source": "ts",
@@ -67,8 +67,8 @@
6767
},
6868
{
6969
"range": {
70-
"start": { "line": 48, "character": 46 },
71-
"end": { "line": 48, "character": 60 }
70+
"start": { "line": 43, "character": 46 },
71+
"end": { "line": 43, "character": 60 }
7272
},
7373
"severity": 1,
7474
"source": "ts",
@@ -78,8 +78,8 @@
7878
},
7979
{
8080
"range": {
81-
"start": { "line": 51, "character": 45 },
82-
"end": { "line": 51, "character": 65 }
81+
"start": { "line": 46, "character": 45 },
82+
"end": { "line": 46, "character": 65 }
8383
},
8484
"severity": 1,
8585
"source": "ts",
@@ -89,8 +89,8 @@
8989
},
9090
{
9191
"range": {
92-
"start": { "line": 52, "character": 1 },
93-
"end": { "line": 52, "character": 17 }
92+
"start": { "line": 47, "character": 1 },
93+
"end": { "line": 47, "character": 17 }
9494
},
9595
"severity": 1,
9696
"source": "ts",

0 commit comments

Comments
 (0)