[ES6] support async arrow functions (#2153)

fixes #2102
This commit is contained in:
Alex Lam S.L
2017-06-24 05:26:35 +08:00
committed by GitHub
parent 137e4c4753
commit 7b95b63ca1
6 changed files with 73 additions and 58 deletions

View File

@@ -978,12 +978,12 @@ function OutputStream(options) {
AST_Lambda.DEFMETHOD("_do_print", function(output, nokeyword){
var self = this;
if (!nokeyword) {
if (this.async) {
if (self.async) {
output.print("async");
output.space();
}
output.print("function");
if (this.is_generator) {
if (self.is_generator) {
output.star();
}
if (self.name) {
@@ -1038,6 +1038,10 @@ function OutputStream(options) {
var needs_parens = parent instanceof AST_Binary ||
parent instanceof AST_Unary ||
(parent instanceof AST_Call && self === parent.expression);
if (self.async) {
output.print("async");
output.space();
}
if (needs_parens) { output.print("(") }
if (self.argnames.length === 1 && self.argnames[0] instanceof AST_Symbol) {
self.argnames[0].print(output);
@@ -1053,9 +1057,9 @@ function OutputStream(options) {
output.print('=>');
output.space();
if (self.body instanceof AST_Node) {
this.body.print(output);
self.body.print(output);
} else {
print_bracketed(this.body, output);
print_bracketed(self.body, output);
}
if (needs_parens) { output.print(")") }
});