mirror of
https://github.com/microsoft/TypeScript.git
synced 2026-02-05 08:11:30 -06:00
feat(43963): change var to a parameter in destructured function parameters (#44767)
This commit is contained in:
parent
e263fcebf8
commit
424464d46b
@ -2059,7 +2059,9 @@ namespace ts {
|
||||
// Display-part writer helpers
|
||||
// #region
|
||||
export function isFirstDeclarationOfSymbolParameter(symbol: Symbol) {
|
||||
return symbol.declarations && symbol.declarations.length > 0 && symbol.declarations[0].kind === SyntaxKind.Parameter;
|
||||
const declaration = symbol.declarations ? firstOrUndefined(symbol.declarations) : undefined;
|
||||
return !!findAncestor(declaration, n =>
|
||||
isParameter(n) ? true : isBindingElement(n) || isObjectBindingPattern(n) || isArrayBindingPattern(n) ? false : "quit");
|
||||
}
|
||||
|
||||
const displayPartWriter = getDisplayPartWriter();
|
||||
|
||||
@ -8,7 +8,7 @@ const [r0Def, r0, r1Def, r1] = test.ranges();
|
||||
verify.referenceGroups(r0, [{ definition: "function bar(): string", ranges: [r0, r1] }]);
|
||||
verify.referenceGroups(r1, [
|
||||
{ definition: "function bar(): string", ranges: [r0] },
|
||||
{ definition: "var bar: () => string", ranges: [r1] },
|
||||
{ definition: "(parameter) bar: () => string", ranges: [r1] },
|
||||
]);
|
||||
verify.renameLocations(r0, [r0, { range: r1, suffixText: ": bar" }]);
|
||||
verify.renameLocations(r1, [{ range: r1, prefixText: "bar: " }])
|
||||
|
||||
@ -16,6 +16,6 @@ const [r0Def, r0, r1Def, r1, r2Def, r2, r3] = test.ranges();
|
||||
verify.referenceGroups([r0, r1], [{ definition: "(property) I.property1: number", ranges: [r0, r1, r2] }]);
|
||||
verify.referenceGroups(r2, [
|
||||
{ definition: "(property) I.property1: number", ranges: [r0, r1] },
|
||||
{ definition: "var property1: number", ranges: [r2, r3] },
|
||||
{ definition: "(parameter) property1: number", ranges: [r2, r3] },
|
||||
]);
|
||||
verify.referenceGroups(r3, [{ definition: "var property1: number", ranges: [r2, r3] }]);
|
||||
verify.referenceGroups(r3, [{ definition: "(parameter) property1: number", ranges: [r2, r3] }]);
|
||||
|
||||
@ -1,19 +1,18 @@
|
||||
/// <reference path='fourslash.ts'/>
|
||||
|
||||
// Repros from issues #4949 and #4818
|
||||
|
||||
////const result = [{ foo: 'hello' }]
|
||||
//// .map(({ /*1*/foo }) => /*2*/foo)
|
||||
//// .map(foo => foo);
|
||||
////const result = [{ a: 'hello' }]
|
||||
//// .map(({ /*1*/a }) => /*2*/a)
|
||||
//// .map(a => a);
|
||||
////
|
||||
////const f = (foo: (bar: string[]) => void) => { };
|
||||
////const f1 = (a: (b: string[]) => void) => {};
|
||||
////f1(([a, b]) => { /*3*/a.charAt(0); });
|
||||
////
|
||||
////f(([a, b]) => {
|
||||
//// /*3*/a.charAt(0); // Not okay: inferred as `any`
|
||||
////});
|
||||
////function f2({/*4*/a }: { a: string; }, [/*5*/b]: [string]) {}
|
||||
|
||||
verify.quickInfos({
|
||||
1: "var foo: string",
|
||||
2: "var foo: string",
|
||||
3: "var a: string"
|
||||
1: "(parameter) a: string",
|
||||
2: "(parameter) a: string",
|
||||
3: "(parameter) a: string",
|
||||
4: "(parameter) a: string",
|
||||
5: "(parameter) b: string"
|
||||
});
|
||||
|
||||
@ -1,9 +1,13 @@
|
||||
/// <reference path='fourslash.ts'/>
|
||||
|
||||
////[[{foo: 'hello', bar: [1]}]]
|
||||
//// .map(([{foo, bar: [baz]}]) => /*1*/foo + /*2*/baz);
|
||||
////[[{ a: 'hello', b: [1] }]]
|
||||
//// .map(([{ a, b: [c] }]) => /*1*/a + /*2*/c);
|
||||
|
||||
////function f([[/*3*/a]]: [[string]], { b1: { /*4*/b2 } }: { b1: { b2: string; } }) {}
|
||||
|
||||
verify.quickInfos({
|
||||
1: "var foo: string",
|
||||
2: "var baz: number"
|
||||
1: "(parameter) a: string",
|
||||
2: "(parameter) c: number",
|
||||
3: "(parameter) a: string",
|
||||
4: "(parameter) b2: string"
|
||||
});
|
||||
|
||||
@ -9,13 +9,13 @@
|
||||
////((a/*9*/, b/*10*/, c/*11*/) => [a/*12*/,b/*13*/,c/*14*/])("foo", 101, false);
|
||||
|
||||
verify.quickInfos({
|
||||
1: "var q: number",
|
||||
2: "var qq: number",
|
||||
1: "(parameter) q: number",
|
||||
2: "(parameter) qq: number",
|
||||
3: "(parameter) x: number",
|
||||
4: "var p: number",
|
||||
5: "var q: number",
|
||||
6: "var qq: number",
|
||||
7: "var p: number",
|
||||
4: "(parameter) p: number",
|
||||
5: "(parameter) q: number",
|
||||
6: "(parameter) qq: number",
|
||||
7: "(parameter) p: number",
|
||||
8: "(parameter) x: number",
|
||||
9: "(parameter) a: string",
|
||||
10: "(parameter) b: number",
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user