Skip to content

Commit f5f2d24

Browse files
committed
Add tests for JS-inferred rest parameters
1 parent 4e927bd commit f5f2d24

File tree

3 files changed

+44
-5
lines changed

3 files changed

+44
-5
lines changed
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
// @checkJs: true
2+
// @allowJs: true
3+
// @Filename: main.js
4+
// @noemit: true
5+
function allRest() { arguments; }
6+
allRest();
7+
allRest(1, 2, 3);
8+
function someRest(x, y) { arguments; }
9+
someRest(); // x and y are still optional because they are in a JS file
10+
someRest(1, 2, 3);
11+
12+
/**
13+
* @param {number} x - a thing
14+
*/
15+
function jsdocced(x) { arguments; }
16+
jsdocced(1);
17+
18+
function dontDoubleRest(x, ...y) { arguments; }
19+
dontDoubleRest(1, 2, 3);
20+
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
// @Filename: foo.js
2+
// @noEmit: true
3+
// @allowJs: true
4+
// Test #16139
5+
function Foo() {
6+
arguments;
7+
return new Foo();
8+
}

tests/cases/fourslash/signatureHelpCallExpressionJs.ts

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,25 @@
44
// @allowJs: true
55

66
// @Filename: main.js
7-
////function fnTest() { arguments; }
8-
////fnTest(/*1*/);
9-
////fnTest(1, 2, 3);
7+
////function allOptional() { arguments; }
8+
////allOptional(/*1*/);
9+
////allOptional(1, 2, 3);
10+
////function someOptional(x, y) { arguments; }
11+
////someOptional(/*2*/);
12+
////someOptional(1, 2, 3);
13+
////someOptional(); // no error here; x and y are optional in JS
1014

1115
goTo.marker('1');
1216
verify.signatureHelpCountIs(1);
1317
verify.currentSignatureParameterCountIs(1);
14-
verify.currentSignatureHelpIs('fnTest(...args: any[]): void');
18+
verify.currentSignatureHelpIs('allOptional(...args: any[]): void');
1519
verify.currentParameterHelpArgumentNameIs('args');
1620
verify.currentParameterSpanIs("...args: any[]");
17-
verify.numberOfErrorsInCurrentFile(0);
21+
22+
goTo.marker('2');
23+
verify.signatureHelpCountIs(1);
24+
verify.currentSignatureParameterCountIs(3);
25+
verify.currentSignatureHelpIs('someOptional(x: any, y: any, ...args: any[]): void');
26+
verify.currentParameterHelpArgumentNameIs('x');
27+
verify.currentParameterSpanIs("x: any");
28+
verify.numberOfErrorsInCurrentFile(0);

0 commit comments

Comments
 (0)