Fix extra semicolon in ambient typescript declaration emit (#2165) (#2167)

* fix(typescript): add failing ambient declaration test

* fix(typescript): fix failing test case for ambient function exports
master
Stephen Wan 2017-06-16 11:20:59 -07:00 committed by Christopher Chedeau
parent 7e60d70f97
commit a005211c96
4 changed files with 56 additions and 1 deletions

View File

@ -3165,7 +3165,8 @@ function printExportDeclaration(path, options, print) {
decl.type === "ExportDefaultDeclaration" &&
(decl.declaration.type !== "ClassDeclaration" &&
decl.declaration.type !== "FunctionDeclaration" &&
decl.declaration.type !== "TSAbstractClassDeclaration")
decl.declaration.type !== "TSAbstractClassDeclaration" &&
decl.declaration.type !== "TSNamespaceFunctionDeclaration")
) {
parts.push(semi);
}

View File

@ -0,0 +1,38 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`ambient.ts 1`] = `
declare module "classnames" {
export default function classnames(...inputs: (string | number | false | object | undefined)[]): string;
export class x {}
export interface y {}
export type z = y;
}
declare module "x" {
export default class x {}
}
declare module "y" {
const y = 5;
export default y;
}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
declare module "classnames" {
export default function classnames(
...inputs: (string | number | false | object | undefined)[]
): string;
export class x {}
export interface y {}
export type z = y;
}
declare module "x" {
export default class x {}
}
declare module "y" {
const y = 5;
export default y;
}
`;

View File

@ -0,0 +1,15 @@
declare module "classnames" {
export default function classnames(...inputs: (string | number | false | object | undefined)[]): string;
export class x {}
export interface y {}
export type z = y;
}
declare module "x" {
export default class x {}
}
declare module "y" {
const y = 5;
export default y;
}

View File

@ -0,0 +1 @@
run_spec(__dirname, { parser: "typescript" });