Skip to content

Commit 2c3369e

Browse files
author
Arthur Ozga
committed
Merge branch 'master' into ImplementMissingThis
2 parents 33fc26c + ef25b25 commit 2c3369e

File tree

365 files changed

+18493
-4190
lines changed

Some content is hidden

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

365 files changed

+18493
-4190
lines changed

Gulpfile.ts

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ const {runTestsInParallel} = mochaParallel;
4141
Error.stackTraceLimit = 1000;
4242

4343
const cmdLineOptions = minimist(process.argv.slice(2), {
44-
boolean: ["debug", "light", "colors", "lint", "soft"],
44+
boolean: ["debug", "inspect", "light", "colors", "lint", "soft"],
4545
string: ["browser", "tests", "host", "reporter", "stackTraceLimit"],
4646
alias: {
4747
d: "debug",
@@ -57,6 +57,7 @@ const cmdLineOptions = minimist(process.argv.slice(2), {
5757
soft: false,
5858
colors: process.env.colors || process.env.color || true,
5959
debug: process.env.debug || process.env.d,
60+
inspect: process.env.inspect,
6061
host: process.env.TYPESCRIPT_HOST || process.env.host || "node",
6162
browser: process.env.browser || process.env.b || "IE",
6263
tests: process.env.test || process.env.tests || process.env.t,
@@ -138,6 +139,14 @@ const es2017LibrarySourceMap = es2017LibrarySource.map(function(source) {
138139
return { target: "lib." + source, sources: ["header.d.ts", source] };
139140
});
140141

142+
const esnextLibrarySource = [
143+
"esnext.asynciterable.d.ts"
144+
];
145+
146+
const esnextLibrarySourceMap = esnextLibrarySource.map(function (source) {
147+
return { target: "lib." + source, sources: ["header.d.ts", source] };
148+
});
149+
141150
const hostsLibrarySources = ["dom.generated.d.ts", "webworker.importscripts.d.ts", "scripthost.d.ts"];
142151

143152
const librarySourceMap = [
@@ -152,11 +161,12 @@ const librarySourceMap = [
152161
{ target: "lib.es2015.d.ts", sources: ["header.d.ts", "es2015.d.ts"] },
153162
{ target: "lib.es2016.d.ts", sources: ["header.d.ts", "es2016.d.ts"] },
154163
{ target: "lib.es2017.d.ts", sources: ["header.d.ts", "es2017.d.ts"] },
164+
{ target: "lib.esnext.d.ts", sources: ["header.d.ts", "esnext.d.ts"] },
155165

156166
// JavaScript + all host library
157167
{ target: "lib.d.ts", sources: ["header.d.ts", "es5.d.ts"].concat(hostsLibrarySources) },
158168
{ target: "lib.es6.d.ts", sources: ["header.d.ts", "es5.d.ts"].concat(es2015LibrarySources, hostsLibrarySources, "dom.iterable.d.ts") }
159-
].concat(es2015LibrarySourceMap, es2016LibrarySourceMap, es2017LibrarySourceMap);
169+
].concat(es2015LibrarySourceMap, es2016LibrarySourceMap, es2017LibrarySourceMap, esnextLibrarySourceMap);
160170

161171
const libraryTargets = librarySourceMap.map(function(f) {
162172
return path.join(builtLocalDirectory, f.target);
@@ -588,6 +598,7 @@ function runConsoleTests(defaultReporter: string, runInParallel: boolean, done:
588598
cleanTestDirs((err) => {
589599
if (err) { console.error(err); failWithStatus(err, 1); }
590600
const debug = cmdLineOptions["debug"];
601+
const inspect = cmdLineOptions["inspect"];
591602
const tests = cmdLineOptions["tests"];
592603
const light = cmdLineOptions["light"];
593604
const stackTraceLimit = cmdLineOptions["stackTraceLimit"];
@@ -624,7 +635,10 @@ function runConsoleTests(defaultReporter: string, runInParallel: boolean, done:
624635
// default timeout is 2sec which really should be enough, but maybe we just need a small amount longer
625636
if (!runInParallel) {
626637
const args = [];
627-
if (debug) {
638+
if (inspect) {
639+
args.push("--inspect");
640+
}
641+
if (inspect || debug) {
628642
args.push("--debug-brk");
629643
}
630644
args.push("-R", reporter);

Jakefile.js

Lines changed: 42 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,8 @@ var harnessSources = harnessCoreSources.concat([
131131
"matchFiles.ts",
132132
"initializeTSConfig.ts",
133133
"printer.ts",
134+
"transform.ts",
135+
"customTransforms.ts",
134136
].map(function (f) {
135137
return path.join(unittestsDirectory, f);
136138
})).concat([
@@ -172,13 +174,21 @@ var es2016LibrarySourceMap = es2016LibrarySource.map(function (source) {
172174
var es2017LibrarySource = [
173175
"es2017.object.d.ts",
174176
"es2017.sharedmemory.d.ts",
175-
"es2017.string.d.ts",
177+
"es2017.string.d.ts"
176178
];
177179

178180
var es2017LibrarySourceMap = es2017LibrarySource.map(function (source) {
179181
return { target: "lib." + source, sources: ["header.d.ts", source] };
180182
});
181183

184+
var esnextLibrarySource = [
185+
"esnext.asynciterable.d.ts"
186+
];
187+
188+
var esnextLibrarySourceMap = esnextLibrarySource.map(function (source) {
189+
return { target: "lib." + source, sources: ["header.d.ts", source] };
190+
});
191+
182192
var hostsLibrarySources = ["dom.generated.d.ts", "webworker.importscripts.d.ts", "scripthost.d.ts"];
183193

184194
var librarySourceMap = [
@@ -193,11 +203,12 @@ var librarySourceMap = [
193203
{ target: "lib.es2015.d.ts", sources: ["header.d.ts", "es2015.d.ts"] },
194204
{ target: "lib.es2016.d.ts", sources: ["header.d.ts", "es2016.d.ts"] },
195205
{ target: "lib.es2017.d.ts", sources: ["header.d.ts", "es2017.d.ts"] },
206+
{ target: "lib.esnext.d.ts", sources: ["header.d.ts", "esnext.d.ts"] },
196207

197208
// JavaScript + all host library
198209
{ target: "lib.d.ts", sources: ["header.d.ts", "es5.d.ts"].concat(hostsLibrarySources) },
199210
{ target: "lib.es6.d.ts", sources: ["header.d.ts", "es5.d.ts"].concat(es2015LibrarySources, hostsLibrarySources, "dom.iterable.d.ts") }
200-
].concat(es2015LibrarySourceMap, es2016LibrarySourceMap, es2017LibrarySourceMap);
211+
].concat(es2015LibrarySourceMap, es2016LibrarySourceMap, es2017LibrarySourceMap, esnextLibrarySourceMap);
201212

202213
var libraryTargets = librarySourceMap.map(function (f) {
203214
return path.join(builtLocalDirectory, f.target);
@@ -783,6 +794,7 @@ function runConsoleTests(defaultReporter, runInParallel) {
783794
}
784795

785796
var debug = process.env.debug || process.env.d;
797+
var inspect = process.env.inspect;
786798
tests = process.env.test || process.env.tests || process.env.t;
787799
var light = process.env.light || false;
788800
var stackTraceLimit = process.env.stackTraceLimit;
@@ -812,18 +824,39 @@ function runConsoleTests(defaultReporter, runInParallel) {
812824
testTimeout = 800000;
813825
}
814826

815-
colors = process.env.colors || process.env.color;
816-
colors = colors ? ' --no-colors ' : ' --colors ';
817-
reporter = process.env.reporter || process.env.r || defaultReporter;
818-
var bail = (process.env.bail || process.env.b) ? "--bail" : "";
827+
var colors = process.env.colors || process.env.color || true;
828+
var reporter = process.env.reporter || process.env.r || defaultReporter;
829+
var bail = process.env.bail || process.env.b;
819830
var lintFlag = process.env.lint !== 'false';
820831

821832
// timeout normally isn't necessary but Travis-CI has been timing out on compiler baselines occasionally
822833
// default timeout is 2sec which really should be enough, but maybe we just need a small amount longer
823834
if (!runInParallel) {
824835
var startTime = mark();
825-
tests = tests ? ' -g "' + tests + '"' : '';
826-
var cmd = "mocha" + (debug ? " --debug-brk" : "") + " -R " + reporter + tests + colors + bail + ' -t ' + testTimeout + ' ' + run;
836+
var args = [];
837+
if (inspect) {
838+
args.push("--inspect");
839+
}
840+
if (inspect || debug) {
841+
args.push("--debug-brk");
842+
}
843+
args.push("-R", reporter);
844+
if (tests) {
845+
args.push("-g", `"${tests}"`);
846+
}
847+
if (colors) {
848+
args.push("--colors");
849+
}
850+
else {
851+
args.push("--no-colors");
852+
}
853+
if (bail) {
854+
args.push("--bail");
855+
}
856+
args.push("-t", testTimeout);
857+
args.push(run);
858+
859+
var cmd = "mocha " + args.join(" ");
827860
console.log(cmd);
828861

829862
var savedNodeEnv = process.env.NODE_ENV;
@@ -844,7 +877,7 @@ function runConsoleTests(defaultReporter, runInParallel) {
844877
var savedNodeEnv = process.env.NODE_ENV;
845878
process.env.NODE_ENV = "development";
846879
var startTime = mark();
847-
runTestsInParallel(taskConfigsFolder, run, { testTimeout: testTimeout, noColors: colors === " --no-colors " }, function (err) {
880+
runTestsInParallel(taskConfigsFolder, run, { testTimeout: testTimeout, noColors: !colors }, function (err) {
848881
process.env.NODE_ENV = savedNodeEnv;
849882
measure(startTime);
850883
// last worker clean everything and runs linter in case if there were no errors

src/compiler/binder.ts

Lines changed: 25 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -957,6 +957,9 @@ namespace ts {
957957
const postLoopLabel = createBranchLabel();
958958
addAntecedent(preLoopLabel, currentFlow);
959959
currentFlow = preLoopLabel;
960+
if (node.kind === SyntaxKind.ForOfStatement) {
961+
bind(node.awaitModifier);
962+
}
960963
bind(node.expression);
961964
addAntecedent(postLoopLabel, currentFlow);
962965
bind(node.initializer);
@@ -2407,7 +2410,7 @@ namespace ts {
24072410

24082411
function bindFunctionDeclaration(node: FunctionDeclaration) {
24092412
if (!isDeclarationFile(file) && !isInAmbientContext(node)) {
2410-
if (isAsyncFunctionLike(node)) {
2413+
if (isAsyncFunction(node)) {
24112414
emitFlags |= NodeFlags.HasAsyncFunctions;
24122415
}
24132416
}
@@ -2424,7 +2427,7 @@ namespace ts {
24242427

24252428
function bindFunctionExpression(node: FunctionExpression) {
24262429
if (!isDeclarationFile(file) && !isInAmbientContext(node)) {
2427-
if (isAsyncFunctionLike(node)) {
2430+
if (isAsyncFunction(node)) {
24282431
emitFlags |= NodeFlags.HasAsyncFunctions;
24292432
}
24302433
}
@@ -2438,7 +2441,7 @@ namespace ts {
24382441

24392442
function bindPropertyOrMethodOrAccessor(node: Declaration, symbolFlags: SymbolFlags, symbolExcludes: SymbolFlags) {
24402443
if (!isDeclarationFile(file) && !isInAmbientContext(node)) {
2441-
if (isAsyncFunctionLike(node)) {
2444+
if (isAsyncFunction(node)) {
24422445
emitFlags |= NodeFlags.HasAsyncFunctions;
24432446
}
24442447
}
@@ -2872,11 +2875,10 @@ namespace ts {
28722875

28732876
// An async method declaration is ES2017 syntax.
28742877
if (hasModifier(node, ModifierFlags.Async)) {
2875-
transformFlags |= TransformFlags.AssertES2017;
2878+
transformFlags |= node.asteriskToken ? TransformFlags.AssertESNext : TransformFlags.AssertES2017;
28762879
}
28772880

2878-
// Currently, we only support generators that were originally async function bodies.
2879-
if (node.asteriskToken && getEmitFlags(node) & EmitFlags.AsyncFunctionBody) {
2881+
if (node.asteriskToken) {
28802882
transformFlags |= TransformFlags.AssertGenerator;
28812883
}
28822884

@@ -2942,7 +2944,7 @@ namespace ts {
29422944

29432945
// An async function declaration is ES2017 syntax.
29442946
if (modifierFlags & ModifierFlags.Async) {
2945-
transformFlags |= TransformFlags.AssertES2017;
2947+
transformFlags |= node.asteriskToken ? TransformFlags.AssertESNext : TransformFlags.AssertES2017;
29462948
}
29472949

29482950
// function declarations with object rest destructuring are ES Next syntax
@@ -2962,7 +2964,7 @@ namespace ts {
29622964
// down-level generator.
29632965
// Currently we do not support transforming any other generator fucntions
29642966
// down level.
2965-
if (node.asteriskToken && getEmitFlags(node) & EmitFlags.AsyncFunctionBody) {
2967+
if (node.asteriskToken) {
29662968
transformFlags |= TransformFlags.AssertGenerator;
29672969
}
29682970
}
@@ -2984,7 +2986,7 @@ namespace ts {
29842986

29852987
// An async function expression is ES2017 syntax.
29862988
if (hasModifier(node, ModifierFlags.Async)) {
2987-
transformFlags |= TransformFlags.AssertES2017;
2989+
transformFlags |= node.asteriskToken ? TransformFlags.AssertESNext : TransformFlags.AssertES2017;
29882990
}
29892991

29902992
// function expressions with object rest destructuring are ES Next syntax
@@ -3003,9 +3005,7 @@ namespace ts {
30033005
// If a FunctionExpression is generator function and is the body of a
30043006
// transformed async function, then this node can be transformed to a
30053007
// down-level generator.
3006-
// Currently we do not support transforming any other generator fucntions
3007-
// down level.
3008-
if (node.asteriskToken && getEmitFlags(node) & EmitFlags.AsyncFunctionBody) {
3008+
if (node.asteriskToken) {
30093009
transformFlags |= TransformFlags.AssertGenerator;
30103010
}
30113011

@@ -3173,8 +3173,8 @@ namespace ts {
31733173
switch (kind) {
31743174
case SyntaxKind.AsyncKeyword:
31753175
case SyntaxKind.AwaitExpression:
3176-
// async/await is ES2017 syntax
3177-
transformFlags |= TransformFlags.AssertES2017;
3176+
// async/await is ES2017 syntax, but may be ESNext syntax (for async generators)
3177+
transformFlags |= TransformFlags.AssertESNext | TransformFlags.AssertES2017;
31783178
break;
31793179

31803180
case SyntaxKind.PublicKeyword:
@@ -3206,10 +3206,6 @@ namespace ts {
32063206
transformFlags |= TransformFlags.AssertJsx;
32073207
break;
32083208

3209-
case SyntaxKind.ForOfStatement:
3210-
// for-of might be ESNext if it has a rest destructuring
3211-
transformFlags |= TransformFlags.AssertESNext;
3212-
// FALLTHROUGH
32133209
case SyntaxKind.NoSubstitutionTemplateLiteral:
32143210
case SyntaxKind.TemplateHead:
32153211
case SyntaxKind.TemplateMiddle:
@@ -3223,9 +3219,18 @@ namespace ts {
32233219
transformFlags |= TransformFlags.AssertES2015;
32243220
break;
32253221

3222+
case SyntaxKind.ForOfStatement:
3223+
// This node is either ES2015 syntax or ES2017 syntax (if it is a for-await-of).
3224+
if ((<ForOfStatement>node).awaitModifier) {
3225+
transformFlags |= TransformFlags.AssertESNext;
3226+
}
3227+
transformFlags |= TransformFlags.AssertES2015;
3228+
break;
3229+
32263230
case SyntaxKind.YieldExpression:
3227-
// This node is ES6 syntax.
3228-
transformFlags |= TransformFlags.AssertES2015 | TransformFlags.ContainsYield;
3231+
// This node is either ES2015 syntax (in a generator) or ES2017 syntax (in an async
3232+
// generator).
3233+
transformFlags |= TransformFlags.AssertESNext | TransformFlags.AssertES2015 | TransformFlags.ContainsYield;
32293234
break;
32303235

32313236
case SyntaxKind.AnyKeyword:

0 commit comments

Comments
 (0)