fix export related issues (#2005)
- `mangle` non-exported names - `unused` on `export` of `function` - `hoist_funs` on `export` - `export default` - prohibit definition statements - parse `AST_Defun` properly - drop only unused class and function names fixes #2001 fixes #2004
This commit is contained in:
22
lib/parse.js
22
lib/parse.js
@@ -2417,14 +2417,26 @@ function parse($TEXT, options) {
|
||||
}
|
||||
}
|
||||
|
||||
var is_definition = is("keyword", "var")
|
||||
|| is("keyword", "let")
|
||||
|| is("keyword", "const")
|
||||
|| is("keyword", "function") && !is_default;
|
||||
var is_definition = is("keyword", "var") || is("keyword", "let") || is("keyword", "const");
|
||||
if (is_definition) {
|
||||
if (is_default) unexpected();
|
||||
exported_definition = statement();
|
||||
} else if (is("keyword", "class")) {
|
||||
var cls = expr_atom(false);
|
||||
if (cls.name) {
|
||||
cls.name = new AST_SymbolDefClass(cls.name);
|
||||
exported_definition = new AST_DefClass(cls);
|
||||
} else {
|
||||
exported_value = cls;
|
||||
}
|
||||
} else if (is("keyword", "function")) {
|
||||
exported_value = expr_atom(false);
|
||||
var func = expr_atom(false);
|
||||
if (func.name) {
|
||||
func.name = new AST_SymbolDefun(func.name);
|
||||
exported_definition = new AST_Defun(func);
|
||||
} else {
|
||||
exported_value = func;
|
||||
}
|
||||
} else {
|
||||
exported_value = expression(false);
|
||||
semicolon();
|
||||
|
||||
Reference in New Issue
Block a user