From b23c16d05def6f35913613c5c2453fa8393eb32d Mon Sep 17 00:00:00 2001 From: Lucas Azzola Date: Sat, 6 May 2017 14:11:13 +1000 Subject: [PATCH] fix(typescript): print typeParameters on TSMethodSignature (#1523) --- src/printer.js | 11 +++++--- .../compiler/__snapshots__/jsfmt.spec.js.snap | 27 +++++++++++++++++++ .../functionOverloadsOnGenericArity1.ts | 11 ++++++++ 3 files changed, 45 insertions(+), 4 deletions(-) create mode 100644 tests/typescript/compiler/functionOverloadsOnGenericArity1.ts diff --git a/src/printer.js b/src/printer.js index 53074df08..c659c2e71 100644 --- a/src/printer.js +++ b/src/printer.js @@ -2185,9 +2185,8 @@ function genericPrintNoParens(path, options, print, args) { case "TSMethodSignature": parts.push( path.call(print, 'name'), - "(", - join(", ", path.map(print, "parameters")), - ")" + printTypeParameters(path, options, print, "typeParameters"), + printFunctionParams(path, print, options) ) if (n.typeAnnotation) { @@ -2636,7 +2635,11 @@ function printFunctionTypeParameters(path, options, print) { function printFunctionParams(path, print, options, expandArg) { var fun = path.getValue(); // namedTypes.Function.assert(fun); - var paramsField = fun.type === "TSFunctionType" ? "parameters" : "params"; + var paramsField = (fun.type === "TSFunctionType" || + fun.type === "TSMethodSignature") + ? "parameters" + : "params"; + var printed = path.map(print, paramsField); if (fun.defaults) { diff --git a/tests/typescript/compiler/__snapshots__/jsfmt.spec.js.snap b/tests/typescript/compiler/__snapshots__/jsfmt.spec.js.snap index ad6a1e8bb..a0cc10243 100644 --- a/tests/typescript/compiler/__snapshots__/jsfmt.spec.js.snap +++ b/tests/typescript/compiler/__snapshots__/jsfmt.spec.js.snap @@ -6,3 +6,30 @@ var results = number[]; var results = number[]; `; + +exports[`functionOverloadsOnGenericArity1.ts 1`] = ` +// overloading on arity not allowed +interface C { + f(): string; + f(): string; + + (): string; + (): string; + + new (): string; + new (): string; +} +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// overloading on arity not allowed +interface C { + f(): string, + f(): string, + + (): string, + (): string, + + new (): string, + new (): string +} + +`; diff --git a/tests/typescript/compiler/functionOverloadsOnGenericArity1.ts b/tests/typescript/compiler/functionOverloadsOnGenericArity1.ts new file mode 100644 index 000000000..45e8021d7 --- /dev/null +++ b/tests/typescript/compiler/functionOverloadsOnGenericArity1.ts @@ -0,0 +1,11 @@ +// overloading on arity not allowed +interface C { + f(): string; + f(): string; + + (): string; + (): string; + + new (): string; + new (): string; +}