retain names in export default class and function (#2122)

fixes #2121
This commit is contained in:
kzc
2017-06-19 02:30:59 -04:00
committed by Alex Lam S.L
parent a298bcce02
commit 849ba79dee
3 changed files with 37 additions and 11 deletions

View File

@@ -2226,9 +2226,7 @@ merge(Compressor.prototype, {
function before(node, descend, in_list) {
var parent = tt.parent();
if (!compressor.option("keep_fnames")
&& ((node instanceof AST_Function || node instanceof AST_ClassExpression) && node.name
|| (node instanceof AST_Defun || node instanceof AST_DefClass)
&& parent instanceof AST_Export && parent.is_default)) {
&& node.name && (node instanceof AST_Function || node instanceof AST_ClassExpression)) {
var def = node.name.definition();
// any declarations with same name will overshadow
// name of this anonymous function and can therefore

View File

@@ -664,3 +664,31 @@ class_expression_statement_unused_toplevel: {
}
expect_exact: ""
}
export_default_function_decl: {
options = {
toplevel: true,
passes: 3,
unused: true,
}
input: {
// do not drop "unused" exports
export default function Foo() {};
export function Far() {};
}
expect_exact: "export default function Foo(){};export function Far(){};"
}
export_default_class_decl: {
options = {
toplevel: true,
passes: 3,
unused: true,
}
input: {
// do not drop "unused" exports
export default class Car {};
export class Cab {};
}
expect_exact: "export default class Car{};export class Cab{};"
}

View File

@@ -45,7 +45,7 @@ export_default_func_1: {
input: {
export default function f(){};
}
expect_exact: "export default function(){};"
expect_exact: "export default function f(){};"
}
export_default_func_2: {
@@ -58,7 +58,7 @@ export_default_func_2: {
input: {
export default function f(){}(1);
}
expect_exact: "export default function(){};1;"
expect_exact: "export default function f(){};1;"
}
export_default_func_3: {
@@ -71,7 +71,7 @@ export_default_func_3: {
input: {
export default function f(){}(1);
}
expect_exact: "export default function(){};"
expect_exact: "export default function f(){};"
}
export_class_1: {
@@ -121,7 +121,7 @@ export_default_class_1: {
input: {
export default class C {};
}
expect_exact: "export default class{};"
expect_exact: "export default class C{};"
}
export_default_class_2: {
@@ -134,7 +134,7 @@ export_default_class_2: {
input: {
export default class C {}(1);
}
expect_exact: "export default class{};1;"
expect_exact: "export default class C{};1;"
}
export_default_class_3: {
@@ -147,7 +147,7 @@ export_default_class_3: {
input: {
export default class C {}(1);
}
expect_exact: "export default class{};"
expect_exact: "export default class C{};"
}
export_mangle_1: {
@@ -247,7 +247,7 @@ export_toplevel_1: {
}
expect: {
export function g(){};
export default function(){};
export default function h(){};
}
}
@@ -263,7 +263,7 @@ export_toplevel_2: {
}
expect: {
export class B {};
export default class {};
export default class C {};
}
}