Skip to content

Commit 3f2da5d

Browse files
authored
feat: TypeScript 5.7 support (#2585)
* feat: typescript 5.7 support * bumps to stable * update svelte 5 snapshot
1 parent 1e9cbd3 commit 3f2da5d

File tree

18 files changed

+97
-55
lines changed

18 files changed

+97
-55
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
"lint": "prettier --check ."
1414
},
1515
"dependencies": {
16-
"typescript": "~5.6.3"
16+
"typescript": "^5.7.2"
1717
},
1818
"devDependencies": {
1919
"cross-env": "^7.0.2",

packages/language-server/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@
6262
"prettier-plugin-svelte": "^3.3.0",
6363
"svelte": "^4.2.19",
6464
"svelte2tsx": "workspace:~",
65-
"typescript": "~5.6.3",
65+
"typescript": "^5.7.2",
6666
"typescript-auto-import-cache": "^0.3.5",
6767
"vscode-css-languageservice": "~6.3.0",
6868
"vscode-html-languageservice": "~5.3.0",

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

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -807,7 +807,11 @@ export class CompletionsProviderImpl implements CompletionsProvider<CompletionRe
807807
}
808808

809809
const isNewIdentifierLocation = response.isNewIdentifierLocation;
810-
let defaultCommitCharacters = response.defaultCommitCharacters;
810+
// TypeScript 5.7+ reused the same array for different completions
811+
let defaultCommitCharacters = response.defaultCommitCharacters
812+
? Array.from(response.defaultCommitCharacters)
813+
: undefined;
814+
811815
if (!isNewIdentifierLocation) {
812816
// This actually always exists although it's optional in the type, at least in ts 5.6,
813817
// so our commit characters are mostly fallback for older ts versions

packages/language-server/test/plugins/typescript/features/diagnostics/fixtures/accessors-customElement-configs/input.svelte

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,6 @@
1010
$: c.abc = a.abc = ao.abc = '';
1111
</script>
1212

13-
<CustomElement />
14-
<Accessors />
15-
<AccessorsAndOption />
13+
<CustomElement bind:this={c} />
14+
<Accessors bind:this={a} />
15+
<AccessorsAndOption bind:this={ao} />

packages/language-server/test/plugins/typescript/features/diagnostics/fixtures/checkjs-nostrict/each-anytype/input.svelte

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,10 @@
11
<script>
22
let anyType;
3+
4+
async function load() {
5+
anyType = (await (await fetch('')).json());
6+
}
7+
load();
38
</script>
49

510
{#each anyType as anyEntry}

packages/language-server/test/plugins/typescript/features/diagnostics/fixtures/component-invalid/expected_svelte_5.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
},
1818
"severity": 1,
1919
"source": "ts",
20-
"message": "Type 'boolean' is not assignable to type 'never'.",
20+
"message": "Type 'true' is not assignable to type 'never'.",
2121
"code": 2322,
2222
"tags": []
2323
},

packages/language-server/test/plugins/typescript/features/diagnostics/fixtures/component-invalid/expectedv2.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
},
1818
"severity": 1,
1919
"source": "ts",
20-
"message": "Type 'boolean' is not assignable to type 'never'.",
20+
"message": "Type 'true' is not assignable to type 'never'.",
2121
"code": 2322,
2222
"tags": []
2323
},

packages/language-server/test/plugins/typescript/features/diagnostics/fixtures/const-tag-if/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": 21, "character": 19 },
5-
"end": { "line": 21, "character": 26 }
4+
"start": { "line": 25, "character": 19 },
5+
"end": { "line": 25, "character": 26 }
66
},
77
"severity": 1,
88
"source": "ts",
@@ -12,8 +12,8 @@
1212
},
1313
{
1414
"range": {
15-
"start": { "line": 21, "character": 40 },
16-
"end": { "line": 21, "character": 47 }
15+
"start": { "line": 25, "character": 40 },
16+
"end": { "line": 25, "character": 47 }
1717
},
1818
"severity": 1,
1919
"source": "ts",
@@ -23,8 +23,8 @@
2323
},
2424
{
2525
"range": {
26-
"start": { "line": 23, "character": 11 },
27-
"end": { "line": 23, "character": 20 }
26+
"start": { "line": 27, "character": 11 },
27+
"end": { "line": 27, "character": 20 }
2828
},
2929
"severity": 1,
3030
"source": "ts",
@@ -34,8 +34,8 @@
3434
},
3535
{
3636
"range": {
37-
"start": { "line": 25, "character": 11 },
38-
"end": { "line": 25, "character": 18 }
37+
"start": { "line": 29, "character": 11 },
38+
"end": { "line": 29, "character": 18 }
3939
},
4040
"severity": 1,
4141
"source": "ts",

packages/language-server/test/plugins/typescript/features/diagnostics/fixtures/const-tag-if/input.svelte

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
<script lang="ts">
22
let value: string | number | boolean;
3+
4+
function handleClick() {
5+
value = 'hello';
6+
}
37
</script>
48

59
<!-- valid -->
@@ -9,7 +13,7 @@
913

1014
<div>{valueStr.substring(0)}{valueStr2.substring(0)}</div>
1115

12-
<button on:click={() => {valueStr.substring(0)}}></button>
16+
<button on:click={() => {valueStr.substring(0) && handleClick()}}></button>
1317
{:else if typeof value === 'number'}
1418
{value.toFixed()}
1519
{/if}
@@ -24,4 +28,4 @@
2428
{value.substring(0)}
2529
{:else}
2630
{value.toFixed()}
27-
{/if}
31+
{/if}

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

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,22 @@
11
[
22
{
3-
"range": { "start": { "line": 3, "character": 4 }, "end": { "line": 3, "character": 6 } },
3+
"range": { "start": { "line": 5, "character": 4 }, "end": { "line": 5, "character": 6 } },
4+
"severity": 1,
5+
"source": "ts",
6+
"message": "Variable 'hi' is used before being assigned.",
7+
"code": 2454,
8+
"tags": []
9+
},
10+
{
11+
"range": { "start": { "line": 7, "character": 4 }, "end": { "line": 7, "character": 7 } },
12+
"severity": 1,
13+
"source": "ts",
14+
"message": "Variable 'hi3' is used before being assigned.",
15+
"code": 2454,
16+
"tags": []
17+
},
18+
{
19+
"range": { "start": { "line": 16, "character": 1 }, "end": { "line": 16, "character": 3 } },
420
"severity": 1,
521
"source": "ts",
622
"message": "Variable 'hi' is used before being assigned.",

0 commit comments

Comments
 (0)