improve mangle and tests

This commit is contained in:
alexlamsl 2017-05-26 04:35:10 +08:00
parent 2a4482c012
commit 2d45c1ff30
2 changed files with 27 additions and 5 deletions

View File

@ -183,7 +183,8 @@ AST_Toplevel.DEFMETHOD("figure_out_scope", function(options){
node.references = []; node.references = [];
} }
if (node instanceof AST_SymbolLambda) { if (node instanceof AST_SymbolLambda) {
mark_export(defun.def_function(node)); defun.def_function(node);
in_export = false;
} }
else if (node instanceof AST_SymbolDefun) { else if (node instanceof AST_SymbolDefun) {
// Careful here, the scope where this should be defined is // Careful here, the scope where this should be defined is
@ -201,7 +202,8 @@ AST_Toplevel.DEFMETHOD("figure_out_scope", function(options){
mark_export(defun.def_variable(node)); mark_export(defun.def_variable(node));
} }
else if (node instanceof AST_SymbolImport) { else if (node instanceof AST_SymbolImport) {
mark_export(scope.def_variable(node)); scope.def_variable(node);
in_export = false;
} }
else if (node instanceof AST_SymbolDefClass) { else if (node instanceof AST_SymbolDefClass) {
// This deals with the name of the class being available // This deals with the name of the class being available
@ -212,6 +214,11 @@ AST_Toplevel.DEFMETHOD("figure_out_scope", function(options){
|| node instanceof AST_SymbolLet || node instanceof AST_SymbolLet
|| node instanceof AST_SymbolConst) { || node instanceof AST_SymbolConst) {
var def = ((node instanceof AST_SymbolBlockDeclaration) ? scope : defun).def_variable(node); var def = ((node instanceof AST_SymbolBlockDeclaration) ? scope : defun).def_variable(node);
if (node instanceof AST_SymbolFunarg) {
in_export = false;
} else {
mark_export(def);
}
def.destructuring = in_destructuring; def.destructuring = in_destructuring;
if (defun !== scope) { if (defun !== scope) {
node.mark_enclosed(options); node.mark_enclosed(options);
@ -224,6 +231,7 @@ AST_Toplevel.DEFMETHOD("figure_out_scope", function(options){
} }
else if (node instanceof AST_SymbolCatch) { else if (node instanceof AST_SymbolCatch) {
scope.def_variable(node).defun = defun; scope.def_variable(node).defun = defun;
in_export = false;
} }
else if (node instanceof AST_LabelRef) { else if (node instanceof AST_LabelRef) {
var sym = labels.get(node.name); var sym = labels.get(node.name);

View File

@ -79,10 +79,13 @@ export_mangle_2: {
return one - two; return one - two;
}; };
} }
expect_exact: "export default function foo(n,o){return n-o};" expect_exact: "export default function n(r,t){return r-t};"
} }
export_mangle_3: { export_mangle_3: {
options = {
collapse_vars: true,
}
mangle = {} mangle = {}
input: { input: {
export class C { export class C {
@ -92,10 +95,13 @@ export_mangle_3: {
} }
}; };
} }
expect_exact: "export class C{go(n,r){var t=n;return n-r+t}};" expect_exact: "export class C{go(n,r){return n-r+n}};"
} }
export_mangle_4: { export_mangle_4: {
options = {
collapse_vars: true,
}
mangle = {} mangle = {}
input: { input: {
export default class C { export default class C {
@ -105,7 +111,7 @@ export_mangle_4: {
} }
}; };
} }
expect_exact: "export default class C{go(n,r){var t=n;return n-r+t}};" expect_exact: "export default class C{go(n,r){return n-r+n}};"
} }
export_mangle_5: { export_mangle_5: {
@ -119,3 +125,11 @@ export_mangle_5: {
} }
expect_exact: "export default{prop:function(n,r){return n-r}};" expect_exact: "export default{prop:function(n,r){return n-r}};"
} }
export_mangle_6: {
mangle = {}
input: {
export let foo = 1;
}
expect_exact: "export let foo=1;"
}