ES8/ES2017 target tests

This commit is contained in:
Andrej Baran 2016-10-06 00:41:22 +02:00
parent 2c46f9b687
commit d16e846ab4
6 changed files with 338 additions and 2 deletions

View File

@ -165,7 +165,7 @@ namespace ts {
start: undefined,
length: undefined,
}, {
messageText: "Argument for '--target' option must be: 'es3', 'es5', 'es6', 'es2015'",
messageText: "Argument for '--target' option must be: 'es3', 'es5', 'es6', 'es8', 'es2015', 'es2017'",
category: ts.Diagnostics.Argument_for_0_option_must_be_Colon_1.category,
code: ts.Diagnostics.Argument_for_0_option_must_be_Colon_1.code,

View File

@ -176,7 +176,7 @@ namespace ts {
file: undefined,
start: 0,
length: 0,
messageText: "Argument for '--target' option must be: 'es3', 'es5', 'es6', 'es2015'",
messageText: "Argument for '--target' option must be: 'es3', 'es5', 'es6', 'es8', 'es2015', 'es2017'",
code: Diagnostics.Argument_for_0_option_must_be_Colon_1.code,
category: Diagnostics.Argument_for_0_option_must_be_Colon_1.category
}]

View File

@ -0,0 +1,87 @@
//// [es8-async.ts]
async (): Promise<void> => {
await 0;
}
async function asyncFunc() {
await 0;
}
const asycnArrowFunc = async (): Promise<void> => {
await 0;
}
async function asyncIIFE() {
await 0;
await (async function(): Promise<void> {
await 1;
})();
await (async function asyncNamedFunc(): Promise<void> {
await 1;
})();
await (async (): Promise<void> => {
await 1;
})();
}
class AsyncClass {
asyncPropFunc = async function(): Promise<void> {
await 2;
}
asyncPropNamedFunc = async function namedFunc(): Promise<void> {
await 2;
}
asyncPropArrowFunc = async (): Promise<void> => {
await 2;
}
async asyncMethod(): Promise<void> {
await 2;
}
}
//// [es8-async.js]
async () => {
await 0;
};
async function asyncFunc() {
await 0;
}
const asycnArrowFunc = async () => {
await 0;
};
async function asyncIIFE() {
await 0;
await (async function () {
await 1;
})();
await (async function asyncNamedFunc() {
await 1;
})();
await (async () => {
await 1;
})();
}
class AsyncClass {
constructor() {
this.asyncPropFunc = async function () {
await 2;
};
this.asyncPropNamedFunc = async function namedFunc() {
await 2;
};
this.asyncPropArrowFunc = async () => {
await 2;
};
}
async asyncMethod() {
await 2;
}
}

View File

@ -0,0 +1,79 @@
=== tests/cases/compiler/es8-async.ts ===
async (): Promise<void> => {
>Promise : Symbol(Promise, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --))
await 0;
}
async function asyncFunc() {
>asyncFunc : Symbol(asyncFunc, Decl(es8-async.ts, 3, 1))
await 0;
}
const asycnArrowFunc = async (): Promise<void> => {
>asycnArrowFunc : Symbol(asycnArrowFunc, Decl(es8-async.ts, 9, 5))
>Promise : Symbol(Promise, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --))
await 0;
}
async function asyncIIFE() {
>asyncIIFE : Symbol(asyncIIFE, Decl(es8-async.ts, 11, 1))
await 0;
await (async function(): Promise<void> {
>Promise : Symbol(Promise, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --))
await 1;
})();
await (async function asyncNamedFunc(): Promise<void> {
>asyncNamedFunc : Symbol(asyncNamedFunc, Decl(es8-async.ts, 20, 11))
>Promise : Symbol(Promise, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --))
await 1;
})();
await (async (): Promise<void> => {
>Promise : Symbol(Promise, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --))
await 1;
})();
}
class AsyncClass {
>AsyncClass : Symbol(AsyncClass, Decl(es8-async.ts, 27, 1))
asyncPropFunc = async function(): Promise<void> {
>asyncPropFunc : Symbol(AsyncClass.asyncPropFunc, Decl(es8-async.ts, 29, 18))
>Promise : Symbol(Promise, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --))
await 2;
}
asyncPropNamedFunc = async function namedFunc(): Promise<void> {
>asyncPropNamedFunc : Symbol(AsyncClass.asyncPropNamedFunc, Decl(es8-async.ts, 32, 5))
>namedFunc : Symbol(namedFunc, Decl(es8-async.ts, 34, 24))
>Promise : Symbol(Promise, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --))
await 2;
}
asyncPropArrowFunc = async (): Promise<void> => {
>asyncPropArrowFunc : Symbol(AsyncClass.asyncPropArrowFunc, Decl(es8-async.ts, 36, 5))
>Promise : Symbol(Promise, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --))
await 2;
}
async asyncMethod(): Promise<void> {
>asyncMethod : Symbol(AsyncClass.asyncMethod, Decl(es8-async.ts, 40, 5))
>Promise : Symbol(Promise, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --))
await 2;
}
}

