Skip to content

Commit 0e77fd9

Browse files
bakkotmichaelficarra
authored andcommitted
print awaits
1 parent 4094f8d commit 0e77fd9

File tree

4 files changed

+16
-0
lines changed

4 files changed

+16
-0
lines changed

src/coderep.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,7 @@ export function getPrecedence(node) {
120120
return node.arguments.length === 0 ? Precedence.New : Precedence.Member;
121121
case 'UpdateExpression':
122122
return node.isPrefix ? Precedence.Prefix : Precedence.Postfix;
123+
case 'AwaitExpression':
123124
case 'UnaryExpression':
124125
return Precedence.Prefix;
125126
default:

src/formatted-codegen.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ const separatorNames = [
4343
'ARRAY_BEFORE_COMMA',
4444
'ARRAY_AFTER_COMMA',
4545
'SPREAD',
46+
'AWAIT',
4647
'BEFORE_DEFAULT_EQUALS',
4748
'AFTER_DEFAULT_EQUALS',
4849
'REST',
@@ -421,6 +422,10 @@ export class ExtensibleCodeGen {
421422
return this.bracket(content, Sep.ARRAY_INITIAL, Sep.ARRAY_FINAL);
422423
}
423424

425+
reduceAwaitExpression(node, { expression }) {
426+
return seq(this.t('await'), this.sep(Sep.AWAIT), this.p(node.expression, getPrecedence(node), expression));
427+
}
428+
424429
reduceSpreadElement(node, { expression }) {
425430
return seq(this.t('...'), this.sep(Sep.SPREAD), this.p(node.expression, Precedence.Assignment, expression));
426431
}
@@ -1190,6 +1195,7 @@ export class FormattedCodeGen extends ExtensibleCodeGen {
11901195

11911196
sep(separator) {
11921197
switch (separator.type) {
1198+
case 'AWAIT':
11931199
case 'ARRAY_AFTER_COMMA':
11941200
case 'OBJECT_AFTER_COMMA':
11951201
case 'ARGS_AFTER_COMMA':

src/minimal-codegen.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,10 @@ export default class MinimalCodeGen {
8282
return bracket(content);
8383
}
8484

85+
reduceAwaitExpression(node, { expression }) {
86+
return seq(t('await'), p(node.expression, getPrecedence(node), expression));
87+
}
88+
8589
reduceSpreadElement(node, { expression }) {
8690
return seq(t('...'), p(node.expression, Precedence.Assignment, expression));
8791
}

test/simple.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -241,6 +241,11 @@ describe('Code generator', () => {
241241
testModule('({async a(){}})');
242242
});
243243

244+
it('AwaitExpression', () => {
245+
testModule('async function f(){await 0}');
246+
testModule('async function f(){await(a+b)}');
247+
});
248+
244249
it('ArrayAssignmentTarget', () => {
245250
testModule('[]=0');
246251
testModule('[...a]=0');

0 commit comments

Comments
 (0)