Skip to content

Commit ec5fef4

Browse files
authored
chore: bump magic-string (#2476)
requires adjustments of mapping tests and a fix in the InlayHintProvider, because more things are mappable now
1 parent 6a05963 commit ec5fef4

File tree

16 files changed

+503
-179
lines changed

16 files changed

+503
-179
lines changed

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

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import ts from 'typescript';
1+
import ts, { ArrowFunction } from 'typescript';
22
import { CancellationToken } from 'vscode-languageserver';
33
import {
44
Position,
@@ -69,6 +69,7 @@ export class InlayHintProviderImpl implements InlayHintProvider {
6969
inlayHint.position !== renderFunctionReturnTypeLocation &&
7070
!this.isSvelte2tsxFunctionHints(sourceFile, inlayHint) &&
7171
!this.isGeneratedVariableTypeHint(sourceFile, inlayHint) &&
72+
!this.isGeneratedAsyncFunctionReturnType(sourceFile, inlayHint) &&
7273
!this.isGeneratedFunctionReturnType(sourceFile, inlayHint)
7374
)
7475
.map(async (inlayHint) => ({
@@ -254,6 +255,29 @@ export class InlayHintProviderImpl implements InlayHintProvider {
254255
);
255256
}
256257

258+
/** `true` if is one of the `async () => {...}` functions svelte2tsx generates */
259+
private isGeneratedAsyncFunctionReturnType(sourceFile: ts.SourceFile, inlayHint: ts.InlayHint) {
260+
if (inlayHint.kind !== ts.InlayHintKind.Type) {
261+
return false;
262+
}
263+
264+
const expression = findContainingNode(
265+
sourceFile,
266+
{ start: inlayHint.position, length: 0 },
267+
(node): node is ArrowFunction => ts.isArrowFunction(node)
268+
);
269+
270+
if (
271+
!expression?.modifiers?.some((m) => m.kind === ts.SyntaxKind.AsyncKeyword) ||
272+
!expression.parent?.parent ||
273+
!ts.isBlock(expression.parent.parent)
274+
) {
275+
return false;
276+
}
277+
278+
return this.getTypeAnnotationPosition(expression) === inlayHint.position;
279+
}
280+
257281
private isGeneratedFunctionReturnType(sourceFile: ts.SourceFile, inlayHint: ts.InlayHint) {
258282
if (inlayHint.kind !== ts.InlayHintKind.Type) {
259283
return false;

packages/svelte2tsx/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@
3131
"@types/vfile": "^3.0.2",
3232
"builtin-modules": "^3.3.0",
3333
"estree-walker": "^2.0.1",
34-
"magic-string": "^0.27.0",
34+
"magic-string": "^0.30.11",
3535
"mocha": "^9.2.0",
3636
"periscopic": "^2.0.2",
3737
"rollup": "3.7.5",

packages/svelte2tsx/test/sourcemaps/samples/action-directive/mappings.jsx

Lines changed: 20 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,12 @@ async•()•=>•{•{const•$$action_0•=•__sveltets_2_ensureAction(action
77
< action/ element su ↲
88
#================================================================== # Order-breaking mappings
99
<element us action/ ↲
10-
<element•use:action/>↲ [original] line 1
10+
<element•use:action/>↲ [original] line 1 (rest generated at line 4)
1111
------------------------------------------------------------------------------------------------------------------------------------------------------ */}
1212
{/**
13-
13+
↲ [generated] line 4
14+
15+
<element•use:action/>↲ [original] line 1 (rest generated at line 3)
1416
------------------------------------------------------------------------------------------------------------------------------------------------------ */}
1517
{const $$action_0 = __sveltets_2_ensureAction(action(svelteHTML.mapElementTag('element')));{ svelteHTML.createElement("element", __sveltets_2_union($$action_0), { });}}{/**
1618
•{const•$$action_0•=•__sveltets_2_ensureAction(action(svelteHTML.mapElementTag('element')));{•svelteHTML.createElement("element",•__sveltets_2_union($$action_0),•{••});}}↲ [generated] line 5
@@ -30,27 +32,31 @@ async•()•=>•{•{const•$$action_0•=•__sveltets_2_ensureAction(action
3032
• ↲ [generated] subset
3133
/ ↲
3234
/ ↲
33-
/>↲ [original] line 5
35+
/>↲ [original] line 5 (rest generated at line 6)
3436
------------------------------------------------------------------------------------------------------------------------------------------------------ */}
3537
{/**
36-
38+
↲ [generated] line 6
39+
40+
/>↲ [original] line 5 (rest generated at line 5)
3741
------------------------------------------------------------------------------------------------------------------------------------------------------ */}
3842
{const $$action_0 = __sveltets_2_ensureAction(action.nested.method(svelteHTML.mapElementTag('element'),(foo)));{ svelteHTML.createElement("element", __sveltets_2_union($$action_0), { });}}{/**
3943
••{const•$$action_0•=•__sveltets_2_ensureAction(action.nested.method(svelteHTML.mapElementTag('element'),(foo)));{•svelteHTML.createElement("element",•__sveltets_2_union($$action_0),•{••});}}↲ [generated] line 7
4044
<> action.nested.method= foo} element s{u ↲
4145
#============================================== #=============================== # Order-breaking mappings
4246
<element us action.nested.method={foo} >↲
43-
<element•use:action.nested.method={foo}/>↲ [original] line 7
47+
<element•use:action.nested.method={foo}/>↲ [original] line 7 (rest generated at line 8)
4448
------------------------------------------------------------------------------------------------------------------------------------------------------ */}
4549
{/**
46-
50+
↲ [generated] line 8
51+
52+
<element•use:action.nested.method={foo}/>↲ [original] line 7 (rest generated at line 7)
4753
------------------------------------------------------------------------------------------------------------------------------------------------------ */}
4854
{const $$action_0 = __sveltets_2_ensureAction(action(svelteHTML.mapElementTag('element'),($foo)));{ svelteHTML.createElement("element", __sveltets_2_union($$action_0), { });}}{/**
4955
•{const•$$action_0•=•__sveltets_2_ensureAction(action(svelteHTML.mapElementTag('element'),($foo)));{•svelteHTML.createElement("element",•__sveltets_2_union($$action_0),•{•••});}}↲ [generated] line 9
5056
• ↲ [generated] subset
5157
/ ↲
5258
/ ↲
53-
/>↲ [original] line 11
59+
/>↲ [original] line 11 (rest generated at line 10)
5460
5561
•{const•$$action_0•=•__sveltets_2_ensureAction(action(svelteHTML.mapElementTag('element'),($foo)));{•svelteHTML.createElement("element",•__sveltets_2_union($$action_0),•{•••});}}↲ [generated] line 9
5662
{const•$$action_0•=•__sveltets_2_ensureAction( element",•__sveltets_2_union($$action_0),•{ });}} [generated] subset
@@ -66,7 +72,9 @@ async•()•=>•{•{const•$$action_0•=•__sveltets_2_ensureAction(action
6672
╚use:action={$foo}↲ [original] line 10
6773
------------------------------------------------------------------------------------------------------------------------------------------------------ */}
6874
{/**
69-
75+
↲ [generated] line 10
76+
77+
/>↲ [original] line 11 (rest generated at line 9)
7078
------------------------------------------------------------------------------------------------------------------------------------------------------ */}
7179
{const $$action_0 = __sveltets_2_ensureAction(action(svelteHTML.mapElementTag('element'),({ foo })));{ svelteHTML.createElement("element", __sveltets_2_union($$action_0), { });}}{/**
7280
•{const•$$action_0•=•__sveltets_2_ensureAction(action(svelteHTML.mapElementTag('element'),({•foo•})));{•svelteHTML.createElement("element",•__sveltets_2_union($$action_0),•{•••});}}↲ [generated] line 11
@@ -86,10 +94,12 @@ async•()•=>•{•{const•$$action_0•=•__sveltets_2_ensureAction(action
8694
• ↲ [generated] subset
8795
/ ↲
8896
/ ↲
89-
/>↲ [original] line 15
97+
/>↲ [original] line 15 (rest generated at line 12)
9098
------------------------------------------------------------------------------------------------------------------------------------------------------ */}
9199
{/**
92-
100+
↲ [generated] line 12
101+
102+
/>↲ [original] line 15 (rest generated at line 11)
93103
------------------------------------------------------------------------------------------------------------------------------------------------------ */}
94104
{const $$action_0 = __sveltets_2_ensureAction(action(svelteHTML.mapElementTag('element'),({ {/**
95105
•{const•$$action_0•=•__sveltets_2_ensureAction(action(svelteHTML.mapElementTag('element'),({•↲ [generated] line 13

0 commit comments

Comments
 (0)