fix(typescript): use printFunctionParams for call/construct signature, fixes #2105 (#2106)

This commit is contained in:
Lucas Azzola authored and Christopher Chedeau committed 2017-06-11 16:06:38 -07:00
1 parent 2dba2a64da
commit 9c608d2ec1
4 files changed
+176 -8

No files matched your search

+10 -8
View File
@@ -2405,17 +2405,19 @@ function genericPrintNoParens(path, options, print, args) {
if (n.type !== "TSCallSignature") {
parts.push("new ");
}
const isType = n.type === "TSConstructorType";
if (n.typeParameters) {
parts.push(printTypeParameters(path, options, print, "typeParameters"));
}
parts.push(
printFunctionParams(
path,
print,
options,
/* expandArg */ false,
/* printTypeParams */ true
)
);
const params = n.params
? path.map(print, "params")
: path.map(print, "parameters");
parts.push("(", join(", ", params), ")");
if (n.typeAnnotation) {
const isType = n.type === "TSConstructorType";
parts.push(isType ? " => " : ": ", path.call(print, "typeAnnotation"));
}
return concat(parts);
@@ -0,0 +1,113 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`new-signature.ts 1`] = `
interface FooConstructor {
new (
a: number,
b: number,
c: number,
d: number,
e: number,
f: number,
g: number,
h: number
): Foo;
}
interface BarConstructor {
new <A, B, C>(
a: number,
b: number,
c: number,
d: number,
e: number,
f: number,
g: number,
h: number
): Foo;
}
type BazConstructor = {
new (
a: number,
b: number,
c: number,
d: number,
e: number,
f: number,
g: number,
h: number
): Foo;
}
interface ConstructorBigGenerics {
new <AAAAAAAAAAAAAAAAAAAAAAAA, AAAAAAAAAAAAAAAAAAAAAAAA, AAAAAAAAAAAAAAAAAAAAAAAA>(
a: number,
b: number,
c: number,
d: number,
e: number,
f: number,
g: number,
h: number
): Foo;
}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
interface FooConstructor {
new (
a: number,
b: number,
c: number,
d: number,
e: number,
f: number,
g: number,
h: number
): Foo;
}
interface BarConstructor {
new <A, B, C>(
a: number,
b: number,
c: number,
d: number,
e: number,
f: number,
g: number,
h: number
): Foo;
}
type BazConstructor = {
new (
a: number,
b: number,
c: number,
d: number,
e: number,
f: number,
g: number,
h: number
): Foo;
};
interface ConstructorBigGenerics {
new <
AAAAAAAAAAAAAAAAAAAAAAAA,
AAAAAAAAAAAAAAAAAAAAAAAA,
AAAAAAAAAAAAAAAAAAAAAAAA
>(
a: number,
b: number,
c: number,
d: number,
e: number,
f: number,
g: number,
h: number
): Foo;
}
`;
+1
View File
@@ -0,0 +1 @@
run_spec(__dirname, { parser: "typescript" });
+52
View File
@@ -0,0 +1,52 @@
interface FooConstructor {
new (
a: number,
b: number,
c: number,
d: number,
e: number,
f: number,
g: number,
h: number
): Foo;
}
interface BarConstructor {
new <A, B, C>(
a: number,
b: number,
c: number,
d: number,
e: number,
f: number,
g: number,
h: number
): Foo;
}
type BazConstructor = {
new (
a: number,
b: number,
c: number,
d: number,
e: number,
f: number,
g: number,
h: number
): Foo;
}
interface ConstructorBigGenerics {
new <AAAAAAAAAAAAAAAAAAAAAAAA, AAAAAAAAAAAAAAAAAAAAAAAA, AAAAAAAAAAAAAAAAAAAAAAAA>(
a: number,
b: number,
c: number,
d: number,
e: number,
f: number,
g: number,
h: number
): Foo;
}