fix(48418): allow using empty tuple (#48420)

This commit is contained in:
Oleksandr T
2022-04-04 14:56:35 -07:00
committed by GitHub
parent e5ca3e4386
commit aa3c5a787c
2 changed files with 34 additions and 1 deletions
+6 -1
View File
@@ -192,7 +192,12 @@ namespace ts.codefix {
const program = context.program;
const checker = program.getTypeChecker();
const scriptTarget = getEmitScriptTarget(program.getCompilerOptions());
const flags = NodeBuilderFlags.NoTruncation | NodeBuilderFlags.NoUndefinedOptionalParameterType | NodeBuilderFlags.SuppressAnyReturnType | (quotePreference === QuotePreference.Single ? NodeBuilderFlags.UseSingleQuotesForStringLiteralType : 0);
const flags =
NodeBuilderFlags.NoTruncation
| NodeBuilderFlags.NoUndefinedOptionalParameterType
| NodeBuilderFlags.SuppressAnyReturnType
| NodeBuilderFlags.AllowEmptyTuple
| (quotePreference === QuotePreference.Single ? NodeBuilderFlags.UseSingleQuotesForStringLiteralType : NodeBuilderFlags.None);
const signatureDeclaration = checker.signatureToSignatureDeclaration(signature, kind, enclosingDeclaration, flags, getNoopSymbolTrackerWithResolver(context)) as ArrowFunction | FunctionExpression | MethodDeclaration;
if (!signatureDeclaration) {
return undefined;
@@ -0,0 +1,28 @@
/// <reference path='fourslash.ts' />
////export interface Foo<T> {
//// z(...args: T extends unknown[] ? T : [T]);
////}
////export interface Bar {
//// a(foo: Foo<[number]>): void;
//// b(foo: Foo<[]>): void;
//// c(foo: Foo<number>): void;
////}
////[|const bar: Bar = {};|]
verify.codeFix({
index: 0,
description: ts.Diagnostics.Add_missing_properties.message,
newRangeContent:
`const bar: Bar = {
a: function(foo: Foo<[number]>): void {
throw new Error("Function not implemented.");
},
b: function(foo: Foo<[]>): void {
throw new Error("Function not implemented.");
},
c: function(foo: Foo<number>): void {
throw new Error("Function not implemented.");
}
};`,
});