Skip to content

Commit 6a737c8

Browse files
committed
Move async generators to esnext
1 parent 0d7c9dc commit 6a737c8

File tree

67 files changed

+1261
-1089
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

67 files changed

+1261
-1089
lines changed

Gulpfile.ts

+10-1
Original file line numberDiff line numberDiff line change
@@ -136,6 +136,14 @@ const es2017LibrarySourceMap = es2017LibrarySource.map(function(source) {
136136
return { target: "lib." + source, sources: ["header.d.ts", source] };
137137
});
138138

139+
const esnextLibrarySource = [
140+
"esnext.asynciterable.d.ts"
141+
];
142+
143+
const esnextLibrarySourceMap = esnextLibrarySource.map(function (source) {
144+
return { target: "lib." + source, sources: ["header.d.ts", source] };
145+
});
146+
139147
const hostsLibrarySources = ["dom.generated.d.ts", "webworker.importscripts.d.ts", "scripthost.d.ts"];
140148

141149
const librarySourceMap = [
@@ -150,11 +158,12 @@ const librarySourceMap = [
150158
{ target: "lib.es2015.d.ts", sources: ["header.d.ts", "es2015.d.ts"] },
151159
{ target: "lib.es2016.d.ts", sources: ["header.d.ts", "es2016.d.ts"] },
152160
{ target: "lib.es2017.d.ts", sources: ["header.d.ts", "es2017.d.ts"] },
161+
{ target: "lib.esnext.d.ts", sources: ["header.d.ts", "esnext.d.ts"] },
153162

154163
// JavaScript + all host library
155164
{ target: "lib.d.ts", sources: ["header.d.ts", "es5.d.ts"].concat(hostsLibrarySources) },
156165
{ target: "lib.es6.d.ts", sources: ["header.d.ts", "es5.d.ts"].concat(es2015LibrarySources, hostsLibrarySources, "dom.iterable.d.ts") }
157-
].concat(es2015LibrarySourceMap, es2016LibrarySourceMap, es2017LibrarySourceMap);
166+
].concat(es2015LibrarySourceMap, es2016LibrarySourceMap, es2017LibrarySourceMap, esnextLibrarySourceMap);
158167

