Skip to content

Commit 833974b

Browse files
twadamichaelficarra
authored andcommitted
1 parent df61463 commit 833974b

File tree

2 files changed

+103
-4
lines changed

2 files changed

+103
-4
lines changed

escodegen.js

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -868,13 +868,15 @@
868868
}
869869

870870
function generateMethodPrefix(prop) {
871-
var func = prop.value;
871+
var func = prop.value, prefix = '';
872872
if (func.async) {
873-
return generateAsyncPrefix(func, !prop.computed);
874-
} else {
873+
prefix += generateAsyncPrefix(func, !prop.computed);
874+
}
875+
if (func.generator) {
875876
// avoid space before method name
876-
return generateStarSuffix(func) ? '*' : '';
877+
prefix += generateStarSuffix(func) ? '*' : '';
877878
}
879+
return prefix;
878880
}
879881

880882
CodeGenerator.prototype.generatePattern = function (node, precedence, flags) {

test/harmony.js

Lines changed: 97 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6280,7 +6280,104 @@ data = {
62806280
}
62816281
}
62826282

6283+
},
6284+
6285+
'ES2018 async generator method': {
6286+
'class C {\n async *readLines(file) {\n while (!file.EOF) {\n yield await file.readLine();\n }\n }\n}': {
6287+
generateFrom: {
6288+
"type": "ClassDeclaration",
6289+
"id": {
6290+
"type": "Identifier",
6291+
"name": "C"
6292+
},
6293+
"superClass": null,
6294+
"body": {
6295+
"type": "ClassBody",
6296+
"body": [
6297+
{
6298+
"type": "MethodDefinition",
6299+
"key": {
6300+
"type": "Identifier",
6301+
"name": "readLines"
6302+
},
6303+
"value": {
6304+
"type": "FunctionExpression",
6305+
"id": null,
6306+
"params": [
6307+
{
6308+
"type": "Identifier",
6309+
"name": "file"
6310+
}
6311+
],
6312+
"body": {
6313+
"type": "BlockStatement",
6314+
"body": [
6315+
{
6316+
"type": "WhileStatement",
6317+
"test": {
6318+
"type": "UnaryExpression",
6319+
"operator": "!",
6320+
"prefix": true,
6321+
"argument": {
6322+
"type": "MemberExpression",
6323+
"object": {
6324+
"type": "Identifier",
6325+
"name": "file"
6326+
},
6327+
"property": {
6328+
"type": "Identifier",
6329+
"name": "EOF"
6330+
},
6331+
"computed": false
6332+
}
6333+
},
6334+
"body": {
6335+
"type": "BlockStatement",
6336+
"body": [
6337+
{
6338+
"type": "ExpressionStatement",
6339+
"expression": {
6340+
"type": "YieldExpression",
6341+
"argument": {
6342+
"type": "AwaitExpression",
6343+
"argument": {
6344+
"type": "CallExpression",
6345+
"callee": {
6346+
"type": "MemberExpression",
6347+
"object": {
6348+
"type": "Identifier",
6349+
"name": "file"
6350+
},
6351+
"property": {
6352+
"type": "Identifier",
6353+
"name": "readLine"
6354+
},
6355+
"computed": false
6356+
},
6357+
"arguments": []
6358+
}
6359+
},
6360+
"delegate": false
6361+
}
6362+
}
6363+
]
6364+
}
6365+
}
6366+
]
6367+
},
6368+
"generator": true,
6369+
"async": true
6370+
},
6371+
"kind": "method",
6372+
"computed": false,
6373+
"static": false
6374+
}
6375+
]
6376+
}
6377+
}
6378+
}
62836379
}
6380+
62846381
};
62856382

62866383
function updateDeeply(target, override) {

0 commit comments

Comments
 (0)