support for [await]...of statements (#4627)
This commit is contained in:
@@ -715,9 +715,13 @@ function OutputStream(options) {
|
||||
|| p instanceof AST_Conditional
|
||||
// [ a = (1, 2) ] = [] ---> a == 2
|
||||
|| p instanceof AST_DefaultValue
|
||||
// { [(1, 2)]: foo } = bar
|
||||
// { 1: (2, foo) } = bar
|
||||
|| p instanceof AST_DestructuredKeyVal
|
||||
// for (foo of (bar, baz));
|
||||
|| p instanceof AST_ForOf
|
||||
// { [(1, 2)]: 3 }[2] ---> 3
|
||||
// { foo: (1, 2) }.foo ---> 2
|
||||
|| p instanceof AST_DestructuredKeyVal
|
||||
|| p instanceof AST_ObjectProperty
|
||||
// (1, {foo:2}).foo or (1, {foo:2})["foo"] ---> 2
|
||||
|| p instanceof AST_PropAccess && p.expression === this
|
||||
@@ -978,20 +982,25 @@ function OutputStream(options) {
|
||||
output.space();
|
||||
force_statement(self.body, output);
|
||||
});
|
||||
DEFPRINT(AST_ForIn, function(output) {
|
||||
var self = this;
|
||||
output.print("for");
|
||||
output.space();
|
||||
output.with_parens(function() {
|
||||
self.init.print(output);
|
||||
function print_for_enum(prefix, infix) {
|
||||
return function(output) {
|
||||
var self = this;
|
||||
output.print(prefix);
|
||||
output.space();
|
||||
output.print("in");
|
||||
output.with_parens(function() {
|
||||
self.init.print(output);
|
||||
output.space();
|
||||
output.print(infix);
|
||||
output.space();
|
||||
self.object.print(output);
|
||||
});
|
||||
output.space();
|
||||
self.object.print(output);
|
||||
});
|
||||
output.space();
|
||||
force_statement(self.body, output);
|
||||
});
|
||||
force_statement(self.body, output);
|
||||
};
|
||||
}
|
||||
DEFPRINT(AST_ForAwaitOf, print_for_enum("for await", "of"));
|
||||
DEFPRINT(AST_ForIn, print_for_enum("for", "in"));
|
||||
DEFPRINT(AST_ForOf, print_for_enum("for", "of"));
|
||||
DEFPRINT(AST_With, function(output) {
|
||||
var self = this;
|
||||
output.print("with");
|
||||
@@ -1226,7 +1235,7 @@ function OutputStream(options) {
|
||||
def.print(output);
|
||||
});
|
||||
var p = output.parent();
|
||||
if (p && p.init !== self || !(p instanceof AST_For || p instanceof AST_ForIn)) output.semicolon();
|
||||
if (!(p instanceof AST_IterationStatement && p.init === self)) output.semicolon();
|
||||
};
|
||||
}
|
||||
DEFPRINT(AST_Const, print_definitinos("const"));
|
||||
@@ -1253,7 +1262,7 @@ function OutputStream(options) {
|
||||
output.print("=");
|
||||
output.space();
|
||||
var p = output.parent(1);
|
||||
var noin = p instanceof AST_For || p instanceof AST_ForIn;
|
||||
var noin = p instanceof AST_For || p instanceof AST_ForEnumeration;
|
||||
parenthesize_for_noin(self.value, output, noin);
|
||||
}
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user