Skip to content

Commit aa3c5a7

Browse files
authored
fix(48418): allow using empty tuple (#48420)
1 parent e5ca3e4 commit aa3c5a7

File tree

2 files changed

+34
-1
lines changed

2 files changed

+34
-1
lines changed

src/services/codefixes/helpers.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -192,7 +192,12 @@ namespace ts.codefix {
192192
const program = context.program;
193193
const checker = program.getTypeChecker();
194194
const scriptTarget = getEmitScriptTarget(program.getCompilerOptions());
195-
const flags = NodeBuilderFlags.NoTruncation | NodeBuilderFlags.NoUndefinedOptionalParameterType | NodeBuilderFlags.SuppressAnyReturnType | (quotePreference === QuotePreference.Single ? NodeBuilderFlags.UseSingleQuotesForStringLiteralType : 0);
195+
const flags =
196+
NodeBuilderFlags.NoTruncation
197+
| NodeBuilderFlags.NoUndefinedOptionalParameterType
198+
| NodeBuilderFlags.SuppressAnyReturnType
199+
| NodeBuilderFlags.AllowEmptyTuple
200+
| (quotePreference === QuotePreference.Single ? NodeBuilderFlags.UseSingleQuotesForStringLiteralType : NodeBuilderFlags.None);
196201
const signatureDeclaration = checker.signatureToSignatureDeclaration(signature, kind, enclosingDeclaration, flags, getNoopSymbolTrackerWithResolver(context)) as ArrowFunction | FunctionExpression | MethodDeclaration;
197202
if (!signatureDeclaration) {
198203
return undefined;
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
/// <reference path='fourslash.ts' />
2+
3+
////export interface Foo<T> {
4+
//// z(...args: T extends unknown[] ? T : [T]);
5+
////}
6+
////export interface Bar {
7+
//// a(foo: Foo<[number]>): void;
8+
//// b(foo: Foo<[]>): void;
9+
//// c(foo: Foo<number>): void;
10+
////}
11+
////[|const bar: Bar = {};|]
12+
13+
verify.codeFix({
14+
index: 0,
15+
description: ts.Diagnostics.Add_missing_properties.message,
16+
newRangeContent:
17+
`const bar: Bar = {
18+
a: function(foo: Foo<[number]>): void {
19+
throw new Error("Function not implemented.");
20+
},
21+
b: function(foo: Foo<[]>): void {
22+
throw new Error("Function not implemented.");
23+
},
24+
c: function(foo: Foo<number>): void {
25+
throw new Error("Function not implemented.");
26+
}
27+
};`,
28+
});

0 commit comments

Comments
 (0)