Skip to content

Commit 94dc46b

Browse files
committed
fix(46570): Unhelpful Promise type argument hint in JS file
1 parent 8df1da9 commit 94dc46b

7 files changed

+14
-7
lines changed

src/compiler/checker.ts

+3-1
Original file line numberDiff line numberDiff line change
@@ -30414,7 +30414,9 @@ namespace ts {
3041430414
: min < max ? min + "-" + max
3041530415
: min;
3041630416
const error = hasRestParameter ? Diagnostics.Expected_at_least_0_arguments_but_got_1
30417-
: parameterRange === 1 && args.length === 0 && isPromiseResolveArityError(node) ? Diagnostics.Expected_0_arguments_but_got_1_TypeScript_may_need_a_JSDoc_hint_that_the_call_to_new_Promise_produces_a_Promise_void
30417+
: parameterRange === 1 && args.length === 0 && isPromiseResolveArityError(node) ? isInJSFile(node)
30418+
? Diagnostics.Expected_0_arguments_but_got_1_TypeScript_may_need_a_JSDoc_hint_that_the_call_to_new_Promise_produces_a_Promise_void
30419+
: Diagnostics.Expected_0_arguments_but_got_1_Did_you_forget_to_include_void_in_your_type_argument_to_Promise
3041830420
: Diagnostics.Expected_0_arguments_but_got_1;
3041930421
if (min < args.length && args.length < max) {
3042030422
// between min and max, but with no matching overload

src/compiler/diagnosticMessages.json

+5-1
Original file line numberDiff line numberDiff line change
@@ -3309,7 +3309,7 @@
33093309
"category": "Error",
33103310
"code": 2793
33113311
},
3312-
"Expected {0} arguments, but got {1}. TypeScript may need a JSDoc hint that the call to 'new Promise()' produces a 'Promise<void>'": {
3312+
"Expected {0} arguments, but got {1}. Did you forget to include 'void' in your type argument to 'Promise'?": {
33133313
"category": "Error",
33143314
"code": 2794
33153315
},
@@ -3369,6 +3369,10 @@
33693369
"category": "Error",
33703370
"code": 2809
33713371
},
3372+
"Expected {0} arguments, but got {1}. TypeScript may need a JSDoc hint that the call to 'new Promise()' produces a 'Promise<void>'": {
3373+
"category": "Error",
3374+
"code": 2810
3375+
},
33723376
"Initializer for property '{0}'": {
33733377
"category": "Error",
33743378
"code": 2811

src/services/codefixes/fixAddVoidToPromise.ts

+2-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,8 @@ namespace ts.codefix {
33
const fixName = "addVoidToPromise";
44
const fixId = "addVoidToPromise";
55
const errorCodes = [
6-
Diagnostics.Expected_0_arguments_but_got_1_TypeScript_may_need_a_JSDoc_hint_that_the_call_to_new_Promise_produces_a_Promise_void.code
6+
Diagnostics.Expected_0_arguments_but_got_1_TypeScript_may_need_a_JSDoc_hint_that_the_call_to_new_Promise_produces_a_Promise_void.code,
7+
Diagnostics.Expected_0_arguments_but_got_1_Did_you_forget_to_include_void_in_your_type_argument_to_Promise.code
78
];
89
registerCodeFix({
910
errorCodes,

tests/cases/fourslash/codeFixAddVoidToPromiseJS.1.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
////const p1 = new Promise(resolve => resolve());
1010

1111
verify.codeFix({
12-
errorCode: 2794,
12+
errorCode: 2810,
1313
description: "Add 'void' to Promise resolved without a value",
1414
index: 2,
1515
newFileContent: `const p1 = /** @type {Promise<void>} */(new Promise(resolve => resolve()));`

tests/cases/fourslash/codeFixAddVoidToPromiseJS.2.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
////const p2 = /** @type {Promise<number>} */(new Promise(resolve => resolve()));
1010

1111
verify.codeFix({
12-
errorCode: 2794,
12+
errorCode: 2810,
1313
description: "Add 'void' to Promise resolved without a value",
1414
index: 2,
1515
newFileContent: `const p2 = /** @type {Promise<number | void>} */(new Promise(resolve => resolve()));`

tests/cases/fourslash/codeFixAddVoidToPromiseJS.3.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
////const p3 = /** @type {Promise<number | string>} */(new Promise(resolve => resolve()));
1010

1111
verify.codeFix({
12-
errorCode: 2794,
12+
errorCode: 2810,
1313
description: "Add 'void' to Promise resolved without a value",
1414
index: 2,
1515
newFileContent: `const p3 = /** @type {Promise<number | string | void>} */(new Promise(resolve => resolve()));`

tests/cases/fourslash/codeFixAddVoidToPromiseJS.4.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
////const p4 = /** @type {Promise<{ x: number } & { y: string }>} */(new Promise(resolve => resolve()));
1010

1111
verify.codeFix({
12-
errorCode: 2794,
12+
errorCode: 2810,
1313
description: "Add 'void' to Promise resolved without a value",
1414
index: 2,
1515
newFileContent: `const p4 = /** @type {Promise<({ x: number } & { y: string }) | void>} */(new Promise(resolve => resolve()));`

0 commit comments

Comments
 (0)