diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 9a8cf2f8038..9b5691e5abd 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -23585,7 +23585,7 @@ namespace ts { const globalType = resolver.getGlobalIterableIteratorType(/*reportErrors*/ false); const iterationTypes = globalType !== emptyGenericType ? getIterationTypesOfGlobalIterableType(globalType, resolver) : undefined; const iterableIteratorReturnType = iterationTypes ? iterationTypes.returnType : anyType; - const iterableIteratorNextType = iterationTypes ? iterationTypes.nextType : undefinedType; + const iterableIteratorNextType = iterationTypes ? iterationTypes.nextType : unknownType; if (isTypeAssignableTo(returnType, iterableIteratorReturnType) && isTypeAssignableTo(iterableIteratorNextType, nextType)) { if (globalType !== emptyGenericType) { diff --git a/src/lib/es2015.iterable.d.ts b/src/lib/es2015.iterable.d.ts index 937f99d3409..1f60dfb521b 100644 --- a/src/lib/es2015.iterable.d.ts +++ b/src/lib/es2015.iterable.d.ts @@ -20,7 +20,7 @@ interface IteratorReturnResult { type IteratorResult = IteratorYieldResult | IteratorReturnResult; -interface Iterator { +interface Iterator { // NOTE: 'next' is defined using a tuple to ensure we report the correct assignability errors in all places. next(...args: [] | [TNext]): IteratorResult; return?(value?: TReturn): IteratorResult; diff --git a/src/lib/es2018.asynciterable.d.ts b/src/lib/es2018.asynciterable.d.ts index 19a31c72ca4..2f9b4cd4c82 100644 --- a/src/lib/es2018.asynciterable.d.ts +++ b/src/lib/es2018.asynciterable.d.ts @@ -9,7 +9,7 @@ interface SymbolConstructor { readonly asyncIterator: symbol; } -interface AsyncIterator { +interface AsyncIterator { // NOTE: 'next' is defined using a tuple to ensure we report the correct assignability errors in all places. next(...args: [] | [TNext]): Promise>; return?(value?: TReturn | PromiseLike): Promise>; diff --git a/tests/baselines/reference/YieldStarExpression4_es6.types b/tests/baselines/reference/YieldStarExpression4_es6.types index 5a1ebbe6a6e..e63300a4062 100644 --- a/tests/baselines/reference/YieldStarExpression4_es6.types +++ b/tests/baselines/reference/YieldStarExpression4_es6.types @@ -1,6 +1,6 @@ === tests/cases/conformance/es6/yieldExpressions/YieldStarExpression4_es6.ts === function *g() { ->g : () => Generator +>g : () => Generator yield * []; >yield * [] : any diff --git a/tests/baselines/reference/bigintWithLib.errors.txt b/tests/baselines/reference/bigintWithLib.errors.txt index b4c9f65cf9c..bce03890e12 100644 --- a/tests/baselines/reference/bigintWithLib.errors.txt +++ b/tests/baselines/reference/bigintWithLib.errors.txt @@ -5,10 +5,10 @@ tests/cases/compiler/bigintWithLib.ts(16,33): error TS2769: No overload matches Overload 2 of 3, '(array: Iterable): BigInt64Array', gave the following error. Argument of type 'number[]' is not assignable to parameter of type 'Iterable'. Types of property '[Symbol.iterator]' are incompatible. - Type '() => IterableIterator' is not assignable to type '() => Iterator'. - Type 'IterableIterator' is not assignable to type 'Iterator'. + Type '() => IterableIterator' is not assignable to type '() => Iterator'. + Type 'IterableIterator' is not assignable to type 'Iterator'. Types of property 'next' are incompatible. - Type '(...args: [] | [undefined]) => IteratorResult' is not assignable to type '(...args: [] | [undefined]) => IteratorResult'. + Type '(...args: [] | [unknown]) => IteratorResult' is not assignable to type '(...args: [] | [unknown]) => IteratorResult'. Type 'IteratorResult' is not assignable to type 'IteratorResult'. Type 'IteratorYieldResult' is not assignable to type 'IteratorResult'. Type 'IteratorYieldResult' is not assignable to type 'IteratorYieldResult'. @@ -56,10 +56,10 @@ tests/cases/compiler/bigintWithLib.ts(43,26): error TS2345: Argument of type '12 !!! error TS2769: Overload 2 of 3, '(array: Iterable): BigInt64Array', gave the following error. !!! error TS2769: Argument of type 'number[]' is not assignable to parameter of type 'Iterable'. !!! error TS2769: Types of property '[Symbol.iterator]' are incompatible. -!!! error TS2769: Type '() => IterableIterator' is not assignable to type '() => Iterator'. -!!! error TS2769: Type 'IterableIterator' is not assignable to type 'Iterator'. +!!! error TS2769: Type '() => IterableIterator' is not assignable to type '() => Iterator'. +!!! error TS2769: Type 'IterableIterator' is not assignable to type 'Iterator'. !!! error TS2769: Types of property 'next' are incompatible. -!!! error TS2769: Type '(...args: [] | [undefined]) => IteratorResult' is not assignable to type '(...args: [] | [undefined]) => IteratorResult'. +!!! error TS2769: Type '(...args: [] | [unknown]) => IteratorResult' is not assignable to type '(...args: [] | [unknown]) => IteratorResult'. !!! error TS2769: Type 'IteratorResult' is not assignable to type 'IteratorResult'. !!! error TS2769: Type 'IteratorYieldResult' is not assignable to type 'IteratorResult'. !!! error TS2769: Type 'IteratorYieldResult' is not assignable to type 'IteratorYieldResult'. diff --git a/tests/baselines/reference/castOfYield.errors.txt b/tests/baselines/reference/castOfYield.errors.txt index 0d40a4dcd98..90725000c90 100644 --- a/tests/baselines/reference/castOfYield.errors.txt +++ b/tests/baselines/reference/castOfYield.errors.txt @@ -1,8 +1,8 @@ -error TS2318: Cannot find global type 'IterableIterator'. +error TS2318: Cannot find global type 'Generator'. tests/cases/compiler/castOfYield.ts(4,14): error TS1109: Expression expected. -!!! error TS2318: Cannot find global type 'IterableIterator'. +!!! error TS2318: Cannot find global type 'Generator'. ==== tests/cases/compiler/castOfYield.ts (1 errors) ==== function* f() { (yield 0); diff --git a/tests/baselines/reference/emitter.asyncGenerators.classMethods.es2015.types b/tests/baselines/reference/emitter.asyncGenerators.classMethods.es2015.types index 54013c11fce..7864a7d7283 100644 --- a/tests/baselines/reference/emitter.asyncGenerators.classMethods.es2015.types +++ b/tests/baselines/reference/emitter.asyncGenerators.classMethods.es2015.types @@ -36,7 +36,7 @@ class C4 { >C4 : C4 async * f() { ->f : () => AsyncGenerator +>f : () => AsyncGenerator const x = yield* [1]; >x : any diff --git a/tests/baselines/reference/emitter.asyncGenerators.classMethods.es2018.types b/tests/baselines/reference/emitter.asyncGenerators.classMethods.es2018.types index 7c439f49b7f..391089bd229 100644 --- a/tests/baselines/reference/emitter.asyncGenerators.classMethods.es2018.types +++ b/tests/baselines/reference/emitter.asyncGenerators.classMethods.es2018.types @@ -36,7 +36,7 @@ class C4 { >C4 : C4 async * f() { ->f : () => AsyncGenerator +>f : () => AsyncGenerator const x = yield* [1]; >x : any diff --git a/tests/baselines/reference/emitter.asyncGenerators.classMethods.es5.types b/tests/baselines/reference/emitter.asyncGenerators.classMethods.es5.types index bb62ad37038..6f73f470812 100644 --- a/tests/baselines/reference/emitter.asyncGenerators.classMethods.es5.types +++ b/tests/baselines/reference/emitter.asyncGenerators.classMethods.es5.types @@ -36,7 +36,7 @@ class C4 { >C4 : C4 async * f() { ->f : () => AsyncGenerator +>f : () => AsyncGenerator const x = yield* [1]; >x : any diff --git a/tests/baselines/reference/emitter.asyncGenerators.functionDeclarations.es2015.types b/tests/baselines/reference/emitter.asyncGenerators.functionDeclarations.es2015.types index 3dd1afd236d..3a19361e099 100644 --- a/tests/baselines/reference/emitter.asyncGenerators.functionDeclarations.es2015.types +++ b/tests/baselines/reference/emitter.asyncGenerators.functionDeclarations.es2015.types @@ -21,7 +21,7 @@ async function * f3() { } === tests/cases/conformance/emitter/es2015/asyncGenerators/F4.ts === async function * f4() { ->f4 : () => AsyncGenerator +>f4 : () => AsyncGenerator const x = yield* [1]; >x : any diff --git a/tests/baselines/reference/emitter.asyncGenerators.functionDeclarations.es2018.types b/tests/baselines/reference/emitter.asyncGenerators.functionDeclarations.es2018.types index 9034f795efd..d5dc33f6cce 100644 --- a/tests/baselines/reference/emitter.asyncGenerators.functionDeclarations.es2018.types +++ b/tests/baselines/reference/emitter.asyncGenerators.functionDeclarations.es2018.types @@ -21,7 +21,7 @@ async function * f3() { } === tests/cases/conformance/emitter/es2018/asyncGenerators/F4.ts === async function * f4() { ->f4 : () => AsyncGenerator +>f4 : () => AsyncGenerator const x = yield* [1]; >x : any diff --git a/tests/baselines/reference/emitter.asyncGenerators.functionDeclarations.es5.types b/tests/baselines/reference/emitter.asyncGenerators.functionDeclarations.es5.types index 9771364486f..ecff70c9045 100644 --- a/tests/baselines/reference/emitter.asyncGenerators.functionDeclarations.es5.types +++ b/tests/baselines/reference/emitter.asyncGenerators.functionDeclarations.es5.types @@ -21,7 +21,7 @@ async function * f3() { } === tests/cases/conformance/emitter/es5/asyncGenerators/F4.ts === async function * f4() { ->f4 : () => AsyncGenerator +>f4 : () => AsyncGenerator const x = yield* [1]; >x : any diff --git a/tests/baselines/reference/emitter.asyncGenerators.functionExpressions.es2015.types b/tests/baselines/reference/emitter.asyncGenerators.functionExpressions.es2015.types index ee48f52f77a..04a20763887 100644 --- a/tests/baselines/reference/emitter.asyncGenerators.functionExpressions.es2015.types +++ b/tests/baselines/reference/emitter.asyncGenerators.functionExpressions.es2015.types @@ -24,8 +24,8 @@ const f3 = async function * () { } === tests/cases/conformance/emitter/es2015/asyncGenerators/F4.ts === const f4 = async function * () { ->f4 : () => AsyncGenerator ->async function * () { const x = yield* [1];} : () => AsyncGenerator +>f4 : () => AsyncGenerator +>async function * () { const x = yield* [1];} : () => AsyncGenerator const x = yield* [1]; >x : any diff --git a/tests/baselines/reference/emitter.asyncGenerators.functionExpressions.es2018.types b/tests/baselines/reference/emitter.asyncGenerators.functionExpressions.es2018.types index 8f09c423ecd..4bd527aea75 100644 --- a/tests/baselines/reference/emitter.asyncGenerators.functionExpressions.es2018.types +++ b/tests/baselines/reference/emitter.asyncGenerators.functionExpressions.es2018.types @@ -24,8 +24,8 @@ const f3 = async function * () { } === tests/cases/conformance/emitter/es2018/asyncGenerators/F4.ts === const f4 = async function * () { ->f4 : () => AsyncGenerator ->async function * () { const x = yield* [1];} : () => AsyncGenerator +>f4 : () => AsyncGenerator +>async function * () { const x = yield* [1];} : () => AsyncGenerator const x = yield* [1]; >x : any diff --git a/tests/baselines/reference/emitter.asyncGenerators.functionExpressions.es5.types b/tests/baselines/reference/emitter.asyncGenerators.functionExpressions.es5.types index b92f49da91f..e10a0ea0226 100644 --- a/tests/baselines/reference/emitter.asyncGenerators.functionExpressions.es5.types +++ b/tests/baselines/reference/emitter.asyncGenerators.functionExpressions.es5.types @@ -24,8 +24,8 @@ const f3 = async function * () { } === tests/cases/conformance/emitter/es5/asyncGenerators/F4.ts === const f4 = async function * () { ->f4 : () => AsyncGenerator ->async function * () { const x = yield* [1];} : () => AsyncGenerator +>f4 : () => AsyncGenerator +>async function * () { const x = yield* [1];} : () => AsyncGenerator const x = yield* [1]; >x : any diff --git a/tests/baselines/reference/emitter.asyncGenerators.objectLiteralMethods.es2015.types b/tests/baselines/reference/emitter.asyncGenerators.objectLiteralMethods.es2015.types index 5d9d79da634..45c68eca5f3 100644 --- a/tests/baselines/reference/emitter.asyncGenerators.objectLiteralMethods.es2015.types +++ b/tests/baselines/reference/emitter.asyncGenerators.objectLiteralMethods.es2015.types @@ -36,11 +36,11 @@ const o3 = { } === tests/cases/conformance/emitter/es2015/asyncGenerators/O4.ts === const o4 = { ->o4 : { f(): AsyncGenerator; } ->{ async * f() { const x = yield* [1]; }} : { f(): AsyncGenerator; } +>o4 : { f(): AsyncGenerator; } +>{ async * f() { const x = yield* [1]; }} : { f(): AsyncGenerator; } async * f() { ->f : () => AsyncGenerator +>f : () => AsyncGenerator const x = yield* [1]; >x : any diff --git a/tests/baselines/reference/emitter.asyncGenerators.objectLiteralMethods.es2018.types b/tests/baselines/reference/emitter.asyncGenerators.objectLiteralMethods.es2018.types index 5b0b63b66e4..e5a0a52bb47 100644 --- a/tests/baselines/reference/emitter.asyncGenerators.objectLiteralMethods.es2018.types +++ b/tests/baselines/reference/emitter.asyncGenerators.objectLiteralMethods.es2018.types @@ -36,11 +36,11 @@ const o3 = { } === tests/cases/conformance/emitter/es2018/asyncGenerators/O4.ts === const o4 = { ->o4 : { f(): AsyncGenerator; } ->{ async * f() { const x = yield* [1]; }} : { f(): AsyncGenerator; } +>o4 : { f(): AsyncGenerator; } +>{ async * f() { const x = yield* [1]; }} : { f(): AsyncGenerator; } async * f() { ->f : () => AsyncGenerator +>f : () => AsyncGenerator const x = yield* [1]; >x : any diff --git a/tests/baselines/reference/emitter.asyncGenerators.objectLiteralMethods.es5.types b/tests/baselines/reference/emitter.asyncGenerators.objectLiteralMethods.es5.types index b4ab8ea8480..84af6de0968 100644 --- a/tests/baselines/reference/emitter.asyncGenerators.objectLiteralMethods.es5.types +++ b/tests/baselines/reference/emitter.asyncGenerators.objectLiteralMethods.es5.types @@ -36,11 +36,11 @@ const o3 = { } === tests/cases/conformance/emitter/es5/asyncGenerators/O4.ts === const o4 = { ->o4 : { f(): AsyncGenerator; } ->{ async * f() { const x = yield* [1]; }} : { f(): AsyncGenerator; } +>o4 : { f(): AsyncGenerator; } +>{ async * f() { const x = yield* [1]; }} : { f(): AsyncGenerator; } async * f() { ->f : () => AsyncGenerator +>f : () => AsyncGenerator const x = yield* [1]; >x : any diff --git a/tests/baselines/reference/for-of29.errors.txt b/tests/baselines/reference/for-of29.errors.txt index 0f1bead3f13..8967a61af57 100644 --- a/tests/baselines/reference/for-of29.errors.txt +++ b/tests/baselines/reference/for-of29.errors.txt @@ -1,4 +1,4 @@ -tests/cases/conformance/es6/for-ofStatements/for-of29.ts(5,15): error TS2488: Type '{ [Symbol.iterator]?(): Iterator; }' must have a '[Symbol.iterator]()' method that returns an iterator. +tests/cases/conformance/es6/for-ofStatements/for-of29.ts(5,15): error TS2488: Type '{ [Symbol.iterator]?(): Iterator; }' must have a '[Symbol.iterator]()' method that returns an iterator. ==== tests/cases/conformance/es6/for-ofStatements/for-of29.ts (1 errors) ==== @@ -8,5 +8,5 @@ tests/cases/conformance/es6/for-ofStatements/for-of29.ts(5,15): error TS2488: Ty for (var v of iterableWithOptionalIterator) { } ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -!!! error TS2488: Type '{ [Symbol.iterator]?(): Iterator; }' must have a '[Symbol.iterator]()' method that returns an iterator. +!!! error TS2488: Type '{ [Symbol.iterator]?(): Iterator; }' must have a '[Symbol.iterator]()' method that returns an iterator. \ No newline at end of file diff --git a/tests/baselines/reference/for-of29.types b/tests/baselines/reference/for-of29.types index 2f246b56860..d21ac8edc97 100644 --- a/tests/baselines/reference/for-of29.types +++ b/tests/baselines/reference/for-of29.types @@ -1,9 +1,9 @@ === tests/cases/conformance/es6/for-ofStatements/for-of29.ts === var iterableWithOptionalIterator: { ->iterableWithOptionalIterator : { [Symbol.iterator]?(): Iterator; } +>iterableWithOptionalIterator : { [Symbol.iterator]?(): Iterator; } [Symbol.iterator]?(): Iterator ->[Symbol.iterator] : () => Iterator +>[Symbol.iterator] : () => Iterator >Symbol.iterator : symbol >Symbol : SymbolConstructor >iterator : symbol @@ -12,5 +12,5 @@ var iterableWithOptionalIterator: { for (var v of iterableWithOptionalIterator) { } >v : any ->iterableWithOptionalIterator : { [Symbol.iterator]?(): Iterator; } +>iterableWithOptionalIterator : { [Symbol.iterator]?(): Iterator; } diff --git a/tests/baselines/reference/for-of39.errors.txt b/tests/baselines/reference/for-of39.errors.txt index a36c1c28a8c..695b29e42d7 100644 --- a/tests/baselines/reference/for-of39.errors.txt +++ b/tests/baselines/reference/for-of39.errors.txt @@ -2,10 +2,10 @@ tests/cases/conformance/es6/for-ofStatements/for-of39.ts(1,11): error TS2769: No Overload 1 of 3, '(iterable: Iterable): Map', gave the following error. Argument of type '([string, number] | [string, true])[]' is not assignable to parameter of type 'Iterable'. Types of property '[Symbol.iterator]' are incompatible. - Type '() => IterableIterator<[string, number] | [string, true]>' is not assignable to type '() => Iterator'. - Type 'IterableIterator<[string, number] | [string, true]>' is not assignable to type 'Iterator'. + Type '() => IterableIterator<[string, number] | [string, true]>' is not assignable to type '() => Iterator'. + Type 'IterableIterator<[string, number] | [string, true]>' is not assignable to type 'Iterator'. Types of property 'next' are incompatible. - Type '(...args: [] | [undefined]) => IteratorResult<[string, number] | [string, true], any>' is not assignable to type '(...args: [] | [undefined]) => IteratorResult'. + Type '(...args: [] | [unknown]) => IteratorResult<[string, number] | [string, true], any>' is not assignable to type '(...args: [] | [unknown]) => IteratorResult'. Type 'IteratorResult<[string, number] | [string, true], any>' is not assignable to type 'IteratorResult'. Type 'IteratorYieldResult<[string, number] | [string, true]>' is not assignable to type 'IteratorResult'. Type 'IteratorYieldResult<[string, number] | [string, true]>' is not assignable to type 'IteratorYieldResult'. @@ -24,10 +24,10 @@ tests/cases/conformance/es6/for-ofStatements/for-of39.ts(1,11): error TS2769: No !!! error TS2769: Overload 1 of 3, '(iterable: Iterable): Map', gave the following error. !!! error TS2769: Argument of type '([string, number] | [string, true])[]' is not assignable to parameter of type 'Iterable'. !!! error TS2769: Types of property '[Symbol.iterator]' are incompatible. -!!! error TS2769: Type '() => IterableIterator<[string, number] | [string, true]>' is not assignable to type '() => Iterator'. -!!! error TS2769: Type 'IterableIterator<[string, number] | [string, true]>' is not assignable to type 'Iterator'. +!!! error TS2769: Type '() => IterableIterator<[string, number] | [string, true]>' is not assignable to type '() => Iterator'. +!!! error TS2769: Type 'IterableIterator<[string, number] | [string, true]>' is not assignable to type 'Iterator'. !!! error TS2769: Types of property 'next' are incompatible. -!!! error TS2769: Type '(...args: [] | [undefined]) => IteratorResult<[string, number] | [string, true], any>' is not assignable to type '(...args: [] | [undefined]) => IteratorResult'. +!!! error TS2769: Type '(...args: [] | [unknown]) => IteratorResult<[string, number] | [string, true], any>' is not assignable to type '(...args: [] | [unknown]) => IteratorResult'. !!! error TS2769: Type 'IteratorResult<[string, number] | [string, true], any>' is not assignable to type 'IteratorResult'. !!! error TS2769: Type 'IteratorYieldResult<[string, number] | [string, true]>' is not assignable to type 'IteratorResult'. !!! error TS2769: Type 'IteratorYieldResult<[string, number] | [string, true]>' is not assignable to type 'IteratorYieldResult'. diff --git a/tests/baselines/reference/generatorReturnExpressionIsChecked.types b/tests/baselines/reference/generatorReturnExpressionIsChecked.types index 4abe3721a8e..ac2a64258ef 100644 --- a/tests/baselines/reference/generatorReturnExpressionIsChecked.types +++ b/tests/baselines/reference/generatorReturnExpressionIsChecked.types @@ -1,6 +1,6 @@ === tests/cases/compiler/generatorReturnExpressionIsChecked.ts === function* f(): Iterator { ->f : () => Iterator +>f : () => Iterator return invalid; >invalid : any diff --git a/tests/baselines/reference/generatorReturnTypeFallback.3.errors.txt b/tests/baselines/reference/generatorReturnTypeFallback.3.errors.txt index a365ba8c6cd..712f5e62bb2 100644 --- a/tests/baselines/reference/generatorReturnTypeFallback.3.errors.txt +++ b/tests/baselines/reference/generatorReturnTypeFallback.3.errors.txt @@ -4,7 +4,6 @@ error TS2318: Cannot find global type 'Generator'. !!! error TS2318: Cannot find global type 'Generator'. ==== tests/cases/conformance/generators/generatorReturnTypeFallback.3.ts (0 errors) ==== // Do not allow generators to fallback to IterableIterator while in strictNullChecks mode if they need a type for the sent value. - // NOTE: In non-strictNullChecks mode, `undefined` (the default sent value) is assignable to everything. function* f() { const x: string = yield 1; } \ No newline at end of file diff --git a/tests/baselines/reference/generatorReturnTypeFallback.3.symbols b/tests/baselines/reference/generatorReturnTypeFallback.3.symbols index 17252fab306..bad317195a4 100644 --- a/tests/baselines/reference/generatorReturnTypeFallback.3.symbols +++ b/tests/baselines/reference/generatorReturnTypeFallback.3.symbols @@ -1,9 +1,8 @@ === tests/cases/conformance/generators/generatorReturnTypeFallback.3.ts === // Do not allow generators to fallback to IterableIterator while in strictNullChecks mode if they need a type for the sent value. -// NOTE: In non-strictNullChecks mode, `undefined` (the default sent value) is assignable to everything. function* f() { >f : Symbol(f, Decl(generatorReturnTypeFallback.3.ts, 0, 0)) const x: string = yield 1; ->x : Symbol(x, Decl(generatorReturnTypeFallback.3.ts, 3, 9)) +>x : Symbol(x, Decl(generatorReturnTypeFallback.3.ts, 2, 9)) } diff --git a/tests/baselines/reference/generatorReturnTypeFallback.3.types b/tests/baselines/reference/generatorReturnTypeFallback.3.types index 634f3f2277d..70985d08162 100644 --- a/tests/baselines/reference/generatorReturnTypeFallback.3.types +++ b/tests/baselines/reference/generatorReturnTypeFallback.3.types @@ -1,6 +1,5 @@ === tests/cases/conformance/generators/generatorReturnTypeFallback.3.ts === // Do not allow generators to fallback to IterableIterator while in strictNullChecks mode if they need a type for the sent value. -// NOTE: In non-strictNullChecks mode, `undefined` (the default sent value) is assignable to everything. function* f() { >f : () => {} diff --git a/tests/baselines/reference/generatorReturnTypeFallback.4.errors.txt b/tests/baselines/reference/generatorReturnTypeFallback.4.errors.txt new file mode 100644 index 00000000000..dc454cbed04 --- /dev/null +++ b/tests/baselines/reference/generatorReturnTypeFallback.4.errors.txt @@ -0,0 +1,9 @@ +error TS2318: Cannot find global type 'Generator'. + + +!!! error TS2318: Cannot find global type 'Generator'. +==== tests/cases/conformance/generators/generatorReturnTypeFallback.4.ts (0 errors) ==== + // Do not allow generators to fallback to IterableIterator if they need a type for the sent value while not in strictNullChecks mode. + function* f() { + const x: string = yield 1; + } \ No newline at end of file diff --git a/tests/baselines/reference/generatorReturnTypeFallback.4.symbols b/tests/baselines/reference/generatorReturnTypeFallback.4.symbols index 3be221fffca..306e1ba44aa 100644 --- a/tests/baselines/reference/generatorReturnTypeFallback.4.symbols +++ b/tests/baselines/reference/generatorReturnTypeFallback.4.symbols @@ -1,9 +1,8 @@ === tests/cases/conformance/generators/generatorReturnTypeFallback.4.ts === -// Allow generators to fallback to IterableIterator if they are not in strictNullChecks mode -// NOTE: In non-strictNullChecks mode, `undefined` (the default sent value) is assignable to everything. +// Do not allow generators to fallback to IterableIterator if they need a type for the sent value while not in strictNullChecks mode. function* f() { >f : Symbol(f, Decl(generatorReturnTypeFallback.4.ts, 0, 0)) const x: string = yield 1; ->x : Symbol(x, Decl(generatorReturnTypeFallback.4.ts, 3, 9)) +>x : Symbol(x, Decl(generatorReturnTypeFallback.4.ts, 2, 9)) } diff --git a/tests/baselines/reference/generatorReturnTypeFallback.4.types b/tests/baselines/reference/generatorReturnTypeFallback.4.types index 2879058f37f..6573b829082 100644 --- a/tests/baselines/reference/generatorReturnTypeFallback.4.types +++ b/tests/baselines/reference/generatorReturnTypeFallback.4.types @@ -1,8 +1,7 @@ === tests/cases/conformance/generators/generatorReturnTypeFallback.4.ts === -// Allow generators to fallback to IterableIterator if they are not in strictNullChecks mode -// NOTE: In non-strictNullChecks mode, `undefined` (the default sent value) is assignable to everything. +// Do not allow generators to fallback to IterableIterator if they need a type for the sent value while not in strictNullChecks mode. function* f() { ->f : () => IterableIterator +>f : () => {} const x: string = yield 1; >x : string diff --git a/tests/baselines/reference/generatorReturnTypeFallback.5.types b/tests/baselines/reference/generatorReturnTypeFallback.5.types index d0ed4127465..a2f2325f8d0 100644 --- a/tests/baselines/reference/generatorReturnTypeFallback.5.types +++ b/tests/baselines/reference/generatorReturnTypeFallback.5.types @@ -4,6 +4,6 @@ function* f(): IterableIterator { >f : () => IterableIterator yield 1; ->yield 1 : undefined +>yield 1 : unknown >1 : 1 } diff --git a/tests/baselines/reference/generatorReturnTypeInference.types b/tests/baselines/reference/generatorReturnTypeInference.types index a0942c9b700..e0fa00be89f 100644 --- a/tests/baselines/reference/generatorReturnTypeInference.types +++ b/tests/baselines/reference/generatorReturnTypeInference.types @@ -29,7 +29,7 @@ function* g002() { // Generator } function* g003() { // Generator ->g003 : () => Generator +>g003 : () => Generator yield* []; >yield* [] : any @@ -37,7 +37,7 @@ function* g003() { // Generator } function* g004() { // Generator ->g004 : () => Generator +>g004 : () => Generator yield* iterableIterator; >yield* iterableIterator : any diff --git a/tests/baselines/reference/generatorReturnTypeInferenceNonStrict.types b/tests/baselines/reference/generatorReturnTypeInferenceNonStrict.types index 4d6754d85bf..46f54436d0b 100644 --- a/tests/baselines/reference/generatorReturnTypeInferenceNonStrict.types +++ b/tests/baselines/reference/generatorReturnTypeInferenceNonStrict.types @@ -29,7 +29,7 @@ function* g002() { // Generator } function* g003() { // Generator ->g003 : () => Generator +>g003 : () => Generator // NOTE: In strict mode, `[]` produces the type `never[]`. // In non-strict mode, `[]` produces the type `undefined[]` which is implicitly any. @@ -39,7 +39,7 @@ function* g003() { // Generator } function* g004() { // Generator ->g004 : () => Generator +>g004 : () => Generator yield* iterableIterator; >yield* iterableIterator : any diff --git a/tests/baselines/reference/generatorTypeCheck1.types b/tests/baselines/reference/generatorTypeCheck1.types index 72597601a85..c70045fc528 100644 --- a/tests/baselines/reference/generatorTypeCheck1.types +++ b/tests/baselines/reference/generatorTypeCheck1.types @@ -1,4 +1,4 @@ === tests/cases/conformance/es6/yieldExpressions/generatorTypeCheck1.ts === function* g1(): Iterator { } ->g1 : () => Iterator +>g1 : () => Iterator diff --git a/tests/baselines/reference/generatorTypeCheck13.types b/tests/baselines/reference/generatorTypeCheck13.types index 2d5bdd5827e..2148fb50a40 100644 --- a/tests/baselines/reference/generatorTypeCheck13.types +++ b/tests/baselines/reference/generatorTypeCheck13.types @@ -3,7 +3,7 @@ function* g(): IterableIterator { >g : () => IterableIterator yield 0; ->yield 0 : undefined +>yield 0 : unknown >0 : 0 return ""; diff --git a/tests/baselines/reference/generatorTypeCheck17.types b/tests/baselines/reference/generatorTypeCheck17.types index e6631757d0d..8ce29dbb469 100644 --- a/tests/baselines/reference/generatorTypeCheck17.types +++ b/tests/baselines/reference/generatorTypeCheck17.types @@ -12,10 +12,10 @@ function* g(): IterableIterator { >g : () => IterableIterator yield; ->yield : undefined +>yield : unknown yield new Bar; ->yield new Bar : undefined +>yield new Bar : unknown >new Bar : Bar >Bar : typeof Bar } diff --git a/tests/baselines/reference/generatorTypeCheck18.types b/tests/baselines/reference/generatorTypeCheck18.types index 73a9a0d88c7..8d5b50b2727 100644 --- a/tests/baselines/reference/generatorTypeCheck18.types +++ b/tests/baselines/reference/generatorTypeCheck18.types @@ -11,10 +11,10 @@ function* g(): IterableIterator { >g : () => IterableIterator yield; ->yield : undefined +>yield : unknown yield new Baz; ->yield new Baz : undefined +>yield new Baz : unknown >new Baz : Baz >Baz : typeof Baz } diff --git a/tests/baselines/reference/generatorTypeCheck19.types b/tests/baselines/reference/generatorTypeCheck19.types index f05cae1fd55..d59f4502fd0 100644 --- a/tests/baselines/reference/generatorTypeCheck19.types +++ b/tests/baselines/reference/generatorTypeCheck19.types @@ -12,7 +12,7 @@ function* g(): IterableIterator { >g : () => IterableIterator yield; ->yield : undefined +>yield : unknown yield * [new Bar]; >yield * [new Bar] : any diff --git a/tests/baselines/reference/generatorTypeCheck20.types b/tests/baselines/reference/generatorTypeCheck20.types index a0ab6b14497..bf14aed527d 100644 --- a/tests/baselines/reference/generatorTypeCheck20.types +++ b/tests/baselines/reference/generatorTypeCheck20.types @@ -11,7 +11,7 @@ function* g(): IterableIterator { >g : () => IterableIterator yield; ->yield : undefined +>yield : unknown yield * [new Baz]; >yield * [new Baz] : any diff --git a/tests/baselines/reference/generatorTypeCheck21.types b/tests/baselines/reference/generatorTypeCheck21.types index 96b0f15cf60..bcfa0c83389 100644 --- a/tests/baselines/reference/generatorTypeCheck21.types +++ b/tests/baselines/reference/generatorTypeCheck21.types @@ -12,7 +12,7 @@ function* g(): IterableIterator { >g : () => IterableIterator yield; ->yield : undefined +>yield : unknown yield * new Bar; >yield * new Bar : any diff --git a/tests/baselines/reference/generatorTypeCheck22.types b/tests/baselines/reference/generatorTypeCheck22.types index 3f8f2d3fd9f..0e3d306c65c 100644 --- a/tests/baselines/reference/generatorTypeCheck22.types +++ b/tests/baselines/reference/generatorTypeCheck22.types @@ -13,7 +13,7 @@ class Baz { z: number } >z : number function* g3() { ->g3 : () => Generator +>g3 : () => Generator yield; >yield : any diff --git a/tests/baselines/reference/generatorTypeCheck23.types b/tests/baselines/reference/generatorTypeCheck23.types index a7fa6c880bb..1961c428f22 100644 --- a/tests/baselines/reference/generatorTypeCheck23.types +++ b/tests/baselines/reference/generatorTypeCheck23.types @@ -13,7 +13,7 @@ class Baz { z: number } >z : number function* g3() { ->g3 : () => Generator +>g3 : () => Generator yield; >yield : any diff --git a/tests/baselines/reference/generatorTypeCheck24.types b/tests/baselines/reference/generatorTypeCheck24.types index 8f8f4d668f1..ab112ce7d39 100644 --- a/tests/baselines/reference/generatorTypeCheck24.types +++ b/tests/baselines/reference/generatorTypeCheck24.types @@ -13,7 +13,7 @@ class Baz { z: number } >z : number function* g3() { ->g3 : () => Generator +>g3 : () => Generator yield; >yield : any diff --git a/tests/baselines/reference/generatorTypeCheck25.errors.txt b/tests/baselines/reference/generatorTypeCheck25.errors.txt index 365a19dfdd7..0b494988af0 100644 --- a/tests/baselines/reference/generatorTypeCheck25.errors.txt +++ b/tests/baselines/reference/generatorTypeCheck25.errors.txt @@ -1,10 +1,10 @@ -tests/cases/conformance/es6/yieldExpressions/generatorTypeCheck25.ts(4,5): error TS2322: Type '() => Generator' is not assignable to type '() => Iterable'. - Type 'Generator' is not assignable to type 'Iterable'. +tests/cases/conformance/es6/yieldExpressions/generatorTypeCheck25.ts(4,5): error TS2322: Type '() => Generator' is not assignable to type '() => Iterable'. + Type 'Generator' is not assignable to type 'Iterable'. Types of property '[Symbol.iterator]' are incompatible. - Type '() => Generator' is not assignable to type '() => Iterator'. - Type 'Generator' is not assignable to type 'Iterator'. + Type '() => Generator' is not assignable to type '() => Iterator'. + Type 'Generator' is not assignable to type 'Iterator'. Types of property 'next' are incompatible. - Type '(...args: [] | [undefined]) => IteratorResult' is not assignable to type '(...args: [] | [undefined]) => IteratorResult'. + Type '(...args: [] | [unknown]) => IteratorResult' is not assignable to type '(...args: [] | [unknown]) => IteratorResult'. Type 'IteratorResult' is not assignable to type 'IteratorResult'. Type 'IteratorYieldResult' is not assignable to type 'IteratorResult'. Type 'IteratorYieldResult' is not assignable to type 'IteratorYieldResult'. @@ -18,13 +18,13 @@ tests/cases/conformance/es6/yieldExpressions/generatorTypeCheck25.ts(4,5): error class Baz { z: number } var g3: () => Iterable = function* () { ~~ -!!! error TS2322: Type '() => Generator' is not assignable to type '() => Iterable'. -!!! error TS2322: Type 'Generator' is not assignable to type 'Iterable'. +!!! error TS2322: Type '() => Generator' is not assignable to type '() => Iterable'. +!!! error TS2322: Type 'Generator' is not assignable to type 'Iterable'. !!! error TS2322: Types of property '[Symbol.iterator]' are incompatible. -!!! error TS2322: Type '() => Generator' is not assignable to type '() => Iterator'. -!!! error TS2322: Type 'Generator' is not assignable to type 'Iterator'. +!!! error TS2322: Type '() => Generator' is not assignable to type '() => Iterator'. +!!! error TS2322: Type 'Generator' is not assignable to type 'Iterator'. !!! error TS2322: Types of property 'next' are incompatible. -!!! error TS2322: Type '(...args: [] | [undefined]) => IteratorResult' is not assignable to type '(...args: [] | [undefined]) => IteratorResult'. +!!! error TS2322: Type '(...args: [] | [unknown]) => IteratorResult' is not assignable to type '(...args: [] | [unknown]) => IteratorResult'. !!! error TS2322: Type 'IteratorResult' is not assignable to type 'IteratorResult'. !!! error TS2322: Type 'IteratorYieldResult' is not assignable to type 'IteratorResult'. !!! error TS2322: Type 'IteratorYieldResult' is not assignable to type 'IteratorYieldResult'. diff --git a/tests/baselines/reference/generatorTypeCheck25.types b/tests/baselines/reference/generatorTypeCheck25.types index 12dbfeaede9..50959d3641c 100644 --- a/tests/baselines/reference/generatorTypeCheck25.types +++ b/tests/baselines/reference/generatorTypeCheck25.types @@ -14,18 +14,18 @@ class Baz { z: number } var g3: () => Iterable = function* () { >g3 : () => Iterable ->function* () { yield; yield new Bar; yield new Baz; yield *[new Bar]; yield *[new Baz];} : () => Generator +>function* () { yield; yield new Bar; yield new Baz; yield *[new Bar]; yield *[new Baz];} : () => Generator yield; ->yield : undefined +>yield : unknown yield new Bar; ->yield new Bar : undefined +>yield new Bar : unknown >new Bar : Bar >Bar : typeof Bar yield new Baz; ->yield new Baz : undefined +>yield new Baz : unknown >new Baz : Baz >Baz : typeof Baz diff --git a/tests/baselines/reference/generatorTypeCheck26.types b/tests/baselines/reference/generatorTypeCheck26.types index 7ade7bdec91..05dc9a6c447 100644 --- a/tests/baselines/reference/generatorTypeCheck26.types +++ b/tests/baselines/reference/generatorTypeCheck26.types @@ -4,7 +4,7 @@ function* g(): IterableIterator<(x: string) => number> { >x : string yield x => x.length; ->yield x => x.length : undefined +>yield x => x.length : unknown >x => x.length : (x: string) => number >x : string >x.length : number diff --git a/tests/baselines/reference/generatorTypeCheck28.types b/tests/baselines/reference/generatorTypeCheck28.types index abd66af518e..7228fe39b0e 100644 --- a/tests/baselines/reference/generatorTypeCheck28.types +++ b/tests/baselines/reference/generatorTypeCheck28.types @@ -5,16 +5,16 @@ function* g(): IterableIterator<(x: string) => number> { yield * { >yield * { *[Symbol.iterator]() { yield x => x.length; } } : void ->{ *[Symbol.iterator]() { yield x => x.length; } } : { [Symbol.iterator](): Generator<(x: string) => number, void, undefined>; } +>{ *[Symbol.iterator]() { yield x => x.length; } } : { [Symbol.iterator](): Generator<(x: string) => number, void, unknown>; } *[Symbol.iterator]() { ->[Symbol.iterator] : () => Generator<(x: string) => number, void, undefined> +>[Symbol.iterator] : () => Generator<(x: string) => number, void, unknown> >Symbol.iterator : symbol >Symbol : SymbolConstructor >iterator : symbol yield x => x.length; ->yield x => x.length : undefined +>yield x => x.length : unknown >x => x.length : (x: string) => number >x : string >x.length : number diff --git a/tests/baselines/reference/generatorTypeCheck29.types b/tests/baselines/reference/generatorTypeCheck29.types index 0ce49791a22..85fa309b5f9 100644 --- a/tests/baselines/reference/generatorTypeCheck29.types +++ b/tests/baselines/reference/generatorTypeCheck29.types @@ -1,10 +1,10 @@ === tests/cases/conformance/es6/yieldExpressions/generatorTypeCheck29.ts === function* g2(): Iterator number>> { ->g2 : () => Iterator number>, any, undefined> +>g2 : () => Iterator number>, any, unknown> >x : string yield function* () { ->yield function* () { yield x => x.length; } () : undefined +>yield function* () { yield x => x.length; } () : unknown >function* () { yield x => x.length; } () : Generator<(x: any) => any, void, unknown> >function* () { yield x => x.length; } : () => Generator<(x: any) => any, void, unknown> diff --git a/tests/baselines/reference/generatorTypeCheck30.types b/tests/baselines/reference/generatorTypeCheck30.types index 094ed3bf337..f934129342c 100644 --- a/tests/baselines/reference/generatorTypeCheck30.types +++ b/tests/baselines/reference/generatorTypeCheck30.types @@ -1,10 +1,10 @@ === tests/cases/conformance/es6/yieldExpressions/generatorTypeCheck30.ts === function* g2(): Iterator number>> { ->g2 : () => Iterator number>, any, undefined> +>g2 : () => Iterator number>, any, unknown> >x : string yield function* () { ->yield function* () { yield x => x.length; } () : undefined +>yield function* () { yield x => x.length; } () : unknown >function* () { yield x => x.length; } () : Generator<(x: any) => any, void, unknown> >function* () { yield x => x.length; } : () => Generator<(x: any) => any, void, unknown> diff --git a/tests/baselines/reference/generatorTypeCheck31.types b/tests/baselines/reference/generatorTypeCheck31.types index c15eab96fe9..9173f16439b 100644 --- a/tests/baselines/reference/generatorTypeCheck31.types +++ b/tests/baselines/reference/generatorTypeCheck31.types @@ -1,10 +1,10 @@ === tests/cases/conformance/es6/yieldExpressions/generatorTypeCheck31.ts === function* g2(): Iterator<() => Iterable<(x: string) => number>> { ->g2 : () => Iterator<() => Iterable<(x: string) => number>, any, undefined> +>g2 : () => Iterator<() => Iterable<(x: string) => number>, any, unknown> >x : string yield function* () { ->yield function* () { yield x => x.length; } () : undefined +>yield function* () { yield x => x.length; } () : unknown >function* () { yield x => x.length; } () : Generator<(x: any) => any, void, unknown> >function* () { yield x => x.length; } : () => Generator<(x: any) => any, void, unknown> diff --git a/tests/baselines/reference/generatorTypeCheck45.types b/tests/baselines/reference/generatorTypeCheck45.types index f8f88191e56..dd0f3a1cb95 100644 --- a/tests/baselines/reference/generatorTypeCheck45.types +++ b/tests/baselines/reference/generatorTypeCheck45.types @@ -1,18 +1,18 @@ === tests/cases/conformance/es6/yieldExpressions/generatorTypeCheck45.ts === declare function foo(x: T, fun: () => Iterator<(x: T) => U>, fun2: (y: U) => T): T; ->foo : (x: T, fun: () => Iterator<(x: T) => U, any, undefined>, fun2: (y: U) => T) => T +>foo : (x: T, fun: () => Iterator<(x: T) => U, any, unknown>, fun2: (y: U) => T) => T >x : T ->fun : () => Iterator<(x: T) => U, any, undefined> +>fun : () => Iterator<(x: T) => U, any, unknown> >x : T >fun2 : (y: U) => T >y : U foo("", function* () { yield x => x.length }, p => undefined); // T is fixed, should be string >foo("", function* () { yield x => x.length }, p => undefined) : string ->foo : (x: T, fun: () => Iterator<(x: T) => U, any, undefined>, fun2: (y: U) => T) => T +>foo : (x: T, fun: () => Iterator<(x: T) => U, any, unknown>, fun2: (y: U) => T) => T >"" : "" ->function* () { yield x => x.length } : () => Generator<(x: string) => number, void, undefined> ->yield x => x.length : undefined +>function* () { yield x => x.length } : () => Generator<(x: string) => number, void, unknown> +>yield x => x.length : unknown >x => x.length : (x: string) => number >x : string >x.length : number diff --git a/tests/baselines/reference/generatorTypeCheck46.types b/tests/baselines/reference/generatorTypeCheck46.types index 3beb73892ce..77482041a8a 100644 --- a/tests/baselines/reference/generatorTypeCheck46.types +++ b/tests/baselines/reference/generatorTypeCheck46.types @@ -11,20 +11,20 @@ foo("", function* () { >foo("", function* () { yield* { *[Symbol.iterator]() { yield x => x.length } }}, p => undefined) : string >foo : (x: T, fun: () => Iterable<(x: T) => U>, fun2: (y: U) => T) => T >"" : "" ->function* () { yield* { *[Symbol.iterator]() { yield x => x.length } }} : () => Generator<(x: string) => number, void, undefined> +>function* () { yield* { *[Symbol.iterator]() { yield x => x.length } }} : () => Generator<(x: string) => number, void, unknown> yield* { >yield* { *[Symbol.iterator]() { yield x => x.length } } : void ->{ *[Symbol.iterator]() { yield x => x.length } } : { [Symbol.iterator](): Generator<(x: string) => number, void, undefined>; } +>{ *[Symbol.iterator]() { yield x => x.length } } : { [Symbol.iterator](): Generator<(x: string) => number, void, unknown>; } *[Symbol.iterator]() { ->[Symbol.iterator] : () => Generator<(x: string) => number, void, undefined> +>[Symbol.iterator] : () => Generator<(x: string) => number, void, unknown> >Symbol.iterator : symbol >Symbol : SymbolConstructor >iterator : symbol yield x => x.length ->yield x => x.length : undefined +>yield x => x.length : unknown >x => x.length : (x: string) => number >x : string >x.length : number diff --git a/tests/baselines/reference/generatorTypeCheck53.types b/tests/baselines/reference/generatorTypeCheck53.types index 47972eec714..a12a6e1706b 100644 --- a/tests/baselines/reference/generatorTypeCheck53.types +++ b/tests/baselines/reference/generatorTypeCheck53.types @@ -8,7 +8,7 @@ class Baz { z: number } >z : number function* g() { ->g : () => Generator +>g : () => Generator yield new Foo; >yield new Foo : any diff --git a/tests/baselines/reference/generatorTypeCheck54.types b/tests/baselines/reference/generatorTypeCheck54.types index 6e91f4be51a..d2774c31b8d 100644 --- a/tests/baselines/reference/generatorTypeCheck54.types +++ b/tests/baselines/reference/generatorTypeCheck54.types @@ -8,7 +8,7 @@ class Baz { z: number } >z : number function* g() { ->g : () => Generator +>g : () => Generator yield* [new Foo]; >yield* [new Foo] : any diff --git a/tests/baselines/reference/generatorTypeCheck62.types b/tests/baselines/reference/generatorTypeCheck62.types index 52eb65fbb63..6be3e3df5c1 100644 --- a/tests/baselines/reference/generatorTypeCheck62.types +++ b/tests/baselines/reference/generatorTypeCheck62.types @@ -12,7 +12,7 @@ export function strategy(stratName: string, gen: (a: T >a : T return function*(state) { ->function*(state) { for (const next of gen(state)) { if (next) { next.lastStrategyApplied = stratName; } yield next; } } : (state: T) => Generator +>function*(state) { for (const next of gen(state)) { if (next) { next.lastStrategyApplied = stratName; } yield next; } } : (state: T) => Generator >state : T for (const next of gen(state)) { @@ -32,7 +32,7 @@ export function strategy(stratName: string, gen: (a: T >stratName : string } yield next; ->yield next : undefined +>yield next : unknown >next : T } } @@ -53,7 +53,7 @@ export const Nothing1: Strategy = strategy("Nothing", function*(state: St >strategy("Nothing", function*(state: State) { return state;}) : (a: State) => IterableIterator >strategy : (stratName: string, gen: (a: T) => IterableIterator) => (a: T) => IterableIterator >"Nothing" : "Nothing" ->function*(state: State) { return state;} : (state: State) => Generator +>function*(state: State) { return state;} : (state: State) => Generator >state : State return state; @@ -66,11 +66,11 @@ export const Nothing2: Strategy = strategy("Nothing", function*(state: St >strategy("Nothing", function*(state: State) { yield state;}) : (a: State) => IterableIterator >strategy : (stratName: string, gen: (a: T) => IterableIterator) => (a: T) => IterableIterator >"Nothing" : "Nothing" ->function*(state: State) { yield state;} : (state: State) => Generator +>function*(state: State) { yield state;} : (state: State) => Generator >state : State yield state; ->yield state : undefined +>yield state : unknown >state : State }); @@ -80,11 +80,11 @@ export const Nothing3: Strategy = strategy("Nothing", function* (state: S >strategy("Nothing", function* (state: State) { yield ; return state;}) : (a: any) => IterableIterator >strategy : (stratName: string, gen: (a: T) => IterableIterator) => (a: T) => IterableIterator >"Nothing" : "Nothing" ->function* (state: State) { yield ; return state;} : (state: State) => Generator +>function* (state: State) { yield ; return state;} : (state: State) => Generator >state : State yield ; ->yield : undefined +>yield : unknown return state; >state : State diff --git a/tests/baselines/reference/generatorTypeCheck63.errors.txt b/tests/baselines/reference/generatorTypeCheck63.errors.txt index 60dfb089822..a40b626e388 100644 --- a/tests/baselines/reference/generatorTypeCheck63.errors.txt +++ b/tests/baselines/reference/generatorTypeCheck63.errors.txt @@ -1,7 +1,7 @@ -tests/cases/conformance/es6/yieldExpressions/generatorTypeCheck63.ts(24,61): error TS2345: Argument of type '(state: State) => Generator' is not assignable to parameter of type '(a: State) => IterableIterator'. - Type 'Generator' is not assignable to type 'IterableIterator'. +tests/cases/conformance/es6/yieldExpressions/generatorTypeCheck63.ts(24,61): error TS2345: Argument of type '(state: State) => Generator' is not assignable to parameter of type '(a: State) => IterableIterator'. + Type 'Generator' is not assignable to type 'IterableIterator'. Types of property 'next' are incompatible. - Type '(...args: [] | [undefined]) => IteratorResult' is not assignable to type '(...args: [] | [undefined]) => IteratorResult'. + Type '(...args: [] | [unknown]) => IteratorResult' is not assignable to type '(...args: [] | [unknown]) => IteratorResult'. Type 'IteratorResult' is not assignable to type 'IteratorResult'. Type 'IteratorYieldResult' is not assignable to type 'IteratorResult'. Type 'IteratorYieldResult' is not assignable to type 'IteratorYieldResult'. @@ -34,10 +34,10 @@ tests/cases/conformance/es6/yieldExpressions/generatorTypeCheck63.ts(24,61): err export const Nothing: Strategy = strategy("Nothing", function* (state: State) { ~~~~~~~~ -!!! error TS2345: Argument of type '(state: State) => Generator' is not assignable to parameter of type '(a: State) => IterableIterator'. -!!! error TS2345: Type 'Generator' is not assignable to type 'IterableIterator'. +!!! error TS2345: Argument of type '(state: State) => Generator' is not assignable to parameter of type '(a: State) => IterableIterator'. +!!! error TS2345: Type 'Generator' is not assignable to type 'IterableIterator'. !!! error TS2345: Types of property 'next' are incompatible. -!!! error TS2345: Type '(...args: [] | [undefined]) => IteratorResult' is not assignable to type '(...args: [] | [undefined]) => IteratorResult'. +!!! error TS2345: Type '(...args: [] | [unknown]) => IteratorResult' is not assignable to type '(...args: [] | [unknown]) => IteratorResult'. !!! error TS2345: Type 'IteratorResult' is not assignable to type 'IteratorResult'. !!! error TS2345: Type 'IteratorYieldResult' is not assignable to type 'IteratorResult'. !!! error TS2345: Type 'IteratorYieldResult' is not assignable to type 'IteratorYieldResult'. diff --git a/tests/baselines/reference/generatorTypeCheck63.types b/tests/baselines/reference/generatorTypeCheck63.types index 12d78bac5df..c16131e93d2 100644 --- a/tests/baselines/reference/generatorTypeCheck63.types +++ b/tests/baselines/reference/generatorTypeCheck63.types @@ -12,7 +12,7 @@ export function strategy(stratName: string, gen: (a: T >a : T return function*(state) { ->function*(state) { for (const next of gen(state)) { if (next) { next.lastStrategyApplied = stratName; } yield next; } } : (state: T) => Generator +>function*(state) { for (const next of gen(state)) { if (next) { next.lastStrategyApplied = stratName; } yield next; } } : (state: T) => Generator >state : T for (const next of gen(state)) { @@ -32,7 +32,7 @@ export function strategy(stratName: string, gen: (a: T >stratName : string } yield next; ->yield next : undefined +>yield next : unknown >next : T } } @@ -53,7 +53,7 @@ export const Nothing: Strategy = strategy("Nothing", function* (state: St >strategy("Nothing", function* (state: State) { yield 1; return state;}) : any >strategy : (stratName: string, gen: (a: T) => IterableIterator) => (a: T) => IterableIterator >"Nothing" : "Nothing" ->function* (state: State) { yield 1; return state;} : (state: State) => Generator +>function* (state: State) { yield 1; return state;} : (state: State) => Generator >state : State yield 1; @@ -70,7 +70,7 @@ export const Nothing1: Strategy = strategy("Nothing", function* (state: S >strategy("Nothing", function* (state: State) {}) : (a: State) => IterableIterator >strategy : (stratName: string, gen: (a: T) => IterableIterator) => (a: T) => IterableIterator >"Nothing" : "Nothing" ->function* (state: State) {} : (state: State) => Generator +>function* (state: State) {} : (state: State) => Generator >state : State }); @@ -80,7 +80,7 @@ export const Nothing2: Strategy = strategy("Nothing", function* (state: S >strategy("Nothing", function* (state: State) { return 1;}) : (a: State) => IterableIterator >strategy : (stratName: string, gen: (a: T) => IterableIterator) => (a: T) => IterableIterator >"Nothing" : "Nothing" ->function* (state: State) { return 1;} : (state: State) => Generator +>function* (state: State) { return 1;} : (state: State) => Generator >state : State return 1; @@ -93,11 +93,11 @@ export const Nothing3: Strategy = strategy("Nothing", function* (state: S >strategy("Nothing", function* (state: State) { yield state; return 1;}) : (a: State) => IterableIterator >strategy : (stratName: string, gen: (a: T) => IterableIterator) => (a: T) => IterableIterator >"Nothing" : "Nothing" ->function* (state: State) { yield state; return 1;} : (state: State) => Generator +>function* (state: State) { yield state; return 1;} : (state: State) => Generator >state : State yield state; ->yield state : undefined +>yield state : unknown >state : State return 1; diff --git a/tests/baselines/reference/generatorTypeCheck7.errors.txt b/tests/baselines/reference/generatorTypeCheck7.errors.txt index fb17027bf3b..73699763766 100644 --- a/tests/baselines/reference/generatorTypeCheck7.errors.txt +++ b/tests/baselines/reference/generatorTypeCheck7.errors.txt @@ -1,4 +1,4 @@ -tests/cases/conformance/es6/yieldExpressions/generatorTypeCheck7.ts(4,17): error TS2741: Property 'hello' is missing in type 'Generator' but required in type 'WeirdIter'. +tests/cases/conformance/es6/yieldExpressions/generatorTypeCheck7.ts(4,17): error TS2741: Property 'hello' is missing in type 'Generator' but required in type 'WeirdIter'. ==== tests/cases/conformance/es6/yieldExpressions/generatorTypeCheck7.ts (1 errors) ==== @@ -7,5 +7,5 @@ tests/cases/conformance/es6/yieldExpressions/generatorTypeCheck7.ts(4,17): error } function* g1(): WeirdIter { } ~~~~~~~~~ -!!! error TS2741: Property 'hello' is missing in type 'Generator' but required in type 'WeirdIter'. +!!! error TS2741: Property 'hello' is missing in type 'Generator' but required in type 'WeirdIter'. !!! related TS2728 tests/cases/conformance/es6/yieldExpressions/generatorTypeCheck7.ts:2:5: 'hello' is declared here. \ No newline at end of file diff --git a/tests/baselines/reference/generatorTypeCheck8.errors.txt b/tests/baselines/reference/generatorTypeCheck8.errors.txt index 6261d419ddd..58804a44941 100644 --- a/tests/baselines/reference/generatorTypeCheck8.errors.txt +++ b/tests/baselines/reference/generatorTypeCheck8.errors.txt @@ -1,6 +1,6 @@ -tests/cases/conformance/es6/yieldExpressions/generatorTypeCheck8.ts(2,17): error TS2322: Type 'Generator' is not assignable to type 'BadGenerator'. +tests/cases/conformance/es6/yieldExpressions/generatorTypeCheck8.ts(2,17): error TS2322: Type 'Generator' is not assignable to type 'BadGenerator'. Types of property 'next' are incompatible. - Type '(...args: [] | [undefined]) => IteratorResult' is not assignable to type '(...args: [] | [undefined]) => IteratorResult'. + Type '(...args: [] | [unknown]) => IteratorResult' is not assignable to type '(...args: [] | [unknown]) => IteratorResult'. Type 'IteratorResult' is not assignable to type 'IteratorResult'. Type 'IteratorYieldResult' is not assignable to type 'IteratorResult'. Type 'IteratorYieldResult' is not assignable to type 'IteratorYieldResult'. @@ -11,9 +11,9 @@ tests/cases/conformance/es6/yieldExpressions/generatorTypeCheck8.ts(2,17): error interface BadGenerator extends Iterator, Iterable { } function* g3(): BadGenerator { } ~~~~~~~~~~~~ -!!! error TS2322: Type 'Generator' is not assignable to type 'BadGenerator'. +!!! error TS2322: Type 'Generator' is not assignable to type 'BadGenerator'. !!! error TS2322: Types of property 'next' are incompatible. -!!! error TS2322: Type '(...args: [] | [undefined]) => IteratorResult' is not assignable to type '(...args: [] | [undefined]) => IteratorResult'. +!!! error TS2322: Type '(...args: [] | [unknown]) => IteratorResult' is not assignable to type '(...args: [] | [unknown]) => IteratorResult'. !!! error TS2322: Type 'IteratorResult' is not assignable to type 'IteratorResult'. !!! error TS2322: Type 'IteratorYieldResult' is not assignable to type 'IteratorResult'. !!! error TS2322: Type 'IteratorYieldResult' is not assignable to type 'IteratorYieldResult'. diff --git a/tests/baselines/reference/importHelpersNoHelpersForAsyncGenerators.types b/tests/baselines/reference/importHelpersNoHelpersForAsyncGenerators.types index da4e9fb704d..13f7887fc40 100644 --- a/tests/baselines/reference/importHelpersNoHelpersForAsyncGenerators.types +++ b/tests/baselines/reference/importHelpersNoHelpersForAsyncGenerators.types @@ -1,6 +1,6 @@ === tests/cases/compiler/main.ts === export async function * f() { ->f : () => AsyncGenerator +>f : () => AsyncGenerator await 1; >await 1 : 1 diff --git a/tests/baselines/reference/iterableArrayPattern28.errors.txt b/tests/baselines/reference/iterableArrayPattern28.errors.txt index 7a1ff6cf42c..499e8b68c3b 100644 --- a/tests/baselines/reference/iterableArrayPattern28.errors.txt +++ b/tests/baselines/reference/iterableArrayPattern28.errors.txt @@ -2,10 +2,10 @@ tests/cases/conformance/es6/destructuring/iterableArrayPattern28.ts(2,24): error Overload 1 of 3, '(iterable: Iterable): Map', gave the following error. Argument of type '([string, number] | [string, boolean])[]' is not assignable to parameter of type 'Iterable'. Types of property '[Symbol.iterator]' are incompatible. - Type '() => IterableIterator<[string, number] | [string, boolean]>' is not assignable to type '() => Iterator'. - Type 'IterableIterator<[string, number] | [string, boolean]>' is not assignable to type 'Iterator'. + Type '() => IterableIterator<[string, number] | [string, boolean]>' is not assignable to type '() => Iterator'. + Type 'IterableIterator<[string, number] | [string, boolean]>' is not assignable to type 'Iterator'. Types of property 'next' are incompatible. - Type '(...args: [] | [undefined]) => IteratorResult<[string, number] | [string, boolean], any>' is not assignable to type '(...args: [] | [undefined]) => IteratorResult'. + Type '(...args: [] | [unknown]) => IteratorResult<[string, number] | [string, boolean], any>' is not assignable to type '(...args: [] | [unknown]) => IteratorResult'. Type 'IteratorResult<[string, number] | [string, boolean], any>' is not assignable to type 'IteratorResult'. Type 'IteratorYieldResult<[string, number] | [string, boolean]>' is not assignable to type 'IteratorResult'. Type 'IteratorYieldResult<[string, number] | [string, boolean]>' is not assignable to type 'IteratorYieldResult'. @@ -25,10 +25,10 @@ tests/cases/conformance/es6/destructuring/iterableArrayPattern28.ts(2,24): error !!! error TS2769: Overload 1 of 3, '(iterable: Iterable): Map', gave the following error. !!! error TS2769: Argument of type '([string, number] | [string, boolean])[]' is not assignable to parameter of type 'Iterable'. !!! error TS2769: Types of property '[Symbol.iterator]' are incompatible. -!!! error TS2769: Type '() => IterableIterator<[string, number] | [string, boolean]>' is not assignable to type '() => Iterator'. -!!! error TS2769: Type 'IterableIterator<[string, number] | [string, boolean]>' is not assignable to type 'Iterator'. +!!! error TS2769: Type '() => IterableIterator<[string, number] | [string, boolean]>' is not assignable to type '() => Iterator'. +!!! error TS2769: Type 'IterableIterator<[string, number] | [string, boolean]>' is not assignable to type 'Iterator'. !!! error TS2769: Types of property 'next' are incompatible. -!!! error TS2769: Type '(...args: [] | [undefined]) => IteratorResult<[string, number] | [string, boolean], any>' is not assignable to type '(...args: [] | [undefined]) => IteratorResult'. +!!! error TS2769: Type '(...args: [] | [unknown]) => IteratorResult<[string, number] | [string, boolean], any>' is not assignable to type '(...args: [] | [unknown]) => IteratorResult'. !!! error TS2769: Type 'IteratorResult<[string, number] | [string, boolean], any>' is not assignable to type 'IteratorResult'. !!! error TS2769: Type 'IteratorYieldResult<[string, number] | [string, boolean]>' is not assignable to type 'IteratorResult'. !!! error TS2769: Type 'IteratorYieldResult<[string, number] | [string, boolean]>' is not assignable to type 'IteratorYieldResult'. diff --git a/tests/baselines/reference/parser.asyncGenerators.classMethods.es2018.types b/tests/baselines/reference/parser.asyncGenerators.classMethods.es2018.types index 68375a7d679..0f9c685c23f 100644 --- a/tests/baselines/reference/parser.asyncGenerators.classMethods.es2018.types +++ b/tests/baselines/reference/parser.asyncGenerators.classMethods.es2018.types @@ -175,7 +175,7 @@ class C16 { >C16 : C16 async * f() { ->f : () => AsyncGenerator +>f : () => AsyncGenerator yield * []; >yield * [] : any diff --git a/tests/baselines/reference/parser.asyncGenerators.functionDeclarations.es2018.types b/tests/baselines/reference/parser.asyncGenerators.functionDeclarations.es2018.types index 08190b40112..7e34a3fcd4b 100644 --- a/tests/baselines/reference/parser.asyncGenerators.functionDeclarations.es2018.types +++ b/tests/baselines/reference/parser.asyncGenerators.functionDeclarations.es2018.types @@ -111,7 +111,7 @@ async function * f15() { } === tests/cases/conformance/parser/ecmascript2018/asyncGenerators/yieldStarWithValueIsOk.ts === async function * f16() { ->f16 : () => AsyncGenerator +>f16 : () => AsyncGenerator yield * []; >yield * [] : any diff --git a/tests/baselines/reference/parser.asyncGenerators.functionExpressions.es2018.types b/tests/baselines/reference/parser.asyncGenerators.functionExpressions.es2018.types index 0af07dc220f..bd6915a55ec 100644 --- a/tests/baselines/reference/parser.asyncGenerators.functionExpressions.es2018.types +++ b/tests/baselines/reference/parser.asyncGenerators.functionExpressions.es2018.types @@ -142,8 +142,8 @@ const f15 = async function * () { }; === tests/cases/conformance/parser/ecmascript2018/asyncGenerators/yieldStarWithValueIsOk.ts === const f16 = async function * () { ->f16 : () => AsyncGenerator ->async function * () { yield * [];} : () => AsyncGenerator +>f16 : () => AsyncGenerator +>async function * () { yield * [];} : () => AsyncGenerator yield * []; >yield * [] : any diff --git a/tests/baselines/reference/parser.asyncGenerators.objectLiteralMethods.es2018.types b/tests/baselines/reference/parser.asyncGenerators.objectLiteralMethods.es2018.types index 5a6ea2a19fb..7eaf1b59c04 100644 --- a/tests/baselines/reference/parser.asyncGenerators.objectLiteralMethods.es2018.types +++ b/tests/baselines/reference/parser.asyncGenerators.objectLiteralMethods.es2018.types @@ -187,11 +187,11 @@ const o15 = { }; === tests/cases/conformance/parser/ecmascript2018/asyncGenerators/yieldStarWithValueIsOk.ts === const o16 = { ->o16 : { f(): AsyncGenerator; } ->{ async * f() { yield * []; }} : { f(): AsyncGenerator; } +>o16 : { f(): AsyncGenerator; } +>{ async * f() { yield * []; }} : { f(): AsyncGenerator; } async * f() { ->f : () => AsyncGenerator +>f : () => AsyncGenerator yield * []; >yield * [] : any diff --git a/tests/baselines/reference/types.asyncGenerators.es2018.1.types b/tests/baselines/reference/types.asyncGenerators.es2018.1.types index 3c6e51c56d2..e314ad923eb 100644 --- a/tests/baselines/reference/types.asyncGenerators.es2018.1.types +++ b/tests/baselines/reference/types.asyncGenerators.es2018.1.types @@ -42,7 +42,7 @@ async function * inferReturnType5() { >2 : 2 } async function * inferReturnType6() { ->inferReturnType6 : () => AsyncGenerator +>inferReturnType6 : () => AsyncGenerator yield* [1, 2]; >yield* [1, 2] : any @@ -51,7 +51,7 @@ async function * inferReturnType6() { >2 : 2 } async function * inferReturnType7() { ->inferReturnType7 : () => AsyncGenerator +>inferReturnType7 : () => AsyncGenerator yield* [Promise.resolve(1)]; >yield* [Promise.resolve(1)] : any @@ -75,19 +75,19 @@ async function * inferReturnType8() { } const assignability1: () => AsyncIterableIterator = async function * () { >assignability1 : () => AsyncIterableIterator ->async function * () { yield 1;} : () => AsyncGenerator +>async function * () { yield 1;} : () => AsyncGenerator yield 1; ->yield 1 : undefined +>yield 1 : unknown >1 : 1 }; const assignability2: () => AsyncIterableIterator = async function * () { >assignability2 : () => AsyncIterableIterator ->async function * () { yield Promise.resolve(1);} : () => AsyncGenerator +>async function * () { yield Promise.resolve(1);} : () => AsyncGenerator yield Promise.resolve(1); ->yield Promise.resolve(1) : undefined +>yield Promise.resolve(1) : unknown >Promise.resolve(1) : Promise >Promise.resolve : { (value: T | PromiseLike): Promise; (): Promise; } >Promise : PromiseConstructor @@ -97,7 +97,7 @@ const assignability2: () => AsyncIterableIterator = async function * () }; const assignability3: () => AsyncIterableIterator = async function * () { >assignability3 : () => AsyncIterableIterator ->async function * () { yield* [1, 2];} : () => AsyncGenerator +>async function * () { yield* [1, 2];} : () => AsyncGenerator yield* [1, 2]; >yield* [1, 2] : any @@ -108,7 +108,7 @@ const assignability3: () => AsyncIterableIterator = async function * () }; const assignability4: () => AsyncIterableIterator = async function * () { >assignability4 : () => AsyncIterableIterator ->async function * () { yield* [Promise.resolve(1)];} : () => AsyncGenerator +>async function * () { yield* [Promise.resolve(1)];} : () => AsyncGenerator yield* [Promise.resolve(1)]; >yield* [Promise.resolve(1)] : any @@ -135,19 +135,19 @@ const assignability5: () => AsyncIterableIterator = async function * () }; const assignability6: () => AsyncIterable = async function * () { >assignability6 : () => AsyncIterable ->async function * () { yield 1;} : () => AsyncGenerator +>async function * () { yield 1;} : () => AsyncGenerator yield 1; ->yield 1 : undefined +>yield 1 : unknown >1 : 1 }; const assignability7: () => AsyncIterable = async function * () { >assignability7 : () => AsyncIterable ->async function * () { yield Promise.resolve(1);} : () => AsyncGenerator +>async function * () { yield Promise.resolve(1);} : () => AsyncGenerator yield Promise.resolve(1); ->yield Promise.resolve(1) : undefined +>yield Promise.resolve(1) : unknown >Promise.resolve(1) : Promise >Promise.resolve : { (value: T | PromiseLike): Promise; (): Promise; } >Promise : PromiseConstructor @@ -157,7 +157,7 @@ const assignability7: () => AsyncIterable = async function * () { }; const assignability8: () => AsyncIterable = async function * () { >assignability8 : () => AsyncIterable ->async function * () { yield* [1, 2];} : () => AsyncGenerator +>async function * () { yield* [1, 2];} : () => AsyncGenerator yield* [1, 2]; >yield* [1, 2] : any @@ -168,7 +168,7 @@ const assignability8: () => AsyncIterable = async function * () { }; const assignability9: () => AsyncIterable = async function * () { >assignability9 : () => AsyncIterable ->async function * () { yield* [Promise.resolve(1)];} : () => AsyncGenerator +>async function * () { yield* [Promise.resolve(1)];} : () => AsyncGenerator yield* [Promise.resolve(1)]; >yield* [Promise.resolve(1)] : any @@ -194,20 +194,20 @@ const assignability10: () => AsyncIterable = async function * () { }; const assignability11: () => AsyncIterator = async function * () { ->assignability11 : () => AsyncIterator ->async function * () { yield 1;} : () => AsyncGenerator +>assignability11 : () => AsyncIterator +>async function * () { yield 1;} : () => AsyncGenerator yield 1; ->yield 1 : undefined +>yield 1 : unknown >1 : 1 }; const assignability12: () => AsyncIterator = async function * () { ->assignability12 : () => AsyncIterator ->async function * () { yield Promise.resolve(1);} : () => AsyncGenerator +>assignability12 : () => AsyncIterator +>async function * () { yield Promise.resolve(1);} : () => AsyncGenerator yield Promise.resolve(1); ->yield Promise.resolve(1) : undefined +>yield Promise.resolve(1) : unknown >Promise.resolve(1) : Promise >Promise.resolve : { (value: T | PromiseLike): Promise; (): Promise; } >Promise : PromiseConstructor @@ -216,8 +216,8 @@ const assignability12: () => AsyncIterator = async function * () { }; const assignability13: () => AsyncIterator = async function * () { ->assignability13 : () => AsyncIterator ->async function * () { yield* [1, 2];} : () => AsyncGenerator +>assignability13 : () => AsyncIterator +>async function * () { yield* [1, 2];} : () => AsyncGenerator yield* [1, 2]; >yield* [1, 2] : any @@ -227,8 +227,8 @@ const assignability13: () => AsyncIterator = async function * () { }; const assignability14: () => AsyncIterator = async function * () { ->assignability14 : () => AsyncIterator ->async function * () { yield* [Promise.resolve(1)];} : () => AsyncGenerator +>assignability14 : () => AsyncIterator +>async function * () { yield* [Promise.resolve(1)];} : () => AsyncGenerator yield* [Promise.resolve(1)]; >yield* [Promise.resolve(1)] : any @@ -241,7 +241,7 @@ const assignability14: () => AsyncIterator = async function * () { }; const assignability15: () => AsyncIterator = async function * () { ->assignability15 : () => AsyncIterator +>assignability15 : () => AsyncIterator >async function * () { yield* (async function * () { yield 1; })();} : () => AsyncGenerator yield* (async function * () { yield 1; })(); @@ -257,14 +257,14 @@ async function * explicitReturnType1(): AsyncIterableIterator { >explicitReturnType1 : () => AsyncIterableIterator yield 1; ->yield 1 : undefined +>yield 1 : unknown >1 : 1 } async function * explicitReturnType2(): AsyncIterableIterator { >explicitReturnType2 : () => AsyncIterableIterator yield Promise.resolve(1); ->yield Promise.resolve(1) : undefined +>yield Promise.resolve(1) : unknown >Promise.resolve(1) : Promise >Promise.resolve : { (value: T | PromiseLike): Promise; (): Promise; } >Promise : PromiseConstructor @@ -307,14 +307,14 @@ async function * explicitReturnType6(): AsyncIterable { >explicitReturnType6 : () => AsyncIterable yield 1; ->yield 1 : undefined +>yield 1 : unknown >1 : 1 } async function * explicitReturnType7(): AsyncIterable { >explicitReturnType7 : () => AsyncIterable yield Promise.resolve(1); ->yield Promise.resolve(1) : undefined +>yield Promise.resolve(1) : unknown >Promise.resolve(1) : Promise >Promise.resolve : { (value: T | PromiseLike): Promise; (): Promise; } >Promise : PromiseConstructor @@ -354,17 +354,17 @@ async function * explicitReturnType10(): AsyncIterable { >1 : 1 } async function * explicitReturnType11(): AsyncIterator { ->explicitReturnType11 : () => AsyncIterator +>explicitReturnType11 : () => AsyncIterator yield 1; ->yield 1 : undefined +>yield 1 : unknown >1 : 1 } async function * explicitReturnType12(): AsyncIterator { ->explicitReturnType12 : () => AsyncIterator +>explicitReturnType12 : () => AsyncIterator yield Promise.resolve(1); ->yield Promise.resolve(1) : undefined +>yield Promise.resolve(1) : unknown >Promise.resolve(1) : Promise >Promise.resolve : { (value: T | PromiseLike): Promise; (): Promise; } >Promise : PromiseConstructor @@ -372,7 +372,7 @@ async function * explicitReturnType12(): AsyncIterator { >1 : 1 } async function * explicitReturnType13(): AsyncIterator { ->explicitReturnType13 : () => AsyncIterator +>explicitReturnType13 : () => AsyncIterator yield* [1, 2]; >yield* [1, 2] : any @@ -381,7 +381,7 @@ async function * explicitReturnType13(): AsyncIterator { >2 : 2 } async function * explicitReturnType14(): AsyncIterator { ->explicitReturnType14 : () => AsyncIterator +>explicitReturnType14 : () => AsyncIterator yield* [Promise.resolve(1)]; >yield* [Promise.resolve(1)] : any @@ -393,7 +393,7 @@ async function * explicitReturnType14(): AsyncIterator { >1 : 1 } async function * explicitReturnType15(): AsyncIterator { ->explicitReturnType15 : () => AsyncIterator +>explicitReturnType15 : () => AsyncIterator yield* (async function * () { yield 1; })(); >yield* (async function * () { yield 1; })() : void diff --git a/tests/baselines/reference/types.asyncGenerators.es2018.2.errors.txt b/tests/baselines/reference/types.asyncGenerators.es2018.2.errors.txt index 9f22060b9e9..4a62ee42a8f 100644 --- a/tests/baselines/reference/types.asyncGenerators.es2018.2.errors.txt +++ b/tests/baselines/reference/types.asyncGenerators.es2018.2.errors.txt @@ -1,45 +1,36 @@ tests/cases/conformance/types/asyncGenerators/types.asyncGenerators.es2018.2.ts(2,12): error TS2504: Type '{}' must have a '[Symbol.asyncIterator]()' method that returns an async iterator. tests/cases/conformance/types/asyncGenerators/types.asyncGenerators.es2018.2.ts(8,12): error TS2504: Type 'Promise' must have a '[Symbol.asyncIterator]()' method that returns an async iterator. -tests/cases/conformance/types/asyncGenerators/types.asyncGenerators.es2018.2.ts(10,7): error TS2322: Type '() => AsyncGenerator' is not assignable to type '() => AsyncIterableIterator'. - Type 'AsyncGenerator' is not assignable to type 'AsyncIterableIterator'. +tests/cases/conformance/types/asyncGenerators/types.asyncGenerators.es2018.2.ts(10,7): error TS2322: Type '() => AsyncGenerator' is not assignable to type '() => AsyncIterableIterator'. + Type 'AsyncGenerator' is not assignable to type 'AsyncIterableIterator'. Types of property 'next' are incompatible. - Type '(...args: [] | [undefined]) => Promise>' is not assignable to type '(...args: [] | [undefined]) => Promise>'. + Type '(...args: [] | [unknown]) => Promise>' is not assignable to type '(...args: [] | [unknown]) => Promise>'. Type 'Promise>' is not assignable to type 'Promise>'. Type 'IteratorResult' is not assignable to type 'IteratorResult'. Type 'IteratorYieldResult' is not assignable to type 'IteratorResult'. Type 'IteratorYieldResult' is not assignable to type 'IteratorYieldResult'. Type 'string' is not assignable to type 'number'. -tests/cases/conformance/types/asyncGenerators/types.asyncGenerators.es2018.2.ts(13,7): error TS2322: Type '() => AsyncGenerator' is not assignable to type '() => AsyncIterableIterator'. - Type 'AsyncGenerator' is not assignable to type 'AsyncIterableIterator'. +tests/cases/conformance/types/asyncGenerators/types.asyncGenerators.es2018.2.ts(13,7): error TS2322: Type '() => AsyncGenerator' is not assignable to type '() => AsyncIterableIterator'. + Type 'AsyncGenerator' is not assignable to type 'AsyncIterableIterator'. tests/cases/conformance/types/asyncGenerators/types.asyncGenerators.es2018.2.ts(16,7): error TS2322: Type '() => AsyncGenerator' is not assignable to type '() => AsyncIterableIterator'. Type 'AsyncGenerator' is not assignable to type 'AsyncIterableIterator'. - Types of property 'next' are incompatible. - Type '(...args: [] | [unknown]) => Promise>' is not assignable to type '(...args: [] | [undefined]) => Promise>'. - Type 'Promise>' is not assignable to type 'Promise>'. -tests/cases/conformance/types/asyncGenerators/types.asyncGenerators.es2018.2.ts(19,7): error TS2322: Type '() => AsyncGenerator' is not assignable to type '() => AsyncIterable'. - Type 'AsyncGenerator' is not assignable to type 'AsyncIterable'. - Types of property '[Symbol.asyncIterator]' are incompatible. - Type '() => AsyncGenerator' is not assignable to type '() => AsyncIterator'. - Type 'AsyncGenerator' is not assignable to type 'AsyncIterator'. - Types of property 'next' are incompatible. - Type '(...args: [] | [undefined]) => Promise>' is not assignable to type '(...args: [] | [undefined]) => Promise>'. - Type 'Promise>' is not assignable to type 'Promise>'. -tests/cases/conformance/types/asyncGenerators/types.asyncGenerators.es2018.2.ts(22,7): error TS2322: Type '() => AsyncGenerator' is not assignable to type '() => AsyncIterable'. - Type 'AsyncGenerator' is not assignable to type 'AsyncIterable'. -tests/cases/conformance/types/asyncGenerators/types.asyncGenerators.es2018.2.ts(25,7): error TS2322: Type '() => AsyncGenerator' is not assignable to type '() => AsyncIterable'. +tests/cases/conformance/types/asyncGenerators/types.asyncGenerators.es2018.2.ts(19,7): error TS2322: Type '() => AsyncGenerator' is not assignable to type '() => AsyncIterable'. Type 'AsyncGenerator' is not assignable to type 'AsyncIterable'. Types of property '[Symbol.asyncIterator]' are incompatible. - Type '() => AsyncGenerator' is not assignable to type '() => AsyncIterator'. - Type 'AsyncGenerator' is not assignable to type 'AsyncIterator'. + Type '() => AsyncGenerator' is not assignable to type '() => AsyncIterator'. + Type 'AsyncGenerator' is not assignable to type 'AsyncIterator'. Types of property 'next' are incompatible. - Type '(...args: [] | [unknown]) => Promise>' is not assignable to type '(...args: [] | [undefined]) => Promise>'. + Type '(...args: [] | [unknown]) => Promise>' is not assignable to type '(...args: [] | [unknown]) => Promise>'. Type 'Promise>' is not assignable to type 'Promise>'. -tests/cases/conformance/types/asyncGenerators/types.asyncGenerators.es2018.2.ts(28,7): error TS2322: Type '() => AsyncGenerator' is not assignable to type '() => AsyncIterator'. - Type 'AsyncGenerator' is not assignable to type 'AsyncIterator'. -tests/cases/conformance/types/asyncGenerators/types.asyncGenerators.es2018.2.ts(31,7): error TS2322: Type '() => AsyncGenerator' is not assignable to type '() => AsyncIterator'. - Type 'AsyncGenerator' is not assignable to type 'AsyncIterator'. -tests/cases/conformance/types/asyncGenerators/types.asyncGenerators.es2018.2.ts(34,7): error TS2322: Type '() => AsyncGenerator' is not assignable to type '() => AsyncIterator'. - Type 'AsyncGenerator' is not assignable to type 'AsyncIterator'. +tests/cases/conformance/types/asyncGenerators/types.asyncGenerators.es2018.2.ts(22,7): error TS2322: Type '() => AsyncGenerator' is not assignable to type '() => AsyncIterable'. + Type 'AsyncGenerator' is not assignable to type 'AsyncIterable'. +tests/cases/conformance/types/asyncGenerators/types.asyncGenerators.es2018.2.ts(25,7): error TS2322: Type '() => AsyncGenerator' is not assignable to type '() => AsyncIterable'. + Type 'AsyncGenerator' is not assignable to type 'AsyncIterable'. +tests/cases/conformance/types/asyncGenerators/types.asyncGenerators.es2018.2.ts(28,7): error TS2322: Type '() => AsyncGenerator' is not assignable to type '() => AsyncIterator'. + Type 'AsyncGenerator' is not assignable to type 'AsyncIterator'. +tests/cases/conformance/types/asyncGenerators/types.asyncGenerators.es2018.2.ts(31,7): error TS2322: Type '() => AsyncGenerator' is not assignable to type '() => AsyncIterator'. + Type 'AsyncGenerator' is not assignable to type 'AsyncIterator'. +tests/cases/conformance/types/asyncGenerators/types.asyncGenerators.es2018.2.ts(34,7): error TS2322: Type '() => AsyncGenerator' is not assignable to type '() => AsyncIterator'. + Type 'AsyncGenerator' is not assignable to type 'AsyncIterator'. tests/cases/conformance/types/asyncGenerators/types.asyncGenerators.es2018.2.ts(38,11): error TS2322: Type '"a"' is not assignable to type 'number'. tests/cases/conformance/types/asyncGenerators/types.asyncGenerators.es2018.2.ts(41,12): error TS2322: Type 'string' is not assignable to type 'number'. tests/cases/conformance/types/asyncGenerators/types.asyncGenerators.es2018.2.ts(44,12): error TS2322: Type 'string' is not assignable to type 'number'. @@ -49,11 +40,11 @@ tests/cases/conformance/types/asyncGenerators/types.asyncGenerators.es2018.2.ts( tests/cases/conformance/types/asyncGenerators/types.asyncGenerators.es2018.2.ts(56,11): error TS2322: Type '"a"' is not assignable to type 'number'. tests/cases/conformance/types/asyncGenerators/types.asyncGenerators.es2018.2.ts(59,12): error TS2322: Type 'string' is not assignable to type 'number'. tests/cases/conformance/types/asyncGenerators/types.asyncGenerators.es2018.2.ts(62,12): error TS2322: Type 'string' is not assignable to type 'number'. -tests/cases/conformance/types/asyncGenerators/types.asyncGenerators.es2018.2.ts(64,42): error TS2741: Property '[Symbol.iterator]' is missing in type 'AsyncGenerator' but required in type 'IterableIterator'. +tests/cases/conformance/types/asyncGenerators/types.asyncGenerators.es2018.2.ts(64,42): error TS2741: Property '[Symbol.iterator]' is missing in type 'AsyncGenerator' but required in type 'IterableIterator'. tests/cases/conformance/types/asyncGenerators/types.asyncGenerators.es2018.2.ts(67,42): error TS2741: Property '[Symbol.iterator]' is missing in type 'AsyncGenerator' but required in type 'Iterable'. -tests/cases/conformance/types/asyncGenerators/types.asyncGenerators.es2018.2.ts(70,42): error TS2322: Type 'AsyncGenerator' is not assignable to type 'Iterator'. +tests/cases/conformance/types/asyncGenerators/types.asyncGenerators.es2018.2.ts(70,42): error TS2322: Type 'AsyncGenerator' is not assignable to type 'Iterator'. Types of property 'next' are incompatible. - Type '(...args: [] | [undefined]) => Promise>' is not assignable to type '(...args: [] | [undefined]) => IteratorResult'. + Type '(...args: [] | [unknown]) => Promise>' is not assignable to type '(...args: [] | [unknown]) => IteratorResult'. Type 'Promise>' is not assignable to type 'IteratorResult'. Property 'value' is missing in type 'Promise>' but required in type 'IteratorYieldResult'. tests/cases/conformance/types/asyncGenerators/types.asyncGenerators.es2018.2.ts(74,12): error TS2504: Type '{}' must have a '[Symbol.asyncIterator]()' method that returns an async iterator. @@ -76,10 +67,10 @@ tests/cases/conformance/types/asyncGenerators/types.asyncGenerators.es2018.2.ts( } const assignability1: () => AsyncIterableIterator = async function * () { ~~~~~~~~~~~~~~ -!!! error TS2322: Type '() => AsyncGenerator' is not assignable to type '() => AsyncIterableIterator'. -!!! error TS2322: Type 'AsyncGenerator' is not assignable to type 'AsyncIterableIterator'. +!!! error TS2322: Type '() => AsyncGenerator' is not assignable to type '() => AsyncIterableIterator'. +!!! error TS2322: Type 'AsyncGenerator' is not assignable to type 'AsyncIterableIterator'. !!! error TS2322: Types of property 'next' are incompatible. -!!! error TS2322: Type '(...args: [] | [undefined]) => Promise>' is not assignable to type '(...args: [] | [undefined]) => Promise>'. +!!! error TS2322: Type '(...args: [] | [unknown]) => Promise>' is not assignable to type '(...args: [] | [unknown]) => Promise>'. !!! error TS2322: Type 'Promise>' is not assignable to type 'Promise>'. !!! error TS2322: Type 'IteratorResult' is not assignable to type 'IteratorResult'. !!! error TS2322: Type 'IteratorYieldResult' is not assignable to type 'IteratorResult'. @@ -89,65 +80,56 @@ tests/cases/conformance/types/asyncGenerators/types.asyncGenerators.es2018.2.ts( }; const assignability2: () => AsyncIterableIterator = async function * () { ~~~~~~~~~~~~~~ -!!! error TS2322: Type '() => AsyncGenerator' is not assignable to type '() => AsyncIterableIterator'. -!!! error TS2322: Type 'AsyncGenerator' is not assignable to type 'AsyncIterableIterator'. +!!! error TS2322: Type '() => AsyncGenerator' is not assignable to type '() => AsyncIterableIterator'. +!!! error TS2322: Type 'AsyncGenerator' is not assignable to type 'AsyncIterableIterator'. yield* ["a", "b"]; }; const assignability3: () => AsyncIterableIterator = async function * () { ~~~~~~~~~~~~~~ !!! error TS2322: Type '() => AsyncGenerator' is not assignable to type '() => AsyncIterableIterator'. !!! error TS2322: Type 'AsyncGenerator' is not assignable to type 'AsyncIterableIterator'. -!!! error TS2322: Types of property 'next' are incompatible. -!!! error TS2322: Type '(...args: [] | [unknown]) => Promise>' is not assignable to type '(...args: [] | [undefined]) => Promise>'. -!!! error TS2322: Type 'Promise>' is not assignable to type 'Promise>'. yield* (async function * () { yield "a"; })(); }; const assignability4: () => AsyncIterable = async function * () { ~~~~~~~~~~~~~~ -!!! error TS2322: Type '() => AsyncGenerator' is not assignable to type '() => AsyncIterable'. -!!! error TS2322: Type 'AsyncGenerator' is not assignable to type 'AsyncIterable'. +!!! error TS2322: Type '() => AsyncGenerator' is not assignable to type '() => AsyncIterable'. +!!! error TS2322: Type 'AsyncGenerator' is not assignable to type 'AsyncIterable'. !!! error TS2322: Types of property '[Symbol.asyncIterator]' are incompatible. -!!! error TS2322: Type '() => AsyncGenerator' is not assignable to type '() => AsyncIterator'. -!!! error TS2322: Type 'AsyncGenerator' is not assignable to type 'AsyncIterator'. +!!! error TS2322: Type '() => AsyncGenerator' is not assignable to type '() => AsyncIterator'. +!!! error TS2322: Type 'AsyncGenerator' is not assignable to type 'AsyncIterator'. !!! error TS2322: Types of property 'next' are incompatible. -!!! error TS2322: Type '(...args: [] | [undefined]) => Promise>' is not assignable to type '(...args: [] | [undefined]) => Promise>'. +!!! error TS2322: Type '(...args: [] | [unknown]) => Promise>' is not assignable to type '(...args: [] | [unknown]) => Promise>'. !!! error TS2322: Type 'Promise>' is not assignable to type 'Promise>'. yield "a"; }; const assignability5: () => AsyncIterable = async function * () { ~~~~~~~~~~~~~~ -!!! error TS2322: Type '() => AsyncGenerator' is not assignable to type '() => AsyncIterable'. -!!! error TS2322: Type 'AsyncGenerator' is not assignable to type 'AsyncIterable'. +!!! error TS2322: Type '() => AsyncGenerator' is not assignable to type '() => AsyncIterable'. +!!! error TS2322: Type 'AsyncGenerator' is not assignable to type 'AsyncIterable'. yield* ["a", "b"]; }; const assignability6: () => AsyncIterable = async function * () { ~~~~~~~~~~~~~~ !!! error TS2322: Type '() => AsyncGenerator' is not assignable to type '() => AsyncIterable'. !!! error TS2322: Type 'AsyncGenerator' is not assignable to type 'AsyncIterable'. -!!! error TS2322: Types of property '[Symbol.asyncIterator]' are incompatible. -!!! error TS2322: Type '() => AsyncGenerator' is not assignable to type '() => AsyncIterator'. -!!! error TS2322: Type 'AsyncGenerator' is not assignable to type 'AsyncIterator'. -!!! error TS2322: Types of property 'next' are incompatible. -!!! error TS2322: Type '(...args: [] | [unknown]) => Promise>' is not assignable to type '(...args: [] | [undefined]) => Promise>'. -!!! error TS2322: Type 'Promise>' is not assignable to type 'Promise>'. yield* (async function * () { yield "a"; })(); }; const assignability7: () => AsyncIterator = async function * () { ~~~~~~~~~~~~~~ -!!! error TS2322: Type '() => AsyncGenerator' is not assignable to type '() => AsyncIterator'. -!!! error TS2322: Type 'AsyncGenerator' is not assignable to type 'AsyncIterator'. +!!! error TS2322: Type '() => AsyncGenerator' is not assignable to type '() => AsyncIterator'. +!!! error TS2322: Type 'AsyncGenerator' is not assignable to type 'AsyncIterator'. yield "a"; }; const assignability8: () => AsyncIterator = async function * () { ~~~~~~~~~~~~~~ -!!! error TS2322: Type '() => AsyncGenerator' is not assignable to type '() => AsyncIterator'. -!!! error TS2322: Type 'AsyncGenerator' is not assignable to type 'AsyncIterator'. +!!! error TS2322: Type '() => AsyncGenerator' is not assignable to type '() => AsyncIterator'. +!!! error TS2322: Type 'AsyncGenerator' is not assignable to type 'AsyncIterator'. yield* ["a", "b"]; }; const assignability9: () => AsyncIterator = async function * () { ~~~~~~~~~~~~~~ -!!! error TS2322: Type '() => AsyncGenerator' is not assignable to type '() => AsyncIterator'. -!!! error TS2322: Type 'AsyncGenerator' is not assignable to type 'AsyncIterator'. +!!! error TS2322: Type '() => AsyncGenerator' is not assignable to type '() => AsyncIterator'. +!!! error TS2322: Type 'AsyncGenerator' is not assignable to type 'AsyncIterator'. yield* (async function * () { yield "a"; })(); }; async function * explicitReturnType1(): AsyncIterableIterator { @@ -197,7 +179,7 @@ tests/cases/conformance/types/asyncGenerators/types.asyncGenerators.es2018.2.ts( } async function * explicitReturnType10(): IterableIterator { ~~~~~~~~~~~~~~~~~~~~~~~~ -!!! error TS2741: Property '[Symbol.iterator]' is missing in type 'AsyncGenerator' but required in type 'IterableIterator'. +!!! error TS2741: Property '[Symbol.iterator]' is missing in type 'AsyncGenerator' but required in type 'IterableIterator'. !!! related TS2728 /.ts/lib.es2015.iterable.d.ts:55:5: '[Symbol.iterator]' is declared here. yield 1; } @@ -209,9 +191,9 @@ tests/cases/conformance/types/asyncGenerators/types.asyncGenerators.es2018.2.ts( } async function * explicitReturnType12(): Iterator { ~~~~~~~~~~~~~~~~ -!!! error TS2322: Type 'AsyncGenerator' is not assignable to type 'Iterator'. +!!! error TS2322: Type 'AsyncGenerator' is not assignable to type 'Iterator'. !!! error TS2322: Types of property 'next' are incompatible. -!!! error TS2322: Type '(...args: [] | [undefined]) => Promise>' is not assignable to type '(...args: [] | [undefined]) => IteratorResult'. +!!! error TS2322: Type '(...args: [] | [unknown]) => Promise>' is not assignable to type '(...args: [] | [unknown]) => IteratorResult'. !!! error TS2322: Type 'Promise>' is not assignable to type 'IteratorResult'. !!! error TS2322: Property 'value' is missing in type 'Promise>' but required in type 'IteratorYieldResult'. !!! related TS2728 /.ts/lib.es2015.iterable.d.ts:33:5: 'value' is declared here. diff --git a/tests/baselines/reference/types.asyncGenerators.es2018.2.types b/tests/baselines/reference/types.asyncGenerators.es2018.2.types index 83524871199..cabf65f6779 100644 --- a/tests/baselines/reference/types.asyncGenerators.es2018.2.types +++ b/tests/baselines/reference/types.asyncGenerators.es2018.2.types @@ -29,16 +29,16 @@ async function * inferReturnType3() { } const assignability1: () => AsyncIterableIterator = async function * () { >assignability1 : () => AsyncIterableIterator ->async function * () { yield "a";} : () => AsyncGenerator +>async function * () { yield "a";} : () => AsyncGenerator yield "a"; ->yield "a" : undefined +>yield "a" : unknown >"a" : "a" }; const assignability2: () => AsyncIterableIterator = async function * () { >assignability2 : () => AsyncIterableIterator ->async function * () { yield* ["a", "b"];} : () => AsyncGenerator +>async function * () { yield* ["a", "b"];} : () => AsyncGenerator yield* ["a", "b"]; >yield* ["a", "b"] : any @@ -62,16 +62,16 @@ const assignability3: () => AsyncIterableIterator = async function * () }; const assignability4: () => AsyncIterable = async function * () { >assignability4 : () => AsyncIterable ->async function * () { yield "a";} : () => AsyncGenerator +>async function * () { yield "a";} : () => AsyncGenerator yield "a"; ->yield "a" : undefined +>yield "a" : unknown >"a" : "a" }; const assignability5: () => AsyncIterable = async function * () { >assignability5 : () => AsyncIterable ->async function * () { yield* ["a", "b"];} : () => AsyncGenerator +>async function * () { yield* ["a", "b"];} : () => AsyncGenerator yield* ["a", "b"]; >yield* ["a", "b"] : any @@ -94,17 +94,17 @@ const assignability6: () => AsyncIterable = async function * () { }; const assignability7: () => AsyncIterator = async function * () { ->assignability7 : () => AsyncIterator ->async function * () { yield "a";} : () => AsyncGenerator +>assignability7 : () => AsyncIterator +>async function * () { yield "a";} : () => AsyncGenerator yield "a"; ->yield "a" : undefined +>yield "a" : unknown >"a" : "a" }; const assignability8: () => AsyncIterator = async function * () { ->assignability8 : () => AsyncIterator ->async function * () { yield* ["a", "b"];} : () => AsyncGenerator +>assignability8 : () => AsyncIterator +>async function * () { yield* ["a", "b"];} : () => AsyncGenerator yield* ["a", "b"]; >yield* ["a", "b"] : any @@ -114,7 +114,7 @@ const assignability8: () => AsyncIterator = async function * () { }; const assignability9: () => AsyncIterator = async function * () { ->assignability9 : () => AsyncIterator +>assignability9 : () => AsyncIterator >async function * () { yield* (async function * () { yield "a"; })();} : () => AsyncGenerator yield* (async function * () { yield "a"; })(); @@ -130,7 +130,7 @@ async function * explicitReturnType1(): AsyncIterableIterator { >explicitReturnType1 : () => AsyncIterableIterator yield "a"; ->yield "a" : undefined +>yield "a" : unknown >"a" : "a" } async function * explicitReturnType2(): AsyncIterableIterator { @@ -157,7 +157,7 @@ async function * explicitReturnType4(): AsyncIterable { >explicitReturnType4 : () => AsyncIterable yield "a"; ->yield "a" : undefined +>yield "a" : unknown >"a" : "a" } async function * explicitReturnType5(): AsyncIterable { @@ -181,14 +181,14 @@ async function * explicitReturnType6(): AsyncIterable { >"a" : "a" } async function * explicitReturnType7(): AsyncIterator { ->explicitReturnType7 : () => AsyncIterator +>explicitReturnType7 : () => AsyncIterator yield "a"; ->yield "a" : undefined +>yield "a" : unknown >"a" : "a" } async function * explicitReturnType8(): AsyncIterator { ->explicitReturnType8 : () => AsyncIterator +>explicitReturnType8 : () => AsyncIterator yield* ["a", "b"]; >yield* ["a", "b"] : any @@ -197,7 +197,7 @@ async function * explicitReturnType8(): AsyncIterator { >"b" : "b" } async function * explicitReturnType9(): AsyncIterator { ->explicitReturnType9 : () => AsyncIterator +>explicitReturnType9 : () => AsyncIterator yield* (async function * () { yield "a"; })(); >yield* (async function * () { yield "a"; })() : void @@ -211,7 +211,7 @@ async function * explicitReturnType10(): IterableIterator { >explicitReturnType10 : () => IterableIterator yield 1; ->yield 1 : undefined +>yield 1 : unknown >1 : 1 } async function * explicitReturnType11(): Iterable { @@ -222,10 +222,10 @@ async function * explicitReturnType11(): Iterable { >1 : 1 } async function * explicitReturnType12(): Iterator { ->explicitReturnType12 : () => Iterator +>explicitReturnType12 : () => Iterator yield 1; ->yield 1 : undefined +>yield 1 : unknown >1 : 1 } async function * yieldStar() { diff --git a/tests/baselines/reference/uniqueSymbols.types b/tests/baselines/reference/uniqueSymbols.types index a321593c11a..1a7ddac545a 100644 --- a/tests/baselines/reference/uniqueSymbols.types +++ b/tests/baselines/reference/uniqueSymbols.types @@ -131,7 +131,7 @@ function* genFuncYieldVarCall() { yield varCall; } function* genFuncYieldConstCallWithTypeQuery(): IterableIterator { yield constCall; } >genFuncYieldConstCallWithTypeQuery : () => IterableIterator >constCall : unique symbol ->yield constCall : undefined +>yield constCall : unknown >constCall : unique symbol // async function return inference @@ -819,7 +819,7 @@ interface Context { const o3: Context = { >o3 : Context ->{ method1() { return s; // return type should not widen due to contextual type }, async method2() { return s; // return type should not widen due to contextual type }, async * method3() { yield s; // yield type should not widen due to contextual type }, * method4() { yield s; // yield type should not widen due to contextual type }, method5(p = s) { // parameter should not widen due to contextual type return p; },} : { method1(): unique symbol; method2(): Promise; method3(): AsyncGenerator; method4(): Generator; method5(p?: unique symbol): unique symbol; } +>{ method1() { return s; // return type should not widen due to contextual type }, async method2() { return s; // return type should not widen due to contextual type }, async * method3() { yield s; // yield type should not widen due to contextual type }, * method4() { yield s; // yield type should not widen due to contextual type }, method5(p = s) { // parameter should not widen due to contextual type return p; },} : { method1(): unique symbol; method2(): Promise; method3(): AsyncGenerator; method4(): Generator; method5(p?: unique symbol): unique symbol; } method1() { >method1 : () => unique symbol @@ -836,18 +836,18 @@ const o3: Context = { }, async * method3() { ->method3 : () => AsyncGenerator +>method3 : () => AsyncGenerator yield s; // yield type should not widen due to contextual type ->yield s : undefined +>yield s : unknown >s : unique symbol }, * method4() { ->method4 : () => Generator +>method4 : () => Generator yield s; // yield type should not widen due to contextual type ->yield s : undefined +>yield s : unknown >s : unique symbol }, diff --git a/tests/baselines/reference/yieldExpression1.types b/tests/baselines/reference/yieldExpression1.types index 3e2510229e0..df45c4afb15 100644 --- a/tests/baselines/reference/yieldExpression1.types +++ b/tests/baselines/reference/yieldExpression1.types @@ -14,10 +14,10 @@ function* b(): IterableIterator { >b : () => IterableIterator yield; ->yield : undefined +>yield : unknown yield 0; ->yield 0 : undefined +>yield 0 : unknown >0 : 0 } diff --git a/tests/baselines/reference/yieldExpressionInnerCommentEmit.types b/tests/baselines/reference/yieldExpressionInnerCommentEmit.types index 3c0aec3fdd5..012a032b157 100644 --- a/tests/baselines/reference/yieldExpressionInnerCommentEmit.types +++ b/tests/baselines/reference/yieldExpressionInnerCommentEmit.types @@ -1,6 +1,6 @@ === tests/cases/compiler/yieldExpressionInnerCommentEmit.ts === function * foo2() { ->foo2 : () => Generator +>foo2 : () => Generator /*comment1*/ yield 1; >yield 1 : any diff --git a/tests/cases/conformance/generators/generatorReturnTypeFallback.3.ts b/tests/cases/conformance/generators/generatorReturnTypeFallback.3.ts index 388d8bee7ee..47aef044dd2 100644 --- a/tests/cases/conformance/generators/generatorReturnTypeFallback.3.ts +++ b/tests/cases/conformance/generators/generatorReturnTypeFallback.3.ts @@ -4,7 +4,6 @@ // @strict: true // Do not allow generators to fallback to IterableIterator while in strictNullChecks mode if they need a type for the sent value. -// NOTE: In non-strictNullChecks mode, `undefined` (the default sent value) is assignable to everything. function* f() { const x: string = yield 1; } \ No newline at end of file diff --git a/tests/cases/conformance/generators/generatorReturnTypeFallback.4.ts b/tests/cases/conformance/generators/generatorReturnTypeFallback.4.ts index 3fc9d4f50c6..2aebef6d300 100644 --- a/tests/cases/conformance/generators/generatorReturnTypeFallback.4.ts +++ b/tests/cases/conformance/generators/generatorReturnTypeFallback.4.ts @@ -3,8 +3,7 @@ // @noemit: true // @strict: false -// Allow generators to fallback to IterableIterator if they are not in strictNullChecks mode -// NOTE: In non-strictNullChecks mode, `undefined` (the default sent value) is assignable to everything. +// Do not allow generators to fallback to IterableIterator if they need a type for the sent value while not in strictNullChecks mode. function* f() { const x: string = yield 1; } \ No newline at end of file