Skip to content

Commit e6dc2f2

Browse files
committed
feat(experimental) async generators
1 parent fe8a265 commit e6dc2f2

6 files changed

Lines changed: 19 additions & 2 deletions

File tree

‎src/Parser/ESParser.js‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@ export default class ESParser {
6565
if (experimental.doExpressions) option.plugins.push('doExpressions');
6666
if (experimental.functionBind) option.plugins.push('functionBind');
6767
if (experimental.functionSent) option.plugins.push('functionSent');
68+
if (experimental.asyncGenerators) option.plugins.push('asyncGenerators');
6869
}
6970

7071
return option;

‎src/Publisher/Builder/template/details.html‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@ <h3 data-ice="anchor">
55
<span data-ice="static"></span>
66
<span class="kind" data-ice="kind"></span>
77
<span class="abstract" data-ice="abstract"></span>
8-
<span data-ice="generator"></span>
98
<span data-ice="async"></span>
9+
<span data-ice="generator"></span>
1010
<span data-ice="name"></span><span data-ice="signature"></span>
1111
<span class="right-info">
1212
<span class="version" data-ice="version">version </span>

‎src/Publisher/Builder/template/summary.html‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@
1212
<td>
1313
<div>
1414
<p>
15-
<span data-ice="generator"></span>
1615
<span data-ice="async"></span>
16+
<span data-ice="generator"></span>
1717
<span data-ice="name"></span><span data-ice="signature"></span>
1818
</p>
1919
</div>

‎src/Typedef/typedef.js‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434
* @property {boolean} experimentalProposal.doExpressions
3535
* @property {boolean} experimentalProposal.functionBind
3636
* @property {boolean} experimentalProposal.functionSent
37+
* @property {boolean} experimentalProposal.asyncGenerators
3738
* @see https://esdoc.org/config.html
3839
*/
3940

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
export default class Foo {
2+
async *method() {
3+
const stream = [ Promise.resolve(4), Promise.resolve(9), Promise.resolve(12) ];
4+
let total = 0;
5+
for await (const val of stream) {
6+
total += await val;
7+
yield total;
8+
}
9+
}
10+
}

‎test/src/ParserTest/ESParserTest.js‎

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,4 +17,9 @@ describe('ESParser', ()=>{
1717
const ast = ESParser.parse({experimentalProposal: {functionSent: true}}, './test/fixture/syntax/FunctionSent.js');
1818
assert(ast.program.sourceType === 'module');
1919
});
20+
21+
it('can parse "async generators"', ()=>{
22+
const ast = ESParser.parse({experimentalProposal: {asyncGenerators: false}}, './test/fixture/syntax/AsyncGenerators.js');
23+
assert(ast.program.sourceType === 'module');
24+
});
2025
});

0 commit comments

Comments
 (0)