diff --git a/lib/compress.js b/lib/compress.js index 9f17efb5..d6a1830a 100644 --- a/lib/compress.js +++ b/lib/compress.js @@ -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 diff --git a/test/compress/harmony.js b/test/compress/harmony.js index 95ba07eb..45459eee 100644 --- a/test/compress/harmony.js +++ b/test/compress/harmony.js @@ -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{};" +} diff --git a/test/compress/issue-2001.js b/test/compress/issue-2001.js index 0109641b..a4e779ea 100644 --- a/test/compress/issue-2001.js +++ b/test/compress/issue-2001.js @@ -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 {}; } }