View File

@ -0,0 +1,121 @@
=== tests/cases/compiler/es8-async.ts ===
async (): Promise<void> => {
>async (): Promise<void> => { await 0;} : () => Promise<void>
>Promise : Promise<T>
await 0;
>await 0 : 0
>0 : 0
}
async function asyncFunc() {
>asyncFunc : () => Promise<void>
await 0;
>await 0 : 0
>0 : 0
}
const asycnArrowFunc = async (): Promise<void> => {
>asycnArrowFunc : () => Promise<void>
>async (): Promise<void> => { await 0;} : () => Promise<void>
>Promise : Promise<T>
await 0;
>await 0 : 0
>0 : 0
}
async function asyncIIFE() {
>asyncIIFE : () => Promise<void>
await 0;
>await 0 : 0
>0 : 0
await (async function(): Promise<void> {
>await (async function(): Promise<void> { await 1; })() : void
>(async function(): Promise<void> { await 1; })() : Promise<void>
>(async function(): Promise<void> { await 1; }) : () => Promise<void>
>async function(): Promise<void> { await 1; } : () => Promise<void>
>Promise : Promise<T>
await 1;
>await 1 : 1
>1 : 1
})();
await (async function asyncNamedFunc(): Promise<void> {
>await (async function asyncNamedFunc(): Promise<void> { await 1; })() : void
>(async function asyncNamedFunc(): Promise<void> { await 1; })() : Promise<void>
>(async function asyncNamedFunc(): Promise<void> { await 1; }) : () => Promise<void>
>async function asyncNamedFunc(): Promise<void> { await 1; } : () => Promise<void>
>asyncNamedFunc : () => Promise<void>
>Promise : Promise<T>
await 1;
>await 1 : 1
>1 : 1
})();
await (async (): Promise<void> => {
>await (async (): Promise<void> => { await 1; })() : void
>(async (): Promise<void> => { await 1; })() : Promise<void>
>(async (): Promise<void> => { await 1; }) : () => Promise<void>
>async (): Promise<void> => { await 1; } : () => Promise<void>
>Promise : Promise<T>
await 1;
>await 1 : 1
>1 : 1
})();
}
class AsyncClass {
>AsyncClass : AsyncClass
asyncPropFunc = async function(): Promise<void> {
>asyncPropFunc : () => Promise<void>
>async function(): Promise<void> { await 2; } : () => Promise<void>
>Promise : Promise<T>
await 2;
>await 2 : 2
>2 : 2
}
asyncPropNamedFunc = async function namedFunc(): Promise<void> {
>asyncPropNamedFunc : () => Promise<void>
>async function namedFunc(): Promise<void> { await 2; } : () => Promise<void>
>namedFunc : () => Promise<void>
>Promise : Promise<T>
await 2;
>await 2 : 2
>2 : 2
}
asyncPropArrowFunc = async (): Promise<void> => {
>asyncPropArrowFunc : () => Promise<void>
>async (): Promise<void> => { await 2; } : () => Promise<void>
>Promise : Promise<T>
await 2;
>await 2 : 2
>2 : 2
}
async asyncMethod(): Promise<void> {
>asyncMethod : () => Promise<void>
>Promise : Promise<T>
await 2;
>await 2 : 2
>2 : 2
}
}

View File

@ -0,0 +1,49 @@
// @target: es8
// @lib: es2017
// @noEmitHelpers: true
async (): Promise<void> => {
await 0;
}
async function asyncFunc() {
await 0;
}
const asycnArrowFunc = async (): Promise<void> => {
await 0;
}
async function asyncIIFE() {
await 0;
await (async function(): Promise<void> {
await 1;
})();
await (async function asyncNamedFunc(): Promise<void> {
await 1;
})();
await (async (): Promise<void> => {
await 1;
})();
}
class AsyncClass {
asyncPropFunc = async function(): Promise<void> {
await 2;
}
asyncPropNamedFunc = async function namedFunc(): Promise<void> {
await 2;
}
asyncPropArrowFunc = async (): Promise<void> => {
await 2;
}
async asyncMethod(): Promise<void> {
await 2;
}
}