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

View File

@@ -664,3 +664,31 @@ class_expression_statement_unused_toplevel: {
} }
expect_exact: "" 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: { input: {
export default function f(){}; export default function f(){};
} }
expect_exact: "export default function(){};" expect_exact: "export default function f(){};"
} }
export_default_func_2: { export_default_func_2: {
@@ -58,7 +58,7 @@ export_default_func_2: {
input: { input: {
export default function f(){}(1); export default function f(){}(1);
} }
expect_exact: "export default function(){};1;" expect_exact: "export default function f(){};1;"
} }
export_default_func_3: { export_default_func_3: {
@@ -71,7 +71,7 @@ export_default_func_3: {
input: { input: {
export default function f(){}(1); export default function f(){}(1);
} }
expect_exact: "export default function(){};" expect_exact: "export default function f(){};"
} }
export_class_1: { export_class_1: {
@@ -121,7 +121,7 @@ export_default_class_1: {
input: { input: {
export default class C {}; export default class C {};
} }
expect_exact: "export default class{};" expect_exact: "export default class C{};"
} }
export_default_class_2: { export_default_class_2: {
@@ -134,7 +134,7 @@ export_default_class_2: {
input: { input: {
export default class C {}(1); export default class C {}(1);
} }
expect_exact: "export default class{};1;" expect_exact: "export default class C{};1;"
} }
export_default_class_3: { export_default_class_3: {
@@ -147,7 +147,7 @@ export_default_class_3: {
input: { input: {
export default class C {}(1); export default class C {}(1);
} }
expect_exact: "export default class{};" expect_exact: "export default class C{};"
} }
export_mangle_1: { export_mangle_1: {
@@ -247,7 +247,7 @@ export_toplevel_1: {
} }
expect: { expect: {
export function g(){}; export function g(){};
export default function(){}; export default function h(){};
} }
} }
@@ -263,7 +263,7 @@ export_toplevel_2: {
} }
expect: { expect: {
export class B {}; export class B {};
export default class {}; export default class C {};
} }
} }