16
lib/parse.js
16
lib/parse.js
@@ -2327,6 +2327,14 @@ function parse($TEXT, options) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function map_name(is_import) {
|
function map_name(is_import) {
|
||||||
|
function make_symbol(type) {
|
||||||
|
return new type({
|
||||||
|
name: as_property_name(),
|
||||||
|
start: prev(),
|
||||||
|
end: prev()
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
var foreign_type = is_import ? AST_SymbolImportForeign : AST_SymbolExportForeign;
|
var foreign_type = is_import ? AST_SymbolImportForeign : AST_SymbolExportForeign;
|
||||||
var type = is_import ? AST_SymbolImport : AST_SymbolExport;
|
var type = is_import ? AST_SymbolImport : AST_SymbolExport;
|
||||||
var start = S.token;
|
var start = S.token;
|
||||||
@@ -2334,16 +2342,16 @@ function parse($TEXT, options) {
|
|||||||
var name;
|
var name;
|
||||||
|
|
||||||
if (is_import) {
|
if (is_import) {
|
||||||
foreign_name = as_symbol(foreign_type);
|
foreign_name = make_symbol(foreign_type);
|
||||||
} else {
|
} else {
|
||||||
name = as_symbol(type);
|
name = make_symbol(type);
|
||||||
}
|
}
|
||||||
if (is("name", "as")) {
|
if (is("name", "as")) {
|
||||||
next(); // The "as" word
|
next(); // The "as" word
|
||||||
if (is_import) {
|
if (is_import) {
|
||||||
name = as_symbol(type);
|
name = make_symbol(type);
|
||||||
} else {
|
} else {
|
||||||
foreign_name = as_symbol(foreign_type);
|
foreign_name = make_symbol(foreign_type);
|
||||||
}
|
}
|
||||||
} else if (is_import) {
|
} else if (is_import) {
|
||||||
name = new type(foreign_name);
|
name = new type(foreign_name);
|
||||||
|
|||||||
@@ -263,8 +263,9 @@ AST_Toplevel.DEFMETHOD("figure_out_scope", function(options){
|
|||||||
s.uses_eval = true;
|
s.uses_eval = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
var sym = node.scope.find_variable(name);
|
var sym;
|
||||||
if (!sym) {
|
if (tw.parent() instanceof AST_NameMapping && tw.parent(1).module_name
|
||||||
|
|| !(sym = node.scope.find_variable(name))) {
|
||||||
sym = self.def_global(node);
|
sym = self.def_global(node);
|
||||||
} else if (sym.scope instanceof AST_Lambda && name == "arguments") {
|
} else if (sym.scope instanceof AST_Lambda && name == "arguments") {
|
||||||
sym.scope.uses_arguments = true;
|
sym.scope.uses_arguments = true;
|
||||||
|
|||||||
@@ -154,3 +154,75 @@ issue_2134_2: {
|
|||||||
Foo.prototype = {};
|
Foo.prototype = {};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
redirection: {
|
||||||
|
mangle = {
|
||||||
|
toplevel: true,
|
||||||
|
}
|
||||||
|
input: {
|
||||||
|
let foo = 1, bar = 2;
|
||||||
|
export { foo as delete };
|
||||||
|
export { bar as default };
|
||||||
|
export { foo as var } from "module.js";
|
||||||
|
}
|
||||||
|
expect: {
|
||||||
|
let o = 1, d = 2;
|
||||||
|
export { o as delete };
|
||||||
|
export { d as default };
|
||||||
|
export { foo as var } from "module.js";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
keyword_invalid_1: {
|
||||||
|
input: {
|
||||||
|
export { default };
|
||||||
|
}
|
||||||
|
expect: {
|
||||||
|
export { default };
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
keyword_invalid_2: {
|
||||||
|
input: {
|
||||||
|
export { default as Alias };
|
||||||
|
}
|
||||||
|
expect: {
|
||||||
|
export { default as Alias };
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
keyword_invalid_3: {
|
||||||
|
input: {
|
||||||
|
export { default as default };
|
||||||
|
}
|
||||||
|
expect: {
|
||||||
|
export { default as default };
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
keyword_valid_1: {
|
||||||
|
input: {
|
||||||
|
export { default } from "module.js";
|
||||||
|
}
|
||||||
|
expect: {
|
||||||
|
export { default } from "module.js";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
keyword_valid_2: {
|
||||||
|
input: {
|
||||||
|
export { default as Alias } from "module.js";
|
||||||
|
}
|
||||||
|
expect: {
|
||||||
|
export { default as Alias } from "module.js";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
keyword_valid_3: {
|
||||||
|
input: {
|
||||||
|
export { default as default } from "module.js";
|
||||||
|
}
|
||||||
|
expect: {
|
||||||
|
export { default as default } from "module.js";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user