16
lib/parse.js
16
lib/parse.js
@@ -2327,6 +2327,14 @@ function parse($TEXT, options) {
|
||||
}
|
||||
|
||||
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 type = is_import ? AST_SymbolImport : AST_SymbolExport;
|
||||
var start = S.token;
|
||||
@@ -2334,16 +2342,16 @@ function parse($TEXT, options) {
|
||||
var name;
|
||||
|
||||
if (is_import) {
|
||||
foreign_name = as_symbol(foreign_type);
|
||||
foreign_name = make_symbol(foreign_type);
|
||||
} else {
|
||||
name = as_symbol(type);
|
||||
name = make_symbol(type);
|
||||
}
|
||||
if (is("name", "as")) {
|
||||
next(); // The "as" word
|
||||
if (is_import) {
|
||||
name = as_symbol(type);
|
||||
name = make_symbol(type);
|
||||
} else {
|
||||
foreign_name = as_symbol(foreign_type);
|
||||
foreign_name = make_symbol(foreign_type);
|
||||
}
|
||||
} else if (is_import) {
|
||||
name = new type(foreign_name);
|
||||
|
||||
@@ -263,8 +263,9 @@ AST_Toplevel.DEFMETHOD("figure_out_scope", function(options){
|
||||
s.uses_eval = true;
|
||||
}
|
||||
}
|
||||
var sym = node.scope.find_variable(name);
|
||||
if (!sym) {
|
||||
var sym;
|
||||
if (tw.parent() instanceof AST_NameMapping && tw.parent(1).module_name
|
||||
|| !(sym = node.scope.find_variable(name))) {
|
||||
sym = self.def_global(node);
|
||||
} else if (sym.scope instanceof AST_Lambda && name == "arguments") {
|
||||
sym.scope.uses_arguments = true;
|
||||
|
||||
@@ -154,3 +154,75 @@ issue_2134_2: {
|
||||
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