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)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy