From 2b7a022c23e46dd2fc38982511d027723c82ee5b Mon Sep 17 00:00:00 2001 From: Oleksandr T Date: Mon, 12 Aug 2024 23:38:29 +0300 Subject: [PATCH] fix(59587): permit trailing commas in type parameter printing --- src/compiler/types.ts | 2 +- src/testRunner/unittests/printer.ts | 10 ++++++++++ tests/baselines/reference/api/typescript.d.ts | 2 +- .../declarationEmitReusesLambdaParameterNodes.js | 2 +- .../declarationEmitTypeParameterNameInOuterScope.js | 6 +++--- .../inferenceExactOptionalProperties2.types | 12 ++++++------ .../printerApi/printsFileCorrectly.typeParameters.js | 1 + 7 files changed, 23 insertions(+), 12 deletions(-) create mode 100644 tests/baselines/reference/printerApi/printsFileCorrectly.typeParameters.js diff --git a/src/compiler/types.ts b/src/compiler/types.ts index fb3022c5500c9..35d1e2d73e282 100644 --- a/src/compiler/types.ts +++ b/src/compiler/types.ts @@ -10013,7 +10013,7 @@ export const enum ListFormat { SourceFileStatements = MultiLine | NoTrailingNewLine, Decorators = MultiLine | Optional | SpaceAfterList, TypeArguments = CommaDelimited | SpaceBetweenSiblings | SingleLine | AngleBrackets | Optional, - TypeParameters = CommaDelimited | SpaceBetweenSiblings | SingleLine | AngleBrackets | Optional, + TypeParameters = CommaDelimited | SpaceBetweenSiblings | SingleLine | AngleBrackets | Optional | AllowTrailingComma, Parameters = CommaDelimited | SpaceBetweenSiblings | SingleLine | Parenthesis, IndexSignatureParameters = CommaDelimited | SpaceBetweenSiblings | SingleLine | Indented | SquareBrackets, JSDocComment = MultiLine | AsteriskDelimited, diff --git a/src/testRunner/unittests/printer.ts b/src/testRunner/unittests/printer.ts index 76f23ab692fb0..48b9009ea2116 100644 --- a/src/testRunner/unittests/printer.ts +++ b/src/testRunner/unittests/printer.ts @@ -100,6 +100,16 @@ describe("unittests:: PrinterAPI", () => { ts.ScriptKind.TSX, )); }); + + printsCorrectly("typeParameters", {}, printer => { + return printer.printFile(ts.createSourceFile( + "source.tsx", + String.raw`export const id = (id: T): T => id;`, + ts.ScriptTarget.Latest, + /*setParentNodes*/ undefined, + ts.ScriptKind.TSX, + )); + }); }); describe("No duplicate ref directives when emiting .d.ts->.d.ts", () => { diff --git a/tests/baselines/reference/api/typescript.d.ts b/tests/baselines/reference/api/typescript.d.ts index 0a0d0a2f8dd95..42745889471f9 100644 --- a/tests/baselines/reference/api/typescript.d.ts +++ b/tests/baselines/reference/api/typescript.d.ts @@ -8142,7 +8142,7 @@ declare namespace ts { SourceFileStatements = 131073, Decorators = 2146305, TypeArguments = 53776, - TypeParameters = 53776, + TypeParameters = 53840, Parameters = 2576, IndexSignatureParameters = 8848, JSDocComment = 33, diff --git a/tests/baselines/reference/declarationEmitReusesLambdaParameterNodes.js b/tests/baselines/reference/declarationEmitReusesLambdaParameterNodes.js index bdc001a6ab0a6..dc41cc1e26b56 100644 --- a/tests/baselines/reference/declarationEmitReusesLambdaParameterNodes.js +++ b/tests/baselines/reference/declarationEmitReusesLambdaParameterNodes.js @@ -24,4 +24,4 @@ function CustomSelect2(x) { } //// [index.d.ts] import { Props } from "react-select"; export declare const CustomSelect1: