TypeScript/tests/cases/fourslash/contextuallyTypedParameters.ts
Wesley Wigham 5f597e69b2
Support naming tuple members (#38234)
* Initial draft of named tuple members

* Show tuple labels and documentation in completions

* Swap allowed syntax to parameter-like

* Add quickfix for labeled tuple syntax mistakes

* Add refactoring to convert list of signatures to single overload

* Fix small bug in visitor verification

* Signature help for rest parameters which are unions of tuples are displayed as seperate entries now

* Expand sanity check test cases in conformance suite

* Add tests and code for preserving tuple names through spreads where possible

* More refactoring tests, some comment preservation and some fixed formatting of multiline tuples

* Handle missing parameter named in isValidDeclarationForTupleLabel

* Minor text fixes
2020-05-19 15:54:02 -07:00

61 lines
1.5 KiB
TypeScript

/// <reference path='fourslash.ts' />
////declare function foo(cb: (this: any, x: number, y: string, z: boolean) => void): void;
////
////foo(function(this, a, ...args) {
//// a/*10*/;
//// args/*11*/;
////});
////
////foo(function(this, a, b, ...args) {
//// a/*20*/;
//// b/*21*/;
//// args/*22*/;
////});
////
////foo(function(this, a, b, c, ...args) {
//// a/*30*/;
//// b/*31*/;
//// c/*32*/;
//// args/*33*/;
////});
////
////foo(function(a, ...args) {
//// a/*40*/;
//// args/*41*/;
////});
////
////foo(function(a, b, ...args) {
//// a/*50*/;
//// b/*51*/;
//// args/*52*/;
////});
////
////foo(function(a, b, c, ...args) {
//// a/*60*/;
//// b/*61*/;
//// c/*62*/;
//// args/*63*/;
////});
verify.quickInfos({
10: "(parameter) a: number",
11: "(parameter) args: [y: string, z: boolean]",
20: "(parameter) a: number",
21: "(parameter) b: string",
22: "(parameter) args: [z: boolean]",
30: "(parameter) a: number",
31: "(parameter) b: string",
32: "(parameter) c: boolean",
33: "(parameter) args: []",
40: "(parameter) a: number",
41: "(parameter) args: [y: string, z: boolean]",
50: "(parameter) a: number",
51: "(parameter) b: string",
52: "(parameter) args: [z: boolean]",
60: "(parameter) a: number",
61: "(parameter) b: string",
62: "(parameter) c: boolean",
63: "(parameter) args: []",
});