From 03bca1d8fe4282a0af0735c48ae6c8be36c84394 Mon Sep 17 00:00:00 2001 From: Wesley Wigham Date: Tue, 13 Aug 2024 11:55:27 -0700 Subject: [PATCH] Allow trailing commas on lambda type parameter lists (#59612) --- src/compiler/emitter.ts | 2 +- src/testRunner/unittests/printer.ts | 11 +++++++++++ ...ileCorrectly.lambda type parameter lists in tsx.js | 1 + 3 files changed, 13 insertions(+), 1 deletion(-) create mode 100644 tests/baselines/reference/printerApi/printsFileCorrectly.lambda type parameter lists in tsx.js diff --git a/src/compiler/emitter.ts b/src/compiler/emitter.ts index 6f68329ba0a..493e60af2b8 100644 --- a/src/compiler/emitter.ts +++ b/src/compiler/emitter.ts @@ -4508,7 +4508,7 @@ export function createPrinter(printerOptions: PrinterOptions = {}, handlers: Pri if (isFunctionLike(parentNode) && parentNode.typeArguments) { // Quick info uses type arguments in place of type parameters on instantiated signatures return emitTypeArguments(parentNode, parentNode.typeArguments); } - emitList(parentNode, typeParameters, ListFormat.TypeParameters); + emitList(parentNode, typeParameters, ListFormat.TypeParameters | (isArrowFunction(parentNode) ? ListFormat.AllowTrailingComma : ListFormat.None)); } function emitParameters(parentNode: Node, parameters: NodeArray) { diff --git a/src/testRunner/unittests/printer.ts b/src/testRunner/unittests/printer.ts index 76f23ab692f..86a7b41d167 100644 --- a/src/testRunner/unittests/printer.ts +++ b/src/testRunner/unittests/printer.ts @@ -100,6 +100,17 @@ describe("unittests:: PrinterAPI", () => { ts.ScriptKind.TSX, )); }); + + // https://github.com/microsoft/TypeScript/issues/59587 + printsCorrectly("lambda type parameter lists in tsx", {}, printer => { + return printer.printFile(ts.createSourceFile( + "source.tsx", + String.raw`export const id = (id: T): T => id`, + ts.ScriptTarget.ESNext, + /*setParentNodes*/ undefined, + ts.ScriptKind.TSX, + )); + }); }); describe("No duplicate ref directives when emiting .d.ts->.d.ts", () => { diff --git a/tests/baselines/reference/printerApi/printsFileCorrectly.lambda type parameter lists in tsx.js b/tests/baselines/reference/printerApi/printsFileCorrectly.lambda type parameter lists in tsx.js new file mode 100644 index 00000000000..c28604711e8 --- /dev/null +++ b/tests/baselines/reference/printerApi/printsFileCorrectly.lambda type parameter lists in tsx.js @@ -0,0 +1 @@ +export const id = (id: T): T => id;