support export statements (#4650)

This commit is contained in:
Alex Lam S.L
2021-02-14 20:13:54 +00:00
committed by GitHub
parent b7219ac489
commit c21f096ab8
9 changed files with 526 additions and 16 deletions

View File

@@ -892,10 +892,6 @@ function OutputStream(options) {
use_asm = was_asm;
}
DEFPRINT(AST_Statement, function(output) {
this.body.print(output);
output.semicolon();
});
DEFPRINT(AST_Toplevel, function(output) {
display_body(this.body, true, output, true);
output.print("");
@@ -1011,6 +1007,64 @@ function OutputStream(options) {
output.space();
force_statement(self.body, output);
});
DEFPRINT(AST_ExportDeclaration, function(output) {
output.print("export");
output.space();
this.body.print(output);
});
DEFPRINT(AST_ExportDefault, function(output) {
output.print("export");
output.space();
output.print("default");
output.space();
this.body.print(output);
output.semicolon();
});
DEFPRINT(AST_ExportForeign, function(output) {
var self = this;
output.print("export");
output.space();
var len = self.keys.length;
if (len == 0) {
print_braced_empty(self, output);
} else if (self.keys[0] == "*") {
print_entry(0);
} else output.with_block(function() {
output.indent();
print_entry(0);
for (var i = 1; i < len; i++) {
output.print(",");
output.newline();
output.indent();
print_entry(i);
}
output.newline();
});
output.space();
output.print("from");
output.space();
output.print_string(self.path, self.quote);
output.semicolon();
function print_entry(index) {
var alias = self.aliases[index];
var key = self.keys[index];
output.print_name(key);
if (alias != key) {
output.space();
output.print("as");
output.space();
output.print_name(alias);
}
}
});
DEFPRINT(AST_ExportReferences, function(output) {
var self = this;
output.print("export");
output.space();
print_properties(self, output);
output.semicolon();
});
DEFPRINT(AST_Import, function(output) {
var self = this;
output.print("import");
@@ -1543,6 +1597,16 @@ function OutputStream(options) {
DEFPRINT(AST_Symbol, function(output) {
print_symbol(this, output);
});
DEFPRINT(AST_SymbolExport, function(output) {
var self = this;
print_symbol(self, output);
if (self.alias) {
output.space();
output.print("as");
output.space();
output.print_name(self.alias);
}
});
DEFPRINT(AST_SymbolImport, function(output) {
var self = this;
if (self.key) {