Skip to content

Commit 3f8a69d

Browse files
committed
Code review changes and simplification of diagnostic message
1 parent 922697f commit 3f8a69d

File tree

5 files changed

+18
-20
lines changed

5 files changed

+18
-20
lines changed

src/compiler/checker.ts

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -19061,22 +19061,20 @@ namespace ts {
1906119061
max = Math.max(max, maxCount);
1906219062
}
1906319063

19064+
const hasRestParameter = some(signatures, hasEffectiveRestParameter);
19065+
const paramRange = hasRestParameter ? min :
19066+
min < max ? min + "-" + max :
19067+
min;
1906419068
const hasSpreadArgument = getSpreadArgumentIndex(args) > -1;
1906519069
if (argCount <= max && hasSpreadArgument) argCount--;
1906619070

19067-
const hasRestParameter = some(signatures, (sig: Signature) => sig.hasRestParameter);
19068-
const paramRange: string | number = hasRestParameter ?
19069-
min :
19070-
min < max ?
19071-
min + "-" + max :
19072-
min;
1907319071
if (hasRestParameter || hasSpreadArgument) {
1907419072
const error = hasRestParameter && hasSpreadArgument ? Diagnostics.Expected_at_least_0_arguments_but_got_1_or_more :
1907519073
hasRestParameter ? Diagnostics.Expected_at_least_0_arguments_but_got_1 : Diagnostics.Expected_0_arguments_but_got_1_or_more;
1907619074
diagnostics.add(createDiagnosticForNode(node, error, paramRange, argCount));
1907719075
}
1907819076
else if (min < argCount && argCount < max) {
19079-
diagnostics.add(createDiagnosticForNode(node, Diagnostics.No_overload_expects_0_arguments_but_overloads_do_exist_that_expect_either_1_or_at_least_2_arguments, argCount, belowArgCount, aboveArgCount));
19077+
diagnostics.add(createDiagnosticForNode(node, Diagnostics.No_overload_expects_0_arguments_but_overloads_do_exist_that_expect_either_1_or_2_arguments, argCount, belowArgCount, aboveArgCount));
1908019078
}
1908119079
else {
1908219080
diagnostics.add(createDiagnosticForNode(node, Diagnostics.Expected_0_arguments_but_got_1, paramRange, argCount));

src/compiler/diagnosticMessages.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2056,7 +2056,7 @@
20562056
"category": "Error",
20572057
"code": 2574
20582058
},
2059-
"No overload expects {0} arguments, but overloads do exist that expect either {1} or at least {2} arguments.": {
2059+
"No overload expects {0} arguments, but overloads do exist that expect either {1} or {2} arguments.": {
20602060
"category": "Error",
20612061
"code": 2575
20622062
},

tests/baselines/reference/functionParameterArityMismatch.errors.txt

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
tests/cases/compiler/functionParameterArityMismatch.ts(3,1): error TS2554: Expected 1-3 arguments, but got 0.
2-
tests/cases/compiler/functionParameterArityMismatch.ts(4,1): error TS2575: No overload expects 2 arguments, but overloads do exist that expect either 1 or at least 3 arguments.
2+
tests/cases/compiler/functionParameterArityMismatch.ts(4,1): error TS2575: No overload expects 2 arguments, but overloads do exist that expect either 1 or 3 arguments.
33
tests/cases/compiler/functionParameterArityMismatch.ts(5,1): error TS2554: Expected 1-3 arguments, but got 4.
4-
tests/cases/compiler/functionParameterArityMismatch.ts(11,1): error TS2575: No overload expects 1 arguments, but overloads do exist that expect either 0 or at least 2 arguments.
5-
tests/cases/compiler/functionParameterArityMismatch.ts(12,1): error TS2575: No overload expects 3 arguments, but overloads do exist that expect either 2 or at least 4 arguments.
6-
tests/cases/compiler/functionParameterArityMismatch.ts(13,1): error TS2575: No overload expects 5 arguments, but overloads do exist that expect either 4 or at least 6 arguments.
4+
tests/cases/compiler/functionParameterArityMismatch.ts(11,1): error TS2575: No overload expects 1 arguments, but overloads do exist that expect either 0 or 2 arguments.
5+
tests/cases/compiler/functionParameterArityMismatch.ts(12,1): error TS2575: No overload expects 3 arguments, but overloads do exist that expect either 2 or 4 arguments.
6+
tests/cases/compiler/functionParameterArityMismatch.ts(13,1): error TS2575: No overload expects 5 arguments, but overloads do exist that expect either 4 or 6 arguments.
77
tests/cases/compiler/functionParameterArityMismatch.ts(14,1): error TS2554: Expected 0-6 arguments, but got 7.
88

99

@@ -15,7 +15,7 @@ tests/cases/compiler/functionParameterArityMismatch.ts(14,1): error TS2554: Expe
1515
!!! error TS2554: Expected 1-3 arguments, but got 0.
1616
f1(1, 2);
1717
~~~~~~~~
18-
!!! error TS2575: No overload expects 2 arguments, but overloads do exist that expect either 1 or at least 3 arguments.
18+
!!! error TS2575: No overload expects 2 arguments, but overloads do exist that expect either 1 or 3 arguments.
1919
f1(1, 2, 3, 4);
2020
~~~~~~~~~~~~~~
2121
!!! error TS2554: Expected 1-3 arguments, but got 4.
@@ -26,13 +26,13 @@ tests/cases/compiler/functionParameterArityMismatch.ts(14,1): error TS2554: Expe
2626
declare function f2(a: number, b: number, c: number, d: number, e: number, f: number);
2727
f2(1);
2828
~~~~~
29-
!!! error TS2575: No overload expects 1 arguments, but overloads do exist that expect either 0 or at least 2 arguments.
29+
!!! error TS2575: No overload expects 1 arguments, but overloads do exist that expect either 0 or 2 arguments.
3030
f2(1, 2, 3);
3131
~~~~~~~~~~~
32-
!!! error TS2575: No overload expects 3 arguments, but overloads do exist that expect either 2 or at least 4 arguments.
32+
!!! error TS2575: No overload expects 3 arguments, but overloads do exist that expect either 2 or 4 arguments.
3333
f2(1, 2, 3, 4, 5);
3434
~~~~~~~~~~~~~~~~~
35-
!!! error TS2575: No overload expects 5 arguments, but overloads do exist that expect either 4 or at least 6 arguments.
35+
!!! error TS2575: No overload expects 5 arguments, but overloads do exist that expect either 4 or 6 arguments.
3636
f2(1, 2, 3, 4, 5, 6, 7);
3737
~~~~~~~~~~~~~~~~~~~~~~~
3838
!!! error TS2554: Expected 0-6 arguments, but got 7.

tests/baselines/reference/genericRestParameters1.errors.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
tests/cases/conformance/types/rest/genericRestParameters1.ts(22,1): error TS2557: Expected at least 3 arguments, but got 1 or more.
1+
tests/cases/conformance/types/rest/genericRestParameters1.ts(22,1): error TS2556: Expected 3 arguments, but got 1 or more.
22
tests/cases/conformance/types/rest/genericRestParameters1.ts(31,1): error TS2556: Expected 3 arguments, but got 1 or more.
33

44

@@ -26,7 +26,7 @@ tests/cases/conformance/types/rest/genericRestParameters1.ts(31,1): error TS2556
2626
f1(ns[0], ns[1], true);
2727
f1(...ns, true); // Error, tuple spread only expanded when last
2828
~~~~~~~~~~~~~~~
29-
!!! error TS2557: Expected at least 3 arguments, but got 1 or more.
29+
!!! error TS2556: Expected 3 arguments, but got 1 or more.
3030

3131
f2(42, "hello", true);
3232
f2(t3[0], t3[1], t3[2]);
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
tests/cases/conformance/es6/destructuring/iterableArrayPattern25.ts(1,33): error TS2501: A rest element cannot contain a binding pattern.
2-
tests/cases/conformance/es6/destructuring/iterableArrayPattern25.ts(2,1): error TS2555: Expected at least 2 arguments, but got 1.
2+
tests/cases/conformance/es6/destructuring/iterableArrayPattern25.ts(2,1): error TS2554: Expected 2 arguments, but got 1.
33

44

55
==== tests/cases/conformance/es6/destructuring/iterableArrayPattern25.ts (2 errors) ====
@@ -8,4 +8,4 @@ tests/cases/conformance/es6/destructuring/iterableArrayPattern25.ts(2,1): error
88
!!! error TS2501: A rest element cannot contain a binding pattern.
99
takeFirstTwoEntries(new Map([["", 0], ["hello", 1]]));
1010
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
11-
!!! error TS2555: Expected at least 2 arguments, but got 1.
11+
!!! error TS2554: Expected 2 arguments, but got 1.

0 commit comments

Comments
 (0)