Handle additional export default parens cases (#298)

master
Brian Ng 2017-01-18 13:11:52 -06:00 committed by Christopher Chedeau
parent 870dbd0003
commit c02bd6a8d5
6 changed files with 39 additions and 8 deletions

View File

@ -1830,6 +1830,12 @@ function printReturnType(path, print) {
return concat(parts);
}
function typeIsFunction(type) {
return type === "FunctionExpression" ||
type === "ArrowFunctionExpression" ||
type === "NewExpression";
}
function printExportDeclaration(path, options, print) {
var decl = path.getValue();
var parts = [ "export " ];
@ -1847,7 +1853,8 @@ function printExportDeclaration(path, options, print) {
if (
decl.type === "ExportDefaultDeclaration" &&
(decl.declaration.type == "Identifier" ||
decl.declaration.type === "CallExpression")
decl.declaration.type === "CallExpression" ||
typeIsFunction(decl.declaration.type))
) {
parts.push(";");
}
@ -1986,9 +1993,7 @@ function printMemberChain(node, options, print) {
function argIsFunction(call) {
if (call.arguments.length > 0) {
const type = call.arguments[(0)].type;
return type === "FunctionExpression" ||
type === "ArrowFunctionExpression" ||
type === "NewExpression";
return typeIsFunction(type);
}
return false;
}

View File

@ -1347,10 +1347,33 @@ import {
"
`;
exports[`test export_default_call_expression.js 1`] = `
"export default connect(mapStateToProps)(MyComponent);
exports[`test export_default_arrow_expression.js 1`] = `
"export default () => {};
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
export default connect(mapStateToProps)(MyComponent);
export default () => {
};
"
`;
exports[`test export_default_call_expression.js 1`] = `
"export default foo()
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
export default foo();
"
`;
exports[`test export_default_function_expression.js 1`] = `
"export default (function() {});
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
export default function() {
};
"
`;
exports[`test export_default_new_expression.js 1`] = `
"export default new Foo();
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
export default new Foo();
"
`;

View File

@ -0,0 +1 @@
export default () => {};

View File

@ -1 +1 @@
export default connect(mapStateToProps)(MyComponent);
export default foo()

View File

@ -0,0 +1 @@
export default (function() {});

View File

@ -0,0 +1 @@
export default new Foo();