159168
const libraryTargets = librarySourceMap.map(function(f) {
160169
return path.join(builtLocalDirectory, f.target);

Jakefile.js

+11-3
Original file line numberDiff line numberDiff line change
@@ -305,14 +305,21 @@ var es2016LibrarySourceMap = es2016LibrarySource.map(function (source) {
305305
var es2017LibrarySource = [
306306
"es2017.object.d.ts",
307307
"es2017.sharedmemory.d.ts",
308-
"es2017.string.d.ts",
309-
"es2017.asynciterable.d.ts"
308+
"es2017.string.d.ts"
310309
];
311310

312311
var es2017LibrarySourceMap = es2017LibrarySource.map(function (source) {
313312
return { target: "lib." + source, sources: ["header.d.ts", source] };
314313
});
315314

315+
var esnextLibrarySource = [
316+
"esnext.asynciterable.d.ts"
317+
];
318+
319+
var esnextLibrarySourceMap = esnextLibrarySource.map(function (source) {
320+
return { target: "lib." + source, sources: ["header.d.ts", source] };
321+
});
322+
316323
var hostsLibrarySources = ["dom.generated.d.ts", "webworker.importscripts.d.ts", "scripthost.d.ts"];
317324

318325
var librarySourceMap = [
@@ -327,11 +334,12 @@ var librarySourceMap = [
327334
{ target: "lib.es2015.d.ts", sources: ["header.d.ts", "es2015.d.ts"] },
328335
{ target: "lib.es2016.d.ts", sources: ["header.d.ts", "es2016.d.ts"] },
329336
{ target: "lib.es2017.d.ts", sources: ["header.d.ts", "es2017.d.ts"] },
337+
{ target: "lib.esnext.d.ts", sources: ["header.d.ts", "esnext.d.ts"] },
330338

331339
// JavaScript + all host library
332340
{ target: "lib.d.ts", sources: ["header.d.ts", "es5.d.ts"].concat(hostsLibrarySources) },
333341
{ target: "lib.es6.d.ts", sources: ["header.d.ts", "es5.d.ts"].concat(es2015LibrarySources, hostsLibrarySources, "dom.iterable.d.ts") }
334-
].concat(es2015LibrarySourceMap, es2016LibrarySourceMap, es2017LibrarySourceMap);
342+
].concat(es2015LibrarySourceMap, es2016LibrarySourceMap, es2017LibrarySourceMap, esnextLibrarySourceMap);
335343

336344
var libraryTargets = librarySourceMap.map(function (f) {
337345
return path.join(builtLocalDirectory, f.target);

src/compiler/binder.ts

+7-15
Original file line numberDiff line numberDiff line change
@@ -2791,7 +2791,7 @@ namespace ts {
27912791

27922792
// An async method declaration is ES2017 syntax.
27932793
if (hasModifier(node, ModifierFlags.Async)) {
2794-
transformFlags |= TransformFlags.AssertES2017;
2794+
transformFlags |= node.asteriskToken ? TransformFlags.AssertESNext : TransformFlags.AssertES2017;
27952795
}
27962796

27972797
// Currently, we only support generators that were originally async function bodies.
@@ -2861,7 +2861,7 @@ namespace ts {
28612861

28622862
// An async function declaration is ES2017 syntax.
28632863
if (modifierFlags & ModifierFlags.Async) {
2864-
transformFlags |= TransformFlags.AssertES2017;
2864+
transformFlags |= node.asteriskToken ? TransformFlags.AssertESNext : TransformFlags.AssertES2017;
28652865
}
28662866

28672867
// function declarations with object rest destructuring are ES Next syntax
@@ -2903,7 +2903,7 @@ namespace ts {
29032903

29042904
// An async function expression is ES2017 syntax.
29052905
if (hasModifier(node, ModifierFlags.Async)) {
2906-
transformFlags |= TransformFlags.AssertES2017;
2906+
transformFlags |= node.asteriskToken ? TransformFlags.AssertESNext : TransformFlags.AssertES2017;
29072907
}
29082908

29092909
// function expressions with object rest destructuring are ES Next syntax
@@ -3092,8 +3092,8 @@ namespace ts {
30923092
switch (kind) {
30933093
case SyntaxKind.AsyncKeyword:
30943094
case SyntaxKind.AwaitExpression:
3095-
// async/await is ES2017 syntax
3096-
transformFlags |= TransformFlags.AssertES2017;
3095+
// async/await is ES2017 syntax, but may be ESNext syntax (for async generators)
3096+
transformFlags |= TransformFlags.AssertESNext | TransformFlags.AssertES2017;
30973097
break;
30983098

30993099
case SyntaxKind.PublicKeyword:
@@ -3124,14 +3124,6 @@ namespace ts {
31243124
transformFlags |= TransformFlags.AssertJsx;
31253125
break;
31263126

3127-
case SyntaxKind.ForOfStatement:
3128-
if ((<ForOfStatement>node).awaitModifier) {
3129-
transformFlags |= TransformFlags.AssertES2017;
3130-
}
3131-
3132-
transformFlags |= TransformFlags.AssertES2015;
3133-
break;
3134-
31353127
case SyntaxKind.NoSubstitutionTemplateLiteral:
31363128
case SyntaxKind.TemplateHead:
31373129
case SyntaxKind.TemplateMiddle:
@@ -3148,15 +3140,15 @@ namespace ts {
31483140
case SyntaxKind.ForOfStatement:
31493141
// This node is either ES2015 syntax or ES2017 syntax (if it is a for-await-of).
31503142
if ((<ForOfStatement>node).awaitModifier) {
3151-
transformFlags |= TransformFlags.AssertES2017;
3143+
transformFlags |= TransformFlags.AssertESNext;
31523144
}
31533145
transformFlags |= TransformFlags.AssertES2015;
31543146
break;
31553147

31563148
case SyntaxKind.YieldExpression:
31573149
// This node is either ES2015 syntax (in a generator) or ES2017 syntax (in an async
31583150
// generator).
3159-
transformFlags |= TransformFlags.AssertES2017 | TransformFlags.AssertES2015 | TransformFlags.ContainsYield;
3151+
transformFlags |= TransformFlags.AssertESNext | TransformFlags.AssertES2015 | TransformFlags.ContainsYield;
31603152
break;
31613153

31623154
case SyntaxKind.AnyKeyword:

src/compiler/commandLineParser.ts

+2-1
Original file line numberDiff line numberDiff line change
@@ -426,6 +426,7 @@ namespace ts {
426426
"es7": "lib.es2016.d.ts",
427427
"es2016": "lib.es2016.d.ts",
428428
"es2017": "lib.es2017.d.ts",
429+
"esnext": "lib.esnext.d.ts",
429430
// Host only
430431
"dom": "lib.dom.d.ts",
431432
"dom.iterable": "lib.dom.iterable.d.ts",
@@ -445,7 +446,7 @@ namespace ts {
445446
"es2017.object": "lib.es2017.object.d.ts",
446447
"es2017.sharedmemory": "lib.es2017.sharedmemory.d.ts",
447448
"es2017.string": "lib.es2017.string.d.ts",
448-
"es2017.asynciterable": "lib.es2017.asynciterable.d.ts",
449+
"esnext.asynciterable": "lib.esnext.asynciterable.d.ts",
449450
}),
450451
},
451452
description: Diagnostics.Specify_library_files_to_be_included_in_the_compilation_Colon

src/compiler/factory.ts

+2-3
Original file line numberDiff line numberDiff line change
@@ -1866,9 +1866,8 @@ namespace ts {
18661866
);
18671867
}
18681868
else {
1869-
const expression = node;
1870-
const updatedExpression = createAssignment(expression, boundValue, /*location*/ expression);
1871-
return createStatement(updatedExpression, /*location*/ expression);
1869+
const updatedExpression = createAssignment(node, boundValue, /*location*/ node);
1870+
return createStatement(updatedExpression, /*location*/ node);
18721871
}
18731872
}
18741873

src/compiler/transformers/es2015.ts

+14-14
Original file line numberDiff line numberDiff line change
@@ -2149,6 +2149,20 @@ namespace ts {
21492149
: restoreEnclosingLabel(visitNode(statement, visitor, isStatement), node, convertedLoopState && resetLabel);
21502150
}
21512151

2152+
function visitIterationStatement(node: IterationStatement, outermostLabeledStatement: LabeledStatement) {
2153+
switch (node.kind) {
2154+
case SyntaxKind.DoStatement:
2155+
case SyntaxKind.WhileStatement:
2156+
return visitDoOrWhileStatement(<DoStatement | WhileStatement>node, outermostLabeledStatement);
2157+
case SyntaxKind.ForStatement:
2158+
return visitForStatement(<ForStatement>node, outermostLabeledStatement);
2159+
case SyntaxKind.ForInStatement:
2160+
return visitForInStatement(<ForInStatement>node, outermostLabeledStatement);
2161+
case SyntaxKind.ForOfStatement:
2162+
return visitForOfStatement(<ForOfStatement>node, outermostLabeledStatement);
2163+
}
2164+
}
2165+
21522166
function visitIterationStatementWithFacts(excludeFacts: HierarchyFacts, includeFacts: HierarchyFacts, node: IterationStatement, outermostLabeledStatement: LabeledStatement, convert?: LoopConverter) {
21532167
const ancestorFacts = enterSubtree(excludeFacts, includeFacts);
21542168
const updated = convertIterationStatementBodyIfNecessary(node, outermostLabeledStatement, convert);
@@ -2488,20 +2502,6 @@ namespace ts {
24882502
);
24892503
}
24902504

2491-
function visitIterationStatement(node: IterationStatement, outermostLabeledStatement: LabeledStatement) {
2492-
switch (node.kind) {
2493-
case SyntaxKind.DoStatement:
2494-
case SyntaxKind.WhileStatement:
2495-
return visitDoOrWhileStatement(<DoStatement | WhileStatement>node, outermostLabeledStatement);
2496-
case SyntaxKind.ForStatement:
2497-
return visitForStatement(<ForStatement>node, outermostLabeledStatement);
2498-
case SyntaxKind.ForInStatement:
2499-
return visitForInStatement(<ForInStatement>node, outermostLabeledStatement);
2500-
case SyntaxKind.ForOfStatement:
2501-
return visitForOfStatement(<ForOfStatement>node, outermostLabeledStatement);
2502-
}
2503-
}
2504-
25052505
/**
25062506
* Visits an ObjectLiteralExpression with computed propety names.
25072507
*

0 commit comments

Comments
 (0)