Skip to content

Commit 751462e

Browse files
a-tarasyukBobobUnicorn
authored andcommitted
feat(43963): change var to a parameter in destructured function parameters (microsoft#44767)
1 parent 41f3011 commit 751462e

6 files changed

+31
-26
lines changed

src/services/utilities.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2059,7 +2059,9 @@ namespace ts {
20592059
// Display-part writer helpers
20602060
// #region
20612061
export function isFirstDeclarationOfSymbolParameter(symbol: Symbol) {
2062-
return symbol.declarations && symbol.declarations.length > 0 && symbol.declarations[0].kind === SyntaxKind.Parameter;
2062+
const declaration = symbol.declarations ? firstOrUndefined(symbol.declarations) : undefined;
2063+
return !!findAncestor(declaration, n =>
2064+
isParameter(n) ? true : isBindingElement(n) || isObjectBindingPattern(n) || isArrayBindingPattern(n) ? false : "quit");
20632065
}
20642066

20652067
const displayPartWriter = getDisplayPartWriter();

tests/cases/fourslash/findAllReferencesDynamicImport3.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ const [r0Def, r0, r1Def, r1] = test.ranges();
88
verify.referenceGroups(r0, [{ definition: "function bar(): string", ranges: [r0, r1] }]);
99
verify.referenceGroups(r1, [
1010
{ definition: "function bar(): string", ranges: [r0] },
11-
{ definition: "var bar: () => string", ranges: [r1] },
11+
{ definition: "(parameter) bar: () => string", ranges: [r1] },
1212
]);
1313
verify.renameLocations(r0, [r0, { range: r1, suffixText: ": bar" }]);
1414
verify.renameLocations(r1, [{ range: r1, prefixText: "bar: " }])

tests/cases/fourslash/findAllRefsObjectBindingElementPropertyName04.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,6 @@ const [r0Def, r0, r1Def, r1, r2Def, r2, r3] = test.ranges();
1616
verify.referenceGroups([r0, r1], [{ definition: "(property) I.property1: number", ranges: [r0, r1, r2] }]);
1717
verify.referenceGroups(r2, [
1818
{ definition: "(property) I.property1: number", ranges: [r0, r1] },
19-
{ definition: "var property1: number", ranges: [r2, r3] },
19+
{ definition: "(parameter) property1: number", ranges: [r2, r3] },
2020
]);
21-
verify.referenceGroups(r3, [{ definition: "var property1: number", ranges: [r2, r3] }]);
21+
verify.referenceGroups(r3, [{ definition: "(parameter) property1: number", ranges: [r2, r3] }]);
Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,18 @@
11
/// <reference path='fourslash.ts'/>
22

3-
// Repros from issues #4949 and #4818
4-
5-
////const result = [{ foo: 'hello' }]
6-
//// .map(({ /*1*/foo }) => /*2*/foo)
7-
//// .map(foo => foo);
3+
////const result = [{ a: 'hello' }]
4+
//// .map(({ /*1*/a }) => /*2*/a)
5+
//// .map(a => a);
86
////
9-
////const f = (foo: (bar: string[]) => void) => { };
7+
////const f1 = (a: (b: string[]) => void) => {};
8+
////f1(([a, b]) => { /*3*/a.charAt(0); });
109
////
11-
////f(([a, b]) => {
12-
//// /*3*/a.charAt(0); // Not okay: inferred as `any`
13-
////});
10+
////function f2({/*4*/a }: { a: string; }, [/*5*/b]: [string]) {}
1411

1512
verify.quickInfos({
16-
1: "var foo: string",
17-
2: "var foo: string",
18-
3: "var a: string"
13+
1: "(parameter) a: string",
14+
2: "(parameter) a: string",
15+
3: "(parameter) a: string",
16+
4: "(parameter) a: string",
17+
5: "(parameter) b: string"
1918
});
Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,13 @@
11
/// <reference path='fourslash.ts'/>
22

3-
////[[{foo: 'hello', bar: [1]}]]
4-
//// .map(([{foo, bar: [baz]}]) => /*1*/foo + /*2*/baz);
3+
////[[{ a: 'hello', b: [1] }]]
4+
//// .map(([{ a, b: [c] }]) => /*1*/a + /*2*/c);
5+
6+
////function f([[/*3*/a]]: [[string]], { b1: { /*4*/b2 } }: { b1: { b2: string; } }) {}
57

68
verify.quickInfos({
7-
1: "var foo: string",
8-
2: "var baz: number"
9+
1: "(parameter) a: string",
10+
2: "(parameter) c: number",
11+
3: "(parameter) a: string",
12+
4: "(parameter) b2: string"
913
});

tests/cases/fourslash/quickInfoForContextuallyTypedIife.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,13 @@
99
////((a/*9*/, b/*10*/, c/*11*/) => [a/*12*/,b/*13*/,c/*14*/])("foo", 101, false);
1010

1111
verify.quickInfos({
12-
1: "var q: number",
13-
2: "var qq: number",
12+
1: "(parameter) q: number",
13+
2: "(parameter) qq: number",
1414
3: "(parameter) x: number",
15-
4: "var p: number",
16-
5: "var q: number",
17-
6: "var qq: number",
18-
7: "var p: number",
15+
4: "(parameter) p: number",
16+
5: "(parameter) q: number",
17+
6: "(parameter) qq: number",
18+
7: "(parameter) p: number",
1919
8: "(parameter) x: number",
2020
9: "(parameter) a: string",
2121
10: "(parameter) b: number",

0 commit comments

Comments
 (0)