From ef2e1d95a77497c1737e1074d756be204807fd9f Mon Sep 17 00:00:00 2001 From: Ron Buckton Date: Thu, 18 Apr 2024 14:25:34 -0400 Subject: [PATCH 01/17] Add TReturn/TNext to Iterable et al --- src/compiler/checker.ts | 49 ++---- src/lib/es2015.generator.d.ts | 2 +- src/lib/es2015.iterable.d.ts | 12 +- src/lib/es2018.asyncgenerator.d.ts | 2 +- src/lib/es2018.asynciterable.d.ts | 10 +- .../reference/YieldStarExpression4_es6.types | 3 +- .../reference/bigintWithLib.errors.txt | 24 +-- .../dependentDestructuredVariables.js | 2 +- .../dependentDestructuredVariables.types | 24 +-- .../destructuringAssignmentWithDefault2.types | 52 +++---- ...(exactoptionalpropertytypes=false).symbols | 7 +- ...y2(exactoptionalpropertytypes=false).types | 146 +++++++++--------- ...2(exactoptionalpropertytypes=true).symbols | 7 +- ...ty2(exactoptionalpropertytypes=true).types | 146 +++++++++--------- .../dissallowSymbolAsWeakType.errors.txt | 32 ++-- ....asyncGenerators.classMethods.es2015.types | 6 +- ....asyncGenerators.classMethods.es2018.types | 6 +- ...ter.asyncGenerators.classMethods.es5.types | 6 +- ...nerators.functionDeclarations.es2015.types | 6 +- ...nerators.functionDeclarations.es2018.types | 6 +- ...cGenerators.functionDeclarations.es5.types | 6 +- ...enerators.functionExpressions.es2015.types | 6 +- ...enerators.functionExpressions.es2018.types | 6 +- ...ncGenerators.functionExpressions.es5.types | 6 +- ...nerators.objectLiteralMethods.es2015.types | 6 +- ...nerators.objectLiteralMethods.es2018.types | 6 +- ...cGenerators.objectLiteralMethods.es5.types | 6 +- tests/baselines/reference/for-of29.errors.txt | 4 +- tests/baselines/reference/for-of29.types | 4 +- tests/baselines/reference/for-of39.errors.txt | 16 +- .../generatorReturnTypeInference.types | 16 +- ...eneratorReturnTypeInferenceNonStrict.types | 16 +- .../reference/generatorTypeCheck19.types | 3 +- .../reference/generatorTypeCheck20.types | 4 +- .../reference/generatorTypeCheck22.types | 6 +- .../reference/generatorTypeCheck23.types | 6 +- .../reference/generatorTypeCheck24.types | 9 +- .../reference/generatorTypeCheck25.errors.txt | 16 +- .../reference/generatorTypeCheck25.types | 8 +- .../reference/generatorTypeCheck26.symbols | 5 +- .../reference/generatorTypeCheck26.types | 29 ++-- .../reference/generatorTypeCheck53.types | 3 +- .../reference/generatorTypeCheck54.types | 6 +- .../reference/generatorTypeCheck62.errors.txt | 67 ++++++++ .../reference/generatorTypeCheck62.symbols | 4 +- .../reference/generatorTypeCheck62.types | 44 +++--- .../reference/generatorTypeCheck63.errors.txt | 52 +++++-- .../reference/generatorTypeCheck7.errors.txt | 4 +- .../reference/generatorTypeCheck8.errors.txt | 12 +- ...rtHelpersNoHelpersForAsyncGenerators.types | 4 +- .../iterableArrayPattern28.errors.txt | 16 +- ....asyncGenerators.classMethods.es2018.types | 4 +- ...nerators.functionDeclarations.es2018.types | 4 +- ...enerators.functionExpressions.es2018.types | 4 +- ...nerators.objectLiteralMethods.es2018.types | 4 +- .../types.asyncGenerators.es2018.1.types | 42 +++-- .../types.asyncGenerators.es2018.2.errors.txt | 104 ++++++------- .../types.asyncGenerators.es2018.2.types | 24 +-- .../yieldExpressionInControlFlow.errors.txt | 5 +- .../yieldExpressionInControlFlow.types | 16 +- .../yieldExpressionInnerCommentEmit.types | 6 +- tests/cases/compiler/customAsyncIterator.ts | 2 +- .../discriminateWithOptionalProperty2.ts | 2 +- .../yieldExpressions/generatorTypeCheck11.ts | 2 +- .../yieldExpressions/generatorTypeCheck12.ts | 2 +- .../yieldExpressions/generatorTypeCheck13.ts | 2 +- .../yieldExpressions/generatorTypeCheck26.ts | 2 +- .../yieldExpressions/generatorTypeCheck62.ts | 4 +- .../yieldExpressions/generatorTypeCheck63.ts | 8 +- .../codeFixAddMissingProperties22.ts | 2 +- 70 files changed, 659 insertions(+), 524 deletions(-) create mode 100644 tests/baselines/reference/generatorTypeCheck62.errors.txt diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index cc5d7b0cdd664..24eab98bf9de1 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -16373,7 +16373,7 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker { } function getGlobalAsyncIterableType(reportErrors: boolean) { - return (deferredGlobalAsyncIterableType ||= getGlobalType("AsyncIterable" as __String, /*arity*/ 1, reportErrors)) || emptyGenericType; + return (deferredGlobalAsyncIterableType ||= getGlobalType("AsyncIterable" as __String, /*arity*/ 3, reportErrors)) || emptyGenericType; } function getGlobalAsyncIteratorType(reportErrors: boolean) { @@ -16381,7 +16381,7 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker { } function getGlobalAsyncIterableIteratorType(reportErrors: boolean) { - return (deferredGlobalAsyncIterableIteratorType ||= getGlobalType("AsyncIterableIterator" as __String, /*arity*/ 1, reportErrors)) || emptyGenericType; + return (deferredGlobalAsyncIterableIteratorType ||= getGlobalType("AsyncIterableIterator" as __String, /*arity*/ 3, reportErrors)) || emptyGenericType; } function getGlobalAsyncGeneratorType(reportErrors: boolean) { @@ -16389,7 +16389,7 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker { } function getGlobalIterableType(reportErrors: boolean) { - return (deferredGlobalIterableType ||= getGlobalType("Iterable" as __String, /*arity*/ 1, reportErrors)) || emptyGenericType; + return (deferredGlobalIterableType ||= getGlobalType("Iterable" as __String, /*arity*/ 3, reportErrors)) || emptyGenericType; } function getGlobalIteratorType(reportErrors: boolean) { @@ -16397,7 +16397,7 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker { } function getGlobalIterableIteratorType(reportErrors: boolean) { - return (deferredGlobalIterableIteratorType ||= getGlobalType("IterableIterator" as __String, /*arity*/ 1, reportErrors)) || emptyGenericType; + return (deferredGlobalIterableIteratorType ||= getGlobalType("IterableIterator" as __String, /*arity*/ 3, reportErrors)) || emptyGenericType; } function getGlobalGeneratorType(reportErrors: boolean) { @@ -43788,28 +43788,15 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker { * `getIterationTypesOfIterable` instead. */ function getIterationTypesOfIterableFast(type: Type, resolver: IterationTypesResolver) { - // As an optimization, if the type is an instantiation of one of the following global types, then - // just grab its related type argument: - // - `Iterable` or `AsyncIterable` - // - `IterableIterator` or `AsyncIterableIterator` - let globalType: Type; - if ( - isReferenceToType(type, globalType = resolver.getGlobalIterableType(/*reportErrors*/ false)) || - isReferenceToType(type, globalType = resolver.getGlobalIterableIteratorType(/*reportErrors*/ false)) - ) { - const [yieldType] = getTypeArguments(type as GenericType); - // The "return" and "next" types of `Iterable` and `IterableIterator` are defined by the - // iteration types of their `[Symbol.iterator]()` method. The same is true for their async cousins. - // While we define these as `any` and `undefined` in our libs by default, a custom lib *could* use - // different definitions. - const { returnType, nextType } = getIterationTypesOfGlobalIterableType(globalType, resolver); - return setCachedIterationTypes(type, resolver.iterableCacheKey, createIterationTypes(resolver.resolveIterationType(yieldType, /*errorNode*/ undefined) || yieldType, resolver.resolveIterationType(returnType, /*errorNode*/ undefined) || returnType, nextType)); - } - // As an optimization, if the type is an instantiation of the following global type, then // just grab its related type arguments: + // - `Iterable` or `AsyncIterable` + // - `IterableIterator` or `AsyncIterableIterator` // - `Generator` or `AsyncGenerator` - if (isReferenceToType(type, resolver.getGlobalGeneratorType(/*reportErrors*/ false))) { + if ( + isReferenceToType(type, resolver.getGlobalIterableType(/*reportErrors*/ false)) || + isReferenceToType(type, resolver.getGlobalIterableIteratorType(/*reportErrors*/ false)) || + isReferenceToType(type, resolver.getGlobalGeneratorType(/*reportErrors*/ false))) { const [yieldType, returnType, nextType] = getTypeArguments(type as GenericType); return setCachedIterationTypes(type, resolver.iterableCacheKey, createIterationTypes(resolver.resolveIterationType(yieldType, /*errorNode*/ undefined) || yieldType, resolver.resolveIterationType(returnType, /*errorNode*/ undefined) || returnType, nextType)); } @@ -43927,22 +43914,12 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker { */ function getIterationTypesOfIteratorFast(type: Type, resolver: IterationTypesResolver) { // As an optimization, if the type is an instantiation of one of the following global types, - // then just grab its related type argument: - // - `IterableIterator` or `AsyncIterableIterator` + // then just grab its related type argumenst: + // - `IterableIterator` or `AsyncIterableIterator` // - `Iterator` or `AsyncIterator` // - `Generator` or `AsyncGenerator` - const globalType = resolver.getGlobalIterableIteratorType(/*reportErrors*/ false); - if (isReferenceToType(type, globalType)) { - const [yieldType] = getTypeArguments(type as GenericType); - // The "return" and "next" types of `IterableIterator` and `AsyncIterableIterator` are defined by the - // iteration types of their `next`, `return`, and `throw` methods. While we define these as `any` - // and `undefined` in our libs by default, a custom lib *could* use different definitions. - const globalIterationTypes = getIterationTypesOfIteratorCached(globalType, resolver) || - getIterationTypesOfIteratorSlow(globalType, resolver, /*errorNode*/ undefined, /*errorOutputContainer*/ undefined, /*noCache*/ false); - const { returnType, nextType } = globalIterationTypes === noIterationTypes ? defaultIterationTypes : globalIterationTypes; - return setCachedIterationTypes(type, resolver.iteratorCacheKey, createIterationTypes(yieldType, returnType, nextType)); - } if ( + isReferenceToType(type, resolver.getGlobalIterableIteratorType(/*reportErrors*/ false)) || isReferenceToType(type, resolver.getGlobalIteratorType(/*reportErrors*/ false)) || isReferenceToType(type, resolver.getGlobalGeneratorType(/*reportErrors*/ false)) ) { diff --git a/src/lib/es2015.generator.d.ts b/src/lib/es2015.generator.d.ts index 7c6929173a0e4..0e63f2c206ebf 100644 --- a/src/lib/es2015.generator.d.ts +++ b/src/lib/es2015.generator.d.ts @@ -1,6 +1,6 @@ /// -interface Generator extends Iterator { +interface Generator extends 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/es2015.iterable.d.ts b/src/lib/es2015.iterable.d.ts index d28b8381eec86..3c6901b3ea7bd 100644 --- a/src/lib/es2015.iterable.d.ts +++ b/src/lib/es2015.iterable.d.ts @@ -18,21 +18,21 @@ interface IteratorReturnResult { value: TReturn; } -type IteratorResult = IteratorYieldResult | 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; throw?(e?: any): IteratorResult; } -interface Iterable { - [Symbol.iterator](): Iterator; +interface Iterable { + [Symbol.iterator](): Iterator; } -interface IterableIterator extends Iterator { - [Symbol.iterator](): IterableIterator; +interface IterableIterator extends Iterator { + [Symbol.iterator](): IterableIterator; } interface Array { diff --git a/src/lib/es2018.asyncgenerator.d.ts b/src/lib/es2018.asyncgenerator.d.ts index f6966264c8be4..1f78609e23acc 100644 --- a/src/lib/es2018.asyncgenerator.d.ts +++ b/src/lib/es2018.asyncgenerator.d.ts @@ -1,6 +1,6 @@ /// -interface AsyncGenerator extends AsyncIterator { +interface AsyncGenerator extends 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/src/lib/es2018.asynciterable.d.ts b/src/lib/es2018.asynciterable.d.ts index 0fe799e21055e..c1b447e5166b5 100644 --- a/src/lib/es2018.asynciterable.d.ts +++ b/src/lib/es2018.asynciterable.d.ts @@ -9,17 +9,17 @@ interface SymbolConstructor { readonly asyncIterator: unique 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>; throw?(e?: any): Promise>; } -interface AsyncIterable { - [Symbol.asyncIterator](): AsyncIterator; +interface AsyncIterable { + [Symbol.asyncIterator](): AsyncIterator; } -interface AsyncIterableIterator extends AsyncIterator { - [Symbol.asyncIterator](): AsyncIterableIterator; +interface AsyncIterableIterator extends AsyncIterator { + [Symbol.asyncIterator](): AsyncIterableIterator; } diff --git a/tests/baselines/reference/YieldStarExpression4_es6.types b/tests/baselines/reference/YieldStarExpression4_es6.types index 5a84b1bba080b..e2bec7220b371 100644 --- a/tests/baselines/reference/YieldStarExpression4_es6.types +++ b/tests/baselines/reference/YieldStarExpression4_es6.types @@ -6,7 +6,8 @@ function *g() { > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ yield * []; ->yield * [] : any +>yield * [] : void +> : ^^^^ >[] : undefined[] > : ^^^^^^^^^^^ } diff --git a/tests/baselines/reference/bigintWithLib.errors.txt b/tests/baselines/reference/bigintWithLib.errors.txt index aa402ec0cba5c..31b3222deb43f 100644 --- a/tests/baselines/reference/bigintWithLib.errors.txt +++ b/tests/baselines/reference/bigintWithLib.errors.txt @@ -2,11 +2,11 @@ bigintWithLib.ts(4,1): error TS2350: Only a void function can be called with the bigintWithLib.ts(19,33): error TS2769: No overload matches this call. Overload 1 of 3, '(length?: number): BigInt64Array', gave the following error. Argument of type 'number[]' is not assignable to parameter of type 'number'. - Overload 2 of 3, '(array: Iterable): BigInt64Array', gave the following error. - Argument of type 'number[]' is not assignable to parameter of type 'Iterable'. + Overload 2 of 3, '(array: Iterable): BigInt64Array', gave the following error. + Argument of type 'number[]' is not assignable to parameter of type 'Iterable'. The types returned by '[Symbol.iterator]().next(...)' are incompatible between these types. - Type 'IteratorResult' is not assignable to type 'IteratorResult'. - Type 'IteratorYieldResult' is not assignable to type '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'. Type 'number' is not assignable to type 'bigint'. Overload 3 of 3, '(buffer: ArrayBufferLike, byteOffset?: number, length?: number): BigInt64Array', gave the following error. @@ -16,8 +16,8 @@ bigintWithLib.ts(24,13): error TS2540: Cannot assign to 'length' because it is a bigintWithLib.ts(31,35): error TS2769: No overload matches this call. Overload 1 of 3, '(length?: number): BigUint64Array', gave the following error. Argument of type 'number[]' is not assignable to parameter of type 'number'. - Overload 2 of 3, '(array: Iterable): BigUint64Array', gave the following error. - Argument of type 'number[]' is not assignable to parameter of type 'Iterable'. + Overload 2 of 3, '(array: Iterable): BigUint64Array', gave the following error. + Argument of type 'number[]' is not assignable to parameter of type 'Iterable'. Overload 3 of 3, '(buffer: ArrayBufferLike, byteOffset?: number, length?: number): BigUint64Array', gave the following error. Argument of type 'number[]' is not assignable to parameter of type 'ArrayBufferLike'. bigintWithLib.ts(36,13): error TS2540: Cannot assign to 'length' because it is a read-only property. @@ -51,11 +51,11 @@ bigintWithLib.ts(46,26): error TS2345: Argument of type 'number' is not assignab !!! error TS2769: No overload matches this call. !!! error TS2769: Overload 1 of 3, '(length?: number): BigInt64Array', gave the following error. !!! error TS2769: Argument of type 'number[]' is not assignable to parameter of type 'number'. -!!! 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: 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: The types returned by '[Symbol.iterator]().next(...)' are incompatible between these types. -!!! error TS2769: Type 'IteratorResult' is not assignable to type 'IteratorResult'. -!!! error TS2769: Type 'IteratorYieldResult' is not assignable to type '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'. !!! error TS2769: Type 'number' is not assignable to type 'bigint'. !!! error TS2769: Overload 3 of 3, '(buffer: ArrayBufferLike, byteOffset?: number, length?: number): BigInt64Array', gave the following error. @@ -79,8 +79,8 @@ bigintWithLib.ts(46,26): error TS2345: Argument of type 'number' is not assignab !!! error TS2769: No overload matches this call. !!! error TS2769: Overload 1 of 3, '(length?: number): BigUint64Array', gave the following error. !!! error TS2769: Argument of type 'number[]' is not assignable to parameter of type 'number'. -!!! error TS2769: Overload 2 of 3, '(array: Iterable): BigUint64Array', gave the following error. -!!! error TS2769: Argument of type 'number[]' is not assignable to parameter of type 'Iterable'. +!!! error TS2769: Overload 2 of 3, '(array: Iterable): BigUint64Array', gave the following error. +!!! error TS2769: Argument of type 'number[]' is not assignable to parameter of type 'Iterable'. !!! error TS2769: Overload 3 of 3, '(buffer: ArrayBufferLike, byteOffset?: number, length?: number): BigUint64Array', gave the following error. !!! error TS2769: Argument of type 'number[]' is not assignable to parameter of type 'ArrayBufferLike'. bigUintArray = new BigUint64Array(new ArrayBuffer(80)); diff --git a/tests/baselines/reference/dependentDestructuredVariables.js b/tests/baselines/reference/dependentDestructuredVariables.js index 7d32808909bf7..9ed165049878f 100644 --- a/tests/baselines/reference/dependentDestructuredVariables.js +++ b/tests/baselines/reference/dependentDestructuredVariables.js @@ -887,7 +887,7 @@ type Action3 = { }; declare const reducerBroken: (state: number, { type, payload }: Action3) => number; declare var it: Iterator; -declare const value: any, done: boolean | undefined; +declare const value: number | void, done: boolean | undefined; declare function f50(cb: (...args: Args) => void): void; declare const f51: (...args: ['A', number] | ['B', string]) => void; declare const f52: (...args: ['A', number] | ['B']) => void; diff --git a/tests/baselines/reference/dependentDestructuredVariables.types b/tests/baselines/reference/dependentDestructuredVariables.types index 2c9d385bebe84..d52f901b65d12 100644 --- a/tests/baselines/reference/dependentDestructuredVariables.types +++ b/tests/baselines/reference/dependentDestructuredVariables.types @@ -789,22 +789,22 @@ const reducerBroken = (state: number, { type, payload }: Action3) => { // Repro from #46143 declare var it: Iterator; ->it : Iterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>it : Iterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ const { value, done } = it.next(); ->value : any -> : ^^^ +>value : number | void +> : ^^^^^^^^^^^^^ >done : boolean | undefined > : ^^^^^^^^^^^^^^^^^^^ ->it.next() : IteratorResult -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->it.next : (...args: [] | [undefined]) => IteratorResult -> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->it : Iterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->next : (...args: [] | [undefined]) => IteratorResult -> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>it.next() : IteratorResult +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>it.next : (...args: [] | [undefined]) => IteratorResult +> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>it : Iterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>next : (...args: [] | [undefined]) => IteratorResult +> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ if (!done) { >!done : boolean diff --git a/tests/baselines/reference/destructuringAssignmentWithDefault2.types b/tests/baselines/reference/destructuringAssignmentWithDefault2.types index d4db43b1ccd92..444844bf8bd06 100644 --- a/tests/baselines/reference/destructuringAssignmentWithDefault2.types +++ b/tests/baselines/reference/destructuringAssignmentWithDefault2.types @@ -147,8 +147,8 @@ const { x: z3 = undefined } = a; declare const r: Iterator; ->r : Iterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>r : Iterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ let done: boolean; >done : boolean @@ -159,10 +159,10 @@ let value; > : ^^^ ({ done = false, value } = r.next()); ->({ done = false, value } = r.next()) : IteratorResult -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->{ done = false, value } = r.next() : IteratorResult -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>({ done = false, value } = r.next()) : IteratorResult +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>{ done = false, value } = r.next() : IteratorResult +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ done = false, value } : { done?: boolean; value: any; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >done : boolean @@ -171,20 +171,20 @@ let value; > : ^^^^^ >value : any > : ^^^ ->r.next() : IteratorResult -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->r.next : (...args: [] | [undefined]) => IteratorResult -> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->r : Iterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->next : (...args: [] | [undefined]) => IteratorResult -> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>r.next() : IteratorResult +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>r.next : (...args: [] | [undefined]) => IteratorResult +> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>r : Iterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>next : (...args: [] | [undefined]) => IteratorResult +> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ({ done: done = false, value } = r.next()); ->({ done: done = false, value } = r.next()) : IteratorResult -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->{ done: done = false, value } = r.next() : IteratorResult -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>({ done: done = false, value } = r.next()) : IteratorResult +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>{ done: done = false, value } = r.next() : IteratorResult +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ done: done = false, value } : { done?: boolean; value: any; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >done : boolean @@ -197,12 +197,12 @@ let value; > : ^^^^^ >value : any > : ^^^ ->r.next() : IteratorResult -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->r.next : (...args: [] | [undefined]) => IteratorResult -> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->r : Iterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->next : (...args: [] | [undefined]) => IteratorResult -> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>r.next() : IteratorResult +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>r.next : (...args: [] | [undefined]) => IteratorResult +> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>r : Iterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>next : (...args: [] | [undefined]) => IteratorResult +> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/discriminateWithOptionalProperty2(exactoptionalpropertytypes=false).symbols b/tests/baselines/reference/discriminateWithOptionalProperty2(exactoptionalpropertytypes=false).symbols index 16a1e57d1b016..92e1297495f1b 100644 --- a/tests/baselines/reference/discriminateWithOptionalProperty2(exactoptionalpropertytypes=false).symbols +++ b/tests/baselines/reference/discriminateWithOptionalProperty2(exactoptionalpropertytypes=false).symbols @@ -16,16 +16,17 @@ function mapAsyncIterable( >U : Symbol(U, Decl(discriminateWithOptionalProperty2.ts, 4, 28)) >R : Symbol(R, Decl(discriminateWithOptionalProperty2.ts, 4, 31)) - iterable: AsyncGenerator | AsyncIterable, + iterable: AsyncGenerator | AsyncIterable, >iterable : Symbol(iterable, Decl(discriminateWithOptionalProperty2.ts, 4, 47)) >AsyncGenerator : Symbol(AsyncGenerator, Decl(lib.es2018.asyncgenerator.d.ts, --, --)) >T : Symbol(T, Decl(discriminateWithOptionalProperty2.ts, 4, 26)) >R : Symbol(R, Decl(discriminateWithOptionalProperty2.ts, 4, 31)) >AsyncIterable : Symbol(AsyncIterable, Decl(lib.es2018.asynciterable.d.ts, --, --)) >T : Symbol(T, Decl(discriminateWithOptionalProperty2.ts, 4, 26)) +>R : Symbol(R, Decl(discriminateWithOptionalProperty2.ts, 4, 31)) callback: (value: T) => PromiseOrValue, ->callback : Symbol(callback, Decl(discriminateWithOptionalProperty2.ts, 5, 58)) +>callback : Symbol(callback, Decl(discriminateWithOptionalProperty2.ts, 5, 77)) >value : Symbol(value, Decl(discriminateWithOptionalProperty2.ts, 6, 13)) >T : Symbol(T, Decl(discriminateWithOptionalProperty2.ts, 4, 26)) >PromiseOrValue : Symbol(PromiseOrValue, Decl(discriminateWithOptionalProperty2.ts, 0, 0)) @@ -70,7 +71,7 @@ function mapAsyncIterable( try { return { value: await callback(result.value), done: false }; >value : Symbol(value, Decl(discriminateWithOptionalProperty2.ts, 18, 14)) ->callback : Symbol(callback, Decl(discriminateWithOptionalProperty2.ts, 5, 58)) +>callback : Symbol(callback, Decl(discriminateWithOptionalProperty2.ts, 5, 77)) >result.value : Symbol(IteratorYieldResult.value, Decl(lib.es2015.iterable.d.ts, --, --)) >result : Symbol(result, Decl(discriminateWithOptionalProperty2.ts, 10, 27)) >value : Symbol(IteratorYieldResult.value, Decl(lib.es2015.iterable.d.ts, --, --)) diff --git a/tests/baselines/reference/discriminateWithOptionalProperty2(exactoptionalpropertytypes=false).types b/tests/baselines/reference/discriminateWithOptionalProperty2(exactoptionalpropertytypes=false).types index 77833d30a8769..ccd5d0887e524 100644 --- a/tests/baselines/reference/discriminateWithOptionalProperty2(exactoptionalpropertytypes=false).types +++ b/tests/baselines/reference/discriminateWithOptionalProperty2(exactoptionalpropertytypes=false).types @@ -8,12 +8,12 @@ type PromiseOrValue = Promise | T; > : ^^^^^^^^^^^^^^^^^ function mapAsyncIterable( ->mapAsyncIterable : (iterable: AsyncGenerator | AsyncIterable, callback: (value: T) => PromiseOrValue) => AsyncGenerator -> : ^ ^^ ^^ ^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ +>mapAsyncIterable : (iterable: AsyncGenerator | AsyncIterable, callback: (value: T) => PromiseOrValue) => AsyncGenerator +> : ^ ^^ ^^ ^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ - iterable: AsyncGenerator | AsyncIterable, ->iterable : AsyncGenerator | AsyncIterable -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + iterable: AsyncGenerator | AsyncIterable, +>iterable : AsyncGenerator | AsyncIterable +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ callback: (value: T) => PromiseOrValue, >callback : (value: T) => PromiseOrValue @@ -23,14 +23,14 @@ function mapAsyncIterable( ): AsyncGenerator { const iterator = iterable[Symbol.asyncIterator](); ->iterator : AsyncIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->iterable[Symbol.asyncIterator]() : AsyncIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->iterable[Symbol.asyncIterator] : (() => AsyncGenerator) | (() => AsyncIterator) -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->iterable : AsyncGenerator | AsyncIterable -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>iterator : AsyncIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>iterable[Symbol.asyncIterator]() : AsyncIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>iterable[Symbol.asyncIterator] : (() => AsyncGenerator) | (() => AsyncIterator) +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>iterable : AsyncGenerator | AsyncIterable +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Symbol.asyncIterator : unique symbol > : ^^^^^^^^^^^^^ >Symbol : SymbolConstructor @@ -92,27 +92,27 @@ function mapAsyncIterable( > : ^^^^^^^ >typeof iterator.return : "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function" > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->iterator.return : ((value?: any) => Promise>) | undefined -> : ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->iterator : AsyncIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->return : ((value?: any) => Promise>) | undefined -> : ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>iterator.return : ((value?: R | PromiseLike | undefined) => Promise>) | undefined +> : ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>iterator : AsyncIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>return : ((value?: R | PromiseLike | undefined) => Promise>) | undefined +> : ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >"function" : "function" > : ^^^^^^^^^^ try { await iterator.return(); ->await iterator.return() : IteratorResult -> : ^^^^^^^^^^^^^^^^^^^^^^ ->iterator.return() : Promise> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->iterator.return : (value?: any) => Promise> -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->iterator : AsyncIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->return : (value?: any) => Promise> -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>await iterator.return() : IteratorResult +> : ^^^^^^^^^^^^^^^^^^^^ +>iterator.return() : Promise> +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>iterator.return : (value?: R | PromiseLike | undefined) => Promise> +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>iterator : AsyncIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>return : (value?: R | PromiseLike | undefined) => Promise> +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ } catch (_e) {} >_e : unknown @@ -137,16 +137,16 @@ function mapAsyncIterable( > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >mapResult : (result: IteratorResult) => Promise> > : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->await iterator.next() : IteratorResult -> : ^^^^^^^^^^^^^^^^^^^^^^ ->iterator.next() : Promise> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->iterator.next : (...args: [] | [undefined]) => Promise> -> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->iterator : AsyncIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->next : (...args: [] | [undefined]) => Promise> -> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>await iterator.next() : IteratorResult +> : ^^^^^^^^^^^^^^^^^^^^ +>iterator.next() : Promise> +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>iterator.next : (...args: [] | [undefined]) => Promise> +> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>iterator : AsyncIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>next : (...args: [] | [undefined]) => Promise> +> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ }, async return(): Promise> { @@ -160,12 +160,12 @@ function mapAsyncIterable( > : ^^^^^^^ >typeof iterator.return : "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function" > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->iterator.return : ((value?: any) => Promise>) | undefined -> : ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->iterator : AsyncIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->return : ((value?: any) => Promise>) | undefined -> : ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>iterator.return : ((value?: R | PromiseLike | undefined) => Promise>) | undefined +> : ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>iterator : AsyncIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>return : ((value?: R | PromiseLike | undefined) => Promise>) | undefined +> : ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >"function" : "function" > : ^^^^^^^^^^ @@ -174,16 +174,16 @@ function mapAsyncIterable( > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >mapResult : (result: IteratorResult) => Promise> > : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->await iterator.return() : IteratorResult -> : ^^^^^^^^^^^^^^^^^^^^^^ ->iterator.return() : Promise> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->iterator.return : (value?: any) => Promise> -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->iterator : AsyncIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->return : (value?: any) => Promise> -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>await iterator.return() : IteratorResult +> : ^^^^^^^^^^^^^^^^^^^^ +>iterator.return() : Promise> +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>iterator.return : (value?: R | PromiseLike | undefined) => Promise> +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>iterator : AsyncIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>return : (value?: R | PromiseLike | undefined) => Promise> +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ : { value: undefined as any, done: true }; >{ value: undefined as any, done: true } : { value: any; done: true; } @@ -209,12 +209,12 @@ function mapAsyncIterable( > : ^^^^^^^ >typeof iterator.throw : "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function" > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->iterator.throw : ((e?: any) => Promise>) | undefined -> : ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->iterator : AsyncIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->throw : ((e?: any) => Promise>) | undefined -> : ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>iterator.throw : ((e?: any) => Promise>) | undefined +> : ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>iterator : AsyncIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>throw : ((e?: any) => Promise>) | undefined +> : ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >"function" : "function" > : ^^^^^^^^^^ @@ -223,16 +223,16 @@ function mapAsyncIterable( > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >mapResult : (result: IteratorResult) => Promise> > : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->await iterator.throw(error) : IteratorResult -> : ^^^^^^^^^^^^^^^^^^^^^^ ->iterator.throw(error) : Promise> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->iterator.throw : (e?: any) => Promise> -> : ^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->iterator : AsyncIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->throw : (e?: any) => Promise> -> : ^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>await iterator.throw(error) : IteratorResult +> : ^^^^^^^^^^^^^^^^^^^^ +>iterator.throw(error) : Promise> +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>iterator.throw : (e?: any) => Promise> +> : ^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>iterator : AsyncIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>throw : (e?: any) => Promise> +> : ^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >error : unknown > : ^^^^^^^ } @@ -355,8 +355,8 @@ const doubles = mapAsyncIterable(iterable, (x) => x + x); > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >mapAsyncIterable(iterable, (x) => x + x) : AsyncGenerator > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->mapAsyncIterable : (iterable: AsyncGenerator | AsyncIterable, callback: (value: T) => PromiseOrValue) => AsyncGenerator -> : ^ ^^ ^^ ^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>mapAsyncIterable : (iterable: AsyncGenerator | AsyncIterable, callback: (value: T) => PromiseOrValue) => AsyncGenerator +> : ^ ^^ ^^ ^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >iterable : { [Symbol.asyncIterator](): any; next(): Promise<{ done: boolean; value: number; }>; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >(x) => x + x : (x: number) => number diff --git a/tests/baselines/reference/discriminateWithOptionalProperty2(exactoptionalpropertytypes=true).symbols b/tests/baselines/reference/discriminateWithOptionalProperty2(exactoptionalpropertytypes=true).symbols index 16a1e57d1b016..92e1297495f1b 100644 --- a/tests/baselines/reference/discriminateWithOptionalProperty2(exactoptionalpropertytypes=true).symbols +++ b/tests/baselines/reference/discriminateWithOptionalProperty2(exactoptionalpropertytypes=true).symbols @@ -16,16 +16,17 @@ function mapAsyncIterable( >U : Symbol(U, Decl(discriminateWithOptionalProperty2.ts, 4, 28)) >R : Symbol(R, Decl(discriminateWithOptionalProperty2.ts, 4, 31)) - iterable: AsyncGenerator | AsyncIterable, + iterable: AsyncGenerator | AsyncIterable, >iterable : Symbol(iterable, Decl(discriminateWithOptionalProperty2.ts, 4, 47)) >AsyncGenerator : Symbol(AsyncGenerator, Decl(lib.es2018.asyncgenerator.d.ts, --, --)) >T : Symbol(T, Decl(discriminateWithOptionalProperty2.ts, 4, 26)) >R : Symbol(R, Decl(discriminateWithOptionalProperty2.ts, 4, 31)) >AsyncIterable : Symbol(AsyncIterable, Decl(lib.es2018.asynciterable.d.ts, --, --)) >T : Symbol(T, Decl(discriminateWithOptionalProperty2.ts, 4, 26)) +>R : Symbol(R, Decl(discriminateWithOptionalProperty2.ts, 4, 31)) callback: (value: T) => PromiseOrValue, ->callback : Symbol(callback, Decl(discriminateWithOptionalProperty2.ts, 5, 58)) +>callback : Symbol(callback, Decl(discriminateWithOptionalProperty2.ts, 5, 77)) >value : Symbol(value, Decl(discriminateWithOptionalProperty2.ts, 6, 13)) >T : Symbol(T, Decl(discriminateWithOptionalProperty2.ts, 4, 26)) >PromiseOrValue : Symbol(PromiseOrValue, Decl(discriminateWithOptionalProperty2.ts, 0, 0)) @@ -70,7 +71,7 @@ function mapAsyncIterable( try { return { value: await callback(result.value), done: false }; >value : Symbol(value, Decl(discriminateWithOptionalProperty2.ts, 18, 14)) ->callback : Symbol(callback, Decl(discriminateWithOptionalProperty2.ts, 5, 58)) +>callback : Symbol(callback, Decl(discriminateWithOptionalProperty2.ts, 5, 77)) >result.value : Symbol(IteratorYieldResult.value, Decl(lib.es2015.iterable.d.ts, --, --)) >result : Symbol(result, Decl(discriminateWithOptionalProperty2.ts, 10, 27)) >value : Symbol(IteratorYieldResult.value, Decl(lib.es2015.iterable.d.ts, --, --)) diff --git a/tests/baselines/reference/discriminateWithOptionalProperty2(exactoptionalpropertytypes=true).types b/tests/baselines/reference/discriminateWithOptionalProperty2(exactoptionalpropertytypes=true).types index 77833d30a8769..ccd5d0887e524 100644 --- a/tests/baselines/reference/discriminateWithOptionalProperty2(exactoptionalpropertytypes=true).types +++ b/tests/baselines/reference/discriminateWithOptionalProperty2(exactoptionalpropertytypes=true).types @@ -8,12 +8,12 @@ type PromiseOrValue = Promise | T; > : ^^^^^^^^^^^^^^^^^ function mapAsyncIterable( ->mapAsyncIterable : (iterable: AsyncGenerator | AsyncIterable, callback: (value: T) => PromiseOrValue) => AsyncGenerator -> : ^ ^^ ^^ ^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ +>mapAsyncIterable : (iterable: AsyncGenerator | AsyncIterable, callback: (value: T) => PromiseOrValue) => AsyncGenerator +> : ^ ^^ ^^ ^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ - iterable: AsyncGenerator | AsyncIterable, ->iterable : AsyncGenerator | AsyncIterable -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + iterable: AsyncGenerator | AsyncIterable, +>iterable : AsyncGenerator | AsyncIterable +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ callback: (value: T) => PromiseOrValue, >callback : (value: T) => PromiseOrValue @@ -23,14 +23,14 @@ function mapAsyncIterable( ): AsyncGenerator { const iterator = iterable[Symbol.asyncIterator](); ->iterator : AsyncIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->iterable[Symbol.asyncIterator]() : AsyncIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->iterable[Symbol.asyncIterator] : (() => AsyncGenerator) | (() => AsyncIterator) -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->iterable : AsyncGenerator | AsyncIterable -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>iterator : AsyncIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>iterable[Symbol.asyncIterator]() : AsyncIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>iterable[Symbol.asyncIterator] : (() => AsyncGenerator) | (() => AsyncIterator) +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>iterable : AsyncGenerator | AsyncIterable +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Symbol.asyncIterator : unique symbol > : ^^^^^^^^^^^^^ >Symbol : SymbolConstructor @@ -92,27 +92,27 @@ function mapAsyncIterable( > : ^^^^^^^ >typeof iterator.return : "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function" > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->iterator.return : ((value?: any) => Promise>) | undefined -> : ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->iterator : AsyncIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->return : ((value?: any) => Promise>) | undefined -> : ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>iterator.return : ((value?: R | PromiseLike | undefined) => Promise>) | undefined +> : ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>iterator : AsyncIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>return : ((value?: R | PromiseLike | undefined) => Promise>) | undefined +> : ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >"function" : "function" > : ^^^^^^^^^^ try { await iterator.return(); ->await iterator.return() : IteratorResult -> : ^^^^^^^^^^^^^^^^^^^^^^ ->iterator.return() : Promise> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->iterator.return : (value?: any) => Promise> -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->iterator : AsyncIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->return : (value?: any) => Promise> -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>await iterator.return() : IteratorResult +> : ^^^^^^^^^^^^^^^^^^^^ +>iterator.return() : Promise> +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>iterator.return : (value?: R | PromiseLike | undefined) => Promise> +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>iterator : AsyncIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>return : (value?: R | PromiseLike | undefined) => Promise> +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ } catch (_e) {} >_e : unknown @@ -137,16 +137,16 @@ function mapAsyncIterable( > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >mapResult : (result: IteratorResult) => Promise> > : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->await iterator.next() : IteratorResult -> : ^^^^^^^^^^^^^^^^^^^^^^ ->iterator.next() : Promise> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->iterator.next : (...args: [] | [undefined]) => Promise> -> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->iterator : AsyncIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->next : (...args: [] | [undefined]) => Promise> -> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>await iterator.next() : IteratorResult +> : ^^^^^^^^^^^^^^^^^^^^ +>iterator.next() : Promise> +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>iterator.next : (...args: [] | [undefined]) => Promise> +> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>iterator : AsyncIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>next : (...args: [] | [undefined]) => Promise> +> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ }, async return(): Promise> { @@ -160,12 +160,12 @@ function mapAsyncIterable( > : ^^^^^^^ >typeof iterator.return : "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function" > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->iterator.return : ((value?: any) => Promise>) | undefined -> : ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->iterator : AsyncIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->return : ((value?: any) => Promise>) | undefined -> : ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>iterator.return : ((value?: R | PromiseLike | undefined) => Promise>) | undefined +> : ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>iterator : AsyncIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>return : ((value?: R | PromiseLike | undefined) => Promise>) | undefined +> : ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >"function" : "function" > : ^^^^^^^^^^ @@ -174,16 +174,16 @@ function mapAsyncIterable( > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >mapResult : (result: IteratorResult) => Promise> > : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->await iterator.return() : IteratorResult -> : ^^^^^^^^^^^^^^^^^^^^^^ ->iterator.return() : Promise> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->iterator.return : (value?: any) => Promise> -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->iterator : AsyncIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->return : (value?: any) => Promise> -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>await iterator.return() : IteratorResult +> : ^^^^^^^^^^^^^^^^^^^^ +>iterator.return() : Promise> +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>iterator.return : (value?: R | PromiseLike | undefined) => Promise> +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>iterator : AsyncIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>return : (value?: R | PromiseLike | undefined) => Promise> +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ : { value: undefined as any, done: true }; >{ value: undefined as any, done: true } : { value: any; done: true; } @@ -209,12 +209,12 @@ function mapAsyncIterable( > : ^^^^^^^ >typeof iterator.throw : "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function" > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->iterator.throw : ((e?: any) => Promise>) | undefined -> : ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->iterator : AsyncIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->throw : ((e?: any) => Promise>) | undefined -> : ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>iterator.throw : ((e?: any) => Promise>) | undefined +> : ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>iterator : AsyncIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>throw : ((e?: any) => Promise>) | undefined +> : ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >"function" : "function" > : ^^^^^^^^^^ @@ -223,16 +223,16 @@ function mapAsyncIterable( > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >mapResult : (result: IteratorResult) => Promise> > : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->await iterator.throw(error) : IteratorResult -> : ^^^^^^^^^^^^^^^^^^^^^^ ->iterator.throw(error) : Promise> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->iterator.throw : (e?: any) => Promise> -> : ^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->iterator : AsyncIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->throw : (e?: any) => Promise> -> : ^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>await iterator.throw(error) : IteratorResult +> : ^^^^^^^^^^^^^^^^^^^^ +>iterator.throw(error) : Promise> +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>iterator.throw : (e?: any) => Promise> +> : ^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>iterator : AsyncIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>throw : (e?: any) => Promise> +> : ^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >error : unknown > : ^^^^^^^ } @@ -355,8 +355,8 @@ const doubles = mapAsyncIterable(iterable, (x) => x + x); > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >mapAsyncIterable(iterable, (x) => x + x) : AsyncGenerator > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->mapAsyncIterable : (iterable: AsyncGenerator | AsyncIterable, callback: (value: T) => PromiseOrValue) => AsyncGenerator -> : ^ ^^ ^^ ^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>mapAsyncIterable : (iterable: AsyncGenerator | AsyncIterable, callback: (value: T) => PromiseOrValue) => AsyncGenerator +> : ^ ^^ ^^ ^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >iterable : { [Symbol.asyncIterator](): any; next(): Promise<{ done: boolean; value: number; }>; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >(x) => x + x : (x: number) => number diff --git a/tests/baselines/reference/dissallowSymbolAsWeakType.errors.txt b/tests/baselines/reference/dissallowSymbolAsWeakType.errors.txt index 67c78efa8cc8d..5f7738d119ca5 100644 --- a/tests/baselines/reference/dissallowSymbolAsWeakType.errors.txt +++ b/tests/baselines/reference/dissallowSymbolAsWeakType.errors.txt @@ -1,9 +1,9 @@ dissallowSymbolAsWeakType.ts(3,16): error TS2769: No overload matches this call. - Overload 1 of 2, '(iterable: Iterable): WeakSet', gave the following error. - Argument of type 'symbol[]' is not assignable to parameter of type 'Iterable'. + Overload 1 of 2, '(iterable: Iterable): WeakSet', gave the following error. + Argument of type 'symbol[]' is not assignable to parameter of type 'Iterable'. The types returned by '[Symbol.iterator]().next(...)' are incompatible between these types. - Type 'IteratorResult' is not assignable to type 'IteratorResult'. - Type 'IteratorYieldResult' is not assignable to type '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'. Type 'symbol' is not assignable to type 'object'. Overload 2 of 2, '(values?: readonly object[]): WeakSet', gave the following error. @@ -12,11 +12,11 @@ dissallowSymbolAsWeakType.ts(4,8): error TS2345: Argument of type 'symbol' is no dissallowSymbolAsWeakType.ts(5,8): error TS2345: Argument of type 'symbol' is not assignable to parameter of type 'object'. dissallowSymbolAsWeakType.ts(6,11): error TS2345: Argument of type 'symbol' is not assignable to parameter of type 'object'. dissallowSymbolAsWeakType.ts(8,16): error TS2769: No overload matches this call. - Overload 1 of 2, '(iterable: Iterable): WeakMap', gave the following error. - Argument of type '[symbol, false][]' is not assignable to parameter of type 'Iterable'. + Overload 1 of 2, '(iterable: Iterable): WeakMap', gave the following error. + Argument of type '[symbol, false][]' is not assignable to parameter of type 'Iterable'. The types returned by '[Symbol.iterator]().next(...)' are incompatible between these types. - Type 'IteratorResult<[symbol, false], any>' is not assignable to type 'IteratorResult'. - Type 'IteratorYieldResult<[symbol, false]>' is not assignable to type 'IteratorResult'. + Type 'IteratorResult<[symbol, false], void>' is not assignable to type 'IteratorResult'. + Type 'IteratorYieldResult<[symbol, false]>' is not assignable to type 'IteratorResult'. Type 'IteratorYieldResult<[symbol, false]>' is not assignable to type 'IteratorYieldResult'. Type '[symbol, false]' is not assignable to type 'readonly [object, boolean]'. Type at position 0 in source is not compatible with type at position 0 in target. @@ -38,11 +38,11 @@ dissallowSymbolAsWeakType.ts(19,14): error TS2345: Argument of type 'symbol' is const ws = new WeakSet([s]); ~~~~~~~ !!! error TS2769: No overload matches this call. -!!! error TS2769: Overload 1 of 2, '(iterable: Iterable): WeakSet', gave the following error. -!!! error TS2769: Argument of type 'symbol[]' is not assignable to parameter of type 'Iterable'. +!!! error TS2769: Overload 1 of 2, '(iterable: Iterable): WeakSet', gave the following error. +!!! error TS2769: Argument of type 'symbol[]' is not assignable to parameter of type 'Iterable'. !!! error TS2769: The types returned by '[Symbol.iterator]().next(...)' are incompatible between these types. -!!! error TS2769: Type 'IteratorResult' is not assignable to type 'IteratorResult'. -!!! error TS2769: Type 'IteratorYieldResult' is not assignable to type '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'. !!! error TS2769: Type 'symbol' is not assignable to type 'object'. !!! error TS2769: Overload 2 of 2, '(values?: readonly object[]): WeakSet', gave the following error. @@ -60,11 +60,11 @@ dissallowSymbolAsWeakType.ts(19,14): error TS2345: Argument of type 'symbol' is const wm = new WeakMap([[s, false]]); ~~~~~~~ !!! error TS2769: No overload matches this call. -!!! error TS2769: Overload 1 of 2, '(iterable: Iterable): WeakMap', gave the following error. -!!! error TS2769: Argument of type '[symbol, false][]' is not assignable to parameter of type 'Iterable'. +!!! error TS2769: Overload 1 of 2, '(iterable: Iterable): WeakMap', gave the following error. +!!! error TS2769: Argument of type '[symbol, false][]' is not assignable to parameter of type 'Iterable'. !!! error TS2769: The types returned by '[Symbol.iterator]().next(...)' are incompatible between these types. -!!! error TS2769: Type 'IteratorResult<[symbol, false], any>' is not assignable to type 'IteratorResult'. -!!! error TS2769: Type 'IteratorYieldResult<[symbol, false]>' is not assignable to type 'IteratorResult'. +!!! error TS2769: Type 'IteratorResult<[symbol, false], void>' is not assignable to type 'IteratorResult'. +!!! error TS2769: Type 'IteratorYieldResult<[symbol, false]>' is not assignable to type 'IteratorResult'. !!! error TS2769: Type 'IteratorYieldResult<[symbol, false]>' is not assignable to type 'IteratorYieldResult'. !!! error TS2769: Type '[symbol, false]' is not assignable to type 'readonly [object, boolean]'. !!! error TS2769: Type at position 0 in source is not compatible with type at position 0 in target. diff --git a/tests/baselines/reference/emitter.asyncGenerators.classMethods.es2015.types b/tests/baselines/reference/emitter.asyncGenerators.classMethods.es2015.types index 4cc15fc48eeda..05be50b5d104e 100644 --- a/tests/baselines/reference/emitter.asyncGenerators.classMethods.es2015.types +++ b/tests/baselines/reference/emitter.asyncGenerators.classMethods.es2015.types @@ -50,8 +50,10 @@ class C4 { > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ const x = yield* [1]; ->x : any ->yield* [1] : any +>x : void +> : ^^^^ +>yield* [1] : void +> : ^^^^ >[1] : number[] > : ^^^^^^^^ >1 : 1 diff --git a/tests/baselines/reference/emitter.asyncGenerators.classMethods.es2018.types b/tests/baselines/reference/emitter.asyncGenerators.classMethods.es2018.types index 754591d94ba1f..25102c916d890 100644 --- a/tests/baselines/reference/emitter.asyncGenerators.classMethods.es2018.types +++ b/tests/baselines/reference/emitter.asyncGenerators.classMethods.es2018.types @@ -50,8 +50,10 @@ class C4 { > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ const x = yield* [1]; ->x : any ->yield* [1] : any +>x : void +> : ^^^^ +>yield* [1] : void +> : ^^^^ >[1] : number[] > : ^^^^^^^^ >1 : 1 diff --git a/tests/baselines/reference/emitter.asyncGenerators.classMethods.es5.types b/tests/baselines/reference/emitter.asyncGenerators.classMethods.es5.types index aa7bf57541199..71f69104f4972 100644 --- a/tests/baselines/reference/emitter.asyncGenerators.classMethods.es5.types +++ b/tests/baselines/reference/emitter.asyncGenerators.classMethods.es5.types @@ -50,8 +50,10 @@ class C4 { > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ const x = yield* [1]; ->x : any ->yield* [1] : any +>x : void +> : ^^^^ +>yield* [1] : void +> : ^^^^ >[1] : number[] > : ^^^^^^^^ >1 : 1 diff --git a/tests/baselines/reference/emitter.asyncGenerators.functionDeclarations.es2015.types b/tests/baselines/reference/emitter.asyncGenerators.functionDeclarations.es2015.types index bfbf793fc22ca..4cacea0078245 100644 --- a/tests/baselines/reference/emitter.asyncGenerators.functionDeclarations.es2015.types +++ b/tests/baselines/reference/emitter.asyncGenerators.functionDeclarations.es2015.types @@ -31,8 +31,10 @@ async function * f4() { > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ const x = yield* [1]; ->x : any ->yield* [1] : any +>x : void +> : ^^^^ +>yield* [1] : void +> : ^^^^ >[1] : number[] > : ^^^^^^^^ >1 : 1 diff --git a/tests/baselines/reference/emitter.asyncGenerators.functionDeclarations.es2018.types b/tests/baselines/reference/emitter.asyncGenerators.functionDeclarations.es2018.types index f44884810ae8c..4462bcb0ef7c5 100644 --- a/tests/baselines/reference/emitter.asyncGenerators.functionDeclarations.es2018.types +++ b/tests/baselines/reference/emitter.asyncGenerators.functionDeclarations.es2018.types @@ -31,8 +31,10 @@ async function * f4() { > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ const x = yield* [1]; ->x : any ->yield* [1] : any +>x : void +> : ^^^^ +>yield* [1] : void +> : ^^^^ >[1] : number[] > : ^^^^^^^^ >1 : 1 diff --git a/tests/baselines/reference/emitter.asyncGenerators.functionDeclarations.es5.types b/tests/baselines/reference/emitter.asyncGenerators.functionDeclarations.es5.types index d542e9bd52aaa..a10e8678efd7e 100644 --- a/tests/baselines/reference/emitter.asyncGenerators.functionDeclarations.es5.types +++ b/tests/baselines/reference/emitter.asyncGenerators.functionDeclarations.es5.types @@ -31,8 +31,10 @@ async function * f4() { > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ const x = yield* [1]; ->x : any ->yield* [1] : any +>x : void +> : ^^^^ +>yield* [1] : void +> : ^^^^ >[1] : number[] > : ^^^^^^^^ >1 : 1 diff --git a/tests/baselines/reference/emitter.asyncGenerators.functionExpressions.es2015.types b/tests/baselines/reference/emitter.asyncGenerators.functionExpressions.es2015.types index c375fc5c0b7eb..806b983fa9df9 100644 --- a/tests/baselines/reference/emitter.asyncGenerators.functionExpressions.es2015.types +++ b/tests/baselines/reference/emitter.asyncGenerators.functionExpressions.es2015.types @@ -39,8 +39,10 @@ const f4 = async function * () { > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ const x = yield* [1]; ->x : any ->yield* [1] : any +>x : void +> : ^^^^ +>yield* [1] : void +> : ^^^^ >[1] : number[] > : ^^^^^^^^ >1 : 1 diff --git a/tests/baselines/reference/emitter.asyncGenerators.functionExpressions.es2018.types b/tests/baselines/reference/emitter.asyncGenerators.functionExpressions.es2018.types index 3072ee4edc5ff..4e4c60251b500 100644 --- a/tests/baselines/reference/emitter.asyncGenerators.functionExpressions.es2018.types +++ b/tests/baselines/reference/emitter.asyncGenerators.functionExpressions.es2018.types @@ -39,8 +39,10 @@ const f4 = async function * () { > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ const x = yield* [1]; ->x : any ->yield* [1] : any +>x : void +> : ^^^^ +>yield* [1] : void +> : ^^^^ >[1] : number[] > : ^^^^^^^^ >1 : 1 diff --git a/tests/baselines/reference/emitter.asyncGenerators.functionExpressions.es5.types b/tests/baselines/reference/emitter.asyncGenerators.functionExpressions.es5.types index d48a16963a9eb..94cd056d7e0ee 100644 --- a/tests/baselines/reference/emitter.asyncGenerators.functionExpressions.es5.types +++ b/tests/baselines/reference/emitter.asyncGenerators.functionExpressions.es5.types @@ -39,8 +39,10 @@ const f4 = async function * () { > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ const x = yield* [1]; ->x : any ->yield* [1] : any +>x : void +> : ^^^^ +>yield* [1] : void +> : ^^^^ >[1] : number[] > : ^^^^^^^^ >1 : 1 diff --git a/tests/baselines/reference/emitter.asyncGenerators.objectLiteralMethods.es2015.types b/tests/baselines/reference/emitter.asyncGenerators.objectLiteralMethods.es2015.types index 604560f8a9d1f..4185b4d15a0d3 100644 --- a/tests/baselines/reference/emitter.asyncGenerators.objectLiteralMethods.es2015.types +++ b/tests/baselines/reference/emitter.asyncGenerators.objectLiteralMethods.es2015.types @@ -58,8 +58,10 @@ const o4 = { > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ const x = yield* [1]; ->x : any ->yield* [1] : any +>x : void +> : ^^^^ +>yield* [1] : void +> : ^^^^ >[1] : number[] > : ^^^^^^^^ >1 : 1 diff --git a/tests/baselines/reference/emitter.asyncGenerators.objectLiteralMethods.es2018.types b/tests/baselines/reference/emitter.asyncGenerators.objectLiteralMethods.es2018.types index ead1acd6ef0d9..5cc5d052f8454 100644 --- a/tests/baselines/reference/emitter.asyncGenerators.objectLiteralMethods.es2018.types +++ b/tests/baselines/reference/emitter.asyncGenerators.objectLiteralMethods.es2018.types @@ -58,8 +58,10 @@ const o4 = { > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ const x = yield* [1]; ->x : any ->yield* [1] : any +>x : void +> : ^^^^ +>yield* [1] : void +> : ^^^^ >[1] : number[] > : ^^^^^^^^ >1 : 1 diff --git a/tests/baselines/reference/emitter.asyncGenerators.objectLiteralMethods.es5.types b/tests/baselines/reference/emitter.asyncGenerators.objectLiteralMethods.es5.types index c362f7b952b98..9e2a72b4bcb48 100644 --- a/tests/baselines/reference/emitter.asyncGenerators.objectLiteralMethods.es5.types +++ b/tests/baselines/reference/emitter.asyncGenerators.objectLiteralMethods.es5.types @@ -58,8 +58,10 @@ const o4 = { > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ const x = yield* [1]; ->x : any ->yield* [1] : any +>x : void +> : ^^^^ +>yield* [1] : void +> : ^^^^ >[1] : number[] > : ^^^^^^^^ >1 : 1 diff --git a/tests/baselines/reference/for-of29.errors.txt b/tests/baselines/reference/for-of29.errors.txt index 71a82303546df..232d6dcef2973 100644 --- a/tests/baselines/reference/for-of29.errors.txt +++ b/tests/baselines/reference/for-of29.errors.txt @@ -1,4 +1,4 @@ -for-of29.ts(5,15): error TS2488: Type '{ [Symbol.iterator]?(): Iterator; }' must have a '[Symbol.iterator]()' method that returns an iterator. +for-of29.ts(5,15): error TS2488: Type '{ [Symbol.iterator]?(): Iterator; }' must have a '[Symbol.iterator]()' method that returns an iterator. ==== for-of29.ts (1 errors) ==== @@ -8,5 +8,5 @@ for-of29.ts(5,15): 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 6bd79100347b1..2d9463317468e 100644 --- a/tests/baselines/reference/for-of29.types +++ b/tests/baselines/reference/for-of29.types @@ -20,6 +20,6 @@ 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 a59cb07da6bcc..6298ab6029254 100644 --- a/tests/baselines/reference/for-of39.errors.txt +++ b/tests/baselines/reference/for-of39.errors.txt @@ -1,9 +1,9 @@ for-of39.ts(1,15): error TS2769: No overload matches this call. - Overload 1 of 4, '(iterable?: Iterable): Map', gave the following error. - Argument of type '([string, number] | [string, true])[]' is not assignable to parameter of type 'Iterable'. + Overload 1 of 4, '(iterable?: Iterable): Map', gave the following error. + Argument of type '([string, number] | [string, true])[]' is not assignable to parameter of type 'Iterable'. The types returned by '[Symbol.iterator]().next(...)' are incompatible between these types. - 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 'IteratorResult<[string, number] | [string, true], void>' 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'. Type '[string, number] | [string, true]' is not assignable to type 'readonly [string, boolean]'. Type '[string, number]' is not assignable to type 'readonly [string, boolean]'. @@ -17,11 +17,11 @@ for-of39.ts(1,15): error TS2769: No overload matches this call. var map = new Map([["", true], ["", 0]]); ~~~ !!! error TS2769: No overload matches this call. -!!! error TS2769: Overload 1 of 4, '(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: Overload 1 of 4, '(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: The types returned by '[Symbol.iterator]().next(...)' are incompatible between these types. -!!! 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 'IteratorResult<[string, number] | [string, true], void>' 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'. !!! error TS2769: Type '[string, number] | [string, true]' is not assignable to type 'readonly [string, boolean]'. !!! error TS2769: Type '[string, number]' is not assignable to type 'readonly [string, boolean]'. diff --git a/tests/baselines/reference/generatorReturnTypeInference.types b/tests/baselines/reference/generatorReturnTypeInference.types index fd2d5f7605ec1..cfd8d97e22c84 100644 --- a/tests/baselines/reference/generatorReturnTypeInference.types +++ b/tests/baselines/reference/generatorReturnTypeInference.types @@ -2,8 +2,8 @@ === generatorReturnTypeInference.ts === declare const iterableIterator: IterableIterator; ->iterableIterator : IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +>iterableIterator : IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ declare const generator: Generator; >generator : Generator @@ -44,8 +44,8 @@ function* g003() { // Generator > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ yield* []; ->yield* [] : any -> : ^^^ +>yield* [] : void +> : ^^^^ >[] : never[] > : ^^^^^^^ } @@ -55,10 +55,10 @@ function* g004() { // Generator > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ yield* iterableIterator; ->yield* iterableIterator : any -> : ^^^ ->iterableIterator : IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +>yield* iterableIterator : void +> : ^^^^ +>iterableIterator : IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ } function* g005() { // Generator diff --git a/tests/baselines/reference/generatorReturnTypeInferenceNonStrict.types b/tests/baselines/reference/generatorReturnTypeInferenceNonStrict.types index c25395cf7f031..e358284c7a58b 100644 --- a/tests/baselines/reference/generatorReturnTypeInferenceNonStrict.types +++ b/tests/baselines/reference/generatorReturnTypeInferenceNonStrict.types @@ -2,8 +2,8 @@ === generatorReturnTypeInferenceNonStrict.ts === declare const iterableIterator: IterableIterator; ->iterableIterator : IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +>iterableIterator : IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ declare const generator: Generator; >generator : Generator @@ -46,8 +46,8 @@ function* g003() { // Generator // NOTE: In strict mode, `[]` produces the type `never[]`. // In non-strict mode, `[]` produces the type `undefined[]` which is implicitly any. yield* []; ->yield* [] : any -> : ^^^ +>yield* [] : void +> : ^^^^ >[] : undefined[] > : ^^^^^^^^^^^ } @@ -57,10 +57,10 @@ function* g004() { // Generator > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ yield* iterableIterator; ->yield* iterableIterator : any -> : ^^^ ->iterableIterator : IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +>yield* iterableIterator : void +> : ^^^^ +>iterableIterator : IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ } function* g005() { // Generator diff --git a/tests/baselines/reference/generatorTypeCheck19.types b/tests/baselines/reference/generatorTypeCheck19.types index 9faf23c7ad3ce..51bd31421b90d 100644 --- a/tests/baselines/reference/generatorTypeCheck19.types +++ b/tests/baselines/reference/generatorTypeCheck19.types @@ -24,7 +24,8 @@ function* g(): IterableIterator { > : ^^^^^^^^^ yield * [new Bar]; ->yield * [new Bar] : any +>yield * [new Bar] : void +> : ^^^^ >[new Bar] : Bar[] > : ^^^^^ >new Bar : Bar diff --git a/tests/baselines/reference/generatorTypeCheck20.types b/tests/baselines/reference/generatorTypeCheck20.types index 243a849924d61..ba12c8e0a2b09 100644 --- a/tests/baselines/reference/generatorTypeCheck20.types +++ b/tests/baselines/reference/generatorTypeCheck20.types @@ -22,8 +22,8 @@ function* g(): IterableIterator { > : ^^^^^^^^^ yield * [new Baz]; ->yield * [new Baz] : any -> : ^^^ +>yield * [new Baz] : void +> : ^^^^ >[new Baz] : Baz[] > : ^^^^^ >new Baz : Baz diff --git a/tests/baselines/reference/generatorTypeCheck22.types b/tests/baselines/reference/generatorTypeCheck22.types index 73246839319ed..ecaa0c00168e5 100644 --- a/tests/baselines/reference/generatorTypeCheck22.types +++ b/tests/baselines/reference/generatorTypeCheck22.types @@ -43,7 +43,8 @@ function* g3() { > : ^^^^^^^^^^ yield *[new Bar]; ->yield *[new Bar] : any +>yield *[new Bar] : void +> : ^^^^ >[new Bar] : Bar[] > : ^^^^^ >new Bar : Bar @@ -52,7 +53,8 @@ function* g3() { > : ^^^^^^^^^^ yield *[new Baz]; ->yield *[new Baz] : any +>yield *[new Baz] : void +> : ^^^^ >[new Baz] : Baz[] > : ^^^^^ >new Baz : Baz diff --git a/tests/baselines/reference/generatorTypeCheck23.types b/tests/baselines/reference/generatorTypeCheck23.types index 52056e44274b5..b8ae9a477e20c 100644 --- a/tests/baselines/reference/generatorTypeCheck23.types +++ b/tests/baselines/reference/generatorTypeCheck23.types @@ -50,7 +50,8 @@ function* g3() { > : ^^^^^^^^^^ yield *[new Bar]; ->yield *[new Bar] : any +>yield *[new Bar] : void +> : ^^^^ >[new Bar] : Bar[] > : ^^^^^ >new Bar : Bar @@ -59,7 +60,8 @@ function* g3() { > : ^^^^^^^^^^ yield *[new Baz]; ->yield *[new Baz] : any +>yield *[new Baz] : void +> : ^^^^ >[new Baz] : Baz[] > : ^^^^^ >new Baz : Baz diff --git a/tests/baselines/reference/generatorTypeCheck24.types b/tests/baselines/reference/generatorTypeCheck24.types index 0f243defbf3b6..b518a27d4fda6 100644 --- a/tests/baselines/reference/generatorTypeCheck24.types +++ b/tests/baselines/reference/generatorTypeCheck24.types @@ -29,7 +29,8 @@ function* g3() { >yield : any yield * [new Foo]; ->yield * [new Foo] : any +>yield * [new Foo] : void +> : ^^^^ >[new Foo] : Foo[] > : ^^^^^ >new Foo : Foo @@ -52,7 +53,8 @@ function* g3() { > : ^^^^^^^^^^ yield *[new Bar]; ->yield *[new Bar] : any +>yield *[new Bar] : void +> : ^^^^ >[new Bar] : Bar[] > : ^^^^^ >new Bar : Bar @@ -61,7 +63,8 @@ function* g3() { > : ^^^^^^^^^^ yield *[new Baz]; ->yield *[new Baz] : any +>yield *[new Baz] : void +> : ^^^^ >[new Baz] : Baz[] > : ^^^^^ >new Baz : Baz diff --git a/tests/baselines/reference/generatorTypeCheck25.errors.txt b/tests/baselines/reference/generatorTypeCheck25.errors.txt index ab28ce3ace486..6dab523e46b6a 100644 --- a/tests/baselines/reference/generatorTypeCheck25.errors.txt +++ b/tests/baselines/reference/generatorTypeCheck25.errors.txt @@ -1,8 +1,8 @@ -generatorTypeCheck25.ts(4,5): error TS2322: Type '() => Generator' is not assignable to type '() => Iterable'. - Call signature return types 'Generator' and 'Iterable' are incompatible. +generatorTypeCheck25.ts(4,5): error TS2322: Type '() => Generator' is not assignable to type '() => Iterable'. + Call signature return types 'Generator' and 'Iterable' are incompatible. The types returned by '[Symbol.iterator]().next(...)' are incompatible between these types. - Type 'IteratorResult' is not assignable to type 'IteratorResult'. - Type 'IteratorYieldResult' is not assignable to type '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'. Type 'Bar | Baz' is not assignable to type 'Foo'. Property 'x' is missing in type 'Baz' but required in type 'Foo'. @@ -14,11 +14,11 @@ generatorTypeCheck25.ts(4,5): error TS2322: Type '() => Generator Iterable = function* () { ~~ -!!! error TS2322: Type '() => Generator' is not assignable to type '() => Iterable'. -!!! error TS2322: Call signature return types 'Generator' and 'Iterable' are incompatible. +!!! error TS2322: Type '() => Generator' is not assignable to type '() => Iterable'. +!!! error TS2322: Call signature return types 'Generator' and 'Iterable' are incompatible. !!! error TS2322: The types returned by '[Symbol.iterator]().next(...)' are incompatible between these types. -!!! error TS2322: Type 'IteratorResult' is not assignable to type 'IteratorResult'. -!!! error TS2322: Type 'IteratorYieldResult' is not assignable to type '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'. !!! error TS2322: Type 'Bar | Baz' is not assignable to type 'Foo'. !!! error TS2322: Property 'x' is missing in type 'Baz' but required in type 'Foo'. diff --git a/tests/baselines/reference/generatorTypeCheck25.types b/tests/baselines/reference/generatorTypeCheck25.types index 21c909b1895c5..5dc23453b96db 100644 --- a/tests/baselines/reference/generatorTypeCheck25.types +++ b/tests/baselines/reference/generatorTypeCheck25.types @@ -48,8 +48,8 @@ var g3: () => Iterable = function* () { > : ^^^^^^^^^^ yield *[new Bar]; ->yield *[new Bar] : any -> : ^^^ +>yield *[new Bar] : void +> : ^^^^ >[new Bar] : Bar[] > : ^^^^^ >new Bar : Bar @@ -58,8 +58,8 @@ var g3: () => Iterable = function* () { > : ^^^^^^^^^^ yield *[new Baz]; ->yield *[new Baz] : any -> : ^^^ +>yield *[new Baz] : void +> : ^^^^ >[new Baz] : Baz[] > : ^^^^^ >new Baz : Baz diff --git a/tests/baselines/reference/generatorTypeCheck26.symbols b/tests/baselines/reference/generatorTypeCheck26.symbols index c625c5fda15a2..3bc5d87349097 100644 --- a/tests/baselines/reference/generatorTypeCheck26.symbols +++ b/tests/baselines/reference/generatorTypeCheck26.symbols @@ -1,10 +1,11 @@ //// [tests/cases/conformance/es6/yieldExpressions/generatorTypeCheck26.ts] //// === generatorTypeCheck26.ts === -function* g(): IterableIterator<(x: string) => number> { +function* g(): IterableIterator<(x: string) => number, (x: string) => number> { >g : Symbol(g, Decl(generatorTypeCheck26.ts, 0, 0)) >IterableIterator : Symbol(IterableIterator, Decl(lib.es2015.iterable.d.ts, --, --)) >x : Symbol(x, Decl(generatorTypeCheck26.ts, 0, 33)) +>x : Symbol(x, Decl(generatorTypeCheck26.ts, 0, 56)) yield x => x.length; >x : Symbol(x, Decl(generatorTypeCheck26.ts, 1, 9)) @@ -20,5 +21,7 @@ function* g(): IterableIterator<(x: string) => number> { return x => x.length; >x : Symbol(x, Decl(generatorTypeCheck26.ts, 3, 10)) +>x.length : Symbol(String.length, Decl(lib.es5.d.ts, --, --)) >x : Symbol(x, Decl(generatorTypeCheck26.ts, 3, 10)) +>length : Symbol(String.length, Decl(lib.es5.d.ts, --, --)) } diff --git a/tests/baselines/reference/generatorTypeCheck26.types b/tests/baselines/reference/generatorTypeCheck26.types index 013714b09580d..91b6866e7a94e 100644 --- a/tests/baselines/reference/generatorTypeCheck26.types +++ b/tests/baselines/reference/generatorTypeCheck26.types @@ -1,9 +1,11 @@ //// [tests/cases/conformance/es6/yieldExpressions/generatorTypeCheck26.ts] //// === generatorTypeCheck26.ts === -function* g(): IterableIterator<(x: string) => number> { ->g : () => IterableIterator<(x: string) => number> -> : ^^^^^^ +function* g(): IterableIterator<(x: string) => number, (x: string) => number> { +>g : () => IterableIterator<(x: string) => number, (x: string) => number> +> : ^^^^^^ +>x : string +> : ^^^^^^ >x : string > : ^^^^^^ @@ -22,7 +24,8 @@ function* g(): IterableIterator<(x: string) => number> { > : ^^^^^^ yield *[x => x.length]; ->yield *[x => x.length] : any +>yield *[x => x.length] : void +> : ^^^^ >[x => x.length] : ((x: string) => number)[] > : ^^ ^^^^^^^^^^^^^^^^^^^^^^ >x => x.length : (x: string) => number @@ -37,12 +40,14 @@ function* g(): IterableIterator<(x: string) => number> { > : ^^^^^^ return x => x.length; ->x => x.length : (x: any) => any -> : ^ ^^^^^^^^^^^^^ ->x : any ->x.length : any ->x : any -> : ^^^ ->length : any -> : ^^^ +>x => x.length : (x: string) => number +> : ^ ^^^^^^^^^^^^^^^^^^^ +>x : string +> : ^^^^^^ +>x.length : number +> : ^^^^^^ +>x : string +> : ^^^^^^ +>length : number +> : ^^^^^^ } diff --git a/tests/baselines/reference/generatorTypeCheck53.types b/tests/baselines/reference/generatorTypeCheck53.types index 139ca5904a94b..6b31c88844a6d 100644 --- a/tests/baselines/reference/generatorTypeCheck53.types +++ b/tests/baselines/reference/generatorTypeCheck53.types @@ -25,7 +25,8 @@ function* g() { > : ^^^^^^^^^^ yield* [new Baz]; ->yield* [new Baz] : any +>yield* [new Baz] : void +> : ^^^^ >[new Baz] : Baz[] > : ^^^^^ >new Baz : Baz diff --git a/tests/baselines/reference/generatorTypeCheck54.types b/tests/baselines/reference/generatorTypeCheck54.types index 0bb7b4e37d61c..780f5dc6c7d89 100644 --- a/tests/baselines/reference/generatorTypeCheck54.types +++ b/tests/baselines/reference/generatorTypeCheck54.types @@ -18,7 +18,8 @@ function* g() { > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ yield* [new Foo]; ->yield* [new Foo] : any +>yield* [new Foo] : void +> : ^^^^ >[new Foo] : Foo[] > : ^^^^^ >new Foo : Foo @@ -27,7 +28,8 @@ function* g() { > : ^^^^^^^^^^ yield* [new Baz]; ->yield* [new Baz] : any +>yield* [new Baz] : void +> : ^^^^ >[new Baz] : Baz[] > : ^^^^^ >new Baz : Baz diff --git a/tests/baselines/reference/generatorTypeCheck62.errors.txt b/tests/baselines/reference/generatorTypeCheck62.errors.txt new file mode 100644 index 0000000000000..bb33c02cc5718 --- /dev/null +++ b/tests/baselines/reference/generatorTypeCheck62.errors.txt @@ -0,0 +1,67 @@ +generatorTypeCheck62.ts(24,62): error TS2345: Argument of type '(state: State) => Generator' is not assignable to parameter of type '(a: State) => IterableIterator'. + Call signature return types 'Generator' and 'IterableIterator' are incompatible. + The types returned by 'next(...)' are incompatible between these types. + Type 'IteratorResult' is not assignable to type 'IteratorResult'. + Type 'IteratorReturnResult' is not assignable to type 'IteratorResult'. + Type 'IteratorReturnResult' is not assignable to type 'IteratorReturnResult'. + Type 'State' is not assignable to type 'void'. +generatorTypeCheck62.ts(32,62): error TS2345: Argument of type '(state: State) => Generator' is not assignable to parameter of type '(a: any) => IterableIterator'. + Call signature return types 'Generator' and 'IterableIterator' are incompatible. + The types returned by 'next(...)' are incompatible between these types. + Type 'IteratorResult' is not assignable to type 'IteratorResult'. + Type 'IteratorReturnResult' is not assignable to type 'IteratorResult'. + Type 'IteratorReturnResult' is not assignable to type 'IteratorReturnResult'. + + +==== generatorTypeCheck62.ts (2 errors) ==== + export interface StrategicState { + lastStrategyApplied?: string; + } + + export function strategy(stratName: string, gen: (a: T) => IterableIterator): (a: T) => IterableIterator { + return function*(state) { + for (const next of gen(state)) { + if (next) { + next.lastStrategyApplied = stratName; + } + yield next; + } + } + } + + export interface Strategy { + (a: T): IterableIterator; + } + + export interface State extends StrategicState { + foo: number; + } + + export const Nothing1: 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: Call signature return types 'Generator' and 'IterableIterator' are incompatible. +!!! error TS2345: The types returned by 'next(...)' are incompatible between these types. +!!! error TS2345: Type 'IteratorResult' is not assignable to type 'IteratorResult'. +!!! error TS2345: Type 'IteratorReturnResult' is not assignable to type 'IteratorResult'. +!!! error TS2345: Type 'IteratorReturnResult' is not assignable to type 'IteratorReturnResult'. +!!! error TS2345: Type 'State' is not assignable to type 'void'. + return state; // `return`/`TReturn` isn't supported by `strategy`, so this should error. + }); + + export const Nothing2: Strategy = strategy("Nothing", function*(state: State) { + yield state; + }); + + export const Nothing3: Strategy = strategy("Nothing", function* (state: State) { + ~~~~~~~~ +!!! error TS2345: Argument of type '(state: State) => Generator' is not assignable to parameter of type '(a: any) => IterableIterator'. +!!! error TS2345: Call signature return types 'Generator' and 'IterableIterator' are incompatible. +!!! error TS2345: The types returned by 'next(...)' are incompatible between these types. +!!! error TS2345: Type 'IteratorResult' is not assignable to type 'IteratorResult'. +!!! error TS2345: Type 'IteratorReturnResult' is not assignable to type 'IteratorResult'. +!!! error TS2345: Type 'IteratorReturnResult' is not assignable to type 'IteratorReturnResult'. + yield ; + return state; // `return`/`TReturn` isn't supported by `strategy`, so this should error. + }); + \ No newline at end of file diff --git a/tests/baselines/reference/generatorTypeCheck62.symbols b/tests/baselines/reference/generatorTypeCheck62.symbols index 025a0b5277ef5..2e13010c6c5c4 100644 --- a/tests/baselines/reference/generatorTypeCheck62.symbols +++ b/tests/baselines/reference/generatorTypeCheck62.symbols @@ -73,7 +73,7 @@ export const Nothing1: Strategy = strategy("Nothing", function*(state: St >state : Symbol(state, Decl(generatorTypeCheck62.ts, 23, 71)) >State : Symbol(State, Decl(generatorTypeCheck62.ts, 17, 1)) - return state; + return state; // `return`/`TReturn` isn't supported by `strategy`, so this should error. >state : Symbol(state, Decl(generatorTypeCheck62.ts, 23, 71)) }); @@ -100,7 +100,7 @@ export const Nothing3: Strategy = strategy("Nothing", function* (state: S >State : Symbol(State, Decl(generatorTypeCheck62.ts, 17, 1)) yield ; - return state; + return state; // `return`/`TReturn` isn't supported by `strategy`, so this should error. >state : Symbol(state, Decl(generatorTypeCheck62.ts, 31, 72)) }); diff --git a/tests/baselines/reference/generatorTypeCheck62.types b/tests/baselines/reference/generatorTypeCheck62.types index 0b0f66ae29436..88350acea12d3 100644 --- a/tests/baselines/reference/generatorTypeCheck62.types +++ b/tests/baselines/reference/generatorTypeCheck62.types @@ -28,10 +28,10 @@ export function strategy(stratName: string, gen: (a: T for (const next of gen(state)) { >next : T > : ^ ->gen(state) : IterableIterator -> : ^^^^^^^^^^^^^^^^^^^ ->gen : (a: T) => IterableIterator -> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ +>gen(state) : IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>gen : (a: T) => IterableIterator +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >state : T > : ^ @@ -75,18 +75,18 @@ export interface State extends StrategicState { export const Nothing1: Strategy = strategy("Nothing", function*(state: State) { >Nothing1 : Strategy > : ^^^^^^^^^^^^^^^ ->strategy("Nothing", function*(state: State) { return state;}) : (a: State) => IterableIterator -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->strategy : (stratName: string, gen: (a: T) => IterableIterator) => (a: T) => IterableIterator -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ +>strategy("Nothing", function*(state: State) { return state; // `return`/`TReturn` isn't supported by `strategy`, so this should error.}) : (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; // `return`/`TReturn` isn't supported by `strategy`, so this should error.} : (state: State) => Generator +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >state : State > : ^^^^^ - return state; + return state; // `return`/`TReturn` isn't supported by `strategy`, so this should error. >state : State > : ^^^^^ @@ -95,10 +95,10 @@ export const Nothing1: Strategy = strategy("Nothing", function*(state: St export const Nothing2: Strategy = strategy("Nothing", function*(state: State) { >Nothing2 : Strategy > : ^^^^^^^^^^^^^^^ ->strategy("Nothing", function*(state: State) { yield state;}) : (a: State) => IterableIterator -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->strategy : (stratName: string, gen: (a: T) => IterableIterator) => (a: T) => IterableIterator -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ +>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 @@ -117,14 +117,14 @@ export const Nothing2: Strategy = strategy("Nothing", function*(state: St export const Nothing3: Strategy = strategy("Nothing", function* (state: State) { >Nothing3 : Strategy > : ^^^^^^^^^^^^^^^ ->strategy("Nothing", function* (state: State) { yield ; return state;}) : (a: any) => IterableIterator -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->strategy : (stratName: string, gen: (a: T) => IterableIterator) => (a: T) => IterableIterator -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ +>strategy("Nothing", function* (state: State) { yield ; return state; // `return`/`TReturn` isn't supported by `strategy`, so this should error.}) : (a: State) => 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; // `return`/`TReturn` isn't supported by `strategy`, so this should error.} : (state: State) => Generator +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >state : State > : ^^^^^ @@ -132,7 +132,7 @@ export const Nothing3: Strategy = strategy("Nothing", function* (state: S >yield : undefined > : ^^^^^^^^^ - return state; + return state; // `return`/`TReturn` isn't supported by `strategy`, so this should error. >state : State > : ^^^^^ diff --git a/tests/baselines/reference/generatorTypeCheck63.errors.txt b/tests/baselines/reference/generatorTypeCheck63.errors.txt index e2045c7207c45..0bc38e821c54d 100644 --- a/tests/baselines/reference/generatorTypeCheck63.errors.txt +++ b/tests/baselines/reference/generatorTypeCheck63.errors.txt @@ -1,13 +1,25 @@ -generatorTypeCheck63.ts(24,61): error TS2345: Argument of type '(state: State) => Generator' is not assignable to parameter of type '(a: State) => IterableIterator'. - Call signature return types 'Generator' and 'IterableIterator' are incompatible. +generatorTypeCheck63.ts(24,61): error TS2345: Argument of type '(state: State) => Generator' is not assignable to parameter of type '(a: State) => IterableIterator'. + Call signature return types 'Generator' and 'IterableIterator' are incompatible. The types returned by 'next(...)' are incompatible between these types. - Type 'IteratorResult' is not assignable to type 'IteratorResult'. - Type 'IteratorYieldResult' is not assignable to type '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'. Type 'number' is not assignable to type 'State'. +generatorTypeCheck63.ts(32,62): error TS2345: Argument of type '(state: State) => Generator' is not assignable to parameter of type '(a: State) => IterableIterator'. + Call signature return types 'Generator' and 'IterableIterator' are incompatible. + The types returned by 'next(...)' are incompatible between these types. + Type 'IteratorResult' is not assignable to type 'IteratorResult'. + Type 'IteratorReturnResult' is not assignable to type 'IteratorResult'. + Type 'IteratorReturnResult' is not assignable to type 'IteratorReturnResult'. + Type 'number' is not assignable to type 'void'. +generatorTypeCheck63.ts(36,62): error TS2345: Argument of type '(state: State) => Generator' is not assignable to parameter of type '(a: State) => IterableIterator'. + Call signature return types 'Generator' and 'IterableIterator' are incompatible. + The types returned by 'next(...)' are incompatible between these types. + Type 'IteratorResult' is not assignable to type 'IteratorResult'. + Type 'IteratorReturnResult' is not assignable to type 'IteratorResult'. -==== generatorTypeCheck63.ts (1 errors) ==== +==== generatorTypeCheck63.ts (3 errors) ==== export interface StrategicState { lastStrategyApplied?: string; } @@ -33,25 +45,39 @@ generatorTypeCheck63.ts(24,61): error TS2345: Argument of type '(state: State) = 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: Call signature return types 'Generator' and 'IterableIterator' are incompatible. +!!! error TS2345: Argument of type '(state: State) => Generator' is not assignable to parameter of type '(a: State) => IterableIterator'. +!!! error TS2345: Call signature return types 'Generator' and 'IterableIterator' are incompatible. !!! error TS2345: The types returned by 'next(...)' are incompatible between these types. -!!! error TS2345: Type 'IteratorResult' is not assignable to type 'IteratorResult'. -!!! error TS2345: Type 'IteratorYieldResult' is not assignable to type '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'. !!! error TS2345: Type 'number' is not assignable to type 'State'. - yield 1; - return state; + yield 1; // number isn't a `State`, so this should error. + return state; // `return`/`TReturn` isn't supported by `strategy`, so this should error. }); export const Nothing1: Strategy = strategy("Nothing", function* (state: State) { }); export const Nothing2: Strategy = strategy("Nothing", function* (state: State) { - return 1; + ~~~~~~~~ +!!! error TS2345: Argument of type '(state: State) => Generator' is not assignable to parameter of type '(a: State) => IterableIterator'. +!!! error TS2345: Call signature return types 'Generator' and 'IterableIterator' are incompatible. +!!! error TS2345: The types returned by 'next(...)' are incompatible between these types. +!!! error TS2345: Type 'IteratorResult' is not assignable to type 'IteratorResult'. +!!! error TS2345: Type 'IteratorReturnResult' is not assignable to type 'IteratorResult'. +!!! error TS2345: Type 'IteratorReturnResult' is not assignable to type 'IteratorReturnResult'. +!!! error TS2345: Type 'number' is not assignable to type 'void'. + return 1; // `return`/`TReturn` isn't supported by `strategy`, so this should error. }); export const Nothing3: 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: Call signature return types 'Generator' and 'IterableIterator' are incompatible. +!!! error TS2345: The types returned by 'next(...)' are incompatible between these types. +!!! error TS2345: Type 'IteratorResult' is not assignable to type 'IteratorResult'. +!!! error TS2345: Type 'IteratorReturnResult' is not assignable to type 'IteratorResult'. yield state; - return 1; + return 1; // `return`/`TReturn` isn't supported by `strategy`, so this should error. }); \ No newline at end of file diff --git a/tests/baselines/reference/generatorTypeCheck7.errors.txt b/tests/baselines/reference/generatorTypeCheck7.errors.txt index db8a668fd9f07..daeed769c23db 100644 --- a/tests/baselines/reference/generatorTypeCheck7.errors.txt +++ b/tests/baselines/reference/generatorTypeCheck7.errors.txt @@ -1,4 +1,4 @@ -generatorTypeCheck7.ts(4,17): error TS2741: Property 'hello' is missing in type 'Generator' but required in type 'WeirdIter'. +generatorTypeCheck7.ts(4,17): error TS2741: Property 'hello' is missing in type 'Generator' but required in type 'WeirdIter'. ==== generatorTypeCheck7.ts (1 errors) ==== @@ -7,5 +7,5 @@ generatorTypeCheck7.ts(4,17): error TS2741: Property 'hello' is missing in type } 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 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 b7cd014a3eeaa..e5bb112f09193 100644 --- a/tests/baselines/reference/generatorTypeCheck8.errors.txt +++ b/tests/baselines/reference/generatorTypeCheck8.errors.txt @@ -1,7 +1,7 @@ -generatorTypeCheck8.ts(2,17): error TS2322: Type 'Generator' is not assignable to type 'BadGenerator'. +generatorTypeCheck8.ts(2,17): error TS2322: Type 'Generator' is not assignable to type 'BadGenerator'. The types returned by 'next(...)' are incompatible between these types. - Type 'IteratorResult' is not assignable to type 'IteratorResult'. - Type 'IteratorYieldResult' is not assignable to type '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'. Type 'string' is not assignable to type 'number'. @@ -10,9 +10,9 @@ generatorTypeCheck8.ts(2,17): error TS2322: Type 'Generator, 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: The types returned by 'next(...)' are incompatible between these types. -!!! error TS2322: Type 'IteratorResult' is not assignable to type 'IteratorResult'. -!!! error TS2322: Type 'IteratorYieldResult' is not assignable to type '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'. !!! error TS2322: Type 'string' is not assignable to type 'number'. \ No newline at end of file diff --git a/tests/baselines/reference/importHelpersNoHelpersForAsyncGenerators.types b/tests/baselines/reference/importHelpersNoHelpersForAsyncGenerators.types index de022f3da9373..dc4db81c92a00 100644 --- a/tests/baselines/reference/importHelpersNoHelpersForAsyncGenerators.types +++ b/tests/baselines/reference/importHelpersNoHelpersForAsyncGenerators.types @@ -18,8 +18,8 @@ export async function * f() { > : ^ yield* [3]; ->yield* [3] : any -> : ^^^ +>yield* [3] : void +> : ^^^^ >[3] : number[] > : ^^^^^^^^ >3 : 3 diff --git a/tests/baselines/reference/iterableArrayPattern28.errors.txt b/tests/baselines/reference/iterableArrayPattern28.errors.txt index 2949a043fed86..da59e3eaef907 100644 --- a/tests/baselines/reference/iterableArrayPattern28.errors.txt +++ b/tests/baselines/reference/iterableArrayPattern28.errors.txt @@ -1,9 +1,9 @@ iterableArrayPattern28.ts(2,28): error TS2769: No overload matches this call. - Overload 1 of 4, '(iterable?: Iterable): Map', gave the following error. - Argument of type '([string, number] | [string, boolean])[]' is not assignable to parameter of type 'Iterable'. + Overload 1 of 4, '(iterable?: Iterable): Map', gave the following error. + Argument of type '([string, number] | [string, boolean])[]' is not assignable to parameter of type 'Iterable'. The types returned by '[Symbol.iterator]().next(...)' are incompatible between these types. - 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 'IteratorResult<[string, number] | [string, boolean], void>' 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'. Type '[string, number] | [string, boolean]' is not assignable to type 'readonly [string, number]'. Type '[string, boolean]' is not assignable to type 'readonly [string, number]'. @@ -18,11 +18,11 @@ iterableArrayPattern28.ts(2,28): error TS2769: No overload matches this call. takeFirstTwoEntries(...new Map([["", 0], ["hello", true]])); ~~~ !!! error TS2769: No overload matches this call. -!!! error TS2769: Overload 1 of 4, '(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: Overload 1 of 4, '(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: The types returned by '[Symbol.iterator]().next(...)' are incompatible between these types. -!!! 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 'IteratorResult<[string, number] | [string, boolean], void>' 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'. !!! error TS2769: Type '[string, number] | [string, boolean]' is not assignable to type 'readonly [string, number]'. !!! error TS2769: Type '[string, boolean]' is not assignable to type 'readonly [string, number]'. diff --git a/tests/baselines/reference/parser.asyncGenerators.classMethods.es2018.types b/tests/baselines/reference/parser.asyncGenerators.classMethods.es2018.types index a9a8e5c0baae5..b221c3bd2c9fc 100644 --- a/tests/baselines/reference/parser.asyncGenerators.classMethods.es2018.types +++ b/tests/baselines/reference/parser.asyncGenerators.classMethods.es2018.types @@ -225,8 +225,8 @@ class C16 { > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ yield * []; ->yield * [] : any -> : ^^^ +>yield * [] : void +> : ^^^^ >[] : undefined[] > : ^^^^^^^^^^^ } diff --git a/tests/baselines/reference/parser.asyncGenerators.functionDeclarations.es2018.types b/tests/baselines/reference/parser.asyncGenerators.functionDeclarations.es2018.types index c07b24af13d86..71f1e0f061f4e 100644 --- a/tests/baselines/reference/parser.asyncGenerators.functionDeclarations.es2018.types +++ b/tests/baselines/reference/parser.asyncGenerators.functionDeclarations.es2018.types @@ -146,8 +146,8 @@ async function * f16() { > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ yield * []; ->yield * [] : any -> : ^^^ +>yield * [] : void +> : ^^^^ >[] : undefined[] > : ^^^^^^^^^^^ } diff --git a/tests/baselines/reference/parser.asyncGenerators.functionExpressions.es2018.types b/tests/baselines/reference/parser.asyncGenerators.functionExpressions.es2018.types index 2eb736f48a6a1..82ff585223c06 100644 --- a/tests/baselines/reference/parser.asyncGenerators.functionExpressions.es2018.types +++ b/tests/baselines/reference/parser.asyncGenerators.functionExpressions.es2018.types @@ -194,8 +194,8 @@ const f16 = async function * () { > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ yield * []; ->yield * [] : any -> : ^^^ +>yield * [] : void +> : ^^^^ >[] : undefined[] > : ^^^^^^^^^^^ diff --git a/tests/baselines/reference/parser.asyncGenerators.objectLiteralMethods.es2018.types b/tests/baselines/reference/parser.asyncGenerators.objectLiteralMethods.es2018.types index fe75d811809d3..204572d01a900 100644 --- a/tests/baselines/reference/parser.asyncGenerators.objectLiteralMethods.es2018.types +++ b/tests/baselines/reference/parser.asyncGenerators.objectLiteralMethods.es2018.types @@ -257,8 +257,8 @@ const o16 = { > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ yield * []; ->yield * [] : any -> : ^^^ +>yield * [] : void +> : ^^^^ >[] : undefined[] > : ^^^^^^^^^^^ } diff --git a/tests/baselines/reference/types.asyncGenerators.es2018.1.types b/tests/baselines/reference/types.asyncGenerators.es2018.1.types index 71633dd0e9edb..35cba542334c7 100644 --- a/tests/baselines/reference/types.asyncGenerators.es2018.1.types +++ b/tests/baselines/reference/types.asyncGenerators.es2018.1.types @@ -65,7 +65,8 @@ async function * inferReturnType6() { > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ yield* [1, 2]; ->yield* [1, 2] : any +>yield* [1, 2] : void +> : ^^^^ >[1, 2] : number[] > : ^^^^^^^^ >1 : 1 @@ -78,7 +79,8 @@ async function * inferReturnType7() { > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ yield* [Promise.resolve(1)]; ->yield* [Promise.resolve(1)] : any +>yield* [Promise.resolve(1)] : void +> : ^^^^ >[Promise.resolve(1)] : Promise[] > : ^^^^^^^^^^^^^^^^^ >Promise.resolve(1) : Promise @@ -150,7 +152,8 @@ const assignability3: () => AsyncIterableIterator = async function * () > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ yield* [1, 2]; ->yield* [1, 2] : any +>yield* [1, 2] : void +> : ^^^^ >[1, 2] : number[] > : ^^^^^^^^ >1 : 1 @@ -166,7 +169,8 @@ const assignability4: () => AsyncIterableIterator = async function * () > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ yield* [Promise.resolve(1)]; ->yield* [Promise.resolve(1)] : any +>yield* [Promise.resolve(1)] : void +> : ^^^^ >[Promise.resolve(1)] : Promise[] > : ^^^^^^^^^^^^^^^^^ >Promise.resolve(1) : Promise @@ -243,7 +247,8 @@ const assignability8: () => AsyncIterable = async function * () { > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ yield* [1, 2]; ->yield* [1, 2] : any +>yield* [1, 2] : void +> : ^^^^ >[1, 2] : number[] > : ^^^^^^^^ >1 : 1 @@ -259,7 +264,8 @@ const assignability9: () => AsyncIterable = async function * () { > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ yield* [Promise.resolve(1)]; ->yield* [Promise.resolve(1)] : any +>yield* [Promise.resolve(1)] : void +> : ^^^^ >[Promise.resolve(1)] : Promise[] > : ^^^^^^^^^^^^^^^^^ >Promise.resolve(1) : Promise @@ -336,7 +342,8 @@ const assignability13: () => AsyncIterator = async function * () { > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ yield* [1, 2]; ->yield* [1, 2] : any +>yield* [1, 2] : void +> : ^^^^ >[1, 2] : number[] > : ^^^^^^^^ >1 : 1 @@ -352,7 +359,8 @@ const assignability14: () => AsyncIterator = async function * () { > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ yield* [Promise.resolve(1)]; ->yield* [Promise.resolve(1)] : any +>yield* [Promise.resolve(1)] : void +> : ^^^^ >[Promise.resolve(1)] : Promise[] > : ^^^^^^^^^^^^^^^^^ >Promise.resolve(1) : Promise @@ -421,7 +429,8 @@ async function * explicitReturnType3(): AsyncIterableIterator { > : ^^^^^^ yield* [1, 2]; ->yield* [1, 2] : any +>yield* [1, 2] : void +> : ^^^^ >[1, 2] : number[] > : ^^^^^^^^ >1 : 1 @@ -434,7 +443,8 @@ async function * explicitReturnType4(): AsyncIterableIterator { > : ^^^^^^ yield* [Promise.resolve(1)]; ->yield* [Promise.resolve(1)] : any +>yield* [Promise.resolve(1)] : void +> : ^^^^ >[Promise.resolve(1)] : Promise[] > : ^^^^^^^^^^^^^^^^^ >Promise.resolve(1) : Promise @@ -499,7 +509,8 @@ async function * explicitReturnType8(): AsyncIterable { > : ^^^^^^ yield* [1, 2]; ->yield* [1, 2] : any +>yield* [1, 2] : void +> : ^^^^ >[1, 2] : number[] > : ^^^^^^^^ >1 : 1 @@ -512,7 +523,8 @@ async function * explicitReturnType9(): AsyncIterable { > : ^^^^^^ yield* [Promise.resolve(1)]; ->yield* [Promise.resolve(1)] : any +>yield* [Promise.resolve(1)] : void +> : ^^^^ >[Promise.resolve(1)] : Promise[] > : ^^^^^^^^^^^^^^^^^ >Promise.resolve(1) : Promise @@ -577,7 +589,8 @@ async function * explicitReturnType13(): AsyncIterator { > : ^^^^^^ yield* [1, 2]; ->yield* [1, 2] : any +>yield* [1, 2] : void +> : ^^^^ >[1, 2] : number[] > : ^^^^^^^^ >1 : 1 @@ -590,7 +603,8 @@ async function * explicitReturnType14(): AsyncIterator { > : ^^^^^^ yield* [Promise.resolve(1)]; ->yield* [Promise.resolve(1)] : any +>yield* [Promise.resolve(1)] : void +> : ^^^^ >[Promise.resolve(1)] : Promise[] > : ^^^^^^^^^^^^^^^^^ >Promise.resolve(1) : Promise diff --git a/tests/baselines/reference/types.asyncGenerators.es2018.2.errors.txt b/tests/baselines/reference/types.asyncGenerators.es2018.2.errors.txt index db3350be23951..b4d3d1e1a5496 100644 --- a/tests/baselines/reference/types.asyncGenerators.es2018.2.errors.txt +++ b/tests/baselines/reference/types.asyncGenerators.es2018.2.errors.txt @@ -1,31 +1,31 @@ types.asyncGenerators.es2018.2.ts(2,12): error TS2504: Type '{}' must have a '[Symbol.asyncIterator]()' method that returns an async iterator. types.asyncGenerators.es2018.2.ts(8,12): error TS2504: Type 'Promise' must have a '[Symbol.asyncIterator]()' method that returns an async iterator. -types.asyncGenerators.es2018.2.ts(10,7): error TS2322: Type '() => AsyncGenerator' is not assignable to type '() => AsyncIterableIterator'. - Call signature return types 'AsyncGenerator' and 'AsyncIterableIterator' are incompatible. +types.asyncGenerators.es2018.2.ts(10,7): error TS2322: Type '() => AsyncGenerator' is not assignable to type '() => AsyncIterableIterator'. + Call signature return types 'AsyncGenerator' and 'AsyncIterableIterator' are incompatible. The types returned by 'next(...)' are incompatible between these types. - 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 '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'. -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'. -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.asyncGenerators.es2018.2.ts(19,7): error TS2322: Type '() => AsyncGenerator' is not assignable to type '() => AsyncIterable'. - Call signature return types 'AsyncGenerator' and 'AsyncIterable' are incompatible. +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'. +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.asyncGenerators.es2018.2.ts(19,7): error TS2322: Type '() => AsyncGenerator' is not assignable to type '() => AsyncIterable'. + Call signature return types 'AsyncGenerator' and 'AsyncIterable' are incompatible. The types of '[Symbol.asyncIterator]().next' are incompatible between these types. - Type '(...args: [] | [undefined]) => Promise>' is not assignable to type '(...args: [] | [undefined]) => Promise>'. -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'. -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'. -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'. -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'. -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'. + Type '(...args: [] | [undefined]) => Promise>' is not assignable to type '(...args: [] | [undefined]) => Promise>'. +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'. +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'. +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'. +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'. +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'. types.asyncGenerators.es2018.2.ts(38,11): error TS2322: Type 'string' is not assignable to type 'number'. types.asyncGenerators.es2018.2.ts(41,12): error TS2322: Type 'string' is not assignable to type 'number'. types.asyncGenerators.es2018.2.ts(44,12): error TS2322: Type 'string' is not assignable to type 'number'. @@ -35,11 +35,11 @@ types.asyncGenerators.es2018.2.ts(53,12): error TS2322: Type 'string' is not ass types.asyncGenerators.es2018.2.ts(56,11): error TS2322: Type 'string' is not assignable to type 'number'. types.asyncGenerators.es2018.2.ts(59,12): error TS2322: Type 'string' is not assignable to type 'number'. types.asyncGenerators.es2018.2.ts(62,12): error TS2322: Type 'string' is not assignable to type 'number'. -types.asyncGenerators.es2018.2.ts(64,42): error TS2741: Property '[Symbol.iterator]' is missing in type 'AsyncGenerator' but required in type 'IterableIterator'. -types.asyncGenerators.es2018.2.ts(67,42): error TS2741: Property '[Symbol.iterator]' is missing in type 'AsyncGenerator' but required in type 'Iterable'. -types.asyncGenerators.es2018.2.ts(70,42): error TS2322: Type 'AsyncGenerator' is not assignable to type 'Iterator'. +types.asyncGenerators.es2018.2.ts(64,42): error TS2741: Property '[Symbol.iterator]' is missing in type 'AsyncGenerator' but required in type 'IterableIterator'. +types.asyncGenerators.es2018.2.ts(67,42): error TS2741: Property '[Symbol.iterator]' is missing in type 'AsyncGenerator' but required in type 'Iterable'. +types.asyncGenerators.es2018.2.ts(70,42): error TS2322: Type 'AsyncGenerator' is not assignable to type 'Iterator'. The types returned by 'next(...)' are incompatible between these types. - Type 'Promise>' is not assignable to type 'IteratorResult'. + Type 'Promise>' is not assignable to type 'IteratorResult'. types.asyncGenerators.es2018.2.ts(74,12): error TS2504: Type '{}' must have a '[Symbol.asyncIterator]()' method that returns an async iterator. @@ -60,64 +60,64 @@ types.asyncGenerators.es2018.2.ts(74,12): error TS2504: Type '{}' must have a '[ } const assignability1: () => AsyncIterableIterator = async function * () { ~~~~~~~~~~~~~~ -!!! error TS2322: Type '() => AsyncGenerator' is not assignable to type '() => AsyncIterableIterator'. -!!! error TS2322: Call signature return types 'AsyncGenerator' and 'AsyncIterableIterator' are incompatible. +!!! error TS2322: Type '() => AsyncGenerator' is not assignable to type '() => AsyncIterableIterator'. +!!! error TS2322: Call signature return types 'AsyncGenerator' and 'AsyncIterableIterator' are incompatible. !!! error TS2322: The types returned by 'next(...)' are incompatible between these types. -!!! 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'. +!!! 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'. !!! error TS2322: Type 'IteratorYieldResult' is not assignable to type 'IteratorYieldResult'. !!! error TS2322: Type 'string' is not assignable to type 'number'. yield "a"; }; 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: Type '() => AsyncGenerator' is not assignable to type '() => AsyncIterableIterator'. +!!! error TS2322: Type 'AsyncGenerator' is not assignable to type 'AsyncIterableIterator'. yield* (async function * () { yield "a"; })(); }; const assignability4: () => AsyncIterable = async function * () { ~~~~~~~~~~~~~~ -!!! error TS2322: Type '() => AsyncGenerator' is not assignable to type '() => AsyncIterable'. -!!! error TS2322: Call signature return types 'AsyncGenerator' and 'AsyncIterable' are incompatible. +!!! error TS2322: Type '() => AsyncGenerator' is not assignable to type '() => AsyncIterable'. +!!! error TS2322: Call signature return types 'AsyncGenerator' and 'AsyncIterable' are incompatible. !!! error TS2322: The types of '[Symbol.asyncIterator]().next' are incompatible between these types. -!!! error TS2322: Type '(...args: [] | [undefined]) => Promise>' is not assignable to type '(...args: [] | [undefined]) => Promise>'. +!!! error TS2322: Type '(...args: [] | [undefined]) => Promise>' is not assignable to type '(...args: [] | [undefined]) => 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: Type '() => AsyncGenerator' is not assignable to type '() => AsyncIterable'. +!!! error TS2322: Type 'AsyncGenerator' is not assignable to type 'AsyncIterable'. 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 { @@ -167,21 +167,21 @@ types.asyncGenerators.es2018.2.ts(74,12): error TS2504: Type '{}' must have a '[ } 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 lib.es2015.iterable.d.ts:--:--: '[Symbol.iterator]' is declared here. yield 1; } async function * explicitReturnType11(): Iterable { ~~~~~~~~~~~~~~~~ -!!! error TS2741: Property '[Symbol.iterator]' is missing in type 'AsyncGenerator' but required in type 'Iterable'. +!!! error TS2741: Property '[Symbol.iterator]' is missing in type 'AsyncGenerator' but required in type 'Iterable'. !!! related TS2728 lib.es2015.iterable.d.ts:--:--: '[Symbol.iterator]' is declared here. yield 1; } 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: The types returned by 'next(...)' are incompatible between these types. -!!! error TS2322: Type 'Promise>' is not assignable to type 'IteratorResult'. +!!! error TS2322: Type 'Promise>' is not assignable to type 'IteratorResult'. yield 1; } async function * yieldStar() { diff --git a/tests/baselines/reference/types.asyncGenerators.es2018.2.types b/tests/baselines/reference/types.asyncGenerators.es2018.2.types index 162399d210003..d7a438fd0f6f5 100644 --- a/tests/baselines/reference/types.asyncGenerators.es2018.2.types +++ b/tests/baselines/reference/types.asyncGenerators.es2018.2.types @@ -65,8 +65,8 @@ const assignability2: () => AsyncIterableIterator = async function * () > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ yield* ["a", "b"]; ->yield* ["a", "b"] : any -> : ^^^ +>yield* ["a", "b"] : void +> : ^^^^ >["a", "b"] : string[] > : ^^^^^^^^ >"a" : "a" @@ -116,8 +116,8 @@ const assignability5: () => AsyncIterable = async function * () { > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ yield* ["a", "b"]; ->yield* ["a", "b"] : any -> : ^^^ +>yield* ["a", "b"] : void +> : ^^^^ >["a", "b"] : string[] > : ^^^^^^^^ >"a" : "a" @@ -167,8 +167,8 @@ const assignability8: () => AsyncIterator = async function * () { > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ yield* ["a", "b"]; ->yield* ["a", "b"] : any -> : ^^^ +>yield* ["a", "b"] : void +> : ^^^^ >["a", "b"] : string[] > : ^^^^^^^^ >"a" : "a" @@ -213,8 +213,8 @@ async function * explicitReturnType2(): AsyncIterableIterator { > : ^^^^^^ yield* ["a", "b"]; ->yield* ["a", "b"] : any -> : ^^^ +>yield* ["a", "b"] : void +> : ^^^^ >["a", "b"] : string[] > : ^^^^^^^^ >"a" : "a" @@ -255,8 +255,8 @@ async function * explicitReturnType5(): AsyncIterable { > : ^^^^^^ yield* ["a", "b"]; ->yield* ["a", "b"] : any -> : ^^^ +>yield* ["a", "b"] : void +> : ^^^^ >["a", "b"] : string[] > : ^^^^^^^^ >"a" : "a" @@ -297,8 +297,8 @@ async function * explicitReturnType8(): AsyncIterator { > : ^^^^^^ yield* ["a", "b"]; ->yield* ["a", "b"] : any -> : ^^^ +>yield* ["a", "b"] : void +> : ^^^^ >["a", "b"] : string[] > : ^^^^^^^^ >"a" : "a" diff --git a/tests/baselines/reference/yieldExpressionInControlFlow.errors.txt b/tests/baselines/reference/yieldExpressionInControlFlow.errors.txt index b751868c96b08..e7d454504e604 100644 --- a/tests/baselines/reference/yieldExpressionInControlFlow.errors.txt +++ b/tests/baselines/reference/yieldExpressionInControlFlow.errors.txt @@ -1,4 +1,5 @@ alsoFails.ts(3,9): error TS7034: Variable 'o' implicitly has type 'any[]' in some locations where its type cannot be determined. +alsoFails.ts(5,9): error TS2322: Type 'void' is not assignable to type 'any[]'. alsoFails.ts(5,20): error TS7005: Variable 'o' implicitly has an 'any[]' type. bug25149.js(4,13): error TS7057: 'yield' expression implicitly results in an 'any' type because its containing generator lacks a return-type annotation. @@ -13,7 +14,7 @@ bug25149.js(4,13): error TS7057: 'yield' expression implicitly results in an 'an } } -==== alsoFails.ts (2 errors) ==== +==== alsoFails.ts (3 errors) ==== // fails in Typescript too function* g() { var o = [] @@ -21,6 +22,8 @@ bug25149.js(4,13): error TS7057: 'yield' expression implicitly results in an 'an !!! error TS7034: Variable 'o' implicitly has type 'any[]' in some locations where its type cannot be determined. while (true) { o = yield* o + ~ +!!! error TS2322: Type 'void' is not assignable to type 'any[]'. ~ !!! error TS7005: Variable 'o' implicitly has an 'any[]' type. } diff --git a/tests/baselines/reference/yieldExpressionInControlFlow.types b/tests/baselines/reference/yieldExpressionInControlFlow.types index a19bd8b6975b2..a7f21148a58a5 100644 --- a/tests/baselines/reference/yieldExpressionInControlFlow.types +++ b/tests/baselines/reference/yieldExpressionInControlFlow.types @@ -28,8 +28,8 @@ function* f() { === alsoFails.ts === // fails in Typescript too function* g() { ->g : () => Generator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>g : () => Generator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ var o = [] >o : any[] @@ -42,14 +42,14 @@ function* g() { > : ^^^^ o = yield* o ->o = yield* o : any -> : ^^^ +>o = yield* o : void +> : ^^^^ +>o : any[] +> : ^^^^^ +>yield* o : void +> : ^^^^ >o : any[] > : ^^^^^ ->yield* o : any -> : ^^^ ->o : any -> : ^^^ } } diff --git a/tests/baselines/reference/yieldExpressionInnerCommentEmit.types b/tests/baselines/reference/yieldExpressionInnerCommentEmit.types index f6ea97325fd61..ffab26ff43d50 100644 --- a/tests/baselines/reference/yieldExpressionInnerCommentEmit.types +++ b/tests/baselines/reference/yieldExpressionInnerCommentEmit.types @@ -21,14 +21,16 @@ function * foo2() { > : ^ yield */*comment4*/ [4]; ->yield */*comment4*/ [4] : any +>yield */*comment4*/ [4] : void +> : ^^^^ >[4] : number[] > : ^^^^^^^^ >4 : 4 > : ^ yield /*comment5*/* [5]; ->yield /*comment5*/* [5] : any +>yield /*comment5*/* [5] : void +> : ^^^^ >[5] : number[] > : ^^^^^^^^ >5 : 5 diff --git a/tests/cases/compiler/customAsyncIterator.ts b/tests/cases/compiler/customAsyncIterator.ts index 3f80b4ef2a96c..c5c6c5f9cc5fe 100644 --- a/tests/cases/compiler/customAsyncIterator.ts +++ b/tests/cases/compiler/customAsyncIterator.ts @@ -2,7 +2,7 @@ // @useDefineForClassFields: false // GH: https://github.com/microsoft/TypeScript/issues/33239 -class ConstantIterator implements AsyncIterator { +class ConstantIterator implements AsyncIterator { constructor(private constant: T) { } async next(value?: T): Promise> { diff --git a/tests/cases/compiler/discriminateWithOptionalProperty2.ts b/tests/cases/compiler/discriminateWithOptionalProperty2.ts index d740bcd7ce70d..a8b36cb497489 100644 --- a/tests/cases/compiler/discriminateWithOptionalProperty2.ts +++ b/tests/cases/compiler/discriminateWithOptionalProperty2.ts @@ -8,7 +8,7 @@ type PromiseOrValue = Promise | T; function mapAsyncIterable( - iterable: AsyncGenerator | AsyncIterable, + iterable: AsyncGenerator | AsyncIterable, callback: (value: T) => PromiseOrValue, ): AsyncGenerator { const iterator = iterable[Symbol.asyncIterator](); diff --git a/tests/cases/conformance/es6/yieldExpressions/generatorTypeCheck11.ts b/tests/cases/conformance/es6/yieldExpressions/generatorTypeCheck11.ts index e77ec3d911c66..14d90f47a8658 100644 --- a/tests/cases/conformance/es6/yieldExpressions/generatorTypeCheck11.ts +++ b/tests/cases/conformance/es6/yieldExpressions/generatorTypeCheck11.ts @@ -1,4 +1,4 @@ //@target: ES6 -function* g(): IterableIterator { +function* g(): IterableIterator { return 0; } \ No newline at end of file diff --git a/tests/cases/conformance/es6/yieldExpressions/generatorTypeCheck12.ts b/tests/cases/conformance/es6/yieldExpressions/generatorTypeCheck12.ts index 6f602a239819c..fa45b8c39ba7f 100644 --- a/tests/cases/conformance/es6/yieldExpressions/generatorTypeCheck12.ts +++ b/tests/cases/conformance/es6/yieldExpressions/generatorTypeCheck12.ts @@ -1,4 +1,4 @@ //@target: ES6 -function* g(): IterableIterator { +function* g(): IterableIterator { return ""; } \ No newline at end of file diff --git a/tests/cases/conformance/es6/yieldExpressions/generatorTypeCheck13.ts b/tests/cases/conformance/es6/yieldExpressions/generatorTypeCheck13.ts index a21d9e8ab63e7..d9cce1a5eafc5 100644 --- a/tests/cases/conformance/es6/yieldExpressions/generatorTypeCheck13.ts +++ b/tests/cases/conformance/es6/yieldExpressions/generatorTypeCheck13.ts @@ -1,5 +1,5 @@ //@target: ES6 -function* g(): IterableIterator { +function* g(): IterableIterator { yield 0; return ""; } \ No newline at end of file diff --git a/tests/cases/conformance/es6/yieldExpressions/generatorTypeCheck26.ts b/tests/cases/conformance/es6/yieldExpressions/generatorTypeCheck26.ts index 334d21e38331c..f37e13eddd910 100644 --- a/tests/cases/conformance/es6/yieldExpressions/generatorTypeCheck26.ts +++ b/tests/cases/conformance/es6/yieldExpressions/generatorTypeCheck26.ts @@ -1,5 +1,5 @@ //@target: ES6 -function* g(): IterableIterator<(x: string) => number> { +function* g(): IterableIterator<(x: string) => number, (x: string) => number> { yield x => x.length; yield *[x => x.length]; return x => x.length; diff --git a/tests/cases/conformance/es6/yieldExpressions/generatorTypeCheck62.ts b/tests/cases/conformance/es6/yieldExpressions/generatorTypeCheck62.ts index 2f30fe9d90257..8b4d2c59f81b1 100644 --- a/tests/cases/conformance/es6/yieldExpressions/generatorTypeCheck62.ts +++ b/tests/cases/conformance/es6/yieldExpressions/generatorTypeCheck62.ts @@ -26,7 +26,7 @@ export interface State extends StrategicState { } export const Nothing1: Strategy = strategy("Nothing", function*(state: State) { - return state; + return state; // `return`/`TReturn` isn't supported by `strategy`, so this should error. }); export const Nothing2: Strategy = strategy("Nothing", function*(state: State) { @@ -35,6 +35,6 @@ export const Nothing2: Strategy = strategy("Nothing", function*(state: St export const Nothing3: Strategy = strategy("Nothing", function* (state: State) { yield ; - return state; + return state; // `return`/`TReturn` isn't supported by `strategy`, so this should error. }); \ No newline at end of file diff --git a/tests/cases/conformance/es6/yieldExpressions/generatorTypeCheck63.ts b/tests/cases/conformance/es6/yieldExpressions/generatorTypeCheck63.ts index 58411e409b8ab..c809f055bc397 100644 --- a/tests/cases/conformance/es6/yieldExpressions/generatorTypeCheck63.ts +++ b/tests/cases/conformance/es6/yieldExpressions/generatorTypeCheck63.ts @@ -26,18 +26,18 @@ export interface State extends StrategicState { } export const Nothing: Strategy = strategy("Nothing", function* (state: State) { - yield 1; - return state; + yield 1; // number isn't a `State`, so this should error. + return state; // `return`/`TReturn` isn't supported by `strategy`, so this should error. }); export const Nothing1: Strategy = strategy("Nothing", function* (state: State) { }); export const Nothing2: Strategy = strategy("Nothing", function* (state: State) { - return 1; + return 1; // `return`/`TReturn` isn't supported by `strategy`, so this should error. }); export const Nothing3: Strategy = strategy("Nothing", function* (state: State) { yield state; - return 1; + return 1; // `return`/`TReturn` isn't supported by `strategy`, so this should error. }); \ No newline at end of file diff --git a/tests/cases/fourslash/codeFixAddMissingProperties22.ts b/tests/cases/fourslash/codeFixAddMissingProperties22.ts index 5bd5ec0705b80..03c7d0eaf9a31 100644 --- a/tests/cases/fourslash/codeFixAddMissingProperties22.ts +++ b/tests/cases/fourslash/codeFixAddMissingProperties22.ts @@ -8,7 +8,7 @@ verify.codeFix({ description: ts.Diagnostics.Add_missing_properties.message, newFileContent: `const x: Iterable = { - [Symbol.iterator]: function(): Iterator { + [Symbol.iterator]: function(): Iterator { throw new Error("Function not implemented."); } }`, From 1a64ac9b046ca04cffa7e276aafcf6adbe8375ab Mon Sep 17 00:00:00 2001 From: Ron Buckton Date: Thu, 18 Apr 2024 16:51:22 -0400 Subject: [PATCH 02/17] Fix assignability checks, update baselines --- src/compiler/checker.ts | 34 +-- src/compiler/types.ts | 1 + src/services/codefixes/addMissingAwait.ts | 4 +- .../argumentsObjectIterator02_ES6.types | 16 +- ...tsSpreadRestIterables(target=esnext).types | 32 +-- tests/baselines/reference/arrayFrom.types | 60 ++-- .../complexRecursiveCollections.types | 264 +++++++++--------- .../conditionalTypeDoesntSpinForever.types | 4 +- .../contextualTypeIterableUnions.types | 16 +- .../reference/customAsyncIterator.js | 2 +- .../reference/customAsyncIterator.symbols | 2 +- .../reference/customAsyncIterator.types | 2 +- ...ructuredLateBoundNameHasCorrectTypes.types | 8 +- .../esNextWeakRefs_IterableWeakMap.types | 12 +- tests/baselines/reference/for-of12.types | 12 +- tests/baselines/reference/for-of13.types | 12 +- tests/baselines/reference/for-of57.types | 8 +- .../reference/forAwaitForUnion.types | 8 +- .../reference/generatorOverloads1.types | 12 +- .../reference/generatorOverloads2.types | 12 +- .../reference/generatorOverloads3.types | 12 +- .../reference/generatorOverloads4.types | 12 +- .../reference/generatorOverloads5.types | 12 +- .../generatorReturnTypeFallback.1.types | 4 +- .../generatorReturnTypeFallback.4.types | 4 +- .../reference/generatorTypeCheck11.js | 2 +- .../reference/generatorTypeCheck11.symbols | 2 +- .../reference/generatorTypeCheck11.types | 6 +- .../reference/generatorTypeCheck12.js | 2 +- .../reference/generatorTypeCheck12.symbols | 2 +- .../reference/generatorTypeCheck12.types | 6 +- .../reference/generatorTypeCheck13.js | 2 +- .../reference/generatorTypeCheck13.symbols | 2 +- .../reference/generatorTypeCheck13.types | 6 +- .../reference/generatorTypeCheck26.js | 2 +- .../reference/generatorTypeCheck31.errors.txt | 8 +- .../reference/generatorTypeCheck62.js | 8 +- .../reference/generatorTypeCheck63.js | 16 +- .../reference/generatorTypeCheck63.symbols | 8 +- .../reference/generatorTypeCheck63.types | 60 ++-- .../indexSignatureInOtherFile.errors.txt | 4 +- .../indexSignatureInOtherFile1.errors.txt | 4 +- ...indirectGlobalSymbolPartOfObjectType.types | 4 +- .../reference/iterableContextualTyping1.types | 4 +- .../reference/iteratorSpreadInArray11.types | 8 +- .../baselines/reference/mapConstructor.types | 24 +- ...ithAsClauseAndLateBoundProperty.errors.txt | 4 +- ...TypeWithAsClauseAndLateBoundProperty.types | 12 +- ...edTypeWithAsClauseAndLateBoundProperty2.js | 16 +- ...ypeWithAsClauseAndLateBoundProperty2.types | 12 +- ...eLibrary_NoErrorDuplicateLibOptions1.types | 12 +- ...eLibrary_NoErrorDuplicateLibOptions2.types | 12 +- ...dularizeLibrary_TargetES5UsingES6Lib.types | 12 +- ...dularizeLibrary_TargetES6UsingES6Lib.types | 12 +- .../reference/partiallyNamedTuples2.types | 8 +- .../reference/regexMatchAll-esnext.types | 16 +- tests/baselines/reference/regexMatchAll.types | 16 +- .../baselines/reference/stringMatchAll.types | 20 +- .../typeArgumentInferenceApparentType1.types | 4 +- .../typeArgumentInferenceApparentType2.types | 8 +- ...typeGuardNarrowByMutableUntypedField.types | 8 +- .../typeGuardNarrowByUntypedField.types | 8 +- .../reference/types.forAwait.es2018.1.types | 60 ++-- .../types.forAwait.es2018.2.errors.txt | 8 +- .../reference/types.forAwait.es2018.2.types | 24 +- .../unionAndIntersectionInference3.types | 4 +- 66 files changed, 509 insertions(+), 512 deletions(-) diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 24eab98bf9de1..a22e7900f5243 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -1793,6 +1793,14 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker { if (type === emptyGenericType) return undefined; return type; }, + createTypeReference: (target, typeArguments) => { + if (target !== emptyGenericType && getObjectFlags(target) & ObjectFlags.ClassOrInterface) { + const interfaceType = target as InterfaceType; + if (some(interfaceType.typeParameters)) { + return createTypeReference(interfaceType as GenericType, typeArguments); + } + } + }, isSymbolAccessible, isArrayType, isTupleType, @@ -16500,7 +16508,7 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker { } function createIterableType(iteratedType: Type): Type { - return createTypeFromGenericGlobalType(getGlobalIterableType(/*reportErrors*/ true), [iteratedType]); + return createTypeFromGenericGlobalType(getGlobalIterableType(/*reportErrors*/ true), [iteratedType, voidType, undefinedType]); } function createArrayType(elementType: Type, readonly?: boolean): ObjectType { @@ -37188,24 +37196,10 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker { returnType = resolver.resolveIterationType(returnType, /*errorNode*/ undefined) || unknownType; nextType = resolver.resolveIterationType(nextType, /*errorNode*/ undefined) || unknownType; if (globalGeneratorType === emptyGenericType) { - // Fall back to the global IterableIterator if returnType is assignable to the expected return iteration - // type of IterableIterator, and the expected next iteration type of IterableIterator is assignable to - // nextType. - 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; - if ( - isTypeAssignableTo(returnType, iterableIteratorReturnType) && - isTypeAssignableTo(iterableIteratorNextType, nextType) - ) { - if (globalType !== emptyGenericType) { - return createTypeFromGenericGlobalType(globalType, [yieldType]); - } - - // The global IterableIterator type doesn't exist, so report an error - resolver.getGlobalIterableIteratorType(/*reportErrors*/ true); - return emptyObjectType; + // Fall back to the global IterableIterator type. + const globalIterableIteratorType = resolver.getGlobalIterableIteratorType(/*reportErrors*/ false); + if (globalIterableIteratorType !== emptyGenericType) { + return createTypeFromGenericGlobalType(globalIterableIteratorType, [yieldType, returnType, nextType]); } // The global Generator type doesn't exist, so report an error @@ -43848,7 +43842,7 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker { isForOfStatement(errorNode.parent) && errorNode.parent.expression === errorNode && getGlobalAsyncIterableType(/*reportErrors*/ false) !== emptyGenericType && - isTypeAssignableTo(type, getGlobalAsyncIterableType(/*reportErrors*/ false)) + isTypeAssignableTo(type, createTypeFromGenericGlobalType(getGlobalAsyncIterableType(/*reportErrors*/ false), [anyType, anyType, anyType])) ); return errorAndMaybeSuggestAwait(errorNode, suggestAwait, message, typeToString(type)); } diff --git a/src/compiler/types.ts b/src/compiler/types.ts index d97dc608adcbf..43a569a4143d2 100644 --- a/src/compiler/types.ts +++ b/src/compiler/types.ts @@ -5200,6 +5200,7 @@ export interface TypeChecker { /** @internal */ getPromiseType(): Type; /** @internal */ getPromiseLikeType(): Type; /** @internal */ getAsyncIterableType(): Type | undefined; + /** @internal */ createTypeReference(target: Type, typeArguments: readonly Type[] | undefined): Type | undefined; /** * Returns true if the "source" type is assignable to the "target" type. diff --git a/src/services/codefixes/addMissingAwait.ts b/src/services/codefixes/addMissingAwait.ts index 61c2692b3a8b5..58ea03cb54767 100644 --- a/src/services/codefixes/addMissingAwait.ts +++ b/src/services/codefixes/addMissingAwait.ts @@ -286,7 +286,9 @@ function makeChange(changeTracker: textChanges.ChangeTracker, errorCode: number, if (isForOfStatement(insertionSite.parent) && !insertionSite.parent.awaitModifier) { const exprType = checker.getTypeAtLocation(insertionSite); const asyncIter = checker.getAsyncIterableType(); - if (asyncIter && checker.isTypeAssignableTo(exprType, asyncIter)) { + const anyType = checker.getAnyType(); + const asyncIterInstantiation = asyncIter && checker.createTypeReference(asyncIter, [anyType, anyType, anyType]); + if (asyncIterInstantiation && checker.isTypeAssignableTo(exprType, asyncIterInstantiation)) { const forOf = insertionSite.parent; changeTracker.replaceNode(sourceFile, forOf, factory.updateForOfStatement(forOf, factory.createToken(SyntaxKind.AwaitKeyword), forOf.initializer, forOf.expression, forOf.statement)); return; diff --git a/tests/baselines/reference/argumentsObjectIterator02_ES6.types b/tests/baselines/reference/argumentsObjectIterator02_ES6.types index eec7d223b7c9b..a11fa626be0e9 100644 --- a/tests/baselines/reference/argumentsObjectIterator02_ES6.types +++ b/tests/baselines/reference/argumentsObjectIterator02_ES6.types @@ -12,10 +12,10 @@ function doubleAndReturnAsArray(x: number, y: number, z: number): [number, numbe > : ^^^^^^ let blah = arguments[Symbol.iterator]; ->blah : () => IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->arguments[Symbol.iterator] : () => IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>blah : () => IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>arguments[Symbol.iterator] : () => IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >arguments : IArguments > : ^^^^^^^^^^ >Symbol.iterator : unique symbol @@ -33,10 +33,10 @@ function doubleAndReturnAsArray(x: number, y: number, z: number): [number, numbe for (let arg of blah()) { >arg : any ->blah() : IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^ ->blah : () => IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>blah() : IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>blah : () => IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ result.push(arg + arg); >result.push(arg + arg) : number diff --git a/tests/baselines/reference/argumentsSpreadRestIterables(target=esnext).types b/tests/baselines/reference/argumentsSpreadRestIterables(target=esnext).types index c27ee50812081..0c269a71f3f7a 100644 --- a/tests/baselines/reference/argumentsSpreadRestIterables(target=esnext).types +++ b/tests/baselines/reference/argumentsSpreadRestIterables(target=esnext).types @@ -2,8 +2,8 @@ === argumentsSpreadRestIterables.tsx === declare const itNum: Iterable ->itNum : Iterable -> : ^^^^^^^^^^^^^^^^ +>itNum : Iterable +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ;(function(...rest) {})(...itNum) >(function(...rest) {})(...itNum) : void @@ -16,8 +16,8 @@ declare const itNum: Iterable > : ^^^^^^^^ >...itNum : number > : ^^^^^^ ->itNum : Iterable -> : ^^^^^^^^^^^^^^^^ +>itNum : Iterable +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ;(function(a, ...rest) {})('', ...itNum) >(function(a, ...rest) {})('', ...itNum) : void @@ -34,8 +34,8 @@ declare const itNum: Iterable > : ^^ >...itNum : number > : ^^^^^^ ->itNum : Iterable -> : ^^^^^^^^^^^^^^^^ +>itNum : Iterable +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ;(function(a, ...rest) {})('', true, ...itNum) >(function(a, ...rest) {})('', true, ...itNum) : void @@ -54,8 +54,8 @@ declare const itNum: Iterable > : ^^^^ >...itNum : number > : ^^^^^^ ->itNum : Iterable -> : ^^^^^^^^^^^^^^^^ +>itNum : Iterable +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ declare function fn1(...args: T): T; >fn1 : (...args: T) => T @@ -84,8 +84,8 @@ const res2 = fn1(...itNum); > : ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ >...itNum : number > : ^^^^^^ ->itNum : Iterable -> : ^^^^^^^^^^^^^^^^ +>itNum : Iterable +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ const res3 = fn1(true, ..."hello"); >res3 : readonly [true, ...string[]] @@ -112,8 +112,8 @@ const res4 = fn1(true, ...itNum); > : ^^^^ >...itNum : number > : ^^^^^^ ->itNum : Iterable -> : ^^^^^^^^^^^^^^^^ +>itNum : Iterable +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ // repro from #52781 declare function foo(...args: T): T; @@ -143,8 +143,8 @@ const p2 = foo(...itNum); > : ^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ >...itNum : number > : ^^^^^^ ->itNum : Iterable -> : ^^^^^^^^^^^^^^^^ +>itNum : Iterable +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ const p3 = foo(true, ..."hello"); >p3 : [boolean, ...string[]] @@ -171,6 +171,6 @@ const p4 = foo(true, ...itNum); > : ^^^^ >...itNum : number > : ^^^^^^ ->itNum : Iterable -> : ^^^^^^^^^^^^^^^^ +>itNum : Iterable +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/arrayFrom.types b/tests/baselines/reference/arrayFrom.types index 71485e09f6925..f0bec8017b56b 100644 --- a/tests/baselines/reference/arrayFrom.types +++ b/tests/baselines/reference/arrayFrom.types @@ -39,12 +39,12 @@ const inputALike: ArrayLike = { length: 0 }; > : ^ const inputARand = getEither(inputA, inputALike); ->inputARand : ArrayLike | Iterable -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ ->getEither(inputA, inputALike) : ArrayLike | Iterable -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ ->getEither : (in1: Iterable, in2: ArrayLike) => ArrayLike | Iterable -> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>inputARand : ArrayLike | Iterable +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>getEither(inputA, inputALike) : ArrayLike | Iterable +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>getEither : (in1: Iterable, in2: ArrayLike) => ArrayLike | Iterable +> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >inputA : A[] > : ^^^ >inputALike : ArrayLike @@ -83,14 +83,14 @@ const result2: A[] = Array.from(inputA.values()); > : ^^^^^^^^^^^^^^^^ >from : { (arrayLike: ArrayLike): T[]; (arrayLike: ArrayLike, mapfn: (v: T_1, k: number) => U, thisArg?: any): U[]; (iterable: Iterable | ArrayLike): T_2[]; (iterable: Iterable | ArrayLike, mapfn: (v: T_3, k: number) => U_1, thisArg?: any): U_1[]; } > : ^^^ ^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^ ->inputA.values() : IterableIterator -> : ^^^^^^^^^^^^^^^^^^^ ->inputA.values : () => IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +>inputA.values() : IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>inputA.values : () => IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >inputA : A[] > : ^^^ ->values : () => IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +>values : () => IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ const result3: B[] = Array.from(inputA.values()); // expect error >result3 : B[] @@ -103,14 +103,14 @@ const result3: B[] = Array.from(inputA.values()); // expect error > : ^^^^^^^^^^^^^^^^ >from : { (arrayLike: ArrayLike): T[]; (arrayLike: ArrayLike, mapfn: (v: T_1, k: number) => U, thisArg?: any): U[]; (iterable: Iterable | ArrayLike): T_2[]; (iterable: Iterable | ArrayLike, mapfn: (v: T_3, k: number) => U_1, thisArg?: any): U_1[]; } > : ^^^ ^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^ ->inputA.values() : IterableIterator -> : ^^^^^^^^^^^^^^^^^^^ ->inputA.values : () => IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +>inputA.values() : IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>inputA.values : () => IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >inputA : A[] > : ^^^ ->values : () => IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +>values : () => IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ const result4: A[] = Array.from(inputB, ({ b }): A => ({ a: b })); >result4 : A[] @@ -203,8 +203,8 @@ const result8: A[] = Array.from(inputARand); > : ^^^^^^^^^^^^^^^^ >from : { (arrayLike: ArrayLike): T[]; (arrayLike: ArrayLike, mapfn: (v: T_1, k: number) => U, thisArg?: any): U[]; (iterable: Iterable | ArrayLike): T_2[]; (iterable: Iterable | ArrayLike, mapfn: (v: T_3, k: number) => U_1, thisArg?: any): U_1[]; } > : ^^^ ^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^ ->inputARand : ArrayLike | Iterable -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +>inputARand : ArrayLike | Iterable +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ const result9: B[] = Array.from(inputARand, ({ a }): B => ({ b: a })); >result9 : B[] @@ -217,8 +217,8 @@ const result9: B[] = Array.from(inputARand, ({ a }): B => ({ b: a })); > : ^^^^^^^^^^^^^^^^ >from : { (arrayLike: ArrayLike): T[]; (arrayLike: ArrayLike, mapfn: (v: T_1, k: number) => U, thisArg?: any): U[]; (iterable: Iterable | ArrayLike): T_2[]; (iterable: Iterable | ArrayLike, mapfn: (v: T_3, k: number) => U_1, thisArg?: any): U_1[]; } > : ^^^ ^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^ ->inputARand : ArrayLike | Iterable -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +>inputARand : ArrayLike | Iterable +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >({ a }): B => ({ b: a }) : ({ a }: A) => B > : ^ ^^^^^^^^ >a : string @@ -278,16 +278,16 @@ const result11: B[] = Array.from(inputASet, ({ a }): B => ({ b: a })); // the ?: as always taking the false branch, narrowing to ArrayLike, // even when the type is written as : Iterable|ArrayLike function getEither (in1: Iterable, in2: ArrayLike) { ->getEither : (in1: Iterable, in2: ArrayLike) => ArrayLike | Iterable -> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->in1 : Iterable -> : ^^^^^^^^^^^ +>getEither : (in1: Iterable, in2: ArrayLike) => ArrayLike | Iterable +> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>in1 : Iterable +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >in2 : ArrayLike > : ^^^^^^^^^^^^ return Math.random() > 0.5 ? in1 : in2; ->Math.random() > 0.5 ? in1 : in2 : ArrayLike | Iterable -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +>Math.random() > 0.5 ? in1 : in2 : ArrayLike | Iterable +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Math.random() > 0.5 : boolean > : ^^^^^^^ >Math.random() : number @@ -300,8 +300,8 @@ function getEither (in1: Iterable, in2: ArrayLike) { > : ^^^^^^^^^^^^ >0.5 : 0.5 > : ^^^ ->in1 : Iterable -> : ^^^^^^^^^^^ +>in1 : Iterable +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >in2 : ArrayLike > : ^^^^^^^^^^^^ } diff --git a/tests/baselines/reference/complexRecursiveCollections.types b/tests/baselines/reference/complexRecursiveCollections.types index 6cef8ca2f2c38..8b4e38d81a0e9 100644 --- a/tests/baselines/reference/complexRecursiveCollections.types +++ b/tests/baselines/reference/complexRecursiveCollections.types @@ -263,8 +263,8 @@ declare module Immutable { export function List(collection: Iterable): List; >List : typeof List > : ^^^^^^^^^^^ ->collection : Iterable -> : ^^^^^^^^^^^ +>collection : Iterable +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ export interface List extends Collection.Indexed { >Collection : typeof Collection @@ -411,28 +411,28 @@ declare module Immutable { setIn(keyPath: Iterable, value: any): this; >setIn : (keyPath: Iterable, value: any) => this > : ^ ^^ ^^ ^^ ^^^^^ ->keyPath : Iterable -> : ^^^^^^^^^^^^^ +>keyPath : Iterable +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >value : any > : ^^^ deleteIn(keyPath: Iterable): this; >deleteIn : (keyPath: Iterable) => this > : ^ ^^ ^^^^^ ->keyPath : Iterable -> : ^^^^^^^^^^^^^ +>keyPath : Iterable +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ removeIn(keyPath: Iterable): this; >removeIn : (keyPath: Iterable) => this > : ^ ^^ ^^^^^ ->keyPath : Iterable -> : ^^^^^^^^^^^^^ +>keyPath : Iterable +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ updateIn(keyPath: Iterable, notSetValue: any, updater: (value: any) => any): this; >updateIn : { (keyPath: Iterable, notSetValue: any, updater: (value: any) => any): this; (keyPath: Iterable, updater: (value: any) => any): this; } > : ^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^ ^^^^^^^^^^ ->keyPath : Iterable -> : ^^^^^^^^^^^^^ +>keyPath : Iterable +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >notSetValue : any > : ^^^ >updater : (value: any) => any @@ -443,8 +443,8 @@ declare module Immutable { updateIn(keyPath: Iterable, updater: (value: any) => any): this; >updateIn : { (keyPath: Iterable, notSetValue: any, updater: (value: any) => any): this; (keyPath: Iterable, updater: (value: any) => any): this; } > : ^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ->keyPath : Iterable -> : ^^^^^^^^^^^^^ +>keyPath : Iterable +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >updater : (value: any) => any > : ^ ^^ ^^^^^ >value : any @@ -453,16 +453,16 @@ declare module Immutable { mergeIn(keyPath: Iterable, ...collections: Array): this; >mergeIn : (keyPath: Iterable, ...collections: Array) => this > : ^ ^^ ^^^^^ ^^ ^^^^^ ->keyPath : Iterable -> : ^^^^^^^^^^^^^ +>keyPath : Iterable +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >collections : any[] > : ^^^^^ mergeDeepIn(keyPath: Iterable, ...collections: Array): this; >mergeDeepIn : (keyPath: Iterable, ...collections: Array) => this > : ^ ^^ ^^^^^ ^^ ^^^^^ ->keyPath : Iterable -> : ^^^^^^^^^^^^^ +>keyPath : Iterable +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >collections : any[] > : ^^^^^ @@ -487,8 +487,8 @@ declare module Immutable { concat(...valuesOrCollections: Array | C>): List; >concat : (...valuesOrCollections: Array | C>) => List > : ^ ^^^^^ ^^ ^^^^^ ->valuesOrCollections : (C | Iterable)[] -> : ^^^^^^^^^^^^^^^^^^^ +>valuesOrCollections : (C | Iterable)[] +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ map(mapper: (value: T, key: number, iter: this) => M, context?: any): List; >map : (mapper: (value: T, key: number, iter: this) => M, context?: any) => List @@ -565,14 +565,14 @@ declare module Immutable { export function Map(collection: Iterable<[K, V]>): Map; >Map : typeof Map > : ^^^^^^^^^^ ->collection : Iterable<[K, V]> -> : ^^^^^^^^^^^^^^^^ +>collection : Iterable<[K, V], void, undefined> +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ export function Map(collection: Iterable>): Map; >Map : typeof Map > : ^^^^^^^^^^ ->collection : Iterable> -> : ^^^^^^^^^^^^^^^^^^^^^ +>collection : Iterable, void, undefined> +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ export function Map(obj: {[key: string]: V}): Map; >Map : typeof Map @@ -618,14 +618,14 @@ declare module Immutable { deleteAll(keys: Iterable): this; >deleteAll : (keys: Iterable) => this > : ^ ^^ ^^^^^ ->keys : Iterable -> : ^^^^^^^^^^^ +>keys : Iterable +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ removeAll(keys: Iterable): this; >removeAll : (keys: Iterable) => this > : ^ ^^ ^^^^^ ->keys : Iterable -> : ^^^^^^^^^^^ +>keys : Iterable +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ clear(): this; >clear : () => this @@ -713,28 +713,28 @@ declare module Immutable { setIn(keyPath: Iterable, value: any): this; >setIn : (keyPath: Iterable, value: any) => this > : ^ ^^ ^^ ^^ ^^^^^ ->keyPath : Iterable -> : ^^^^^^^^^^^^^ +>keyPath : Iterable +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >value : any > : ^^^ deleteIn(keyPath: Iterable): this; >deleteIn : (keyPath: Iterable) => this > : ^ ^^ ^^^^^ ->keyPath : Iterable -> : ^^^^^^^^^^^^^ +>keyPath : Iterable +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ removeIn(keyPath: Iterable): this; >removeIn : (keyPath: Iterable) => this > : ^ ^^ ^^^^^ ->keyPath : Iterable -> : ^^^^^^^^^^^^^ +>keyPath : Iterable +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ updateIn(keyPath: Iterable, notSetValue: any, updater: (value: any) => any): this; >updateIn : { (keyPath: Iterable, notSetValue: any, updater: (value: any) => any): this; (keyPath: Iterable, updater: (value: any) => any): this; } > : ^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^ ^^^^^^^^^^ ->keyPath : Iterable -> : ^^^^^^^^^^^^^ +>keyPath : Iterable +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >notSetValue : any > : ^^^ >updater : (value: any) => any @@ -745,8 +745,8 @@ declare module Immutable { updateIn(keyPath: Iterable, updater: (value: any) => any): this; >updateIn : { (keyPath: Iterable, notSetValue: any, updater: (value: any) => any): this; (keyPath: Iterable, updater: (value: any) => any): this; } > : ^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ->keyPath : Iterable -> : ^^^^^^^^^^^^^ +>keyPath : Iterable +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >updater : (value: any) => any > : ^ ^^ ^^^^^ >value : any @@ -755,16 +755,16 @@ declare module Immutable { mergeIn(keyPath: Iterable, ...collections: Array): this; >mergeIn : (keyPath: Iterable, ...collections: Array) => this > : ^ ^^ ^^^^^ ^^ ^^^^^ ->keyPath : Iterable -> : ^^^^^^^^^^^^^ +>keyPath : Iterable +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >collections : any[] > : ^^^^^ mergeDeepIn(keyPath: Iterable, ...collections: Array): this; >mergeDeepIn : (keyPath: Iterable, ...collections: Array) => this > : ^ ^^ ^^^^^ ^^ ^^^^^ ->keyPath : Iterable -> : ^^^^^^^^^^^^^ +>keyPath : Iterable +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >collections : any[] > : ^^^^^ @@ -789,8 +789,8 @@ declare module Immutable { concat(...collections: Array>): Map; >concat : { (...collections: Array>): Map; (...collections: Array<{ [key: string]: C; }>): Map; } > : ^^^ ^^ ^^^^^ ^^ ^^^ ^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->collections : Iterable<[KC, VC]>[] -> : ^^^^^^^^^^^^^^^^^^^^ +>collections : Iterable<[KC, VC], void, undefined>[] +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ concat(...collections: Array<{[key: string]: C}>): Map; >concat : { (...collections: Array>): Map; (...collections: Array<{ [key: string]: C; }>): Map; } @@ -897,14 +897,14 @@ declare module Immutable { export function OrderedMap(collection: Iterable<[K, V]>): OrderedMap; >OrderedMap : typeof OrderedMap > : ^^^^^^^^^^^^^^^^^ ->collection : Iterable<[K, V]> -> : ^^^^^^^^^^^^^^^^ +>collection : Iterable<[K, V], void, undefined> +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ export function OrderedMap(collection: Iterable>): OrderedMap; >OrderedMap : typeof OrderedMap > : ^^^^^^^^^^^^^^^^^ ->collection : Iterable> -> : ^^^^^^^^^^^^^^^^^^^^^ +>collection : Iterable, void, undefined> +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ export function OrderedMap(obj: {[key: string]: V}): OrderedMap; >OrderedMap : typeof OrderedMap @@ -927,8 +927,8 @@ declare module Immutable { concat(...collections: Array>): OrderedMap; >concat : { (...collections: Array>): OrderedMap; (...collections: Array<{ [key: string]: C; }>): OrderedMap; } > : ^^^ ^^ ^^^^^ ^^ ^^^ ^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->collections : Iterable<[KC, VC]>[] -> : ^^^^^^^^^^^^^^^^^^^^ +>collections : Iterable<[KC, VC], void, undefined>[] +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ concat(...collections: Array<{[key: string]: C}>): OrderedMap; >concat : { (...collections: Array>): OrderedMap; (...collections: Array<{ [key: string]: C; }>): OrderedMap; } @@ -1055,14 +1055,14 @@ declare module Immutable { function intersect(sets: Iterable>): Set; >intersect : (sets: Iterable>) => Set > : ^ ^^ ^^ ^^^^^ ->sets : Iterable> -> : ^^^^^^^^^^^^^^^^^^^^^ +>sets : Iterable, void, undefined> +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ function union(sets: Iterable>): Set; >union : (sets: Iterable>) => Set > : ^ ^^ ^^ ^^^^^ ->sets : Iterable> -> : ^^^^^^^^^^^^^^^^^^^^^ +>sets : Iterable, void, undefined> +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ } export function Set(): Set; >Set : typeof Set @@ -1075,8 +1075,8 @@ declare module Immutable { export function Set(collection: Iterable): Set; >Set : typeof Set > : ^^^^^^^^^^ ->collection : Iterable -> : ^^^^^^^^^^^ +>collection : Iterable +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ export interface Set extends Collection.Set { >Collection : typeof Collection @@ -1150,8 +1150,8 @@ declare module Immutable { concat(...valuesOrCollections: Array | C>): Set; >concat : (...valuesOrCollections: Array | C>) => Set > : ^ ^^^^^ ^^ ^^^^^ ->valuesOrCollections : (C | Iterable)[] -> : ^^^^^^^^^^^^^^^^^^^ +>valuesOrCollections : (C | Iterable)[] +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ map(mapper: (value: T, key: never, iter: this) => M, context?: any): Set; >map : (mapper: (value: T, key: never, iter: this) => M, context?: any) => Set @@ -1250,16 +1250,16 @@ declare module Immutable { export function OrderedSet(collection: Iterable): OrderedSet; >OrderedSet : typeof OrderedSet > : ^^^^^^^^^^^^^^^^^ ->collection : Iterable -> : ^^^^^^^^^^^ +>collection : Iterable +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ export interface OrderedSet extends Set { // Sequence algorithms concat(...valuesOrCollections: Array | C>): OrderedSet; >concat : (...valuesOrCollections: Array | C>) => OrderedSet > : ^ ^^^^^ ^^ ^^^^^ ->valuesOrCollections : (C | Iterable)[] -> : ^^^^^^^^^^^^^^^^^^^ +>valuesOrCollections : (C | Iterable)[] +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ map(mapper: (value: T, key: never, iter: this) => M, context?: any): OrderedSet; >map : (mapper: (value: T, key: never, iter: this) => M, context?: any) => OrderedSet @@ -1388,8 +1388,8 @@ declare module Immutable { export function Stack(collection: Iterable): Stack; >Stack : typeof Stack > : ^^^^^^^^^^^^ ->collection : Iterable -> : ^^^^^^^^^^^ +>collection : Iterable +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ export interface Stack extends Collection.Indexed { >Collection : typeof Collection @@ -1414,8 +1414,8 @@ declare module Immutable { unshiftAll(iter: Iterable): Stack; >unshiftAll : (iter: Iterable) => Stack > : ^ ^^ ^^^^^ ->iter : Iterable -> : ^^^^^^^^^^^ +>iter : Iterable +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ shift(): Stack; >shift : () => Stack @@ -1430,8 +1430,8 @@ declare module Immutable { pushAll(iter: Iterable): Stack; >pushAll : (iter: Iterable) => Stack > : ^ ^^ ^^^^^ ->iter : Iterable -> : ^^^^^^^^^^^ +>iter : Iterable +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ pop(): Stack; >pop : () => Stack @@ -1458,8 +1458,8 @@ declare module Immutable { concat(...valuesOrCollections: Array | C>): Stack; >concat : (...valuesOrCollections: Array | C>) => Stack > : ^ ^^^^^ ^^ ^^^^^ ->valuesOrCollections : (C | Iterable)[] -> : ^^^^^^^^^^^^^^^^^^^ +>valuesOrCollections : (C | Iterable)[] +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ map(mapper: (value: T, key: number, iter: this) => M, context?: any): Stack; >map : (mapper: (value: T, key: number, iter: this) => M, context?: any) => Stack @@ -1559,12 +1559,12 @@ declare module Immutable { export interface Class { (values?: Partial | Iterable<[string, any]>): Instance & Readonly; ->values : Partial | Iterable<[string, any]> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>values : Partial | Iterable<[string, any], void, undefined> +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ new (values?: Partial | Iterable<[string, any]>): Instance & Readonly; ->values : Partial | Iterable<[string, any]> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>values : Partial | Iterable<[string, any], void, undefined> +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ } export interface Instance { readonly size: number; @@ -1588,14 +1588,14 @@ declare module Immutable { hasIn(keyPath: Iterable): boolean; >hasIn : (keyPath: Iterable) => boolean > : ^ ^^ ^^^^^ ->keyPath : Iterable -> : ^^^^^^^^^^^^^ +>keyPath : Iterable +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ getIn(keyPath: Iterable): any; >getIn : (keyPath: Iterable) => any > : ^ ^^ ^^^^^ ->keyPath : Iterable -> : ^^^^^^^^^^^^^ +>keyPath : Iterable +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ // Value equality equals(other: any): boolean; @@ -1630,14 +1630,14 @@ declare module Immutable { merge(...collections: Array | Iterable<[string, any]>>): this; >merge : (...collections: Array | Iterable<[string, any]>>) => this > : ^^^^ ^^ ^^^^^ ->collections : (Iterable<[string, any]> | Partial)[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>collections : (Iterable<[string, any], void, undefined> | Partial)[] +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ mergeDeep(...collections: Array | Iterable<[string, any]>>): this; >mergeDeep : (...collections: Array | Iterable<[string, any]>>) => this > : ^^^^ ^^ ^^^^^ ->collections : (Iterable<[string, any]> | Partial)[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>collections : (Iterable<[string, any], void, undefined> | Partial)[] +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ mergeWith(merger: (oldVal: any, newVal: any, key: keyof T) => any, ...collections: Array | Iterable<[string, any]>>): this; >mergeWith : (merger: (oldVal: any, newVal: any, key: keyof T) => any, ...collections: Array | Iterable<[string, any]>>) => this @@ -1650,8 +1650,8 @@ declare module Immutable { > : ^^^ >key : keyof T > : ^^^^^^^ ->collections : (Iterable<[string, any]> | Partial)[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>collections : (Iterable<[string, any], void, undefined> | Partial)[] +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ mergeDeepWith(merger: (oldVal: any, newVal: any, key: any) => any, ...collections: Array | Iterable<[string, any]>>): this; >mergeDeepWith : (merger: (oldVal: any, newVal: any, key: any) => any, ...collections: Array | Iterable<[string, any]>>) => this @@ -1664,8 +1664,8 @@ declare module Immutable { > : ^^^ >key : any > : ^^^ ->collections : (Iterable<[string, any]> | Partial)[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>collections : (Iterable<[string, any], void, undefined> | Partial)[] +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ delete(key: K): this; >delete : (key: K) => this @@ -1687,16 +1687,16 @@ declare module Immutable { setIn(keyPath: Iterable, value: any): this; >setIn : (keyPath: Iterable, value: any) => this > : ^ ^^ ^^ ^^ ^^^^^ ->keyPath : Iterable -> : ^^^^^^^^^^^^^ +>keyPath : Iterable +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >value : any > : ^^^ updateIn(keyPath: Iterable, updater: (value: any) => any): this; >updateIn : (keyPath: Iterable, updater: (value: any) => any) => this > : ^ ^^ ^^ ^^ ^^^^^ ->keyPath : Iterable -> : ^^^^^^^^^^^^^ +>keyPath : Iterable +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >updater : (value: any) => any > : ^ ^^ ^^^^^ >value : any @@ -1705,30 +1705,30 @@ declare module Immutable { mergeIn(keyPath: Iterable, ...collections: Array): this; >mergeIn : (keyPath: Iterable, ...collections: Array) => this > : ^ ^^ ^^^^^ ^^ ^^^^^ ->keyPath : Iterable -> : ^^^^^^^^^^^^^ +>keyPath : Iterable +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >collections : any[] > : ^^^^^ mergeDeepIn(keyPath: Iterable, ...collections: Array): this; >mergeDeepIn : (keyPath: Iterable, ...collections: Array) => this > : ^ ^^ ^^^^^ ^^ ^^^^^ ->keyPath : Iterable -> : ^^^^^^^^^^^^^ +>keyPath : Iterable +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >collections : any[] > : ^^^^^ deleteIn(keyPath: Iterable): this; >deleteIn : (keyPath: Iterable) => this > : ^ ^^ ^^^^^ ->keyPath : Iterable -> : ^^^^^^^^^^^^^ +>keyPath : Iterable +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ removeIn(keyPath: Iterable): this; >removeIn : (keyPath: Iterable) => this > : ^ ^^ ^^^^^ ->keyPath : Iterable -> : ^^^^^^^^^^^^^ +>keyPath : Iterable +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ // Conversion to JavaScript types toJS(): { [K in keyof T]: any }; @@ -1814,8 +1814,8 @@ declare module Immutable { export function Keyed(collection: Iterable<[K, V]>): Seq.Keyed; >Keyed : { (collection: Iterable<[K, V]>): Seq.Keyed; (obj: { [key: string]: V_1; }): Keyed; (): Keyed; (): Keyed; } > : ^^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->collection : Iterable<[K, V]> -> : ^^^^^^^^^^^^^^^^ +>collection : Iterable<[K, V], void, undefined> +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Seq : any > : ^^^ @@ -1862,8 +1862,8 @@ declare module Immutable { concat(...collections: Array>): Seq.Keyed; >concat : { (...collections: Array>): Seq.Keyed; (...collections: Array<{ [key: string]: C; }>): Keyed; } > : ^^^ ^^ ^^^^^ ^^ ^^^ ^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->collections : Iterable<[KC, VC]>[] -> : ^^^^^^^^^^^^^^^^^^^^ +>collections : Iterable<[KC, VC], void, undefined>[] +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Seq : any > : ^^^ @@ -1998,8 +1998,8 @@ declare module Immutable { export function Indexed(collection: Iterable): Seq.Indexed; >Indexed : typeof Indexed > : ^^^^^^^^^^^^^^ ->collection : Iterable -> : ^^^^^^^^^^^ +>collection : Iterable +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Seq : any > : ^^^ @@ -2022,8 +2022,8 @@ declare module Immutable { concat(...valuesOrCollections: Array | C>): Seq.Indexed; >concat : (...valuesOrCollections: Array | C>) => Seq.Indexed > : ^ ^^^^^ ^^ ^^^^^ ->valuesOrCollections : (C | Iterable)[] -> : ^^^^^^^^^^^^^^^^^^^ +>valuesOrCollections : (C | Iterable)[] +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Seq : any > : ^^^ @@ -2116,8 +2116,8 @@ declare module Immutable { export function Set(collection: Iterable): Seq.Set; >Set : typeof Set > : ^^^^^^^^^^ ->collection : Iterable -> : ^^^^^^^^^^^ +>collection : Iterable +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Seq : any > : ^^^ @@ -2140,8 +2140,8 @@ declare module Immutable { concat(...valuesOrCollections: Array | C>): Seq.Set; >concat : (...valuesOrCollections: Array | C>) => Seq.Set > : ^ ^^^^^ ^^ ^^^^^ ->valuesOrCollections : (C | Iterable)[] -> : ^^^^^^^^^^^^^^^^^^^ +>valuesOrCollections : (C | Iterable)[] +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Seq : any > : ^^^ @@ -2247,8 +2247,8 @@ declare module Immutable { export function Seq(collection: Iterable): Seq.Indexed; >Seq : typeof Seq > : ^^^^^^^^^^ ->collection : Iterable -> : ^^^^^^^^^^^ +>collection : Iterable +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Seq : any > : ^^^ @@ -2373,8 +2373,8 @@ declare module Immutable { export function Keyed(collection: Iterable<[K, V]>): Collection.Keyed; >Keyed : { (collection: Iterable<[K, V]>): Collection.Keyed; (obj: { [key: string]: V_1; }): Keyed; } > : ^^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ->collection : Iterable<[K, V]> -> : ^^^^^^^^^^^^^^^^ +>collection : Iterable<[K, V], void, undefined> +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Collection : any > : ^^^ @@ -2413,8 +2413,8 @@ declare module Immutable { concat(...collections: Array>): Collection.Keyed; >concat : { (...collections: Array>): Collection.Keyed; (...collections: Array<{ [key: string]: C; }>): Keyed; } > : ^^^ ^^ ^^^^^ ^^ ^^^ ^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->collections : Iterable<[KC, VC]>[] -> : ^^^^^^^^^^^^^^^^^^^^ +>collections : Iterable<[KC, VC], void, undefined>[] +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Collection : any > : ^^^ @@ -2536,8 +2536,8 @@ declare module Immutable { export function Indexed(collection: Iterable): Collection.Indexed; >Indexed : (collection: Iterable) => Collection.Indexed > : ^ ^^ ^^ ^^^^^ ->collection : Iterable -> : ^^^^^^^^^^^ +>collection : Iterable +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Collection : any > : ^^^ @@ -2698,8 +2698,8 @@ declare module Immutable { concat(...valuesOrCollections: Array | C>): Collection.Indexed; >concat : (...valuesOrCollections: Array | C>) => Collection.Indexed > : ^ ^^^^^ ^^ ^^^^^ ->valuesOrCollections : (C | Iterable)[] -> : ^^^^^^^^^^^^^^^^^^^ +>valuesOrCollections : (C | Iterable)[] +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Collection : any > : ^^^ @@ -2779,8 +2779,8 @@ declare module Immutable { export function Set(collection: Iterable): Collection.Set; >Set : (collection: Iterable) => Collection.Set > : ^ ^^ ^^ ^^^^^ ->collection : Iterable -> : ^^^^^^^^^^^ +>collection : Iterable +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Collection : any > : ^^^ @@ -2803,8 +2803,8 @@ declare module Immutable { concat(...valuesOrCollections: Array | C>): Collection.Set; >concat : (...valuesOrCollections: Array | C>) => Collection.Set > : ^ ^^^^^ ^^ ^^^^^ ->valuesOrCollections : (C | Iterable)[] -> : ^^^^^^^^^^^^^^^^^^^ +>valuesOrCollections : (C | Iterable)[] +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Collection : any > : ^^^ @@ -2890,8 +2890,8 @@ declare module Immutable { export function Collection(collection: Iterable): Collection.Indexed; >Collection : typeof Collection > : ^^^^^^^^^^^^^^^^^ ->collection : Iterable -> : ^^^^^^^^^^^ +>collection : Iterable +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Collection : any > : ^^^ @@ -2962,16 +2962,16 @@ declare module Immutable { getIn(searchKeyPath: Iterable, notSetValue?: any): any; >getIn : (searchKeyPath: Iterable, notSetValue?: any) => any > : ^ ^^ ^^ ^^^ ^^^^^ ->searchKeyPath : Iterable -> : ^^^^^^^^^^^^^ +>searchKeyPath : Iterable +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >notSetValue : any > : ^^^ hasIn(searchKeyPath: Iterable): boolean; >hasIn : (searchKeyPath: Iterable) => boolean > : ^ ^^ ^^^^^ ->searchKeyPath : Iterable -> : ^^^^^^^^^^^^^ +>searchKeyPath : Iterable +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ // Persistent changes update(updater: (value: this) => R): R; @@ -3635,14 +3635,14 @@ declare module Immutable { isSubset(iter: Iterable): boolean; >isSubset : (iter: Iterable) => boolean > : ^ ^^ ^^^^^ ->iter : Iterable -> : ^^^^^^^^^^^ +>iter : Iterable +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ isSuperset(iter: Iterable): boolean; >isSuperset : (iter: Iterable) => boolean > : ^ ^^ ^^^^^ ->iter : Iterable -> : ^^^^^^^^^^^ +>iter : Iterable +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ readonly size: number; >size : number diff --git a/tests/baselines/reference/conditionalTypeDoesntSpinForever.types b/tests/baselines/reference/conditionalTypeDoesntSpinForever.types index 6ef34a39dd716..dae51f4eb0b71 100644 --- a/tests/baselines/reference/conditionalTypeDoesntSpinForever.types +++ b/tests/baselines/reference/conditionalTypeDoesntSpinForever.types @@ -1,8 +1,8 @@ //// [tests/cases/compiler/conditionalTypeDoesntSpinForever.ts] //// === Performance Stats === -Type Count: 1,000 -Instantiation count: 2,500 -> 5,000 +Type Count: 1,000 -> 2,500 +Instantiation count: 5,000 === conditionalTypeDoesntSpinForever.ts === // A *self-contained* demonstration of the problem follows... diff --git a/tests/baselines/reference/contextualTypeIterableUnions.types b/tests/baselines/reference/contextualTypeIterableUnions.types index df8c6a25e18c9..d9f08b45cc29f 100644 --- a/tests/baselines/reference/contextualTypeIterableUnions.types +++ b/tests/baselines/reference/contextualTypeIterableUnions.types @@ -6,8 +6,8 @@ declare class DMap { > : ^^^^^^^^^^ constructor(iterable: Iterable<[K, V]> | undefined); ->iterable : Iterable<[K, V]> | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>iterable : Iterable<[K, V], void, undefined> | undefined +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ } new DMap([["1", 2]]); >new DMap([["1", 2]]) : DMap @@ -24,8 +24,8 @@ new DMap([["1", 2]]); > : ^ const i1: Iterable<{ a: true }> | undefined = [{ a: true }]; ->i1 : Iterable<{ a: true; }> | undefined -> : ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ +>i1 : Iterable<{ a: true; }, void, undefined> | undefined +> : ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >a : true > : ^^^^ >true : true @@ -40,8 +40,8 @@ const i1: Iterable<{ a: true }> | undefined = [{ a: true }]; > : ^^^^ const i2: Iterable<{ a: true }> | Iterable<{ b: false }> = [{ b: false }]; ->i2 : Iterable<{ a: true; }> | Iterable<{ b: false; }> -> : ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^ +>i2 : Iterable<{ a: true; }, void, undefined> | Iterable<{ b: false; }, void, undefined> +> : ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ >a : true > : ^^^^ >true : true @@ -60,8 +60,8 @@ const i2: Iterable<{ a: true }> | Iterable<{ b: false }> = [{ b: false }]; > : ^^^^^ const i3: Iterable | 1[] = [2]; ->i3 : Iterable | 1[] -> : ^^^^^^^^^^^^^^^^^^^^^^ +>i3 : Iterable | 1[] +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >[2] : 2[] > : ^^^ >2 : 2 diff --git a/tests/baselines/reference/customAsyncIterator.js b/tests/baselines/reference/customAsyncIterator.js index 31bdd76778077..ea31a03b69d83 100644 --- a/tests/baselines/reference/customAsyncIterator.js +++ b/tests/baselines/reference/customAsyncIterator.js @@ -2,7 +2,7 @@ //// [customAsyncIterator.ts] // GH: https://github.com/microsoft/TypeScript/issues/33239 -class ConstantIterator implements AsyncIterator { +class ConstantIterator implements AsyncIterator { constructor(private constant: T) { } async next(value?: T): Promise> { diff --git a/tests/baselines/reference/customAsyncIterator.symbols b/tests/baselines/reference/customAsyncIterator.symbols index 641a24f86108a..8e6b7d5f05b45 100644 --- a/tests/baselines/reference/customAsyncIterator.symbols +++ b/tests/baselines/reference/customAsyncIterator.symbols @@ -2,7 +2,7 @@ === customAsyncIterator.ts === // GH: https://github.com/microsoft/TypeScript/issues/33239 -class ConstantIterator implements AsyncIterator { +class ConstantIterator implements AsyncIterator { >ConstantIterator : Symbol(ConstantIterator, Decl(customAsyncIterator.ts, 0, 0)) >T : Symbol(T, Decl(customAsyncIterator.ts, 1, 23)) >AsyncIterator : Symbol(AsyncIterator, Decl(lib.es2018.asynciterable.d.ts, --, --)) diff --git a/tests/baselines/reference/customAsyncIterator.types b/tests/baselines/reference/customAsyncIterator.types index a31d06fdf7ee9..bbf9a8209ac27 100644 --- a/tests/baselines/reference/customAsyncIterator.types +++ b/tests/baselines/reference/customAsyncIterator.types @@ -2,7 +2,7 @@ === customAsyncIterator.ts === // GH: https://github.com/microsoft/TypeScript/issues/33239 -class ConstantIterator implements AsyncIterator { +class ConstantIterator implements AsyncIterator { >ConstantIterator : ConstantIterator > : ^^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/destructuredLateBoundNameHasCorrectTypes.types b/tests/baselines/reference/destructuredLateBoundNameHasCorrectTypes.types index 9c15d6b2b210d..83bf34524d9f6 100644 --- a/tests/baselines/reference/destructuredLateBoundNameHasCorrectTypes.types +++ b/tests/baselines/reference/destructuredLateBoundNameHasCorrectTypes.types @@ -8,16 +8,16 @@ let { [Symbol.iterator]: destructured } = []; > : ^^^^^^^^^^^^^^^^^ >iterator : unique symbol > : ^^^^^^^^^^^^^ ->destructured : () => IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>destructured : () => IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >[] : undefined[] > : ^^^^^^^^^^^ void destructured; >void destructured : undefined > : ^^^^^^^^^ ->destructured : () => IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>destructured : () => IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ const named = "prop"; >named : "prop" diff --git a/tests/baselines/reference/esNextWeakRefs_IterableWeakMap.types b/tests/baselines/reference/esNextWeakRefs_IterableWeakMap.types index 659f10fbe2645..851fe26c8e728 100644 --- a/tests/baselines/reference/esNextWeakRefs_IterableWeakMap.types +++ b/tests/baselines/reference/esNextWeakRefs_IterableWeakMap.types @@ -81,22 +81,22 @@ export class IterableWeakMap implements WeakMap { > : ^ ^^ ^^^^^^^^^ constructor(iterable: Iterable<[key: K, value: V]> | null = null) { ->iterable : Iterable<[key: K, value: V]> | null -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>iterable : Iterable<[key: K, value: V], void, undefined> | null +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ if (iterable !== null) { >iterable !== null : boolean > : ^^^^^^^ ->iterable : Iterable<[key: K, value: V]> | null -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>iterable : Iterable<[key: K, value: V], void, undefined> | null +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ for (const { 0: key, 1: value } of iterable) { >key : K > : ^ >value : V > : ^ ->iterable : Iterable<[key: K, value: V]> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>iterable : Iterable<[key: K, value: V], void, undefined> +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this.set(key, value); >this.set(key, value) : this diff --git a/tests/baselines/reference/for-of12.types b/tests/baselines/reference/for-of12.types index 24c0ba69b975a..e8c8ba2a4df74 100644 --- a/tests/baselines/reference/for-of12.types +++ b/tests/baselines/reference/for-of12.types @@ -8,16 +8,16 @@ var v: string; for (v of [0, ""].values()) { } >v : string > : ^^^^^^ ->[0, ""].values() : IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->[0, ""].values : () => IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>[0, ""].values() : IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>[0, ""].values : () => IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >[0, ""] : (string | number)[] > : ^^^^^^^^^^^^^^^^^^^ >0 : 0 > : ^ >"" : "" > : ^^ ->values : () => IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>values : () => IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/for-of13.types b/tests/baselines/reference/for-of13.types index 6bfdc1fe849eb..c2de8b773563e 100644 --- a/tests/baselines/reference/for-of13.types +++ b/tests/baselines/reference/for-of13.types @@ -8,14 +8,14 @@ var v: string; for (v of [""].values()) { } >v : string > : ^^^^^^ ->[""].values() : IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^ ->[""].values : () => IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>[""].values() : IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>[""].values : () => IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >[""] : string[] > : ^^^^^^^^ >"" : "" > : ^^ ->values : () => IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>values : () => IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/for-of57.types b/tests/baselines/reference/for-of57.types index 71449bfc6291d..809f39ce2c5ad 100644 --- a/tests/baselines/reference/for-of57.types +++ b/tests/baselines/reference/for-of57.types @@ -2,12 +2,12 @@ === for-of57.ts === var iter: Iterable; ->iter : Iterable -> : ^^^^^^^^^^^^^^^^ +>iter : Iterable +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ for (let num of iter) { } >num : number > : ^^^^^^ ->iter : Iterable -> : ^^^^^^^^^^^^^^^^ +>iter : Iterable +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/forAwaitForUnion.types b/tests/baselines/reference/forAwaitForUnion.types index b2e965b0e2a0d..da17db1a9346d 100644 --- a/tests/baselines/reference/forAwaitForUnion.types +++ b/tests/baselines/reference/forAwaitForUnion.types @@ -4,14 +4,14 @@ async function f(source: Iterable | AsyncIterable) { >f : (source: Iterable | AsyncIterable) => Promise > : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ->source : Iterable | AsyncIterable -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>source : Iterable | AsyncIterable +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ for await (const x of source) { >x : Awaited > : ^^^^^^^^^^ ->source : Iterable | AsyncIterable -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>source : Iterable | AsyncIterable +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ } } diff --git a/tests/baselines/reference/generatorOverloads1.types b/tests/baselines/reference/generatorOverloads1.types index 53424034cc980..33f65b0effab2 100644 --- a/tests/baselines/reference/generatorOverloads1.types +++ b/tests/baselines/reference/generatorOverloads1.types @@ -6,20 +6,20 @@ module M { > : ^^^^^^^^ function* f(s: string): Iterable; ->f : { (s: string): Iterable; (s: number): Iterable; } -> : ^^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^^^^^^^^^^^ +>f : { (s: string): Iterable; (s: number): Iterable; } +> : ^^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >s : string > : ^^^^^^ function* f(s: number): Iterable; ->f : { (s: string): Iterable; (s: number): Iterable; } -> : ^^^ ^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ +>f : { (s: string): Iterable; (s: number): Iterable; } +> : ^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ >s : number > : ^^^^^^ function* f(s: any): Iterable { } ->f : { (s: string): Iterable; (s: number): Iterable; } -> : ^^^ ^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^ +>f : { (s: string): Iterable; (s: number): Iterable; } +> : ^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >s : any > : ^^^ } diff --git a/tests/baselines/reference/generatorOverloads2.types b/tests/baselines/reference/generatorOverloads2.types index ec742d99535b2..81da7ec24e160 100644 --- a/tests/baselines/reference/generatorOverloads2.types +++ b/tests/baselines/reference/generatorOverloads2.types @@ -6,20 +6,20 @@ declare module M { > : ^^^^^^^^ function* f(s: string): Iterable; ->f : { (s: string): Iterable; (s: number): Iterable; (s: any): Iterable; } -> : ^^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^ +>f : { (s: string): Iterable; (s: number): Iterable; (s: any): Iterable; } +> : ^^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >s : string > : ^^^^^^ function* f(s: number): Iterable; ->f : { (s: string): Iterable; (s: number): Iterable; (s: any): Iterable; } -> : ^^^ ^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^^^^^^^^^^^ +>f : { (s: string): Iterable; (s: number): Iterable; (s: any): Iterable; } +> : ^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >s : number > : ^^^^^^ function* f(s: any): Iterable; ->f : { (s: string): Iterable; (s: number): Iterable; (s: any): Iterable; } -> : ^^^ ^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ +>f : { (s: string): Iterable; (s: number): Iterable; (s: any): Iterable; } +> : ^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ >s : any > : ^^^ } diff --git a/tests/baselines/reference/generatorOverloads3.types b/tests/baselines/reference/generatorOverloads3.types index 378d8b854ffd8..e17db7fd9926a 100644 --- a/tests/baselines/reference/generatorOverloads3.types +++ b/tests/baselines/reference/generatorOverloads3.types @@ -6,20 +6,20 @@ class C { > : ^ *f(s: string): Iterable; ->f : { (s: string): Iterable; (s: number): Iterable; } -> : ^^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^^^^^^^^^^^ +>f : { (s: string): Iterable; (s: number): Iterable; } +> : ^^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >s : string > : ^^^^^^ *f(s: number): Iterable; ->f : { (s: string): Iterable; (s: number): Iterable; } -> : ^^^ ^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ +>f : { (s: string): Iterable; (s: number): Iterable; } +> : ^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ >s : number > : ^^^^^^ *f(s: any): Iterable { } ->f : { (s: string): Iterable; (s: number): Iterable; } -> : ^^^ ^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^ +>f : { (s: string): Iterable; (s: number): Iterable; } +> : ^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >s : any > : ^^^ } diff --git a/tests/baselines/reference/generatorOverloads4.types b/tests/baselines/reference/generatorOverloads4.types index 4fc2e3ce36f38..b96fb6944d36e 100644 --- a/tests/baselines/reference/generatorOverloads4.types +++ b/tests/baselines/reference/generatorOverloads4.types @@ -6,19 +6,19 @@ class C { > : ^ f(s: string): Iterable; ->f : { (s: string): Iterable; (s: number): Iterable; } -> : ^^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^^^^^^^^^^^ +>f : { (s: string): Iterable; (s: number): Iterable; } +> : ^^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >s : string > : ^^^^^^ f(s: number): Iterable; ->f : { (s: string): Iterable; (s: number): Iterable; } -> : ^^^ ^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ +>f : { (s: string): Iterable; (s: number): Iterable; } +> : ^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ >s : number > : ^^^^^^ *f(s: any): Iterable { } ->f : { (s: string): Iterable; (s: number): Iterable; } -> : ^^^ ^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^ +>f : { (s: string): Iterable; (s: number): Iterable; } +> : ^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >s : any } diff --git a/tests/baselines/reference/generatorOverloads5.types b/tests/baselines/reference/generatorOverloads5.types index 3d68a9d44b0d6..2e54d5b12b137 100644 --- a/tests/baselines/reference/generatorOverloads5.types +++ b/tests/baselines/reference/generatorOverloads5.types @@ -6,19 +6,19 @@ module M { > : ^^^^^^^^ function f(s: string): Iterable; ->f : { (s: string): Iterable; (s: number): Iterable; } -> : ^^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^^^^^^^^^^^ +>f : { (s: string): Iterable; (s: number): Iterable; } +> : ^^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >s : string > : ^^^^^^ function f(s: number): Iterable; ->f : { (s: string): Iterable; (s: number): Iterable; } -> : ^^^ ^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ +>f : { (s: string): Iterable; (s: number): Iterable; } +> : ^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ >s : number > : ^^^^^^ function* f(s: any): Iterable { } ->f : { (s: string): Iterable; (s: number): Iterable; } -> : ^^^ ^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^ +>f : { (s: string): Iterable; (s: number): Iterable; } +> : ^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >s : any } diff --git a/tests/baselines/reference/generatorReturnTypeFallback.1.types b/tests/baselines/reference/generatorReturnTypeFallback.1.types index e15ee0e2669bd..fc04c48fbaf7c 100644 --- a/tests/baselines/reference/generatorReturnTypeFallback.1.types +++ b/tests/baselines/reference/generatorReturnTypeFallback.1.types @@ -3,8 +3,8 @@ === generatorReturnTypeFallback.1.ts === // Allow generators to fallback to IterableIterator if they do not need a type for the sent value while in strictNullChecks mode. function* f() { ->f : () => IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>f : () => IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ yield 1; >yield 1 : any diff --git a/tests/baselines/reference/generatorReturnTypeFallback.4.types b/tests/baselines/reference/generatorReturnTypeFallback.4.types index acd098251ee9d..eb3fbef238dce 100644 --- a/tests/baselines/reference/generatorReturnTypeFallback.4.types +++ b/tests/baselines/reference/generatorReturnTypeFallback.4.types @@ -4,8 +4,8 @@ // 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. function* f() { ->f : () => IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>f : () => IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ const x: string = yield 1; >x : string diff --git a/tests/baselines/reference/generatorTypeCheck11.js b/tests/baselines/reference/generatorTypeCheck11.js index 09d30ea001b3d..7d9b616a264b2 100644 --- a/tests/baselines/reference/generatorTypeCheck11.js +++ b/tests/baselines/reference/generatorTypeCheck11.js @@ -1,7 +1,7 @@ //// [tests/cases/conformance/es6/yieldExpressions/generatorTypeCheck11.ts] //// //// [generatorTypeCheck11.ts] -function* g(): IterableIterator { +function* g(): IterableIterator { return 0; } diff --git a/tests/baselines/reference/generatorTypeCheck11.symbols b/tests/baselines/reference/generatorTypeCheck11.symbols index f5f3ce3fdde53..44a4c4d62310e 100644 --- a/tests/baselines/reference/generatorTypeCheck11.symbols +++ b/tests/baselines/reference/generatorTypeCheck11.symbols @@ -1,7 +1,7 @@ //// [tests/cases/conformance/es6/yieldExpressions/generatorTypeCheck11.ts] //// === generatorTypeCheck11.ts === -function* g(): IterableIterator { +function* g(): IterableIterator { >g : Symbol(g, Decl(generatorTypeCheck11.ts, 0, 0)) >IterableIterator : Symbol(IterableIterator, Decl(lib.es2015.iterable.d.ts, --, --)) diff --git a/tests/baselines/reference/generatorTypeCheck11.types b/tests/baselines/reference/generatorTypeCheck11.types index dda8baa38dc4a..b1788b17a91db 100644 --- a/tests/baselines/reference/generatorTypeCheck11.types +++ b/tests/baselines/reference/generatorTypeCheck11.types @@ -1,9 +1,9 @@ //// [tests/cases/conformance/es6/yieldExpressions/generatorTypeCheck11.ts] //// === generatorTypeCheck11.ts === -function* g(): IterableIterator { ->g : () => IterableIterator -> : ^^^^^^ +function* g(): IterableIterator { +>g : () => IterableIterator +> : ^^^^^^ return 0; >0 : 0 diff --git a/tests/baselines/reference/generatorTypeCheck12.js b/tests/baselines/reference/generatorTypeCheck12.js index 5ea3a5e9a7ee2..4acc1e520580b 100644 --- a/tests/baselines/reference/generatorTypeCheck12.js +++ b/tests/baselines/reference/generatorTypeCheck12.js @@ -1,7 +1,7 @@ //// [tests/cases/conformance/es6/yieldExpressions/generatorTypeCheck12.ts] //// //// [generatorTypeCheck12.ts] -function* g(): IterableIterator { +function* g(): IterableIterator { return ""; } diff --git a/tests/baselines/reference/generatorTypeCheck12.symbols b/tests/baselines/reference/generatorTypeCheck12.symbols index 8fd6746b19d2a..d66acfb2ace76 100644 --- a/tests/baselines/reference/generatorTypeCheck12.symbols +++ b/tests/baselines/reference/generatorTypeCheck12.symbols @@ -1,7 +1,7 @@ //// [tests/cases/conformance/es6/yieldExpressions/generatorTypeCheck12.ts] //// === generatorTypeCheck12.ts === -function* g(): IterableIterator { +function* g(): IterableIterator { >g : Symbol(g, Decl(generatorTypeCheck12.ts, 0, 0)) >IterableIterator : Symbol(IterableIterator, Decl(lib.es2015.iterable.d.ts, --, --)) diff --git a/tests/baselines/reference/generatorTypeCheck12.types b/tests/baselines/reference/generatorTypeCheck12.types index 407f05e6f391c..4a55e92a7d1aa 100644 --- a/tests/baselines/reference/generatorTypeCheck12.types +++ b/tests/baselines/reference/generatorTypeCheck12.types @@ -1,9 +1,9 @@ //// [tests/cases/conformance/es6/yieldExpressions/generatorTypeCheck12.ts] //// === generatorTypeCheck12.ts === -function* g(): IterableIterator { ->g : () => IterableIterator -> : ^^^^^^ +function* g(): IterableIterator { +>g : () => IterableIterator +> : ^^^^^^ return ""; >"" : "" diff --git a/tests/baselines/reference/generatorTypeCheck13.js b/tests/baselines/reference/generatorTypeCheck13.js index 1a743854ab2da..a447f44ea86ae 100644 --- a/tests/baselines/reference/generatorTypeCheck13.js +++ b/tests/baselines/reference/generatorTypeCheck13.js @@ -1,7 +1,7 @@ //// [tests/cases/conformance/es6/yieldExpressions/generatorTypeCheck13.ts] //// //// [generatorTypeCheck13.ts] -function* g(): IterableIterator { +function* g(): IterableIterator { yield 0; return ""; } diff --git a/tests/baselines/reference/generatorTypeCheck13.symbols b/tests/baselines/reference/generatorTypeCheck13.symbols index e2a80949d6c1d..71557b215c836 100644 --- a/tests/baselines/reference/generatorTypeCheck13.symbols +++ b/tests/baselines/reference/generatorTypeCheck13.symbols @@ -1,7 +1,7 @@ //// [tests/cases/conformance/es6/yieldExpressions/generatorTypeCheck13.ts] //// === generatorTypeCheck13.ts === -function* g(): IterableIterator { +function* g(): IterableIterator { >g : Symbol(g, Decl(generatorTypeCheck13.ts, 0, 0)) >IterableIterator : Symbol(IterableIterator, Decl(lib.es2015.iterable.d.ts, --, --)) diff --git a/tests/baselines/reference/generatorTypeCheck13.types b/tests/baselines/reference/generatorTypeCheck13.types index 85f6e91aefdd9..6bd83c1136fe7 100644 --- a/tests/baselines/reference/generatorTypeCheck13.types +++ b/tests/baselines/reference/generatorTypeCheck13.types @@ -1,9 +1,9 @@ //// [tests/cases/conformance/es6/yieldExpressions/generatorTypeCheck13.ts] //// === generatorTypeCheck13.ts === -function* g(): IterableIterator { ->g : () => IterableIterator -> : ^^^^^^ +function* g(): IterableIterator { +>g : () => IterableIterator +> : ^^^^^^ yield 0; >yield 0 : undefined diff --git a/tests/baselines/reference/generatorTypeCheck26.js b/tests/baselines/reference/generatorTypeCheck26.js index 5bb74d893adcf..5004a9aa05223 100644 --- a/tests/baselines/reference/generatorTypeCheck26.js +++ b/tests/baselines/reference/generatorTypeCheck26.js @@ -1,7 +1,7 @@ //// [tests/cases/conformance/es6/yieldExpressions/generatorTypeCheck26.ts] //// //// [generatorTypeCheck26.ts] -function* g(): IterableIterator<(x: string) => number> { +function* g(): IterableIterator<(x: string) => number, (x: string) => number> { yield x => x.length; yield *[x => x.length]; return x => x.length; diff --git a/tests/baselines/reference/generatorTypeCheck31.errors.txt b/tests/baselines/reference/generatorTypeCheck31.errors.txt index 20cd419808324..0d9deeb3bea68 100644 --- a/tests/baselines/reference/generatorTypeCheck31.errors.txt +++ b/tests/baselines/reference/generatorTypeCheck31.errors.txt @@ -1,5 +1,5 @@ -generatorTypeCheck31.ts(2,11): error TS2322: Type 'Generator<(x: any) => any, void, unknown>' is not assignable to type '() => Iterable<(x: string) => number>'. - Type 'Generator<(x: any) => any, void, unknown>' provides no match for the signature '(): Iterable<(x: string) => number>'. +generatorTypeCheck31.ts(2,11): error TS2322: Type 'Generator<(x: any) => any, void, unknown>' is not assignable to type '() => Iterable<(x: string) => number, void, undefined>'. + Type 'Generator<(x: any) => any, void, unknown>' provides no match for the signature '(): Iterable<(x: string) => number, void, undefined>'. ==== generatorTypeCheck31.ts (1 errors) ==== @@ -10,6 +10,6 @@ generatorTypeCheck31.ts(2,11): error TS2322: Type 'Generator<(x: any) => any, vo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ } () ~~~~~~~~ -!!! error TS2322: Type 'Generator<(x: any) => any, void, unknown>' is not assignable to type '() => Iterable<(x: string) => number>'. -!!! error TS2322: Type 'Generator<(x: any) => any, void, unknown>' provides no match for the signature '(): Iterable<(x: string) => number>'. +!!! error TS2322: Type 'Generator<(x: any) => any, void, unknown>' is not assignable to type '() => Iterable<(x: string) => number, void, undefined>'. +!!! error TS2322: Type 'Generator<(x: any) => any, void, unknown>' provides no match for the signature '(): Iterable<(x: string) => number, void, undefined>'. } \ No newline at end of file diff --git a/tests/baselines/reference/generatorTypeCheck62.js b/tests/baselines/reference/generatorTypeCheck62.js index 9ca8500b6f1bb..17c00c1c0a68a 100644 --- a/tests/baselines/reference/generatorTypeCheck62.js +++ b/tests/baselines/reference/generatorTypeCheck62.js @@ -25,7 +25,7 @@ export interface State extends StrategicState { } export const Nothing1: Strategy = strategy("Nothing", function*(state: State) { - return state; + return state; // `return`/`TReturn` isn't supported by `strategy`, so this should error. }); export const Nothing2: Strategy = strategy("Nothing", function*(state: State) { @@ -34,7 +34,7 @@ export const Nothing2: Strategy = strategy("Nothing", function*(state: St export const Nothing3: Strategy = strategy("Nothing", function* (state: State) { yield ; - return state; + return state; // `return`/`TReturn` isn't supported by `strategy`, so this should error. }); @@ -54,12 +54,12 @@ function strategy(stratName, gen) { }; } exports.Nothing1 = strategy("Nothing", function* (state) { - return state; + return state; // `return`/`TReturn` isn't supported by `strategy`, so this should error. }); exports.Nothing2 = strategy("Nothing", function* (state) { yield state; }); exports.Nothing3 = strategy("Nothing", function* (state) { yield; - return state; + return state; // `return`/`TReturn` isn't supported by `strategy`, so this should error. }); diff --git a/tests/baselines/reference/generatorTypeCheck63.js b/tests/baselines/reference/generatorTypeCheck63.js index f1f4d3ee52e81..38a229c016a10 100644 --- a/tests/baselines/reference/generatorTypeCheck63.js +++ b/tests/baselines/reference/generatorTypeCheck63.js @@ -25,20 +25,20 @@ export interface State extends StrategicState { } export const Nothing: Strategy = strategy("Nothing", function* (state: State) { - yield 1; - return state; + yield 1; // number isn't a `State`, so this should error. + return state; // `return`/`TReturn` isn't supported by `strategy`, so this should error. }); export const Nothing1: Strategy = strategy("Nothing", function* (state: State) { }); export const Nothing2: Strategy = strategy("Nothing", function* (state: State) { - return 1; + return 1; // `return`/`TReturn` isn't supported by `strategy`, so this should error. }); export const Nothing3: Strategy = strategy("Nothing", function* (state: State) { yield state; - return 1; + return 1; // `return`/`TReturn` isn't supported by `strategy`, so this should error. }); //// [generatorTypeCheck63.js] @@ -57,15 +57,15 @@ function strategy(stratName, gen) { }; } exports.Nothing = strategy("Nothing", function* (state) { - yield 1; - return state; + yield 1; // number isn't a `State`, so this should error. + return state; // `return`/`TReturn` isn't supported by `strategy`, so this should error. }); exports.Nothing1 = strategy("Nothing", function* (state) { }); exports.Nothing2 = strategy("Nothing", function* (state) { - return 1; + return 1; // `return`/`TReturn` isn't supported by `strategy`, so this should error. }); exports.Nothing3 = strategy("Nothing", function* (state) { yield state; - return 1; + return 1; // `return`/`TReturn` isn't supported by `strategy`, so this should error. }); diff --git a/tests/baselines/reference/generatorTypeCheck63.symbols b/tests/baselines/reference/generatorTypeCheck63.symbols index e395f8e0a4437..eb91585f7334a 100644 --- a/tests/baselines/reference/generatorTypeCheck63.symbols +++ b/tests/baselines/reference/generatorTypeCheck63.symbols @@ -73,8 +73,8 @@ export const Nothing: Strategy = strategy("Nothing", function* (state: St >state : Symbol(state, Decl(generatorTypeCheck63.ts, 23, 71)) >State : Symbol(State, Decl(generatorTypeCheck63.ts, 17, 1)) - yield 1; - return state; + yield 1; // number isn't a `State`, so this should error. + return state; // `return`/`TReturn` isn't supported by `strategy`, so this should error. >state : Symbol(state, Decl(generatorTypeCheck63.ts, 23, 71)) }); @@ -97,7 +97,7 @@ export const Nothing2: Strategy = strategy("Nothing", function* (state: S >state : Symbol(state, Decl(generatorTypeCheck63.ts, 31, 72)) >State : Symbol(State, Decl(generatorTypeCheck63.ts, 17, 1)) - return 1; + return 1; // `return`/`TReturn` isn't supported by `strategy`, so this should error. }); export const Nothing3: Strategy = strategy("Nothing", function* (state: State) { @@ -111,5 +111,5 @@ export const Nothing3: Strategy = strategy("Nothing", function* (state: S yield state; >state : Symbol(state, Decl(generatorTypeCheck63.ts, 35, 72)) - return 1; + return 1; // `return`/`TReturn` isn't supported by `strategy`, so this should error. }); diff --git a/tests/baselines/reference/generatorTypeCheck63.types b/tests/baselines/reference/generatorTypeCheck63.types index a28a61bca1bc1..1174de3e6d98c 100644 --- a/tests/baselines/reference/generatorTypeCheck63.types +++ b/tests/baselines/reference/generatorTypeCheck63.types @@ -28,10 +28,10 @@ export function strategy(stratName: string, gen: (a: T for (const next of gen(state)) { >next : T > : ^ ->gen(state) : IterableIterator -> : ^^^^^^^^^^^^^^^^^^^ ->gen : (a: T) => IterableIterator -> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ +>gen(state) : IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>gen : (a: T) => IterableIterator +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >state : T > : ^ @@ -75,24 +75,24 @@ export interface State extends StrategicState { export const Nothing: Strategy = strategy("Nothing", function* (state: State) { >Nothing : Strategy > : ^^^^^^^^^^^^^^^ ->strategy("Nothing", function* (state: State) { yield 1; return state;}) : (a: State) => IterableIterator -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->strategy : (stratName: string, gen: (a: T) => IterableIterator) => (a: T) => IterableIterator -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ +>strategy("Nothing", function* (state: State) { yield 1; // number isn't a `State`, so this should error. return state; // `return`/`TReturn` isn't supported by `strategy`, so this should error.}) : (a: State) => IterableIterator +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>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; // number isn't a `State`, so this should error. return state; // `return`/`TReturn` isn't supported by `strategy`, so this should error.} : (state: State) => Generator +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >state : State > : ^^^^^ - yield 1; + yield 1; // number isn't a `State`, so this should error. >yield 1 : undefined > : ^^^^^^^^^ >1 : 1 > : ^ - return state; + return state; // `return`/`TReturn` isn't supported by `strategy`, so this should error. >state : State > : ^^^^^ @@ -101,10 +101,10 @@ export const Nothing: Strategy = strategy("Nothing", function* (state: St export const Nothing1: Strategy = strategy("Nothing", function* (state: State) { >Nothing1 : Strategy > : ^^^^^^^^^^^^^^^ ->strategy("Nothing", function* (state: State) {}) : (a: State) => IterableIterator -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->strategy : (stratName: string, gen: (a: T) => IterableIterator) => (a: T) => IterableIterator -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ +>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 @@ -117,18 +117,18 @@ export const Nothing1: Strategy = strategy("Nothing", function* (state: S export const Nothing2: Strategy = strategy("Nothing", function* (state: State) { >Nothing2 : Strategy > : ^^^^^^^^^^^^^^^ ->strategy("Nothing", function* (state: State) { return 1;}) : (a: State) => IterableIterator -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->strategy : (stratName: string, gen: (a: T) => IterableIterator) => (a: T) => IterableIterator -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ +>strategy("Nothing", function* (state: State) { return 1; // `return`/`TReturn` isn't supported by `strategy`, so this should error.}) : (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; // `return`/`TReturn` isn't supported by `strategy`, so this should error.} : (state: State) => Generator +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >state : State > : ^^^^^ - return 1; + return 1; // `return`/`TReturn` isn't supported by `strategy`, so this should error. >1 : 1 > : ^ @@ -137,14 +137,14 @@ export const Nothing2: Strategy = strategy("Nothing", function* (state: S export const Nothing3: Strategy = strategy("Nothing", function* (state: State) { >Nothing3 : Strategy > : ^^^^^^^^^^^^^^^ ->strategy("Nothing", function* (state: State) { yield state; return 1;}) : (a: State) => IterableIterator -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->strategy : (stratName: string, gen: (a: T) => IterableIterator) => (a: T) => IterableIterator -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ +>strategy("Nothing", function* (state: State) { yield state; return 1; // `return`/`TReturn` isn't supported by `strategy`, so this should error.}) : (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; // `return`/`TReturn` isn't supported by `strategy`, so this should error.} : (state: State) => Generator +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >state : State > : ^^^^^ @@ -154,7 +154,7 @@ export const Nothing3: Strategy = strategy("Nothing", function* (state: S >state : State > : ^^^^^ - return 1; + return 1; // `return`/`TReturn` isn't supported by `strategy`, so this should error. >1 : 1 > : ^ diff --git a/tests/baselines/reference/indexSignatureInOtherFile.errors.txt b/tests/baselines/reference/indexSignatureInOtherFile.errors.txt index 812abd3f8198e..de582a4737f71 100644 --- a/tests/baselines/reference/indexSignatureInOtherFile.errors.txt +++ b/tests/baselines/reference/indexSignatureInOtherFile.errors.txt @@ -1,4 +1,4 @@ -index.ts(2,3): error TS2411: Property '[Symbol.iterator]' of type '() => IterableIterator' is not assignable to 'symbol' index type 'string'. +index.ts(2,3): error TS2411: Property '[Symbol.iterator]' of type '() => IterableIterator' is not assignable to 'symbol' index type 'string'. index.ts(2,3): error TS2411: Property '[Symbol.unscopables]' of type '() => { copyWithin: boolean; entries: boolean; fill: boolean; find: boolean; findIndex: boolean; keys: boolean; values: boolean; }' is not assignable to 'symbol' index type 'string'. @@ -6,7 +6,7 @@ index.ts(2,3): error TS2411: Property '[Symbol.unscopables]' of type '() => { co class Test extends Array1 { [key: symbol]: string ~~~~~~~~~~~~~~~~~~~~~ -!!! error TS2411: Property '[Symbol.iterator]' of type '() => IterableIterator' is not assignable to 'symbol' index type 'string'. +!!! error TS2411: Property '[Symbol.iterator]' of type '() => IterableIterator' is not assignable to 'symbol' index type 'string'. !!! related TS2728 other.ts:14:3: '[Symbol.iterator]' is declared here. ~~~~~~~~~~~~~~~~~~~~~ !!! error TS2411: Property '[Symbol.unscopables]' of type '() => { copyWithin: boolean; entries: boolean; fill: boolean; find: boolean; findIndex: boolean; keys: boolean; values: boolean; }' is not assignable to 'symbol' index type 'string'. diff --git a/tests/baselines/reference/indexSignatureInOtherFile1.errors.txt b/tests/baselines/reference/indexSignatureInOtherFile1.errors.txt index 6a802d303ace7..dec98c937da64 100644 --- a/tests/baselines/reference/indexSignatureInOtherFile1.errors.txt +++ b/tests/baselines/reference/indexSignatureInOtherFile1.errors.txt @@ -1,4 +1,4 @@ -index.ts(2,3): error TS2411: Property '[Symbol.iterator]' of type '() => IterableIterator' is not assignable to 'symbol' index type 'string'. +index.ts(2,3): error TS2411: Property '[Symbol.iterator]' of type '() => IterableIterator' is not assignable to 'symbol' index type 'string'. index.ts(2,3): error TS2411: Property '[Symbol.unscopables]' of type '() => { copyWithin: boolean; entries: boolean; fill: boolean; find: boolean; findIndex: boolean; keys: boolean; values: boolean; }' is not assignable to 'symbol' index type 'string'. @@ -40,7 +40,7 @@ index.ts(2,3): error TS2411: Property '[Symbol.unscopables]' of type '() => { co class Test extends Array1 { [key: symbol]: string ~~~~~~~~~~~~~~~~~~~~~ -!!! error TS2411: Property '[Symbol.iterator]' of type '() => IterableIterator' is not assignable to 'symbol' index type 'string'. +!!! error TS2411: Property '[Symbol.iterator]' of type '() => IterableIterator' is not assignable to 'symbol' index type 'string'. !!! related TS2728 other.ts:14:3: '[Symbol.iterator]' is declared here. ~~~~~~~~~~~~~~~~~~~~~ !!! error TS2411: Property '[Symbol.unscopables]' of type '() => { copyWithin: boolean; entries: boolean; fill: boolean; find: boolean; findIndex: boolean; keys: boolean; values: boolean; }' is not assignable to 'symbol' index type 'string'. diff --git a/tests/baselines/reference/indirectGlobalSymbolPartOfObjectType.types b/tests/baselines/reference/indirectGlobalSymbolPartOfObjectType.types index 6003f038d368e..62eeebefcc18d 100644 --- a/tests/baselines/reference/indirectGlobalSymbolPartOfObjectType.types +++ b/tests/baselines/reference/indirectGlobalSymbolPartOfObjectType.types @@ -13,8 +13,8 @@ const Symbol = globalThis.Symbol; > : ^^^^^^^^^^^^^^^^^ [][Symbol.iterator]; ->[][Symbol.iterator] : () => IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>[][Symbol.iterator] : () => IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >[] : undefined[] > : ^^^^^^^^^^^ >Symbol.iterator : unique symbol diff --git a/tests/baselines/reference/iterableContextualTyping1.types b/tests/baselines/reference/iterableContextualTyping1.types index a5f32840bbffb..8235c582318f5 100644 --- a/tests/baselines/reference/iterableContextualTyping1.types +++ b/tests/baselines/reference/iterableContextualTyping1.types @@ -2,8 +2,8 @@ === iterableContextualTyping1.ts === var iter: Iterable<(x: string) => number> = [s => s.length]; ->iter : Iterable<(x: string) => number> -> : ^^^^^^^^^^ ^^ ^^^^^ ^ +>iter : Iterable<(x: string) => number, void, undefined> +> : ^^^^^^^^^^ ^^ ^^^^^ ^^^^^^^^^^^^^^^^^^ >x : string > : ^^^^^^ >[s => s.length] : ((s: string) => number)[] diff --git a/tests/baselines/reference/iteratorSpreadInArray11.types b/tests/baselines/reference/iteratorSpreadInArray11.types index 74b9fa365ebb0..f89e26a007824 100644 --- a/tests/baselines/reference/iteratorSpreadInArray11.types +++ b/tests/baselines/reference/iteratorSpreadInArray11.types @@ -2,8 +2,8 @@ === iteratorSpreadInArray11.ts === var iter: Iterable; ->iter : Iterable -> : ^^^^^^^^^^^^^^^^ +>iter : Iterable +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ var array = [...iter]; >array : number[] @@ -12,6 +12,6 @@ var array = [...iter]; > : ^^^^^^^^ >...iter : number > : ^^^^^^ ->iter : Iterable -> : ^^^^^^^^^^^^^^^^ +>iter : Iterable +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/mapConstructor.types b/tests/baselines/reference/mapConstructor.types index 8d1b342d04b24..7fe1dc99108df 100644 --- a/tests/baselines/reference/mapConstructor.types +++ b/tests/baselines/reference/mapConstructor.types @@ -8,10 +8,10 @@ new Map(); > : ^^^^^^^^^^^^^^ const potentiallyUndefinedIterable = [['1', 1], ['2', 2]] as Iterable<[string, number]> | undefined; ->potentiallyUndefinedIterable : Iterable<[string, number]> | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->[['1', 1], ['2', 2]] as Iterable<[string, number]> | undefined : Iterable<[string, number]> | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>potentiallyUndefinedIterable : Iterable<[string, number], void, undefined> | undefined +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>[['1', 1], ['2', 2]] as Iterable<[string, number]> | undefined : Iterable<[string, number], void, undefined> | undefined +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >[['1', 1], ['2', 2]] : [string, number][] > : ^^^^^^^^^^^^^^^^^^ >['1', 1] : [string, number] @@ -32,14 +32,14 @@ new Map(potentiallyUndefinedIterable); > : ^^^^^^^^^^^^^^^^^^^ >Map : MapConstructor > : ^^^^^^^^^^^^^^ ->potentiallyUndefinedIterable : Iterable<[string, number]> | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>potentiallyUndefinedIterable : Iterable<[string, number], void, undefined> | undefined +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ const potentiallyNullIterable = [['1', 1], ['2', 2]] as Iterable<[string, number]> | null; ->potentiallyNullIterable : Iterable<[string, number]> | null -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->[['1', 1], ['2', 2]] as Iterable<[string, number]> | null : Iterable<[string, number]> | null -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>potentiallyNullIterable : Iterable<[string, number], void, undefined> | null +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>[['1', 1], ['2', 2]] as Iterable<[string, number]> | null : Iterable<[string, number], void, undefined> | null +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >[['1', 1], ['2', 2]] : [string, number][] > : ^^^^^^^^^^^^^^^^^^ >['1', 1] : [string, number] @@ -60,6 +60,6 @@ new Map(potentiallyNullIterable); > : ^^^^^^^^^^^^^^^^^^^ >Map : MapConstructor > : ^^^^^^^^^^^^^^ ->potentiallyNullIterable : Iterable<[string, number]> | null -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>potentiallyNullIterable : Iterable<[string, number], void, undefined> | null +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/mappedTypeWithAsClauseAndLateBoundProperty.errors.txt b/tests/baselines/reference/mappedTypeWithAsClauseAndLateBoundProperty.errors.txt index 380aa151c2c22..81a39b93086cc 100644 --- a/tests/baselines/reference/mappedTypeWithAsClauseAndLateBoundProperty.errors.txt +++ b/tests/baselines/reference/mappedTypeWithAsClauseAndLateBoundProperty.errors.txt @@ -1,4 +1,4 @@ -mappedTypeWithAsClauseAndLateBoundProperty.ts(3,1): error TS2741: Property 'length' is missing in type '{ [x: number]: number; toString: () => string; toLocaleString: { (): string; (locales: string | string[], options?: NumberFormatOptions & DateTimeFormatOptions): string; }; pop: () => number; push: (...items: number[]) => number; concat: { (...items: ConcatArray[]): number[]; (...items: (number | ConcatArray)[]): number[]; }; join: (separator?: string) => string; reverse: () => number[]; shift: () => number; slice: (start?: number, end?: number) => number[]; sort: (compareFn?: (a: number, b: number) => number) => number[]; splice: { (start: number, deleteCount?: number): number[]; (start: number, deleteCount: number, ...items: number[]): number[]; }; unshift: (...items: number[]) => number; indexOf: (searchElement: number, fromIndex?: number) => number; lastIndexOf: (searchElement: number, fromIndex?: number) => number; every: { (predicate: (value: number, index: number, array: number[]) => value is S, thisArg?: any): this is S[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): boolean; }; some: (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any) => boolean; forEach: (callbackfn: (value: number, index: number, array: number[]) => void, thisArg?: any) => void; map: (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[]; filter: { (predicate: (value: number, index: number, array: number[]) => value is S, thisArg?: any): S[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): number[]; }; reduce: { (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number): number; (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number, initialValue: number): number; (callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: number[]) => U, initialValue: U): U; }; reduceRight: { (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number): number; (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number, initialValue: number): number; (callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: number[]) => U, initialValue: U): U; }; find: { (predicate: (value: number, index: number, obj: number[]) => value is S, thisArg?: any): S; (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any): number; }; findIndex: (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any) => number; fill: (value: number, start?: number, end?: number) => number[]; copyWithin: (target: number, start: number, end?: number) => number[]; entries: () => IterableIterator<[number, number]>; keys: () => IterableIterator; values: () => IterableIterator; includes: (searchElement: number, fromIndex?: number) => boolean; flatMap: (callback: (this: This, value: number, index: number, array: number[]) => U | readonly U[], thisArg?: This) => U[]; flat: (this: A, depth?: D) => FlatArray[]; [Symbol.iterator]: () => IterableIterator; readonly [Symbol.unscopables]: { [x: number]: boolean; length?: boolean; toString?: boolean; toLocaleString?: boolean; pop?: boolean; push?: boolean; concat?: boolean; join?: boolean; reverse?: boolean; shift?: boolean; slice?: boolean; sort?: boolean; splice?: boolean; unshift?: boolean; indexOf?: boolean; lastIndexOf?: boolean; every?: boolean; some?: boolean; forEach?: boolean; map?: boolean; filter?: boolean; reduce?: boolean; reduceRight?: boolean; find?: boolean; findIndex?: boolean; fill?: boolean; copyWithin?: boolean; entries?: boolean; keys?: boolean; values?: boolean; includes?: boolean; flatMap?: boolean; flat?: boolean; [Symbol.iterator]?: boolean; readonly [Symbol.unscopables]?: boolean; }; }' but required in type 'number[]'. +mappedTypeWithAsClauseAndLateBoundProperty.ts(3,1): error TS2741: Property 'length' is missing in type '{ [x: number]: number; toString: () => string; toLocaleString: { (): string; (locales: string | string[], options?: NumberFormatOptions & DateTimeFormatOptions): string; }; pop: () => number; push: (...items: number[]) => number; concat: { (...items: ConcatArray[]): number[]; (...items: (number | ConcatArray)[]): number[]; }; join: (separator?: string) => string; reverse: () => number[]; shift: () => number; slice: (start?: number, end?: number) => number[]; sort: (compareFn?: (a: number, b: number) => number) => number[]; splice: { (start: number, deleteCount?: number): number[]; (start: number, deleteCount: number, ...items: number[]): number[]; }; unshift: (...items: number[]) => number; indexOf: (searchElement: number, fromIndex?: number) => number; lastIndexOf: (searchElement: number, fromIndex?: number) => number; every: { (predicate: (value: number, index: number, array: number[]) => value is S, thisArg?: any): this is S[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): boolean; }; some: (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any) => boolean; forEach: (callbackfn: (value: number, index: number, array: number[]) => void, thisArg?: any) => void; map: (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[]; filter: { (predicate: (value: number, index: number, array: number[]) => value is S, thisArg?: any): S[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): number[]; }; reduce: { (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number): number; (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number, initialValue: number): number; (callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: number[]) => U, initialValue: U): U; }; reduceRight: { (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number): number; (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number, initialValue: number): number; (callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: number[]) => U, initialValue: U): U; }; find: { (predicate: (value: number, index: number, obj: number[]) => value is S, thisArg?: any): S; (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any): number; }; findIndex: (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any) => number; fill: (value: number, start?: number, end?: number) => number[]; copyWithin: (target: number, start: number, end?: number) => number[]; entries: () => IterableIterator<[number, number], void, undefined>; keys: () => IterableIterator; values: () => IterableIterator; includes: (searchElement: number, fromIndex?: number) => boolean; flatMap: (callback: (this: This, value: number, index: number, array: number[]) => U | readonly U[], thisArg?: This) => U[]; flat: (this: A, depth?: D) => FlatArray[]; [Symbol.iterator]: () => IterableIterator; readonly [Symbol.unscopables]: { [x: number]: boolean; length?: boolean; toString?: boolean; toLocaleString?: boolean; pop?: boolean; push?: boolean; concat?: boolean; join?: boolean; reverse?: boolean; shift?: boolean; slice?: boolean; sort?: boolean; splice?: boolean; unshift?: boolean; indexOf?: boolean; lastIndexOf?: boolean; every?: boolean; some?: boolean; forEach?: boolean; map?: boolean; filter?: boolean; reduce?: boolean; reduceRight?: boolean; find?: boolean; findIndex?: boolean; fill?: boolean; copyWithin?: boolean; entries?: boolean; keys?: boolean; values?: boolean; includes?: boolean; flatMap?: boolean; flat?: boolean; [Symbol.iterator]?: boolean; readonly [Symbol.unscopables]?: boolean; }; }' but required in type 'number[]'. ==== mappedTypeWithAsClauseAndLateBoundProperty.ts (1 errors) ==== @@ -6,6 +6,6 @@ mappedTypeWithAsClauseAndLateBoundProperty.ts(3,1): error TS2741: Property 'leng declare let src2: { [K in keyof number[] as Exclude]: (number[])[K] }; tgt2 = src2; // Should error ~~~~ -!!! error TS2741: Property 'length' is missing in type '{ [x: number]: number; toString: () => string; toLocaleString: { (): string; (locales: string | string[], options?: NumberFormatOptions & DateTimeFormatOptions): string; }; pop: () => number; push: (...items: number[]) => number; concat: { (...items: ConcatArray[]): number[]; (...items: (number | ConcatArray)[]): number[]; }; join: (separator?: string) => string; reverse: () => number[]; shift: () => number; slice: (start?: number, end?: number) => number[]; sort: (compareFn?: (a: number, b: number) => number) => number[]; splice: { (start: number, deleteCount?: number): number[]; (start: number, deleteCount: number, ...items: number[]): number[]; }; unshift: (...items: number[]) => number; indexOf: (searchElement: number, fromIndex?: number) => number; lastIndexOf: (searchElement: number, fromIndex?: number) => number; every: { (predicate: (value: number, index: number, array: number[]) => value is S, thisArg?: any): this is S[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): boolean; }; some: (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any) => boolean; forEach: (callbackfn: (value: number, index: number, array: number[]) => void, thisArg?: any) => void; map: (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[]; filter: { (predicate: (value: number, index: number, array: number[]) => value is S, thisArg?: any): S[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): number[]; }; reduce: { (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number): number; (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number, initialValue: number): number; (callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: number[]) => U, initialValue: U): U; }; reduceRight: { (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number): number; (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number, initialValue: number): number; (callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: number[]) => U, initialValue: U): U; }; find: { (predicate: (value: number, index: number, obj: number[]) => value is S, thisArg?: any): S; (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any): number; }; findIndex: (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any) => number; fill: (value: number, start?: number, end?: number) => number[]; copyWithin: (target: number, start: number, end?: number) => number[]; entries: () => IterableIterator<[number, number]>; keys: () => IterableIterator; values: () => IterableIterator; includes: (searchElement: number, fromIndex?: number) => boolean; flatMap: (callback: (this: This, value: number, index: number, array: number[]) => U | readonly U[], thisArg?: This) => U[]; flat: (this: A, depth?: D) => FlatArray[]; [Symbol.iterator]: () => IterableIterator; readonly [Symbol.unscopables]: { [x: number]: boolean; length?: boolean; toString?: boolean; toLocaleString?: boolean; pop?: boolean; push?: boolean; concat?: boolean; join?: boolean; reverse?: boolean; shift?: boolean; slice?: boolean; sort?: boolean; splice?: boolean; unshift?: boolean; indexOf?: boolean; lastIndexOf?: boolean; every?: boolean; some?: boolean; forEach?: boolean; map?: boolean; filter?: boolean; reduce?: boolean; reduceRight?: boolean; find?: boolean; findIndex?: boolean; fill?: boolean; copyWithin?: boolean; entries?: boolean; keys?: boolean; values?: boolean; includes?: boolean; flatMap?: boolean; flat?: boolean; [Symbol.iterator]?: boolean; readonly [Symbol.unscopables]?: boolean; }; }' but required in type 'number[]'. +!!! error TS2741: Property 'length' is missing in type '{ [x: number]: number; toString: () => string; toLocaleString: { (): string; (locales: string | string[], options?: NumberFormatOptions & DateTimeFormatOptions): string; }; pop: () => number; push: (...items: number[]) => number; concat: { (...items: ConcatArray[]): number[]; (...items: (number | ConcatArray)[]): number[]; }; join: (separator?: string) => string; reverse: () => number[]; shift: () => number; slice: (start?: number, end?: number) => number[]; sort: (compareFn?: (a: number, b: number) => number) => number[]; splice: { (start: number, deleteCount?: number): number[]; (start: number, deleteCount: number, ...items: number[]): number[]; }; unshift: (...items: number[]) => number; indexOf: (searchElement: number, fromIndex?: number) => number; lastIndexOf: (searchElement: number, fromIndex?: number) => number; every: { (predicate: (value: number, index: number, array: number[]) => value is S, thisArg?: any): this is S[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): boolean; }; some: (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any) => boolean; forEach: (callbackfn: (value: number, index: number, array: number[]) => void, thisArg?: any) => void; map: (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[]; filter: { (predicate: (value: number, index: number, array: number[]) => value is S, thisArg?: any): S[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): number[]; }; reduce: { (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number): number; (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number, initialValue: number): number; (callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: number[]) => U, initialValue: U): U; }; reduceRight: { (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number): number; (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number, initialValue: number): number; (callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: number[]) => U, initialValue: U): U; }; find: { (predicate: (value: number, index: number, obj: number[]) => value is S, thisArg?: any): S; (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any): number; }; findIndex: (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any) => number; fill: (value: number, start?: number, end?: number) => number[]; copyWithin: (target: number, start: number, end?: number) => number[]; entries: () => IterableIterator<[number, number], void, undefined>; keys: () => IterableIterator; values: () => IterableIterator; includes: (searchElement: number, fromIndex?: number) => boolean; flatMap: (callback: (this: This, value: number, index: number, array: number[]) => U | readonly U[], thisArg?: This) => U[]; flat: (this: A, depth?: D) => FlatArray[]; [Symbol.iterator]: () => IterableIterator; readonly [Symbol.unscopables]: { [x: number]: boolean; length?: boolean; toString?: boolean; toLocaleString?: boolean; pop?: boolean; push?: boolean; concat?: boolean; join?: boolean; reverse?: boolean; shift?: boolean; slice?: boolean; sort?: boolean; splice?: boolean; unshift?: boolean; indexOf?: boolean; lastIndexOf?: boolean; every?: boolean; some?: boolean; forEach?: boolean; map?: boolean; filter?: boolean; reduce?: boolean; reduceRight?: boolean; find?: boolean; findIndex?: boolean; fill?: boolean; copyWithin?: boolean; entries?: boolean; keys?: boolean; values?: boolean; includes?: boolean; flatMap?: boolean; flat?: boolean; [Symbol.iterator]?: boolean; readonly [Symbol.unscopables]?: boolean; }; }' but required in type 'number[]'. !!! related TS2728 lib.es5.d.ts:--:--: 'length' is declared here. \ No newline at end of file diff --git a/tests/baselines/reference/mappedTypeWithAsClauseAndLateBoundProperty.types b/tests/baselines/reference/mappedTypeWithAsClauseAndLateBoundProperty.types index 263f5212c5853..e3106a655a532 100644 --- a/tests/baselines/reference/mappedTypeWithAsClauseAndLateBoundProperty.types +++ b/tests/baselines/reference/mappedTypeWithAsClauseAndLateBoundProperty.types @@ -6,14 +6,14 @@ declare let tgt2: number[]; > : ^^^^^^^^ declare let src2: { [K in keyof number[] as Exclude]: (number[])[K] }; ->src2 : { [x: number]: number; toString: () => string; toLocaleString: { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; }; pop: () => number; push: (...items: number[]) => number; concat: { (...items: ConcatArray[]): number[]; (...items: (number | ConcatArray)[]): number[]; }; join: (separator?: string) => string; reverse: () => number[]; shift: () => number; slice: (start?: number, end?: number) => number[]; sort: (compareFn?: (a: number, b: number) => number) => number[]; splice: { (start: number, deleteCount?: number): number[]; (start: number, deleteCount: number, ...items: number[]): number[]; }; unshift: (...items: number[]) => number; indexOf: (searchElement: number, fromIndex?: number) => number; lastIndexOf: (searchElement: number, fromIndex?: number) => number; every: { (predicate: (value: number, index: number, array: number[]) => value is S, thisArg?: any): this is S[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): boolean; }; some: (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any) => boolean; forEach: (callbackfn: (value: number, index: number, array: number[]) => void, thisArg?: any) => void; map: (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[]; filter: { (predicate: (value: number, index: number, array: number[]) => value is S_1, thisArg?: any): S_1[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): number[]; }; reduce: { (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number): number; (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number, initialValue: number): number; (callbackfn: (previousValue: U_1, currentValue: number, currentIndex: number, array: number[]) => U_1, initialValue: U_1): U_1; }; reduceRight: { (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number): number; (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number, initialValue: number): number; (callbackfn: (previousValue: U_2, currentValue: number, currentIndex: number, array: number[]) => U_2, initialValue: U_2): U_2; }; find: { (predicate: (value: number, index: number, obj: number[]) => value is S_2, thisArg?: any): S_2; (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any): number; }; findIndex: (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any) => number; fill: (value: number, start?: number, end?: number) => number[]; copyWithin: (target: number, start: number, end?: number) => number[]; entries: () => IterableIterator<[number, number]>; keys: () => IterableIterator; values: () => IterableIterator; includes: (searchElement: number, fromIndex?: number) => boolean; flatMap: (callback: (this: This, value: number, index: number, array: number[]) => U_3 | readonly U_3[], thisArg?: This) => U_3[]; flat: (this: A, depth?: D) => FlatArray[]; [Symbol.iterator]: () => IterableIterator; readonly [Symbol.unscopables]: { [x: number]: boolean; length?: boolean; toString?: boolean; toLocaleString?: boolean; pop?: boolean; push?: boolean; concat?: boolean; join?: boolean; reverse?: boolean; shift?: boolean; slice?: boolean; sort?: boolean; splice?: boolean; unshift?: boolean; indexOf?: boolean; lastIndexOf?: boolean; every?: boolean; some?: boolean; forEach?: boolean; map?: boolean; filter?: boolean; reduce?: boolean; reduceRight?: boolean; find?: boolean; findIndex?: boolean; fill?: boolean; copyWithin?: boolean; entries?: boolean; keys?: boolean; values?: boolean; includes?: boolean; flatMap?: boolean; flat?: boolean; [Symbol.iterator]?: boolean; readonly [Symbol.unscopables]?: boolean; }; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>src2 : { [x: number]: number; toString: () => string; toLocaleString: { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; }; pop: () => number; push: (...items: number[]) => number; concat: { (...items: ConcatArray[]): number[]; (...items: (number | ConcatArray)[]): number[]; }; join: (separator?: string) => string; reverse: () => number[]; shift: () => number; slice: (start?: number, end?: number) => number[]; sort: (compareFn?: (a: number, b: number) => number) => number[]; splice: { (start: number, deleteCount?: number): number[]; (start: number, deleteCount: number, ...items: number[]): number[]; }; unshift: (...items: number[]) => number; indexOf: (searchElement: number, fromIndex?: number) => number; lastIndexOf: (searchElement: number, fromIndex?: number) => number; every: { (predicate: (value: number, index: number, array: number[]) => value is S, thisArg?: any): this is S[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): boolean; }; some: (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any) => boolean; forEach: (callbackfn: (value: number, index: number, array: number[]) => void, thisArg?: any) => void; map: (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[]; filter: { (predicate: (value: number, index: number, array: number[]) => value is S_1, thisArg?: any): S_1[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): number[]; }; reduce: { (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number): number; (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number, initialValue: number): number; (callbackfn: (previousValue: U_1, currentValue: number, currentIndex: number, array: number[]) => U_1, initialValue: U_1): U_1; }; reduceRight: { (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number): number; (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number, initialValue: number): number; (callbackfn: (previousValue: U_2, currentValue: number, currentIndex: number, array: number[]) => U_2, initialValue: U_2): U_2; }; find: { (predicate: (value: number, index: number, obj: number[]) => value is S_2, thisArg?: any): S_2; (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any): number; }; findIndex: (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any) => number; fill: (value: number, start?: number, end?: number) => number[]; copyWithin: (target: number, start: number, end?: number) => number[]; entries: () => IterableIterator<[number, number], void, undefined>; keys: () => IterableIterator; values: () => IterableIterator; includes: (searchElement: number, fromIndex?: number) => boolean; flatMap: (callback: (this: This, value: number, index: number, array: number[]) => U_3 | readonly U_3[], thisArg?: This) => U_3[]; flat: (this: A, depth?: D) => FlatArray[]; [Symbol.iterator]: () => IterableIterator; readonly [Symbol.unscopables]: { [x: number]: boolean; length?: boolean; toString?: boolean; toLocaleString?: boolean; pop?: boolean; push?: boolean; concat?: boolean; join?: boolean; reverse?: boolean; shift?: boolean; slice?: boolean; sort?: boolean; splice?: boolean; unshift?: boolean; indexOf?: boolean; lastIndexOf?: boolean; every?: boolean; some?: boolean; forEach?: boolean; map?: boolean; filter?: boolean; reduce?: boolean; reduceRight?: boolean; find?: boolean; findIndex?: boolean; fill?: boolean; copyWithin?: boolean; entries?: boolean; keys?: boolean; values?: boolean; includes?: boolean; flatMap?: boolean; flat?: boolean; [Symbol.iterator]?: boolean; readonly [Symbol.unscopables]?: boolean; }; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ tgt2 = src2; // Should error ->tgt2 = src2 : { [x: number]: number; toString: () => string; toLocaleString: { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; }; pop: () => number; push: (...items: number[]) => number; concat: { (...items: ConcatArray[]): number[]; (...items: (number | ConcatArray)[]): number[]; }; join: (separator?: string) => string; reverse: () => number[]; shift: () => number; slice: (start?: number, end?: number) => number[]; sort: (compareFn?: (a: number, b: number) => number) => number[]; splice: { (start: number, deleteCount?: number): number[]; (start: number, deleteCount: number, ...items: number[]): number[]; }; unshift: (...items: number[]) => number; indexOf: (searchElement: number, fromIndex?: number) => number; lastIndexOf: (searchElement: number, fromIndex?: number) => number; every: { (predicate: (value: number, index: number, array: number[]) => value is S, thisArg?: any): this is S[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): boolean; }; some: (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any) => boolean; forEach: (callbackfn: (value: number, index: number, array: number[]) => void, thisArg?: any) => void; map: (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[]; filter: { (predicate: (value: number, index: number, array: number[]) => value is S_1, thisArg?: any): S_1[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): number[]; }; reduce: { (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number): number; (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number, initialValue: number): number; (callbackfn: (previousValue: U_1, currentValue: number, currentIndex: number, array: number[]) => U_1, initialValue: U_1): U_1; }; reduceRight: { (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number): number; (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number, initialValue: number): number; (callbackfn: (previousValue: U_2, currentValue: number, currentIndex: number, array: number[]) => U_2, initialValue: U_2): U_2; }; find: { (predicate: (value: number, index: number, obj: number[]) => value is S_2, thisArg?: any): S_2; (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any): number; }; findIndex: (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any) => number; fill: (value: number, start?: number, end?: number) => number[]; copyWithin: (target: number, start: number, end?: number) => number[]; entries: () => IterableIterator<[number, number]>; keys: () => IterableIterator; values: () => IterableIterator; includes: (searchElement: number, fromIndex?: number) => boolean; flatMap: (callback: (this: This, value: number, index: number, array: number[]) => U_3 | readonly U_3[], thisArg?: This) => U_3[]; flat: (this: A, depth?: D) => FlatArray[]; [Symbol.iterator]: () => IterableIterator; readonly [Symbol.unscopables]: { [x: number]: boolean; length?: boolean; toString?: boolean; toLocaleString?: boolean; pop?: boolean; push?: boolean; concat?: boolean; join?: boolean; reverse?: boolean; shift?: boolean; slice?: boolean; sort?: boolean; splice?: boolean; unshift?: boolean; indexOf?: boolean; lastIndexOf?: boolean; every?: boolean; some?: boolean; forEach?: boolean; map?: boolean; filter?: boolean; reduce?: boolean; reduceRight?: boolean; find?: boolean; findIndex?: boolean; fill?: boolean; copyWithin?: boolean; entries?: boolean; keys?: boolean; values?: boolean; includes?: boolean; flatMap?: boolean; flat?: boolean; [Symbol.iterator]?: boolean; readonly [Symbol.unscopables]?: boolean; }; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>tgt2 = src2 : { [x: number]: number; toString: () => string; toLocaleString: { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; }; pop: () => number; push: (...items: number[]) => number; concat: { (...items: ConcatArray[]): number[]; (...items: (number | ConcatArray)[]): number[]; }; join: (separator?: string) => string; reverse: () => number[]; shift: () => number; slice: (start?: number, end?: number) => number[]; sort: (compareFn?: (a: number, b: number) => number) => number[]; splice: { (start: number, deleteCount?: number): number[]; (start: number, deleteCount: number, ...items: number[]): number[]; }; unshift: (...items: number[]) => number; indexOf: (searchElement: number, fromIndex?: number) => number; lastIndexOf: (searchElement: number, fromIndex?: number) => number; every: { (predicate: (value: number, index: number, array: number[]) => value is S, thisArg?: any): this is S[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): boolean; }; some: (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any) => boolean; forEach: (callbackfn: (value: number, index: number, array: number[]) => void, thisArg?: any) => void; map: (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[]; filter: { (predicate: (value: number, index: number, array: number[]) => value is S_1, thisArg?: any): S_1[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): number[]; }; reduce: { (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number): number; (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number, initialValue: number): number; (callbackfn: (previousValue: U_1, currentValue: number, currentIndex: number, array: number[]) => U_1, initialValue: U_1): U_1; }; reduceRight: { (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number): number; (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number, initialValue: number): number; (callbackfn: (previousValue: U_2, currentValue: number, currentIndex: number, array: number[]) => U_2, initialValue: U_2): U_2; }; find: { (predicate: (value: number, index: number, obj: number[]) => value is S_2, thisArg?: any): S_2; (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any): number; }; findIndex: (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any) => number; fill: (value: number, start?: number, end?: number) => number[]; copyWithin: (target: number, start: number, end?: number) => number[]; entries: () => IterableIterator<[number, number], void, undefined>; keys: () => IterableIterator; values: () => IterableIterator; includes: (searchElement: number, fromIndex?: number) => boolean; flatMap: (callback: (this: This, value: number, index: number, array: number[]) => U_3 | readonly U_3[], thisArg?: This) => U_3[]; flat: (this: A, depth?: D) => FlatArray[]; [Symbol.iterator]: () => IterableIterator; readonly [Symbol.unscopables]: { [x: number]: boolean; length?: boolean; toString?: boolean; toLocaleString?: boolean; pop?: boolean; push?: boolean; concat?: boolean; join?: boolean; reverse?: boolean; shift?: boolean; slice?: boolean; sort?: boolean; splice?: boolean; unshift?: boolean; indexOf?: boolean; lastIndexOf?: boolean; every?: boolean; some?: boolean; forEach?: boolean; map?: boolean; filter?: boolean; reduce?: boolean; reduceRight?: boolean; find?: boolean; findIndex?: boolean; fill?: boolean; copyWithin?: boolean; entries?: boolean; keys?: boolean; values?: boolean; includes?: boolean; flatMap?: boolean; flat?: boolean; [Symbol.iterator]?: boolean; readonly [Symbol.unscopables]?: boolean; }; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >tgt2 : number[] > : ^^^^^^^^ ->src2 : { [x: number]: number; toString: () => string; toLocaleString: { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; }; pop: () => number; push: (...items: number[]) => number; concat: { (...items: ConcatArray[]): number[]; (...items: (number | ConcatArray)[]): number[]; }; join: (separator?: string) => string; reverse: () => number[]; shift: () => number; slice: (start?: number, end?: number) => number[]; sort: (compareFn?: (a: number, b: number) => number) => number[]; splice: { (start: number, deleteCount?: number): number[]; (start: number, deleteCount: number, ...items: number[]): number[]; }; unshift: (...items: number[]) => number; indexOf: (searchElement: number, fromIndex?: number) => number; lastIndexOf: (searchElement: number, fromIndex?: number) => number; every: { (predicate: (value: number, index: number, array: number[]) => value is S, thisArg?: any): this is S[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): boolean; }; some: (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any) => boolean; forEach: (callbackfn: (value: number, index: number, array: number[]) => void, thisArg?: any) => void; map: (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[]; filter: { (predicate: (value: number, index: number, array: number[]) => value is S_1, thisArg?: any): S_1[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): number[]; }; reduce: { (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number): number; (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number, initialValue: number): number; (callbackfn: (previousValue: U_1, currentValue: number, currentIndex: number, array: number[]) => U_1, initialValue: U_1): U_1; }; reduceRight: { (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number): number; (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number, initialValue: number): number; (callbackfn: (previousValue: U_2, currentValue: number, currentIndex: number, array: number[]) => U_2, initialValue: U_2): U_2; }; find: { (predicate: (value: number, index: number, obj: number[]) => value is S_2, thisArg?: any): S_2; (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any): number; }; findIndex: (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any) => number; fill: (value: number, start?: number, end?: number) => number[]; copyWithin: (target: number, start: number, end?: number) => number[]; entries: () => IterableIterator<[number, number]>; keys: () => IterableIterator; values: () => IterableIterator; includes: (searchElement: number, fromIndex?: number) => boolean; flatMap: (callback: (this: This, value: number, index: number, array: number[]) => U_3 | readonly U_3[], thisArg?: This) => U_3[]; flat: (this: A, depth?: D) => FlatArray[]; [Symbol.iterator]: () => IterableIterator; readonly [Symbol.unscopables]: { [x: number]: boolean; length?: boolean; toString?: boolean; toLocaleString?: boolean; pop?: boolean; push?: boolean; concat?: boolean; join?: boolean; reverse?: boolean; shift?: boolean; slice?: boolean; sort?: boolean; splice?: boolean; unshift?: boolean; indexOf?: boolean; lastIndexOf?: boolean; every?: boolean; some?: boolean; forEach?: boolean; map?: boolean; filter?: boolean; reduce?: boolean; reduceRight?: boolean; find?: boolean; findIndex?: boolean; fill?: boolean; copyWithin?: boolean; entries?: boolean; keys?: boolean; values?: boolean; includes?: boolean; flatMap?: boolean; flat?: boolean; [Symbol.iterator]?: boolean; readonly [Symbol.unscopables]?: boolean; }; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>src2 : { [x: number]: number; toString: () => string; toLocaleString: { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; }; pop: () => number; push: (...items: number[]) => number; concat: { (...items: ConcatArray[]): number[]; (...items: (number | ConcatArray)[]): number[]; }; join: (separator?: string) => string; reverse: () => number[]; shift: () => number; slice: (start?: number, end?: number) => number[]; sort: (compareFn?: (a: number, b: number) => number) => number[]; splice: { (start: number, deleteCount?: number): number[]; (start: number, deleteCount: number, ...items: number[]): number[]; }; unshift: (...items: number[]) => number; indexOf: (searchElement: number, fromIndex?: number) => number; lastIndexOf: (searchElement: number, fromIndex?: number) => number; every: { (predicate: (value: number, index: number, array: number[]) => value is S, thisArg?: any): this is S[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): boolean; }; some: (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any) => boolean; forEach: (callbackfn: (value: number, index: number, array: number[]) => void, thisArg?: any) => void; map: (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[]; filter: { (predicate: (value: number, index: number, array: number[]) => value is S_1, thisArg?: any): S_1[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): number[]; }; reduce: { (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number): number; (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number, initialValue: number): number; (callbackfn: (previousValue: U_1, currentValue: number, currentIndex: number, array: number[]) => U_1, initialValue: U_1): U_1; }; reduceRight: { (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number): number; (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number, initialValue: number): number; (callbackfn: (previousValue: U_2, currentValue: number, currentIndex: number, array: number[]) => U_2, initialValue: U_2): U_2; }; find: { (predicate: (value: number, index: number, obj: number[]) => value is S_2, thisArg?: any): S_2; (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any): number; }; findIndex: (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any) => number; fill: (value: number, start?: number, end?: number) => number[]; copyWithin: (target: number, start: number, end?: number) => number[]; entries: () => IterableIterator<[number, number], void, undefined>; keys: () => IterableIterator; values: () => IterableIterator; includes: (searchElement: number, fromIndex?: number) => boolean; flatMap: (callback: (this: This, value: number, index: number, array: number[]) => U_3 | readonly U_3[], thisArg?: This) => U_3[]; flat: (this: A, depth?: D) => FlatArray[]; [Symbol.iterator]: () => IterableIterator; readonly [Symbol.unscopables]: { [x: number]: boolean; length?: boolean; toString?: boolean; toLocaleString?: boolean; pop?: boolean; push?: boolean; concat?: boolean; join?: boolean; reverse?: boolean; shift?: boolean; slice?: boolean; sort?: boolean; splice?: boolean; unshift?: boolean; indexOf?: boolean; lastIndexOf?: boolean; every?: boolean; some?: boolean; forEach?: boolean; map?: boolean; filter?: boolean; reduce?: boolean; reduceRight?: boolean; find?: boolean; findIndex?: boolean; fill?: boolean; copyWithin?: boolean; entries?: boolean; keys?: boolean; values?: boolean; includes?: boolean; flatMap?: boolean; flat?: boolean; [Symbol.iterator]?: boolean; readonly [Symbol.unscopables]?: boolean; }; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/mappedTypeWithAsClauseAndLateBoundProperty2.js b/tests/baselines/reference/mappedTypeWithAsClauseAndLateBoundProperty2.js index d4b703bce8ee4..c715d7ee1cc3e 100644 --- a/tests/baselines/reference/mappedTypeWithAsClauseAndLateBoundProperty2.js +++ b/tests/baselines/reference/mappedTypeWithAsClauseAndLateBoundProperty2.js @@ -62,13 +62,13 @@ export declare const thing: { findIndex: (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any) => number; fill: (value: number, start?: number, end?: number) => number[]; copyWithin: (target: number, start: number, end?: number) => number[]; - entries: () => IterableIterator<[number, number]>; - keys: () => IterableIterator; - values: () => IterableIterator; + entries: () => IterableIterator<[number, number], void, undefined>; + keys: () => IterableIterator; + values: () => IterableIterator; includes: (searchElement: number, fromIndex?: number) => boolean; flatMap: (callback: (this: This, value: number, index: number, array: number[]) => U_3 | readonly U_3[], thisArg?: This) => U_3[]; flat: (this: A, depth?: D) => FlatArray[]; - [Symbol.iterator]: () => IterableIterator; + [Symbol.iterator]: () => IterableIterator; readonly [Symbol.unscopables]: { [x: number]: boolean; length?: boolean; @@ -171,13 +171,13 @@ mappedTypeWithAsClauseAndLateBoundProperty2.d.ts(27,118): error TS2526: A 'this' findIndex: (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any) => number; fill: (value: number, start?: number, end?: number) => number[]; copyWithin: (target: number, start: number, end?: number) => number[]; - entries: () => IterableIterator<[number, number]>; - keys: () => IterableIterator; - values: () => IterableIterator; + entries: () => IterableIterator<[number, number], void, undefined>; + keys: () => IterableIterator; + values: () => IterableIterator; includes: (searchElement: number, fromIndex?: number) => boolean; flatMap: (callback: (this: This, value: number, index: number, array: number[]) => U_3 | readonly U_3[], thisArg?: This) => U_3[]; flat: (this: A, depth?: D) => FlatArray[]; - [Symbol.iterator]: () => IterableIterator; + [Symbol.iterator]: () => IterableIterator; readonly [Symbol.unscopables]: { [x: number]: boolean; length?: boolean; diff --git a/tests/baselines/reference/mappedTypeWithAsClauseAndLateBoundProperty2.types b/tests/baselines/reference/mappedTypeWithAsClauseAndLateBoundProperty2.types index 249c5f28218c7..c089563a53fe7 100644 --- a/tests/baselines/reference/mappedTypeWithAsClauseAndLateBoundProperty2.types +++ b/tests/baselines/reference/mappedTypeWithAsClauseAndLateBoundProperty2.types @@ -2,11 +2,11 @@ === mappedTypeWithAsClauseAndLateBoundProperty2.ts === export const thing = (null as any as { [K in keyof number[] as Exclude]: (number[])[K] }); ->thing : { [x: number]: number; toString: () => string; toLocaleString: { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; }; pop: () => number; push: (...items: number[]) => number; concat: { (...items: ConcatArray[]): number[]; (...items: (number | ConcatArray)[]): number[]; }; join: (separator?: string) => string; reverse: () => number[]; shift: () => number; slice: (start?: number, end?: number) => number[]; sort: (compareFn?: (a: number, b: number) => number) => number[]; splice: { (start: number, deleteCount?: number): number[]; (start: number, deleteCount: number, ...items: number[]): number[]; }; unshift: (...items: number[]) => number; indexOf: (searchElement: number, fromIndex?: number) => number; lastIndexOf: (searchElement: number, fromIndex?: number) => number; every: { (predicate: (value: number, index: number, array: number[]) => value is S, thisArg?: any): this is S[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): boolean; }; some: (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any) => boolean; forEach: (callbackfn: (value: number, index: number, array: number[]) => void, thisArg?: any) => void; map: (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[]; filter: { (predicate: (value: number, index: number, array: number[]) => value is S_1, thisArg?: any): S_1[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): number[]; }; reduce: { (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number): number; (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number, initialValue: number): number; (callbackfn: (previousValue: U_1, currentValue: number, currentIndex: number, array: number[]) => U_1, initialValue: U_1): U_1; }; reduceRight: { (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number): number; (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number, initialValue: number): number; (callbackfn: (previousValue: U_2, currentValue: number, currentIndex: number, array: number[]) => U_2, initialValue: U_2): U_2; }; find: { (predicate: (value: number, index: number, obj: number[]) => value is S_2, thisArg?: any): S_2; (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any): number; }; findIndex: (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any) => number; fill: (value: number, start?: number, end?: number) => number[]; copyWithin: (target: number, start: number, end?: number) => number[]; entries: () => IterableIterator<[number, number]>; keys: () => IterableIterator; values: () => IterableIterator; includes: (searchElement: number, fromIndex?: number) => boolean; flatMap: (callback: (this: This, value: number, index: number, array: number[]) => U_3 | readonly U_3[], thisArg?: This) => U_3[]; flat: (this: A, depth?: D) => FlatArray[]; [Symbol.iterator]: () => IterableIterator; readonly [Symbol.unscopables]: { [x: number]: boolean; length?: boolean; toString?: boolean; toLocaleString?: boolean; pop?: boolean; push?: boolean; concat?: boolean; join?: boolean; reverse?: boolean; shift?: boolean; slice?: boolean; sort?: boolean; splice?: boolean; unshift?: boolean; indexOf?: boolean; lastIndexOf?: boolean; every?: boolean; some?: boolean; forEach?: boolean; map?: boolean; filter?: boolean; reduce?: boolean; reduceRight?: boolean; find?: boolean; findIndex?: boolean; fill?: boolean; copyWithin?: boolean; entries?: boolean; keys?: boolean; values?: boolean; includes?: boolean; flatMap?: boolean; flat?: boolean; [Symbol.iterator]?: boolean; readonly [Symbol.unscopables]?: boolean; }; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->(null as any as { [K in keyof number[] as Exclude]: (number[])[K] }) : { [x: number]: number; toString: () => string; toLocaleString: { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; }; pop: () => number; push: (...items: number[]) => number; concat: { (...items: ConcatArray[]): number[]; (...items: (number | ConcatArray)[]): number[]; }; join: (separator?: string) => string; reverse: () => number[]; shift: () => number; slice: (start?: number, end?: number) => number[]; sort: (compareFn?: (a: number, b: number) => number) => number[]; splice: { (start: number, deleteCount?: number): number[]; (start: number, deleteCount: number, ...items: number[]): number[]; }; unshift: (...items: number[]) => number; indexOf: (searchElement: number, fromIndex?: number) => number; lastIndexOf: (searchElement: number, fromIndex?: number) => number; every: { (predicate: (value: number, index: number, array: number[]) => value is S, thisArg?: any): this is S[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): boolean; }; some: (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any) => boolean; forEach: (callbackfn: (value: number, index: number, array: number[]) => void, thisArg?: any) => void; map: (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[]; filter: { (predicate: (value: number, index: number, array: number[]) => value is S_1, thisArg?: any): S_1[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): number[]; }; reduce: { (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number): number; (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number, initialValue: number): number; (callbackfn: (previousValue: U_1, currentValue: number, currentIndex: number, array: number[]) => U_1, initialValue: U_1): U_1; }; reduceRight: { (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number): number; (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number, initialValue: number): number; (callbackfn: (previousValue: U_2, currentValue: number, currentIndex: number, array: number[]) => U_2, initialValue: U_2): U_2; }; find: { (predicate: (value: number, index: number, obj: number[]) => value is S_2, thisArg?: any): S_2; (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any): number; }; findIndex: (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any) => number; fill: (value: number, start?: number, end?: number) => number[]; copyWithin: (target: number, start: number, end?: number) => number[]; entries: () => IterableIterator<[number, number]>; keys: () => IterableIterator; values: () => IterableIterator; includes: (searchElement: number, fromIndex?: number) => boolean; flatMap: (callback: (this: This, value: number, index: number, array: number[]) => U_3 | readonly U_3[], thisArg?: This) => U_3[]; flat: (this: A, depth?: D) => FlatArray[]; [Symbol.iterator]: () => IterableIterator; readonly [Symbol.unscopables]: { [x: number]: boolean; length?: boolean; toString?: boolean; toLocaleString?: boolean; pop?: boolean; push?: boolean; concat?: boolean; join?: boolean; reverse?: boolean; shift?: boolean; slice?: boolean; sort?: boolean; splice?: boolean; unshift?: boolean; indexOf?: boolean; lastIndexOf?: boolean; every?: boolean; some?: boolean; forEach?: boolean; map?: boolean; filter?: boolean; reduce?: boolean; reduceRight?: boolean; find?: boolean; findIndex?: boolean; fill?: boolean; copyWithin?: boolean; entries?: boolean; keys?: boolean; values?: boolean; includes?: boolean; flatMap?: boolean; flat?: boolean; [Symbol.iterator]?: boolean; readonly [Symbol.unscopables]?: boolean; }; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->null as any as { [K in keyof number[] as Exclude]: (number[])[K] } : { [x: number]: number; toString: () => string; toLocaleString: { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; }; pop: () => number; push: (...items: number[]) => number; concat: { (...items: ConcatArray[]): number[]; (...items: (number | ConcatArray)[]): number[]; }; join: (separator?: string) => string; reverse: () => number[]; shift: () => number; slice: (start?: number, end?: number) => number[]; sort: (compareFn?: (a: number, b: number) => number) => number[]; splice: { (start: number, deleteCount?: number): number[]; (start: number, deleteCount: number, ...items: number[]): number[]; }; unshift: (...items: number[]) => number; indexOf: (searchElement: number, fromIndex?: number) => number; lastIndexOf: (searchElement: number, fromIndex?: number) => number; every: { (predicate: (value: number, index: number, array: number[]) => value is S, thisArg?: any): this is S[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): boolean; }; some: (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any) => boolean; forEach: (callbackfn: (value: number, index: number, array: number[]) => void, thisArg?: any) => void; map: (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[]; filter: { (predicate: (value: number, index: number, array: number[]) => value is S_1, thisArg?: any): S_1[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): number[]; }; reduce: { (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number): number; (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number, initialValue: number): number; (callbackfn: (previousValue: U_1, currentValue: number, currentIndex: number, array: number[]) => U_1, initialValue: U_1): U_1; }; reduceRight: { (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number): number; (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number, initialValue: number): number; (callbackfn: (previousValue: U_2, currentValue: number, currentIndex: number, array: number[]) => U_2, initialValue: U_2): U_2; }; find: { (predicate: (value: number, index: number, obj: number[]) => value is S_2, thisArg?: any): S_2; (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any): number; }; findIndex: (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any) => number; fill: (value: number, start?: number, end?: number) => number[]; copyWithin: (target: number, start: number, end?: number) => number[]; entries: () => IterableIterator<[number, number]>; keys: () => IterableIterator; values: () => IterableIterator; includes: (searchElement: number, fromIndex?: number) => boolean; flatMap: (callback: (this: This, value: number, index: number, array: number[]) => U_3 | readonly U_3[], thisArg?: This) => U_3[]; flat: (this: A, depth?: D) => FlatArray[]; [Symbol.iterator]: () => IterableIterator; readonly [Symbol.unscopables]: { [x: number]: boolean; length?: boolean; toString?: boolean; toLocaleString?: boolean; pop?: boolean; push?: boolean; concat?: boolean; join?: boolean; reverse?: boolean; shift?: boolean; slice?: boolean; sort?: boolean; splice?: boolean; unshift?: boolean; indexOf?: boolean; lastIndexOf?: boolean; every?: boolean; some?: boolean; forEach?: boolean; map?: boolean; filter?: boolean; reduce?: boolean; reduceRight?: boolean; find?: boolean; findIndex?: boolean; fill?: boolean; copyWithin?: boolean; entries?: boolean; keys?: boolean; values?: boolean; includes?: boolean; flatMap?: boolean; flat?: boolean; [Symbol.iterator]?: boolean; readonly [Symbol.unscopables]?: boolean; }; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>thing : { [x: number]: number; toString: () => string; toLocaleString: { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; }; pop: () => number; push: (...items: number[]) => number; concat: { (...items: ConcatArray[]): number[]; (...items: (number | ConcatArray)[]): number[]; }; join: (separator?: string) => string; reverse: () => number[]; shift: () => number; slice: (start?: number, end?: number) => number[]; sort: (compareFn?: (a: number, b: number) => number) => number[]; splice: { (start: number, deleteCount?: number): number[]; (start: number, deleteCount: number, ...items: number[]): number[]; }; unshift: (...items: number[]) => number; indexOf: (searchElement: number, fromIndex?: number) => number; lastIndexOf: (searchElement: number, fromIndex?: number) => number; every: { (predicate: (value: number, index: number, array: number[]) => value is S, thisArg?: any): this is S[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): boolean; }; some: (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any) => boolean; forEach: (callbackfn: (value: number, index: number, array: number[]) => void, thisArg?: any) => void; map: (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[]; filter: { (predicate: (value: number, index: number, array: number[]) => value is S_1, thisArg?: any): S_1[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): number[]; }; reduce: { (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number): number; (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number, initialValue: number): number; (callbackfn: (previousValue: U_1, currentValue: number, currentIndex: number, array: number[]) => U_1, initialValue: U_1): U_1; }; reduceRight: { (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number): number; (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number, initialValue: number): number; (callbackfn: (previousValue: U_2, currentValue: number, currentIndex: number, array: number[]) => U_2, initialValue: U_2): U_2; }; find: { (predicate: (value: number, index: number, obj: number[]) => value is S_2, thisArg?: any): S_2; (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any): number; }; findIndex: (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any) => number; fill: (value: number, start?: number, end?: number) => number[]; copyWithin: (target: number, start: number, end?: number) => number[]; entries: () => IterableIterator<[number, number], void, undefined>; keys: () => IterableIterator; values: () => IterableIterator; includes: (searchElement: number, fromIndex?: number) => boolean; flatMap: (callback: (this: This, value: number, index: number, array: number[]) => U_3 | readonly U_3[], thisArg?: This) => U_3[]; flat: (this: A, depth?: D) => FlatArray[]; [Symbol.iterator]: () => IterableIterator; readonly [Symbol.unscopables]: { [x: number]: boolean; length?: boolean; toString?: boolean; toLocaleString?: boolean; pop?: boolean; push?: boolean; concat?: boolean; join?: boolean; reverse?: boolean; shift?: boolean; slice?: boolean; sort?: boolean; splice?: boolean; unshift?: boolean; indexOf?: boolean; lastIndexOf?: boolean; every?: boolean; some?: boolean; forEach?: boolean; map?: boolean; filter?: boolean; reduce?: boolean; reduceRight?: boolean; find?: boolean; findIndex?: boolean; fill?: boolean; copyWithin?: boolean; entries?: boolean; keys?: boolean; values?: boolean; includes?: boolean; flatMap?: boolean; flat?: boolean; [Symbol.iterator]?: boolean; readonly [Symbol.unscopables]?: boolean; }; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>(null as any as { [K in keyof number[] as Exclude]: (number[])[K] }) : { [x: number]: number; toString: () => string; toLocaleString: { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; }; pop: () => number; push: (...items: number[]) => number; concat: { (...items: ConcatArray[]): number[]; (...items: (number | ConcatArray)[]): number[]; }; join: (separator?: string) => string; reverse: () => number[]; shift: () => number; slice: (start?: number, end?: number) => number[]; sort: (compareFn?: (a: number, b: number) => number) => number[]; splice: { (start: number, deleteCount?: number): number[]; (start: number, deleteCount: number, ...items: number[]): number[]; }; unshift: (...items: number[]) => number; indexOf: (searchElement: number, fromIndex?: number) => number; lastIndexOf: (searchElement: number, fromIndex?: number) => number; every: { (predicate: (value: number, index: number, array: number[]) => value is S, thisArg?: any): this is S[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): boolean; }; some: (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any) => boolean; forEach: (callbackfn: (value: number, index: number, array: number[]) => void, thisArg?: any) => void; map: (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[]; filter: { (predicate: (value: number, index: number, array: number[]) => value is S_1, thisArg?: any): S_1[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): number[]; }; reduce: { (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number): number; (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number, initialValue: number): number; (callbackfn: (previousValue: U_1, currentValue: number, currentIndex: number, array: number[]) => U_1, initialValue: U_1): U_1; }; reduceRight: { (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number): number; (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number, initialValue: number): number; (callbackfn: (previousValue: U_2, currentValue: number, currentIndex: number, array: number[]) => U_2, initialValue: U_2): U_2; }; find: { (predicate: (value: number, index: number, obj: number[]) => value is S_2, thisArg?: any): S_2; (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any): number; }; findIndex: (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any) => number; fill: (value: number, start?: number, end?: number) => number[]; copyWithin: (target: number, start: number, end?: number) => number[]; entries: () => IterableIterator<[number, number], void, undefined>; keys: () => IterableIterator; values: () => IterableIterator; includes: (searchElement: number, fromIndex?: number) => boolean; flatMap: (callback: (this: This, value: number, index: number, array: number[]) => U_3 | readonly U_3[], thisArg?: This) => U_3[]; flat: (this: A, depth?: D) => FlatArray[]; [Symbol.iterator]: () => IterableIterator; readonly [Symbol.unscopables]: { [x: number]: boolean; length?: boolean; toString?: boolean; toLocaleString?: boolean; pop?: boolean; push?: boolean; concat?: boolean; join?: boolean; reverse?: boolean; shift?: boolean; slice?: boolean; sort?: boolean; splice?: boolean; unshift?: boolean; indexOf?: boolean; lastIndexOf?: boolean; every?: boolean; some?: boolean; forEach?: boolean; map?: boolean; filter?: boolean; reduce?: boolean; reduceRight?: boolean; find?: boolean; findIndex?: boolean; fill?: boolean; copyWithin?: boolean; entries?: boolean; keys?: boolean; values?: boolean; includes?: boolean; flatMap?: boolean; flat?: boolean; [Symbol.iterator]?: boolean; readonly [Symbol.unscopables]?: boolean; }; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>null as any as { [K in keyof number[] as Exclude]: (number[])[K] } : { [x: number]: number; toString: () => string; toLocaleString: { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; }; pop: () => number; push: (...items: number[]) => number; concat: { (...items: ConcatArray[]): number[]; (...items: (number | ConcatArray)[]): number[]; }; join: (separator?: string) => string; reverse: () => number[]; shift: () => number; slice: (start?: number, end?: number) => number[]; sort: (compareFn?: (a: number, b: number) => number) => number[]; splice: { (start: number, deleteCount?: number): number[]; (start: number, deleteCount: number, ...items: number[]): number[]; }; unshift: (...items: number[]) => number; indexOf: (searchElement: number, fromIndex?: number) => number; lastIndexOf: (searchElement: number, fromIndex?: number) => number; every: { (predicate: (value: number, index: number, array: number[]) => value is S, thisArg?: any): this is S[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): boolean; }; some: (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any) => boolean; forEach: (callbackfn: (value: number, index: number, array: number[]) => void, thisArg?: any) => void; map: (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[]; filter: { (predicate: (value: number, index: number, array: number[]) => value is S_1, thisArg?: any): S_1[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): number[]; }; reduce: { (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number): number; (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number, initialValue: number): number; (callbackfn: (previousValue: U_1, currentValue: number, currentIndex: number, array: number[]) => U_1, initialValue: U_1): U_1; }; reduceRight: { (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number): number; (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number, initialValue: number): number; (callbackfn: (previousValue: U_2, currentValue: number, currentIndex: number, array: number[]) => U_2, initialValue: U_2): U_2; }; find: { (predicate: (value: number, index: number, obj: number[]) => value is S_2, thisArg?: any): S_2; (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any): number; }; findIndex: (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any) => number; fill: (value: number, start?: number, end?: number) => number[]; copyWithin: (target: number, start: number, end?: number) => number[]; entries: () => IterableIterator<[number, number], void, undefined>; keys: () => IterableIterator; values: () => IterableIterator; includes: (searchElement: number, fromIndex?: number) => boolean; flatMap: (callback: (this: This, value: number, index: number, array: number[]) => U_3 | readonly U_3[], thisArg?: This) => U_3[]; flat: (this: A, depth?: D) => FlatArray[]; [Symbol.iterator]: () => IterableIterator; readonly [Symbol.unscopables]: { [x: number]: boolean; length?: boolean; toString?: boolean; toLocaleString?: boolean; pop?: boolean; push?: boolean; concat?: boolean; join?: boolean; reverse?: boolean; shift?: boolean; slice?: boolean; sort?: boolean; splice?: boolean; unshift?: boolean; indexOf?: boolean; lastIndexOf?: boolean; every?: boolean; some?: boolean; forEach?: boolean; map?: boolean; filter?: boolean; reduce?: boolean; reduceRight?: boolean; find?: boolean; findIndex?: boolean; fill?: boolean; copyWithin?: boolean; entries?: boolean; keys?: boolean; values?: boolean; includes?: boolean; flatMap?: boolean; flat?: boolean; [Symbol.iterator]?: boolean; readonly [Symbol.unscopables]?: boolean; }; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >null as any : any diff --git a/tests/baselines/reference/modularizeLibrary_NoErrorDuplicateLibOptions1.types b/tests/baselines/reference/modularizeLibrary_NoErrorDuplicateLibOptions1.types index 100c9693e234e..08383a9488bf0 100644 --- a/tests/baselines/reference/modularizeLibrary_NoErrorDuplicateLibOptions1.types +++ b/tests/baselines/reference/modularizeLibrary_NoErrorDuplicateLibOptions1.types @@ -58,14 +58,14 @@ m.clear(); // Using ES6 iterable m.keys(); ->m.keys() : IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^ ->m.keys : () => IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>m.keys() : IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>m.keys : () => IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >m : Map > : ^^^^^^^^^^^^^^^^^^^ ->keys : () => IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>keys : () => IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ // Using ES6 function function Baz() { } diff --git a/tests/baselines/reference/modularizeLibrary_NoErrorDuplicateLibOptions2.types b/tests/baselines/reference/modularizeLibrary_NoErrorDuplicateLibOptions2.types index a0f54835e1cca..cc6445dbbb9b3 100644 --- a/tests/baselines/reference/modularizeLibrary_NoErrorDuplicateLibOptions2.types +++ b/tests/baselines/reference/modularizeLibrary_NoErrorDuplicateLibOptions2.types @@ -58,14 +58,14 @@ m.clear(); // Using ES6 iterable m.keys(); ->m.keys() : IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^ ->m.keys : () => IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>m.keys() : IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>m.keys : () => IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >m : Map > : ^^^^^^^^^^^^^^^^^^^ ->keys : () => IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>keys : () => IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ // Using ES6 function function Baz() { } diff --git a/tests/baselines/reference/modularizeLibrary_TargetES5UsingES6Lib.types b/tests/baselines/reference/modularizeLibrary_TargetES5UsingES6Lib.types index b5e4e42f60fe4..c22f399af24fb 100644 --- a/tests/baselines/reference/modularizeLibrary_TargetES5UsingES6Lib.types +++ b/tests/baselines/reference/modularizeLibrary_TargetES5UsingES6Lib.types @@ -58,14 +58,14 @@ m.clear(); // Using ES6 iterable m.keys(); ->m.keys() : IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^ ->m.keys : () => IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>m.keys() : IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>m.keys : () => IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >m : Map > : ^^^^^^^^^^^^^^^^^^^ ->keys : () => IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>keys : () => IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ // Using ES6 function function Baz() { } diff --git a/tests/baselines/reference/modularizeLibrary_TargetES6UsingES6Lib.types b/tests/baselines/reference/modularizeLibrary_TargetES6UsingES6Lib.types index 1aae5089a1ab2..5a4319793f806 100644 --- a/tests/baselines/reference/modularizeLibrary_TargetES6UsingES6Lib.types +++ b/tests/baselines/reference/modularizeLibrary_TargetES6UsingES6Lib.types @@ -58,14 +58,14 @@ m.clear(); // Using ES6 iterable m.keys(); ->m.keys() : IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^ ->m.keys : () => IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>m.keys() : IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>m.keys : () => IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >m : Map > : ^^^^^^^^^^^^^^^^^^^ ->keys : () => IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>keys : () => IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ // Using ES6 function function Baz() { } diff --git a/tests/baselines/reference/partiallyNamedTuples2.types b/tests/baselines/reference/partiallyNamedTuples2.types index 479f55bfe129f..b968abfdf28c6 100644 --- a/tests/baselines/reference/partiallyNamedTuples2.types +++ b/tests/baselines/reference/partiallyNamedTuples2.types @@ -45,10 +45,10 @@ const id1 = "abc" as string; > : ^^^^^ const matches = x.get(id1); ->matches : Iterable<[id2: string, object]> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->x.get(id1) : Iterable<[id2: string, object]> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>matches : Iterable<[id2: string, object], void, undefined> +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>x.get(id1) : Iterable<[id2: string, object], void, undefined> +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x.get : (...key: Key) => GetResult<[id1: string, id2: string], Key, object> > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : MultiKeyMap<[id1: string, id2: string], object> diff --git a/tests/baselines/reference/regexMatchAll-esnext.types b/tests/baselines/reference/regexMatchAll-esnext.types index 13c2b3b1572af..80376a95c7404 100644 --- a/tests/baselines/reference/regexMatchAll-esnext.types +++ b/tests/baselines/reference/regexMatchAll-esnext.types @@ -2,12 +2,12 @@ === regexMatchAll-esnext.ts === const matches = /\w/g[Symbol.matchAll]("matchAll"); ->matches : IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->/\w/g[Symbol.matchAll]("matchAll") : IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->/\w/g[Symbol.matchAll] : (str: string) => IterableIterator -> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>matches : IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>/\w/g[Symbol.matchAll]("matchAll") : IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>/\w/g[Symbol.matchAll] : (str: string) => IterableIterator +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >/\w/g : RegExp > : ^^^^^^ >Symbol.matchAll : unique symbol @@ -26,8 +26,8 @@ const array = [...matches]; > : ^^^^^^^^^^^^^^^^^^ >...matches : RegExpMatchArray > : ^^^^^^^^^^^^^^^^ ->matches : IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>matches : IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ const { index, input } = array[0]; >index : number diff --git a/tests/baselines/reference/regexMatchAll.types b/tests/baselines/reference/regexMatchAll.types index 59bd4d730a162..9545aaa97d951 100644 --- a/tests/baselines/reference/regexMatchAll.types +++ b/tests/baselines/reference/regexMatchAll.types @@ -2,12 +2,12 @@ === regexMatchAll.ts === const matches = /\w/g[Symbol.matchAll]("matchAll"); ->matches : IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->/\w/g[Symbol.matchAll]("matchAll") : IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->/\w/g[Symbol.matchAll] : (str: string) => IterableIterator -> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>matches : IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>/\w/g[Symbol.matchAll]("matchAll") : IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>/\w/g[Symbol.matchAll] : (str: string) => IterableIterator +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >/\w/g : RegExp > : ^^^^^^ >Symbol.matchAll : unique symbol @@ -26,8 +26,8 @@ const array = [...matches]; > : ^^^^^^^^^^^^^^^^^^ >...matches : RegExpMatchArray > : ^^^^^^^^^^^^^^^^ ->matches : IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>matches : IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ const { index, input } = array[0]; >index : number diff --git a/tests/baselines/reference/stringMatchAll.types b/tests/baselines/reference/stringMatchAll.types index 422c849e95422..fa06485f18aca 100644 --- a/tests/baselines/reference/stringMatchAll.types +++ b/tests/baselines/reference/stringMatchAll.types @@ -2,16 +2,16 @@ === stringMatchAll.ts === const matches = "matchAll".matchAll(/\w/g); ->matches : IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->"matchAll".matchAll(/\w/g) : IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->"matchAll".matchAll : (regexp: RegExp) => IterableIterator -> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>matches : IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>"matchAll".matchAll(/\w/g) : IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>"matchAll".matchAll : (regexp: RegExp) => IterableIterator +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >"matchAll" : "matchAll" > : ^^^^^^^^^^ ->matchAll : (regexp: RegExp) => IterableIterator -> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>matchAll : (regexp: RegExp) => IterableIterator +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >/\w/g : RegExp > : ^^^^^^ @@ -22,8 +22,8 @@ const array = [...matches]; > : ^^^^^^^^^^^^^^^^^ >...matches : RegExpExecArray > : ^^^^^^^^^^^^^^^ ->matches : IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>matches : IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ const { index, input } = array[0]; >index : number diff --git a/tests/baselines/reference/typeArgumentInferenceApparentType1.types b/tests/baselines/reference/typeArgumentInferenceApparentType1.types index 6cd0ddccc5a74..b11aa130b6809 100644 --- a/tests/baselines/reference/typeArgumentInferenceApparentType1.types +++ b/tests/baselines/reference/typeArgumentInferenceApparentType1.types @@ -4,8 +4,8 @@ function method(iterable: Iterable): T { >method : (iterable: Iterable) => T > : ^ ^^ ^^ ^^^^^ ->iterable : Iterable -> : ^^^^^^^^^^^ +>iterable : Iterable +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ return; } diff --git a/tests/baselines/reference/typeArgumentInferenceApparentType2.types b/tests/baselines/reference/typeArgumentInferenceApparentType2.types index 011e6a920ee86..013ea15f95424 100644 --- a/tests/baselines/reference/typeArgumentInferenceApparentType2.types +++ b/tests/baselines/reference/typeArgumentInferenceApparentType2.types @@ -4,12 +4,12 @@ function method(iterable: Iterable): T { >method : (iterable: Iterable) => T > : ^ ^^ ^^ ^^^^^ ->iterable : Iterable -> : ^^^^^^^^^^^ +>iterable : Iterable +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ function inner>() { ->inner : >() => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>inner : >() => void +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ var u: U; >u : U diff --git a/tests/baselines/reference/typeGuardNarrowByMutableUntypedField.types b/tests/baselines/reference/typeGuardNarrowByMutableUntypedField.types index be91c4964d0ea..1cf7d5c0741cf 100644 --- a/tests/baselines/reference/typeGuardNarrowByMutableUntypedField.types +++ b/tests/baselines/reference/typeGuardNarrowByMutableUntypedField.types @@ -10,16 +10,16 @@ declare function hasOwnProperty

(target: {}, property: P): > : ^ declare const arrayLikeOrIterable: ArrayLike | Iterable; ->arrayLikeOrIterable : ArrayLike | Iterable -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>arrayLikeOrIterable : ArrayLike | Iterable +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ if (hasOwnProperty(arrayLikeOrIterable, 'length')) { >hasOwnProperty(arrayLikeOrIterable, 'length') : boolean > : ^^^^^^^ >hasOwnProperty :

(target: {}, property: P) => target is { [K in P]: unknown; } > : ^ ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->arrayLikeOrIterable : ArrayLike | Iterable -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>arrayLikeOrIterable : ArrayLike | Iterable +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >'length' : "length" > : ^^^^^^^^ diff --git a/tests/baselines/reference/typeGuardNarrowByUntypedField.types b/tests/baselines/reference/typeGuardNarrowByUntypedField.types index 9c4aa923e39a3..f24bb0dc3faf8 100644 --- a/tests/baselines/reference/typeGuardNarrowByUntypedField.types +++ b/tests/baselines/reference/typeGuardNarrowByUntypedField.types @@ -10,16 +10,16 @@ declare function hasOwnProperty

(target: {}, property: P): > : ^ declare const arrayLikeOrIterable: ArrayLike | Iterable; ->arrayLikeOrIterable : ArrayLike | Iterable -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>arrayLikeOrIterable : ArrayLike | Iterable +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ if (hasOwnProperty(arrayLikeOrIterable, 'length')) { >hasOwnProperty(arrayLikeOrIterable, 'length') : boolean > : ^^^^^^^ >hasOwnProperty :

(target: {}, property: P) => target is { readonly [K in P]: unknown; } > : ^ ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->arrayLikeOrIterable : ArrayLike | Iterable -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>arrayLikeOrIterable : ArrayLike | Iterable +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >'length' : "length" > : ^^^^^^^^ diff --git a/tests/baselines/reference/types.forAwait.es2018.1.types b/tests/baselines/reference/types.forAwait.es2018.1.types index 21947f91db849..c083b202dcec0 100644 --- a/tests/baselines/reference/types.forAwait.es2018.1.types +++ b/tests/baselines/reference/types.forAwait.es2018.1.types @@ -2,16 +2,16 @@ === types.forAwait.es2018.1.ts === declare const asyncIterable: AsyncIterable; ->asyncIterable : AsyncIterable -> : ^^^^^^^^^^^^^^^^^^^^^ +>asyncIterable : AsyncIterable +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ declare const iterable: Iterable; ->iterable : Iterable -> : ^^^^^^^^^^^^^^^^ +>iterable : Iterable +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ declare const iterableOfPromise: Iterable>; ->iterableOfPromise : Iterable> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +>iterableOfPromise : Iterable, void, undefined> +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ async function f1() { >f1 : () => Promise @@ -24,38 +24,38 @@ async function f1() { for await (const x of asyncIterable) { >x : number > : ^^^^^^ ->asyncIterable : AsyncIterable -> : ^^^^^^^^^^^^^^^^^^^^^ +>asyncIterable : AsyncIterable +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ } for await (const x of iterable) { >x : number > : ^^^^^^ ->iterable : Iterable -> : ^^^^^^^^^^^^^^^^ +>iterable : Iterable +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ } for await (const x of iterableOfPromise) { >x : number > : ^^^^^^ ->iterableOfPromise : Iterable> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +>iterableOfPromise : Iterable, void, undefined> +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ } for await (y of asyncIterable) { >y : number > : ^^^^^^ ->asyncIterable : AsyncIterable -> : ^^^^^^^^^^^^^^^^^^^^^ +>asyncIterable : AsyncIterable +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ } for await (y of iterable) { >y : number > : ^^^^^^ ->iterable : Iterable -> : ^^^^^^^^^^^^^^^^ +>iterable : Iterable +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ } for await (y of iterableOfPromise) { >y : number > : ^^^^^^ ->iterableOfPromise : Iterable> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +>iterableOfPromise : Iterable, void, undefined> +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ } } async function * f2() { @@ -69,38 +69,38 @@ async function * f2() { for await (const x of asyncIterable) { >x : number > : ^^^^^^ ->asyncIterable : AsyncIterable -> : ^^^^^^^^^^^^^^^^^^^^^ +>asyncIterable : AsyncIterable +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ } for await (const x of iterable) { >x : number > : ^^^^^^ ->iterable : Iterable -> : ^^^^^^^^^^^^^^^^ +>iterable : Iterable +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ } for await (const x of iterableOfPromise) { >x : number > : ^^^^^^ ->iterableOfPromise : Iterable> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +>iterableOfPromise : Iterable, void, undefined> +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ } for await (y of asyncIterable) { >y : number > : ^^^^^^ ->asyncIterable : AsyncIterable -> : ^^^^^^^^^^^^^^^^^^^^^ +>asyncIterable : AsyncIterable +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ } for await (y of iterable) { >y : number > : ^^^^^^ ->iterable : Iterable -> : ^^^^^^^^^^^^^^^^ +>iterable : Iterable +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ } for await (y of iterableOfPromise) { >y : number > : ^^^^^^ ->iterableOfPromise : Iterable> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +>iterableOfPromise : Iterable, void, undefined> +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ } } diff --git a/tests/baselines/reference/types.forAwait.es2018.2.errors.txt b/tests/baselines/reference/types.forAwait.es2018.2.errors.txt index 77422b5d728da..9cd543bfae8b7 100644 --- a/tests/baselines/reference/types.forAwait.es2018.2.errors.txt +++ b/tests/baselines/reference/types.forAwait.es2018.2.errors.txt @@ -2,8 +2,8 @@ types.forAwait.es2018.2.ts(6,27): error TS2504: Type '{}' must have a '[Symbol.a types.forAwait.es2018.2.ts(8,21): error TS2504: Type '{}' must have a '[Symbol.asyncIterator]()' method that returns an async iterator. types.forAwait.es2018.2.ts(10,16): error TS2322: Type 'number' is not assignable to type 'string'. types.forAwait.es2018.2.ts(12,16): error TS2322: Type 'number' is not assignable to type 'string'. -types.forAwait.es2018.2.ts(14,21): error TS2488: Type 'AsyncIterable' must have a '[Symbol.iterator]()' method that returns an iterator. -types.forAwait.es2018.2.ts(16,15): error TS2488: Type 'AsyncIterable' must have a '[Symbol.iterator]()' method that returns an iterator. +types.forAwait.es2018.2.ts(14,21): error TS2488: Type 'AsyncIterable' must have a '[Symbol.iterator]()' method that returns an iterator. +types.forAwait.es2018.2.ts(16,15): error TS2488: Type 'AsyncIterable' must have a '[Symbol.iterator]()' method that returns an iterator. ==== types.forAwait.es2018.2.ts (6 errors) ==== @@ -30,11 +30,11 @@ types.forAwait.es2018.2.ts(16,15): error TS2488: Type 'AsyncIterable' mu } for (const x of asyncIterable) { ~~~~~~~~~~~~~ -!!! error TS2488: Type 'AsyncIterable' must have a '[Symbol.iterator]()' method that returns an iterator. +!!! error TS2488: Type 'AsyncIterable' must have a '[Symbol.iterator]()' method that returns an iterator. } for (y of asyncIterable) { ~~~~~~~~~~~~~ -!!! error TS2488: Type 'AsyncIterable' must have a '[Symbol.iterator]()' method that returns an iterator. +!!! error TS2488: Type 'AsyncIterable' must have a '[Symbol.iterator]()' method that returns an iterator. } } \ No newline at end of file diff --git a/tests/baselines/reference/types.forAwait.es2018.2.types b/tests/baselines/reference/types.forAwait.es2018.2.types index 47fbd152d190d..1f717a99349c2 100644 --- a/tests/baselines/reference/types.forAwait.es2018.2.types +++ b/tests/baselines/reference/types.forAwait.es2018.2.types @@ -2,12 +2,12 @@ === types.forAwait.es2018.2.ts === declare const asyncIterable: AsyncIterable; ->asyncIterable : AsyncIterable -> : ^^^^^^^^^^^^^^^^^^^^^ +>asyncIterable : AsyncIterable +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ declare const iterable: Iterable; ->iterable : Iterable -> : ^^^^^^^^^^^^^^^^ +>iterable : Iterable +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ async function f() { >f : () => Promise @@ -36,26 +36,26 @@ async function f() { for await (z of asyncIterable) { >z : string > : ^^^^^^ ->asyncIterable : AsyncIterable -> : ^^^^^^^^^^^^^^^^^^^^^ +>asyncIterable : AsyncIterable +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ } for await (z of iterable) { >z : string > : ^^^^^^ ->iterable : Iterable -> : ^^^^^^^^^^^^^^^^ +>iterable : Iterable +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ } for (const x of asyncIterable) { >x : any > : ^^^ ->asyncIterable : AsyncIterable -> : ^^^^^^^^^^^^^^^^^^^^^ +>asyncIterable : AsyncIterable +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ } for (y of asyncIterable) { >y : number > : ^^^^^^ ->asyncIterable : AsyncIterable -> : ^^^^^^^^^^^^^^^^^^^^^ +>asyncIterable : AsyncIterable +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ } } diff --git a/tests/baselines/reference/unionAndIntersectionInference3.types b/tests/baselines/reference/unionAndIntersectionInference3.types index 4af1ee052624d..7a5a5fa74a165 100644 --- a/tests/baselines/reference/unionAndIntersectionInference3.types +++ b/tests/baselines/reference/unionAndIntersectionInference3.types @@ -150,8 +150,8 @@ g2 = g1; declare function foo1(obj: string[] & Iterable): T; >foo1 : (obj: string[] & Iterable) => T > : ^ ^^ ^^ ^^^^^ ->obj : string[] & Iterable -> : ^^^^^^^^^^^^^^^^^^^^^^ +>obj : string[] & Iterable +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ declare function foo2(obj: string[] & T): T; >foo2 : (obj: string[] & T) => T From 7aa2281b10407666be6dc25dacc1601ecf7abec1 Mon Sep 17 00:00:00 2001 From: Ron Buckton Date: Thu, 18 Apr 2024 16:53:27 -0400 Subject: [PATCH 03/17] Fix lint --- src/compiler/checker.ts | 10 ++-------- src/compiler/commandLineParser.ts | 2 +- 2 files changed, 3 insertions(+), 9 deletions(-) diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index a22e7900f5243..d26a1959cb0be 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -2123,7 +2123,6 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker { var anyIterationTypes = createIterationTypes(anyType, anyType, anyType); var anyIterationTypesExceptNext = createIterationTypes(anyType, anyType, unknownType); - var defaultIterationTypes = createIterationTypes(neverType, anyType, undefinedType); // default iteration types for `Iterator`. var asyncIterationTypesResolver: IterationTypesResolver = { iterableCacheKey: "iterationTypesOfAsyncIterable", @@ -43763,12 +43762,6 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker { return getCachedIterationTypes(type, resolver.iterableCacheKey); } - function getIterationTypesOfGlobalIterableType(globalType: Type, resolver: IterationTypesResolver) { - const globalIterationTypes = getIterationTypesOfIterableCached(globalType, resolver) || - getIterationTypesOfIterableSlow(globalType, resolver, /*errorNode*/ undefined, /*errorOutputContainer*/ undefined, /*noCache*/ false); - return globalIterationTypes === noIterationTypes ? defaultIterationTypes : globalIterationTypes; - } - /** * Gets the *yield*, *return*, and *next* types of an `Iterable`-like or `AsyncIterable`-like * type from from common heuristics. @@ -43790,7 +43783,8 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker { if ( isReferenceToType(type, resolver.getGlobalIterableType(/*reportErrors*/ false)) || isReferenceToType(type, resolver.getGlobalIterableIteratorType(/*reportErrors*/ false)) || - isReferenceToType(type, resolver.getGlobalGeneratorType(/*reportErrors*/ false))) { + isReferenceToType(type, resolver.getGlobalGeneratorType(/*reportErrors*/ false)) + ) { const [yieldType, returnType, nextType] = getTypeArguments(type as GenericType); return setCachedIterationTypes(type, resolver.iterableCacheKey, createIterationTypes(resolver.resolveIterationType(yieldType, /*errorNode*/ undefined) || yieldType, resolver.resolveIterationType(returnType, /*errorNode*/ undefined) || returnType, nextType)); } diff --git a/src/compiler/commandLineParser.ts b/src/compiler/commandLineParser.ts index b790ed08fbe08..d9bf86f8e201e 100644 --- a/src/compiler/commandLineParser.ts +++ b/src/compiler/commandLineParser.ts @@ -3639,7 +3639,7 @@ export function convertJsonOption( convertJsonOption(opt.element, value, basePath, errors, propertyAssignment, valueExpression, sourceFile); } else if (!isString(opt.type)) { - return convertJsonOptionOfCustomType(opt as CommandLineOptionOfCustomType, value as string, errors, valueExpression, sourceFile); + return convertJsonOptionOfCustomType(opt, value as string, errors, valueExpression, sourceFile); } const validatedValue = validateJsonOptionValue(opt, value, errors, valueExpression, sourceFile); return isNullOrUndefined(validatedValue) ? validatedValue : normalizeNonListOptionValue(opt, basePath, validatedValue); From be600a8db7b24593bfb9b75ce4c204766e20e129 Mon Sep 17 00:00:00 2001 From: Ron Buckton Date: Thu, 18 Apr 2024 16:54:59 -0400 Subject: [PATCH 04/17] Revert incorrect lint fix --- src/compiler/commandLineParser.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/compiler/commandLineParser.ts b/src/compiler/commandLineParser.ts index d9bf86f8e201e..b790ed08fbe08 100644 --- a/src/compiler/commandLineParser.ts +++ b/src/compiler/commandLineParser.ts @@ -3639,7 +3639,7 @@ export function convertJsonOption( convertJsonOption(opt.element, value, basePath, errors, propertyAssignment, valueExpression, sourceFile); } else if (!isString(opt.type)) { - return convertJsonOptionOfCustomType(opt, value as string, errors, valueExpression, sourceFile); + return convertJsonOptionOfCustomType(opt as CommandLineOptionOfCustomType, value as string, errors, valueExpression, sourceFile); } const validatedValue = validateJsonOptionValue(opt, value, errors, valueExpression, sourceFile); return isNullOrUndefined(validatedValue) ? validatedValue : normalizeNonListOptionValue(opt, basePath, validatedValue); From 8182bfc3c44867ce35692fcf50cfe688a1aaacaa Mon Sep 17 00:00:00 2001 From: Ron Buckton Date: Thu, 18 Apr 2024 17:37:44 -0400 Subject: [PATCH 05/17] Fix failing tests --- src/compiler/checker.ts | 2 +- tests/baselines/reference/emitArrowFunctionES6.types | 8 ++++---- .../reference/generatorReturnTypeFallback.3.errors.txt | 10 ---------- .../reference/generatorReturnTypeFallback.3.symbols | 4 +--- .../reference/generatorReturnTypeFallback.3.types | 7 ++----- tests/baselines/reference/jsxChildrenWrongType.types | 4 ++-- .../reference/types.forAwait.es2018.2.errors.txt | 2 ++ .../generators/generatorReturnTypeFallback.3.ts | 2 -- 8 files changed, 12 insertions(+), 27 deletions(-) delete mode 100644 tests/baselines/reference/generatorReturnTypeFallback.3.errors.txt diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index d26a1959cb0be..34469a4d3792a 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -37202,7 +37202,7 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker { } // The global Generator type doesn't exist, so report an error - resolver.getGlobalGeneratorType(/*reportErrors*/ true); + resolver.getGlobalIterableIteratorType(/*reportErrors*/ true); return emptyObjectType; } diff --git a/tests/baselines/reference/emitArrowFunctionES6.types b/tests/baselines/reference/emitArrowFunctionES6.types index 472ea87102f67..3925aeeaf3766 100644 --- a/tests/baselines/reference/emitArrowFunctionES6.types +++ b/tests/baselines/reference/emitArrowFunctionES6.types @@ -79,10 +79,10 @@ var p1 = ([a]) => { }; > : ^^^ var p2 = ([...a]) => { }; ->p2 : ([...a]: Iterable) => void -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^ ->([...a]) => { } : ([...a]: Iterable) => void -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^ +>p2 : ([...a]: Iterable) => void +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>([...a]) => { } : ([...a]: Iterable) => void +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >a : any[] > : ^^^^^ diff --git a/tests/baselines/reference/generatorReturnTypeFallback.3.errors.txt b/tests/baselines/reference/generatorReturnTypeFallback.3.errors.txt deleted file mode 100644 index de2135daa6f7d..0000000000000 --- a/tests/baselines/reference/generatorReturnTypeFallback.3.errors.txt +++ /dev/null @@ -1,10 +0,0 @@ -error TS2318: Cannot find global type 'Generator'. - - -!!! error TS2318: Cannot find global type 'Generator'. -==== 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 41d807d743be1..ce94c240f0c16 100644 --- a/tests/baselines/reference/generatorReturnTypeFallback.3.symbols +++ b/tests/baselines/reference/generatorReturnTypeFallback.3.symbols @@ -1,11 +1,9 @@ //// [tests/cases/conformance/generators/generatorReturnTypeFallback.3.ts] //// === 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, 1, 9)) } diff --git a/tests/baselines/reference/generatorReturnTypeFallback.3.types b/tests/baselines/reference/generatorReturnTypeFallback.3.types index 54c5039049bea..2bc88213fc3fa 100644 --- a/tests/baselines/reference/generatorReturnTypeFallback.3.types +++ b/tests/baselines/reference/generatorReturnTypeFallback.3.types @@ -1,17 +1,14 @@ //// [tests/cases/conformance/generators/generatorReturnTypeFallback.3.ts] //// === 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 : () => {} -> : ^^^^^^^^ +>f : () => IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ const x: string = yield 1; >x : string > : ^^^^^^ >yield 1 : any -> : ^^^ >1 : 1 > : ^ } diff --git a/tests/baselines/reference/jsxChildrenWrongType.types b/tests/baselines/reference/jsxChildrenWrongType.types index b5fa7dbf6194c..c59104fb66564 100644 --- a/tests/baselines/reference/jsxChildrenWrongType.types +++ b/tests/baselines/reference/jsxChildrenWrongType.types @@ -11,8 +11,8 @@ Instantiation count: 1,000 interface PropsType { children: [string, number?] | Iterable; ->children : [string, number?] | Iterable -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>children : [string, number?] | Iterable +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ } declare class Foo extends React.Component {} >Foo : Foo diff --git a/tests/baselines/reference/types.forAwait.es2018.2.errors.txt b/tests/baselines/reference/types.forAwait.es2018.2.errors.txt index 9cd543bfae8b7..79a4e19131655 100644 --- a/tests/baselines/reference/types.forAwait.es2018.2.errors.txt +++ b/tests/baselines/reference/types.forAwait.es2018.2.errors.txt @@ -31,10 +31,12 @@ types.forAwait.es2018.2.ts(16,15): error TS2488: Type 'AsyncIterable' must have a '[Symbol.iterator]()' method that returns an iterator. +!!! related TS2773 types.forAwait.es2018.2.ts:14:21: Did you forget to use 'await'? } for (y of asyncIterable) { ~~~~~~~~~~~~~ !!! error TS2488: Type 'AsyncIterable' must have a '[Symbol.iterator]()' method that returns an iterator. +!!! related TS2773 types.forAwait.es2018.2.ts:16:15: Did you forget to use 'await'? } } \ No newline at end of file diff --git a/tests/cases/conformance/generators/generatorReturnTypeFallback.3.ts b/tests/cases/conformance/generators/generatorReturnTypeFallback.3.ts index 388d8bee7ee3b..da84940743db0 100644 --- a/tests/cases/conformance/generators/generatorReturnTypeFallback.3.ts +++ b/tests/cases/conformance/generators/generatorReturnTypeFallback.3.ts @@ -3,8 +3,6 @@ // @noemit: true // @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 From ad451d13d3046bc04b20c4ee858d6218a69da99e Mon Sep 17 00:00:00 2001 From: Ron Buckton Date: Fri, 19 Apr 2024 10:57:36 -0400 Subject: [PATCH 06/17] Elide type arguments that match defaults for inferred Iterable et al --- src/compiler/checker.ts | 31 +- .../argumentsObjectIterator02_ES6.types | 16 +- ...tsSpreadRestIterables(target=esnext).types | 32 +-- tests/baselines/reference/arrayFrom.types | 60 ++-- .../reference/bigintWithLib.errors.txt | 16 +- .../complexRecursiveCollections.types | 264 +++++++++--------- .../contextualTypeIterableUnions.types | 16 +- ...ructuredLateBoundNameHasCorrectTypes.types | 8 +- ...y2(exactoptionalpropertytypes=false).types | 8 +- ...ty2(exactoptionalpropertytypes=true).types | 8 +- .../dissallowSymbolAsWeakType.errors.txt | 16 +- .../reference/emitArrowFunctionES6.types | 8 +- .../esNextWeakRefs_IterableWeakMap.types | 12 +- tests/baselines/reference/for-of12.types | 12 +- tests/baselines/reference/for-of13.types | 12 +- tests/baselines/reference/for-of39.errors.txt | 8 +- tests/baselines/reference/for-of57.types | 8 +- .../reference/forAwaitForUnion.types | 8 +- .../reference/generatorOverloads1.types | 12 +- .../reference/generatorOverloads2.types | 12 +- .../reference/generatorOverloads3.types | 12 +- .../reference/generatorOverloads4.types | 12 +- .../reference/generatorOverloads5.types | 12 +- .../generatorReturnTypeInference.types | 8 +- ...eneratorReturnTypeInferenceNonStrict.types | 8 +- .../reference/generatorTypeCheck25.errors.txt | 8 +- .../reference/generatorTypeCheck31.errors.txt | 8 +- .../reference/generatorTypeCheck62.errors.txt | 16 +- .../reference/generatorTypeCheck62.types | 32 +-- .../reference/generatorTypeCheck63.errors.txt | 24 +- .../reference/generatorTypeCheck63.types | 40 +-- .../indexSignatureInOtherFile.errors.txt | 4 +- .../indexSignatureInOtherFile1.errors.txt | 4 +- ...indirectGlobalSymbolPartOfObjectType.types | 4 +- .../iterableArrayPattern28.errors.txt | 8 +- .../reference/iterableContextualTyping1.types | 4 +- .../reference/iteratorSpreadInArray11.types | 8 +- .../reference/jsxChildrenWrongType.types | 4 +- .../baselines/reference/mapConstructor.types | 24 +- ...ithAsClauseAndLateBoundProperty.errors.txt | 4 +- ...TypeWithAsClauseAndLateBoundProperty.types | 12 +- ...edTypeWithAsClauseAndLateBoundProperty2.js | 16 +- ...ypeWithAsClauseAndLateBoundProperty2.types | 12 +- ...eLibrary_NoErrorDuplicateLibOptions1.types | 12 +- ...eLibrary_NoErrorDuplicateLibOptions2.types | 12 +- ...dularizeLibrary_TargetES5UsingES6Lib.types | 12 +- ...dularizeLibrary_TargetES6UsingES6Lib.types | 12 +- .../reference/partiallyNamedTuples2.types | 8 +- .../reference/regexMatchAll-esnext.types | 16 +- tests/baselines/reference/regexMatchAll.types | 16 +- .../baselines/reference/stringMatchAll.types | 20 +- .../typeArgumentInferenceApparentType1.types | 4 +- .../typeArgumentInferenceApparentType2.types | 8 +- ...typeGuardNarrowByMutableUntypedField.types | 8 +- .../typeGuardNarrowByUntypedField.types | 8 +- .../types.asyncGenerators.es2018.2.errors.txt | 56 ++-- .../reference/types.forAwait.es2018.1.types | 60 ++-- .../types.forAwait.es2018.2.errors.txt | 8 +- .../reference/types.forAwait.es2018.2.types | 24 +- .../unionAndIntersectionInference3.types | 4 +- 60 files changed, 584 insertions(+), 555 deletions(-) diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 34469a4d3792a..cf382ccc9d461 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -6830,7 +6830,36 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker { } let typeArgumentNodes: readonly TypeNode[] | undefined; if (typeArguments.length > 0) { - const typeParameterCount = (type.target.typeParameters || emptyArray).length; + let typeParameterCount: number; + if (type.target.typeParameters) { + typeParameterCount = Math.min(type.target.typeParameters.length, typeArguments.length); + + // Maybe we should do this for more types, but for now we only elide type arguments that are + // identical to their associated type parameters' defaults for `Iterable`, `IterableIterator`, + // `AsyncIterable`, and `AsyncIterableIterator` to provide backwards-compatible .d.ts emit due + // to each now having three type parameters instead of only one. + if ( + isReferenceToType(type, getGlobalIterableType(/*reportErrors*/ false)) || + isReferenceToType(type, getGlobalIterableIteratorType(/*reportErrors*/ false)) || + isReferenceToType(type, getGlobalAsyncIterableType(/*reportErrors*/ false)) || + isReferenceToType(type, getGlobalAsyncIterableIteratorType(/*reportErrors*/ false)) + ) { + if (!type.node || !isTypeReferenceNode(type.node) || !type.node.typeArguments || type.node.typeArguments.length < typeParameterCount) { + while (typeParameterCount > 0) { + const typeArgument = typeArguments[typeParameterCount - 1]; + const defaultType = getDefaultFromTypeParameter(type.target.typeParameters[typeParameterCount - 1]); + if (!defaultType || !isTypeIdenticalTo(typeArgument, defaultType)) { + break; + } + typeParameterCount--; + } + } + } + } + else { + typeParameterCount = 0; + } + typeArgumentNodes = mapToTypeNodes(typeArguments.slice(i, typeParameterCount), context); } const flags = context.flags; diff --git a/tests/baselines/reference/argumentsObjectIterator02_ES6.types b/tests/baselines/reference/argumentsObjectIterator02_ES6.types index a11fa626be0e9..eec7d223b7c9b 100644 --- a/tests/baselines/reference/argumentsObjectIterator02_ES6.types +++ b/tests/baselines/reference/argumentsObjectIterator02_ES6.types @@ -12,10 +12,10 @@ function doubleAndReturnAsArray(x: number, y: number, z: number): [number, numbe > : ^^^^^^ let blah = arguments[Symbol.iterator]; ->blah : () => IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->arguments[Symbol.iterator] : () => IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>blah : () => IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>arguments[Symbol.iterator] : () => IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >arguments : IArguments > : ^^^^^^^^^^ >Symbol.iterator : unique symbol @@ -33,10 +33,10 @@ function doubleAndReturnAsArray(x: number, y: number, z: number): [number, numbe for (let arg of blah()) { >arg : any ->blah() : IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->blah : () => IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>blah() : IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^ +>blah : () => IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ result.push(arg + arg); >result.push(arg + arg) : number diff --git a/tests/baselines/reference/argumentsSpreadRestIterables(target=esnext).types b/tests/baselines/reference/argumentsSpreadRestIterables(target=esnext).types index 0c269a71f3f7a..c27ee50812081 100644 --- a/tests/baselines/reference/argumentsSpreadRestIterables(target=esnext).types +++ b/tests/baselines/reference/argumentsSpreadRestIterables(target=esnext).types @@ -2,8 +2,8 @@ === argumentsSpreadRestIterables.tsx === declare const itNum: Iterable ->itNum : Iterable -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>itNum : Iterable +> : ^^^^^^^^^^^^^^^^ ;(function(...rest) {})(...itNum) >(function(...rest) {})(...itNum) : void @@ -16,8 +16,8 @@ declare const itNum: Iterable > : ^^^^^^^^ >...itNum : number > : ^^^^^^ ->itNum : Iterable -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>itNum : Iterable +> : ^^^^^^^^^^^^^^^^ ;(function(a, ...rest) {})('', ...itNum) >(function(a, ...rest) {})('', ...itNum) : void @@ -34,8 +34,8 @@ declare const itNum: Iterable > : ^^ >...itNum : number > : ^^^^^^ ->itNum : Iterable -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>itNum : Iterable +> : ^^^^^^^^^^^^^^^^ ;(function(a, ...rest) {})('', true, ...itNum) >(function(a, ...rest) {})('', true, ...itNum) : void @@ -54,8 +54,8 @@ declare const itNum: Iterable > : ^^^^ >...itNum : number > : ^^^^^^ ->itNum : Iterable -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>itNum : Iterable +> : ^^^^^^^^^^^^^^^^ declare function fn1(...args: T): T; >fn1 : (...args: T) => T @@ -84,8 +84,8 @@ const res2 = fn1(...itNum); > : ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ >...itNum : number > : ^^^^^^ ->itNum : Iterable -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>itNum : Iterable +> : ^^^^^^^^^^^^^^^^ const res3 = fn1(true, ..."hello"); >res3 : readonly [true, ...string[]] @@ -112,8 +112,8 @@ const res4 = fn1(true, ...itNum); > : ^^^^ >...itNum : number > : ^^^^^^ ->itNum : Iterable -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>itNum : Iterable +> : ^^^^^^^^^^^^^^^^ // repro from #52781 declare function foo(...args: T): T; @@ -143,8 +143,8 @@ const p2 = foo(...itNum); > : ^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ >...itNum : number > : ^^^^^^ ->itNum : Iterable -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>itNum : Iterable +> : ^^^^^^^^^^^^^^^^ const p3 = foo(true, ..."hello"); >p3 : [boolean, ...string[]] @@ -171,6 +171,6 @@ const p4 = foo(true, ...itNum); > : ^^^^ >...itNum : number > : ^^^^^^ ->itNum : Iterable -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>itNum : Iterable +> : ^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/arrayFrom.types b/tests/baselines/reference/arrayFrom.types index f0bec8017b56b..71485e09f6925 100644 --- a/tests/baselines/reference/arrayFrom.types +++ b/tests/baselines/reference/arrayFrom.types @@ -39,12 +39,12 @@ const inputALike: ArrayLike = { length: 0 }; > : ^ const inputARand = getEither(inputA, inputALike); ->inputARand : ArrayLike | Iterable -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->getEither(inputA, inputALike) : ArrayLike | Iterable -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->getEither : (in1: Iterable, in2: ArrayLike) => ArrayLike | Iterable -> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>inputARand : ArrayLike | Iterable +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +>getEither(inputA, inputALike) : ArrayLike | Iterable +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +>getEither : (in1: Iterable, in2: ArrayLike) => ArrayLike | Iterable +> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >inputA : A[] > : ^^^ >inputALike : ArrayLike @@ -83,14 +83,14 @@ const result2: A[] = Array.from(inputA.values()); > : ^^^^^^^^^^^^^^^^ >from : { (arrayLike: ArrayLike): T[]; (arrayLike: ArrayLike, mapfn: (v: T_1, k: number) => U, thisArg?: any): U[]; (iterable: Iterable | ArrayLike): T_2[]; (iterable: Iterable | ArrayLike, mapfn: (v: T_3, k: number) => U_1, thisArg?: any): U_1[]; } > : ^^^ ^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^ ->inputA.values() : IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->inputA.values : () => IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>inputA.values() : IterableIterator +> : ^^^^^^^^^^^^^^^^^^^ +>inputA.values : () => IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^ >inputA : A[] > : ^^^ ->values : () => IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>values : () => IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^ const result3: B[] = Array.from(inputA.values()); // expect error >result3 : B[] @@ -103,14 +103,14 @@ const result3: B[] = Array.from(inputA.values()); // expect error > : ^^^^^^^^^^^^^^^^ >from : { (arrayLike: ArrayLike): T[]; (arrayLike: ArrayLike, mapfn: (v: T_1, k: number) => U, thisArg?: any): U[]; (iterable: Iterable | ArrayLike): T_2[]; (iterable: Iterable | ArrayLike, mapfn: (v: T_3, k: number) => U_1, thisArg?: any): U_1[]; } > : ^^^ ^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^ ->inputA.values() : IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->inputA.values : () => IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>inputA.values() : IterableIterator +> : ^^^^^^^^^^^^^^^^^^^ +>inputA.values : () => IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^ >inputA : A[] > : ^^^ ->values : () => IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>values : () => IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^ const result4: A[] = Array.from(inputB, ({ b }): A => ({ a: b })); >result4 : A[] @@ -203,8 +203,8 @@ const result8: A[] = Array.from(inputARand); > : ^^^^^^^^^^^^^^^^ >from : { (arrayLike: ArrayLike): T[]; (arrayLike: ArrayLike, mapfn: (v: T_1, k: number) => U, thisArg?: any): U[]; (iterable: Iterable | ArrayLike): T_2[]; (iterable: Iterable | ArrayLike, mapfn: (v: T_3, k: number) => U_1, thisArg?: any): U_1[]; } > : ^^^ ^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^ ->inputARand : ArrayLike | Iterable -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>inputARand : ArrayLike | Iterable +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ const result9: B[] = Array.from(inputARand, ({ a }): B => ({ b: a })); >result9 : B[] @@ -217,8 +217,8 @@ const result9: B[] = Array.from(inputARand, ({ a }): B => ({ b: a })); > : ^^^^^^^^^^^^^^^^ >from : { (arrayLike: ArrayLike): T[]; (arrayLike: ArrayLike, mapfn: (v: T_1, k: number) => U, thisArg?: any): U[]; (iterable: Iterable | ArrayLike): T_2[]; (iterable: Iterable | ArrayLike, mapfn: (v: T_3, k: number) => U_1, thisArg?: any): U_1[]; } > : ^^^ ^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^ ->inputARand : ArrayLike | Iterable -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>inputARand : ArrayLike | Iterable +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ >({ a }): B => ({ b: a }) : ({ a }: A) => B > : ^ ^^^^^^^^ >a : string @@ -278,16 +278,16 @@ const result11: B[] = Array.from(inputASet, ({ a }): B => ({ b: a })); // the ?: as always taking the false branch, narrowing to ArrayLike, // even when the type is written as : Iterable|ArrayLike function getEither (in1: Iterable, in2: ArrayLike) { ->getEither : (in1: Iterable, in2: ArrayLike) => ArrayLike | Iterable -> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->in1 : Iterable -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>getEither : (in1: Iterable, in2: ArrayLike) => ArrayLike | Iterable +> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>in1 : Iterable +> : ^^^^^^^^^^^ >in2 : ArrayLike > : ^^^^^^^^^^^^ return Math.random() > 0.5 ? in1 : in2; ->Math.random() > 0.5 ? in1 : in2 : ArrayLike | Iterable -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>Math.random() > 0.5 ? in1 : in2 : ArrayLike | Iterable +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ >Math.random() > 0.5 : boolean > : ^^^^^^^ >Math.random() : number @@ -300,8 +300,8 @@ function getEither (in1: Iterable, in2: ArrayLike) { > : ^^^^^^^^^^^^ >0.5 : 0.5 > : ^^^ ->in1 : Iterable -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>in1 : Iterable +> : ^^^^^^^^^^^ >in2 : ArrayLike > : ^^^^^^^^^^^^ } diff --git a/tests/baselines/reference/bigintWithLib.errors.txt b/tests/baselines/reference/bigintWithLib.errors.txt index 31b3222deb43f..a7768219e9b09 100644 --- a/tests/baselines/reference/bigintWithLib.errors.txt +++ b/tests/baselines/reference/bigintWithLib.errors.txt @@ -2,8 +2,8 @@ bigintWithLib.ts(4,1): error TS2350: Only a void function can be called with the bigintWithLib.ts(19,33): error TS2769: No overload matches this call. Overload 1 of 3, '(length?: number): BigInt64Array', gave the following error. Argument of type 'number[]' is not assignable to parameter of type 'number'. - Overload 2 of 3, '(array: Iterable): BigInt64Array', gave the following error. - Argument of type 'number[]' is not assignable to parameter of type 'Iterable'. + Overload 2 of 3, '(array: Iterable): BigInt64Array', gave the following error. + Argument of type 'number[]' is not assignable to parameter of type 'Iterable'. The types returned by '[Symbol.iterator]().next(...)' are incompatible between these types. Type 'IteratorResult' is not assignable to type 'IteratorResult'. Type 'IteratorYieldResult' is not assignable to type 'IteratorResult'. @@ -16,8 +16,8 @@ bigintWithLib.ts(24,13): error TS2540: Cannot assign to 'length' because it is a bigintWithLib.ts(31,35): error TS2769: No overload matches this call. Overload 1 of 3, '(length?: number): BigUint64Array', gave the following error. Argument of type 'number[]' is not assignable to parameter of type 'number'. - Overload 2 of 3, '(array: Iterable): BigUint64Array', gave the following error. - Argument of type 'number[]' is not assignable to parameter of type 'Iterable'. + Overload 2 of 3, '(array: Iterable): BigUint64Array', gave the following error. + Argument of type 'number[]' is not assignable to parameter of type 'Iterable'. Overload 3 of 3, '(buffer: ArrayBufferLike, byteOffset?: number, length?: number): BigUint64Array', gave the following error. Argument of type 'number[]' is not assignable to parameter of type 'ArrayBufferLike'. bigintWithLib.ts(36,13): error TS2540: Cannot assign to 'length' because it is a read-only property. @@ -51,8 +51,8 @@ bigintWithLib.ts(46,26): error TS2345: Argument of type 'number' is not assignab !!! error TS2769: No overload matches this call. !!! error TS2769: Overload 1 of 3, '(length?: number): BigInt64Array', gave the following error. !!! error TS2769: Argument of type 'number[]' is not assignable to parameter of type 'number'. -!!! 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: 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: The types returned by '[Symbol.iterator]().next(...)' are incompatible between these types. !!! error TS2769: Type 'IteratorResult' is not assignable to type 'IteratorResult'. !!! error TS2769: Type 'IteratorYieldResult' is not assignable to type 'IteratorResult'. @@ -79,8 +79,8 @@ bigintWithLib.ts(46,26): error TS2345: Argument of type 'number' is not assignab !!! error TS2769: No overload matches this call. !!! error TS2769: Overload 1 of 3, '(length?: number): BigUint64Array', gave the following error. !!! error TS2769: Argument of type 'number[]' is not assignable to parameter of type 'number'. -!!! error TS2769: Overload 2 of 3, '(array: Iterable): BigUint64Array', gave the following error. -!!! error TS2769: Argument of type 'number[]' is not assignable to parameter of type 'Iterable'. +!!! error TS2769: Overload 2 of 3, '(array: Iterable): BigUint64Array', gave the following error. +!!! error TS2769: Argument of type 'number[]' is not assignable to parameter of type 'Iterable'. !!! error TS2769: Overload 3 of 3, '(buffer: ArrayBufferLike, byteOffset?: number, length?: number): BigUint64Array', gave the following error. !!! error TS2769: Argument of type 'number[]' is not assignable to parameter of type 'ArrayBufferLike'. bigUintArray = new BigUint64Array(new ArrayBuffer(80)); diff --git a/tests/baselines/reference/complexRecursiveCollections.types b/tests/baselines/reference/complexRecursiveCollections.types index 8b4e38d81a0e9..6cef8ca2f2c38 100644 --- a/tests/baselines/reference/complexRecursiveCollections.types +++ b/tests/baselines/reference/complexRecursiveCollections.types @@ -263,8 +263,8 @@ declare module Immutable { export function List(collection: Iterable): List; >List : typeof List > : ^^^^^^^^^^^ ->collection : Iterable -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>collection : Iterable +> : ^^^^^^^^^^^ export interface List extends Collection.Indexed { >Collection : typeof Collection @@ -411,28 +411,28 @@ declare module Immutable { setIn(keyPath: Iterable, value: any): this; >setIn : (keyPath: Iterable, value: any) => this > : ^ ^^ ^^ ^^ ^^^^^ ->keyPath : Iterable -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>keyPath : Iterable +> : ^^^^^^^^^^^^^ >value : any > : ^^^ deleteIn(keyPath: Iterable): this; >deleteIn : (keyPath: Iterable) => this > : ^ ^^ ^^^^^ ->keyPath : Iterable -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>keyPath : Iterable +> : ^^^^^^^^^^^^^ removeIn(keyPath: Iterable): this; >removeIn : (keyPath: Iterable) => this > : ^ ^^ ^^^^^ ->keyPath : Iterable -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>keyPath : Iterable +> : ^^^^^^^^^^^^^ updateIn(keyPath: Iterable, notSetValue: any, updater: (value: any) => any): this; >updateIn : { (keyPath: Iterable, notSetValue: any, updater: (value: any) => any): this; (keyPath: Iterable, updater: (value: any) => any): this; } > : ^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^ ^^^^^^^^^^ ->keyPath : Iterable -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>keyPath : Iterable +> : ^^^^^^^^^^^^^ >notSetValue : any > : ^^^ >updater : (value: any) => any @@ -443,8 +443,8 @@ declare module Immutable { updateIn(keyPath: Iterable, updater: (value: any) => any): this; >updateIn : { (keyPath: Iterable, notSetValue: any, updater: (value: any) => any): this; (keyPath: Iterable, updater: (value: any) => any): this; } > : ^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ->keyPath : Iterable -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>keyPath : Iterable +> : ^^^^^^^^^^^^^ >updater : (value: any) => any > : ^ ^^ ^^^^^ >value : any @@ -453,16 +453,16 @@ declare module Immutable { mergeIn(keyPath: Iterable, ...collections: Array): this; >mergeIn : (keyPath: Iterable, ...collections: Array) => this > : ^ ^^ ^^^^^ ^^ ^^^^^ ->keyPath : Iterable -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>keyPath : Iterable +> : ^^^^^^^^^^^^^ >collections : any[] > : ^^^^^ mergeDeepIn(keyPath: Iterable, ...collections: Array): this; >mergeDeepIn : (keyPath: Iterable, ...collections: Array) => this > : ^ ^^ ^^^^^ ^^ ^^^^^ ->keyPath : Iterable -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>keyPath : Iterable +> : ^^^^^^^^^^^^^ >collections : any[] > : ^^^^^ @@ -487,8 +487,8 @@ declare module Immutable { concat(...valuesOrCollections: Array | C>): List; >concat : (...valuesOrCollections: Array | C>) => List > : ^ ^^^^^ ^^ ^^^^^ ->valuesOrCollections : (C | Iterable)[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>valuesOrCollections : (C | Iterable)[] +> : ^^^^^^^^^^^^^^^^^^^ map(mapper: (value: T, key: number, iter: this) => M, context?: any): List; >map : (mapper: (value: T, key: number, iter: this) => M, context?: any) => List @@ -565,14 +565,14 @@ declare module Immutable { export function Map(collection: Iterable<[K, V]>): Map; >Map : typeof Map > : ^^^^^^^^^^ ->collection : Iterable<[K, V], void, undefined> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>collection : Iterable<[K, V]> +> : ^^^^^^^^^^^^^^^^ export function Map(collection: Iterable>): Map; >Map : typeof Map > : ^^^^^^^^^^ ->collection : Iterable, void, undefined> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>collection : Iterable> +> : ^^^^^^^^^^^^^^^^^^^^^ export function Map(obj: {[key: string]: V}): Map; >Map : typeof Map @@ -618,14 +618,14 @@ declare module Immutable { deleteAll(keys: Iterable): this; >deleteAll : (keys: Iterable) => this > : ^ ^^ ^^^^^ ->keys : Iterable -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>keys : Iterable +> : ^^^^^^^^^^^ removeAll(keys: Iterable): this; >removeAll : (keys: Iterable) => this > : ^ ^^ ^^^^^ ->keys : Iterable -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>keys : Iterable +> : ^^^^^^^^^^^ clear(): this; >clear : () => this @@ -713,28 +713,28 @@ declare module Immutable { setIn(keyPath: Iterable, value: any): this; >setIn : (keyPath: Iterable, value: any) => this > : ^ ^^ ^^ ^^ ^^^^^ ->keyPath : Iterable -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>keyPath : Iterable +> : ^^^^^^^^^^^^^ >value : any > : ^^^ deleteIn(keyPath: Iterable): this; >deleteIn : (keyPath: Iterable) => this > : ^ ^^ ^^^^^ ->keyPath : Iterable -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>keyPath : Iterable +> : ^^^^^^^^^^^^^ removeIn(keyPath: Iterable): this; >removeIn : (keyPath: Iterable) => this > : ^ ^^ ^^^^^ ->keyPath : Iterable -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>keyPath : Iterable +> : ^^^^^^^^^^^^^ updateIn(keyPath: Iterable, notSetValue: any, updater: (value: any) => any): this; >updateIn : { (keyPath: Iterable, notSetValue: any, updater: (value: any) => any): this; (keyPath: Iterable, updater: (value: any) => any): this; } > : ^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^ ^^^^^^^^^^ ->keyPath : Iterable -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>keyPath : Iterable +> : ^^^^^^^^^^^^^ >notSetValue : any > : ^^^ >updater : (value: any) => any @@ -745,8 +745,8 @@ declare module Immutable { updateIn(keyPath: Iterable, updater: (value: any) => any): this; >updateIn : { (keyPath: Iterable, notSetValue: any, updater: (value: any) => any): this; (keyPath: Iterable, updater: (value: any) => any): this; } > : ^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ->keyPath : Iterable -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>keyPath : Iterable +> : ^^^^^^^^^^^^^ >updater : (value: any) => any > : ^ ^^ ^^^^^ >value : any @@ -755,16 +755,16 @@ declare module Immutable { mergeIn(keyPath: Iterable, ...collections: Array): this; >mergeIn : (keyPath: Iterable, ...collections: Array) => this > : ^ ^^ ^^^^^ ^^ ^^^^^ ->keyPath : Iterable -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>keyPath : Iterable +> : ^^^^^^^^^^^^^ >collections : any[] > : ^^^^^ mergeDeepIn(keyPath: Iterable, ...collections: Array): this; >mergeDeepIn : (keyPath: Iterable, ...collections: Array) => this > : ^ ^^ ^^^^^ ^^ ^^^^^ ->keyPath : Iterable -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>keyPath : Iterable +> : ^^^^^^^^^^^^^ >collections : any[] > : ^^^^^ @@ -789,8 +789,8 @@ declare module Immutable { concat(...collections: Array>): Map; >concat : { (...collections: Array>): Map; (...collections: Array<{ [key: string]: C; }>): Map; } > : ^^^ ^^ ^^^^^ ^^ ^^^ ^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->collections : Iterable<[KC, VC], void, undefined>[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>collections : Iterable<[KC, VC]>[] +> : ^^^^^^^^^^^^^^^^^^^^ concat(...collections: Array<{[key: string]: C}>): Map; >concat : { (...collections: Array>): Map; (...collections: Array<{ [key: string]: C; }>): Map; } @@ -897,14 +897,14 @@ declare module Immutable { export function OrderedMap(collection: Iterable<[K, V]>): OrderedMap; >OrderedMap : typeof OrderedMap > : ^^^^^^^^^^^^^^^^^ ->collection : Iterable<[K, V], void, undefined> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>collection : Iterable<[K, V]> +> : ^^^^^^^^^^^^^^^^ export function OrderedMap(collection: Iterable>): OrderedMap; >OrderedMap : typeof OrderedMap > : ^^^^^^^^^^^^^^^^^ ->collection : Iterable, void, undefined> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>collection : Iterable> +> : ^^^^^^^^^^^^^^^^^^^^^ export function OrderedMap(obj: {[key: string]: V}): OrderedMap; >OrderedMap : typeof OrderedMap @@ -927,8 +927,8 @@ declare module Immutable { concat(...collections: Array>): OrderedMap; >concat : { (...collections: Array>): OrderedMap; (...collections: Array<{ [key: string]: C; }>): OrderedMap; } > : ^^^ ^^ ^^^^^ ^^ ^^^ ^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->collections : Iterable<[KC, VC], void, undefined>[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>collections : Iterable<[KC, VC]>[] +> : ^^^^^^^^^^^^^^^^^^^^ concat(...collections: Array<{[key: string]: C}>): OrderedMap; >concat : { (...collections: Array>): OrderedMap; (...collections: Array<{ [key: string]: C; }>): OrderedMap; } @@ -1055,14 +1055,14 @@ declare module Immutable { function intersect(sets: Iterable>): Set; >intersect : (sets: Iterable>) => Set > : ^ ^^ ^^ ^^^^^ ->sets : Iterable, void, undefined> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>sets : Iterable> +> : ^^^^^^^^^^^^^^^^^^^^^ function union(sets: Iterable>): Set; >union : (sets: Iterable>) => Set > : ^ ^^ ^^ ^^^^^ ->sets : Iterable, void, undefined> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>sets : Iterable> +> : ^^^^^^^^^^^^^^^^^^^^^ } export function Set(): Set; >Set : typeof Set @@ -1075,8 +1075,8 @@ declare module Immutable { export function Set(collection: Iterable): Set; >Set : typeof Set > : ^^^^^^^^^^ ->collection : Iterable -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>collection : Iterable +> : ^^^^^^^^^^^ export interface Set extends Collection.Set { >Collection : typeof Collection @@ -1150,8 +1150,8 @@ declare module Immutable { concat(...valuesOrCollections: Array | C>): Set; >concat : (...valuesOrCollections: Array | C>) => Set > : ^ ^^^^^ ^^ ^^^^^ ->valuesOrCollections : (C | Iterable)[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>valuesOrCollections : (C | Iterable)[] +> : ^^^^^^^^^^^^^^^^^^^ map(mapper: (value: T, key: never, iter: this) => M, context?: any): Set; >map : (mapper: (value: T, key: never, iter: this) => M, context?: any) => Set @@ -1250,16 +1250,16 @@ declare module Immutable { export function OrderedSet(collection: Iterable): OrderedSet; >OrderedSet : typeof OrderedSet > : ^^^^^^^^^^^^^^^^^ ->collection : Iterable -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>collection : Iterable +> : ^^^^^^^^^^^ export interface OrderedSet extends Set { // Sequence algorithms concat(...valuesOrCollections: Array | C>): OrderedSet; >concat : (...valuesOrCollections: Array | C>) => OrderedSet > : ^ ^^^^^ ^^ ^^^^^ ->valuesOrCollections : (C | Iterable)[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>valuesOrCollections : (C | Iterable)[] +> : ^^^^^^^^^^^^^^^^^^^ map(mapper: (value: T, key: never, iter: this) => M, context?: any): OrderedSet; >map : (mapper: (value: T, key: never, iter: this) => M, context?: any) => OrderedSet @@ -1388,8 +1388,8 @@ declare module Immutable { export function Stack(collection: Iterable): Stack; >Stack : typeof Stack > : ^^^^^^^^^^^^ ->collection : Iterable -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>collection : Iterable +> : ^^^^^^^^^^^ export interface Stack extends Collection.Indexed { >Collection : typeof Collection @@ -1414,8 +1414,8 @@ declare module Immutable { unshiftAll(iter: Iterable): Stack; >unshiftAll : (iter: Iterable) => Stack > : ^ ^^ ^^^^^ ->iter : Iterable -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>iter : Iterable +> : ^^^^^^^^^^^ shift(): Stack; >shift : () => Stack @@ -1430,8 +1430,8 @@ declare module Immutable { pushAll(iter: Iterable): Stack; >pushAll : (iter: Iterable) => Stack > : ^ ^^ ^^^^^ ->iter : Iterable -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>iter : Iterable +> : ^^^^^^^^^^^ pop(): Stack; >pop : () => Stack @@ -1458,8 +1458,8 @@ declare module Immutable { concat(...valuesOrCollections: Array | C>): Stack; >concat : (...valuesOrCollections: Array | C>) => Stack > : ^ ^^^^^ ^^ ^^^^^ ->valuesOrCollections : (C | Iterable)[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>valuesOrCollections : (C | Iterable)[] +> : ^^^^^^^^^^^^^^^^^^^ map(mapper: (value: T, key: number, iter: this) => M, context?: any): Stack; >map : (mapper: (value: T, key: number, iter: this) => M, context?: any) => Stack @@ -1559,12 +1559,12 @@ declare module Immutable { export interface Class { (values?: Partial | Iterable<[string, any]>): Instance & Readonly; ->values : Partial | Iterable<[string, any], void, undefined> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>values : Partial | Iterable<[string, any]> +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ new (values?: Partial | Iterable<[string, any]>): Instance & Readonly; ->values : Partial | Iterable<[string, any], void, undefined> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>values : Partial | Iterable<[string, any]> +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ } export interface Instance { readonly size: number; @@ -1588,14 +1588,14 @@ declare module Immutable { hasIn(keyPath: Iterable): boolean; >hasIn : (keyPath: Iterable) => boolean > : ^ ^^ ^^^^^ ->keyPath : Iterable -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>keyPath : Iterable +> : ^^^^^^^^^^^^^ getIn(keyPath: Iterable): any; >getIn : (keyPath: Iterable) => any > : ^ ^^ ^^^^^ ->keyPath : Iterable -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>keyPath : Iterable +> : ^^^^^^^^^^^^^ // Value equality equals(other: any): boolean; @@ -1630,14 +1630,14 @@ declare module Immutable { merge(...collections: Array | Iterable<[string, any]>>): this; >merge : (...collections: Array | Iterable<[string, any]>>) => this > : ^^^^ ^^ ^^^^^ ->collections : (Iterable<[string, any], void, undefined> | Partial)[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>collections : (Iterable<[string, any]> | Partial)[] +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ mergeDeep(...collections: Array | Iterable<[string, any]>>): this; >mergeDeep : (...collections: Array | Iterable<[string, any]>>) => this > : ^^^^ ^^ ^^^^^ ->collections : (Iterable<[string, any], void, undefined> | Partial)[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>collections : (Iterable<[string, any]> | Partial)[] +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ mergeWith(merger: (oldVal: any, newVal: any, key: keyof T) => any, ...collections: Array | Iterable<[string, any]>>): this; >mergeWith : (merger: (oldVal: any, newVal: any, key: keyof T) => any, ...collections: Array | Iterable<[string, any]>>) => this @@ -1650,8 +1650,8 @@ declare module Immutable { > : ^^^ >key : keyof T > : ^^^^^^^ ->collections : (Iterable<[string, any], void, undefined> | Partial)[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>collections : (Iterable<[string, any]> | Partial)[] +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ mergeDeepWith(merger: (oldVal: any, newVal: any, key: any) => any, ...collections: Array | Iterable<[string, any]>>): this; >mergeDeepWith : (merger: (oldVal: any, newVal: any, key: any) => any, ...collections: Array | Iterable<[string, any]>>) => this @@ -1664,8 +1664,8 @@ declare module Immutable { > : ^^^ >key : any > : ^^^ ->collections : (Iterable<[string, any], void, undefined> | Partial)[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>collections : (Iterable<[string, any]> | Partial)[] +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ delete(key: K): this; >delete : (key: K) => this @@ -1687,16 +1687,16 @@ declare module Immutable { setIn(keyPath: Iterable, value: any): this; >setIn : (keyPath: Iterable, value: any) => this > : ^ ^^ ^^ ^^ ^^^^^ ->keyPath : Iterable -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>keyPath : Iterable +> : ^^^^^^^^^^^^^ >value : any > : ^^^ updateIn(keyPath: Iterable, updater: (value: any) => any): this; >updateIn : (keyPath: Iterable, updater: (value: any) => any) => this > : ^ ^^ ^^ ^^ ^^^^^ ->keyPath : Iterable -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>keyPath : Iterable +> : ^^^^^^^^^^^^^ >updater : (value: any) => any > : ^ ^^ ^^^^^ >value : any @@ -1705,30 +1705,30 @@ declare module Immutable { mergeIn(keyPath: Iterable, ...collections: Array): this; >mergeIn : (keyPath: Iterable, ...collections: Array) => this > : ^ ^^ ^^^^^ ^^ ^^^^^ ->keyPath : Iterable -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>keyPath : Iterable +> : ^^^^^^^^^^^^^ >collections : any[] > : ^^^^^ mergeDeepIn(keyPath: Iterable, ...collections: Array): this; >mergeDeepIn : (keyPath: Iterable, ...collections: Array) => this > : ^ ^^ ^^^^^ ^^ ^^^^^ ->keyPath : Iterable -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>keyPath : Iterable +> : ^^^^^^^^^^^^^ >collections : any[] > : ^^^^^ deleteIn(keyPath: Iterable): this; >deleteIn : (keyPath: Iterable) => this > : ^ ^^ ^^^^^ ->keyPath : Iterable -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>keyPath : Iterable +> : ^^^^^^^^^^^^^ removeIn(keyPath: Iterable): this; >removeIn : (keyPath: Iterable) => this > : ^ ^^ ^^^^^ ->keyPath : Iterable -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>keyPath : Iterable +> : ^^^^^^^^^^^^^ // Conversion to JavaScript types toJS(): { [K in keyof T]: any }; @@ -1814,8 +1814,8 @@ declare module Immutable { export function Keyed(collection: Iterable<[K, V]>): Seq.Keyed; >Keyed : { (collection: Iterable<[K, V]>): Seq.Keyed; (obj: { [key: string]: V_1; }): Keyed; (): Keyed; (): Keyed; } > : ^^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->collection : Iterable<[K, V], void, undefined> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>collection : Iterable<[K, V]> +> : ^^^^^^^^^^^^^^^^ >Seq : any > : ^^^ @@ -1862,8 +1862,8 @@ declare module Immutable { concat(...collections: Array>): Seq.Keyed; >concat : { (...collections: Array>): Seq.Keyed; (...collections: Array<{ [key: string]: C; }>): Keyed; } > : ^^^ ^^ ^^^^^ ^^ ^^^ ^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->collections : Iterable<[KC, VC], void, undefined>[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>collections : Iterable<[KC, VC]>[] +> : ^^^^^^^^^^^^^^^^^^^^ >Seq : any > : ^^^ @@ -1998,8 +1998,8 @@ declare module Immutable { export function Indexed(collection: Iterable): Seq.Indexed; >Indexed : typeof Indexed > : ^^^^^^^^^^^^^^ ->collection : Iterable -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>collection : Iterable +> : ^^^^^^^^^^^ >Seq : any > : ^^^ @@ -2022,8 +2022,8 @@ declare module Immutable { concat(...valuesOrCollections: Array | C>): Seq.Indexed; >concat : (...valuesOrCollections: Array | C>) => Seq.Indexed > : ^ ^^^^^ ^^ ^^^^^ ->valuesOrCollections : (C | Iterable)[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>valuesOrCollections : (C | Iterable)[] +> : ^^^^^^^^^^^^^^^^^^^ >Seq : any > : ^^^ @@ -2116,8 +2116,8 @@ declare module Immutable { export function Set(collection: Iterable): Seq.Set; >Set : typeof Set > : ^^^^^^^^^^ ->collection : Iterable -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>collection : Iterable +> : ^^^^^^^^^^^ >Seq : any > : ^^^ @@ -2140,8 +2140,8 @@ declare module Immutable { concat(...valuesOrCollections: Array | C>): Seq.Set; >concat : (...valuesOrCollections: Array | C>) => Seq.Set > : ^ ^^^^^ ^^ ^^^^^ ->valuesOrCollections : (C | Iterable)[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>valuesOrCollections : (C | Iterable)[] +> : ^^^^^^^^^^^^^^^^^^^ >Seq : any > : ^^^ @@ -2247,8 +2247,8 @@ declare module Immutable { export function Seq(collection: Iterable): Seq.Indexed; >Seq : typeof Seq > : ^^^^^^^^^^ ->collection : Iterable -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>collection : Iterable +> : ^^^^^^^^^^^ >Seq : any > : ^^^ @@ -2373,8 +2373,8 @@ declare module Immutable { export function Keyed(collection: Iterable<[K, V]>): Collection.Keyed; >Keyed : { (collection: Iterable<[K, V]>): Collection.Keyed; (obj: { [key: string]: V_1; }): Keyed; } > : ^^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ->collection : Iterable<[K, V], void, undefined> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>collection : Iterable<[K, V]> +> : ^^^^^^^^^^^^^^^^ >Collection : any > : ^^^ @@ -2413,8 +2413,8 @@ declare module Immutable { concat(...collections: Array>): Collection.Keyed; >concat : { (...collections: Array>): Collection.Keyed; (...collections: Array<{ [key: string]: C; }>): Keyed; } > : ^^^ ^^ ^^^^^ ^^ ^^^ ^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->collections : Iterable<[KC, VC], void, undefined>[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>collections : Iterable<[KC, VC]>[] +> : ^^^^^^^^^^^^^^^^^^^^ >Collection : any > : ^^^ @@ -2536,8 +2536,8 @@ declare module Immutable { export function Indexed(collection: Iterable): Collection.Indexed; >Indexed : (collection: Iterable) => Collection.Indexed > : ^ ^^ ^^ ^^^^^ ->collection : Iterable -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>collection : Iterable +> : ^^^^^^^^^^^ >Collection : any > : ^^^ @@ -2698,8 +2698,8 @@ declare module Immutable { concat(...valuesOrCollections: Array | C>): Collection.Indexed; >concat : (...valuesOrCollections: Array | C>) => Collection.Indexed > : ^ ^^^^^ ^^ ^^^^^ ->valuesOrCollections : (C | Iterable)[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>valuesOrCollections : (C | Iterable)[] +> : ^^^^^^^^^^^^^^^^^^^ >Collection : any > : ^^^ @@ -2779,8 +2779,8 @@ declare module Immutable { export function Set(collection: Iterable): Collection.Set; >Set : (collection: Iterable) => Collection.Set > : ^ ^^ ^^ ^^^^^ ->collection : Iterable -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>collection : Iterable +> : ^^^^^^^^^^^ >Collection : any > : ^^^ @@ -2803,8 +2803,8 @@ declare module Immutable { concat(...valuesOrCollections: Array | C>): Collection.Set; >concat : (...valuesOrCollections: Array | C>) => Collection.Set > : ^ ^^^^^ ^^ ^^^^^ ->valuesOrCollections : (C | Iterable)[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>valuesOrCollections : (C | Iterable)[] +> : ^^^^^^^^^^^^^^^^^^^ >Collection : any > : ^^^ @@ -2890,8 +2890,8 @@ declare module Immutable { export function Collection(collection: Iterable): Collection.Indexed; >Collection : typeof Collection > : ^^^^^^^^^^^^^^^^^ ->collection : Iterable -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>collection : Iterable +> : ^^^^^^^^^^^ >Collection : any > : ^^^ @@ -2962,16 +2962,16 @@ declare module Immutable { getIn(searchKeyPath: Iterable, notSetValue?: any): any; >getIn : (searchKeyPath: Iterable, notSetValue?: any) => any > : ^ ^^ ^^ ^^^ ^^^^^ ->searchKeyPath : Iterable -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>searchKeyPath : Iterable +> : ^^^^^^^^^^^^^ >notSetValue : any > : ^^^ hasIn(searchKeyPath: Iterable): boolean; >hasIn : (searchKeyPath: Iterable) => boolean > : ^ ^^ ^^^^^ ->searchKeyPath : Iterable -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>searchKeyPath : Iterable +> : ^^^^^^^^^^^^^ // Persistent changes update(updater: (value: this) => R): R; @@ -3635,14 +3635,14 @@ declare module Immutable { isSubset(iter: Iterable): boolean; >isSubset : (iter: Iterable) => boolean > : ^ ^^ ^^^^^ ->iter : Iterable -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>iter : Iterable +> : ^^^^^^^^^^^ isSuperset(iter: Iterable): boolean; >isSuperset : (iter: Iterable) => boolean > : ^ ^^ ^^^^^ ->iter : Iterable -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>iter : Iterable +> : ^^^^^^^^^^^ readonly size: number; >size : number diff --git a/tests/baselines/reference/contextualTypeIterableUnions.types b/tests/baselines/reference/contextualTypeIterableUnions.types index d9f08b45cc29f..df8c6a25e18c9 100644 --- a/tests/baselines/reference/contextualTypeIterableUnions.types +++ b/tests/baselines/reference/contextualTypeIterableUnions.types @@ -6,8 +6,8 @@ declare class DMap { > : ^^^^^^^^^^ constructor(iterable: Iterable<[K, V]> | undefined); ->iterable : Iterable<[K, V], void, undefined> | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>iterable : Iterable<[K, V]> | undefined +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ } new DMap([["1", 2]]); >new DMap([["1", 2]]) : DMap @@ -24,8 +24,8 @@ new DMap([["1", 2]]); > : ^ const i1: Iterable<{ a: true }> | undefined = [{ a: true }]; ->i1 : Iterable<{ a: true; }, void, undefined> | undefined -> : ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>i1 : Iterable<{ a: true; }> | undefined +> : ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ >a : true > : ^^^^ >true : true @@ -40,8 +40,8 @@ const i1: Iterable<{ a: true }> | undefined = [{ a: true }]; > : ^^^^ const i2: Iterable<{ a: true }> | Iterable<{ b: false }> = [{ b: false }]; ->i2 : Iterable<{ a: true; }, void, undefined> | Iterable<{ b: false; }, void, undefined> -> : ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ +>i2 : Iterable<{ a: true; }> | Iterable<{ b: false; }> +> : ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^ >a : true > : ^^^^ >true : true @@ -60,8 +60,8 @@ const i2: Iterable<{ a: true }> | Iterable<{ b: false }> = [{ b: false }]; > : ^^^^^ const i3: Iterable | 1[] = [2]; ->i3 : Iterable | 1[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>i3 : Iterable | 1[] +> : ^^^^^^^^^^^^^^^^^^^^^^ >[2] : 2[] > : ^^^ >2 : 2 diff --git a/tests/baselines/reference/destructuredLateBoundNameHasCorrectTypes.types b/tests/baselines/reference/destructuredLateBoundNameHasCorrectTypes.types index 83bf34524d9f6..9c15d6b2b210d 100644 --- a/tests/baselines/reference/destructuredLateBoundNameHasCorrectTypes.types +++ b/tests/baselines/reference/destructuredLateBoundNameHasCorrectTypes.types @@ -8,16 +8,16 @@ let { [Symbol.iterator]: destructured } = []; > : ^^^^^^^^^^^^^^^^^ >iterator : unique symbol > : ^^^^^^^^^^^^^ ->destructured : () => IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>destructured : () => IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >[] : undefined[] > : ^^^^^^^^^^^ void destructured; >void destructured : undefined > : ^^^^^^^^^ ->destructured : () => IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>destructured : () => IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ const named = "prop"; >named : "prop" diff --git a/tests/baselines/reference/discriminateWithOptionalProperty2(exactoptionalpropertytypes=false).types b/tests/baselines/reference/discriminateWithOptionalProperty2(exactoptionalpropertytypes=false).types index ccd5d0887e524..f14a816f9b117 100644 --- a/tests/baselines/reference/discriminateWithOptionalProperty2(exactoptionalpropertytypes=false).types +++ b/tests/baselines/reference/discriminateWithOptionalProperty2(exactoptionalpropertytypes=false).types @@ -12,8 +12,8 @@ function mapAsyncIterable( > : ^ ^^ ^^ ^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ iterable: AsyncGenerator | AsyncIterable, ->iterable : AsyncGenerator | AsyncIterable -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>iterable : AsyncGenerator | AsyncIterable +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ callback: (value: T) => PromiseOrValue, >callback : (value: T) => PromiseOrValue @@ -29,8 +29,8 @@ function mapAsyncIterable( > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >iterable[Symbol.asyncIterator] : (() => AsyncGenerator) | (() => AsyncIterator) > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->iterable : AsyncGenerator | AsyncIterable -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>iterable : AsyncGenerator | AsyncIterable +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Symbol.asyncIterator : unique symbol > : ^^^^^^^^^^^^^ >Symbol : SymbolConstructor diff --git a/tests/baselines/reference/discriminateWithOptionalProperty2(exactoptionalpropertytypes=true).types b/tests/baselines/reference/discriminateWithOptionalProperty2(exactoptionalpropertytypes=true).types index ccd5d0887e524..f14a816f9b117 100644 --- a/tests/baselines/reference/discriminateWithOptionalProperty2(exactoptionalpropertytypes=true).types +++ b/tests/baselines/reference/discriminateWithOptionalProperty2(exactoptionalpropertytypes=true).types @@ -12,8 +12,8 @@ function mapAsyncIterable( > : ^ ^^ ^^ ^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ iterable: AsyncGenerator | AsyncIterable, ->iterable : AsyncGenerator | AsyncIterable -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>iterable : AsyncGenerator | AsyncIterable +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ callback: (value: T) => PromiseOrValue, >callback : (value: T) => PromiseOrValue @@ -29,8 +29,8 @@ function mapAsyncIterable( > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >iterable[Symbol.asyncIterator] : (() => AsyncGenerator) | (() => AsyncIterator) > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->iterable : AsyncGenerator | AsyncIterable -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>iterable : AsyncGenerator | AsyncIterable +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Symbol.asyncIterator : unique symbol > : ^^^^^^^^^^^^^ >Symbol : SymbolConstructor diff --git a/tests/baselines/reference/dissallowSymbolAsWeakType.errors.txt b/tests/baselines/reference/dissallowSymbolAsWeakType.errors.txt index 5f7738d119ca5..e42d68d8c9db8 100644 --- a/tests/baselines/reference/dissallowSymbolAsWeakType.errors.txt +++ b/tests/baselines/reference/dissallowSymbolAsWeakType.errors.txt @@ -1,6 +1,6 @@ dissallowSymbolAsWeakType.ts(3,16): error TS2769: No overload matches this call. - Overload 1 of 2, '(iterable: Iterable): WeakSet', gave the following error. - Argument of type 'symbol[]' is not assignable to parameter of type 'Iterable'. + Overload 1 of 2, '(iterable: Iterable): WeakSet', gave the following error. + Argument of type 'symbol[]' is not assignable to parameter of type 'Iterable'. The types returned by '[Symbol.iterator]().next(...)' are incompatible between these types. Type 'IteratorResult' is not assignable to type 'IteratorResult'. Type 'IteratorYieldResult' is not assignable to type 'IteratorResult'. @@ -12,8 +12,8 @@ dissallowSymbolAsWeakType.ts(4,8): error TS2345: Argument of type 'symbol' is no dissallowSymbolAsWeakType.ts(5,8): error TS2345: Argument of type 'symbol' is not assignable to parameter of type 'object'. dissallowSymbolAsWeakType.ts(6,11): error TS2345: Argument of type 'symbol' is not assignable to parameter of type 'object'. dissallowSymbolAsWeakType.ts(8,16): error TS2769: No overload matches this call. - Overload 1 of 2, '(iterable: Iterable): WeakMap', gave the following error. - Argument of type '[symbol, false][]' is not assignable to parameter of type 'Iterable'. + Overload 1 of 2, '(iterable: Iterable): WeakMap', gave the following error. + Argument of type '[symbol, false][]' is not assignable to parameter of type 'Iterable'. The types returned by '[Symbol.iterator]().next(...)' are incompatible between these types. Type 'IteratorResult<[symbol, false], void>' is not assignable to type 'IteratorResult'. Type 'IteratorYieldResult<[symbol, false]>' is not assignable to type 'IteratorResult'. @@ -38,8 +38,8 @@ dissallowSymbolAsWeakType.ts(19,14): error TS2345: Argument of type 'symbol' is const ws = new WeakSet([s]); ~~~~~~~ !!! error TS2769: No overload matches this call. -!!! error TS2769: Overload 1 of 2, '(iterable: Iterable): WeakSet', gave the following error. -!!! error TS2769: Argument of type 'symbol[]' is not assignable to parameter of type 'Iterable'. +!!! error TS2769: Overload 1 of 2, '(iterable: Iterable): WeakSet', gave the following error. +!!! error TS2769: Argument of type 'symbol[]' is not assignable to parameter of type 'Iterable'. !!! error TS2769: The types returned by '[Symbol.iterator]().next(...)' are incompatible between these types. !!! error TS2769: Type 'IteratorResult' is not assignable to type 'IteratorResult'. !!! error TS2769: Type 'IteratorYieldResult' is not assignable to type 'IteratorResult'. @@ -60,8 +60,8 @@ dissallowSymbolAsWeakType.ts(19,14): error TS2345: Argument of type 'symbol' is const wm = new WeakMap([[s, false]]); ~~~~~~~ !!! error TS2769: No overload matches this call. -!!! error TS2769: Overload 1 of 2, '(iterable: Iterable): WeakMap', gave the following error. -!!! error TS2769: Argument of type '[symbol, false][]' is not assignable to parameter of type 'Iterable'. +!!! error TS2769: Overload 1 of 2, '(iterable: Iterable): WeakMap', gave the following error. +!!! error TS2769: Argument of type '[symbol, false][]' is not assignable to parameter of type 'Iterable'. !!! error TS2769: The types returned by '[Symbol.iterator]().next(...)' are incompatible between these types. !!! error TS2769: Type 'IteratorResult<[symbol, false], void>' is not assignable to type 'IteratorResult'. !!! error TS2769: Type 'IteratorYieldResult<[symbol, false]>' is not assignable to type 'IteratorResult'. diff --git a/tests/baselines/reference/emitArrowFunctionES6.types b/tests/baselines/reference/emitArrowFunctionES6.types index 3925aeeaf3766..472ea87102f67 100644 --- a/tests/baselines/reference/emitArrowFunctionES6.types +++ b/tests/baselines/reference/emitArrowFunctionES6.types @@ -79,10 +79,10 @@ var p1 = ([a]) => { }; > : ^^^ var p2 = ([...a]) => { }; ->p2 : ([...a]: Iterable) => void -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->([...a]) => { } : ([...a]: Iterable) => void -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>p2 : ([...a]: Iterable) => void +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^ +>([...a]) => { } : ([...a]: Iterable) => void +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^ >a : any[] > : ^^^^^ diff --git a/tests/baselines/reference/esNextWeakRefs_IterableWeakMap.types b/tests/baselines/reference/esNextWeakRefs_IterableWeakMap.types index 851fe26c8e728..659f10fbe2645 100644 --- a/tests/baselines/reference/esNextWeakRefs_IterableWeakMap.types +++ b/tests/baselines/reference/esNextWeakRefs_IterableWeakMap.types @@ -81,22 +81,22 @@ export class IterableWeakMap implements WeakMap { > : ^ ^^ ^^^^^^^^^ constructor(iterable: Iterable<[key: K, value: V]> | null = null) { ->iterable : Iterable<[key: K, value: V], void, undefined> | null -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>iterable : Iterable<[key: K, value: V]> | null +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ if (iterable !== null) { >iterable !== null : boolean > : ^^^^^^^ ->iterable : Iterable<[key: K, value: V], void, undefined> | null -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>iterable : Iterable<[key: K, value: V]> | null +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ for (const { 0: key, 1: value } of iterable) { >key : K > : ^ >value : V > : ^ ->iterable : Iterable<[key: K, value: V], void, undefined> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>iterable : Iterable<[key: K, value: V]> +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this.set(key, value); >this.set(key, value) : this diff --git a/tests/baselines/reference/for-of12.types b/tests/baselines/reference/for-of12.types index e8c8ba2a4df74..24c0ba69b975a 100644 --- a/tests/baselines/reference/for-of12.types +++ b/tests/baselines/reference/for-of12.types @@ -8,16 +8,16 @@ var v: string; for (v of [0, ""].values()) { } >v : string > : ^^^^^^ ->[0, ""].values() : IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->[0, ""].values : () => IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>[0, ""].values() : IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>[0, ""].values : () => IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >[0, ""] : (string | number)[] > : ^^^^^^^^^^^^^^^^^^^ >0 : 0 > : ^ >"" : "" > : ^^ ->values : () => IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>values : () => IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/for-of13.types b/tests/baselines/reference/for-of13.types index c2de8b773563e..6bfdc1fe849eb 100644 --- a/tests/baselines/reference/for-of13.types +++ b/tests/baselines/reference/for-of13.types @@ -8,14 +8,14 @@ var v: string; for (v of [""].values()) { } >v : string > : ^^^^^^ ->[""].values() : IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->[""].values : () => IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>[""].values() : IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^ +>[""].values : () => IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >[""] : string[] > : ^^^^^^^^ >"" : "" > : ^^ ->values : () => IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>values : () => IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/for-of39.errors.txt b/tests/baselines/reference/for-of39.errors.txt index 6298ab6029254..09b90d0ed7a0e 100644 --- a/tests/baselines/reference/for-of39.errors.txt +++ b/tests/baselines/reference/for-of39.errors.txt @@ -1,6 +1,6 @@ for-of39.ts(1,15): error TS2769: No overload matches this call. - Overload 1 of 4, '(iterable?: Iterable): Map', gave the following error. - Argument of type '([string, number] | [string, true])[]' is not assignable to parameter of type 'Iterable'. + Overload 1 of 4, '(iterable?: Iterable): Map', gave the following error. + Argument of type '([string, number] | [string, true])[]' is not assignable to parameter of type 'Iterable'. The types returned by '[Symbol.iterator]().next(...)' are incompatible between these types. Type 'IteratorResult<[string, number] | [string, true], void>' is not assignable to type 'IteratorResult'. Type 'IteratorYieldResult<[string, number] | [string, true]>' is not assignable to type 'IteratorResult'. @@ -17,8 +17,8 @@ for-of39.ts(1,15): error TS2769: No overload matches this call. var map = new Map([["", true], ["", 0]]); ~~~ !!! error TS2769: No overload matches this call. -!!! error TS2769: Overload 1 of 4, '(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: Overload 1 of 4, '(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: The types returned by '[Symbol.iterator]().next(...)' are incompatible between these types. !!! error TS2769: Type 'IteratorResult<[string, number] | [string, true], void>' is not assignable to type 'IteratorResult'. !!! error TS2769: Type 'IteratorYieldResult<[string, number] | [string, true]>' is not assignable to type 'IteratorResult'. diff --git a/tests/baselines/reference/for-of57.types b/tests/baselines/reference/for-of57.types index 809f39ce2c5ad..71449bfc6291d 100644 --- a/tests/baselines/reference/for-of57.types +++ b/tests/baselines/reference/for-of57.types @@ -2,12 +2,12 @@ === for-of57.ts === var iter: Iterable; ->iter : Iterable -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>iter : Iterable +> : ^^^^^^^^^^^^^^^^ for (let num of iter) { } >num : number > : ^^^^^^ ->iter : Iterable -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>iter : Iterable +> : ^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/forAwaitForUnion.types b/tests/baselines/reference/forAwaitForUnion.types index da17db1a9346d..b2e965b0e2a0d 100644 --- a/tests/baselines/reference/forAwaitForUnion.types +++ b/tests/baselines/reference/forAwaitForUnion.types @@ -4,14 +4,14 @@ async function f(source: Iterable | AsyncIterable) { >f : (source: Iterable | AsyncIterable) => Promise > : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ->source : Iterable | AsyncIterable -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>source : Iterable | AsyncIterable +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ for await (const x of source) { >x : Awaited > : ^^^^^^^^^^ ->source : Iterable | AsyncIterable -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>source : Iterable | AsyncIterable +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ } } diff --git a/tests/baselines/reference/generatorOverloads1.types b/tests/baselines/reference/generatorOverloads1.types index 33f65b0effab2..53424034cc980 100644 --- a/tests/baselines/reference/generatorOverloads1.types +++ b/tests/baselines/reference/generatorOverloads1.types @@ -6,20 +6,20 @@ module M { > : ^^^^^^^^ function* f(s: string): Iterable; ->f : { (s: string): Iterable; (s: number): Iterable; } -> : ^^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>f : { (s: string): Iterable; (s: number): Iterable; } +> : ^^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^^^^^^^^^^^ >s : string > : ^^^^^^ function* f(s: number): Iterable; ->f : { (s: string): Iterable; (s: number): Iterable; } -> : ^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ +>f : { (s: string): Iterable; (s: number): Iterable; } +> : ^^^ ^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ >s : number > : ^^^^^^ function* f(s: any): Iterable { } ->f : { (s: string): Iterable; (s: number): Iterable; } -> : ^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>f : { (s: string): Iterable; (s: number): Iterable; } +> : ^^^ ^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^ >s : any > : ^^^ } diff --git a/tests/baselines/reference/generatorOverloads2.types b/tests/baselines/reference/generatorOverloads2.types index 81da7ec24e160..ec742d99535b2 100644 --- a/tests/baselines/reference/generatorOverloads2.types +++ b/tests/baselines/reference/generatorOverloads2.types @@ -6,20 +6,20 @@ declare module M { > : ^^^^^^^^ function* f(s: string): Iterable; ->f : { (s: string): Iterable; (s: number): Iterable; (s: any): Iterable; } -> : ^^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>f : { (s: string): Iterable; (s: number): Iterable; (s: any): Iterable; } +> : ^^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^ >s : string > : ^^^^^^ function* f(s: number): Iterable; ->f : { (s: string): Iterable; (s: number): Iterable; (s: any): Iterable; } -> : ^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>f : { (s: string): Iterable; (s: number): Iterable; (s: any): Iterable; } +> : ^^^ ^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^^^^^^^^^^^ >s : number > : ^^^^^^ function* f(s: any): Iterable; ->f : { (s: string): Iterable; (s: number): Iterable; (s: any): Iterable; } -> : ^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ +>f : { (s: string): Iterable; (s: number): Iterable; (s: any): Iterable; } +> : ^^^ ^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ >s : any > : ^^^ } diff --git a/tests/baselines/reference/generatorOverloads3.types b/tests/baselines/reference/generatorOverloads3.types index e17db7fd9926a..378d8b854ffd8 100644 --- a/tests/baselines/reference/generatorOverloads3.types +++ b/tests/baselines/reference/generatorOverloads3.types @@ -6,20 +6,20 @@ class C { > : ^ *f(s: string): Iterable; ->f : { (s: string): Iterable; (s: number): Iterable; } -> : ^^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>f : { (s: string): Iterable; (s: number): Iterable; } +> : ^^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^^^^^^^^^^^ >s : string > : ^^^^^^ *f(s: number): Iterable; ->f : { (s: string): Iterable; (s: number): Iterable; } -> : ^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ +>f : { (s: string): Iterable; (s: number): Iterable; } +> : ^^^ ^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ >s : number > : ^^^^^^ *f(s: any): Iterable { } ->f : { (s: string): Iterable; (s: number): Iterable; } -> : ^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>f : { (s: string): Iterable; (s: number): Iterable; } +> : ^^^ ^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^ >s : any > : ^^^ } diff --git a/tests/baselines/reference/generatorOverloads4.types b/tests/baselines/reference/generatorOverloads4.types index b96fb6944d36e..4fc2e3ce36f38 100644 --- a/tests/baselines/reference/generatorOverloads4.types +++ b/tests/baselines/reference/generatorOverloads4.types @@ -6,19 +6,19 @@ class C { > : ^ f(s: string): Iterable; ->f : { (s: string): Iterable; (s: number): Iterable; } -> : ^^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>f : { (s: string): Iterable; (s: number): Iterable; } +> : ^^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^^^^^^^^^^^ >s : string > : ^^^^^^ f(s: number): Iterable; ->f : { (s: string): Iterable; (s: number): Iterable; } -> : ^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ +>f : { (s: string): Iterable; (s: number): Iterable; } +> : ^^^ ^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ >s : number > : ^^^^^^ *f(s: any): Iterable { } ->f : { (s: string): Iterable; (s: number): Iterable; } -> : ^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>f : { (s: string): Iterable; (s: number): Iterable; } +> : ^^^ ^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^ >s : any } diff --git a/tests/baselines/reference/generatorOverloads5.types b/tests/baselines/reference/generatorOverloads5.types index 2e54d5b12b137..3d68a9d44b0d6 100644 --- a/tests/baselines/reference/generatorOverloads5.types +++ b/tests/baselines/reference/generatorOverloads5.types @@ -6,19 +6,19 @@ module M { > : ^^^^^^^^ function f(s: string): Iterable; ->f : { (s: string): Iterable; (s: number): Iterable; } -> : ^^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>f : { (s: string): Iterable; (s: number): Iterable; } +> : ^^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^^^^^^^^^^^ >s : string > : ^^^^^^ function f(s: number): Iterable; ->f : { (s: string): Iterable; (s: number): Iterable; } -> : ^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ +>f : { (s: string): Iterable; (s: number): Iterable; } +> : ^^^ ^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ >s : number > : ^^^^^^ function* f(s: any): Iterable { } ->f : { (s: string): Iterable; (s: number): Iterable; } -> : ^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>f : { (s: string): Iterable; (s: number): Iterable; } +> : ^^^ ^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^ >s : any } diff --git a/tests/baselines/reference/generatorReturnTypeInference.types b/tests/baselines/reference/generatorReturnTypeInference.types index cfd8d97e22c84..cb6dbf4a62262 100644 --- a/tests/baselines/reference/generatorReturnTypeInference.types +++ b/tests/baselines/reference/generatorReturnTypeInference.types @@ -2,8 +2,8 @@ === generatorReturnTypeInference.ts === declare const iterableIterator: IterableIterator; ->iterableIterator : IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>iterableIterator : IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^ declare const generator: Generator; >generator : Generator @@ -57,8 +57,8 @@ function* g004() { // Generator yield* iterableIterator; >yield* iterableIterator : void > : ^^^^ ->iterableIterator : IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>iterableIterator : IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^ } function* g005() { // Generator diff --git a/tests/baselines/reference/generatorReturnTypeInferenceNonStrict.types b/tests/baselines/reference/generatorReturnTypeInferenceNonStrict.types index e358284c7a58b..55d60768b8d88 100644 --- a/tests/baselines/reference/generatorReturnTypeInferenceNonStrict.types +++ b/tests/baselines/reference/generatorReturnTypeInferenceNonStrict.types @@ -2,8 +2,8 @@ === generatorReturnTypeInferenceNonStrict.ts === declare const iterableIterator: IterableIterator; ->iterableIterator : IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>iterableIterator : IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^ declare const generator: Generator; >generator : Generator @@ -59,8 +59,8 @@ function* g004() { // Generator yield* iterableIterator; >yield* iterableIterator : void > : ^^^^ ->iterableIterator : IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>iterableIterator : IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^ } function* g005() { // Generator diff --git a/tests/baselines/reference/generatorTypeCheck25.errors.txt b/tests/baselines/reference/generatorTypeCheck25.errors.txt index 6dab523e46b6a..02fb671a031ef 100644 --- a/tests/baselines/reference/generatorTypeCheck25.errors.txt +++ b/tests/baselines/reference/generatorTypeCheck25.errors.txt @@ -1,5 +1,5 @@ -generatorTypeCheck25.ts(4,5): error TS2322: Type '() => Generator' is not assignable to type '() => Iterable'. - Call signature return types 'Generator' and 'Iterable' are incompatible. +generatorTypeCheck25.ts(4,5): error TS2322: Type '() => Generator' is not assignable to type '() => Iterable'. + Call signature return types 'Generator' and 'Iterable' are incompatible. The types returned by '[Symbol.iterator]().next(...)' are incompatible between these types. Type 'IteratorResult' is not assignable to type 'IteratorResult'. Type 'IteratorYieldResult' is not assignable to type 'IteratorResult'. @@ -14,8 +14,8 @@ generatorTypeCheck25.ts(4,5): error TS2322: Type '() => Generator Iterable = function* () { ~~ -!!! error TS2322: Type '() => Generator' is not assignable to type '() => Iterable'. -!!! error TS2322: Call signature return types 'Generator' and 'Iterable' are incompatible. +!!! error TS2322: Type '() => Generator' is not assignable to type '() => Iterable'. +!!! error TS2322: Call signature return types 'Generator' and 'Iterable' are incompatible. !!! error TS2322: The types returned by '[Symbol.iterator]().next(...)' are incompatible between these types. !!! error TS2322: Type 'IteratorResult' is not assignable to type 'IteratorResult'. !!! error TS2322: Type 'IteratorYieldResult' is not assignable to type 'IteratorResult'. diff --git a/tests/baselines/reference/generatorTypeCheck31.errors.txt b/tests/baselines/reference/generatorTypeCheck31.errors.txt index 0d9deeb3bea68..20cd419808324 100644 --- a/tests/baselines/reference/generatorTypeCheck31.errors.txt +++ b/tests/baselines/reference/generatorTypeCheck31.errors.txt @@ -1,5 +1,5 @@ -generatorTypeCheck31.ts(2,11): error TS2322: Type 'Generator<(x: any) => any, void, unknown>' is not assignable to type '() => Iterable<(x: string) => number, void, undefined>'. - Type 'Generator<(x: any) => any, void, unknown>' provides no match for the signature '(): Iterable<(x: string) => number, void, undefined>'. +generatorTypeCheck31.ts(2,11): error TS2322: Type 'Generator<(x: any) => any, void, unknown>' is not assignable to type '() => Iterable<(x: string) => number>'. + Type 'Generator<(x: any) => any, void, unknown>' provides no match for the signature '(): Iterable<(x: string) => number>'. ==== generatorTypeCheck31.ts (1 errors) ==== @@ -10,6 +10,6 @@ generatorTypeCheck31.ts(2,11): error TS2322: Type 'Generator<(x: any) => any, vo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ } () ~~~~~~~~ -!!! error TS2322: Type 'Generator<(x: any) => any, void, unknown>' is not assignable to type '() => Iterable<(x: string) => number, void, undefined>'. -!!! error TS2322: Type 'Generator<(x: any) => any, void, unknown>' provides no match for the signature '(): Iterable<(x: string) => number, void, undefined>'. +!!! error TS2322: Type 'Generator<(x: any) => any, void, unknown>' is not assignable to type '() => Iterable<(x: string) => number>'. +!!! error TS2322: Type 'Generator<(x: any) => any, void, unknown>' provides no match for the signature '(): Iterable<(x: string) => number>'. } \ No newline at end of file diff --git a/tests/baselines/reference/generatorTypeCheck62.errors.txt b/tests/baselines/reference/generatorTypeCheck62.errors.txt index bb33c02cc5718..80e17caec1a2e 100644 --- a/tests/baselines/reference/generatorTypeCheck62.errors.txt +++ b/tests/baselines/reference/generatorTypeCheck62.errors.txt @@ -1,12 +1,12 @@ -generatorTypeCheck62.ts(24,62): error TS2345: Argument of type '(state: State) => Generator' is not assignable to parameter of type '(a: State) => IterableIterator'. - Call signature return types 'Generator' and 'IterableIterator' are incompatible. +generatorTypeCheck62.ts(24,62): error TS2345: Argument of type '(state: State) => Generator' is not assignable to parameter of type '(a: State) => IterableIterator'. + Call signature return types 'Generator' and 'IterableIterator' are incompatible. The types returned by 'next(...)' are incompatible between these types. Type 'IteratorResult' is not assignable to type 'IteratorResult'. Type 'IteratorReturnResult' is not assignable to type 'IteratorResult'. Type 'IteratorReturnResult' is not assignable to type 'IteratorReturnResult'. Type 'State' is not assignable to type 'void'. -generatorTypeCheck62.ts(32,62): error TS2345: Argument of type '(state: State) => Generator' is not assignable to parameter of type '(a: any) => IterableIterator'. - Call signature return types 'Generator' and 'IterableIterator' are incompatible. +generatorTypeCheck62.ts(32,62): error TS2345: Argument of type '(state: State) => Generator' is not assignable to parameter of type '(a: any) => IterableIterator'. + Call signature return types 'Generator' and 'IterableIterator' are incompatible. The types returned by 'next(...)' are incompatible between these types. Type 'IteratorResult' is not assignable to type 'IteratorResult'. Type 'IteratorReturnResult' is not assignable to type 'IteratorResult'. @@ -39,8 +39,8 @@ generatorTypeCheck62.ts(32,62): error TS2345: Argument of type '(state: State) = export const Nothing1: 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: Call signature return types 'Generator' and 'IterableIterator' are incompatible. +!!! error TS2345: Argument of type '(state: State) => Generator' is not assignable to parameter of type '(a: State) => IterableIterator'. +!!! error TS2345: Call signature return types 'Generator' and 'IterableIterator' are incompatible. !!! error TS2345: The types returned by 'next(...)' are incompatible between these types. !!! error TS2345: Type 'IteratorResult' is not assignable to type 'IteratorResult'. !!! error TS2345: Type 'IteratorReturnResult' is not assignable to type 'IteratorResult'. @@ -55,8 +55,8 @@ generatorTypeCheck62.ts(32,62): error TS2345: Argument of type '(state: State) = export const Nothing3: Strategy = strategy("Nothing", function* (state: State) { ~~~~~~~~ -!!! error TS2345: Argument of type '(state: State) => Generator' is not assignable to parameter of type '(a: any) => IterableIterator'. -!!! error TS2345: Call signature return types 'Generator' and 'IterableIterator' are incompatible. +!!! error TS2345: Argument of type '(state: State) => Generator' is not assignable to parameter of type '(a: any) => IterableIterator'. +!!! error TS2345: Call signature return types 'Generator' and 'IterableIterator' are incompatible. !!! error TS2345: The types returned by 'next(...)' are incompatible between these types. !!! error TS2345: Type 'IteratorResult' is not assignable to type 'IteratorResult'. !!! error TS2345: Type 'IteratorReturnResult' is not assignable to type 'IteratorResult'. diff --git a/tests/baselines/reference/generatorTypeCheck62.types b/tests/baselines/reference/generatorTypeCheck62.types index 88350acea12d3..efa1296adfbeb 100644 --- a/tests/baselines/reference/generatorTypeCheck62.types +++ b/tests/baselines/reference/generatorTypeCheck62.types @@ -28,10 +28,10 @@ export function strategy(stratName: string, gen: (a: T for (const next of gen(state)) { >next : T > : ^ ->gen(state) : IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->gen : (a: T) => IterableIterator -> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>gen(state) : IterableIterator +> : ^^^^^^^^^^^^^^^^^^^ +>gen : (a: T) => IterableIterator +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ >state : T > : ^ @@ -75,10 +75,10 @@ export interface State extends StrategicState { export const Nothing1: Strategy = strategy("Nothing", function*(state: State) { >Nothing1 : Strategy > : ^^^^^^^^^^^^^^^ ->strategy("Nothing", function*(state: State) { return state; // `return`/`TReturn` isn't supported by `strategy`, so this should error.}) : (a: State) => IterableIterator -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->strategy : (stratName: string, gen: (a: T) => IterableIterator) => (a: T) => IterableIterator -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>strategy("Nothing", function*(state: State) { return state; // `return`/`TReturn` isn't supported by `strategy`, so this should error.}) : (a: State) => IterableIterator +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>strategy : (stratName: string, gen: (a: T) => IterableIterator) => (a: T) => IterableIterator +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ >"Nothing" : "Nothing" > : ^^^^^^^^^ >function*(state: State) { return state; // `return`/`TReturn` isn't supported by `strategy`, so this should error.} : (state: State) => Generator @@ -95,10 +95,10 @@ export const Nothing1: Strategy = strategy("Nothing", function*(state: St export const Nothing2: Strategy = strategy("Nothing", function*(state: State) { >Nothing2 : Strategy > : ^^^^^^^^^^^^^^^ ->strategy("Nothing", function*(state: State) { yield state;}) : (a: State) => IterableIterator -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->strategy : (stratName: string, gen: (a: T) => IterableIterator) => (a: T) => IterableIterator -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>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 @@ -117,10 +117,10 @@ export const Nothing2: Strategy = strategy("Nothing", function*(state: St export const Nothing3: Strategy = strategy("Nothing", function* (state: State) { >Nothing3 : Strategy > : ^^^^^^^^^^^^^^^ ->strategy("Nothing", function* (state: State) { yield ; return state; // `return`/`TReturn` isn't supported by `strategy`, so this should error.}) : (a: State) => IterableIterator -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->strategy : (stratName: string, gen: (a: T) => IterableIterator) => (a: T) => IterableIterator -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>strategy("Nothing", function* (state: State) { yield ; return state; // `return`/`TReturn` isn't supported by `strategy`, so this should error.}) : (a: State) => IterableIterator +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>strategy : (stratName: string, gen: (a: T) => IterableIterator) => (a: T) => IterableIterator +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ >"Nothing" : "Nothing" > : ^^^^^^^^^ >function* (state: State) { yield ; return state; // `return`/`TReturn` isn't supported by `strategy`, so this should error.} : (state: State) => Generator diff --git a/tests/baselines/reference/generatorTypeCheck63.errors.txt b/tests/baselines/reference/generatorTypeCheck63.errors.txt index 0bc38e821c54d..17a6b44c2d173 100644 --- a/tests/baselines/reference/generatorTypeCheck63.errors.txt +++ b/tests/baselines/reference/generatorTypeCheck63.errors.txt @@ -1,19 +1,19 @@ -generatorTypeCheck63.ts(24,61): error TS2345: Argument of type '(state: State) => Generator' is not assignable to parameter of type '(a: State) => IterableIterator'. - Call signature return types 'Generator' and 'IterableIterator' are incompatible. +generatorTypeCheck63.ts(24,61): error TS2345: Argument of type '(state: State) => Generator' is not assignable to parameter of type '(a: State) => IterableIterator'. + Call signature return types 'Generator' and 'IterableIterator' are incompatible. The types returned by 'next(...)' are incompatible between these types. 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 'number' is not assignable to type 'State'. -generatorTypeCheck63.ts(32,62): error TS2345: Argument of type '(state: State) => Generator' is not assignable to parameter of type '(a: State) => IterableIterator'. - Call signature return types 'Generator' and 'IterableIterator' are incompatible. +generatorTypeCheck63.ts(32,62): error TS2345: Argument of type '(state: State) => Generator' is not assignable to parameter of type '(a: State) => IterableIterator'. + Call signature return types 'Generator' and 'IterableIterator' are incompatible. The types returned by 'next(...)' are incompatible between these types. Type 'IteratorResult' is not assignable to type 'IteratorResult'. Type 'IteratorReturnResult' is not assignable to type 'IteratorResult'. Type 'IteratorReturnResult' is not assignable to type 'IteratorReturnResult'. Type 'number' is not assignable to type 'void'. -generatorTypeCheck63.ts(36,62): error TS2345: Argument of type '(state: State) => Generator' is not assignable to parameter of type '(a: State) => IterableIterator'. - Call signature return types 'Generator' and 'IterableIterator' are incompatible. +generatorTypeCheck63.ts(36,62): error TS2345: Argument of type '(state: State) => Generator' is not assignable to parameter of type '(a: State) => IterableIterator'. + Call signature return types 'Generator' and 'IterableIterator' are incompatible. The types returned by 'next(...)' are incompatible between these types. Type 'IteratorResult' is not assignable to type 'IteratorResult'. Type 'IteratorReturnResult' is not assignable to type 'IteratorResult'. @@ -45,8 +45,8 @@ generatorTypeCheck63.ts(36,62): error TS2345: Argument of type '(state: State) = 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: Call signature return types 'Generator' and 'IterableIterator' are incompatible. +!!! error TS2345: Argument of type '(state: State) => Generator' is not assignable to parameter of type '(a: State) => IterableIterator'. +!!! error TS2345: Call signature return types 'Generator' and 'IterableIterator' are incompatible. !!! error TS2345: The types returned by 'next(...)' are incompatible between these types. !!! error TS2345: Type 'IteratorResult' is not assignable to type 'IteratorResult'. !!! error TS2345: Type 'IteratorYieldResult' is not assignable to type 'IteratorResult'. @@ -61,8 +61,8 @@ generatorTypeCheck63.ts(36,62): error TS2345: Argument of type '(state: State) = export const Nothing2: 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: Call signature return types 'Generator' and 'IterableIterator' are incompatible. +!!! error TS2345: Argument of type '(state: State) => Generator' is not assignable to parameter of type '(a: State) => IterableIterator'. +!!! error TS2345: Call signature return types 'Generator' and 'IterableIterator' are incompatible. !!! error TS2345: The types returned by 'next(...)' are incompatible between these types. !!! error TS2345: Type 'IteratorResult' is not assignable to type 'IteratorResult'. !!! error TS2345: Type 'IteratorReturnResult' is not assignable to type 'IteratorResult'. @@ -73,8 +73,8 @@ generatorTypeCheck63.ts(36,62): error TS2345: Argument of type '(state: State) = export const Nothing3: 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: Call signature return types 'Generator' and 'IterableIterator' are incompatible. +!!! error TS2345: Argument of type '(state: State) => Generator' is not assignable to parameter of type '(a: State) => IterableIterator'. +!!! error TS2345: Call signature return types 'Generator' and 'IterableIterator' are incompatible. !!! error TS2345: The types returned by 'next(...)' are incompatible between these types. !!! error TS2345: Type 'IteratorResult' is not assignable to type 'IteratorResult'. !!! error TS2345: Type 'IteratorReturnResult' is not assignable to type 'IteratorResult'. diff --git a/tests/baselines/reference/generatorTypeCheck63.types b/tests/baselines/reference/generatorTypeCheck63.types index 1174de3e6d98c..da12bbcf6e23c 100644 --- a/tests/baselines/reference/generatorTypeCheck63.types +++ b/tests/baselines/reference/generatorTypeCheck63.types @@ -28,10 +28,10 @@ export function strategy(stratName: string, gen: (a: T for (const next of gen(state)) { >next : T > : ^ ->gen(state) : IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->gen : (a: T) => IterableIterator -> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>gen(state) : IterableIterator +> : ^^^^^^^^^^^^^^^^^^^ +>gen : (a: T) => IterableIterator +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ >state : T > : ^ @@ -75,10 +75,10 @@ export interface State extends StrategicState { export const Nothing: Strategy = strategy("Nothing", function* (state: State) { >Nothing : Strategy > : ^^^^^^^^^^^^^^^ ->strategy("Nothing", function* (state: State) { yield 1; // number isn't a `State`, so this should error. return state; // `return`/`TReturn` isn't supported by `strategy`, so this should error.}) : (a: State) => IterableIterator -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->strategy : (stratName: string, gen: (a: T) => IterableIterator) => (a: T) => IterableIterator -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>strategy("Nothing", function* (state: State) { yield 1; // number isn't a `State`, so this should error. return state; // `return`/`TReturn` isn't supported by `strategy`, so this should error.}) : (a: State) => IterableIterator +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>strategy : (stratName: string, gen: (a: T) => IterableIterator) => (a: T) => IterableIterator +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ >"Nothing" : "Nothing" > : ^^^^^^^^^ >function* (state: State) { yield 1; // number isn't a `State`, so this should error. return state; // `return`/`TReturn` isn't supported by `strategy`, so this should error.} : (state: State) => Generator @@ -101,10 +101,10 @@ export const Nothing: Strategy = strategy("Nothing", function* (state: St export const Nothing1: Strategy = strategy("Nothing", function* (state: State) { >Nothing1 : Strategy > : ^^^^^^^^^^^^^^^ ->strategy("Nothing", function* (state: State) {}) : (a: State) => IterableIterator -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->strategy : (stratName: string, gen: (a: T) => IterableIterator) => (a: T) => IterableIterator -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>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 @@ -117,10 +117,10 @@ export const Nothing1: Strategy = strategy("Nothing", function* (state: S export const Nothing2: Strategy = strategy("Nothing", function* (state: State) { >Nothing2 : Strategy > : ^^^^^^^^^^^^^^^ ->strategy("Nothing", function* (state: State) { return 1; // `return`/`TReturn` isn't supported by `strategy`, so this should error.}) : (a: State) => IterableIterator -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->strategy : (stratName: string, gen: (a: T) => IterableIterator) => (a: T) => IterableIterator -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>strategy("Nothing", function* (state: State) { return 1; // `return`/`TReturn` isn't supported by `strategy`, so this should error.}) : (a: State) => IterableIterator +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>strategy : (stratName: string, gen: (a: T) => IterableIterator) => (a: T) => IterableIterator +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ >"Nothing" : "Nothing" > : ^^^^^^^^^ >function* (state: State) { return 1; // `return`/`TReturn` isn't supported by `strategy`, so this should error.} : (state: State) => Generator @@ -137,10 +137,10 @@ export const Nothing2: Strategy = strategy("Nothing", function* (state: S export const Nothing3: Strategy = strategy("Nothing", function* (state: State) { >Nothing3 : Strategy > : ^^^^^^^^^^^^^^^ ->strategy("Nothing", function* (state: State) { yield state; return 1; // `return`/`TReturn` isn't supported by `strategy`, so this should error.}) : (a: State) => IterableIterator -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->strategy : (stratName: string, gen: (a: T) => IterableIterator) => (a: T) => IterableIterator -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>strategy("Nothing", function* (state: State) { yield state; return 1; // `return`/`TReturn` isn't supported by `strategy`, so this should error.}) : (a: State) => IterableIterator +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>strategy : (stratName: string, gen: (a: T) => IterableIterator) => (a: T) => IterableIterator +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ >"Nothing" : "Nothing" > : ^^^^^^^^^ >function* (state: State) { yield state; return 1; // `return`/`TReturn` isn't supported by `strategy`, so this should error.} : (state: State) => Generator diff --git a/tests/baselines/reference/indexSignatureInOtherFile.errors.txt b/tests/baselines/reference/indexSignatureInOtherFile.errors.txt index de582a4737f71..812abd3f8198e 100644 --- a/tests/baselines/reference/indexSignatureInOtherFile.errors.txt +++ b/tests/baselines/reference/indexSignatureInOtherFile.errors.txt @@ -1,4 +1,4 @@ -index.ts(2,3): error TS2411: Property '[Symbol.iterator]' of type '() => IterableIterator' is not assignable to 'symbol' index type 'string'. +index.ts(2,3): error TS2411: Property '[Symbol.iterator]' of type '() => IterableIterator' is not assignable to 'symbol' index type 'string'. index.ts(2,3): error TS2411: Property '[Symbol.unscopables]' of type '() => { copyWithin: boolean; entries: boolean; fill: boolean; find: boolean; findIndex: boolean; keys: boolean; values: boolean; }' is not assignable to 'symbol' index type 'string'. @@ -6,7 +6,7 @@ index.ts(2,3): error TS2411: Property '[Symbol.unscopables]' of type '() => { co class Test extends Array1 { [key: symbol]: string ~~~~~~~~~~~~~~~~~~~~~ -!!! error TS2411: Property '[Symbol.iterator]' of type '() => IterableIterator' is not assignable to 'symbol' index type 'string'. +!!! error TS2411: Property '[Symbol.iterator]' of type '() => IterableIterator' is not assignable to 'symbol' index type 'string'. !!! related TS2728 other.ts:14:3: '[Symbol.iterator]' is declared here. ~~~~~~~~~~~~~~~~~~~~~ !!! error TS2411: Property '[Symbol.unscopables]' of type '() => { copyWithin: boolean; entries: boolean; fill: boolean; find: boolean; findIndex: boolean; keys: boolean; values: boolean; }' is not assignable to 'symbol' index type 'string'. diff --git a/tests/baselines/reference/indexSignatureInOtherFile1.errors.txt b/tests/baselines/reference/indexSignatureInOtherFile1.errors.txt index dec98c937da64..6a802d303ace7 100644 --- a/tests/baselines/reference/indexSignatureInOtherFile1.errors.txt +++ b/tests/baselines/reference/indexSignatureInOtherFile1.errors.txt @@ -1,4 +1,4 @@ -index.ts(2,3): error TS2411: Property '[Symbol.iterator]' of type '() => IterableIterator' is not assignable to 'symbol' index type 'string'. +index.ts(2,3): error TS2411: Property '[Symbol.iterator]' of type '() => IterableIterator' is not assignable to 'symbol' index type 'string'. index.ts(2,3): error TS2411: Property '[Symbol.unscopables]' of type '() => { copyWithin: boolean; entries: boolean; fill: boolean; find: boolean; findIndex: boolean; keys: boolean; values: boolean; }' is not assignable to 'symbol' index type 'string'. @@ -40,7 +40,7 @@ index.ts(2,3): error TS2411: Property '[Symbol.unscopables]' of type '() => { co class Test extends Array1 { [key: symbol]: string ~~~~~~~~~~~~~~~~~~~~~ -!!! error TS2411: Property '[Symbol.iterator]' of type '() => IterableIterator' is not assignable to 'symbol' index type 'string'. +!!! error TS2411: Property '[Symbol.iterator]' of type '() => IterableIterator' is not assignable to 'symbol' index type 'string'. !!! related TS2728 other.ts:14:3: '[Symbol.iterator]' is declared here. ~~~~~~~~~~~~~~~~~~~~~ !!! error TS2411: Property '[Symbol.unscopables]' of type '() => { copyWithin: boolean; entries: boolean; fill: boolean; find: boolean; findIndex: boolean; keys: boolean; values: boolean; }' is not assignable to 'symbol' index type 'string'. diff --git a/tests/baselines/reference/indirectGlobalSymbolPartOfObjectType.types b/tests/baselines/reference/indirectGlobalSymbolPartOfObjectType.types index 62eeebefcc18d..6003f038d368e 100644 --- a/tests/baselines/reference/indirectGlobalSymbolPartOfObjectType.types +++ b/tests/baselines/reference/indirectGlobalSymbolPartOfObjectType.types @@ -13,8 +13,8 @@ const Symbol = globalThis.Symbol; > : ^^^^^^^^^^^^^^^^^ [][Symbol.iterator]; ->[][Symbol.iterator] : () => IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>[][Symbol.iterator] : () => IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >[] : undefined[] > : ^^^^^^^^^^^ >Symbol.iterator : unique symbol diff --git a/tests/baselines/reference/iterableArrayPattern28.errors.txt b/tests/baselines/reference/iterableArrayPattern28.errors.txt index da59e3eaef907..d0ac57cd7c5f5 100644 --- a/tests/baselines/reference/iterableArrayPattern28.errors.txt +++ b/tests/baselines/reference/iterableArrayPattern28.errors.txt @@ -1,6 +1,6 @@ iterableArrayPattern28.ts(2,28): error TS2769: No overload matches this call. - Overload 1 of 4, '(iterable?: Iterable): Map', gave the following error. - Argument of type '([string, number] | [string, boolean])[]' is not assignable to parameter of type 'Iterable'. + Overload 1 of 4, '(iterable?: Iterable): Map', gave the following error. + Argument of type '([string, number] | [string, boolean])[]' is not assignable to parameter of type 'Iterable'. The types returned by '[Symbol.iterator]().next(...)' are incompatible between these types. Type 'IteratorResult<[string, number] | [string, boolean], void>' is not assignable to type 'IteratorResult'. Type 'IteratorYieldResult<[string, number] | [string, boolean]>' is not assignable to type 'IteratorResult'. @@ -18,8 +18,8 @@ iterableArrayPattern28.ts(2,28): error TS2769: No overload matches this call. takeFirstTwoEntries(...new Map([["", 0], ["hello", true]])); ~~~ !!! error TS2769: No overload matches this call. -!!! error TS2769: Overload 1 of 4, '(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: Overload 1 of 4, '(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: The types returned by '[Symbol.iterator]().next(...)' are incompatible between these types. !!! error TS2769: Type 'IteratorResult<[string, number] | [string, boolean], void>' is not assignable to type 'IteratorResult'. !!! error TS2769: Type 'IteratorYieldResult<[string, number] | [string, boolean]>' is not assignable to type 'IteratorResult'. diff --git a/tests/baselines/reference/iterableContextualTyping1.types b/tests/baselines/reference/iterableContextualTyping1.types index 8235c582318f5..a5f32840bbffb 100644 --- a/tests/baselines/reference/iterableContextualTyping1.types +++ b/tests/baselines/reference/iterableContextualTyping1.types @@ -2,8 +2,8 @@ === iterableContextualTyping1.ts === var iter: Iterable<(x: string) => number> = [s => s.length]; ->iter : Iterable<(x: string) => number, void, undefined> -> : ^^^^^^^^^^ ^^ ^^^^^ ^^^^^^^^^^^^^^^^^^ +>iter : Iterable<(x: string) => number> +> : ^^^^^^^^^^ ^^ ^^^^^ ^ >x : string > : ^^^^^^ >[s => s.length] : ((s: string) => number)[] diff --git a/tests/baselines/reference/iteratorSpreadInArray11.types b/tests/baselines/reference/iteratorSpreadInArray11.types index f89e26a007824..74b9fa365ebb0 100644 --- a/tests/baselines/reference/iteratorSpreadInArray11.types +++ b/tests/baselines/reference/iteratorSpreadInArray11.types @@ -2,8 +2,8 @@ === iteratorSpreadInArray11.ts === var iter: Iterable; ->iter : Iterable -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>iter : Iterable +> : ^^^^^^^^^^^^^^^^ var array = [...iter]; >array : number[] @@ -12,6 +12,6 @@ var array = [...iter]; > : ^^^^^^^^ >...iter : number > : ^^^^^^ ->iter : Iterable -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>iter : Iterable +> : ^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/jsxChildrenWrongType.types b/tests/baselines/reference/jsxChildrenWrongType.types index c59104fb66564..b5fa7dbf6194c 100644 --- a/tests/baselines/reference/jsxChildrenWrongType.types +++ b/tests/baselines/reference/jsxChildrenWrongType.types @@ -11,8 +11,8 @@ Instantiation count: 1,000 interface PropsType { children: [string, number?] | Iterable; ->children : [string, number?] | Iterable -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>children : [string, number?] | Iterable +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ } declare class Foo extends React.Component {} >Foo : Foo diff --git a/tests/baselines/reference/mapConstructor.types b/tests/baselines/reference/mapConstructor.types index 7fe1dc99108df..8d1b342d04b24 100644 --- a/tests/baselines/reference/mapConstructor.types +++ b/tests/baselines/reference/mapConstructor.types @@ -8,10 +8,10 @@ new Map(); > : ^^^^^^^^^^^^^^ const potentiallyUndefinedIterable = [['1', 1], ['2', 2]] as Iterable<[string, number]> | undefined; ->potentiallyUndefinedIterable : Iterable<[string, number], void, undefined> | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->[['1', 1], ['2', 2]] as Iterable<[string, number]> | undefined : Iterable<[string, number], void, undefined> | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>potentiallyUndefinedIterable : Iterable<[string, number]> | undefined +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>[['1', 1], ['2', 2]] as Iterable<[string, number]> | undefined : Iterable<[string, number]> | undefined +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >[['1', 1], ['2', 2]] : [string, number][] > : ^^^^^^^^^^^^^^^^^^ >['1', 1] : [string, number] @@ -32,14 +32,14 @@ new Map(potentiallyUndefinedIterable); > : ^^^^^^^^^^^^^^^^^^^ >Map : MapConstructor > : ^^^^^^^^^^^^^^ ->potentiallyUndefinedIterable : Iterable<[string, number], void, undefined> | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>potentiallyUndefinedIterable : Iterable<[string, number]> | undefined +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ const potentiallyNullIterable = [['1', 1], ['2', 2]] as Iterable<[string, number]> | null; ->potentiallyNullIterable : Iterable<[string, number], void, undefined> | null -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->[['1', 1], ['2', 2]] as Iterable<[string, number]> | null : Iterable<[string, number], void, undefined> | null -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>potentiallyNullIterable : Iterable<[string, number]> | null +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>[['1', 1], ['2', 2]] as Iterable<[string, number]> | null : Iterable<[string, number]> | null +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >[['1', 1], ['2', 2]] : [string, number][] > : ^^^^^^^^^^^^^^^^^^ >['1', 1] : [string, number] @@ -60,6 +60,6 @@ new Map(potentiallyNullIterable); > : ^^^^^^^^^^^^^^^^^^^ >Map : MapConstructor > : ^^^^^^^^^^^^^^ ->potentiallyNullIterable : Iterable<[string, number], void, undefined> | null -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>potentiallyNullIterable : Iterable<[string, number]> | null +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/mappedTypeWithAsClauseAndLateBoundProperty.errors.txt b/tests/baselines/reference/mappedTypeWithAsClauseAndLateBoundProperty.errors.txt index 81a39b93086cc..380aa151c2c22 100644 --- a/tests/baselines/reference/mappedTypeWithAsClauseAndLateBoundProperty.errors.txt +++ b/tests/baselines/reference/mappedTypeWithAsClauseAndLateBoundProperty.errors.txt @@ -1,4 +1,4 @@ -mappedTypeWithAsClauseAndLateBoundProperty.ts(3,1): error TS2741: Property 'length' is missing in type '{ [x: number]: number; toString: () => string; toLocaleString: { (): string; (locales: string | string[], options?: NumberFormatOptions & DateTimeFormatOptions): string; }; pop: () => number; push: (...items: number[]) => number; concat: { (...items: ConcatArray[]): number[]; (...items: (number | ConcatArray)[]): number[]; }; join: (separator?: string) => string; reverse: () => number[]; shift: () => number; slice: (start?: number, end?: number) => number[]; sort: (compareFn?: (a: number, b: number) => number) => number[]; splice: { (start: number, deleteCount?: number): number[]; (start: number, deleteCount: number, ...items: number[]): number[]; }; unshift: (...items: number[]) => number; indexOf: (searchElement: number, fromIndex?: number) => number; lastIndexOf: (searchElement: number, fromIndex?: number) => number; every: { (predicate: (value: number, index: number, array: number[]) => value is S, thisArg?: any): this is S[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): boolean; }; some: (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any) => boolean; forEach: (callbackfn: (value: number, index: number, array: number[]) => void, thisArg?: any) => void; map: (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[]; filter: { (predicate: (value: number, index: number, array: number[]) => value is S, thisArg?: any): S[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): number[]; }; reduce: { (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number): number; (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number, initialValue: number): number; (callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: number[]) => U, initialValue: U): U; }; reduceRight: { (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number): number; (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number, initialValue: number): number; (callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: number[]) => U, initialValue: U): U; }; find: { (predicate: (value: number, index: number, obj: number[]) => value is S, thisArg?: any): S; (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any): number; }; findIndex: (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any) => number; fill: (value: number, start?: number, end?: number) => number[]; copyWithin: (target: number, start: number, end?: number) => number[]; entries: () => IterableIterator<[number, number], void, undefined>; keys: () => IterableIterator; values: () => IterableIterator; includes: (searchElement: number, fromIndex?: number) => boolean; flatMap: (callback: (this: This, value: number, index: number, array: number[]) => U | readonly U[], thisArg?: This) => U[]; flat: (this: A, depth?: D) => FlatArray[]; [Symbol.iterator]: () => IterableIterator; readonly [Symbol.unscopables]: { [x: number]: boolean; length?: boolean; toString?: boolean; toLocaleString?: boolean; pop?: boolean; push?: boolean; concat?: boolean; join?: boolean; reverse?: boolean; shift?: boolean; slice?: boolean; sort?: boolean; splice?: boolean; unshift?: boolean; indexOf?: boolean; lastIndexOf?: boolean; every?: boolean; some?: boolean; forEach?: boolean; map?: boolean; filter?: boolean; reduce?: boolean; reduceRight?: boolean; find?: boolean; findIndex?: boolean; fill?: boolean; copyWithin?: boolean; entries?: boolean; keys?: boolean; values?: boolean; includes?: boolean; flatMap?: boolean; flat?: boolean; [Symbol.iterator]?: boolean; readonly [Symbol.unscopables]?: boolean; }; }' but required in type 'number[]'. +mappedTypeWithAsClauseAndLateBoundProperty.ts(3,1): error TS2741: Property 'length' is missing in type '{ [x: number]: number; toString: () => string; toLocaleString: { (): string; (locales: string | string[], options?: NumberFormatOptions & DateTimeFormatOptions): string; }; pop: () => number; push: (...items: number[]) => number; concat: { (...items: ConcatArray[]): number[]; (...items: (number | ConcatArray)[]): number[]; }; join: (separator?: string) => string; reverse: () => number[]; shift: () => number; slice: (start?: number, end?: number) => number[]; sort: (compareFn?: (a: number, b: number) => number) => number[]; splice: { (start: number, deleteCount?: number): number[]; (start: number, deleteCount: number, ...items: number[]): number[]; }; unshift: (...items: number[]) => number; indexOf: (searchElement: number, fromIndex?: number) => number; lastIndexOf: (searchElement: number, fromIndex?: number) => number; every: { (predicate: (value: number, index: number, array: number[]) => value is S, thisArg?: any): this is S[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): boolean; }; some: (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any) => boolean; forEach: (callbackfn: (value: number, index: number, array: number[]) => void, thisArg?: any) => void; map: (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[]; filter: { (predicate: (value: number, index: number, array: number[]) => value is S, thisArg?: any): S[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): number[]; }; reduce: { (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number): number; (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number, initialValue: number): number; (callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: number[]) => U, initialValue: U): U; }; reduceRight: { (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number): number; (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number, initialValue: number): number; (callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: number[]) => U, initialValue: U): U; }; find: { (predicate: (value: number, index: number, obj: number[]) => value is S, thisArg?: any): S; (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any): number; }; findIndex: (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any) => number; fill: (value: number, start?: number, end?: number) => number[]; copyWithin: (target: number, start: number, end?: number) => number[]; entries: () => IterableIterator<[number, number]>; keys: () => IterableIterator; values: () => IterableIterator; includes: (searchElement: number, fromIndex?: number) => boolean; flatMap: (callback: (this: This, value: number, index: number, array: number[]) => U | readonly U[], thisArg?: This) => U[]; flat: (this: A, depth?: D) => FlatArray[]; [Symbol.iterator]: () => IterableIterator; readonly [Symbol.unscopables]: { [x: number]: boolean; length?: boolean; toString?: boolean; toLocaleString?: boolean; pop?: boolean; push?: boolean; concat?: boolean; join?: boolean; reverse?: boolean; shift?: boolean; slice?: boolean; sort?: boolean; splice?: boolean; unshift?: boolean; indexOf?: boolean; lastIndexOf?: boolean; every?: boolean; some?: boolean; forEach?: boolean; map?: boolean; filter?: boolean; reduce?: boolean; reduceRight?: boolean; find?: boolean; findIndex?: boolean; fill?: boolean; copyWithin?: boolean; entries?: boolean; keys?: boolean; values?: boolean; includes?: boolean; flatMap?: boolean; flat?: boolean; [Symbol.iterator]?: boolean; readonly [Symbol.unscopables]?: boolean; }; }' but required in type 'number[]'. ==== mappedTypeWithAsClauseAndLateBoundProperty.ts (1 errors) ==== @@ -6,6 +6,6 @@ mappedTypeWithAsClauseAndLateBoundProperty.ts(3,1): error TS2741: Property 'leng declare let src2: { [K in keyof number[] as Exclude]: (number[])[K] }; tgt2 = src2; // Should error ~~~~ -!!! error TS2741: Property 'length' is missing in type '{ [x: number]: number; toString: () => string; toLocaleString: { (): string; (locales: string | string[], options?: NumberFormatOptions & DateTimeFormatOptions): string; }; pop: () => number; push: (...items: number[]) => number; concat: { (...items: ConcatArray[]): number[]; (...items: (number | ConcatArray)[]): number[]; }; join: (separator?: string) => string; reverse: () => number[]; shift: () => number; slice: (start?: number, end?: number) => number[]; sort: (compareFn?: (a: number, b: number) => number) => number[]; splice: { (start: number, deleteCount?: number): number[]; (start: number, deleteCount: number, ...items: number[]): number[]; }; unshift: (...items: number[]) => number; indexOf: (searchElement: number, fromIndex?: number) => number; lastIndexOf: (searchElement: number, fromIndex?: number) => number; every: { (predicate: (value: number, index: number, array: number[]) => value is S, thisArg?: any): this is S[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): boolean; }; some: (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any) => boolean; forEach: (callbackfn: (value: number, index: number, array: number[]) => void, thisArg?: any) => void; map: (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[]; filter: { (predicate: (value: number, index: number, array: number[]) => value is S, thisArg?: any): S[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): number[]; }; reduce: { (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number): number; (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number, initialValue: number): number; (callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: number[]) => U, initialValue: U): U; }; reduceRight: { (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number): number; (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number, initialValue: number): number; (callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: number[]) => U, initialValue: U): U; }; find: { (predicate: (value: number, index: number, obj: number[]) => value is S, thisArg?: any): S; (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any): number; }; findIndex: (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any) => number; fill: (value: number, start?: number, end?: number) => number[]; copyWithin: (target: number, start: number, end?: number) => number[]; entries: () => IterableIterator<[number, number], void, undefined>; keys: () => IterableIterator; values: () => IterableIterator; includes: (searchElement: number, fromIndex?: number) => boolean; flatMap: (callback: (this: This, value: number, index: number, array: number[]) => U | readonly U[], thisArg?: This) => U[]; flat: (this: A, depth?: D) => FlatArray[]; [Symbol.iterator]: () => IterableIterator; readonly [Symbol.unscopables]: { [x: number]: boolean; length?: boolean; toString?: boolean; toLocaleString?: boolean; pop?: boolean; push?: boolean; concat?: boolean; join?: boolean; reverse?: boolean; shift?: boolean; slice?: boolean; sort?: boolean; splice?: boolean; unshift?: boolean; indexOf?: boolean; lastIndexOf?: boolean; every?: boolean; some?: boolean; forEach?: boolean; map?: boolean; filter?: boolean; reduce?: boolean; reduceRight?: boolean; find?: boolean; findIndex?: boolean; fill?: boolean; copyWithin?: boolean; entries?: boolean; keys?: boolean; values?: boolean; includes?: boolean; flatMap?: boolean; flat?: boolean; [Symbol.iterator]?: boolean; readonly [Symbol.unscopables]?: boolean; }; }' but required in type 'number[]'. +!!! error TS2741: Property 'length' is missing in type '{ [x: number]: number; toString: () => string; toLocaleString: { (): string; (locales: string | string[], options?: NumberFormatOptions & DateTimeFormatOptions): string; }; pop: () => number; push: (...items: number[]) => number; concat: { (...items: ConcatArray[]): number[]; (...items: (number | ConcatArray)[]): number[]; }; join: (separator?: string) => string; reverse: () => number[]; shift: () => number; slice: (start?: number, end?: number) => number[]; sort: (compareFn?: (a: number, b: number) => number) => number[]; splice: { (start: number, deleteCount?: number): number[]; (start: number, deleteCount: number, ...items: number[]): number[]; }; unshift: (...items: number[]) => number; indexOf: (searchElement: number, fromIndex?: number) => number; lastIndexOf: (searchElement: number, fromIndex?: number) => number; every: { (predicate: (value: number, index: number, array: number[]) => value is S, thisArg?: any): this is S[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): boolean; }; some: (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any) => boolean; forEach: (callbackfn: (value: number, index: number, array: number[]) => void, thisArg?: any) => void; map: (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[]; filter: { (predicate: (value: number, index: number, array: number[]) => value is S, thisArg?: any): S[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): number[]; }; reduce: { (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number): number; (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number, initialValue: number): number; (callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: number[]) => U, initialValue: U): U; }; reduceRight: { (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number): number; (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number, initialValue: number): number; (callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: number[]) => U, initialValue: U): U; }; find: { (predicate: (value: number, index: number, obj: number[]) => value is S, thisArg?: any): S; (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any): number; }; findIndex: (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any) => number; fill: (value: number, start?: number, end?: number) => number[]; copyWithin: (target: number, start: number, end?: number) => number[]; entries: () => IterableIterator<[number, number]>; keys: () => IterableIterator; values: () => IterableIterator; includes: (searchElement: number, fromIndex?: number) => boolean; flatMap: (callback: (this: This, value: number, index: number, array: number[]) => U | readonly U[], thisArg?: This) => U[]; flat: (this: A, depth?: D) => FlatArray[]; [Symbol.iterator]: () => IterableIterator; readonly [Symbol.unscopables]: { [x: number]: boolean; length?: boolean; toString?: boolean; toLocaleString?: boolean; pop?: boolean; push?: boolean; concat?: boolean; join?: boolean; reverse?: boolean; shift?: boolean; slice?: boolean; sort?: boolean; splice?: boolean; unshift?: boolean; indexOf?: boolean; lastIndexOf?: boolean; every?: boolean; some?: boolean; forEach?: boolean; map?: boolean; filter?: boolean; reduce?: boolean; reduceRight?: boolean; find?: boolean; findIndex?: boolean; fill?: boolean; copyWithin?: boolean; entries?: boolean; keys?: boolean; values?: boolean; includes?: boolean; flatMap?: boolean; flat?: boolean; [Symbol.iterator]?: boolean; readonly [Symbol.unscopables]?: boolean; }; }' but required in type 'number[]'. !!! related TS2728 lib.es5.d.ts:--:--: 'length' is declared here. \ No newline at end of file diff --git a/tests/baselines/reference/mappedTypeWithAsClauseAndLateBoundProperty.types b/tests/baselines/reference/mappedTypeWithAsClauseAndLateBoundProperty.types index e3106a655a532..263f5212c5853 100644 --- a/tests/baselines/reference/mappedTypeWithAsClauseAndLateBoundProperty.types +++ b/tests/baselines/reference/mappedTypeWithAsClauseAndLateBoundProperty.types @@ -6,14 +6,14 @@ declare let tgt2: number[]; > : ^^^^^^^^ declare let src2: { [K in keyof number[] as Exclude]: (number[])[K] }; ->src2 : { [x: number]: number; toString: () => string; toLocaleString: { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; }; pop: () => number; push: (...items: number[]) => number; concat: { (...items: ConcatArray[]): number[]; (...items: (number | ConcatArray)[]): number[]; }; join: (separator?: string) => string; reverse: () => number[]; shift: () => number; slice: (start?: number, end?: number) => number[]; sort: (compareFn?: (a: number, b: number) => number) => number[]; splice: { (start: number, deleteCount?: number): number[]; (start: number, deleteCount: number, ...items: number[]): number[]; }; unshift: (...items: number[]) => number; indexOf: (searchElement: number, fromIndex?: number) => number; lastIndexOf: (searchElement: number, fromIndex?: number) => number; every: { (predicate: (value: number, index: number, array: number[]) => value is S, thisArg?: any): this is S[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): boolean; }; some: (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any) => boolean; forEach: (callbackfn: (value: number, index: number, array: number[]) => void, thisArg?: any) => void; map: (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[]; filter: { (predicate: (value: number, index: number, array: number[]) => value is S_1, thisArg?: any): S_1[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): number[]; }; reduce: { (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number): number; (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number, initialValue: number): number; (callbackfn: (previousValue: U_1, currentValue: number, currentIndex: number, array: number[]) => U_1, initialValue: U_1): U_1; }; reduceRight: { (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number): number; (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number, initialValue: number): number; (callbackfn: (previousValue: U_2, currentValue: number, currentIndex: number, array: number[]) => U_2, initialValue: U_2): U_2; }; find: { (predicate: (value: number, index: number, obj: number[]) => value is S_2, thisArg?: any): S_2; (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any): number; }; findIndex: (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any) => number; fill: (value: number, start?: number, end?: number) => number[]; copyWithin: (target: number, start: number, end?: number) => number[]; entries: () => IterableIterator<[number, number], void, undefined>; keys: () => IterableIterator; values: () => IterableIterator; includes: (searchElement: number, fromIndex?: number) => boolean; flatMap: (callback: (this: This, value: number, index: number, array: number[]) => U_3 | readonly U_3[], thisArg?: This) => U_3[]; flat: (this: A, depth?: D) => FlatArray[]; [Symbol.iterator]: () => IterableIterator; readonly [Symbol.unscopables]: { [x: number]: boolean; length?: boolean; toString?: boolean; toLocaleString?: boolean; pop?: boolean; push?: boolean; concat?: boolean; join?: boolean; reverse?: boolean; shift?: boolean; slice?: boolean; sort?: boolean; splice?: boolean; unshift?: boolean; indexOf?: boolean; lastIndexOf?: boolean; every?: boolean; some?: boolean; forEach?: boolean; map?: boolean; filter?: boolean; reduce?: boolean; reduceRight?: boolean; find?: boolean; findIndex?: boolean; fill?: boolean; copyWithin?: boolean; entries?: boolean; keys?: boolean; values?: boolean; includes?: boolean; flatMap?: boolean; flat?: boolean; [Symbol.iterator]?: boolean; readonly [Symbol.unscopables]?: boolean; }; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>src2 : { [x: number]: number; toString: () => string; toLocaleString: { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; }; pop: () => number; push: (...items: number[]) => number; concat: { (...items: ConcatArray[]): number[]; (...items: (number | ConcatArray)[]): number[]; }; join: (separator?: string) => string; reverse: () => number[]; shift: () => number; slice: (start?: number, end?: number) => number[]; sort: (compareFn?: (a: number, b: number) => number) => number[]; splice: { (start: number, deleteCount?: number): number[]; (start: number, deleteCount: number, ...items: number[]): number[]; }; unshift: (...items: number[]) => number; indexOf: (searchElement: number, fromIndex?: number) => number; lastIndexOf: (searchElement: number, fromIndex?: number) => number; every: { (predicate: (value: number, index: number, array: number[]) => value is S, thisArg?: any): this is S[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): boolean; }; some: (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any) => boolean; forEach: (callbackfn: (value: number, index: number, array: number[]) => void, thisArg?: any) => void; map: (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[]; filter: { (predicate: (value: number, index: number, array: number[]) => value is S_1, thisArg?: any): S_1[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): number[]; }; reduce: { (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number): number; (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number, initialValue: number): number; (callbackfn: (previousValue: U_1, currentValue: number, currentIndex: number, array: number[]) => U_1, initialValue: U_1): U_1; }; reduceRight: { (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number): number; (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number, initialValue: number): number; (callbackfn: (previousValue: U_2, currentValue: number, currentIndex: number, array: number[]) => U_2, initialValue: U_2): U_2; }; find: { (predicate: (value: number, index: number, obj: number[]) => value is S_2, thisArg?: any): S_2; (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any): number; }; findIndex: (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any) => number; fill: (value: number, start?: number, end?: number) => number[]; copyWithin: (target: number, start: number, end?: number) => number[]; entries: () => IterableIterator<[number, number]>; keys: () => IterableIterator; values: () => IterableIterator; includes: (searchElement: number, fromIndex?: number) => boolean; flatMap: (callback: (this: This, value: number, index: number, array: number[]) => U_3 | readonly U_3[], thisArg?: This) => U_3[]; flat: (this: A, depth?: D) => FlatArray[]; [Symbol.iterator]: () => IterableIterator; readonly [Symbol.unscopables]: { [x: number]: boolean; length?: boolean; toString?: boolean; toLocaleString?: boolean; pop?: boolean; push?: boolean; concat?: boolean; join?: boolean; reverse?: boolean; shift?: boolean; slice?: boolean; sort?: boolean; splice?: boolean; unshift?: boolean; indexOf?: boolean; lastIndexOf?: boolean; every?: boolean; some?: boolean; forEach?: boolean; map?: boolean; filter?: boolean; reduce?: boolean; reduceRight?: boolean; find?: boolean; findIndex?: boolean; fill?: boolean; copyWithin?: boolean; entries?: boolean; keys?: boolean; values?: boolean; includes?: boolean; flatMap?: boolean; flat?: boolean; [Symbol.iterator]?: boolean; readonly [Symbol.unscopables]?: boolean; }; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ tgt2 = src2; // Should error ->tgt2 = src2 : { [x: number]: number; toString: () => string; toLocaleString: { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; }; pop: () => number; push: (...items: number[]) => number; concat: { (...items: ConcatArray[]): number[]; (...items: (number | ConcatArray)[]): number[]; }; join: (separator?: string) => string; reverse: () => number[]; shift: () => number; slice: (start?: number, end?: number) => number[]; sort: (compareFn?: (a: number, b: number) => number) => number[]; splice: { (start: number, deleteCount?: number): number[]; (start: number, deleteCount: number, ...items: number[]): number[]; }; unshift: (...items: number[]) => number; indexOf: (searchElement: number, fromIndex?: number) => number; lastIndexOf: (searchElement: number, fromIndex?: number) => number; every: { (predicate: (value: number, index: number, array: number[]) => value is S, thisArg?: any): this is S[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): boolean; }; some: (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any) => boolean; forEach: (callbackfn: (value: number, index: number, array: number[]) => void, thisArg?: any) => void; map: (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[]; filter: { (predicate: (value: number, index: number, array: number[]) => value is S_1, thisArg?: any): S_1[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): number[]; }; reduce: { (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number): number; (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number, initialValue: number): number; (callbackfn: (previousValue: U_1, currentValue: number, currentIndex: number, array: number[]) => U_1, initialValue: U_1): U_1; }; reduceRight: { (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number): number; (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number, initialValue: number): number; (callbackfn: (previousValue: U_2, currentValue: number, currentIndex: number, array: number[]) => U_2, initialValue: U_2): U_2; }; find: { (predicate: (value: number, index: number, obj: number[]) => value is S_2, thisArg?: any): S_2; (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any): number; }; findIndex: (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any) => number; fill: (value: number, start?: number, end?: number) => number[]; copyWithin: (target: number, start: number, end?: number) => number[]; entries: () => IterableIterator<[number, number], void, undefined>; keys: () => IterableIterator; values: () => IterableIterator; includes: (searchElement: number, fromIndex?: number) => boolean; flatMap: (callback: (this: This, value: number, index: number, array: number[]) => U_3 | readonly U_3[], thisArg?: This) => U_3[]; flat: (this: A, depth?: D) => FlatArray[]; [Symbol.iterator]: () => IterableIterator; readonly [Symbol.unscopables]: { [x: number]: boolean; length?: boolean; toString?: boolean; toLocaleString?: boolean; pop?: boolean; push?: boolean; concat?: boolean; join?: boolean; reverse?: boolean; shift?: boolean; slice?: boolean; sort?: boolean; splice?: boolean; unshift?: boolean; indexOf?: boolean; lastIndexOf?: boolean; every?: boolean; some?: boolean; forEach?: boolean; map?: boolean; filter?: boolean; reduce?: boolean; reduceRight?: boolean; find?: boolean; findIndex?: boolean; fill?: boolean; copyWithin?: boolean; entries?: boolean; keys?: boolean; values?: boolean; includes?: boolean; flatMap?: boolean; flat?: boolean; [Symbol.iterator]?: boolean; readonly [Symbol.unscopables]?: boolean; }; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>tgt2 = src2 : { [x: number]: number; toString: () => string; toLocaleString: { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; }; pop: () => number; push: (...items: number[]) => number; concat: { (...items: ConcatArray[]): number[]; (...items: (number | ConcatArray)[]): number[]; }; join: (separator?: string) => string; reverse: () => number[]; shift: () => number; slice: (start?: number, end?: number) => number[]; sort: (compareFn?: (a: number, b: number) => number) => number[]; splice: { (start: number, deleteCount?: number): number[]; (start: number, deleteCount: number, ...items: number[]): number[]; }; unshift: (...items: number[]) => number; indexOf: (searchElement: number, fromIndex?: number) => number; lastIndexOf: (searchElement: number, fromIndex?: number) => number; every: { (predicate: (value: number, index: number, array: number[]) => value is S, thisArg?: any): this is S[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): boolean; }; some: (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any) => boolean; forEach: (callbackfn: (value: number, index: number, array: number[]) => void, thisArg?: any) => void; map: (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[]; filter: { (predicate: (value: number, index: number, array: number[]) => value is S_1, thisArg?: any): S_1[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): number[]; }; reduce: { (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number): number; (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number, initialValue: number): number; (callbackfn: (previousValue: U_1, currentValue: number, currentIndex: number, array: number[]) => U_1, initialValue: U_1): U_1; }; reduceRight: { (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number): number; (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number, initialValue: number): number; (callbackfn: (previousValue: U_2, currentValue: number, currentIndex: number, array: number[]) => U_2, initialValue: U_2): U_2; }; find: { (predicate: (value: number, index: number, obj: number[]) => value is S_2, thisArg?: any): S_2; (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any): number; }; findIndex: (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any) => number; fill: (value: number, start?: number, end?: number) => number[]; copyWithin: (target: number, start: number, end?: number) => number[]; entries: () => IterableIterator<[number, number]>; keys: () => IterableIterator; values: () => IterableIterator; includes: (searchElement: number, fromIndex?: number) => boolean; flatMap: (callback: (this: This, value: number, index: number, array: number[]) => U_3 | readonly U_3[], thisArg?: This) => U_3[]; flat: (this: A, depth?: D) => FlatArray[]; [Symbol.iterator]: () => IterableIterator; readonly [Symbol.unscopables]: { [x: number]: boolean; length?: boolean; toString?: boolean; toLocaleString?: boolean; pop?: boolean; push?: boolean; concat?: boolean; join?: boolean; reverse?: boolean; shift?: boolean; slice?: boolean; sort?: boolean; splice?: boolean; unshift?: boolean; indexOf?: boolean; lastIndexOf?: boolean; every?: boolean; some?: boolean; forEach?: boolean; map?: boolean; filter?: boolean; reduce?: boolean; reduceRight?: boolean; find?: boolean; findIndex?: boolean; fill?: boolean; copyWithin?: boolean; entries?: boolean; keys?: boolean; values?: boolean; includes?: boolean; flatMap?: boolean; flat?: boolean; [Symbol.iterator]?: boolean; readonly [Symbol.unscopables]?: boolean; }; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >tgt2 : number[] > : ^^^^^^^^ ->src2 : { [x: number]: number; toString: () => string; toLocaleString: { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; }; pop: () => number; push: (...items: number[]) => number; concat: { (...items: ConcatArray[]): number[]; (...items: (number | ConcatArray)[]): number[]; }; join: (separator?: string) => string; reverse: () => number[]; shift: () => number; slice: (start?: number, end?: number) => number[]; sort: (compareFn?: (a: number, b: number) => number) => number[]; splice: { (start: number, deleteCount?: number): number[]; (start: number, deleteCount: number, ...items: number[]): number[]; }; unshift: (...items: number[]) => number; indexOf: (searchElement: number, fromIndex?: number) => number; lastIndexOf: (searchElement: number, fromIndex?: number) => number; every: { (predicate: (value: number, index: number, array: number[]) => value is S, thisArg?: any): this is S[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): boolean; }; some: (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any) => boolean; forEach: (callbackfn: (value: number, index: number, array: number[]) => void, thisArg?: any) => void; map: (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[]; filter: { (predicate: (value: number, index: number, array: number[]) => value is S_1, thisArg?: any): S_1[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): number[]; }; reduce: { (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number): number; (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number, initialValue: number): number; (callbackfn: (previousValue: U_1, currentValue: number, currentIndex: number, array: number[]) => U_1, initialValue: U_1): U_1; }; reduceRight: { (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number): number; (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number, initialValue: number): number; (callbackfn: (previousValue: U_2, currentValue: number, currentIndex: number, array: number[]) => U_2, initialValue: U_2): U_2; }; find: { (predicate: (value: number, index: number, obj: number[]) => value is S_2, thisArg?: any): S_2; (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any): number; }; findIndex: (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any) => number; fill: (value: number, start?: number, end?: number) => number[]; copyWithin: (target: number, start: number, end?: number) => number[]; entries: () => IterableIterator<[number, number], void, undefined>; keys: () => IterableIterator; values: () => IterableIterator; includes: (searchElement: number, fromIndex?: number) => boolean; flatMap: (callback: (this: This, value: number, index: number, array: number[]) => U_3 | readonly U_3[], thisArg?: This) => U_3[]; flat: (this: A, depth?: D) => FlatArray[]; [Symbol.iterator]: () => IterableIterator; readonly [Symbol.unscopables]: { [x: number]: boolean; length?: boolean; toString?: boolean; toLocaleString?: boolean; pop?: boolean; push?: boolean; concat?: boolean; join?: boolean; reverse?: boolean; shift?: boolean; slice?: boolean; sort?: boolean; splice?: boolean; unshift?: boolean; indexOf?: boolean; lastIndexOf?: boolean; every?: boolean; some?: boolean; forEach?: boolean; map?: boolean; filter?: boolean; reduce?: boolean; reduceRight?: boolean; find?: boolean; findIndex?: boolean; fill?: boolean; copyWithin?: boolean; entries?: boolean; keys?: boolean; values?: boolean; includes?: boolean; flatMap?: boolean; flat?: boolean; [Symbol.iterator]?: boolean; readonly [Symbol.unscopables]?: boolean; }; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>src2 : { [x: number]: number; toString: () => string; toLocaleString: { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; }; pop: () => number; push: (...items: number[]) => number; concat: { (...items: ConcatArray[]): number[]; (...items: (number | ConcatArray)[]): number[]; }; join: (separator?: string) => string; reverse: () => number[]; shift: () => number; slice: (start?: number, end?: number) => number[]; sort: (compareFn?: (a: number, b: number) => number) => number[]; splice: { (start: number, deleteCount?: number): number[]; (start: number, deleteCount: number, ...items: number[]): number[]; }; unshift: (...items: number[]) => number; indexOf: (searchElement: number, fromIndex?: number) => number; lastIndexOf: (searchElement: number, fromIndex?: number) => number; every: { (predicate: (value: number, index: number, array: number[]) => value is S, thisArg?: any): this is S[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): boolean; }; some: (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any) => boolean; forEach: (callbackfn: (value: number, index: number, array: number[]) => void, thisArg?: any) => void; map: (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[]; filter: { (predicate: (value: number, index: number, array: number[]) => value is S_1, thisArg?: any): S_1[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): number[]; }; reduce: { (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number): number; (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number, initialValue: number): number; (callbackfn: (previousValue: U_1, currentValue: number, currentIndex: number, array: number[]) => U_1, initialValue: U_1): U_1; }; reduceRight: { (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number): number; (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number, initialValue: number): number; (callbackfn: (previousValue: U_2, currentValue: number, currentIndex: number, array: number[]) => U_2, initialValue: U_2): U_2; }; find: { (predicate: (value: number, index: number, obj: number[]) => value is S_2, thisArg?: any): S_2; (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any): number; }; findIndex: (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any) => number; fill: (value: number, start?: number, end?: number) => number[]; copyWithin: (target: number, start: number, end?: number) => number[]; entries: () => IterableIterator<[number, number]>; keys: () => IterableIterator; values: () => IterableIterator; includes: (searchElement: number, fromIndex?: number) => boolean; flatMap: (callback: (this: This, value: number, index: number, array: number[]) => U_3 | readonly U_3[], thisArg?: This) => U_3[]; flat: (this: A, depth?: D) => FlatArray[]; [Symbol.iterator]: () => IterableIterator; readonly [Symbol.unscopables]: { [x: number]: boolean; length?: boolean; toString?: boolean; toLocaleString?: boolean; pop?: boolean; push?: boolean; concat?: boolean; join?: boolean; reverse?: boolean; shift?: boolean; slice?: boolean; sort?: boolean; splice?: boolean; unshift?: boolean; indexOf?: boolean; lastIndexOf?: boolean; every?: boolean; some?: boolean; forEach?: boolean; map?: boolean; filter?: boolean; reduce?: boolean; reduceRight?: boolean; find?: boolean; findIndex?: boolean; fill?: boolean; copyWithin?: boolean; entries?: boolean; keys?: boolean; values?: boolean; includes?: boolean; flatMap?: boolean; flat?: boolean; [Symbol.iterator]?: boolean; readonly [Symbol.unscopables]?: boolean; }; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/mappedTypeWithAsClauseAndLateBoundProperty2.js b/tests/baselines/reference/mappedTypeWithAsClauseAndLateBoundProperty2.js index c715d7ee1cc3e..d4b703bce8ee4 100644 --- a/tests/baselines/reference/mappedTypeWithAsClauseAndLateBoundProperty2.js +++ b/tests/baselines/reference/mappedTypeWithAsClauseAndLateBoundProperty2.js @@ -62,13 +62,13 @@ export declare const thing: { findIndex: (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any) => number; fill: (value: number, start?: number, end?: number) => number[]; copyWithin: (target: number, start: number, end?: number) => number[]; - entries: () => IterableIterator<[number, number], void, undefined>; - keys: () => IterableIterator; - values: () => IterableIterator; + entries: () => IterableIterator<[number, number]>; + keys: () => IterableIterator; + values: () => IterableIterator; includes: (searchElement: number, fromIndex?: number) => boolean; flatMap: (callback: (this: This, value: number, index: number, array: number[]) => U_3 | readonly U_3[], thisArg?: This) => U_3[]; flat: (this: A, depth?: D) => FlatArray[]; - [Symbol.iterator]: () => IterableIterator; + [Symbol.iterator]: () => IterableIterator; readonly [Symbol.unscopables]: { [x: number]: boolean; length?: boolean; @@ -171,13 +171,13 @@ mappedTypeWithAsClauseAndLateBoundProperty2.d.ts(27,118): error TS2526: A 'this' findIndex: (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any) => number; fill: (value: number, start?: number, end?: number) => number[]; copyWithin: (target: number, start: number, end?: number) => number[]; - entries: () => IterableIterator<[number, number], void, undefined>; - keys: () => IterableIterator; - values: () => IterableIterator; + entries: () => IterableIterator<[number, number]>; + keys: () => IterableIterator; + values: () => IterableIterator; includes: (searchElement: number, fromIndex?: number) => boolean; flatMap: (callback: (this: This, value: number, index: number, array: number[]) => U_3 | readonly U_3[], thisArg?: This) => U_3[]; flat: (this: A, depth?: D) => FlatArray[]; - [Symbol.iterator]: () => IterableIterator; + [Symbol.iterator]: () => IterableIterator; readonly [Symbol.unscopables]: { [x: number]: boolean; length?: boolean; diff --git a/tests/baselines/reference/mappedTypeWithAsClauseAndLateBoundProperty2.types b/tests/baselines/reference/mappedTypeWithAsClauseAndLateBoundProperty2.types index c089563a53fe7..249c5f28218c7 100644 --- a/tests/baselines/reference/mappedTypeWithAsClauseAndLateBoundProperty2.types +++ b/tests/baselines/reference/mappedTypeWithAsClauseAndLateBoundProperty2.types @@ -2,11 +2,11 @@ === mappedTypeWithAsClauseAndLateBoundProperty2.ts === export const thing = (null as any as { [K in keyof number[] as Exclude]: (number[])[K] }); ->thing : { [x: number]: number; toString: () => string; toLocaleString: { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; }; pop: () => number; push: (...items: number[]) => number; concat: { (...items: ConcatArray[]): number[]; (...items: (number | ConcatArray)[]): number[]; }; join: (separator?: string) => string; reverse: () => number[]; shift: () => number; slice: (start?: number, end?: number) => number[]; sort: (compareFn?: (a: number, b: number) => number) => number[]; splice: { (start: number, deleteCount?: number): number[]; (start: number, deleteCount: number, ...items: number[]): number[]; }; unshift: (...items: number[]) => number; indexOf: (searchElement: number, fromIndex?: number) => number; lastIndexOf: (searchElement: number, fromIndex?: number) => number; every: { (predicate: (value: number, index: number, array: number[]) => value is S, thisArg?: any): this is S[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): boolean; }; some: (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any) => boolean; forEach: (callbackfn: (value: number, index: number, array: number[]) => void, thisArg?: any) => void; map: (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[]; filter: { (predicate: (value: number, index: number, array: number[]) => value is S_1, thisArg?: any): S_1[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): number[]; }; reduce: { (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number): number; (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number, initialValue: number): number; (callbackfn: (previousValue: U_1, currentValue: number, currentIndex: number, array: number[]) => U_1, initialValue: U_1): U_1; }; reduceRight: { (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number): number; (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number, initialValue: number): number; (callbackfn: (previousValue: U_2, currentValue: number, currentIndex: number, array: number[]) => U_2, initialValue: U_2): U_2; }; find: { (predicate: (value: number, index: number, obj: number[]) => value is S_2, thisArg?: any): S_2; (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any): number; }; findIndex: (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any) => number; fill: (value: number, start?: number, end?: number) => number[]; copyWithin: (target: number, start: number, end?: number) => number[]; entries: () => IterableIterator<[number, number], void, undefined>; keys: () => IterableIterator; values: () => IterableIterator; includes: (searchElement: number, fromIndex?: number) => boolean; flatMap: (callback: (this: This, value: number, index: number, array: number[]) => U_3 | readonly U_3[], thisArg?: This) => U_3[]; flat: (this: A, depth?: D) => FlatArray[]; [Symbol.iterator]: () => IterableIterator; readonly [Symbol.unscopables]: { [x: number]: boolean; length?: boolean; toString?: boolean; toLocaleString?: boolean; pop?: boolean; push?: boolean; concat?: boolean; join?: boolean; reverse?: boolean; shift?: boolean; slice?: boolean; sort?: boolean; splice?: boolean; unshift?: boolean; indexOf?: boolean; lastIndexOf?: boolean; every?: boolean; some?: boolean; forEach?: boolean; map?: boolean; filter?: boolean; reduce?: boolean; reduceRight?: boolean; find?: boolean; findIndex?: boolean; fill?: boolean; copyWithin?: boolean; entries?: boolean; keys?: boolean; values?: boolean; includes?: boolean; flatMap?: boolean; flat?: boolean; [Symbol.iterator]?: boolean; readonly [Symbol.unscopables]?: boolean; }; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->(null as any as { [K in keyof number[] as Exclude]: (number[])[K] }) : { [x: number]: number; toString: () => string; toLocaleString: { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; }; pop: () => number; push: (...items: number[]) => number; concat: { (...items: ConcatArray[]): number[]; (...items: (number | ConcatArray)[]): number[]; }; join: (separator?: string) => string; reverse: () => number[]; shift: () => number; slice: (start?: number, end?: number) => number[]; sort: (compareFn?: (a: number, b: number) => number) => number[]; splice: { (start: number, deleteCount?: number): number[]; (start: number, deleteCount: number, ...items: number[]): number[]; }; unshift: (...items: number[]) => number; indexOf: (searchElement: number, fromIndex?: number) => number; lastIndexOf: (searchElement: number, fromIndex?: number) => number; every: { (predicate: (value: number, index: number, array: number[]) => value is S, thisArg?: any): this is S[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): boolean; }; some: (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any) => boolean; forEach: (callbackfn: (value: number, index: number, array: number[]) => void, thisArg?: any) => void; map: (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[]; filter: { (predicate: (value: number, index: number, array: number[]) => value is S_1, thisArg?: any): S_1[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): number[]; }; reduce: { (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number): number; (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number, initialValue: number): number; (callbackfn: (previousValue: U_1, currentValue: number, currentIndex: number, array: number[]) => U_1, initialValue: U_1): U_1; }; reduceRight: { (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number): number; (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number, initialValue: number): number; (callbackfn: (previousValue: U_2, currentValue: number, currentIndex: number, array: number[]) => U_2, initialValue: U_2): U_2; }; find: { (predicate: (value: number, index: number, obj: number[]) => value is S_2, thisArg?: any): S_2; (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any): number; }; findIndex: (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any) => number; fill: (value: number, start?: number, end?: number) => number[]; copyWithin: (target: number, start: number, end?: number) => number[]; entries: () => IterableIterator<[number, number], void, undefined>; keys: () => IterableIterator; values: () => IterableIterator; includes: (searchElement: number, fromIndex?: number) => boolean; flatMap: (callback: (this: This, value: number, index: number, array: number[]) => U_3 | readonly U_3[], thisArg?: This) => U_3[]; flat: (this: A, depth?: D) => FlatArray[]; [Symbol.iterator]: () => IterableIterator; readonly [Symbol.unscopables]: { [x: number]: boolean; length?: boolean; toString?: boolean; toLocaleString?: boolean; pop?: boolean; push?: boolean; concat?: boolean; join?: boolean; reverse?: boolean; shift?: boolean; slice?: boolean; sort?: boolean; splice?: boolean; unshift?: boolean; indexOf?: boolean; lastIndexOf?: boolean; every?: boolean; some?: boolean; forEach?: boolean; map?: boolean; filter?: boolean; reduce?: boolean; reduceRight?: boolean; find?: boolean; findIndex?: boolean; fill?: boolean; copyWithin?: boolean; entries?: boolean; keys?: boolean; values?: boolean; includes?: boolean; flatMap?: boolean; flat?: boolean; [Symbol.iterator]?: boolean; readonly [Symbol.unscopables]?: boolean; }; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->null as any as { [K in keyof number[] as Exclude]: (number[])[K] } : { [x: number]: number; toString: () => string; toLocaleString: { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; }; pop: () => number; push: (...items: number[]) => number; concat: { (...items: ConcatArray[]): number[]; (...items: (number | ConcatArray)[]): number[]; }; join: (separator?: string) => string; reverse: () => number[]; shift: () => number; slice: (start?: number, end?: number) => number[]; sort: (compareFn?: (a: number, b: number) => number) => number[]; splice: { (start: number, deleteCount?: number): number[]; (start: number, deleteCount: number, ...items: number[]): number[]; }; unshift: (...items: number[]) => number; indexOf: (searchElement: number, fromIndex?: number) => number; lastIndexOf: (searchElement: number, fromIndex?: number) => number; every: { (predicate: (value: number, index: number, array: number[]) => value is S, thisArg?: any): this is S[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): boolean; }; some: (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any) => boolean; forEach: (callbackfn: (value: number, index: number, array: number[]) => void, thisArg?: any) => void; map: (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[]; filter: { (predicate: (value: number, index: number, array: number[]) => value is S_1, thisArg?: any): S_1[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): number[]; }; reduce: { (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number): number; (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number, initialValue: number): number; (callbackfn: (previousValue: U_1, currentValue: number, currentIndex: number, array: number[]) => U_1, initialValue: U_1): U_1; }; reduceRight: { (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number): number; (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number, initialValue: number): number; (callbackfn: (previousValue: U_2, currentValue: number, currentIndex: number, array: number[]) => U_2, initialValue: U_2): U_2; }; find: { (predicate: (value: number, index: number, obj: number[]) => value is S_2, thisArg?: any): S_2; (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any): number; }; findIndex: (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any) => number; fill: (value: number, start?: number, end?: number) => number[]; copyWithin: (target: number, start: number, end?: number) => number[]; entries: () => IterableIterator<[number, number], void, undefined>; keys: () => IterableIterator; values: () => IterableIterator; includes: (searchElement: number, fromIndex?: number) => boolean; flatMap: (callback: (this: This, value: number, index: number, array: number[]) => U_3 | readonly U_3[], thisArg?: This) => U_3[]; flat: (this: A, depth?: D) => FlatArray[]; [Symbol.iterator]: () => IterableIterator; readonly [Symbol.unscopables]: { [x: number]: boolean; length?: boolean; toString?: boolean; toLocaleString?: boolean; pop?: boolean; push?: boolean; concat?: boolean; join?: boolean; reverse?: boolean; shift?: boolean; slice?: boolean; sort?: boolean; splice?: boolean; unshift?: boolean; indexOf?: boolean; lastIndexOf?: boolean; every?: boolean; some?: boolean; forEach?: boolean; map?: boolean; filter?: boolean; reduce?: boolean; reduceRight?: boolean; find?: boolean; findIndex?: boolean; fill?: boolean; copyWithin?: boolean; entries?: boolean; keys?: boolean; values?: boolean; includes?: boolean; flatMap?: boolean; flat?: boolean; [Symbol.iterator]?: boolean; readonly [Symbol.unscopables]?: boolean; }; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>thing : { [x: number]: number; toString: () => string; toLocaleString: { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; }; pop: () => number; push: (...items: number[]) => number; concat: { (...items: ConcatArray[]): number[]; (...items: (number | ConcatArray)[]): number[]; }; join: (separator?: string) => string; reverse: () => number[]; shift: () => number; slice: (start?: number, end?: number) => number[]; sort: (compareFn?: (a: number, b: number) => number) => number[]; splice: { (start: number, deleteCount?: number): number[]; (start: number, deleteCount: number, ...items: number[]): number[]; }; unshift: (...items: number[]) => number; indexOf: (searchElement: number, fromIndex?: number) => number; lastIndexOf: (searchElement: number, fromIndex?: number) => number; every: { (predicate: (value: number, index: number, array: number[]) => value is S, thisArg?: any): this is S[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): boolean; }; some: (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any) => boolean; forEach: (callbackfn: (value: number, index: number, array: number[]) => void, thisArg?: any) => void; map: (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[]; filter: { (predicate: (value: number, index: number, array: number[]) => value is S_1, thisArg?: any): S_1[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): number[]; }; reduce: { (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number): number; (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number, initialValue: number): number; (callbackfn: (previousValue: U_1, currentValue: number, currentIndex: number, array: number[]) => U_1, initialValue: U_1): U_1; }; reduceRight: { (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number): number; (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number, initialValue: number): number; (callbackfn: (previousValue: U_2, currentValue: number, currentIndex: number, array: number[]) => U_2, initialValue: U_2): U_2; }; find: { (predicate: (value: number, index: number, obj: number[]) => value is S_2, thisArg?: any): S_2; (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any): number; }; findIndex: (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any) => number; fill: (value: number, start?: number, end?: number) => number[]; copyWithin: (target: number, start: number, end?: number) => number[]; entries: () => IterableIterator<[number, number]>; keys: () => IterableIterator; values: () => IterableIterator; includes: (searchElement: number, fromIndex?: number) => boolean; flatMap: (callback: (this: This, value: number, index: number, array: number[]) => U_3 | readonly U_3[], thisArg?: This) => U_3[]; flat: (this: A, depth?: D) => FlatArray[]; [Symbol.iterator]: () => IterableIterator; readonly [Symbol.unscopables]: { [x: number]: boolean; length?: boolean; toString?: boolean; toLocaleString?: boolean; pop?: boolean; push?: boolean; concat?: boolean; join?: boolean; reverse?: boolean; shift?: boolean; slice?: boolean; sort?: boolean; splice?: boolean; unshift?: boolean; indexOf?: boolean; lastIndexOf?: boolean; every?: boolean; some?: boolean; forEach?: boolean; map?: boolean; filter?: boolean; reduce?: boolean; reduceRight?: boolean; find?: boolean; findIndex?: boolean; fill?: boolean; copyWithin?: boolean; entries?: boolean; keys?: boolean; values?: boolean; includes?: boolean; flatMap?: boolean; flat?: boolean; [Symbol.iterator]?: boolean; readonly [Symbol.unscopables]?: boolean; }; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>(null as any as { [K in keyof number[] as Exclude]: (number[])[K] }) : { [x: number]: number; toString: () => string; toLocaleString: { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; }; pop: () => number; push: (...items: number[]) => number; concat: { (...items: ConcatArray[]): number[]; (...items: (number | ConcatArray)[]): number[]; }; join: (separator?: string) => string; reverse: () => number[]; shift: () => number; slice: (start?: number, end?: number) => number[]; sort: (compareFn?: (a: number, b: number) => number) => number[]; splice: { (start: number, deleteCount?: number): number[]; (start: number, deleteCount: number, ...items: number[]): number[]; }; unshift: (...items: number[]) => number; indexOf: (searchElement: number, fromIndex?: number) => number; lastIndexOf: (searchElement: number, fromIndex?: number) => number; every: { (predicate: (value: number, index: number, array: number[]) => value is S, thisArg?: any): this is S[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): boolean; }; some: (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any) => boolean; forEach: (callbackfn: (value: number, index: number, array: number[]) => void, thisArg?: any) => void; map: (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[]; filter: { (predicate: (value: number, index: number, array: number[]) => value is S_1, thisArg?: any): S_1[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): number[]; }; reduce: { (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number): number; (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number, initialValue: number): number; (callbackfn: (previousValue: U_1, currentValue: number, currentIndex: number, array: number[]) => U_1, initialValue: U_1): U_1; }; reduceRight: { (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number): number; (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number, initialValue: number): number; (callbackfn: (previousValue: U_2, currentValue: number, currentIndex: number, array: number[]) => U_2, initialValue: U_2): U_2; }; find: { (predicate: (value: number, index: number, obj: number[]) => value is S_2, thisArg?: any): S_2; (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any): number; }; findIndex: (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any) => number; fill: (value: number, start?: number, end?: number) => number[]; copyWithin: (target: number, start: number, end?: number) => number[]; entries: () => IterableIterator<[number, number]>; keys: () => IterableIterator; values: () => IterableIterator; includes: (searchElement: number, fromIndex?: number) => boolean; flatMap: (callback: (this: This, value: number, index: number, array: number[]) => U_3 | readonly U_3[], thisArg?: This) => U_3[]; flat: (this: A, depth?: D) => FlatArray[]; [Symbol.iterator]: () => IterableIterator; readonly [Symbol.unscopables]: { [x: number]: boolean; length?: boolean; toString?: boolean; toLocaleString?: boolean; pop?: boolean; push?: boolean; concat?: boolean; join?: boolean; reverse?: boolean; shift?: boolean; slice?: boolean; sort?: boolean; splice?: boolean; unshift?: boolean; indexOf?: boolean; lastIndexOf?: boolean; every?: boolean; some?: boolean; forEach?: boolean; map?: boolean; filter?: boolean; reduce?: boolean; reduceRight?: boolean; find?: boolean; findIndex?: boolean; fill?: boolean; copyWithin?: boolean; entries?: boolean; keys?: boolean; values?: boolean; includes?: boolean; flatMap?: boolean; flat?: boolean; [Symbol.iterator]?: boolean; readonly [Symbol.unscopables]?: boolean; }; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>null as any as { [K in keyof number[] as Exclude]: (number[])[K] } : { [x: number]: number; toString: () => string; toLocaleString: { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; }; pop: () => number; push: (...items: number[]) => number; concat: { (...items: ConcatArray[]): number[]; (...items: (number | ConcatArray)[]): number[]; }; join: (separator?: string) => string; reverse: () => number[]; shift: () => number; slice: (start?: number, end?: number) => number[]; sort: (compareFn?: (a: number, b: number) => number) => number[]; splice: { (start: number, deleteCount?: number): number[]; (start: number, deleteCount: number, ...items: number[]): number[]; }; unshift: (...items: number[]) => number; indexOf: (searchElement: number, fromIndex?: number) => number; lastIndexOf: (searchElement: number, fromIndex?: number) => number; every: { (predicate: (value: number, index: number, array: number[]) => value is S, thisArg?: any): this is S[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): boolean; }; some: (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any) => boolean; forEach: (callbackfn: (value: number, index: number, array: number[]) => void, thisArg?: any) => void; map: (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[]; filter: { (predicate: (value: number, index: number, array: number[]) => value is S_1, thisArg?: any): S_1[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): number[]; }; reduce: { (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number): number; (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number, initialValue: number): number; (callbackfn: (previousValue: U_1, currentValue: number, currentIndex: number, array: number[]) => U_1, initialValue: U_1): U_1; }; reduceRight: { (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number): number; (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number, initialValue: number): number; (callbackfn: (previousValue: U_2, currentValue: number, currentIndex: number, array: number[]) => U_2, initialValue: U_2): U_2; }; find: { (predicate: (value: number, index: number, obj: number[]) => value is S_2, thisArg?: any): S_2; (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any): number; }; findIndex: (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any) => number; fill: (value: number, start?: number, end?: number) => number[]; copyWithin: (target: number, start: number, end?: number) => number[]; entries: () => IterableIterator<[number, number]>; keys: () => IterableIterator; values: () => IterableIterator; includes: (searchElement: number, fromIndex?: number) => boolean; flatMap: (callback: (this: This, value: number, index: number, array: number[]) => U_3 | readonly U_3[], thisArg?: This) => U_3[]; flat: (this: A, depth?: D) => FlatArray[]; [Symbol.iterator]: () => IterableIterator; readonly [Symbol.unscopables]: { [x: number]: boolean; length?: boolean; toString?: boolean; toLocaleString?: boolean; pop?: boolean; push?: boolean; concat?: boolean; join?: boolean; reverse?: boolean; shift?: boolean; slice?: boolean; sort?: boolean; splice?: boolean; unshift?: boolean; indexOf?: boolean; lastIndexOf?: boolean; every?: boolean; some?: boolean; forEach?: boolean; map?: boolean; filter?: boolean; reduce?: boolean; reduceRight?: boolean; find?: boolean; findIndex?: boolean; fill?: boolean; copyWithin?: boolean; entries?: boolean; keys?: boolean; values?: boolean; includes?: boolean; flatMap?: boolean; flat?: boolean; [Symbol.iterator]?: boolean; readonly [Symbol.unscopables]?: boolean; }; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >null as any : any diff --git a/tests/baselines/reference/modularizeLibrary_NoErrorDuplicateLibOptions1.types b/tests/baselines/reference/modularizeLibrary_NoErrorDuplicateLibOptions1.types index 08383a9488bf0..100c9693e234e 100644 --- a/tests/baselines/reference/modularizeLibrary_NoErrorDuplicateLibOptions1.types +++ b/tests/baselines/reference/modularizeLibrary_NoErrorDuplicateLibOptions1.types @@ -58,14 +58,14 @@ m.clear(); // Using ES6 iterable m.keys(); ->m.keys() : IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->m.keys : () => IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>m.keys() : IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^ +>m.keys : () => IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >m : Map > : ^^^^^^^^^^^^^^^^^^^ ->keys : () => IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>keys : () => IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ // Using ES6 function function Baz() { } diff --git a/tests/baselines/reference/modularizeLibrary_NoErrorDuplicateLibOptions2.types b/tests/baselines/reference/modularizeLibrary_NoErrorDuplicateLibOptions2.types index cc6445dbbb9b3..a0f54835e1cca 100644 --- a/tests/baselines/reference/modularizeLibrary_NoErrorDuplicateLibOptions2.types +++ b/tests/baselines/reference/modularizeLibrary_NoErrorDuplicateLibOptions2.types @@ -58,14 +58,14 @@ m.clear(); // Using ES6 iterable m.keys(); ->m.keys() : IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->m.keys : () => IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>m.keys() : IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^ +>m.keys : () => IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >m : Map > : ^^^^^^^^^^^^^^^^^^^ ->keys : () => IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>keys : () => IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ // Using ES6 function function Baz() { } diff --git a/tests/baselines/reference/modularizeLibrary_TargetES5UsingES6Lib.types b/tests/baselines/reference/modularizeLibrary_TargetES5UsingES6Lib.types index c22f399af24fb..b5e4e42f60fe4 100644 --- a/tests/baselines/reference/modularizeLibrary_TargetES5UsingES6Lib.types +++ b/tests/baselines/reference/modularizeLibrary_TargetES5UsingES6Lib.types @@ -58,14 +58,14 @@ m.clear(); // Using ES6 iterable m.keys(); ->m.keys() : IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->m.keys : () => IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>m.keys() : IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^ +>m.keys : () => IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >m : Map > : ^^^^^^^^^^^^^^^^^^^ ->keys : () => IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>keys : () => IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ // Using ES6 function function Baz() { } diff --git a/tests/baselines/reference/modularizeLibrary_TargetES6UsingES6Lib.types b/tests/baselines/reference/modularizeLibrary_TargetES6UsingES6Lib.types index 5a4319793f806..1aae5089a1ab2 100644 --- a/tests/baselines/reference/modularizeLibrary_TargetES6UsingES6Lib.types +++ b/tests/baselines/reference/modularizeLibrary_TargetES6UsingES6Lib.types @@ -58,14 +58,14 @@ m.clear(); // Using ES6 iterable m.keys(); ->m.keys() : IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->m.keys : () => IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>m.keys() : IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^ +>m.keys : () => IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >m : Map > : ^^^^^^^^^^^^^^^^^^^ ->keys : () => IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>keys : () => IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ // Using ES6 function function Baz() { } diff --git a/tests/baselines/reference/partiallyNamedTuples2.types b/tests/baselines/reference/partiallyNamedTuples2.types index b968abfdf28c6..479f55bfe129f 100644 --- a/tests/baselines/reference/partiallyNamedTuples2.types +++ b/tests/baselines/reference/partiallyNamedTuples2.types @@ -45,10 +45,10 @@ const id1 = "abc" as string; > : ^^^^^ const matches = x.get(id1); ->matches : Iterable<[id2: string, object], void, undefined> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->x.get(id1) : Iterable<[id2: string, object], void, undefined> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>matches : Iterable<[id2: string, object]> +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>x.get(id1) : Iterable<[id2: string, object]> +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x.get : (...key: Key) => GetResult<[id1: string, id2: string], Key, object> > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : MultiKeyMap<[id1: string, id2: string], object> diff --git a/tests/baselines/reference/regexMatchAll-esnext.types b/tests/baselines/reference/regexMatchAll-esnext.types index 80376a95c7404..13c2b3b1572af 100644 --- a/tests/baselines/reference/regexMatchAll-esnext.types +++ b/tests/baselines/reference/regexMatchAll-esnext.types @@ -2,12 +2,12 @@ === regexMatchAll-esnext.ts === const matches = /\w/g[Symbol.matchAll]("matchAll"); ->matches : IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->/\w/g[Symbol.matchAll]("matchAll") : IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->/\w/g[Symbol.matchAll] : (str: string) => IterableIterator -> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>matches : IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>/\w/g[Symbol.matchAll]("matchAll") : IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>/\w/g[Symbol.matchAll] : (str: string) => IterableIterator +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >/\w/g : RegExp > : ^^^^^^ >Symbol.matchAll : unique symbol @@ -26,8 +26,8 @@ const array = [...matches]; > : ^^^^^^^^^^^^^^^^^^ >...matches : RegExpMatchArray > : ^^^^^^^^^^^^^^^^ ->matches : IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>matches : IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ const { index, input } = array[0]; >index : number diff --git a/tests/baselines/reference/regexMatchAll.types b/tests/baselines/reference/regexMatchAll.types index 9545aaa97d951..59bd4d730a162 100644 --- a/tests/baselines/reference/regexMatchAll.types +++ b/tests/baselines/reference/regexMatchAll.types @@ -2,12 +2,12 @@ === regexMatchAll.ts === const matches = /\w/g[Symbol.matchAll]("matchAll"); ->matches : IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->/\w/g[Symbol.matchAll]("matchAll") : IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->/\w/g[Symbol.matchAll] : (str: string) => IterableIterator -> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>matches : IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>/\w/g[Symbol.matchAll]("matchAll") : IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>/\w/g[Symbol.matchAll] : (str: string) => IterableIterator +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >/\w/g : RegExp > : ^^^^^^ >Symbol.matchAll : unique symbol @@ -26,8 +26,8 @@ const array = [...matches]; > : ^^^^^^^^^^^^^^^^^^ >...matches : RegExpMatchArray > : ^^^^^^^^^^^^^^^^ ->matches : IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>matches : IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ const { index, input } = array[0]; >index : number diff --git a/tests/baselines/reference/stringMatchAll.types b/tests/baselines/reference/stringMatchAll.types index fa06485f18aca..422c849e95422 100644 --- a/tests/baselines/reference/stringMatchAll.types +++ b/tests/baselines/reference/stringMatchAll.types @@ -2,16 +2,16 @@ === stringMatchAll.ts === const matches = "matchAll".matchAll(/\w/g); ->matches : IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->"matchAll".matchAll(/\w/g) : IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->"matchAll".matchAll : (regexp: RegExp) => IterableIterator -> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>matches : IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>"matchAll".matchAll(/\w/g) : IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>"matchAll".matchAll : (regexp: RegExp) => IterableIterator +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >"matchAll" : "matchAll" > : ^^^^^^^^^^ ->matchAll : (regexp: RegExp) => IterableIterator -> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>matchAll : (regexp: RegExp) => IterableIterator +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >/\w/g : RegExp > : ^^^^^^ @@ -22,8 +22,8 @@ const array = [...matches]; > : ^^^^^^^^^^^^^^^^^ >...matches : RegExpExecArray > : ^^^^^^^^^^^^^^^ ->matches : IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>matches : IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ const { index, input } = array[0]; >index : number diff --git a/tests/baselines/reference/typeArgumentInferenceApparentType1.types b/tests/baselines/reference/typeArgumentInferenceApparentType1.types index b11aa130b6809..6cd0ddccc5a74 100644 --- a/tests/baselines/reference/typeArgumentInferenceApparentType1.types +++ b/tests/baselines/reference/typeArgumentInferenceApparentType1.types @@ -4,8 +4,8 @@ function method(iterable: Iterable): T { >method : (iterable: Iterable) => T > : ^ ^^ ^^ ^^^^^ ->iterable : Iterable -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>iterable : Iterable +> : ^^^^^^^^^^^ return; } diff --git a/tests/baselines/reference/typeArgumentInferenceApparentType2.types b/tests/baselines/reference/typeArgumentInferenceApparentType2.types index 013ea15f95424..011e6a920ee86 100644 --- a/tests/baselines/reference/typeArgumentInferenceApparentType2.types +++ b/tests/baselines/reference/typeArgumentInferenceApparentType2.types @@ -4,12 +4,12 @@ function method(iterable: Iterable): T { >method : (iterable: Iterable) => T > : ^ ^^ ^^ ^^^^^ ->iterable : Iterable -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>iterable : Iterable +> : ^^^^^^^^^^^ function inner>() { ->inner : >() => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>inner : >() => void +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ var u: U; >u : U diff --git a/tests/baselines/reference/typeGuardNarrowByMutableUntypedField.types b/tests/baselines/reference/typeGuardNarrowByMutableUntypedField.types index 1cf7d5c0741cf..be91c4964d0ea 100644 --- a/tests/baselines/reference/typeGuardNarrowByMutableUntypedField.types +++ b/tests/baselines/reference/typeGuardNarrowByMutableUntypedField.types @@ -10,16 +10,16 @@ declare function hasOwnProperty

(target: {}, property: P): > : ^ declare const arrayLikeOrIterable: ArrayLike | Iterable; ->arrayLikeOrIterable : ArrayLike | Iterable -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>arrayLikeOrIterable : ArrayLike | Iterable +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ if (hasOwnProperty(arrayLikeOrIterable, 'length')) { >hasOwnProperty(arrayLikeOrIterable, 'length') : boolean > : ^^^^^^^ >hasOwnProperty :

(target: {}, property: P) => target is { [K in P]: unknown; } > : ^ ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->arrayLikeOrIterable : ArrayLike | Iterable -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>arrayLikeOrIterable : ArrayLike | Iterable +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >'length' : "length" > : ^^^^^^^^ diff --git a/tests/baselines/reference/typeGuardNarrowByUntypedField.types b/tests/baselines/reference/typeGuardNarrowByUntypedField.types index f24bb0dc3faf8..9c4aa923e39a3 100644 --- a/tests/baselines/reference/typeGuardNarrowByUntypedField.types +++ b/tests/baselines/reference/typeGuardNarrowByUntypedField.types @@ -10,16 +10,16 @@ declare function hasOwnProperty

(target: {}, property: P): > : ^ declare const arrayLikeOrIterable: ArrayLike | Iterable; ->arrayLikeOrIterable : ArrayLike | Iterable -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>arrayLikeOrIterable : ArrayLike | Iterable +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ if (hasOwnProperty(arrayLikeOrIterable, 'length')) { >hasOwnProperty(arrayLikeOrIterable, 'length') : boolean > : ^^^^^^^ >hasOwnProperty :

(target: {}, property: P) => target is { readonly [K in P]: unknown; } > : ^ ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->arrayLikeOrIterable : ArrayLike | Iterable -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>arrayLikeOrIterable : ArrayLike | Iterable +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >'length' : "length" > : ^^^^^^^^ diff --git a/tests/baselines/reference/types.asyncGenerators.es2018.2.errors.txt b/tests/baselines/reference/types.asyncGenerators.es2018.2.errors.txt index b4d3d1e1a5496..6795d00174eb2 100644 --- a/tests/baselines/reference/types.asyncGenerators.es2018.2.errors.txt +++ b/tests/baselines/reference/types.asyncGenerators.es2018.2.errors.txt @@ -1,25 +1,25 @@ types.asyncGenerators.es2018.2.ts(2,12): error TS2504: Type '{}' must have a '[Symbol.asyncIterator]()' method that returns an async iterator. types.asyncGenerators.es2018.2.ts(8,12): error TS2504: Type 'Promise' must have a '[Symbol.asyncIterator]()' method that returns an async iterator. -types.asyncGenerators.es2018.2.ts(10,7): error TS2322: Type '() => AsyncGenerator' is not assignable to type '() => AsyncIterableIterator'. - Call signature return types 'AsyncGenerator' and 'AsyncIterableIterator' are incompatible. +types.asyncGenerators.es2018.2.ts(10,7): error TS2322: Type '() => AsyncGenerator' is not assignable to type '() => AsyncIterableIterator'. + Call signature return types 'AsyncGenerator' and 'AsyncIterableIterator' are incompatible. The types returned by 'next(...)' are incompatible between these types. 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'. -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'. -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.asyncGenerators.es2018.2.ts(19,7): error TS2322: Type '() => AsyncGenerator' is not assignable to type '() => AsyncIterable'. - Call signature return types 'AsyncGenerator' and 'AsyncIterable' are incompatible. +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'. +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.asyncGenerators.es2018.2.ts(19,7): error TS2322: Type '() => AsyncGenerator' is not assignable to type '() => AsyncIterable'. + Call signature return types 'AsyncGenerator' and 'AsyncIterable' are incompatible. The types of '[Symbol.asyncIterator]().next' are incompatible between these types. Type '(...args: [] | [undefined]) => Promise>' is not assignable to type '(...args: [] | [undefined]) => Promise>'. -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'. -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'. +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'. +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'. 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'. types.asyncGenerators.es2018.2.ts(31,7): error TS2322: Type '() => AsyncGenerator' is not assignable to type '() => AsyncIterator'. @@ -35,8 +35,8 @@ types.asyncGenerators.es2018.2.ts(53,12): error TS2322: Type 'string' is not ass types.asyncGenerators.es2018.2.ts(56,11): error TS2322: Type 'string' is not assignable to type 'number'. types.asyncGenerators.es2018.2.ts(59,12): error TS2322: Type 'string' is not assignable to type 'number'. types.asyncGenerators.es2018.2.ts(62,12): error TS2322: Type 'string' is not assignable to type 'number'. -types.asyncGenerators.es2018.2.ts(64,42): error TS2741: Property '[Symbol.iterator]' is missing in type 'AsyncGenerator' but required in type 'IterableIterator'. -types.asyncGenerators.es2018.2.ts(67,42): error TS2741: Property '[Symbol.iterator]' is missing in type 'AsyncGenerator' but required in type 'Iterable'. +types.asyncGenerators.es2018.2.ts(64,42): error TS2741: Property '[Symbol.iterator]' is missing in type 'AsyncGenerator' but required in type 'IterableIterator'. +types.asyncGenerators.es2018.2.ts(67,42): error TS2741: Property '[Symbol.iterator]' is missing in type 'AsyncGenerator' but required in type 'Iterable'. types.asyncGenerators.es2018.2.ts(70,42): error TS2322: Type 'AsyncGenerator' is not assignable to type 'Iterator'. The types returned by 'next(...)' are incompatible between these types. Type 'Promise>' is not assignable to type 'IteratorResult'. @@ -60,8 +60,8 @@ types.asyncGenerators.es2018.2.ts(74,12): error TS2504: Type '{}' must have a '[ } const assignability1: () => AsyncIterableIterator = async function * () { ~~~~~~~~~~~~~~ -!!! error TS2322: Type '() => AsyncGenerator' is not assignable to type '() => AsyncIterableIterator'. -!!! error TS2322: Call signature return types 'AsyncGenerator' and 'AsyncIterableIterator' are incompatible. +!!! error TS2322: Type '() => AsyncGenerator' is not assignable to type '() => AsyncIterableIterator'. +!!! error TS2322: Call signature return types 'AsyncGenerator' and 'AsyncIterableIterator' are incompatible. !!! error TS2322: The types returned by 'next(...)' are incompatible between these types. !!! error TS2322: Type 'Promise>' is not assignable to type 'Promise>'. !!! error TS2322: Type 'IteratorResult' is not assignable to type 'IteratorResult'. @@ -72,34 +72,34 @@ types.asyncGenerators.es2018.2.ts(74,12): error TS2504: Type '{}' must have a '[ }; 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: Type '() => AsyncGenerator' is not assignable to type '() => AsyncIterableIterator'. +!!! error TS2322: Type 'AsyncGenerator' is not assignable to type 'AsyncIterableIterator'. yield* (async function * () { yield "a"; })(); }; const assignability4: () => AsyncIterable = async function * () { ~~~~~~~~~~~~~~ -!!! error TS2322: Type '() => AsyncGenerator' is not assignable to type '() => AsyncIterable'. -!!! error TS2322: Call signature return types 'AsyncGenerator' and 'AsyncIterable' are incompatible. +!!! error TS2322: Type '() => AsyncGenerator' is not assignable to type '() => AsyncIterable'. +!!! error TS2322: Call signature return types 'AsyncGenerator' and 'AsyncIterable' are incompatible. !!! error TS2322: The types of '[Symbol.asyncIterator]().next' are incompatible between these types. !!! error TS2322: Type '(...args: [] | [undefined]) => Promise>' is not assignable to type '(...args: [] | [undefined]) => 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: Type '() => AsyncGenerator' is not assignable to type '() => AsyncIterable'. +!!! error TS2322: Type 'AsyncGenerator' is not assignable to type 'AsyncIterable'. yield* (async function * () { yield "a"; })(); }; const assignability7: () => AsyncIterator = async function * () { @@ -167,13 +167,13 @@ types.asyncGenerators.es2018.2.ts(74,12): error TS2504: Type '{}' must have a '[ } 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 lib.es2015.iterable.d.ts:--:--: '[Symbol.iterator]' is declared here. yield 1; } async function * explicitReturnType11(): Iterable { ~~~~~~~~~~~~~~~~ -!!! error TS2741: Property '[Symbol.iterator]' is missing in type 'AsyncGenerator' but required in type 'Iterable'. +!!! error TS2741: Property '[Symbol.iterator]' is missing in type 'AsyncGenerator' but required in type 'Iterable'. !!! related TS2728 lib.es2015.iterable.d.ts:--:--: '[Symbol.iterator]' is declared here. yield 1; } diff --git a/tests/baselines/reference/types.forAwait.es2018.1.types b/tests/baselines/reference/types.forAwait.es2018.1.types index c083b202dcec0..21947f91db849 100644 --- a/tests/baselines/reference/types.forAwait.es2018.1.types +++ b/tests/baselines/reference/types.forAwait.es2018.1.types @@ -2,16 +2,16 @@ === types.forAwait.es2018.1.ts === declare const asyncIterable: AsyncIterable; ->asyncIterable : AsyncIterable -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>asyncIterable : AsyncIterable +> : ^^^^^^^^^^^^^^^^^^^^^ declare const iterable: Iterable; ->iterable : Iterable -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>iterable : Iterable +> : ^^^^^^^^^^^^^^^^ declare const iterableOfPromise: Iterable>; ->iterableOfPromise : Iterable, void, undefined> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>iterableOfPromise : Iterable> +> : ^^^^^^^^^^^^^^^^^^^^^^^^^ async function f1() { >f1 : () => Promise @@ -24,38 +24,38 @@ async function f1() { for await (const x of asyncIterable) { >x : number > : ^^^^^^ ->asyncIterable : AsyncIterable -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>asyncIterable : AsyncIterable +> : ^^^^^^^^^^^^^^^^^^^^^ } for await (const x of iterable) { >x : number > : ^^^^^^ ->iterable : Iterable -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>iterable : Iterable +> : ^^^^^^^^^^^^^^^^ } for await (const x of iterableOfPromise) { >x : number > : ^^^^^^ ->iterableOfPromise : Iterable, void, undefined> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>iterableOfPromise : Iterable> +> : ^^^^^^^^^^^^^^^^^^^^^^^^^ } for await (y of asyncIterable) { >y : number > : ^^^^^^ ->asyncIterable : AsyncIterable -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>asyncIterable : AsyncIterable +> : ^^^^^^^^^^^^^^^^^^^^^ } for await (y of iterable) { >y : number > : ^^^^^^ ->iterable : Iterable -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>iterable : Iterable +> : ^^^^^^^^^^^^^^^^ } for await (y of iterableOfPromise) { >y : number > : ^^^^^^ ->iterableOfPromise : Iterable, void, undefined> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>iterableOfPromise : Iterable> +> : ^^^^^^^^^^^^^^^^^^^^^^^^^ } } async function * f2() { @@ -69,38 +69,38 @@ async function * f2() { for await (const x of asyncIterable) { >x : number > : ^^^^^^ ->asyncIterable : AsyncIterable -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>asyncIterable : AsyncIterable +> : ^^^^^^^^^^^^^^^^^^^^^ } for await (const x of iterable) { >x : number > : ^^^^^^ ->iterable : Iterable -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>iterable : Iterable +> : ^^^^^^^^^^^^^^^^ } for await (const x of iterableOfPromise) { >x : number > : ^^^^^^ ->iterableOfPromise : Iterable, void, undefined> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>iterableOfPromise : Iterable> +> : ^^^^^^^^^^^^^^^^^^^^^^^^^ } for await (y of asyncIterable) { >y : number > : ^^^^^^ ->asyncIterable : AsyncIterable -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>asyncIterable : AsyncIterable +> : ^^^^^^^^^^^^^^^^^^^^^ } for await (y of iterable) { >y : number > : ^^^^^^ ->iterable : Iterable -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>iterable : Iterable +> : ^^^^^^^^^^^^^^^^ } for await (y of iterableOfPromise) { >y : number > : ^^^^^^ ->iterableOfPromise : Iterable, void, undefined> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>iterableOfPromise : Iterable> +> : ^^^^^^^^^^^^^^^^^^^^^^^^^ } } diff --git a/tests/baselines/reference/types.forAwait.es2018.2.errors.txt b/tests/baselines/reference/types.forAwait.es2018.2.errors.txt index 79a4e19131655..b0635928d4860 100644 --- a/tests/baselines/reference/types.forAwait.es2018.2.errors.txt +++ b/tests/baselines/reference/types.forAwait.es2018.2.errors.txt @@ -2,8 +2,8 @@ types.forAwait.es2018.2.ts(6,27): error TS2504: Type '{}' must have a '[Symbol.a types.forAwait.es2018.2.ts(8,21): error TS2504: Type '{}' must have a '[Symbol.asyncIterator]()' method that returns an async iterator. types.forAwait.es2018.2.ts(10,16): error TS2322: Type 'number' is not assignable to type 'string'. types.forAwait.es2018.2.ts(12,16): error TS2322: Type 'number' is not assignable to type 'string'. -types.forAwait.es2018.2.ts(14,21): error TS2488: Type 'AsyncIterable' must have a '[Symbol.iterator]()' method that returns an iterator. -types.forAwait.es2018.2.ts(16,15): error TS2488: Type 'AsyncIterable' must have a '[Symbol.iterator]()' method that returns an iterator. +types.forAwait.es2018.2.ts(14,21): error TS2488: Type 'AsyncIterable' must have a '[Symbol.iterator]()' method that returns an iterator. +types.forAwait.es2018.2.ts(16,15): error TS2488: Type 'AsyncIterable' must have a '[Symbol.iterator]()' method that returns an iterator. ==== types.forAwait.es2018.2.ts (6 errors) ==== @@ -30,12 +30,12 @@ types.forAwait.es2018.2.ts(16,15): error TS2488: Type 'AsyncIterable' must have a '[Symbol.iterator]()' method that returns an iterator. +!!! error TS2488: Type 'AsyncIterable' must have a '[Symbol.iterator]()' method that returns an iterator. !!! related TS2773 types.forAwait.es2018.2.ts:14:21: Did you forget to use 'await'? } for (y of asyncIterable) { ~~~~~~~~~~~~~ -!!! error TS2488: Type 'AsyncIterable' must have a '[Symbol.iterator]()' method that returns an iterator. +!!! error TS2488: Type 'AsyncIterable' must have a '[Symbol.iterator]()' method that returns an iterator. !!! related TS2773 types.forAwait.es2018.2.ts:16:15: Did you forget to use 'await'? } } diff --git a/tests/baselines/reference/types.forAwait.es2018.2.types b/tests/baselines/reference/types.forAwait.es2018.2.types index 1f717a99349c2..47fbd152d190d 100644 --- a/tests/baselines/reference/types.forAwait.es2018.2.types +++ b/tests/baselines/reference/types.forAwait.es2018.2.types @@ -2,12 +2,12 @@ === types.forAwait.es2018.2.ts === declare const asyncIterable: AsyncIterable; ->asyncIterable : AsyncIterable -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>asyncIterable : AsyncIterable +> : ^^^^^^^^^^^^^^^^^^^^^ declare const iterable: Iterable; ->iterable : Iterable -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>iterable : Iterable +> : ^^^^^^^^^^^^^^^^ async function f() { >f : () => Promise @@ -36,26 +36,26 @@ async function f() { for await (z of asyncIterable) { >z : string > : ^^^^^^ ->asyncIterable : AsyncIterable -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>asyncIterable : AsyncIterable +> : ^^^^^^^^^^^^^^^^^^^^^ } for await (z of iterable) { >z : string > : ^^^^^^ ->iterable : Iterable -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>iterable : Iterable +> : ^^^^^^^^^^^^^^^^ } for (const x of asyncIterable) { >x : any > : ^^^ ->asyncIterable : AsyncIterable -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>asyncIterable : AsyncIterable +> : ^^^^^^^^^^^^^^^^^^^^^ } for (y of asyncIterable) { >y : number > : ^^^^^^ ->asyncIterable : AsyncIterable -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>asyncIterable : AsyncIterable +> : ^^^^^^^^^^^^^^^^^^^^^ } } diff --git a/tests/baselines/reference/unionAndIntersectionInference3.types b/tests/baselines/reference/unionAndIntersectionInference3.types index 7a5a5fa74a165..4af1ee052624d 100644 --- a/tests/baselines/reference/unionAndIntersectionInference3.types +++ b/tests/baselines/reference/unionAndIntersectionInference3.types @@ -150,8 +150,8 @@ g2 = g1; declare function foo1(obj: string[] & Iterable): T; >foo1 : (obj: string[] & Iterable) => T > : ^ ^^ ^^ ^^^^^ ->obj : string[] & Iterable -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>obj : string[] & Iterable +> : ^^^^^^^^^^^^^^^^^^^^^^ declare function foo2(obj: string[] & T): T; >foo2 : (obj: string[] & T) => T From ec826474266ca3abc18ce03de7f3b32e2e73a792 Mon Sep 17 00:00:00 2001 From: Ron Buckton Date: Fri, 19 Apr 2024 14:20:53 -0400 Subject: [PATCH 07/17] Set TReturn default to 'any', provide explicit type arguments where necessary --- src/compiler/checker.ts | 5 +- src/lib/dom.iterable.d.ts | 46 ++-- src/lib/es2015.generator.d.ts | 2 +- src/lib/es2015.iterable.d.ts | 132 +++++------ src/lib/es2018.asyncgenerator.d.ts | 2 +- src/lib/es2018.asynciterable.d.ts | 6 +- src/lib/es2020.bigint.d.ts | 16 +- src/lib/es2020.string.d.ts | 2 +- src/lib/es2020.symbol.wellknown.d.ts | 2 +- src/lib/es2022.intl.d.ts | 2 +- .../reference/YieldStarExpression4_es6.types | 4 +- .../argumentsObjectIterator02_ES6.types | 16 +- tests/baselines/reference/arrayFrom.types | 24 +- .../reference/bigintWithLib.errors.txt | 8 +- .../dependentDestructuredVariables.js | 2 +- .../dependentDestructuredVariables.types | 24 +- ...ructuredLateBoundNameHasCorrectTypes.types | 8 +- .../destructuringAssignmentWithDefault2.types | 52 ++--- ...y2(exactoptionalpropertytypes=false).types | 8 +- ...ty2(exactoptionalpropertytypes=true).types | 8 +- .../dissallowSymbolAsWeakType.errors.txt | 16 +- .../reference/emitArrowFunctionES6.types | 8 +- ....asyncGenerators.classMethods.es2015.types | 4 +- ....asyncGenerators.classMethods.es2018.types | 4 +- ...ter.asyncGenerators.classMethods.es5.types | 4 +- ...nerators.functionDeclarations.es2015.types | 4 +- ...nerators.functionDeclarations.es2018.types | 4 +- ...cGenerators.functionDeclarations.es5.types | 4 +- ...enerators.functionExpressions.es2015.types | 8 +- ...enerators.functionExpressions.es2018.types | 8 +- ...ncGenerators.functionExpressions.es5.types | 8 +- ...nerators.objectLiteralMethods.es2015.types | 12 +- ...nerators.objectLiteralMethods.es2018.types | 12 +- ...cGenerators.objectLiteralMethods.es5.types | 12 +- .../excessiveStackDepthFlatArray.types | 3 +- tests/baselines/reference/for-of12.types | 12 +- tests/baselines/reference/for-of13.types | 12 +- tests/baselines/reference/for-of29.errors.txt | 4 +- tests/baselines/reference/for-of29.types | 4 +- tests/baselines/reference/for-of39.errors.txt | 8 +- .../generatorReturnTypeFallback.1.types | 4 +- .../generatorReturnTypeFallback.5.types | 4 +- .../generatorReturnTypeInference.types | 12 +- ...eneratorReturnTypeInferenceNonStrict.types | 12 +- .../reference/generatorTypeCheck13.types | 4 +- .../reference/generatorTypeCheck17.types | 8 +- .../reference/generatorTypeCheck18.types | 8 +- .../reference/generatorTypeCheck19.types | 4 +- .../reference/generatorTypeCheck20.types | 4 +- .../reference/generatorTypeCheck21.types | 4 +- .../reference/generatorTypeCheck22.types | 4 +- .../reference/generatorTypeCheck23.types | 4 +- .../reference/generatorTypeCheck24.types | 4 +- .../reference/generatorTypeCheck25.errors.txt | 16 +- .../reference/generatorTypeCheck25.types | 16 +- .../reference/generatorTypeCheck26.types | 4 +- .../reference/generatorTypeCheck27.types | 12 +- .../reference/generatorTypeCheck28.types | 12 +- .../reference/generatorTypeCheck29.types | 16 +- .../reference/generatorTypeCheck30.types | 16 +- .../reference/generatorTypeCheck31.types | 4 +- .../reference/generatorTypeCheck45.types | 8 +- .../reference/generatorTypeCheck46.types | 16 +- .../reference/generatorTypeCheck53.types | 4 +- .../reference/generatorTypeCheck54.types | 4 +- .../reference/generatorTypeCheck62.errors.txt | 20 +- .../reference/generatorTypeCheck62.js | 4 +- .../reference/generatorTypeCheck62.symbols | 6 +- .../reference/generatorTypeCheck62.types | 72 +++--- .../reference/generatorTypeCheck63.errors.txt | 28 +-- .../reference/generatorTypeCheck63.js | 4 +- .../reference/generatorTypeCheck63.symbols | 6 +- .../reference/generatorTypeCheck63.types | 84 +++---- .../reference/generatorTypeCheck7.errors.txt | 4 +- .../reference/generatorTypeCheck8.errors.txt | 12 +- ...rtHelpersNoHelpersForAsyncGenerators.types | 4 +- ...indirectGlobalSymbolPartOfObjectType.types | 4 +- .../iterableArrayPattern28.errors.txt | 8 +- ...ithAsClauseAndLateBoundProperty.errors.txt | 4 +- ...TypeWithAsClauseAndLateBoundProperty.types | 12 +- ...edTypeWithAsClauseAndLateBoundProperty2.js | 16 +- ...ypeWithAsClauseAndLateBoundProperty2.types | 12 +- ...eLibrary_NoErrorDuplicateLibOptions1.types | 12 +- ...eLibrary_NoErrorDuplicateLibOptions2.types | 12 +- ...dularizeLibrary_TargetES5UsingES6Lib.types | 12 +- ...dularizeLibrary_TargetES6UsingES6Lib.types | 12 +- ....asyncGenerators.classMethods.es2018.types | 4 +- ...nerators.functionDeclarations.es2018.types | 4 +- ...enerators.functionExpressions.es2018.types | 8 +- ...nerators.objectLiteralMethods.es2018.types | 12 +- .../reference/regexMatchAll-esnext.types | 16 +- tests/baselines/reference/regexMatchAll.types | 16 +- .../baselines/reference/stringMatchAll.types | 20 +- .../types.asyncGenerators.es2018.1.types | 212 +++++++++--------- .../types.asyncGenerators.es2018.2.errors.txt | 100 ++++----- .../types.asyncGenerators.es2018.2.types | 164 +++++++------- tests/baselines/reference/uniqueSymbols.types | 24 +- .../reference/uniqueSymbolsDeclarations.types | 24 +- .../reference/yieldExpression1.types | 8 +- .../yieldExpressionInControlFlow.types | 4 +- .../yieldExpressionInnerCommentEmit.types | 4 +- .../yieldExpressions/generatorTypeCheck62.ts | 4 +- .../yieldExpressions/generatorTypeCheck63.ts | 4 +- 103 files changed, 852 insertions(+), 848 deletions(-) diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index cf382ccc9d461..5b6fd9900eb75 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -6844,7 +6844,10 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker { isReferenceToType(type, getGlobalAsyncIterableType(/*reportErrors*/ false)) || isReferenceToType(type, getGlobalAsyncIterableIteratorType(/*reportErrors*/ false)) ) { - if (!type.node || !isTypeReferenceNode(type.node) || !type.node.typeArguments || type.node.typeArguments.length < typeParameterCount) { + if ( + !type.node || !isTypeReferenceNode(type.node) || !type.node.typeArguments || + type.node.typeArguments.length < typeParameterCount + ) { while (typeParameterCount > 0) { const typeArgument = typeArguments[typeParameterCount - 1]; const defaultType = getDefaultFromTypeParameter(type.target.typeParameters[typeParameterCount - 1]); diff --git a/src/lib/dom.iterable.d.ts b/src/lib/dom.iterable.d.ts index 8ffbcd4811b55..a18299299301e 100644 --- a/src/lib/dom.iterable.d.ts +++ b/src/lib/dom.iterable.d.ts @@ -1,30 +1,30 @@ /// interface DOMTokenList { - [Symbol.iterator](): IterableIterator; + [Symbol.iterator](): IterableIterator; } interface Headers { - [Symbol.iterator](): IterableIterator<[string, string]>; + [Symbol.iterator](): IterableIterator<[string, string], void>; /** * Returns an iterator allowing to go through all key/value pairs contained in this object. */ - entries(): IterableIterator<[string, string]>; + entries(): IterableIterator<[string, string], void>; /** * Returns an iterator allowing to go through all keys f the key/value pairs contained in this object. */ - keys(): IterableIterator; + keys(): IterableIterator; /** * Returns an iterator allowing to go through all values of the key/value pairs contained in this object. */ - values(): IterableIterator; + values(): IterableIterator; } interface NodeList { /** * Returns an array of key, value pairs for every entry in the list */ - entries(): IterableIterator<[number, Node]>; + entries(): IterableIterator<[number, Node], void>; /** * Performs the specified action for each node in an list. * @param callbackfn A function that accepts up to three arguments. forEach calls the callbackfn function one time for each element in the list. @@ -34,21 +34,21 @@ interface NodeList { /** * Returns an list of keys in the list */ - keys(): IterableIterator; + keys(): IterableIterator; /** * Returns an list of values in the list */ - values(): IterableIterator; + values(): IterableIterator; - [Symbol.iterator](): IterableIterator; + [Symbol.iterator](): IterableIterator; } interface NodeListOf { /** * Returns an array of key, value pairs for every entry in the list */ - entries(): IterableIterator<[number, TNode]>; + entries(): IterableIterator<[number, TNode], void>; /** * Performs the specified action for each node in an list. @@ -59,55 +59,55 @@ interface NodeListOf { /** * Returns an list of keys in the list */ - keys(): IterableIterator; + keys(): IterableIterator; /** * Returns an list of values in the list */ - values(): IterableIterator; + values(): IterableIterator; - [Symbol.iterator](): IterableIterator; + [Symbol.iterator](): IterableIterator; } interface HTMLCollectionBase { - [Symbol.iterator](): IterableIterator; + [Symbol.iterator](): IterableIterator; } interface HTMLCollectionOf { - [Symbol.iterator](): IterableIterator; + [Symbol.iterator](): IterableIterator; } interface FormData { /** * Returns an array of key, value pairs for every entry in the list */ - entries(): IterableIterator<[string, string | File]>; + entries(): IterableIterator<[string, string | File], void>; /** * Returns a list of keys in the list */ - keys(): IterableIterator; + keys(): IterableIterator; /** * Returns a list of values in the list */ - values(): IterableIterator; + values(): IterableIterator; - [Symbol.iterator](): IterableIterator; + [Symbol.iterator](): IterableIterator; } interface URLSearchParams { /** * Returns an array of key, value pairs for every entry in the search params */ - entries(): IterableIterator<[string, string]>; + entries(): IterableIterator<[string, string], void>; /** * Returns a list of keys in the search params */ - keys(): IterableIterator; + keys(): IterableIterator; /** * Returns a list of values in the search params */ - values(): IterableIterator; + values(): IterableIterator; /** * iterate over key/value pairs */ - [Symbol.iterator](): IterableIterator<[string, string]>; + [Symbol.iterator](): IterableIterator<[string, string], void>; } diff --git a/src/lib/es2015.generator.d.ts b/src/lib/es2015.generator.d.ts index 0e63f2c206ebf..7c6929173a0e4 100644 --- a/src/lib/es2015.generator.d.ts +++ b/src/lib/es2015.generator.d.ts @@ -1,6 +1,6 @@ /// -interface Generator extends Iterator { +interface Generator extends 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/es2015.iterable.d.ts b/src/lib/es2015.iterable.d.ts index 3c6901b3ea7bd..3134202b494b1 100644 --- a/src/lib/es2015.iterable.d.ts +++ b/src/lib/es2015.iterable.d.ts @@ -18,41 +18,41 @@ interface IteratorReturnResult { value: TReturn; } -type IteratorResult = IteratorYieldResult | 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; throw?(e?: any): IteratorResult; } -interface Iterable { +interface Iterable { [Symbol.iterator](): Iterator; } -interface IterableIterator extends Iterator { +interface IterableIterator extends Iterator { [Symbol.iterator](): IterableIterator; } interface Array { /** Iterator */ - [Symbol.iterator](): IterableIterator; + [Symbol.iterator](): IterableIterator; /** * Returns an iterable of key, value pairs for every entry in the array */ - entries(): IterableIterator<[number, T]>; + entries(): IterableIterator<[number, T], void>; /** * Returns an iterable of keys in the array */ - keys(): IterableIterator; + keys(): IterableIterator; /** * Returns an iterable of values in the array */ - values(): IterableIterator; + values(): IterableIterator; } interface ArrayConstructor { @@ -73,67 +73,67 @@ interface ArrayConstructor { interface ReadonlyArray { /** Iterator of values in the array. */ - [Symbol.iterator](): IterableIterator; + [Symbol.iterator](): IterableIterator; /** * Returns an iterable of key, value pairs for every entry in the array */ - entries(): IterableIterator<[number, T]>; + entries(): IterableIterator<[number, T], void>; /** * Returns an iterable of keys in the array */ - keys(): IterableIterator; + keys(): IterableIterator; /** * Returns an iterable of values in the array */ - values(): IterableIterator; + values(): IterableIterator; } interface IArguments { /** Iterator */ - [Symbol.iterator](): IterableIterator; + [Symbol.iterator](): IterableIterator; } interface Map { /** Returns an iterable of entries in the map. */ - [Symbol.iterator](): IterableIterator<[K, V]>; + [Symbol.iterator](): IterableIterator<[K, V], void>; /** * Returns an iterable of key, value pairs for every entry in the map. */ - entries(): IterableIterator<[K, V]>; + entries(): IterableIterator<[K, V], void>; /** * Returns an iterable of keys in the map */ - keys(): IterableIterator; + keys(): IterableIterator; /** * Returns an iterable of values in the map */ - values(): IterableIterator; + values(): IterableIterator; } interface ReadonlyMap { /** Returns an iterable of entries in the map. */ - [Symbol.iterator](): IterableIterator<[K, V]>; + [Symbol.iterator](): IterableIterator<[K, V], void>; /** * Returns an iterable of key, value pairs for every entry in the map. */ - entries(): IterableIterator<[K, V]>; + entries(): IterableIterator<[K, V], void>; /** * Returns an iterable of keys in the map */ - keys(): IterableIterator; + keys(): IterableIterator; /** * Returns an iterable of values in the map */ - values(): IterableIterator; + values(): IterableIterator; } interface MapConstructor { @@ -149,40 +149,40 @@ interface WeakMapConstructor { interface Set { /** Iterates over values in the set. */ - [Symbol.iterator](): IterableIterator; + [Symbol.iterator](): IterableIterator; /** * Returns an iterable of [v,v] pairs for every value `v` in the set. */ - entries(): IterableIterator<[T, T]>; + entries(): IterableIterator<[T, T], void>; /** * Despite its name, returns an iterable of the values in the set. */ - keys(): IterableIterator; + keys(): IterableIterator; /** * Returns an iterable of values in the set. */ - values(): IterableIterator; + values(): IterableIterator; } interface ReadonlySet { /** Iterates over values in the set. */ - [Symbol.iterator](): IterableIterator; + [Symbol.iterator](): IterableIterator; /** * Returns an iterable of [v,v] pairs for every value `v` in the set. */ - entries(): IterableIterator<[T, T]>; + entries(): IterableIterator<[T, T], void>; /** * Despite its name, returns an iterable of the values in the set. */ - keys(): IterableIterator; + keys(): IterableIterator; /** * Returns an iterable of values in the set. */ - values(): IterableIterator; + values(): IterableIterator; } interface SetConstructor { @@ -217,23 +217,23 @@ interface PromiseConstructor { interface String { /** Iterator */ - [Symbol.iterator](): IterableIterator; + [Symbol.iterator](): IterableIterator; } interface Int8Array { - [Symbol.iterator](): IterableIterator; + [Symbol.iterator](): IterableIterator; /** * Returns an array of key, value pairs for every entry in the array */ - entries(): IterableIterator<[number, number]>; + entries(): IterableIterator<[number, number], void>; /** * Returns an list of keys in the array */ - keys(): IterableIterator; + keys(): IterableIterator; /** * Returns an list of values in the array */ - values(): IterableIterator; + values(): IterableIterator; } interface Int8ArrayConstructor { @@ -249,19 +249,19 @@ interface Int8ArrayConstructor { } interface Uint8Array { - [Symbol.iterator](): IterableIterator; + [Symbol.iterator](): IterableIterator; /** * Returns an array of key, value pairs for every entry in the array */ - entries(): IterableIterator<[number, number]>; + entries(): IterableIterator<[number, number], void>; /** * Returns an list of keys in the array */ - keys(): IterableIterator; + keys(): IterableIterator; /** * Returns an list of values in the array */ - values(): IterableIterator; + values(): IterableIterator; } interface Uint8ArrayConstructor { @@ -277,21 +277,21 @@ interface Uint8ArrayConstructor { } interface Uint8ClampedArray { - [Symbol.iterator](): IterableIterator; + [Symbol.iterator](): IterableIterator; /** * Returns an array of key, value pairs for every entry in the array */ - entries(): IterableIterator<[number, number]>; + entries(): IterableIterator<[number, number], void>; /** * Returns an list of keys in the array */ - keys(): IterableIterator; + keys(): IterableIterator; /** * Returns an list of values in the array */ - values(): IterableIterator; + values(): IterableIterator; } interface Uint8ClampedArrayConstructor { @@ -307,21 +307,21 @@ interface Uint8ClampedArrayConstructor { } interface Int16Array { - [Symbol.iterator](): IterableIterator; + [Symbol.iterator](): IterableIterator; /** * Returns an array of key, value pairs for every entry in the array */ - entries(): IterableIterator<[number, number]>; + entries(): IterableIterator<[number, number], void>; /** * Returns an list of keys in the array */ - keys(): IterableIterator; + keys(): IterableIterator; /** * Returns an list of values in the array */ - values(): IterableIterator; + values(): IterableIterator; } interface Int16ArrayConstructor { @@ -337,19 +337,19 @@ interface Int16ArrayConstructor { } interface Uint16Array { - [Symbol.iterator](): IterableIterator; + [Symbol.iterator](): IterableIterator; /** * Returns an array of key, value pairs for every entry in the array */ - entries(): IterableIterator<[number, number]>; + entries(): IterableIterator<[number, number], void>; /** * Returns an list of keys in the array */ - keys(): IterableIterator; + keys(): IterableIterator; /** * Returns an list of values in the array */ - values(): IterableIterator; + values(): IterableIterator; } interface Uint16ArrayConstructor { @@ -365,19 +365,19 @@ interface Uint16ArrayConstructor { } interface Int32Array { - [Symbol.iterator](): IterableIterator; + [Symbol.iterator](): IterableIterator; /** * Returns an array of key, value pairs for every entry in the array */ - entries(): IterableIterator<[number, number]>; + entries(): IterableIterator<[number, number], void>; /** * Returns an list of keys in the array */ - keys(): IterableIterator; + keys(): IterableIterator; /** * Returns an list of values in the array */ - values(): IterableIterator; + values(): IterableIterator; } interface Int32ArrayConstructor { @@ -393,19 +393,19 @@ interface Int32ArrayConstructor { } interface Uint32Array { - [Symbol.iterator](): IterableIterator; + [Symbol.iterator](): IterableIterator; /** * Returns an array of key, value pairs for every entry in the array */ - entries(): IterableIterator<[number, number]>; + entries(): IterableIterator<[number, number], void>; /** * Returns an list of keys in the array */ - keys(): IterableIterator; + keys(): IterableIterator; /** * Returns an list of values in the array */ - values(): IterableIterator; + values(): IterableIterator; } interface Uint32ArrayConstructor { @@ -421,19 +421,19 @@ interface Uint32ArrayConstructor { } interface Float32Array { - [Symbol.iterator](): IterableIterator; + [Symbol.iterator](): IterableIterator; /** * Returns an array of key, value pairs for every entry in the array */ - entries(): IterableIterator<[number, number]>; + entries(): IterableIterator<[number, number], void>; /** * Returns an list of keys in the array */ - keys(): IterableIterator; + keys(): IterableIterator; /** * Returns an list of values in the array */ - values(): IterableIterator; + values(): IterableIterator; } interface Float32ArrayConstructor { @@ -449,19 +449,19 @@ interface Float32ArrayConstructor { } interface Float64Array { - [Symbol.iterator](): IterableIterator; + [Symbol.iterator](): IterableIterator; /** * Returns an array of key, value pairs for every entry in the array */ - entries(): IterableIterator<[number, number]>; + entries(): IterableIterator<[number, number], void>; /** * Returns an list of keys in the array */ - keys(): IterableIterator; + keys(): IterableIterator; /** * Returns an list of values in the array */ - values(): IterableIterator; + values(): IterableIterator; } interface Float64ArrayConstructor { diff --git a/src/lib/es2018.asyncgenerator.d.ts b/src/lib/es2018.asyncgenerator.d.ts index 1f78609e23acc..f6966264c8be4 100644 --- a/src/lib/es2018.asyncgenerator.d.ts +++ b/src/lib/es2018.asyncgenerator.d.ts @@ -1,6 +1,6 @@ /// -interface AsyncGenerator extends AsyncIterator { +interface AsyncGenerator extends 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/src/lib/es2018.asynciterable.d.ts b/src/lib/es2018.asynciterable.d.ts index c1b447e5166b5..5d5a624abfe5f 100644 --- a/src/lib/es2018.asynciterable.d.ts +++ b/src/lib/es2018.asynciterable.d.ts @@ -9,17 +9,17 @@ interface SymbolConstructor { readonly asyncIterator: unique 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>; throw?(e?: any): Promise>; } -interface AsyncIterable { +interface AsyncIterable { [Symbol.asyncIterator](): AsyncIterator; } -interface AsyncIterableIterator extends AsyncIterator { +interface AsyncIterableIterator extends AsyncIterator { [Symbol.asyncIterator](): AsyncIterableIterator; } diff --git a/src/lib/es2020.bigint.d.ts b/src/lib/es2020.bigint.d.ts index b4b46c7d9bb15..c1eb68a393aca 100644 --- a/src/lib/es2020.bigint.d.ts +++ b/src/lib/es2020.bigint.d.ts @@ -153,7 +153,7 @@ interface BigInt64Array { copyWithin(target: number, start: number, end?: number): this; /** Yields index, value pairs for every entry in the array. */ - entries(): IterableIterator<[number, bigint]>; + entries(): IterableIterator<[number, bigint], void>; /** * Determines whether all the members of an array satisfy the specified test. @@ -238,7 +238,7 @@ interface BigInt64Array { join(separator?: string): string; /** Yields each index in the array. */ - keys(): IterableIterator; + keys(): IterableIterator; /** * Returns the index of the last occurrence of a value in an array. @@ -360,9 +360,9 @@ interface BigInt64Array { valueOf(): BigInt64Array; /** Yields each value in the array. */ - values(): IterableIterator; + values(): IterableIterator; - [Symbol.iterator](): IterableIterator; + [Symbol.iterator](): IterableIterator; readonly [Symbol.toStringTag]: "BigInt64Array"; @@ -425,7 +425,7 @@ interface BigUint64Array { copyWithin(target: number, start: number, end?: number): this; /** Yields index, value pairs for every entry in the array. */ - entries(): IterableIterator<[number, bigint]>; + entries(): IterableIterator<[number, bigint], void>; /** * Determines whether all the members of an array satisfy the specified test. @@ -510,7 +510,7 @@ interface BigUint64Array { join(separator?: string): string; /** Yields each index in the array. */ - keys(): IterableIterator; + keys(): IterableIterator; /** * Returns the index of the last occurrence of a value in an array. @@ -632,9 +632,9 @@ interface BigUint64Array { valueOf(): BigUint64Array; /** Yields each value in the array. */ - values(): IterableIterator; + values(): IterableIterator; - [Symbol.iterator](): IterableIterator; + [Symbol.iterator](): IterableIterator; readonly [Symbol.toStringTag]: "BigUint64Array"; diff --git a/src/lib/es2020.string.d.ts b/src/lib/es2020.string.d.ts index bc7cf1ad5f7c3..9a65689bdcfb3 100644 --- a/src/lib/es2020.string.d.ts +++ b/src/lib/es2020.string.d.ts @@ -6,7 +6,7 @@ interface String { * containing the results of that search. * @param regexp A variable name or string literal containing the regular expression pattern and flags. */ - matchAll(regexp: RegExp): IterableIterator; + matchAll(regexp: RegExp): IterableIterator; /** Converts all alphabetic characters to lowercase, taking into account the host environment's current locale. */ toLocaleLowerCase(locales?: Intl.LocalesArgument): string; diff --git a/src/lib/es2020.symbol.wellknown.d.ts b/src/lib/es2020.symbol.wellknown.d.ts index 94a11768256c7..b6d7112f6f1ca 100644 --- a/src/lib/es2020.symbol.wellknown.d.ts +++ b/src/lib/es2020.symbol.wellknown.d.ts @@ -15,5 +15,5 @@ interface RegExp { * containing the results of that search. * @param string A string to search within. */ - [Symbol.matchAll](str: string): IterableIterator; + [Symbol.matchAll](str: string): IterableIterator; } diff --git a/src/lib/es2022.intl.d.ts b/src/lib/es2022.intl.d.ts index 3beaea6af8ddd..33b7a26e8c172 100644 --- a/src/lib/es2022.intl.d.ts +++ b/src/lib/es2022.intl.d.ts @@ -37,7 +37,7 @@ declare namespace Intl { containing(codeUnitIndex?: number): SegmentData; /** Returns an iterator to iterate over the segments. */ - [Symbol.iterator](): IterableIterator; + [Symbol.iterator](): IterableIterator; } interface SegmentData { diff --git a/tests/baselines/reference/YieldStarExpression4_es6.types b/tests/baselines/reference/YieldStarExpression4_es6.types index e2bec7220b371..756c9358d5489 100644 --- a/tests/baselines/reference/YieldStarExpression4_es6.types +++ b/tests/baselines/reference/YieldStarExpression4_es6.types @@ -2,8 +2,8 @@ === YieldStarExpression4_es6.ts === function *g() { ->g : () => Generator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>g : () => Generator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ yield * []; >yield * [] : void diff --git a/tests/baselines/reference/argumentsObjectIterator02_ES6.types b/tests/baselines/reference/argumentsObjectIterator02_ES6.types index eec7d223b7c9b..cf5ef29f654b7 100644 --- a/tests/baselines/reference/argumentsObjectIterator02_ES6.types +++ b/tests/baselines/reference/argumentsObjectIterator02_ES6.types @@ -12,10 +12,10 @@ function doubleAndReturnAsArray(x: number, y: number, z: number): [number, numbe > : ^^^^^^ let blah = arguments[Symbol.iterator]; ->blah : () => IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->arguments[Symbol.iterator] : () => IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>blah : () => IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>arguments[Symbol.iterator] : () => IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >arguments : IArguments > : ^^^^^^^^^^ >Symbol.iterator : unique symbol @@ -33,10 +33,10 @@ function doubleAndReturnAsArray(x: number, y: number, z: number): [number, numbe for (let arg of blah()) { >arg : any ->blah() : IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^ ->blah : () => IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>blah() : IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>blah : () => IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ result.push(arg + arg); >result.push(arg + arg) : number diff --git a/tests/baselines/reference/arrayFrom.types b/tests/baselines/reference/arrayFrom.types index 71485e09f6925..7d4edee354f44 100644 --- a/tests/baselines/reference/arrayFrom.types +++ b/tests/baselines/reference/arrayFrom.types @@ -83,14 +83,14 @@ const result2: A[] = Array.from(inputA.values()); > : ^^^^^^^^^^^^^^^^ >from : { (arrayLike: ArrayLike): T[]; (arrayLike: ArrayLike, mapfn: (v: T_1, k: number) => U, thisArg?: any): U[]; (iterable: Iterable | ArrayLike): T_2[]; (iterable: Iterable | ArrayLike, mapfn: (v: T_3, k: number) => U_1, thisArg?: any): U_1[]; } > : ^^^ ^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^ ->inputA.values() : IterableIterator -> : ^^^^^^^^^^^^^^^^^^^ ->inputA.values : () => IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +>inputA.values() : IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +>inputA.values : () => IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >inputA : A[] > : ^^^ ->values : () => IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +>values : () => IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ const result3: B[] = Array.from(inputA.values()); // expect error >result3 : B[] @@ -103,14 +103,14 @@ const result3: B[] = Array.from(inputA.values()); // expect error > : ^^^^^^^^^^^^^^^^ >from : { (arrayLike: ArrayLike): T[]; (arrayLike: ArrayLike, mapfn: (v: T_1, k: number) => U, thisArg?: any): U[]; (iterable: Iterable | ArrayLike): T_2[]; (iterable: Iterable | ArrayLike, mapfn: (v: T_3, k: number) => U_1, thisArg?: any): U_1[]; } > : ^^^ ^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^ ->inputA.values() : IterableIterator -> : ^^^^^^^^^^^^^^^^^^^ ->inputA.values : () => IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +>inputA.values() : IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +>inputA.values : () => IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >inputA : A[] > : ^^^ ->values : () => IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +>values : () => IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ const result4: A[] = Array.from(inputB, ({ b }): A => ({ a: b })); >result4 : A[] diff --git a/tests/baselines/reference/bigintWithLib.errors.txt b/tests/baselines/reference/bigintWithLib.errors.txt index a7768219e9b09..523b1b3732f17 100644 --- a/tests/baselines/reference/bigintWithLib.errors.txt +++ b/tests/baselines/reference/bigintWithLib.errors.txt @@ -5,8 +5,8 @@ bigintWithLib.ts(19,33): error TS2769: No overload matches this call. Overload 2 of 3, '(array: Iterable): BigInt64Array', gave the following error. Argument of type 'number[]' is not assignable to parameter of type 'Iterable'. The types returned by '[Symbol.iterator]().next(...)' are incompatible between these types. - Type 'IteratorResult' is not assignable to type 'IteratorResult'. - Type 'IteratorYieldResult' is not assignable to type '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'. Type 'number' is not assignable to type 'bigint'. Overload 3 of 3, '(buffer: ArrayBufferLike, byteOffset?: number, length?: number): BigInt64Array', gave the following error. @@ -54,8 +54,8 @@ bigintWithLib.ts(46,26): error TS2345: Argument of type 'number' is not assignab !!! 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: The types returned by '[Symbol.iterator]().next(...)' are incompatible between these types. -!!! error TS2769: Type 'IteratorResult' is not assignable to type 'IteratorResult'. -!!! error TS2769: Type 'IteratorYieldResult' is not assignable to type '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'. !!! error TS2769: Type 'number' is not assignable to type 'bigint'. !!! error TS2769: Overload 3 of 3, '(buffer: ArrayBufferLike, byteOffset?: number, length?: number): BigInt64Array', gave the following error. diff --git a/tests/baselines/reference/dependentDestructuredVariables.js b/tests/baselines/reference/dependentDestructuredVariables.js index 9ed165049878f..7d32808909bf7 100644 --- a/tests/baselines/reference/dependentDestructuredVariables.js +++ b/tests/baselines/reference/dependentDestructuredVariables.js @@ -887,7 +887,7 @@ type Action3 = { }; declare const reducerBroken: (state: number, { type, payload }: Action3) => number; declare var it: Iterator; -declare const value: number | void, done: boolean | undefined; +declare const value: any, done: boolean | undefined; declare function f50(cb: (...args: Args) => void): void; declare const f51: (...args: ['A', number] | ['B', string]) => void; declare const f52: (...args: ['A', number] | ['B']) => void; diff --git a/tests/baselines/reference/dependentDestructuredVariables.types b/tests/baselines/reference/dependentDestructuredVariables.types index d52f901b65d12..8ad99b00010df 100644 --- a/tests/baselines/reference/dependentDestructuredVariables.types +++ b/tests/baselines/reference/dependentDestructuredVariables.types @@ -789,22 +789,22 @@ const reducerBroken = (state: number, { type, payload }: Action3) => { // Repro from #46143 declare var it: Iterator; ->it : Iterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>it : Iterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ const { value, done } = it.next(); ->value : number | void -> : ^^^^^^^^^^^^^ +>value : any +> : ^^^ >done : boolean | undefined > : ^^^^^^^^^^^^^^^^^^^ ->it.next() : IteratorResult -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->it.next : (...args: [] | [undefined]) => IteratorResult -> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->it : Iterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->next : (...args: [] | [undefined]) => IteratorResult -> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>it.next() : IteratorResult +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>it.next : (...args: [] | [unknown]) => IteratorResult +> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>it : Iterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>next : (...args: [] | [unknown]) => IteratorResult +> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ if (!done) { >!done : boolean diff --git a/tests/baselines/reference/destructuredLateBoundNameHasCorrectTypes.types b/tests/baselines/reference/destructuredLateBoundNameHasCorrectTypes.types index 9c15d6b2b210d..b9f191e554e6d 100644 --- a/tests/baselines/reference/destructuredLateBoundNameHasCorrectTypes.types +++ b/tests/baselines/reference/destructuredLateBoundNameHasCorrectTypes.types @@ -8,16 +8,16 @@ let { [Symbol.iterator]: destructured } = []; > : ^^^^^^^^^^^^^^^^^ >iterator : unique symbol > : ^^^^^^^^^^^^^ ->destructured : () => IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>destructured : () => IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >[] : undefined[] > : ^^^^^^^^^^^ void destructured; >void destructured : undefined > : ^^^^^^^^^ ->destructured : () => IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>destructured : () => IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ const named = "prop"; >named : "prop" diff --git a/tests/baselines/reference/destructuringAssignmentWithDefault2.types b/tests/baselines/reference/destructuringAssignmentWithDefault2.types index 444844bf8bd06..c2661c2eea527 100644 --- a/tests/baselines/reference/destructuringAssignmentWithDefault2.types +++ b/tests/baselines/reference/destructuringAssignmentWithDefault2.types @@ -147,8 +147,8 @@ const { x: z3 = undefined } = a; declare const r: Iterator; ->r : Iterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>r : Iterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ let done: boolean; >done : boolean @@ -159,10 +159,10 @@ let value; > : ^^^ ({ done = false, value } = r.next()); ->({ done = false, value } = r.next()) : IteratorResult -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->{ done = false, value } = r.next() : IteratorResult -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>({ done = false, value } = r.next()) : IteratorResult +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>{ done = false, value } = r.next() : IteratorResult +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ done = false, value } : { done?: boolean; value: any; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >done : boolean @@ -171,20 +171,20 @@ let value; > : ^^^^^ >value : any > : ^^^ ->r.next() : IteratorResult -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->r.next : (...args: [] | [undefined]) => IteratorResult -> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->r : Iterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->next : (...args: [] | [undefined]) => IteratorResult -> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>r.next() : IteratorResult +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>r.next : (...args: [] | [unknown]) => IteratorResult +> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>r : Iterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>next : (...args: [] | [unknown]) => IteratorResult +> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ({ done: done = false, value } = r.next()); ->({ done: done = false, value } = r.next()) : IteratorResult -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->{ done: done = false, value } = r.next() : IteratorResult -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>({ done: done = false, value } = r.next()) : IteratorResult +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>{ done: done = false, value } = r.next() : IteratorResult +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ done: done = false, value } : { done?: boolean; value: any; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >done : boolean @@ -197,12 +197,12 @@ let value; > : ^^^^^ >value : any > : ^^^ ->r.next() : IteratorResult -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->r.next : (...args: [] | [undefined]) => IteratorResult -> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->r : Iterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->next : (...args: [] | [undefined]) => IteratorResult -> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>r.next() : IteratorResult +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>r.next : (...args: [] | [unknown]) => IteratorResult +> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>r : Iterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>next : (...args: [] | [unknown]) => IteratorResult +> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/discriminateWithOptionalProperty2(exactoptionalpropertytypes=false).types b/tests/baselines/reference/discriminateWithOptionalProperty2(exactoptionalpropertytypes=false).types index f14a816f9b117..ccd5d0887e524 100644 --- a/tests/baselines/reference/discriminateWithOptionalProperty2(exactoptionalpropertytypes=false).types +++ b/tests/baselines/reference/discriminateWithOptionalProperty2(exactoptionalpropertytypes=false).types @@ -12,8 +12,8 @@ function mapAsyncIterable( > : ^ ^^ ^^ ^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ iterable: AsyncGenerator | AsyncIterable, ->iterable : AsyncGenerator | AsyncIterable -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>iterable : AsyncGenerator | AsyncIterable +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ callback: (value: T) => PromiseOrValue, >callback : (value: T) => PromiseOrValue @@ -29,8 +29,8 @@ function mapAsyncIterable( > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >iterable[Symbol.asyncIterator] : (() => AsyncGenerator) | (() => AsyncIterator) > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->iterable : AsyncGenerator | AsyncIterable -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>iterable : AsyncGenerator | AsyncIterable +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Symbol.asyncIterator : unique symbol > : ^^^^^^^^^^^^^ >Symbol : SymbolConstructor diff --git a/tests/baselines/reference/discriminateWithOptionalProperty2(exactoptionalpropertytypes=true).types b/tests/baselines/reference/discriminateWithOptionalProperty2(exactoptionalpropertytypes=true).types index f14a816f9b117..ccd5d0887e524 100644 --- a/tests/baselines/reference/discriminateWithOptionalProperty2(exactoptionalpropertytypes=true).types +++ b/tests/baselines/reference/discriminateWithOptionalProperty2(exactoptionalpropertytypes=true).types @@ -12,8 +12,8 @@ function mapAsyncIterable( > : ^ ^^ ^^ ^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ iterable: AsyncGenerator | AsyncIterable, ->iterable : AsyncGenerator | AsyncIterable -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>iterable : AsyncGenerator | AsyncIterable +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ callback: (value: T) => PromiseOrValue, >callback : (value: T) => PromiseOrValue @@ -29,8 +29,8 @@ function mapAsyncIterable( > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >iterable[Symbol.asyncIterator] : (() => AsyncGenerator) | (() => AsyncIterator) > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->iterable : AsyncGenerator | AsyncIterable -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>iterable : AsyncGenerator | AsyncIterable +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Symbol.asyncIterator : unique symbol > : ^^^^^^^^^^^^^ >Symbol : SymbolConstructor diff --git a/tests/baselines/reference/dissallowSymbolAsWeakType.errors.txt b/tests/baselines/reference/dissallowSymbolAsWeakType.errors.txt index e42d68d8c9db8..d8ab56f26c568 100644 --- a/tests/baselines/reference/dissallowSymbolAsWeakType.errors.txt +++ b/tests/baselines/reference/dissallowSymbolAsWeakType.errors.txt @@ -2,8 +2,8 @@ dissallowSymbolAsWeakType.ts(3,16): error TS2769: No overload matches this call. Overload 1 of 2, '(iterable: Iterable): WeakSet', gave the following error. Argument of type 'symbol[]' is not assignable to parameter of type 'Iterable'. The types returned by '[Symbol.iterator]().next(...)' are incompatible between these types. - Type 'IteratorResult' is not assignable to type 'IteratorResult'. - Type 'IteratorYieldResult' is not assignable to type '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'. Type 'symbol' is not assignable to type 'object'. Overload 2 of 2, '(values?: readonly object[]): WeakSet', gave the following error. @@ -15,8 +15,8 @@ dissallowSymbolAsWeakType.ts(8,16): error TS2769: No overload matches this call. Overload 1 of 2, '(iterable: Iterable): WeakMap', gave the following error. Argument of type '[symbol, false][]' is not assignable to parameter of type 'Iterable'. The types returned by '[Symbol.iterator]().next(...)' are incompatible between these types. - Type 'IteratorResult<[symbol, false], void>' is not assignable to type 'IteratorResult'. - Type 'IteratorYieldResult<[symbol, false]>' is not assignable to type 'IteratorResult'. + Type 'IteratorResult<[symbol, false], void>' is not assignable to type 'IteratorResult'. + Type 'IteratorYieldResult<[symbol, false]>' is not assignable to type 'IteratorResult'. Type 'IteratorYieldResult<[symbol, false]>' is not assignable to type 'IteratorYieldResult'. Type '[symbol, false]' is not assignable to type 'readonly [object, boolean]'. Type at position 0 in source is not compatible with type at position 0 in target. @@ -41,8 +41,8 @@ dissallowSymbolAsWeakType.ts(19,14): error TS2345: Argument of type 'symbol' is !!! error TS2769: Overload 1 of 2, '(iterable: Iterable): WeakSet', gave the following error. !!! error TS2769: Argument of type 'symbol[]' is not assignable to parameter of type 'Iterable'. !!! error TS2769: The types returned by '[Symbol.iterator]().next(...)' are incompatible between these types. -!!! error TS2769: Type 'IteratorResult' is not assignable to type 'IteratorResult'. -!!! error TS2769: Type 'IteratorYieldResult' is not assignable to type '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'. !!! error TS2769: Type 'symbol' is not assignable to type 'object'. !!! error TS2769: Overload 2 of 2, '(values?: readonly object[]): WeakSet', gave the following error. @@ -63,8 +63,8 @@ dissallowSymbolAsWeakType.ts(19,14): error TS2345: Argument of type 'symbol' is !!! error TS2769: Overload 1 of 2, '(iterable: Iterable): WeakMap', gave the following error. !!! error TS2769: Argument of type '[symbol, false][]' is not assignable to parameter of type 'Iterable'. !!! error TS2769: The types returned by '[Symbol.iterator]().next(...)' are incompatible between these types. -!!! error TS2769: Type 'IteratorResult<[symbol, false], void>' is not assignable to type 'IteratorResult'. -!!! error TS2769: Type 'IteratorYieldResult<[symbol, false]>' is not assignable to type 'IteratorResult'. +!!! error TS2769: Type 'IteratorResult<[symbol, false], void>' is not assignable to type 'IteratorResult'. +!!! error TS2769: Type 'IteratorYieldResult<[symbol, false]>' is not assignable to type 'IteratorResult'. !!! error TS2769: Type 'IteratorYieldResult<[symbol, false]>' is not assignable to type 'IteratorYieldResult'. !!! error TS2769: Type '[symbol, false]' is not assignable to type 'readonly [object, boolean]'. !!! error TS2769: Type at position 0 in source is not compatible with type at position 0 in target. diff --git a/tests/baselines/reference/emitArrowFunctionES6.types b/tests/baselines/reference/emitArrowFunctionES6.types index 472ea87102f67..3925aeeaf3766 100644 --- a/tests/baselines/reference/emitArrowFunctionES6.types +++ b/tests/baselines/reference/emitArrowFunctionES6.types @@ -79,10 +79,10 @@ var p1 = ([a]) => { }; > : ^^^ var p2 = ([...a]) => { }; ->p2 : ([...a]: Iterable) => void -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^ ->([...a]) => { } : ([...a]: Iterable) => void -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^ +>p2 : ([...a]: Iterable) => void +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>([...a]) => { } : ([...a]: Iterable) => void +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >a : any[] > : ^^^^^ diff --git a/tests/baselines/reference/emitter.asyncGenerators.classMethods.es2015.types b/tests/baselines/reference/emitter.asyncGenerators.classMethods.es2015.types index 05be50b5d104e..d2e9bcd53c9fb 100644 --- a/tests/baselines/reference/emitter.asyncGenerators.classMethods.es2015.types +++ b/tests/baselines/reference/emitter.asyncGenerators.classMethods.es2015.types @@ -46,8 +46,8 @@ class C4 { > : ^^ async * f() { ->f : () => AsyncGenerator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>f : () => AsyncGenerator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ const x = yield* [1]; >x : void diff --git a/tests/baselines/reference/emitter.asyncGenerators.classMethods.es2018.types b/tests/baselines/reference/emitter.asyncGenerators.classMethods.es2018.types index 25102c916d890..bb5de18952ad4 100644 --- a/tests/baselines/reference/emitter.asyncGenerators.classMethods.es2018.types +++ b/tests/baselines/reference/emitter.asyncGenerators.classMethods.es2018.types @@ -46,8 +46,8 @@ class C4 { > : ^^ async * f() { ->f : () => AsyncGenerator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>f : () => AsyncGenerator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ const x = yield* [1]; >x : void diff --git a/tests/baselines/reference/emitter.asyncGenerators.classMethods.es5.types b/tests/baselines/reference/emitter.asyncGenerators.classMethods.es5.types index 71f69104f4972..bd682e17cbc45 100644 --- a/tests/baselines/reference/emitter.asyncGenerators.classMethods.es5.types +++ b/tests/baselines/reference/emitter.asyncGenerators.classMethods.es5.types @@ -46,8 +46,8 @@ class C4 { > : ^^ async * f() { ->f : () => AsyncGenerator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>f : () => AsyncGenerator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ const x = yield* [1]; >x : void diff --git a/tests/baselines/reference/emitter.asyncGenerators.functionDeclarations.es2015.types b/tests/baselines/reference/emitter.asyncGenerators.functionDeclarations.es2015.types index 4cacea0078245..74348e6bea97b 100644 --- a/tests/baselines/reference/emitter.asyncGenerators.functionDeclarations.es2015.types +++ b/tests/baselines/reference/emitter.asyncGenerators.functionDeclarations.es2015.types @@ -27,8 +27,8 @@ async function * f3() { } === F4.ts === async function * f4() { ->f4 : () => AsyncGenerator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>f4 : () => AsyncGenerator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ const x = yield* [1]; >x : void diff --git a/tests/baselines/reference/emitter.asyncGenerators.functionDeclarations.es2018.types b/tests/baselines/reference/emitter.asyncGenerators.functionDeclarations.es2018.types index 4462bcb0ef7c5..8dd3b7da2efcc 100644 --- a/tests/baselines/reference/emitter.asyncGenerators.functionDeclarations.es2018.types +++ b/tests/baselines/reference/emitter.asyncGenerators.functionDeclarations.es2018.types @@ -27,8 +27,8 @@ async function * f3() { } === F4.ts === async function * f4() { ->f4 : () => AsyncGenerator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>f4 : () => AsyncGenerator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ const x = yield* [1]; >x : void diff --git a/tests/baselines/reference/emitter.asyncGenerators.functionDeclarations.es5.types b/tests/baselines/reference/emitter.asyncGenerators.functionDeclarations.es5.types index a10e8678efd7e..59e3a1363a075 100644 --- a/tests/baselines/reference/emitter.asyncGenerators.functionDeclarations.es5.types +++ b/tests/baselines/reference/emitter.asyncGenerators.functionDeclarations.es5.types @@ -27,8 +27,8 @@ async function * f3() { } === F4.ts === async function * f4() { ->f4 : () => AsyncGenerator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>f4 : () => AsyncGenerator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ const x = yield* [1]; >x : void diff --git a/tests/baselines/reference/emitter.asyncGenerators.functionExpressions.es2015.types b/tests/baselines/reference/emitter.asyncGenerators.functionExpressions.es2015.types index 806b983fa9df9..18041f5542f80 100644 --- a/tests/baselines/reference/emitter.asyncGenerators.functionExpressions.es2015.types +++ b/tests/baselines/reference/emitter.asyncGenerators.functionExpressions.es2015.types @@ -33,10 +33,10 @@ const f3 = async function * () { } === 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 : void diff --git a/tests/baselines/reference/emitter.asyncGenerators.functionExpressions.es2018.types b/tests/baselines/reference/emitter.asyncGenerators.functionExpressions.es2018.types index 4e4c60251b500..1a3215bb057c3 100644 --- a/tests/baselines/reference/emitter.asyncGenerators.functionExpressions.es2018.types +++ b/tests/baselines/reference/emitter.asyncGenerators.functionExpressions.es2018.types @@ -33,10 +33,10 @@ const f3 = async function * () { } === 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 : void diff --git a/tests/baselines/reference/emitter.asyncGenerators.functionExpressions.es5.types b/tests/baselines/reference/emitter.asyncGenerators.functionExpressions.es5.types index 94cd056d7e0ee..1d3b779a40d9d 100644 --- a/tests/baselines/reference/emitter.asyncGenerators.functionExpressions.es5.types +++ b/tests/baselines/reference/emitter.asyncGenerators.functionExpressions.es5.types @@ -33,10 +33,10 @@ const f3 = async function * () { } === 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 : void diff --git a/tests/baselines/reference/emitter.asyncGenerators.objectLiteralMethods.es2015.types b/tests/baselines/reference/emitter.asyncGenerators.objectLiteralMethods.es2015.types index 4185b4d15a0d3..d4b0bca526ca3 100644 --- a/tests/baselines/reference/emitter.asyncGenerators.objectLiteralMethods.es2015.types +++ b/tests/baselines/reference/emitter.asyncGenerators.objectLiteralMethods.es2015.types @@ -48,14 +48,14 @@ const o3 = { } === 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 : void diff --git a/tests/baselines/reference/emitter.asyncGenerators.objectLiteralMethods.es2018.types b/tests/baselines/reference/emitter.asyncGenerators.objectLiteralMethods.es2018.types index 5cc5d052f8454..7fe442f220302 100644 --- a/tests/baselines/reference/emitter.asyncGenerators.objectLiteralMethods.es2018.types +++ b/tests/baselines/reference/emitter.asyncGenerators.objectLiteralMethods.es2018.types @@ -48,14 +48,14 @@ const o3 = { } === 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 : void diff --git a/tests/baselines/reference/emitter.asyncGenerators.objectLiteralMethods.es5.types b/tests/baselines/reference/emitter.asyncGenerators.objectLiteralMethods.es5.types index 9e2a72b4bcb48..973fee35da0c8 100644 --- a/tests/baselines/reference/emitter.asyncGenerators.objectLiteralMethods.es5.types +++ b/tests/baselines/reference/emitter.asyncGenerators.objectLiteralMethods.es5.types @@ -48,14 +48,14 @@ const o3 = { } === 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 : void diff --git a/tests/baselines/reference/excessiveStackDepthFlatArray.types b/tests/baselines/reference/excessiveStackDepthFlatArray.types index c08dcfc75e20a..a9e2318d002c3 100644 --- a/tests/baselines/reference/excessiveStackDepthFlatArray.types +++ b/tests/baselines/reference/excessiveStackDepthFlatArray.types @@ -1,7 +1,8 @@ //// [tests/cases/compiler/excessiveStackDepthFlatArray.ts] //// === Performance Stats === -Instantiation count: 1,000 +Type Count: 1,000 +Instantiation count: 2,500 === index.tsx === interface MiddlewareArray extends Array {} diff --git a/tests/baselines/reference/for-of12.types b/tests/baselines/reference/for-of12.types index 24c0ba69b975a..209e81ab54f40 100644 --- a/tests/baselines/reference/for-of12.types +++ b/tests/baselines/reference/for-of12.types @@ -8,16 +8,16 @@ var v: string; for (v of [0, ""].values()) { } >v : string > : ^^^^^^ ->[0, ""].values() : IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->[0, ""].values : () => IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>[0, ""].values() : IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>[0, ""].values : () => IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >[0, ""] : (string | number)[] > : ^^^^^^^^^^^^^^^^^^^ >0 : 0 > : ^ >"" : "" > : ^^ ->values : () => IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>values : () => IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/for-of13.types b/tests/baselines/reference/for-of13.types index 6bfdc1fe849eb..31b0d162e9c38 100644 --- a/tests/baselines/reference/for-of13.types +++ b/tests/baselines/reference/for-of13.types @@ -8,14 +8,14 @@ var v: string; for (v of [""].values()) { } >v : string > : ^^^^^^ ->[""].values() : IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^ ->[""].values : () => IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>[""].values() : IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>[""].values : () => IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >[""] : string[] > : ^^^^^^^^ >"" : "" > : ^^ ->values : () => IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>values : () => IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/for-of29.errors.txt b/tests/baselines/reference/for-of29.errors.txt index 232d6dcef2973..6378088712f36 100644 --- a/tests/baselines/reference/for-of29.errors.txt +++ b/tests/baselines/reference/for-of29.errors.txt @@ -1,4 +1,4 @@ -for-of29.ts(5,15): error TS2488: Type '{ [Symbol.iterator]?(): Iterator; }' must have a '[Symbol.iterator]()' method that returns an iterator. +for-of29.ts(5,15): error TS2488: Type '{ [Symbol.iterator]?(): Iterator; }' must have a '[Symbol.iterator]()' method that returns an iterator. ==== for-of29.ts (1 errors) ==== @@ -8,5 +8,5 @@ for-of29.ts(5,15): 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 2d9463317468e..db5e9dd4829ae 100644 --- a/tests/baselines/reference/for-of29.types +++ b/tests/baselines/reference/for-of29.types @@ -20,6 +20,6 @@ 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 09b90d0ed7a0e..bb44b41b7090c 100644 --- a/tests/baselines/reference/for-of39.errors.txt +++ b/tests/baselines/reference/for-of39.errors.txt @@ -2,8 +2,8 @@ for-of39.ts(1,15): error TS2769: No overload matches this call. Overload 1 of 4, '(iterable?: Iterable): Map', gave the following error. Argument of type '([string, number] | [string, true])[]' is not assignable to parameter of type 'Iterable'. The types returned by '[Symbol.iterator]().next(...)' are incompatible between these types. - Type 'IteratorResult<[string, number] | [string, true], void>' is not assignable to type 'IteratorResult'. - Type 'IteratorYieldResult<[string, number] | [string, true]>' is not assignable to type 'IteratorResult'. + Type 'IteratorResult<[string, number] | [string, true], void>' 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'. Type '[string, number] | [string, true]' is not assignable to type 'readonly [string, boolean]'. Type '[string, number]' is not assignable to type 'readonly [string, boolean]'. @@ -20,8 +20,8 @@ for-of39.ts(1,15): error TS2769: No overload matches this call. !!! error TS2769: Overload 1 of 4, '(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: The types returned by '[Symbol.iterator]().next(...)' are incompatible between these types. -!!! error TS2769: Type 'IteratorResult<[string, number] | [string, true], void>' is not assignable to type 'IteratorResult'. -!!! error TS2769: Type 'IteratorYieldResult<[string, number] | [string, true]>' is not assignable to type 'IteratorResult'. +!!! error TS2769: Type 'IteratorResult<[string, number] | [string, true], void>' 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'. !!! error TS2769: Type '[string, number] | [string, true]' is not assignable to type 'readonly [string, boolean]'. !!! error TS2769: Type '[string, number]' is not assignable to type 'readonly [string, boolean]'. diff --git a/tests/baselines/reference/generatorReturnTypeFallback.1.types b/tests/baselines/reference/generatorReturnTypeFallback.1.types index fc04c48fbaf7c..a2a996a95f453 100644 --- a/tests/baselines/reference/generatorReturnTypeFallback.1.types +++ b/tests/baselines/reference/generatorReturnTypeFallback.1.types @@ -3,8 +3,8 @@ === generatorReturnTypeFallback.1.ts === // Allow generators to fallback to IterableIterator if they do not need a type for the sent value while in strictNullChecks mode. function* f() { ->f : () => IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>f : () => IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ yield 1; >yield 1 : any diff --git a/tests/baselines/reference/generatorReturnTypeFallback.5.types b/tests/baselines/reference/generatorReturnTypeFallback.5.types index 7d85ccb1af79c..8f0ed0f37828c 100644 --- a/tests/baselines/reference/generatorReturnTypeFallback.5.types +++ b/tests/baselines/reference/generatorReturnTypeFallback.5.types @@ -7,8 +7,8 @@ function* 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 cb6dbf4a62262..6604493beb592 100644 --- a/tests/baselines/reference/generatorReturnTypeInference.types +++ b/tests/baselines/reference/generatorReturnTypeInference.types @@ -40,8 +40,8 @@ function* g002() { // Generator } function* g003() { // Generator ->g003 : () => Generator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>g003 : () => Generator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ yield* []; >yield* [] : void @@ -51,12 +51,12 @@ function* g003() { // Generator } function* g004() { // Generator ->g004 : () => Generator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>g004 : () => Generator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ yield* iterableIterator; ->yield* iterableIterator : void -> : ^^^^ +>yield* iterableIterator : any +> : ^^^ >iterableIterator : IterableIterator > : ^^^^^^^^^^^^^^^^^^^^^^^^ } diff --git a/tests/baselines/reference/generatorReturnTypeInferenceNonStrict.types b/tests/baselines/reference/generatorReturnTypeInferenceNonStrict.types index 55d60768b8d88..f84394bd8e085 100644 --- a/tests/baselines/reference/generatorReturnTypeInferenceNonStrict.types +++ b/tests/baselines/reference/generatorReturnTypeInferenceNonStrict.types @@ -40,8 +40,8 @@ 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. @@ -53,12 +53,12 @@ function* g003() { // Generator } function* g004() { // Generator ->g004 : () => Generator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>g004 : () => Generator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ yield* iterableIterator; ->yield* iterableIterator : void -> : ^^^^ +>yield* iterableIterator : any +> : ^^^ >iterableIterator : IterableIterator > : ^^^^^^^^^^^^^^^^^^^^^^^^ } diff --git a/tests/baselines/reference/generatorTypeCheck13.types b/tests/baselines/reference/generatorTypeCheck13.types index 6bd83c1136fe7..d3a8c8d8650dc 100644 --- a/tests/baselines/reference/generatorTypeCheck13.types +++ b/tests/baselines/reference/generatorTypeCheck13.types @@ -6,8 +6,8 @@ function* g(): IterableIterator { > : ^^^^^^ yield 0; ->yield 0 : undefined -> : ^^^^^^^^^ +>yield 0 : unknown +> : ^^^^^^^ >0 : 0 > : ^ diff --git a/tests/baselines/reference/generatorTypeCheck17.types b/tests/baselines/reference/generatorTypeCheck17.types index f163aad700ceb..794f2dd6b743c 100644 --- a/tests/baselines/reference/generatorTypeCheck17.types +++ b/tests/baselines/reference/generatorTypeCheck17.types @@ -20,12 +20,12 @@ function* 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 d9c9694e47213..48a4b322681e6 100644 --- a/tests/baselines/reference/generatorTypeCheck18.types +++ b/tests/baselines/reference/generatorTypeCheck18.types @@ -18,12 +18,12 @@ function* 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 51bd31421b90d..5515f26f3562a 100644 --- a/tests/baselines/reference/generatorTypeCheck19.types +++ b/tests/baselines/reference/generatorTypeCheck19.types @@ -20,8 +20,8 @@ function* g(): IterableIterator { > : ^^^^^^ yield; ->yield : undefined -> : ^^^^^^^^^ +>yield : unknown +> : ^^^^^^^ yield * [new Bar]; >yield * [new Bar] : void diff --git a/tests/baselines/reference/generatorTypeCheck20.types b/tests/baselines/reference/generatorTypeCheck20.types index ba12c8e0a2b09..e4506eaa84aa5 100644 --- a/tests/baselines/reference/generatorTypeCheck20.types +++ b/tests/baselines/reference/generatorTypeCheck20.types @@ -18,8 +18,8 @@ function* g(): IterableIterator { > : ^^^^^^ yield; ->yield : undefined -> : ^^^^^^^^^ +>yield : unknown +> : ^^^^^^^ yield * [new Baz]; >yield * [new Baz] : void diff --git a/tests/baselines/reference/generatorTypeCheck21.types b/tests/baselines/reference/generatorTypeCheck21.types index 58cc46f34578e..b263e050db7fb 100644 --- a/tests/baselines/reference/generatorTypeCheck21.types +++ b/tests/baselines/reference/generatorTypeCheck21.types @@ -20,8 +20,8 @@ function* 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 ecaa0c00168e5..5f0d1969ecf7d 100644 --- a/tests/baselines/reference/generatorTypeCheck22.types +++ b/tests/baselines/reference/generatorTypeCheck22.types @@ -22,8 +22,8 @@ class Baz { 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 b8ae9a477e20c..78ac817e8a3cb 100644 --- a/tests/baselines/reference/generatorTypeCheck23.types +++ b/tests/baselines/reference/generatorTypeCheck23.types @@ -22,8 +22,8 @@ class Baz { 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 b518a27d4fda6..f5e7a3e0bb15d 100644 --- a/tests/baselines/reference/generatorTypeCheck24.types +++ b/tests/baselines/reference/generatorTypeCheck24.types @@ -22,8 +22,8 @@ class Baz { 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 02fb671a031ef..5a0fdf0fc791a 100644 --- a/tests/baselines/reference/generatorTypeCheck25.errors.txt +++ b/tests/baselines/reference/generatorTypeCheck25.errors.txt @@ -1,8 +1,8 @@ -generatorTypeCheck25.ts(4,5): error TS2322: Type '() => Generator' is not assignable to type '() => Iterable'. - Call signature return types 'Generator' and 'Iterable' are incompatible. +generatorTypeCheck25.ts(4,5): error TS2322: Type '() => Generator' is not assignable to type '() => Iterable'. + Call signature return types 'Generator' and 'Iterable' are incompatible. The types returned by '[Symbol.iterator]().next(...)' are incompatible between these types. - Type 'IteratorResult' is not assignable to type 'IteratorResult'. - Type 'IteratorYieldResult' is not assignable to type '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'. Type 'Bar | Baz' is not assignable to type 'Foo'. Property 'x' is missing in type 'Baz' but required in type 'Foo'. @@ -14,11 +14,11 @@ generatorTypeCheck25.ts(4,5): error TS2322: Type '() => Generator Iterable = function* () { ~~ -!!! error TS2322: Type '() => Generator' is not assignable to type '() => Iterable'. -!!! error TS2322: Call signature return types 'Generator' and 'Iterable' are incompatible. +!!! error TS2322: Type '() => Generator' is not assignable to type '() => Iterable'. +!!! error TS2322: Call signature return types 'Generator' and 'Iterable' are incompatible. !!! error TS2322: The types returned by '[Symbol.iterator]().next(...)' are incompatible between these types. -!!! error TS2322: Type 'IteratorResult' is not assignable to type 'IteratorResult'. -!!! error TS2322: Type 'IteratorYieldResult' is not assignable to type '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'. !!! error TS2322: Type 'Bar | Baz' is not assignable to type 'Foo'. !!! error TS2322: Property 'x' is missing in type 'Baz' but required in type 'Foo'. diff --git a/tests/baselines/reference/generatorTypeCheck25.types b/tests/baselines/reference/generatorTypeCheck25.types index 5dc23453b96db..6cd5bdd994c2f 100644 --- a/tests/baselines/reference/generatorTypeCheck25.types +++ b/tests/baselines/reference/generatorTypeCheck25.types @@ -24,24 +24,24 @@ 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 91b6866e7a94e..56094ff72e7d2 100644 --- a/tests/baselines/reference/generatorTypeCheck26.types +++ b/tests/baselines/reference/generatorTypeCheck26.types @@ -10,8 +10,8 @@ function* g(): IterableIterator<(x: string) => number, (x: string) => number> { > : ^^^^^^ yield x => x.length; ->yield x => x.length : undefined -> : ^^^^^^^^^ +>yield x => x.length : unknown +> : ^^^^^^^ >x => x.length : (x: string) => number > : ^ ^^^^^^^^^^^^^^^^^^^ >x : string diff --git a/tests/baselines/reference/generatorTypeCheck27.types b/tests/baselines/reference/generatorTypeCheck27.types index 407ed12838649..5306fd6d67f8a 100644 --- a/tests/baselines/reference/generatorTypeCheck27.types +++ b/tests/baselines/reference/generatorTypeCheck27.types @@ -10,14 +10,14 @@ function* g(): IterableIterator<(x: string) => number> { yield * function* () { >yield * function* () { yield x => x.length; } () : void > : ^^^^ ->function* () { yield x => x.length; } () : Generator<(x: string) => number, void, undefined> -> : ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->function* () { yield x => x.length; } : () => Generator<(x: string) => number, void, undefined> -> : ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>function* () { yield x => x.length; } () : Generator<(x: string) => number, void, unknown> +> : ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>function* () { yield x => x.length; } : () => Generator<(x: string) => number, void, unknown> +> : ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ yield x => x.length; ->yield x => x.length : undefined -> : ^^^^^^^^^ +>yield x => x.length : unknown +> : ^^^^^^^ >x => x.length : (x: string) => number > : ^ ^^^^^^^^^^^^^^^^^^^ >x : string diff --git a/tests/baselines/reference/generatorTypeCheck28.types b/tests/baselines/reference/generatorTypeCheck28.types index c7675a7248536..e340610f043b7 100644 --- a/tests/baselines/reference/generatorTypeCheck28.types +++ b/tests/baselines/reference/generatorTypeCheck28.types @@ -10,12 +10,12 @@ 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 : unique symbol > : ^^^^^^^^^^^^^ >Symbol : SymbolConstructor @@ -24,8 +24,8 @@ function* g(): IterableIterator<(x: string) => number> { > : ^^^^^^^^^^^^^ yield x => x.length; ->yield x => x.length : undefined -> : ^^^^^^^^^ +>yield x => x.length : unknown +> : ^^^^^^^ >x => x.length : (x: string) => number > : ^ ^^^^^^^^^^^^^^^^^^^ >x : string diff --git a/tests/baselines/reference/generatorTypeCheck29.types b/tests/baselines/reference/generatorTypeCheck29.types index c8420f3d22938..d3eeb00dce788 100644 --- a/tests/baselines/reference/generatorTypeCheck29.types +++ b/tests/baselines/reference/generatorTypeCheck29.types @@ -8,16 +8,16 @@ function* g2(): Iterator number>> { > : ^^^^^^ yield function* () { ->yield function* () { yield x => x.length; } () : undefined -> : ^^^^^^^^^ ->function* () { yield x => x.length; } () : Generator<(x: string) => number, void, undefined> -> : ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->function* () { yield x => x.length; } : () => Generator<(x: string) => number, void, undefined> -> : ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>yield function* () { yield x => x.length; } () : unknown +> : ^^^^^^^ +>function* () { yield x => x.length; } () : Generator<(x: string) => number, void, unknown> +> : ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>function* () { yield x => x.length; } : () => Generator<(x: string) => number, void, unknown> +> : ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ yield x => x.length; ->yield x => x.length : undefined -> : ^^^^^^^^^ +>yield x => x.length : unknown +> : ^^^^^^^ >x => x.length : (x: string) => number > : ^ ^^^^^^^^^^^^^^^^^^^ >x : string diff --git a/tests/baselines/reference/generatorTypeCheck30.types b/tests/baselines/reference/generatorTypeCheck30.types index bbb0e9be9f6dd..1c384a7a88c46 100644 --- a/tests/baselines/reference/generatorTypeCheck30.types +++ b/tests/baselines/reference/generatorTypeCheck30.types @@ -8,16 +8,16 @@ function* g2(): Iterator number>> { > : ^^^^^^ yield function* () { ->yield function* () { yield x => x.length; } () : undefined -> : ^^^^^^^^^ ->function* () { yield x => x.length; } () : Generator<(x: string) => number, void, undefined> -> : ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->function* () { yield x => x.length; } : () => Generator<(x: string) => number, void, undefined> -> : ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>yield function* () { yield x => x.length; } () : unknown +> : ^^^^^^^ +>function* () { yield x => x.length; } () : Generator<(x: string) => number, void, unknown> +> : ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>function* () { yield x => x.length; } : () => Generator<(x: string) => number, void, unknown> +> : ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ yield x => x.length; ->yield x => x.length : undefined -> : ^^^^^^^^^ +>yield x => x.length : unknown +> : ^^^^^^^ >x => x.length : (x: string) => number > : ^ ^^^^^^^^^^^^^^^^^^^ >x : string diff --git a/tests/baselines/reference/generatorTypeCheck31.types b/tests/baselines/reference/generatorTypeCheck31.types index 18130e17dfa3c..d44e5a4de6dfd 100644 --- a/tests/baselines/reference/generatorTypeCheck31.types +++ b/tests/baselines/reference/generatorTypeCheck31.types @@ -8,8 +8,8 @@ function* g2(): Iterator<() => Iterable<(x: string) => number>> { > : ^^^^^^ 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 47d1ae33884eb..8310da5802a93 100644 --- a/tests/baselines/reference/generatorTypeCheck45.types +++ b/tests/baselines/reference/generatorTypeCheck45.types @@ -22,10 +22,10 @@ foo("", function* () { yield x => x.length }, p => undefined); // T is fixed, sh > : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >"" : "" > : ^^ ->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 diff --git a/tests/baselines/reference/generatorTypeCheck46.types b/tests/baselines/reference/generatorTypeCheck46.types index cc4525d4915ba..ab9d9998763f6 100644 --- a/tests/baselines/reference/generatorTypeCheck46.types +++ b/tests/baselines/reference/generatorTypeCheck46.types @@ -22,18 +22,18 @@ foo("", function* () { > : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >"" : "" > : ^^ ->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 : unique symbol > : ^^^^^^^^^^^^^ >Symbol : SymbolConstructor @@ -42,8 +42,8 @@ foo("", function* () { > : ^^^^^^^^^^^^^ yield x => x.length ->yield x => x.length : undefined -> : ^^^^^^^^^ +>yield x => x.length : unknown +> : ^^^^^^^ >x => x.length : (x: string) => number > : ^ ^^^^^^^^^^^^^^^^^^^ >x : string diff --git a/tests/baselines/reference/generatorTypeCheck53.types b/tests/baselines/reference/generatorTypeCheck53.types index 6b31c88844a6d..30d51dfd889fa 100644 --- a/tests/baselines/reference/generatorTypeCheck53.types +++ b/tests/baselines/reference/generatorTypeCheck53.types @@ -14,8 +14,8 @@ class Baz { 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 780f5dc6c7d89..10510fd72e5d2 100644 --- a/tests/baselines/reference/generatorTypeCheck54.types +++ b/tests/baselines/reference/generatorTypeCheck54.types @@ -14,8 +14,8 @@ class Baz { z: number } > : ^^^^^^ function* g() { ->g : () => Generator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>g : () => Generator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ yield* [new Foo]; >yield* [new Foo] : void diff --git a/tests/baselines/reference/generatorTypeCheck62.errors.txt b/tests/baselines/reference/generatorTypeCheck62.errors.txt index 80e17caec1a2e..22e03ebc72d14 100644 --- a/tests/baselines/reference/generatorTypeCheck62.errors.txt +++ b/tests/baselines/reference/generatorTypeCheck62.errors.txt @@ -1,12 +1,12 @@ -generatorTypeCheck62.ts(24,62): error TS2345: Argument of type '(state: State) => Generator' is not assignable to parameter of type '(a: State) => IterableIterator'. - Call signature return types 'Generator' and 'IterableIterator' are incompatible. +generatorTypeCheck62.ts(24,62): error TS2345: Argument of type '(state: State) => Generator' is not assignable to parameter of type '(a: State) => IterableIterator'. + Call signature return types 'Generator' and 'IterableIterator' are incompatible. The types returned by 'next(...)' are incompatible between these types. Type 'IteratorResult' is not assignable to type 'IteratorResult'. Type 'IteratorReturnResult' is not assignable to type 'IteratorResult'. Type 'IteratorReturnResult' is not assignable to type 'IteratorReturnResult'. Type 'State' is not assignable to type 'void'. -generatorTypeCheck62.ts(32,62): error TS2345: Argument of type '(state: State) => Generator' is not assignable to parameter of type '(a: any) => IterableIterator'. - Call signature return types 'Generator' and 'IterableIterator' are incompatible. +generatorTypeCheck62.ts(32,62): error TS2345: Argument of type '(state: State) => Generator' is not assignable to parameter of type '(a: any) => IterableIterator'. + Call signature return types 'Generator' and 'IterableIterator' are incompatible. The types returned by 'next(...)' are incompatible between these types. Type 'IteratorResult' is not assignable to type 'IteratorResult'. Type 'IteratorReturnResult' is not assignable to type 'IteratorResult'. @@ -18,7 +18,7 @@ generatorTypeCheck62.ts(32,62): error TS2345: Argument of type '(state: State) = lastStrategyApplied?: string; } - export function strategy(stratName: string, gen: (a: T) => IterableIterator): (a: T) => IterableIterator { + export function strategy(stratName: string, gen: (a: T) => IterableIterator): (a: T) => IterableIterator { return function*(state) { for (const next of gen(state)) { if (next) { @@ -30,7 +30,7 @@ generatorTypeCheck62.ts(32,62): error TS2345: Argument of type '(state: State) = } export interface Strategy { - (a: T): IterableIterator; + (a: T): IterableIterator; } export interface State extends StrategicState { @@ -39,8 +39,8 @@ generatorTypeCheck62.ts(32,62): error TS2345: Argument of type '(state: State) = export const Nothing1: 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: Call signature return types 'Generator' and 'IterableIterator' are incompatible. +!!! error TS2345: Argument of type '(state: State) => Generator' is not assignable to parameter of type '(a: State) => IterableIterator'. +!!! error TS2345: Call signature return types 'Generator' and 'IterableIterator' are incompatible. !!! error TS2345: The types returned by 'next(...)' are incompatible between these types. !!! error TS2345: Type 'IteratorResult' is not assignable to type 'IteratorResult'. !!! error TS2345: Type 'IteratorReturnResult' is not assignable to type 'IteratorResult'. @@ -55,8 +55,8 @@ generatorTypeCheck62.ts(32,62): error TS2345: Argument of type '(state: State) = export const Nothing3: Strategy = strategy("Nothing", function* (state: State) { ~~~~~~~~ -!!! error TS2345: Argument of type '(state: State) => Generator' is not assignable to parameter of type '(a: any) => IterableIterator'. -!!! error TS2345: Call signature return types 'Generator' and 'IterableIterator' are incompatible. +!!! error TS2345: Argument of type '(state: State) => Generator' is not assignable to parameter of type '(a: any) => IterableIterator'. +!!! error TS2345: Call signature return types 'Generator' and 'IterableIterator' are incompatible. !!! error TS2345: The types returned by 'next(...)' are incompatible between these types. !!! error TS2345: Type 'IteratorResult' is not assignable to type 'IteratorResult'. !!! error TS2345: Type 'IteratorReturnResult' is not assignable to type 'IteratorResult'. diff --git a/tests/baselines/reference/generatorTypeCheck62.js b/tests/baselines/reference/generatorTypeCheck62.js index 17c00c1c0a68a..b07e7b95dd9f4 100644 --- a/tests/baselines/reference/generatorTypeCheck62.js +++ b/tests/baselines/reference/generatorTypeCheck62.js @@ -5,7 +5,7 @@ export interface StrategicState { lastStrategyApplied?: string; } -export function strategy(stratName: string, gen: (a: T) => IterableIterator): (a: T) => IterableIterator { +export function strategy(stratName: string, gen: (a: T) => IterableIterator): (a: T) => IterableIterator { return function*(state) { for (const next of gen(state)) { if (next) { @@ -17,7 +17,7 @@ export function strategy(stratName: string, gen: (a: T } export interface Strategy { - (a: T): IterableIterator; + (a: T): IterableIterator; } export interface State extends StrategicState { diff --git a/tests/baselines/reference/generatorTypeCheck62.symbols b/tests/baselines/reference/generatorTypeCheck62.symbols index 2e13010c6c5c4..ba66910de74e7 100644 --- a/tests/baselines/reference/generatorTypeCheck62.symbols +++ b/tests/baselines/reference/generatorTypeCheck62.symbols @@ -8,7 +8,7 @@ export interface StrategicState { >lastStrategyApplied : Symbol(StrategicState.lastStrategyApplied, Decl(generatorTypeCheck62.ts, 0, 33)) } -export function strategy(stratName: string, gen: (a: T) => IterableIterator): (a: T) => IterableIterator { +export function strategy(stratName: string, gen: (a: T) => IterableIterator): (a: T) => IterableIterator { >strategy : Symbol(strategy, Decl(generatorTypeCheck62.ts, 2, 1)) >T : Symbol(T, Decl(generatorTypeCheck62.ts, 4, 25)) >StrategicState : Symbol(StrategicState, Decl(generatorTypeCheck62.ts, 0, 0)) @@ -18,7 +18,7 @@ export function strategy(stratName: string, gen: (a: T >T : Symbol(T, Decl(generatorTypeCheck62.ts, 4, 25)) >IterableIterator : Symbol(IterableIterator, Decl(lib.es2015.iterable.d.ts, --, --)) >T : Symbol(T, Decl(generatorTypeCheck62.ts, 4, 25)) ->a : Symbol(a, Decl(generatorTypeCheck62.ts, 4, 120)) +>a : Symbol(a, Decl(generatorTypeCheck62.ts, 4, 126)) >T : Symbol(T, Decl(generatorTypeCheck62.ts, 4, 25)) >IterableIterator : Symbol(IterableIterator, Decl(lib.es2015.iterable.d.ts, --, --)) >T : Symbol(T, Decl(generatorTypeCheck62.ts, 4, 25)) @@ -50,7 +50,7 @@ export interface Strategy { >Strategy : Symbol(Strategy, Decl(generatorTypeCheck62.ts, 13, 1)) >T : Symbol(T, Decl(generatorTypeCheck62.ts, 15, 26)) - (a: T): IterableIterator; + (a: T): IterableIterator; >a : Symbol(a, Decl(generatorTypeCheck62.ts, 16, 5)) >T : Symbol(T, Decl(generatorTypeCheck62.ts, 15, 26)) >IterableIterator : Symbol(IterableIterator, Decl(lib.es2015.iterable.d.ts, --, --)) diff --git a/tests/baselines/reference/generatorTypeCheck62.types b/tests/baselines/reference/generatorTypeCheck62.types index efa1296adfbeb..957ae37064341 100644 --- a/tests/baselines/reference/generatorTypeCheck62.types +++ b/tests/baselines/reference/generatorTypeCheck62.types @@ -7,31 +7,31 @@ export interface StrategicState { > : ^^^^^^ } -export function strategy(stratName: string, gen: (a: T) => IterableIterator): (a: T) => IterableIterator { ->strategy : (stratName: string, gen: (a: T) => IterableIterator) => (a: T) => IterableIterator -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ +export function strategy(stratName: string, gen: (a: T) => IterableIterator): (a: T) => IterableIterator { +>strategy : (stratName: string, gen: (a: T) => IterableIterator) => (a: T) => IterableIterator +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >stratName : string > : ^^^^^^ ->gen : (a: T) => IterableIterator -> : ^ ^^ ^^^^^ +>gen : (a: T) => IterableIterator +> : ^ ^^ ^^^^^ >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)) { >next : T > : ^ ->gen(state) : IterableIterator -> : ^^^^^^^^^^^^^^^^^^^ ->gen : (a: T) => IterableIterator -> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ +>gen(state) : IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +>gen : (a: T) => IterableIterator +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >state : T > : ^ @@ -52,8 +52,8 @@ export function strategy(stratName: string, gen: (a: T > : ^^^^^^ } yield next; ->yield next : undefined -> : ^^^^^^^^^ +>yield next : unknown +> : ^^^^^^^ >next : T > : ^ } @@ -61,7 +61,7 @@ export function strategy(stratName: string, gen: (a: T } export interface Strategy { - (a: T): IterableIterator; + (a: T): IterableIterator; >a : T > : ^ } @@ -75,14 +75,14 @@ export interface State extends StrategicState { export const Nothing1: Strategy = strategy("Nothing", function*(state: State) { >Nothing1 : Strategy > : ^^^^^^^^^^^^^^^ ->strategy("Nothing", function*(state: State) { return state; // `return`/`TReturn` isn't supported by `strategy`, so this should error.}) : (a: State) => IterableIterator -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->strategy : (stratName: string, gen: (a: T) => IterableIterator) => (a: T) => IterableIterator -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ +>strategy("Nothing", function*(state: State) { return state; // `return`/`TReturn` isn't supported by `strategy`, so this should error.}) : (a: State) => IterableIterator +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>strategy : (stratName: string, gen: (a: T) => IterableIterator) => (a: T) => IterableIterator +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >"Nothing" : "Nothing" > : ^^^^^^^^^ ->function*(state: State) { return state; // `return`/`TReturn` isn't supported by `strategy`, so this should error.} : (state: State) => Generator -> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>function*(state: State) { return state; // `return`/`TReturn` isn't supported by `strategy`, so this should error.} : (state: State) => Generator +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >state : State > : ^^^^^ @@ -95,20 +95,20 @@ export const Nothing1: Strategy = strategy("Nothing", function*(state: St export const Nothing2: Strategy = strategy("Nothing", function*(state: State) { >Nothing2 : Strategy > : ^^^^^^^^^^^^^^^ ->strategy("Nothing", function*(state: State) { yield state;}) : (a: State) => IterableIterator -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->strategy : (stratName: string, gen: (a: T) => IterableIterator) => (a: T) => IterableIterator -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ +>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 > : ^^^^^ @@ -117,20 +117,20 @@ export const Nothing2: Strategy = strategy("Nothing", function*(state: St export const Nothing3: Strategy = strategy("Nothing", function* (state: State) { >Nothing3 : Strategy > : ^^^^^^^^^^^^^^^ ->strategy("Nothing", function* (state: State) { yield ; return state; // `return`/`TReturn` isn't supported by `strategy`, so this should error.}) : (a: State) => IterableIterator -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->strategy : (stratName: string, gen: (a: T) => IterableIterator) => (a: T) => IterableIterator -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ +>strategy("Nothing", function* (state: State) { yield ; return state; // `return`/`TReturn` isn't supported by `strategy`, so this should error.}) : (a: State) => IterableIterator +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>strategy : (stratName: string, gen: (a: T) => IterableIterator) => (a: T) => IterableIterator +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >"Nothing" : "Nothing" > : ^^^^^^^^^ ->function* (state: State) { yield ; return state; // `return`/`TReturn` isn't supported by `strategy`, so this should error.} : (state: State) => Generator -> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>function* (state: State) { yield ; return state; // `return`/`TReturn` isn't supported by `strategy`, so this should error.} : (state: State) => Generator +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >state : State > : ^^^^^ yield ; ->yield : undefined -> : ^^^^^^^^^ +>yield : unknown +> : ^^^^^^^ return state; // `return`/`TReturn` isn't supported by `strategy`, so this should error. >state : State diff --git a/tests/baselines/reference/generatorTypeCheck63.errors.txt b/tests/baselines/reference/generatorTypeCheck63.errors.txt index 17a6b44c2d173..9e85c5fdefc58 100644 --- a/tests/baselines/reference/generatorTypeCheck63.errors.txt +++ b/tests/baselines/reference/generatorTypeCheck63.errors.txt @@ -1,19 +1,19 @@ -generatorTypeCheck63.ts(24,61): error TS2345: Argument of type '(state: State) => Generator' is not assignable to parameter of type '(a: State) => IterableIterator'. - Call signature return types 'Generator' and 'IterableIterator' are incompatible. +generatorTypeCheck63.ts(24,61): error TS2345: Argument of type '(state: State) => Generator' is not assignable to parameter of type '(a: State) => IterableIterator'. + Call signature return types 'Generator' and 'IterableIterator' are incompatible. The types returned by 'next(...)' are incompatible between these types. 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 'number' is not assignable to type 'State'. -generatorTypeCheck63.ts(32,62): error TS2345: Argument of type '(state: State) => Generator' is not assignable to parameter of type '(a: State) => IterableIterator'. - Call signature return types 'Generator' and 'IterableIterator' are incompatible. +generatorTypeCheck63.ts(32,62): error TS2345: Argument of type '(state: State) => Generator' is not assignable to parameter of type '(a: State) => IterableIterator'. + Call signature return types 'Generator' and 'IterableIterator' are incompatible. The types returned by 'next(...)' are incompatible between these types. Type 'IteratorResult' is not assignable to type 'IteratorResult'. Type 'IteratorReturnResult' is not assignable to type 'IteratorResult'. Type 'IteratorReturnResult' is not assignable to type 'IteratorReturnResult'. Type 'number' is not assignable to type 'void'. -generatorTypeCheck63.ts(36,62): error TS2345: Argument of type '(state: State) => Generator' is not assignable to parameter of type '(a: State) => IterableIterator'. - Call signature return types 'Generator' and 'IterableIterator' are incompatible. +generatorTypeCheck63.ts(36,62): error TS2345: Argument of type '(state: State) => Generator' is not assignable to parameter of type '(a: State) => IterableIterator'. + Call signature return types 'Generator' and 'IterableIterator' are incompatible. The types returned by 'next(...)' are incompatible between these types. Type 'IteratorResult' is not assignable to type 'IteratorResult'. Type 'IteratorReturnResult' is not assignable to type 'IteratorResult'. @@ -24,7 +24,7 @@ generatorTypeCheck63.ts(36,62): error TS2345: Argument of type '(state: State) = lastStrategyApplied?: string; } - export function strategy(stratName: string, gen: (a: T) => IterableIterator): (a: T) => IterableIterator { + export function strategy(stratName: string, gen: (a: T) => IterableIterator): (a: T) => IterableIterator { return function*(state) { for (const next of gen(state)) { if (next) { @@ -36,7 +36,7 @@ generatorTypeCheck63.ts(36,62): error TS2345: Argument of type '(state: State) = } export interface Strategy { - (a: T): IterableIterator; + (a: T): IterableIterator; } export interface State extends StrategicState { @@ -45,8 +45,8 @@ generatorTypeCheck63.ts(36,62): error TS2345: Argument of type '(state: State) = 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: Call signature return types 'Generator' and 'IterableIterator' are incompatible. +!!! error TS2345: Argument of type '(state: State) => Generator' is not assignable to parameter of type '(a: State) => IterableIterator'. +!!! error TS2345: Call signature return types 'Generator' and 'IterableIterator' are incompatible. !!! error TS2345: The types returned by 'next(...)' are incompatible between these types. !!! error TS2345: Type 'IteratorResult' is not assignable to type 'IteratorResult'. !!! error TS2345: Type 'IteratorYieldResult' is not assignable to type 'IteratorResult'. @@ -61,8 +61,8 @@ generatorTypeCheck63.ts(36,62): error TS2345: Argument of type '(state: State) = export const Nothing2: 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: Call signature return types 'Generator' and 'IterableIterator' are incompatible. +!!! error TS2345: Argument of type '(state: State) => Generator' is not assignable to parameter of type '(a: State) => IterableIterator'. +!!! error TS2345: Call signature return types 'Generator' and 'IterableIterator' are incompatible. !!! error TS2345: The types returned by 'next(...)' are incompatible between these types. !!! error TS2345: Type 'IteratorResult' is not assignable to type 'IteratorResult'. !!! error TS2345: Type 'IteratorReturnResult' is not assignable to type 'IteratorResult'. @@ -73,8 +73,8 @@ generatorTypeCheck63.ts(36,62): error TS2345: Argument of type '(state: State) = export const Nothing3: 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: Call signature return types 'Generator' and 'IterableIterator' are incompatible. +!!! error TS2345: Argument of type '(state: State) => Generator' is not assignable to parameter of type '(a: State) => IterableIterator'. +!!! error TS2345: Call signature return types 'Generator' and 'IterableIterator' are incompatible. !!! error TS2345: The types returned by 'next(...)' are incompatible between these types. !!! error TS2345: Type 'IteratorResult' is not assignable to type 'IteratorResult'. !!! error TS2345: Type 'IteratorReturnResult' is not assignable to type 'IteratorResult'. diff --git a/tests/baselines/reference/generatorTypeCheck63.js b/tests/baselines/reference/generatorTypeCheck63.js index 38a229c016a10..0aaf78ccacfac 100644 --- a/tests/baselines/reference/generatorTypeCheck63.js +++ b/tests/baselines/reference/generatorTypeCheck63.js @@ -5,7 +5,7 @@ export interface StrategicState { lastStrategyApplied?: string; } -export function strategy(stratName: string, gen: (a: T) => IterableIterator): (a: T) => IterableIterator { +export function strategy(stratName: string, gen: (a: T) => IterableIterator): (a: T) => IterableIterator { return function*(state) { for (const next of gen(state)) { if (next) { @@ -17,7 +17,7 @@ export function strategy(stratName: string, gen: (a: T } export interface Strategy { - (a: T): IterableIterator; + (a: T): IterableIterator; } export interface State extends StrategicState { diff --git a/tests/baselines/reference/generatorTypeCheck63.symbols b/tests/baselines/reference/generatorTypeCheck63.symbols index eb91585f7334a..d23cf0b032707 100644 --- a/tests/baselines/reference/generatorTypeCheck63.symbols +++ b/tests/baselines/reference/generatorTypeCheck63.symbols @@ -8,7 +8,7 @@ export interface StrategicState { >lastStrategyApplied : Symbol(StrategicState.lastStrategyApplied, Decl(generatorTypeCheck63.ts, 0, 33)) } -export function strategy(stratName: string, gen: (a: T) => IterableIterator): (a: T) => IterableIterator { +export function strategy(stratName: string, gen: (a: T) => IterableIterator): (a: T) => IterableIterator { >strategy : Symbol(strategy, Decl(generatorTypeCheck63.ts, 2, 1)) >T : Symbol(T, Decl(generatorTypeCheck63.ts, 4, 25)) >StrategicState : Symbol(StrategicState, Decl(generatorTypeCheck63.ts, 0, 0)) @@ -18,7 +18,7 @@ export function strategy(stratName: string, gen: (a: T >T : Symbol(T, Decl(generatorTypeCheck63.ts, 4, 25)) >IterableIterator : Symbol(IterableIterator, Decl(lib.es2015.iterable.d.ts, --, --)) >T : Symbol(T, Decl(generatorTypeCheck63.ts, 4, 25)) ->a : Symbol(a, Decl(generatorTypeCheck63.ts, 4, 120)) +>a : Symbol(a, Decl(generatorTypeCheck63.ts, 4, 126)) >T : Symbol(T, Decl(generatorTypeCheck63.ts, 4, 25)) >IterableIterator : Symbol(IterableIterator, Decl(lib.es2015.iterable.d.ts, --, --)) >T : Symbol(T, Decl(generatorTypeCheck63.ts, 4, 25)) @@ -50,7 +50,7 @@ export interface Strategy { >Strategy : Symbol(Strategy, Decl(generatorTypeCheck63.ts, 13, 1)) >T : Symbol(T, Decl(generatorTypeCheck63.ts, 15, 26)) - (a: T): IterableIterator; + (a: T): IterableIterator; >a : Symbol(a, Decl(generatorTypeCheck63.ts, 16, 5)) >T : Symbol(T, Decl(generatorTypeCheck63.ts, 15, 26)) >IterableIterator : Symbol(IterableIterator, Decl(lib.es2015.iterable.d.ts, --, --)) diff --git a/tests/baselines/reference/generatorTypeCheck63.types b/tests/baselines/reference/generatorTypeCheck63.types index da12bbcf6e23c..5389daa0638a4 100644 --- a/tests/baselines/reference/generatorTypeCheck63.types +++ b/tests/baselines/reference/generatorTypeCheck63.types @@ -7,31 +7,31 @@ export interface StrategicState { > : ^^^^^^ } -export function strategy(stratName: string, gen: (a: T) => IterableIterator): (a: T) => IterableIterator { ->strategy : (stratName: string, gen: (a: T) => IterableIterator) => (a: T) => IterableIterator -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ +export function strategy(stratName: string, gen: (a: T) => IterableIterator): (a: T) => IterableIterator { +>strategy : (stratName: string, gen: (a: T) => IterableIterator) => (a: T) => IterableIterator +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >stratName : string > : ^^^^^^ ->gen : (a: T) => IterableIterator -> : ^ ^^ ^^^^^ +>gen : (a: T) => IterableIterator +> : ^ ^^ ^^^^^ >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)) { >next : T > : ^ ->gen(state) : IterableIterator -> : ^^^^^^^^^^^^^^^^^^^ ->gen : (a: T) => IterableIterator -> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ +>gen(state) : IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +>gen : (a: T) => IterableIterator +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >state : T > : ^ @@ -52,8 +52,8 @@ export function strategy(stratName: string, gen: (a: T > : ^^^^^^ } yield next; ->yield next : undefined -> : ^^^^^^^^^ +>yield next : unknown +> : ^^^^^^^ >next : T > : ^ } @@ -61,7 +61,7 @@ export function strategy(stratName: string, gen: (a: T } export interface Strategy { - (a: T): IterableIterator; + (a: T): IterableIterator; >a : T > : ^ } @@ -75,20 +75,20 @@ export interface State extends StrategicState { export const Nothing: Strategy = strategy("Nothing", function* (state: State) { >Nothing : Strategy > : ^^^^^^^^^^^^^^^ ->strategy("Nothing", function* (state: State) { yield 1; // number isn't a `State`, so this should error. return state; // `return`/`TReturn` isn't supported by `strategy`, so this should error.}) : (a: State) => IterableIterator -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->strategy : (stratName: string, gen: (a: T) => IterableIterator) => (a: T) => IterableIterator -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ +>strategy("Nothing", function* (state: State) { yield 1; // number isn't a `State`, so this should error. return state; // `return`/`TReturn` isn't supported by `strategy`, so this should error.}) : (a: State) => IterableIterator +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>strategy : (stratName: string, gen: (a: T) => IterableIterator) => (a: T) => IterableIterator +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >"Nothing" : "Nothing" > : ^^^^^^^^^ ->function* (state: State) { yield 1; // number isn't a `State`, so this should error. return state; // `return`/`TReturn` isn't supported by `strategy`, so this should error.} : (state: State) => Generator -> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>function* (state: State) { yield 1; // number isn't a `State`, so this should error. return state; // `return`/`TReturn` isn't supported by `strategy`, so this should error.} : (state: State) => Generator +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >state : State > : ^^^^^ yield 1; // number isn't a `State`, so this should error. ->yield 1 : undefined -> : ^^^^^^^^^ +>yield 1 : unknown +> : ^^^^^^^ >1 : 1 > : ^ @@ -101,14 +101,14 @@ export const Nothing: Strategy = strategy("Nothing", function* (state: St export const Nothing1: Strategy = strategy("Nothing", function* (state: State) { >Nothing1 : Strategy > : ^^^^^^^^^^^^^^^ ->strategy("Nothing", function* (state: State) {}) : (a: State) => IterableIterator -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->strategy : (stratName: string, gen: (a: T) => IterableIterator) => (a: T) => IterableIterator -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ +>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 > : ^^^^^ @@ -117,14 +117,14 @@ export const Nothing1: Strategy = strategy("Nothing", function* (state: S export const Nothing2: Strategy = strategy("Nothing", function* (state: State) { >Nothing2 : Strategy > : ^^^^^^^^^^^^^^^ ->strategy("Nothing", function* (state: State) { return 1; // `return`/`TReturn` isn't supported by `strategy`, so this should error.}) : (a: State) => IterableIterator -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->strategy : (stratName: string, gen: (a: T) => IterableIterator) => (a: T) => IterableIterator -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ +>strategy("Nothing", function* (state: State) { return 1; // `return`/`TReturn` isn't supported by `strategy`, so this should error.}) : (a: State) => IterableIterator +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>strategy : (stratName: string, gen: (a: T) => IterableIterator) => (a: T) => IterableIterator +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >"Nothing" : "Nothing" > : ^^^^^^^^^ ->function* (state: State) { return 1; // `return`/`TReturn` isn't supported by `strategy`, so this should error.} : (state: State) => Generator -> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>function* (state: State) { return 1; // `return`/`TReturn` isn't supported by `strategy`, so this should error.} : (state: State) => Generator +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >state : State > : ^^^^^ @@ -137,20 +137,20 @@ export const Nothing2: Strategy = strategy("Nothing", function* (state: S export const Nothing3: Strategy = strategy("Nothing", function* (state: State) { >Nothing3 : Strategy > : ^^^^^^^^^^^^^^^ ->strategy("Nothing", function* (state: State) { yield state; return 1; // `return`/`TReturn` isn't supported by `strategy`, so this should error.}) : (a: State) => IterableIterator -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->strategy : (stratName: string, gen: (a: T) => IterableIterator) => (a: T) => IterableIterator -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ +>strategy("Nothing", function* (state: State) { yield state; return 1; // `return`/`TReturn` isn't supported by `strategy`, so this should error.}) : (a: State) => IterableIterator +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>strategy : (stratName: string, gen: (a: T) => IterableIterator) => (a: T) => IterableIterator +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >"Nothing" : "Nothing" > : ^^^^^^^^^ ->function* (state: State) { yield state; return 1; // `return`/`TReturn` isn't supported by `strategy`, so this should error.} : (state: State) => Generator -> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>function* (state: State) { yield state; return 1; // `return`/`TReturn` isn't supported by `strategy`, so this should error.} : (state: State) => Generator +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >state : State > : ^^^^^ yield state; ->yield state : undefined -> : ^^^^^^^^^ +>yield state : unknown +> : ^^^^^^^ >state : State > : ^^^^^ diff --git a/tests/baselines/reference/generatorTypeCheck7.errors.txt b/tests/baselines/reference/generatorTypeCheck7.errors.txt index daeed769c23db..e5181d2e20dc1 100644 --- a/tests/baselines/reference/generatorTypeCheck7.errors.txt +++ b/tests/baselines/reference/generatorTypeCheck7.errors.txt @@ -1,4 +1,4 @@ -generatorTypeCheck7.ts(4,17): error TS2741: Property 'hello' is missing in type 'Generator' but required in type 'WeirdIter'. +generatorTypeCheck7.ts(4,17): error TS2741: Property 'hello' is missing in type 'Generator' but required in type 'WeirdIter'. ==== generatorTypeCheck7.ts (1 errors) ==== @@ -7,5 +7,5 @@ generatorTypeCheck7.ts(4,17): error TS2741: Property 'hello' is missing in type } 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 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 e5bb112f09193..578ba933f474d 100644 --- a/tests/baselines/reference/generatorTypeCheck8.errors.txt +++ b/tests/baselines/reference/generatorTypeCheck8.errors.txt @@ -1,7 +1,7 @@ -generatorTypeCheck8.ts(2,17): error TS2322: Type 'Generator' is not assignable to type 'BadGenerator'. +generatorTypeCheck8.ts(2,17): error TS2322: Type 'Generator' is not assignable to type 'BadGenerator'. The types returned by 'next(...)' are incompatible between these types. - Type 'IteratorResult' is not assignable to type 'IteratorResult'. - Type 'IteratorYieldResult' is not assignable to type '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'. Type 'string' is not assignable to type 'number'. @@ -10,9 +10,9 @@ generatorTypeCheck8.ts(2,17): error TS2322: Type 'Generator, 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: The types returned by 'next(...)' are incompatible between these types. -!!! error TS2322: Type 'IteratorResult' is not assignable to type 'IteratorResult'. -!!! error TS2322: Type 'IteratorYieldResult' is not assignable to type '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'. !!! error TS2322: Type 'string' is not assignable to type 'number'. \ No newline at end of file diff --git a/tests/baselines/reference/importHelpersNoHelpersForAsyncGenerators.types b/tests/baselines/reference/importHelpersNoHelpersForAsyncGenerators.types index dc4db81c92a00..3173ffaf42ad0 100644 --- a/tests/baselines/reference/importHelpersNoHelpersForAsyncGenerators.types +++ b/tests/baselines/reference/importHelpersNoHelpersForAsyncGenerators.types @@ -2,8 +2,8 @@ === main.ts === export async function * f() { ->f : () => AsyncGenerator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>f : () => AsyncGenerator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ await 1; >await 1 : 1 diff --git a/tests/baselines/reference/indirectGlobalSymbolPartOfObjectType.types b/tests/baselines/reference/indirectGlobalSymbolPartOfObjectType.types index 6003f038d368e..fd82d51021cd5 100644 --- a/tests/baselines/reference/indirectGlobalSymbolPartOfObjectType.types +++ b/tests/baselines/reference/indirectGlobalSymbolPartOfObjectType.types @@ -13,8 +13,8 @@ const Symbol = globalThis.Symbol; > : ^^^^^^^^^^^^^^^^^ [][Symbol.iterator]; ->[][Symbol.iterator] : () => IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>[][Symbol.iterator] : () => IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >[] : undefined[] > : ^^^^^^^^^^^ >Symbol.iterator : unique symbol diff --git a/tests/baselines/reference/iterableArrayPattern28.errors.txt b/tests/baselines/reference/iterableArrayPattern28.errors.txt index d0ac57cd7c5f5..b68c49d630425 100644 --- a/tests/baselines/reference/iterableArrayPattern28.errors.txt +++ b/tests/baselines/reference/iterableArrayPattern28.errors.txt @@ -2,8 +2,8 @@ iterableArrayPattern28.ts(2,28): error TS2769: No overload matches this call. Overload 1 of 4, '(iterable?: Iterable): Map', gave the following error. Argument of type '([string, number] | [string, boolean])[]' is not assignable to parameter of type 'Iterable'. The types returned by '[Symbol.iterator]().next(...)' are incompatible between these types. - Type 'IteratorResult<[string, number] | [string, boolean], void>' is not assignable to type 'IteratorResult'. - Type 'IteratorYieldResult<[string, number] | [string, boolean]>' is not assignable to type 'IteratorResult'. + Type 'IteratorResult<[string, number] | [string, boolean], void>' 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'. Type '[string, number] | [string, boolean]' is not assignable to type 'readonly [string, number]'. Type '[string, boolean]' is not assignable to type 'readonly [string, number]'. @@ -21,8 +21,8 @@ iterableArrayPattern28.ts(2,28): error TS2769: No overload matches this call. !!! error TS2769: Overload 1 of 4, '(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: The types returned by '[Symbol.iterator]().next(...)' are incompatible between these types. -!!! error TS2769: Type 'IteratorResult<[string, number] | [string, boolean], void>' is not assignable to type 'IteratorResult'. -!!! error TS2769: Type 'IteratorYieldResult<[string, number] | [string, boolean]>' is not assignable to type 'IteratorResult'. +!!! error TS2769: Type 'IteratorResult<[string, number] | [string, boolean], void>' 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'. !!! error TS2769: Type '[string, number] | [string, boolean]' is not assignable to type 'readonly [string, number]'. !!! error TS2769: Type '[string, boolean]' is not assignable to type 'readonly [string, number]'. diff --git a/tests/baselines/reference/mappedTypeWithAsClauseAndLateBoundProperty.errors.txt b/tests/baselines/reference/mappedTypeWithAsClauseAndLateBoundProperty.errors.txt index 380aa151c2c22..8c6d077685f2e 100644 --- a/tests/baselines/reference/mappedTypeWithAsClauseAndLateBoundProperty.errors.txt +++ b/tests/baselines/reference/mappedTypeWithAsClauseAndLateBoundProperty.errors.txt @@ -1,4 +1,4 @@ -mappedTypeWithAsClauseAndLateBoundProperty.ts(3,1): error TS2741: Property 'length' is missing in type '{ [x: number]: number; toString: () => string; toLocaleString: { (): string; (locales: string | string[], options?: NumberFormatOptions & DateTimeFormatOptions): string; }; pop: () => number; push: (...items: number[]) => number; concat: { (...items: ConcatArray[]): number[]; (...items: (number | ConcatArray)[]): number[]; }; join: (separator?: string) => string; reverse: () => number[]; shift: () => number; slice: (start?: number, end?: number) => number[]; sort: (compareFn?: (a: number, b: number) => number) => number[]; splice: { (start: number, deleteCount?: number): number[]; (start: number, deleteCount: number, ...items: number[]): number[]; }; unshift: (...items: number[]) => number; indexOf: (searchElement: number, fromIndex?: number) => number; lastIndexOf: (searchElement: number, fromIndex?: number) => number; every: { (predicate: (value: number, index: number, array: number[]) => value is S, thisArg?: any): this is S[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): boolean; }; some: (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any) => boolean; forEach: (callbackfn: (value: number, index: number, array: number[]) => void, thisArg?: any) => void; map: (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[]; filter: { (predicate: (value: number, index: number, array: number[]) => value is S, thisArg?: any): S[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): number[]; }; reduce: { (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number): number; (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number, initialValue: number): number; (callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: number[]) => U, initialValue: U): U; }; reduceRight: { (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number): number; (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number, initialValue: number): number; (callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: number[]) => U, initialValue: U): U; }; find: { (predicate: (value: number, index: number, obj: number[]) => value is S, thisArg?: any): S; (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any): number; }; findIndex: (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any) => number; fill: (value: number, start?: number, end?: number) => number[]; copyWithin: (target: number, start: number, end?: number) => number[]; entries: () => IterableIterator<[number, number]>; keys: () => IterableIterator; values: () => IterableIterator; includes: (searchElement: number, fromIndex?: number) => boolean; flatMap: (callback: (this: This, value: number, index: number, array: number[]) => U | readonly U[], thisArg?: This) => U[]; flat: (this: A, depth?: D) => FlatArray[]; [Symbol.iterator]: () => IterableIterator; readonly [Symbol.unscopables]: { [x: number]: boolean; length?: boolean; toString?: boolean; toLocaleString?: boolean; pop?: boolean; push?: boolean; concat?: boolean; join?: boolean; reverse?: boolean; shift?: boolean; slice?: boolean; sort?: boolean; splice?: boolean; unshift?: boolean; indexOf?: boolean; lastIndexOf?: boolean; every?: boolean; some?: boolean; forEach?: boolean; map?: boolean; filter?: boolean; reduce?: boolean; reduceRight?: boolean; find?: boolean; findIndex?: boolean; fill?: boolean; copyWithin?: boolean; entries?: boolean; keys?: boolean; values?: boolean; includes?: boolean; flatMap?: boolean; flat?: boolean; [Symbol.iterator]?: boolean; readonly [Symbol.unscopables]?: boolean; }; }' but required in type 'number[]'. +mappedTypeWithAsClauseAndLateBoundProperty.ts(3,1): error TS2741: Property 'length' is missing in type '{ [x: number]: number; toString: () => string; toLocaleString: { (): string; (locales: string | string[], options?: NumberFormatOptions & DateTimeFormatOptions): string; }; pop: () => number; push: (...items: number[]) => number; concat: { (...items: ConcatArray[]): number[]; (...items: (number | ConcatArray)[]): number[]; }; join: (separator?: string) => string; reverse: () => number[]; shift: () => number; slice: (start?: number, end?: number) => number[]; sort: (compareFn?: (a: number, b: number) => number) => number[]; splice: { (start: number, deleteCount?: number): number[]; (start: number, deleteCount: number, ...items: number[]): number[]; }; unshift: (...items: number[]) => number; indexOf: (searchElement: number, fromIndex?: number) => number; lastIndexOf: (searchElement: number, fromIndex?: number) => number; every: { (predicate: (value: number, index: number, array: number[]) => value is S, thisArg?: any): this is S[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): boolean; }; some: (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any) => boolean; forEach: (callbackfn: (value: number, index: number, array: number[]) => void, thisArg?: any) => void; map: (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[]; filter: { (predicate: (value: number, index: number, array: number[]) => value is S, thisArg?: any): S[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): number[]; }; reduce: { (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number): number; (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number, initialValue: number): number; (callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: number[]) => U, initialValue: U): U; }; reduceRight: { (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number): number; (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number, initialValue: number): number; (callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: number[]) => U, initialValue: U): U; }; find: { (predicate: (value: number, index: number, obj: number[]) => value is S, thisArg?: any): S; (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any): number; }; findIndex: (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any) => number; fill: (value: number, start?: number, end?: number) => number[]; copyWithin: (target: number, start: number, end?: number) => number[]; entries: () => IterableIterator<[number, number], void>; keys: () => IterableIterator; values: () => IterableIterator; includes: (searchElement: number, fromIndex?: number) => boolean; flatMap: (callback: (this: This, value: number, index: number, array: number[]) => U | readonly U[], thisArg?: This) => U[]; flat: (this: A, depth?: D) => FlatArray[]; [Symbol.iterator]: () => IterableIterator; readonly [Symbol.unscopables]: { [x: number]: boolean; length?: boolean; toString?: boolean; toLocaleString?: boolean; pop?: boolean; push?: boolean; concat?: boolean; join?: boolean; reverse?: boolean; shift?: boolean; slice?: boolean; sort?: boolean; splice?: boolean; unshift?: boolean; indexOf?: boolean; lastIndexOf?: boolean; every?: boolean; some?: boolean; forEach?: boolean; map?: boolean; filter?: boolean; reduce?: boolean; reduceRight?: boolean; find?: boolean; findIndex?: boolean; fill?: boolean; copyWithin?: boolean; entries?: boolean; keys?: boolean; values?: boolean; includes?: boolean; flatMap?: boolean; flat?: boolean; [Symbol.iterator]?: boolean; readonly [Symbol.unscopables]?: boolean; }; }' but required in type 'number[]'. ==== mappedTypeWithAsClauseAndLateBoundProperty.ts (1 errors) ==== @@ -6,6 +6,6 @@ mappedTypeWithAsClauseAndLateBoundProperty.ts(3,1): error TS2741: Property 'leng declare let src2: { [K in keyof number[] as Exclude]: (number[])[K] }; tgt2 = src2; // Should error ~~~~ -!!! error TS2741: Property 'length' is missing in type '{ [x: number]: number; toString: () => string; toLocaleString: { (): string; (locales: string | string[], options?: NumberFormatOptions & DateTimeFormatOptions): string; }; pop: () => number; push: (...items: number[]) => number; concat: { (...items: ConcatArray[]): number[]; (...items: (number | ConcatArray)[]): number[]; }; join: (separator?: string) => string; reverse: () => number[]; shift: () => number; slice: (start?: number, end?: number) => number[]; sort: (compareFn?: (a: number, b: number) => number) => number[]; splice: { (start: number, deleteCount?: number): number[]; (start: number, deleteCount: number, ...items: number[]): number[]; }; unshift: (...items: number[]) => number; indexOf: (searchElement: number, fromIndex?: number) => number; lastIndexOf: (searchElement: number, fromIndex?: number) => number; every: { (predicate: (value: number, index: number, array: number[]) => value is S, thisArg?: any): this is S[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): boolean; }; some: (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any) => boolean; forEach: (callbackfn: (value: number, index: number, array: number[]) => void, thisArg?: any) => void; map: (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[]; filter: { (predicate: (value: number, index: number, array: number[]) => value is S, thisArg?: any): S[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): number[]; }; reduce: { (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number): number; (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number, initialValue: number): number; (callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: number[]) => U, initialValue: U): U; }; reduceRight: { (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number): number; (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number, initialValue: number): number; (callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: number[]) => U, initialValue: U): U; }; find: { (predicate: (value: number, index: number, obj: number[]) => value is S, thisArg?: any): S; (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any): number; }; findIndex: (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any) => number; fill: (value: number, start?: number, end?: number) => number[]; copyWithin: (target: number, start: number, end?: number) => number[]; entries: () => IterableIterator<[number, number]>; keys: () => IterableIterator; values: () => IterableIterator; includes: (searchElement: number, fromIndex?: number) => boolean; flatMap: (callback: (this: This, value: number, index: number, array: number[]) => U | readonly U[], thisArg?: This) => U[]; flat: (this: A, depth?: D) => FlatArray[]; [Symbol.iterator]: () => IterableIterator; readonly [Symbol.unscopables]: { [x: number]: boolean; length?: boolean; toString?: boolean; toLocaleString?: boolean; pop?: boolean; push?: boolean; concat?: boolean; join?: boolean; reverse?: boolean; shift?: boolean; slice?: boolean; sort?: boolean; splice?: boolean; unshift?: boolean; indexOf?: boolean; lastIndexOf?: boolean; every?: boolean; some?: boolean; forEach?: boolean; map?: boolean; filter?: boolean; reduce?: boolean; reduceRight?: boolean; find?: boolean; findIndex?: boolean; fill?: boolean; copyWithin?: boolean; entries?: boolean; keys?: boolean; values?: boolean; includes?: boolean; flatMap?: boolean; flat?: boolean; [Symbol.iterator]?: boolean; readonly [Symbol.unscopables]?: boolean; }; }' but required in type 'number[]'. +!!! error TS2741: Property 'length' is missing in type '{ [x: number]: number; toString: () => string; toLocaleString: { (): string; (locales: string | string[], options?: NumberFormatOptions & DateTimeFormatOptions): string; }; pop: () => number; push: (...items: number[]) => number; concat: { (...items: ConcatArray[]): number[]; (...items: (number | ConcatArray)[]): number[]; }; join: (separator?: string) => string; reverse: () => number[]; shift: () => number; slice: (start?: number, end?: number) => number[]; sort: (compareFn?: (a: number, b: number) => number) => number[]; splice: { (start: number, deleteCount?: number): number[]; (start: number, deleteCount: number, ...items: number[]): number[]; }; unshift: (...items: number[]) => number; indexOf: (searchElement: number, fromIndex?: number) => number; lastIndexOf: (searchElement: number, fromIndex?: number) => number; every: { (predicate: (value: number, index: number, array: number[]) => value is S, thisArg?: any): this is S[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): boolean; }; some: (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any) => boolean; forEach: (callbackfn: (value: number, index: number, array: number[]) => void, thisArg?: any) => void; map: (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[]; filter: { (predicate: (value: number, index: number, array: number[]) => value is S, thisArg?: any): S[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): number[]; }; reduce: { (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number): number; (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number, initialValue: number): number; (callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: number[]) => U, initialValue: U): U; }; reduceRight: { (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number): number; (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number, initialValue: number): number; (callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: number[]) => U, initialValue: U): U; }; find: { (predicate: (value: number, index: number, obj: number[]) => value is S, thisArg?: any): S; (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any): number; }; findIndex: (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any) => number; fill: (value: number, start?: number, end?: number) => number[]; copyWithin: (target: number, start: number, end?: number) => number[]; entries: () => IterableIterator<[number, number], void>; keys: () => IterableIterator; values: () => IterableIterator; includes: (searchElement: number, fromIndex?: number) => boolean; flatMap: (callback: (this: This, value: number, index: number, array: number[]) => U | readonly U[], thisArg?: This) => U[]; flat: (this: A, depth?: D) => FlatArray[]; [Symbol.iterator]: () => IterableIterator; readonly [Symbol.unscopables]: { [x: number]: boolean; length?: boolean; toString?: boolean; toLocaleString?: boolean; pop?: boolean; push?: boolean; concat?: boolean; join?: boolean; reverse?: boolean; shift?: boolean; slice?: boolean; sort?: boolean; splice?: boolean; unshift?: boolean; indexOf?: boolean; lastIndexOf?: boolean; every?: boolean; some?: boolean; forEach?: boolean; map?: boolean; filter?: boolean; reduce?: boolean; reduceRight?: boolean; find?: boolean; findIndex?: boolean; fill?: boolean; copyWithin?: boolean; entries?: boolean; keys?: boolean; values?: boolean; includes?: boolean; flatMap?: boolean; flat?: boolean; [Symbol.iterator]?: boolean; readonly [Symbol.unscopables]?: boolean; }; }' but required in type 'number[]'. !!! related TS2728 lib.es5.d.ts:--:--: 'length' is declared here. \ No newline at end of file diff --git a/tests/baselines/reference/mappedTypeWithAsClauseAndLateBoundProperty.types b/tests/baselines/reference/mappedTypeWithAsClauseAndLateBoundProperty.types index 263f5212c5853..413cc6a8becee 100644 --- a/tests/baselines/reference/mappedTypeWithAsClauseAndLateBoundProperty.types +++ b/tests/baselines/reference/mappedTypeWithAsClauseAndLateBoundProperty.types @@ -6,14 +6,14 @@ declare let tgt2: number[]; > : ^^^^^^^^ declare let src2: { [K in keyof number[] as Exclude]: (number[])[K] }; ->src2 : { [x: number]: number; toString: () => string; toLocaleString: { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; }; pop: () => number; push: (...items: number[]) => number; concat: { (...items: ConcatArray[]): number[]; (...items: (number | ConcatArray)[]): number[]; }; join: (separator?: string) => string; reverse: () => number[]; shift: () => number; slice: (start?: number, end?: number) => number[]; sort: (compareFn?: (a: number, b: number) => number) => number[]; splice: { (start: number, deleteCount?: number): number[]; (start: number, deleteCount: number, ...items: number[]): number[]; }; unshift: (...items: number[]) => number; indexOf: (searchElement: number, fromIndex?: number) => number; lastIndexOf: (searchElement: number, fromIndex?: number) => number; every: { (predicate: (value: number, index: number, array: number[]) => value is S, thisArg?: any): this is S[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): boolean; }; some: (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any) => boolean; forEach: (callbackfn: (value: number, index: number, array: number[]) => void, thisArg?: any) => void; map: (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[]; filter: { (predicate: (value: number, index: number, array: number[]) => value is S_1, thisArg?: any): S_1[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): number[]; }; reduce: { (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number): number; (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number, initialValue: number): number; (callbackfn: (previousValue: U_1, currentValue: number, currentIndex: number, array: number[]) => U_1, initialValue: U_1): U_1; }; reduceRight: { (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number): number; (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number, initialValue: number): number; (callbackfn: (previousValue: U_2, currentValue: number, currentIndex: number, array: number[]) => U_2, initialValue: U_2): U_2; }; find: { (predicate: (value: number, index: number, obj: number[]) => value is S_2, thisArg?: any): S_2; (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any): number; }; findIndex: (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any) => number; fill: (value: number, start?: number, end?: number) => number[]; copyWithin: (target: number, start: number, end?: number) => number[]; entries: () => IterableIterator<[number, number]>; keys: () => IterableIterator; values: () => IterableIterator; includes: (searchElement: number, fromIndex?: number) => boolean; flatMap: (callback: (this: This, value: number, index: number, array: number[]) => U_3 | readonly U_3[], thisArg?: This) => U_3[]; flat: (this: A, depth?: D) => FlatArray[]; [Symbol.iterator]: () => IterableIterator; readonly [Symbol.unscopables]: { [x: number]: boolean; length?: boolean; toString?: boolean; toLocaleString?: boolean; pop?: boolean; push?: boolean; concat?: boolean; join?: boolean; reverse?: boolean; shift?: boolean; slice?: boolean; sort?: boolean; splice?: boolean; unshift?: boolean; indexOf?: boolean; lastIndexOf?: boolean; every?: boolean; some?: boolean; forEach?: boolean; map?: boolean; filter?: boolean; reduce?: boolean; reduceRight?: boolean; find?: boolean; findIndex?: boolean; fill?: boolean; copyWithin?: boolean; entries?: boolean; keys?: boolean; values?: boolean; includes?: boolean; flatMap?: boolean; flat?: boolean; [Symbol.iterator]?: boolean; readonly [Symbol.unscopables]?: boolean; }; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>src2 : { [x: number]: number; toString: () => string; toLocaleString: { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; }; pop: () => number; push: (...items: number[]) => number; concat: { (...items: ConcatArray[]): number[]; (...items: (number | ConcatArray)[]): number[]; }; join: (separator?: string) => string; reverse: () => number[]; shift: () => number; slice: (start?: number, end?: number) => number[]; sort: (compareFn?: (a: number, b: number) => number) => number[]; splice: { (start: number, deleteCount?: number): number[]; (start: number, deleteCount: number, ...items: number[]): number[]; }; unshift: (...items: number[]) => number; indexOf: (searchElement: number, fromIndex?: number) => number; lastIndexOf: (searchElement: number, fromIndex?: number) => number; every: { (predicate: (value: number, index: number, array: number[]) => value is S, thisArg?: any): this is S[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): boolean; }; some: (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any) => boolean; forEach: (callbackfn: (value: number, index: number, array: number[]) => void, thisArg?: any) => void; map: (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[]; filter: { (predicate: (value: number, index: number, array: number[]) => value is S_1, thisArg?: any): S_1[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): number[]; }; reduce: { (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number): number; (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number, initialValue: number): number; (callbackfn: (previousValue: U_1, currentValue: number, currentIndex: number, array: number[]) => U_1, initialValue: U_1): U_1; }; reduceRight: { (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number): number; (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number, initialValue: number): number; (callbackfn: (previousValue: U_2, currentValue: number, currentIndex: number, array: number[]) => U_2, initialValue: U_2): U_2; }; find: { (predicate: (value: number, index: number, obj: number[]) => value is S_2, thisArg?: any): S_2; (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any): number; }; findIndex: (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any) => number; fill: (value: number, start?: number, end?: number) => number[]; copyWithin: (target: number, start: number, end?: number) => number[]; entries: () => IterableIterator<[number, number], void>; keys: () => IterableIterator; values: () => IterableIterator; includes: (searchElement: number, fromIndex?: number) => boolean; flatMap: (callback: (this: This, value: number, index: number, array: number[]) => U_3 | readonly U_3[], thisArg?: This) => U_3[]; flat: (this: A, depth?: D) => FlatArray[]; [Symbol.iterator]: () => IterableIterator; readonly [Symbol.unscopables]: { [x: number]: boolean; length?: boolean; toString?: boolean; toLocaleString?: boolean; pop?: boolean; push?: boolean; concat?: boolean; join?: boolean; reverse?: boolean; shift?: boolean; slice?: boolean; sort?: boolean; splice?: boolean; unshift?: boolean; indexOf?: boolean; lastIndexOf?: boolean; every?: boolean; some?: boolean; forEach?: boolean; map?: boolean; filter?: boolean; reduce?: boolean; reduceRight?: boolean; find?: boolean; findIndex?: boolean; fill?: boolean; copyWithin?: boolean; entries?: boolean; keys?: boolean; values?: boolean; includes?: boolean; flatMap?: boolean; flat?: boolean; [Symbol.iterator]?: boolean; readonly [Symbol.unscopables]?: boolean; }; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ tgt2 = src2; // Should error ->tgt2 = src2 : { [x: number]: number; toString: () => string; toLocaleString: { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; }; pop: () => number; push: (...items: number[]) => number; concat: { (...items: ConcatArray[]): number[]; (...items: (number | ConcatArray)[]): number[]; }; join: (separator?: string) => string; reverse: () => number[]; shift: () => number; slice: (start?: number, end?: number) => number[]; sort: (compareFn?: (a: number, b: number) => number) => number[]; splice: { (start: number, deleteCount?: number): number[]; (start: number, deleteCount: number, ...items: number[]): number[]; }; unshift: (...items: number[]) => number; indexOf: (searchElement: number, fromIndex?: number) => number; lastIndexOf: (searchElement: number, fromIndex?: number) => number; every: { (predicate: (value: number, index: number, array: number[]) => value is S, thisArg?: any): this is S[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): boolean; }; some: (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any) => boolean; forEach: (callbackfn: (value: number, index: number, array: number[]) => void, thisArg?: any) => void; map: (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[]; filter: { (predicate: (value: number, index: number, array: number[]) => value is S_1, thisArg?: any): S_1[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): number[]; }; reduce: { (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number): number; (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number, initialValue: number): number; (callbackfn: (previousValue: U_1, currentValue: number, currentIndex: number, array: number[]) => U_1, initialValue: U_1): U_1; }; reduceRight: { (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number): number; (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number, initialValue: number): number; (callbackfn: (previousValue: U_2, currentValue: number, currentIndex: number, array: number[]) => U_2, initialValue: U_2): U_2; }; find: { (predicate: (value: number, index: number, obj: number[]) => value is S_2, thisArg?: any): S_2; (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any): number; }; findIndex: (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any) => number; fill: (value: number, start?: number, end?: number) => number[]; copyWithin: (target: number, start: number, end?: number) => number[]; entries: () => IterableIterator<[number, number]>; keys: () => IterableIterator; values: () => IterableIterator; includes: (searchElement: number, fromIndex?: number) => boolean; flatMap: (callback: (this: This, value: number, index: number, array: number[]) => U_3 | readonly U_3[], thisArg?: This) => U_3[]; flat: (this: A, depth?: D) => FlatArray[]; [Symbol.iterator]: () => IterableIterator; readonly [Symbol.unscopables]: { [x: number]: boolean; length?: boolean; toString?: boolean; toLocaleString?: boolean; pop?: boolean; push?: boolean; concat?: boolean; join?: boolean; reverse?: boolean; shift?: boolean; slice?: boolean; sort?: boolean; splice?: boolean; unshift?: boolean; indexOf?: boolean; lastIndexOf?: boolean; every?: boolean; some?: boolean; forEach?: boolean; map?: boolean; filter?: boolean; reduce?: boolean; reduceRight?: boolean; find?: boolean; findIndex?: boolean; fill?: boolean; copyWithin?: boolean; entries?: boolean; keys?: boolean; values?: boolean; includes?: boolean; flatMap?: boolean; flat?: boolean; [Symbol.iterator]?: boolean; readonly [Symbol.unscopables]?: boolean; }; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>tgt2 = src2 : { [x: number]: number; toString: () => string; toLocaleString: { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; }; pop: () => number; push: (...items: number[]) => number; concat: { (...items: ConcatArray[]): number[]; (...items: (number | ConcatArray)[]): number[]; }; join: (separator?: string) => string; reverse: () => number[]; shift: () => number; slice: (start?: number, end?: number) => number[]; sort: (compareFn?: (a: number, b: number) => number) => number[]; splice: { (start: number, deleteCount?: number): number[]; (start: number, deleteCount: number, ...items: number[]): number[]; }; unshift: (...items: number[]) => number; indexOf: (searchElement: number, fromIndex?: number) => number; lastIndexOf: (searchElement: number, fromIndex?: number) => number; every: { (predicate: (value: number, index: number, array: number[]) => value is S, thisArg?: any): this is S[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): boolean; }; some: (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any) => boolean; forEach: (callbackfn: (value: number, index: number, array: number[]) => void, thisArg?: any) => void; map: (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[]; filter: { (predicate: (value: number, index: number, array: number[]) => value is S_1, thisArg?: any): S_1[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): number[]; }; reduce: { (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number): number; (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number, initialValue: number): number; (callbackfn: (previousValue: U_1, currentValue: number, currentIndex: number, array: number[]) => U_1, initialValue: U_1): U_1; }; reduceRight: { (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number): number; (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number, initialValue: number): number; (callbackfn: (previousValue: U_2, currentValue: number, currentIndex: number, array: number[]) => U_2, initialValue: U_2): U_2; }; find: { (predicate: (value: number, index: number, obj: number[]) => value is S_2, thisArg?: any): S_2; (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any): number; }; findIndex: (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any) => number; fill: (value: number, start?: number, end?: number) => number[]; copyWithin: (target: number, start: number, end?: number) => number[]; entries: () => IterableIterator<[number, number], void>; keys: () => IterableIterator; values: () => IterableIterator; includes: (searchElement: number, fromIndex?: number) => boolean; flatMap: (callback: (this: This, value: number, index: number, array: number[]) => U_3 | readonly U_3[], thisArg?: This) => U_3[]; flat: (this: A, depth?: D) => FlatArray[]; [Symbol.iterator]: () => IterableIterator; readonly [Symbol.unscopables]: { [x: number]: boolean; length?: boolean; toString?: boolean; toLocaleString?: boolean; pop?: boolean; push?: boolean; concat?: boolean; join?: boolean; reverse?: boolean; shift?: boolean; slice?: boolean; sort?: boolean; splice?: boolean; unshift?: boolean; indexOf?: boolean; lastIndexOf?: boolean; every?: boolean; some?: boolean; forEach?: boolean; map?: boolean; filter?: boolean; reduce?: boolean; reduceRight?: boolean; find?: boolean; findIndex?: boolean; fill?: boolean; copyWithin?: boolean; entries?: boolean; keys?: boolean; values?: boolean; includes?: boolean; flatMap?: boolean; flat?: boolean; [Symbol.iterator]?: boolean; readonly [Symbol.unscopables]?: boolean; }; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >tgt2 : number[] > : ^^^^^^^^ ->src2 : { [x: number]: number; toString: () => string; toLocaleString: { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; }; pop: () => number; push: (...items: number[]) => number; concat: { (...items: ConcatArray[]): number[]; (...items: (number | ConcatArray)[]): number[]; }; join: (separator?: string) => string; reverse: () => number[]; shift: () => number; slice: (start?: number, end?: number) => number[]; sort: (compareFn?: (a: number, b: number) => number) => number[]; splice: { (start: number, deleteCount?: number): number[]; (start: number, deleteCount: number, ...items: number[]): number[]; }; unshift: (...items: number[]) => number; indexOf: (searchElement: number, fromIndex?: number) => number; lastIndexOf: (searchElement: number, fromIndex?: number) => number; every: { (predicate: (value: number, index: number, array: number[]) => value is S, thisArg?: any): this is S[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): boolean; }; some: (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any) => boolean; forEach: (callbackfn: (value: number, index: number, array: number[]) => void, thisArg?: any) => void; map: (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[]; filter: { (predicate: (value: number, index: number, array: number[]) => value is S_1, thisArg?: any): S_1[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): number[]; }; reduce: { (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number): number; (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number, initialValue: number): number; (callbackfn: (previousValue: U_1, currentValue: number, currentIndex: number, array: number[]) => U_1, initialValue: U_1): U_1; }; reduceRight: { (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number): number; (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number, initialValue: number): number; (callbackfn: (previousValue: U_2, currentValue: number, currentIndex: number, array: number[]) => U_2, initialValue: U_2): U_2; }; find: { (predicate: (value: number, index: number, obj: number[]) => value is S_2, thisArg?: any): S_2; (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any): number; }; findIndex: (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any) => number; fill: (value: number, start?: number, end?: number) => number[]; copyWithin: (target: number, start: number, end?: number) => number[]; entries: () => IterableIterator<[number, number]>; keys: () => IterableIterator; values: () => IterableIterator; includes: (searchElement: number, fromIndex?: number) => boolean; flatMap: (callback: (this: This, value: number, index: number, array: number[]) => U_3 | readonly U_3[], thisArg?: This) => U_3[]; flat: (this: A, depth?: D) => FlatArray[]; [Symbol.iterator]: () => IterableIterator; readonly [Symbol.unscopables]: { [x: number]: boolean; length?: boolean; toString?: boolean; toLocaleString?: boolean; pop?: boolean; push?: boolean; concat?: boolean; join?: boolean; reverse?: boolean; shift?: boolean; slice?: boolean; sort?: boolean; splice?: boolean; unshift?: boolean; indexOf?: boolean; lastIndexOf?: boolean; every?: boolean; some?: boolean; forEach?: boolean; map?: boolean; filter?: boolean; reduce?: boolean; reduceRight?: boolean; find?: boolean; findIndex?: boolean; fill?: boolean; copyWithin?: boolean; entries?: boolean; keys?: boolean; values?: boolean; includes?: boolean; flatMap?: boolean; flat?: boolean; [Symbol.iterator]?: boolean; readonly [Symbol.unscopables]?: boolean; }; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>src2 : { [x: number]: number; toString: () => string; toLocaleString: { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; }; pop: () => number; push: (...items: number[]) => number; concat: { (...items: ConcatArray[]): number[]; (...items: (number | ConcatArray)[]): number[]; }; join: (separator?: string) => string; reverse: () => number[]; shift: () => number; slice: (start?: number, end?: number) => number[]; sort: (compareFn?: (a: number, b: number) => number) => number[]; splice: { (start: number, deleteCount?: number): number[]; (start: number, deleteCount: number, ...items: number[]): number[]; }; unshift: (...items: number[]) => number; indexOf: (searchElement: number, fromIndex?: number) => number; lastIndexOf: (searchElement: number, fromIndex?: number) => number; every: { (predicate: (value: number, index: number, array: number[]) => value is S, thisArg?: any): this is S[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): boolean; }; some: (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any) => boolean; forEach: (callbackfn: (value: number, index: number, array: number[]) => void, thisArg?: any) => void; map: (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[]; filter: { (predicate: (value: number, index: number, array: number[]) => value is S_1, thisArg?: any): S_1[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): number[]; }; reduce: { (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number): number; (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number, initialValue: number): number; (callbackfn: (previousValue: U_1, currentValue: number, currentIndex: number, array: number[]) => U_1, initialValue: U_1): U_1; }; reduceRight: { (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number): number; (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number, initialValue: number): number; (callbackfn: (previousValue: U_2, currentValue: number, currentIndex: number, array: number[]) => U_2, initialValue: U_2): U_2; }; find: { (predicate: (value: number, index: number, obj: number[]) => value is S_2, thisArg?: any): S_2; (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any): number; }; findIndex: (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any) => number; fill: (value: number, start?: number, end?: number) => number[]; copyWithin: (target: number, start: number, end?: number) => number[]; entries: () => IterableIterator<[number, number], void>; keys: () => IterableIterator; values: () => IterableIterator; includes: (searchElement: number, fromIndex?: number) => boolean; flatMap: (callback: (this: This, value: number, index: number, array: number[]) => U_3 | readonly U_3[], thisArg?: This) => U_3[]; flat: (this: A, depth?: D) => FlatArray[]; [Symbol.iterator]: () => IterableIterator; readonly [Symbol.unscopables]: { [x: number]: boolean; length?: boolean; toString?: boolean; toLocaleString?: boolean; pop?: boolean; push?: boolean; concat?: boolean; join?: boolean; reverse?: boolean; shift?: boolean; slice?: boolean; sort?: boolean; splice?: boolean; unshift?: boolean; indexOf?: boolean; lastIndexOf?: boolean; every?: boolean; some?: boolean; forEach?: boolean; map?: boolean; filter?: boolean; reduce?: boolean; reduceRight?: boolean; find?: boolean; findIndex?: boolean; fill?: boolean; copyWithin?: boolean; entries?: boolean; keys?: boolean; values?: boolean; includes?: boolean; flatMap?: boolean; flat?: boolean; [Symbol.iterator]?: boolean; readonly [Symbol.unscopables]?: boolean; }; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/mappedTypeWithAsClauseAndLateBoundProperty2.js b/tests/baselines/reference/mappedTypeWithAsClauseAndLateBoundProperty2.js index d4b703bce8ee4..7e0b7f5c50609 100644 --- a/tests/baselines/reference/mappedTypeWithAsClauseAndLateBoundProperty2.js +++ b/tests/baselines/reference/mappedTypeWithAsClauseAndLateBoundProperty2.js @@ -62,13 +62,13 @@ export declare const thing: { findIndex: (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any) => number; fill: (value: number, start?: number, end?: number) => number[]; copyWithin: (target: number, start: number, end?: number) => number[]; - entries: () => IterableIterator<[number, number]>; - keys: () => IterableIterator; - values: () => IterableIterator; + entries: () => IterableIterator<[number, number], void>; + keys: () => IterableIterator; + values: () => IterableIterator; includes: (searchElement: number, fromIndex?: number) => boolean; flatMap: (callback: (this: This, value: number, index: number, array: number[]) => U_3 | readonly U_3[], thisArg?: This) => U_3[]; flat: (this: A, depth?: D) => FlatArray[]; - [Symbol.iterator]: () => IterableIterator; + [Symbol.iterator]: () => IterableIterator; readonly [Symbol.unscopables]: { [x: number]: boolean; length?: boolean; @@ -171,13 +171,13 @@ mappedTypeWithAsClauseAndLateBoundProperty2.d.ts(27,118): error TS2526: A 'this' findIndex: (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any) => number; fill: (value: number, start?: number, end?: number) => number[]; copyWithin: (target: number, start: number, end?: number) => number[]; - entries: () => IterableIterator<[number, number]>; - keys: () => IterableIterator; - values: () => IterableIterator; + entries: () => IterableIterator<[number, number], void>; + keys: () => IterableIterator; + values: () => IterableIterator; includes: (searchElement: number, fromIndex?: number) => boolean; flatMap: (callback: (this: This, value: number, index: number, array: number[]) => U_3 | readonly U_3[], thisArg?: This) => U_3[]; flat: (this: A, depth?: D) => FlatArray[]; - [Symbol.iterator]: () => IterableIterator; + [Symbol.iterator]: () => IterableIterator; readonly [Symbol.unscopables]: { [x: number]: boolean; length?: boolean; diff --git a/tests/baselines/reference/mappedTypeWithAsClauseAndLateBoundProperty2.types b/tests/baselines/reference/mappedTypeWithAsClauseAndLateBoundProperty2.types index 249c5f28218c7..0e2a8bb535d04 100644 --- a/tests/baselines/reference/mappedTypeWithAsClauseAndLateBoundProperty2.types +++ b/tests/baselines/reference/mappedTypeWithAsClauseAndLateBoundProperty2.types @@ -2,11 +2,11 @@ === mappedTypeWithAsClauseAndLateBoundProperty2.ts === export const thing = (null as any as { [K in keyof number[] as Exclude]: (number[])[K] }); ->thing : { [x: number]: number; toString: () => string; toLocaleString: { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; }; pop: () => number; push: (...items: number[]) => number; concat: { (...items: ConcatArray[]): number[]; (...items: (number | ConcatArray)[]): number[]; }; join: (separator?: string) => string; reverse: () => number[]; shift: () => number; slice: (start?: number, end?: number) => number[]; sort: (compareFn?: (a: number, b: number) => number) => number[]; splice: { (start: number, deleteCount?: number): number[]; (start: number, deleteCount: number, ...items: number[]): number[]; }; unshift: (...items: number[]) => number; indexOf: (searchElement: number, fromIndex?: number) => number; lastIndexOf: (searchElement: number, fromIndex?: number) => number; every: { (predicate: (value: number, index: number, array: number[]) => value is S, thisArg?: any): this is S[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): boolean; }; some: (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any) => boolean; forEach: (callbackfn: (value: number, index: number, array: number[]) => void, thisArg?: any) => void; map: (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[]; filter: { (predicate: (value: number, index: number, array: number[]) => value is S_1, thisArg?: any): S_1[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): number[]; }; reduce: { (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number): number; (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number, initialValue: number): number; (callbackfn: (previousValue: U_1, currentValue: number, currentIndex: number, array: number[]) => U_1, initialValue: U_1): U_1; }; reduceRight: { (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number): number; (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number, initialValue: number): number; (callbackfn: (previousValue: U_2, currentValue: number, currentIndex: number, array: number[]) => U_2, initialValue: U_2): U_2; }; find: { (predicate: (value: number, index: number, obj: number[]) => value is S_2, thisArg?: any): S_2; (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any): number; }; findIndex: (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any) => number; fill: (value: number, start?: number, end?: number) => number[]; copyWithin: (target: number, start: number, end?: number) => number[]; entries: () => IterableIterator<[number, number]>; keys: () => IterableIterator; values: () => IterableIterator; includes: (searchElement: number, fromIndex?: number) => boolean; flatMap: (callback: (this: This, value: number, index: number, array: number[]) => U_3 | readonly U_3[], thisArg?: This) => U_3[]; flat: (this: A, depth?: D) => FlatArray[]; [Symbol.iterator]: () => IterableIterator; readonly [Symbol.unscopables]: { [x: number]: boolean; length?: boolean; toString?: boolean; toLocaleString?: boolean; pop?: boolean; push?: boolean; concat?: boolean; join?: boolean; reverse?: boolean; shift?: boolean; slice?: boolean; sort?: boolean; splice?: boolean; unshift?: boolean; indexOf?: boolean; lastIndexOf?: boolean; every?: boolean; some?: boolean; forEach?: boolean; map?: boolean; filter?: boolean; reduce?: boolean; reduceRight?: boolean; find?: boolean; findIndex?: boolean; fill?: boolean; copyWithin?: boolean; entries?: boolean; keys?: boolean; values?: boolean; includes?: boolean; flatMap?: boolean; flat?: boolean; [Symbol.iterator]?: boolean; readonly [Symbol.unscopables]?: boolean; }; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->(null as any as { [K in keyof number[] as Exclude]: (number[])[K] }) : { [x: number]: number; toString: () => string; toLocaleString: { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; }; pop: () => number; push: (...items: number[]) => number; concat: { (...items: ConcatArray[]): number[]; (...items: (number | ConcatArray)[]): number[]; }; join: (separator?: string) => string; reverse: () => number[]; shift: () => number; slice: (start?: number, end?: number) => number[]; sort: (compareFn?: (a: number, b: number) => number) => number[]; splice: { (start: number, deleteCount?: number): number[]; (start: number, deleteCount: number, ...items: number[]): number[]; }; unshift: (...items: number[]) => number; indexOf: (searchElement: number, fromIndex?: number) => number; lastIndexOf: (searchElement: number, fromIndex?: number) => number; every: { (predicate: (value: number, index: number, array: number[]) => value is S, thisArg?: any): this is S[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): boolean; }; some: (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any) => boolean; forEach: (callbackfn: (value: number, index: number, array: number[]) => void, thisArg?: any) => void; map: (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[]; filter: { (predicate: (value: number, index: number, array: number[]) => value is S_1, thisArg?: any): S_1[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): number[]; }; reduce: { (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number): number; (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number, initialValue: number): number; (callbackfn: (previousValue: U_1, currentValue: number, currentIndex: number, array: number[]) => U_1, initialValue: U_1): U_1; }; reduceRight: { (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number): number; (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number, initialValue: number): number; (callbackfn: (previousValue: U_2, currentValue: number, currentIndex: number, array: number[]) => U_2, initialValue: U_2): U_2; }; find: { (predicate: (value: number, index: number, obj: number[]) => value is S_2, thisArg?: any): S_2; (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any): number; }; findIndex: (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any) => number; fill: (value: number, start?: number, end?: number) => number[]; copyWithin: (target: number, start: number, end?: number) => number[]; entries: () => IterableIterator<[number, number]>; keys: () => IterableIterator; values: () => IterableIterator; includes: (searchElement: number, fromIndex?: number) => boolean; flatMap: (callback: (this: This, value: number, index: number, array: number[]) => U_3 | readonly U_3[], thisArg?: This) => U_3[]; flat: (this: A, depth?: D) => FlatArray[]; [Symbol.iterator]: () => IterableIterator; readonly [Symbol.unscopables]: { [x: number]: boolean; length?: boolean; toString?: boolean; toLocaleString?: boolean; pop?: boolean; push?: boolean; concat?: boolean; join?: boolean; reverse?: boolean; shift?: boolean; slice?: boolean; sort?: boolean; splice?: boolean; unshift?: boolean; indexOf?: boolean; lastIndexOf?: boolean; every?: boolean; some?: boolean; forEach?: boolean; map?: boolean; filter?: boolean; reduce?: boolean; reduceRight?: boolean; find?: boolean; findIndex?: boolean; fill?: boolean; copyWithin?: boolean; entries?: boolean; keys?: boolean; values?: boolean; includes?: boolean; flatMap?: boolean; flat?: boolean; [Symbol.iterator]?: boolean; readonly [Symbol.unscopables]?: boolean; }; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->null as any as { [K in keyof number[] as Exclude]: (number[])[K] } : { [x: number]: number; toString: () => string; toLocaleString: { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; }; pop: () => number; push: (...items: number[]) => number; concat: { (...items: ConcatArray[]): number[]; (...items: (number | ConcatArray)[]): number[]; }; join: (separator?: string) => string; reverse: () => number[]; shift: () => number; slice: (start?: number, end?: number) => number[]; sort: (compareFn?: (a: number, b: number) => number) => number[]; splice: { (start: number, deleteCount?: number): number[]; (start: number, deleteCount: number, ...items: number[]): number[]; }; unshift: (...items: number[]) => number; indexOf: (searchElement: number, fromIndex?: number) => number; lastIndexOf: (searchElement: number, fromIndex?: number) => number; every: { (predicate: (value: number, index: number, array: number[]) => value is S, thisArg?: any): this is S[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): boolean; }; some: (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any) => boolean; forEach: (callbackfn: (value: number, index: number, array: number[]) => void, thisArg?: any) => void; map: (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[]; filter: { (predicate: (value: number, index: number, array: number[]) => value is S_1, thisArg?: any): S_1[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): number[]; }; reduce: { (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number): number; (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number, initialValue: number): number; (callbackfn: (previousValue: U_1, currentValue: number, currentIndex: number, array: number[]) => U_1, initialValue: U_1): U_1; }; reduceRight: { (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number): number; (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number, initialValue: number): number; (callbackfn: (previousValue: U_2, currentValue: number, currentIndex: number, array: number[]) => U_2, initialValue: U_2): U_2; }; find: { (predicate: (value: number, index: number, obj: number[]) => value is S_2, thisArg?: any): S_2; (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any): number; }; findIndex: (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any) => number; fill: (value: number, start?: number, end?: number) => number[]; copyWithin: (target: number, start: number, end?: number) => number[]; entries: () => IterableIterator<[number, number]>; keys: () => IterableIterator; values: () => IterableIterator; includes: (searchElement: number, fromIndex?: number) => boolean; flatMap: (callback: (this: This, value: number, index: number, array: number[]) => U_3 | readonly U_3[], thisArg?: This) => U_3[]; flat: (this: A, depth?: D) => FlatArray[]; [Symbol.iterator]: () => IterableIterator; readonly [Symbol.unscopables]: { [x: number]: boolean; length?: boolean; toString?: boolean; toLocaleString?: boolean; pop?: boolean; push?: boolean; concat?: boolean; join?: boolean; reverse?: boolean; shift?: boolean; slice?: boolean; sort?: boolean; splice?: boolean; unshift?: boolean; indexOf?: boolean; lastIndexOf?: boolean; every?: boolean; some?: boolean; forEach?: boolean; map?: boolean; filter?: boolean; reduce?: boolean; reduceRight?: boolean; find?: boolean; findIndex?: boolean; fill?: boolean; copyWithin?: boolean; entries?: boolean; keys?: boolean; values?: boolean; includes?: boolean; flatMap?: boolean; flat?: boolean; [Symbol.iterator]?: boolean; readonly [Symbol.unscopables]?: boolean; }; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>thing : { [x: number]: number; toString: () => string; toLocaleString: { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; }; pop: () => number; push: (...items: number[]) => number; concat: { (...items: ConcatArray[]): number[]; (...items: (number | ConcatArray)[]): number[]; }; join: (separator?: string) => string; reverse: () => number[]; shift: () => number; slice: (start?: number, end?: number) => number[]; sort: (compareFn?: (a: number, b: number) => number) => number[]; splice: { (start: number, deleteCount?: number): number[]; (start: number, deleteCount: number, ...items: number[]): number[]; }; unshift: (...items: number[]) => number; indexOf: (searchElement: number, fromIndex?: number) => number; lastIndexOf: (searchElement: number, fromIndex?: number) => number; every: { (predicate: (value: number, index: number, array: number[]) => value is S, thisArg?: any): this is S[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): boolean; }; some: (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any) => boolean; forEach: (callbackfn: (value: number, index: number, array: number[]) => void, thisArg?: any) => void; map: (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[]; filter: { (predicate: (value: number, index: number, array: number[]) => value is S_1, thisArg?: any): S_1[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): number[]; }; reduce: { (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number): number; (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number, initialValue: number): number; (callbackfn: (previousValue: U_1, currentValue: number, currentIndex: number, array: number[]) => U_1, initialValue: U_1): U_1; }; reduceRight: { (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number): number; (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number, initialValue: number): number; (callbackfn: (previousValue: U_2, currentValue: number, currentIndex: number, array: number[]) => U_2, initialValue: U_2): U_2; }; find: { (predicate: (value: number, index: number, obj: number[]) => value is S_2, thisArg?: any): S_2; (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any): number; }; findIndex: (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any) => number; fill: (value: number, start?: number, end?: number) => number[]; copyWithin: (target: number, start: number, end?: number) => number[]; entries: () => IterableIterator<[number, number], void>; keys: () => IterableIterator; values: () => IterableIterator; includes: (searchElement: number, fromIndex?: number) => boolean; flatMap: (callback: (this: This, value: number, index: number, array: number[]) => U_3 | readonly U_3[], thisArg?: This) => U_3[]; flat: (this: A, depth?: D) => FlatArray[]; [Symbol.iterator]: () => IterableIterator; readonly [Symbol.unscopables]: { [x: number]: boolean; length?: boolean; toString?: boolean; toLocaleString?: boolean; pop?: boolean; push?: boolean; concat?: boolean; join?: boolean; reverse?: boolean; shift?: boolean; slice?: boolean; sort?: boolean; splice?: boolean; unshift?: boolean; indexOf?: boolean; lastIndexOf?: boolean; every?: boolean; some?: boolean; forEach?: boolean; map?: boolean; filter?: boolean; reduce?: boolean; reduceRight?: boolean; find?: boolean; findIndex?: boolean; fill?: boolean; copyWithin?: boolean; entries?: boolean; keys?: boolean; values?: boolean; includes?: boolean; flatMap?: boolean; flat?: boolean; [Symbol.iterator]?: boolean; readonly [Symbol.unscopables]?: boolean; }; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>(null as any as { [K in keyof number[] as Exclude]: (number[])[K] }) : { [x: number]: number; toString: () => string; toLocaleString: { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; }; pop: () => number; push: (...items: number[]) => number; concat: { (...items: ConcatArray[]): number[]; (...items: (number | ConcatArray)[]): number[]; }; join: (separator?: string) => string; reverse: () => number[]; shift: () => number; slice: (start?: number, end?: number) => number[]; sort: (compareFn?: (a: number, b: number) => number) => number[]; splice: { (start: number, deleteCount?: number): number[]; (start: number, deleteCount: number, ...items: number[]): number[]; }; unshift: (...items: number[]) => number; indexOf: (searchElement: number, fromIndex?: number) => number; lastIndexOf: (searchElement: number, fromIndex?: number) => number; every: { (predicate: (value: number, index: number, array: number[]) => value is S, thisArg?: any): this is S[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): boolean; }; some: (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any) => boolean; forEach: (callbackfn: (value: number, index: number, array: number[]) => void, thisArg?: any) => void; map: (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[]; filter: { (predicate: (value: number, index: number, array: number[]) => value is S_1, thisArg?: any): S_1[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): number[]; }; reduce: { (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number): number; (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number, initialValue: number): number; (callbackfn: (previousValue: U_1, currentValue: number, currentIndex: number, array: number[]) => U_1, initialValue: U_1): U_1; }; reduceRight: { (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number): number; (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number, initialValue: number): number; (callbackfn: (previousValue: U_2, currentValue: number, currentIndex: number, array: number[]) => U_2, initialValue: U_2): U_2; }; find: { (predicate: (value: number, index: number, obj: number[]) => value is S_2, thisArg?: any): S_2; (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any): number; }; findIndex: (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any) => number; fill: (value: number, start?: number, end?: number) => number[]; copyWithin: (target: number, start: number, end?: number) => number[]; entries: () => IterableIterator<[number, number], void>; keys: () => IterableIterator; values: () => IterableIterator; includes: (searchElement: number, fromIndex?: number) => boolean; flatMap: (callback: (this: This, value: number, index: number, array: number[]) => U_3 | readonly U_3[], thisArg?: This) => U_3[]; flat: (this: A, depth?: D) => FlatArray[]; [Symbol.iterator]: () => IterableIterator; readonly [Symbol.unscopables]: { [x: number]: boolean; length?: boolean; toString?: boolean; toLocaleString?: boolean; pop?: boolean; push?: boolean; concat?: boolean; join?: boolean; reverse?: boolean; shift?: boolean; slice?: boolean; sort?: boolean; splice?: boolean; unshift?: boolean; indexOf?: boolean; lastIndexOf?: boolean; every?: boolean; some?: boolean; forEach?: boolean; map?: boolean; filter?: boolean; reduce?: boolean; reduceRight?: boolean; find?: boolean; findIndex?: boolean; fill?: boolean; copyWithin?: boolean; entries?: boolean; keys?: boolean; values?: boolean; includes?: boolean; flatMap?: boolean; flat?: boolean; [Symbol.iterator]?: boolean; readonly [Symbol.unscopables]?: boolean; }; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>null as any as { [K in keyof number[] as Exclude]: (number[])[K] } : { [x: number]: number; toString: () => string; toLocaleString: { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; }; pop: () => number; push: (...items: number[]) => number; concat: { (...items: ConcatArray[]): number[]; (...items: (number | ConcatArray)[]): number[]; }; join: (separator?: string) => string; reverse: () => number[]; shift: () => number; slice: (start?: number, end?: number) => number[]; sort: (compareFn?: (a: number, b: number) => number) => number[]; splice: { (start: number, deleteCount?: number): number[]; (start: number, deleteCount: number, ...items: number[]): number[]; }; unshift: (...items: number[]) => number; indexOf: (searchElement: number, fromIndex?: number) => number; lastIndexOf: (searchElement: number, fromIndex?: number) => number; every: { (predicate: (value: number, index: number, array: number[]) => value is S, thisArg?: any): this is S[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): boolean; }; some: (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any) => boolean; forEach: (callbackfn: (value: number, index: number, array: number[]) => void, thisArg?: any) => void; map: (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[]; filter: { (predicate: (value: number, index: number, array: number[]) => value is S_1, thisArg?: any): S_1[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): number[]; }; reduce: { (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number): number; (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number, initialValue: number): number; (callbackfn: (previousValue: U_1, currentValue: number, currentIndex: number, array: number[]) => U_1, initialValue: U_1): U_1; }; reduceRight: { (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number): number; (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number, initialValue: number): number; (callbackfn: (previousValue: U_2, currentValue: number, currentIndex: number, array: number[]) => U_2, initialValue: U_2): U_2; }; find: { (predicate: (value: number, index: number, obj: number[]) => value is S_2, thisArg?: any): S_2; (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any): number; }; findIndex: (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any) => number; fill: (value: number, start?: number, end?: number) => number[]; copyWithin: (target: number, start: number, end?: number) => number[]; entries: () => IterableIterator<[number, number], void>; keys: () => IterableIterator; values: () => IterableIterator; includes: (searchElement: number, fromIndex?: number) => boolean; flatMap: (callback: (this: This, value: number, index: number, array: number[]) => U_3 | readonly U_3[], thisArg?: This) => U_3[]; flat: (this: A, depth?: D) => FlatArray[]; [Symbol.iterator]: () => IterableIterator; readonly [Symbol.unscopables]: { [x: number]: boolean; length?: boolean; toString?: boolean; toLocaleString?: boolean; pop?: boolean; push?: boolean; concat?: boolean; join?: boolean; reverse?: boolean; shift?: boolean; slice?: boolean; sort?: boolean; splice?: boolean; unshift?: boolean; indexOf?: boolean; lastIndexOf?: boolean; every?: boolean; some?: boolean; forEach?: boolean; map?: boolean; filter?: boolean; reduce?: boolean; reduceRight?: boolean; find?: boolean; findIndex?: boolean; fill?: boolean; copyWithin?: boolean; entries?: boolean; keys?: boolean; values?: boolean; includes?: boolean; flatMap?: boolean; flat?: boolean; [Symbol.iterator]?: boolean; readonly [Symbol.unscopables]?: boolean; }; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >null as any : any diff --git a/tests/baselines/reference/modularizeLibrary_NoErrorDuplicateLibOptions1.types b/tests/baselines/reference/modularizeLibrary_NoErrorDuplicateLibOptions1.types index 100c9693e234e..c721185f6b07c 100644 --- a/tests/baselines/reference/modularizeLibrary_NoErrorDuplicateLibOptions1.types +++ b/tests/baselines/reference/modularizeLibrary_NoErrorDuplicateLibOptions1.types @@ -58,14 +58,14 @@ m.clear(); // Using ES6 iterable m.keys(); ->m.keys() : IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^ ->m.keys : () => IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>m.keys() : IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>m.keys : () => IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >m : Map > : ^^^^^^^^^^^^^^^^^^^ ->keys : () => IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>keys : () => IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ // Using ES6 function function Baz() { } diff --git a/tests/baselines/reference/modularizeLibrary_NoErrorDuplicateLibOptions2.types b/tests/baselines/reference/modularizeLibrary_NoErrorDuplicateLibOptions2.types index a0f54835e1cca..fed079f251575 100644 --- a/tests/baselines/reference/modularizeLibrary_NoErrorDuplicateLibOptions2.types +++ b/tests/baselines/reference/modularizeLibrary_NoErrorDuplicateLibOptions2.types @@ -58,14 +58,14 @@ m.clear(); // Using ES6 iterable m.keys(); ->m.keys() : IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^ ->m.keys : () => IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>m.keys() : IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>m.keys : () => IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >m : Map > : ^^^^^^^^^^^^^^^^^^^ ->keys : () => IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>keys : () => IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ // Using ES6 function function Baz() { } diff --git a/tests/baselines/reference/modularizeLibrary_TargetES5UsingES6Lib.types b/tests/baselines/reference/modularizeLibrary_TargetES5UsingES6Lib.types index b5e4e42f60fe4..c788ce5c46b7f 100644 --- a/tests/baselines/reference/modularizeLibrary_TargetES5UsingES6Lib.types +++ b/tests/baselines/reference/modularizeLibrary_TargetES5UsingES6Lib.types @@ -58,14 +58,14 @@ m.clear(); // Using ES6 iterable m.keys(); ->m.keys() : IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^ ->m.keys : () => IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>m.keys() : IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>m.keys : () => IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >m : Map > : ^^^^^^^^^^^^^^^^^^^ ->keys : () => IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>keys : () => IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ // Using ES6 function function Baz() { } diff --git a/tests/baselines/reference/modularizeLibrary_TargetES6UsingES6Lib.types b/tests/baselines/reference/modularizeLibrary_TargetES6UsingES6Lib.types index 1aae5089a1ab2..19d7af8515665 100644 --- a/tests/baselines/reference/modularizeLibrary_TargetES6UsingES6Lib.types +++ b/tests/baselines/reference/modularizeLibrary_TargetES6UsingES6Lib.types @@ -58,14 +58,14 @@ m.clear(); // Using ES6 iterable m.keys(); ->m.keys() : IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^ ->m.keys : () => IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>m.keys() : IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>m.keys : () => IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >m : Map > : ^^^^^^^^^^^^^^^^^^^ ->keys : () => IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>keys : () => IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ // Using ES6 function function Baz() { } diff --git a/tests/baselines/reference/parser.asyncGenerators.classMethods.es2018.types b/tests/baselines/reference/parser.asyncGenerators.classMethods.es2018.types index b221c3bd2c9fc..e42c29560e422 100644 --- a/tests/baselines/reference/parser.asyncGenerators.classMethods.es2018.types +++ b/tests/baselines/reference/parser.asyncGenerators.classMethods.es2018.types @@ -221,8 +221,8 @@ class C16 { > : ^^^ async * f() { ->f : () => AsyncGenerator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>f : () => AsyncGenerator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ yield * []; >yield * [] : void diff --git a/tests/baselines/reference/parser.asyncGenerators.functionDeclarations.es2018.types b/tests/baselines/reference/parser.asyncGenerators.functionDeclarations.es2018.types index 71f1e0f061f4e..4780a080a16b4 100644 --- a/tests/baselines/reference/parser.asyncGenerators.functionDeclarations.es2018.types +++ b/tests/baselines/reference/parser.asyncGenerators.functionDeclarations.es2018.types @@ -142,8 +142,8 @@ async function * f15() { } === yieldStarWithValueIsOk.ts === async function * f16() { ->f16 : () => AsyncGenerator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>f16 : () => AsyncGenerator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ yield * []; >yield * [] : void diff --git a/tests/baselines/reference/parser.asyncGenerators.functionExpressions.es2018.types b/tests/baselines/reference/parser.asyncGenerators.functionExpressions.es2018.types index 82ff585223c06..688c184a60a1a 100644 --- a/tests/baselines/reference/parser.asyncGenerators.functionExpressions.es2018.types +++ b/tests/baselines/reference/parser.asyncGenerators.functionExpressions.es2018.types @@ -188,10 +188,10 @@ const f15 = async function * () { }; === yieldStarWithValueIsOk.ts === const f16 = async function * () { ->f16 : () => AsyncGenerator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->async function * () { yield * [];} : () => AsyncGenerator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>f16 : () => AsyncGenerator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>async function * () { yield * [];} : () => AsyncGenerator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ yield * []; >yield * [] : void diff --git a/tests/baselines/reference/parser.asyncGenerators.objectLiteralMethods.es2018.types b/tests/baselines/reference/parser.asyncGenerators.objectLiteralMethods.es2018.types index 204572d01a900..1dbedfbc4b29e 100644 --- a/tests/baselines/reference/parser.asyncGenerators.objectLiteralMethods.es2018.types +++ b/tests/baselines/reference/parser.asyncGenerators.objectLiteralMethods.es2018.types @@ -247,14 +247,14 @@ const o15 = { }; === 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 * [] : void diff --git a/tests/baselines/reference/regexMatchAll-esnext.types b/tests/baselines/reference/regexMatchAll-esnext.types index 13c2b3b1572af..eac410ebc768d 100644 --- a/tests/baselines/reference/regexMatchAll-esnext.types +++ b/tests/baselines/reference/regexMatchAll-esnext.types @@ -2,12 +2,12 @@ === regexMatchAll-esnext.ts === const matches = /\w/g[Symbol.matchAll]("matchAll"); ->matches : IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->/\w/g[Symbol.matchAll]("matchAll") : IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->/\w/g[Symbol.matchAll] : (str: string) => IterableIterator -> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>matches : IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>/\w/g[Symbol.matchAll]("matchAll") : IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>/\w/g[Symbol.matchAll] : (str: string) => IterableIterator +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >/\w/g : RegExp > : ^^^^^^ >Symbol.matchAll : unique symbol @@ -26,8 +26,8 @@ const array = [...matches]; > : ^^^^^^^^^^^^^^^^^^ >...matches : RegExpMatchArray > : ^^^^^^^^^^^^^^^^ ->matches : IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>matches : IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ const { index, input } = array[0]; >index : number diff --git a/tests/baselines/reference/regexMatchAll.types b/tests/baselines/reference/regexMatchAll.types index 59bd4d730a162..8e3e3f0ef13af 100644 --- a/tests/baselines/reference/regexMatchAll.types +++ b/tests/baselines/reference/regexMatchAll.types @@ -2,12 +2,12 @@ === regexMatchAll.ts === const matches = /\w/g[Symbol.matchAll]("matchAll"); ->matches : IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->/\w/g[Symbol.matchAll]("matchAll") : IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->/\w/g[Symbol.matchAll] : (str: string) => IterableIterator -> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>matches : IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>/\w/g[Symbol.matchAll]("matchAll") : IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>/\w/g[Symbol.matchAll] : (str: string) => IterableIterator +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >/\w/g : RegExp > : ^^^^^^ >Symbol.matchAll : unique symbol @@ -26,8 +26,8 @@ const array = [...matches]; > : ^^^^^^^^^^^^^^^^^^ >...matches : RegExpMatchArray > : ^^^^^^^^^^^^^^^^ ->matches : IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>matches : IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ const { index, input } = array[0]; >index : number diff --git a/tests/baselines/reference/stringMatchAll.types b/tests/baselines/reference/stringMatchAll.types index 422c849e95422..3c62fd5a6def0 100644 --- a/tests/baselines/reference/stringMatchAll.types +++ b/tests/baselines/reference/stringMatchAll.types @@ -2,16 +2,16 @@ === stringMatchAll.ts === const matches = "matchAll".matchAll(/\w/g); ->matches : IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->"matchAll".matchAll(/\w/g) : IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->"matchAll".matchAll : (regexp: RegExp) => IterableIterator -> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>matches : IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>"matchAll".matchAll(/\w/g) : IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>"matchAll".matchAll : (regexp: RegExp) => IterableIterator +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >"matchAll" : "matchAll" > : ^^^^^^^^^^ ->matchAll : (regexp: RegExp) => IterableIterator -> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>matchAll : (regexp: RegExp) => IterableIterator +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >/\w/g : RegExp > : ^^^^^^ @@ -22,8 +22,8 @@ const array = [...matches]; > : ^^^^^^^^^^^^^^^^^ >...matches : RegExpExecArray > : ^^^^^^^^^^^^^^^ ->matches : IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>matches : IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ const { index, input } = array[0]; >index : number diff --git a/tests/baselines/reference/types.asyncGenerators.es2018.1.types b/tests/baselines/reference/types.asyncGenerators.es2018.1.types index 35cba542334c7..2fa9129df1b5d 100644 --- a/tests/baselines/reference/types.asyncGenerators.es2018.1.types +++ b/tests/baselines/reference/types.asyncGenerators.es2018.1.types @@ -61,8 +61,8 @@ async function * inferReturnType5() { > : ^ } async function * inferReturnType6() { ->inferReturnType6 : () => AsyncGenerator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>inferReturnType6 : () => AsyncGenerator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ yield* [1, 2]; >yield* [1, 2] : void @@ -75,8 +75,8 @@ async function * inferReturnType6() { > : ^ } async function * inferReturnType7() { ->inferReturnType7 : () => AsyncGenerator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>inferReturnType7 : () => AsyncGenerator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ yield* [Promise.resolve(1)]; >yield* [Promise.resolve(1)] : void @@ -114,12 +114,12 @@ 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 > : ^ @@ -127,12 +127,12 @@ const assignability1: () => AsyncIterableIterator = async function * () 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 : { (): Promise; (value: T): Promise>; (value: T_1 | PromiseLike): Promise>; } @@ -148,8 +148,8 @@ 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] : void @@ -165,8 +165,8 @@ 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)] : void @@ -188,20 +188,20 @@ const assignability4: () => AsyncIterableIterator = async function * () const assignability5: () => AsyncIterableIterator = async function * () { >assignability5 : () => AsyncIterableIterator > : ^^^^^^ ->async function * () { yield* (async function * () { yield 1; })();} : () => AsyncGenerator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>async function * () { yield* (async function * () { yield 1; })();} : () => AsyncGenerator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ yield* (async function * () { yield 1; })(); >yield* (async function * () { yield 1; })() : void > : ^^^^ ->(async function * () { yield 1; })() : AsyncGenerator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->(async function * () { yield 1; }) : () => AsyncGenerator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->async function * () { yield 1; } : () => AsyncGenerator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->yield 1 : undefined -> : ^^^^^^^^^ +>(async function * () { yield 1; })() : AsyncGenerator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>(async function * () { yield 1; }) : () => AsyncGenerator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>async function * () { yield 1; } : () => AsyncGenerator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>yield 1 : unknown +> : ^^^^^^^ >1 : 1 > : ^ @@ -209,12 +209,12 @@ 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 > : ^ @@ -222,12 +222,12 @@ const assignability6: () => AsyncIterable = async function * () { 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 : { (): Promise; (value: T): Promise>; (value: T_1 | PromiseLike): Promise>; } @@ -243,8 +243,8 @@ 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] : void @@ -260,8 +260,8 @@ 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)] : void @@ -283,20 +283,20 @@ const assignability9: () => AsyncIterable = async function * () { const assignability10: () => AsyncIterable = async function * () { >assignability10 : () => AsyncIterable > : ^^^^^^ ->async function * () { yield* (async function * () { yield 1; })();} : () => AsyncGenerator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>async function * () { yield* (async function * () { yield 1; })();} : () => AsyncGenerator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ yield* (async function * () { yield 1; })(); >yield* (async function * () { yield 1; })() : void > : ^^^^ ->(async function * () { yield 1; })() : AsyncGenerator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->(async function * () { yield 1; }) : () => AsyncGenerator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->async function * () { yield 1; } : () => AsyncGenerator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->yield 1 : undefined -> : ^^^^^^^^^ +>(async function * () { yield 1; })() : AsyncGenerator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>(async function * () { yield 1; }) : () => AsyncGenerator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>async function * () { yield 1; } : () => AsyncGenerator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>yield 1 : unknown +> : ^^^^^^^ >1 : 1 > : ^ @@ -304,12 +304,12 @@ const assignability10: () => AsyncIterable = async function * () { const assignability11: () => AsyncIterator = async function * () { >assignability11 : () => AsyncIterator > : ^^^^^^ ->async function * () { yield 1;} : () => AsyncGenerator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>async function * () { yield 1;} : () => AsyncGenerator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ yield 1; ->yield 1 : undefined -> : ^^^^^^^^^ +>yield 1 : unknown +> : ^^^^^^^ >1 : 1 > : ^ @@ -317,12 +317,12 @@ const assignability11: () => AsyncIterator = async function * () { const assignability12: () => AsyncIterator = async function * () { >assignability12 : () => AsyncIterator > : ^^^^^^ ->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 : { (): Promise; (value: T): Promise>; (value: T_1 | PromiseLike): Promise>; } @@ -338,8 +338,8 @@ const assignability12: () => AsyncIterator = async function * () { const assignability13: () => AsyncIterator = async function * () { >assignability13 : () => AsyncIterator > : ^^^^^^ ->async function * () { yield* [1, 2];} : () => AsyncGenerator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>async function * () { yield* [1, 2];} : () => AsyncGenerator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ yield* [1, 2]; >yield* [1, 2] : void @@ -355,8 +355,8 @@ const assignability13: () => AsyncIterator = async function * () { const assignability14: () => AsyncIterator = async function * () { >assignability14 : () => AsyncIterator > : ^^^^^^ ->async function * () { yield* [Promise.resolve(1)];} : () => AsyncGenerator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>async function * () { yield* [Promise.resolve(1)];} : () => AsyncGenerator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ yield* [Promise.resolve(1)]; >yield* [Promise.resolve(1)] : void @@ -378,20 +378,20 @@ const assignability14: () => AsyncIterator = async function * () { const assignability15: () => AsyncIterator = async function * () { >assignability15 : () => AsyncIterator > : ^^^^^^ ->async function * () { yield* (async function * () { yield 1; })();} : () => AsyncGenerator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>async function * () { yield* (async function * () { yield 1; })();} : () => AsyncGenerator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ yield* (async function * () { yield 1; })(); >yield* (async function * () { yield 1; })() : void > : ^^^^ ->(async function * () { yield 1; })() : AsyncGenerator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->(async function * () { yield 1; }) : () => AsyncGenerator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->async function * () { yield 1; } : () => AsyncGenerator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->yield 1 : undefined -> : ^^^^^^^^^ +>(async function * () { yield 1; })() : AsyncGenerator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>(async function * () { yield 1; }) : () => AsyncGenerator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>async function * () { yield 1; } : () => AsyncGenerator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>yield 1 : unknown +> : ^^^^^^^ >1 : 1 > : ^ @@ -401,8 +401,8 @@ async function * explicitReturnType1(): AsyncIterableIterator { > : ^^^^^^ yield 1; ->yield 1 : undefined -> : ^^^^^^^^^ +>yield 1 : unknown +> : ^^^^^^^ >1 : 1 > : ^ } @@ -411,8 +411,8 @@ async function * explicitReturnType2(): AsyncIterableIterator { > : ^^^^^^ yield Promise.resolve(1); ->yield Promise.resolve(1) : undefined -> : ^^^^^^^^^ +>yield Promise.resolve(1) : unknown +> : ^^^^^^^ >Promise.resolve(1) : Promise > : ^^^^^^^^^^^^^^^ >Promise.resolve : { (): Promise; (value: T): Promise>; (value: T_1 | PromiseLike): Promise>; } @@ -465,14 +465,14 @@ async function * explicitReturnType5(): AsyncIterableIterator { yield* (async function * () { yield 1; })(); >yield* (async function * () { yield 1; })() : void > : ^^^^ ->(async function * () { yield 1; })() : AsyncGenerator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->(async function * () { yield 1; }) : () => AsyncGenerator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->async function * () { yield 1; } : () => AsyncGenerator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->yield 1 : undefined -> : ^^^^^^^^^ +>(async function * () { yield 1; })() : AsyncGenerator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>(async function * () { yield 1; }) : () => AsyncGenerator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>async function * () { yield 1; } : () => AsyncGenerator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>yield 1 : unknown +> : ^^^^^^^ >1 : 1 > : ^ } @@ -481,8 +481,8 @@ async function * explicitReturnType6(): AsyncIterable { > : ^^^^^^ yield 1; ->yield 1 : undefined -> : ^^^^^^^^^ +>yield 1 : unknown +> : ^^^^^^^ >1 : 1 > : ^ } @@ -491,8 +491,8 @@ async function * explicitReturnType7(): AsyncIterable { > : ^^^^^^ yield Promise.resolve(1); ->yield Promise.resolve(1) : undefined -> : ^^^^^^^^^ +>yield Promise.resolve(1) : unknown +> : ^^^^^^^ >Promise.resolve(1) : Promise > : ^^^^^^^^^^^^^^^ >Promise.resolve : { (): Promise; (value: T): Promise>; (value: T_1 | PromiseLike): Promise>; } @@ -545,14 +545,14 @@ async function * explicitReturnType10(): AsyncIterable { yield* (async function * () { yield 1; })(); >yield* (async function * () { yield 1; })() : void > : ^^^^ ->(async function * () { yield 1; })() : AsyncGenerator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->(async function * () { yield 1; }) : () => AsyncGenerator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->async function * () { yield 1; } : () => AsyncGenerator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->yield 1 : undefined -> : ^^^^^^^^^ +>(async function * () { yield 1; })() : AsyncGenerator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>(async function * () { yield 1; }) : () => AsyncGenerator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>async function * () { yield 1; } : () => AsyncGenerator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>yield 1 : unknown +> : ^^^^^^^ >1 : 1 > : ^ } @@ -561,8 +561,8 @@ async function * explicitReturnType11(): AsyncIterator { > : ^^^^^^ yield 1; ->yield 1 : undefined -> : ^^^^^^^^^ +>yield 1 : unknown +> : ^^^^^^^ >1 : 1 > : ^ } @@ -571,8 +571,8 @@ async function * explicitReturnType12(): AsyncIterator { > : ^^^^^^ yield Promise.resolve(1); ->yield Promise.resolve(1) : undefined -> : ^^^^^^^^^ +>yield Promise.resolve(1) : unknown +> : ^^^^^^^ >Promise.resolve(1) : Promise > : ^^^^^^^^^^^^^^^ >Promise.resolve : { (): Promise; (value: T): Promise>; (value: T_1 | PromiseLike): Promise>; } @@ -625,14 +625,14 @@ async function * explicitReturnType15(): AsyncIterator { yield* (async function * () { yield 1; })(); >yield* (async function * () { yield 1; })() : void > : ^^^^ ->(async function * () { yield 1; })() : AsyncGenerator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->(async function * () { yield 1; }) : () => AsyncGenerator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->async function * () { yield 1; } : () => AsyncGenerator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->yield 1 : undefined -> : ^^^^^^^^^ +>(async function * () { yield 1; })() : AsyncGenerator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>(async function * () { yield 1; }) : () => AsyncGenerator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>async function * () { yield 1; } : () => AsyncGenerator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>yield 1 : unknown +> : ^^^^^^^ >1 : 1 > : ^ } diff --git a/tests/baselines/reference/types.asyncGenerators.es2018.2.errors.txt b/tests/baselines/reference/types.asyncGenerators.es2018.2.errors.txt index 6795d00174eb2..4f1792abbcb73 100644 --- a/tests/baselines/reference/types.asyncGenerators.es2018.2.errors.txt +++ b/tests/baselines/reference/types.asyncGenerators.es2018.2.errors.txt @@ -1,31 +1,31 @@ types.asyncGenerators.es2018.2.ts(2,12): error TS2504: Type '{}' must have a '[Symbol.asyncIterator]()' method that returns an async iterator. types.asyncGenerators.es2018.2.ts(8,12): error TS2504: Type 'Promise' must have a '[Symbol.asyncIterator]()' method that returns an async iterator. -types.asyncGenerators.es2018.2.ts(10,7): error TS2322: Type '() => AsyncGenerator' is not assignable to type '() => AsyncIterableIterator'. - Call signature return types 'AsyncGenerator' and 'AsyncIterableIterator' are incompatible. +types.asyncGenerators.es2018.2.ts(10,7): error TS2322: Type '() => AsyncGenerator' is not assignable to type '() => AsyncIterableIterator'. + Call signature return types 'AsyncGenerator' and 'AsyncIterableIterator' are incompatible. The types returned by 'next(...)' are incompatible between these types. - 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 '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'. -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'. -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.asyncGenerators.es2018.2.ts(19,7): error TS2322: Type '() => AsyncGenerator' is not assignable to type '() => AsyncIterable'. - Call signature return types 'AsyncGenerator' and 'AsyncIterable' are incompatible. +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'. +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.asyncGenerators.es2018.2.ts(19,7): error TS2322: Type '() => AsyncGenerator' is not assignable to type '() => AsyncIterable'. + Call signature return types 'AsyncGenerator' and 'AsyncIterable' are incompatible. The types of '[Symbol.asyncIterator]().next' are incompatible between these types. - Type '(...args: [] | [undefined]) => Promise>' is not assignable to type '(...args: [] | [undefined]) => Promise>'. -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'. -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'. -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'. -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'. -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'. + Type '(...args: [] | [unknown]) => Promise>' is not assignable to type '(...args: [] | [unknown]) => Promise>'. +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'. +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'. +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'. +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'. +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'. types.asyncGenerators.es2018.2.ts(38,11): error TS2322: Type 'string' is not assignable to type 'number'. types.asyncGenerators.es2018.2.ts(41,12): error TS2322: Type 'string' is not assignable to type 'number'. types.asyncGenerators.es2018.2.ts(44,12): error TS2322: Type 'string' is not assignable to type 'number'. @@ -35,11 +35,11 @@ types.asyncGenerators.es2018.2.ts(53,12): error TS2322: Type 'string' is not ass types.asyncGenerators.es2018.2.ts(56,11): error TS2322: Type 'string' is not assignable to type 'number'. types.asyncGenerators.es2018.2.ts(59,12): error TS2322: Type 'string' is not assignable to type 'number'. types.asyncGenerators.es2018.2.ts(62,12): error TS2322: Type 'string' is not assignable to type 'number'. -types.asyncGenerators.es2018.2.ts(64,42): error TS2741: Property '[Symbol.iterator]' is missing in type 'AsyncGenerator' but required in type 'IterableIterator'. +types.asyncGenerators.es2018.2.ts(64,42): error TS2741: Property '[Symbol.iterator]' is missing in type 'AsyncGenerator' but required in type 'IterableIterator'. types.asyncGenerators.es2018.2.ts(67,42): error TS2741: Property '[Symbol.iterator]' is missing in type 'AsyncGenerator' but required in type 'Iterable'. -types.asyncGenerators.es2018.2.ts(70,42): error TS2322: Type 'AsyncGenerator' is not assignable to type 'Iterator'. +types.asyncGenerators.es2018.2.ts(70,42): error TS2322: Type 'AsyncGenerator' is not assignable to type 'Iterator'. The types returned by 'next(...)' are incompatible between these types. - Type 'Promise>' is not assignable to type 'IteratorResult'. + Type 'Promise>' is not assignable to type 'IteratorResult'. types.asyncGenerators.es2018.2.ts(74,12): error TS2504: Type '{}' must have a '[Symbol.asyncIterator]()' method that returns an async iterator. @@ -60,64 +60,64 @@ types.asyncGenerators.es2018.2.ts(74,12): error TS2504: Type '{}' must have a '[ } const assignability1: () => AsyncIterableIterator = async function * () { ~~~~~~~~~~~~~~ -!!! error TS2322: Type '() => AsyncGenerator' is not assignable to type '() => AsyncIterableIterator'. -!!! error TS2322: Call signature return types 'AsyncGenerator' and 'AsyncIterableIterator' are incompatible. +!!! error TS2322: Type '() => AsyncGenerator' is not assignable to type '() => AsyncIterableIterator'. +!!! error TS2322: Call signature return types 'AsyncGenerator' and 'AsyncIterableIterator' are incompatible. !!! error TS2322: The types returned by 'next(...)' are incompatible between these types. -!!! 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'. +!!! 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'. !!! error TS2322: Type 'IteratorYieldResult' is not assignable to type 'IteratorYieldResult'. !!! error TS2322: Type 'string' is not assignable to type 'number'. yield "a"; }; 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: Type '() => AsyncGenerator' is not assignable to type '() => AsyncIterableIterator'. +!!! error TS2322: Type 'AsyncGenerator' is not assignable to type 'AsyncIterableIterator'. yield* (async function * () { yield "a"; })(); }; const assignability4: () => AsyncIterable = async function * () { ~~~~~~~~~~~~~~ -!!! error TS2322: Type '() => AsyncGenerator' is not assignable to type '() => AsyncIterable'. -!!! error TS2322: Call signature return types 'AsyncGenerator' and 'AsyncIterable' are incompatible. +!!! error TS2322: Type '() => AsyncGenerator' is not assignable to type '() => AsyncIterable'. +!!! error TS2322: Call signature return types 'AsyncGenerator' and 'AsyncIterable' are incompatible. !!! error TS2322: The types of '[Symbol.asyncIterator]().next' are incompatible between these types. -!!! 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>'. 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: Type '() => AsyncGenerator' is not assignable to type '() => AsyncIterable'. +!!! error TS2322: Type 'AsyncGenerator' is not assignable to type 'AsyncIterable'. 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 { @@ -167,7 +167,7 @@ types.asyncGenerators.es2018.2.ts(74,12): error TS2504: Type '{}' must have a '[ } 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 lib.es2015.iterable.d.ts:--:--: '[Symbol.iterator]' is declared here. yield 1; } @@ -179,9 +179,9 @@ types.asyncGenerators.es2018.2.ts(74,12): error TS2504: Type '{}' must have a '[ } 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: The types returned by 'next(...)' are incompatible between these types. -!!! error TS2322: Type 'Promise>' is not assignable to type 'IteratorResult'. +!!! error TS2322: Type 'Promise>' is not assignable to type 'IteratorResult'. yield 1; } async function * yieldStar() { diff --git a/tests/baselines/reference/types.asyncGenerators.es2018.2.types b/tests/baselines/reference/types.asyncGenerators.es2018.2.types index d7a438fd0f6f5..059ada8259cb4 100644 --- a/tests/baselines/reference/types.asyncGenerators.es2018.2.types +++ b/tests/baselines/reference/types.asyncGenerators.es2018.2.types @@ -48,12 +48,12 @@ 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" > : ^^^ @@ -61,8 +61,8 @@ const assignability1: () => AsyncIterableIterator = async function * () 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"] : void @@ -78,20 +78,20 @@ const assignability2: () => AsyncIterableIterator = async function * () const assignability3: () => AsyncIterableIterator = async function * () { >assignability3 : () => AsyncIterableIterator > : ^^^^^^ ->async function * () { yield* (async function * () { yield "a"; })();} : () => AsyncGenerator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>async function * () { yield* (async function * () { yield "a"; })();} : () => AsyncGenerator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ yield* (async function * () { yield "a"; })(); >yield* (async function * () { yield "a"; })() : void > : ^^^^ ->(async function * () { yield "a"; })() : AsyncGenerator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->(async function * () { yield "a"; }) : () => AsyncGenerator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->async function * () { yield "a"; } : () => AsyncGenerator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->yield "a" : undefined -> : ^^^^^^^^^ +>(async function * () { yield "a"; })() : AsyncGenerator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>(async function * () { yield "a"; }) : () => AsyncGenerator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>async function * () { yield "a"; } : () => AsyncGenerator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>yield "a" : unknown +> : ^^^^^^^ >"a" : "a" > : ^^^ @@ -99,12 +99,12 @@ 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" > : ^^^ @@ -112,8 +112,8 @@ const assignability4: () => AsyncIterable = async function * () { 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"] : void @@ -129,20 +129,20 @@ const assignability5: () => AsyncIterable = async function * () { const assignability6: () => AsyncIterable = async function * () { >assignability6 : () => AsyncIterable > : ^^^^^^ ->async function * () { yield* (async function * () { yield "a"; })();} : () => AsyncGenerator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>async function * () { yield* (async function * () { yield "a"; })();} : () => AsyncGenerator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ yield* (async function * () { yield "a"; })(); >yield* (async function * () { yield "a"; })() : void > : ^^^^ ->(async function * () { yield "a"; })() : AsyncGenerator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->(async function * () { yield "a"; }) : () => AsyncGenerator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->async function * () { yield "a"; } : () => AsyncGenerator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->yield "a" : undefined -> : ^^^^^^^^^ +>(async function * () { yield "a"; })() : AsyncGenerator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>(async function * () { yield "a"; }) : () => AsyncGenerator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>async function * () { yield "a"; } : () => AsyncGenerator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>yield "a" : unknown +> : ^^^^^^^ >"a" : "a" > : ^^^ @@ -150,12 +150,12 @@ const assignability6: () => AsyncIterable = async function * () { const assignability7: () => AsyncIterator = async function * () { >assignability7 : () => AsyncIterator > : ^^^^^^ ->async function * () { yield "a";} : () => AsyncGenerator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>async function * () { yield "a";} : () => AsyncGenerator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ yield "a"; ->yield "a" : undefined -> : ^^^^^^^^^ +>yield "a" : unknown +> : ^^^^^^^ >"a" : "a" > : ^^^ @@ -163,8 +163,8 @@ const assignability7: () => AsyncIterator = async function * () { const assignability8: () => AsyncIterator = async function * () { >assignability8 : () => AsyncIterator > : ^^^^^^ ->async function * () { yield* ["a", "b"];} : () => AsyncGenerator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>async function * () { yield* ["a", "b"];} : () => AsyncGenerator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ yield* ["a", "b"]; >yield* ["a", "b"] : void @@ -180,20 +180,20 @@ const assignability8: () => AsyncIterator = async function * () { const assignability9: () => AsyncIterator = async function * () { >assignability9 : () => AsyncIterator > : ^^^^^^ ->async function * () { yield* (async function * () { yield "a"; })();} : () => AsyncGenerator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>async function * () { yield* (async function * () { yield "a"; })();} : () => AsyncGenerator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ yield* (async function * () { yield "a"; })(); >yield* (async function * () { yield "a"; })() : void > : ^^^^ ->(async function * () { yield "a"; })() : AsyncGenerator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->(async function * () { yield "a"; }) : () => AsyncGenerator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->async function * () { yield "a"; } : () => AsyncGenerator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->yield "a" : undefined -> : ^^^^^^^^^ +>(async function * () { yield "a"; })() : AsyncGenerator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>(async function * () { yield "a"; }) : () => AsyncGenerator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>async function * () { yield "a"; } : () => AsyncGenerator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>yield "a" : unknown +> : ^^^^^^^ >"a" : "a" > : ^^^ @@ -203,8 +203,8 @@ async function * explicitReturnType1(): AsyncIterableIterator { > : ^^^^^^ yield "a"; ->yield "a" : undefined -> : ^^^^^^^^^ +>yield "a" : unknown +> : ^^^^^^^ >"a" : "a" > : ^^^ } @@ -229,14 +229,14 @@ async function * explicitReturnType3(): AsyncIterableIterator { yield* (async function * () { yield "a"; })(); >yield* (async function * () { yield "a"; })() : void > : ^^^^ ->(async function * () { yield "a"; })() : AsyncGenerator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->(async function * () { yield "a"; }) : () => AsyncGenerator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->async function * () { yield "a"; } : () => AsyncGenerator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->yield "a" : undefined -> : ^^^^^^^^^ +>(async function * () { yield "a"; })() : AsyncGenerator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>(async function * () { yield "a"; }) : () => AsyncGenerator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>async function * () { yield "a"; } : () => AsyncGenerator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>yield "a" : unknown +> : ^^^^^^^ >"a" : "a" > : ^^^ } @@ -245,8 +245,8 @@ async function * explicitReturnType4(): AsyncIterable { > : ^^^^^^ yield "a"; ->yield "a" : undefined -> : ^^^^^^^^^ +>yield "a" : unknown +> : ^^^^^^^ >"a" : "a" > : ^^^ } @@ -271,14 +271,14 @@ async function * explicitReturnType6(): AsyncIterable { yield* (async function * () { yield "a"; })(); >yield* (async function * () { yield "a"; })() : void > : ^^^^ ->(async function * () { yield "a"; })() : AsyncGenerator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->(async function * () { yield "a"; }) : () => AsyncGenerator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->async function * () { yield "a"; } : () => AsyncGenerator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->yield "a" : undefined -> : ^^^^^^^^^ +>(async function * () { yield "a"; })() : AsyncGenerator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>(async function * () { yield "a"; }) : () => AsyncGenerator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>async function * () { yield "a"; } : () => AsyncGenerator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>yield "a" : unknown +> : ^^^^^^^ >"a" : "a" > : ^^^ } @@ -287,8 +287,8 @@ async function * explicitReturnType7(): AsyncIterator { > : ^^^^^^ yield "a"; ->yield "a" : undefined -> : ^^^^^^^^^ +>yield "a" : unknown +> : ^^^^^^^ >"a" : "a" > : ^^^ } @@ -313,14 +313,14 @@ async function * explicitReturnType9(): AsyncIterator { yield* (async function * () { yield "a"; })(); >yield* (async function * () { yield "a"; })() : void > : ^^^^ ->(async function * () { yield "a"; })() : AsyncGenerator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->(async function * () { yield "a"; }) : () => AsyncGenerator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->async function * () { yield "a"; } : () => AsyncGenerator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->yield "a" : undefined -> : ^^^^^^^^^ +>(async function * () { yield "a"; })() : AsyncGenerator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>(async function * () { yield "a"; }) : () => AsyncGenerator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>async function * () { yield "a"; } : () => AsyncGenerator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>yield "a" : unknown +> : ^^^^^^^ >"a" : "a" > : ^^^ } @@ -329,8 +329,8 @@ async function * explicitReturnType10(): IterableIterator { > : ^^^^^^ yield 1; ->yield 1 : undefined -> : ^^^^^^^^^ +>yield 1 : unknown +> : ^^^^^^^ >1 : 1 > : ^ } @@ -349,8 +349,8 @@ async function * explicitReturnType12(): Iterator { > : ^^^^^^ yield 1; ->yield 1 : undefined -> : ^^^^^^^^^ +>yield 1 : unknown +> : ^^^^^^^ >1 : 1 > : ^ } diff --git a/tests/baselines/reference/uniqueSymbols.types b/tests/baselines/reference/uniqueSymbols.types index 4636bd0bb86e6..6072b7fd066c9 100644 --- a/tests/baselines/reference/uniqueSymbols.types +++ b/tests/baselines/reference/uniqueSymbols.types @@ -195,8 +195,8 @@ function* genFuncYieldConstCallWithTypeQuery(): IterableIterator : ^^^^^^ >constCall : unique symbol > : ^^^^^^^^^^^^^ ->yield constCall : undefined -> : ^^^^^^^^^ +>yield constCall : unknown +> : ^^^^^^^ >constCall : unique symbol > : ^^^^^^^^^^^^^ @@ -1304,8 +1304,8 @@ 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 @@ -1326,23 +1326,23 @@ 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/uniqueSymbolsDeclarations.types b/tests/baselines/reference/uniqueSymbolsDeclarations.types index c00d454c25daf..ed1e66c924e6a 100644 --- a/tests/baselines/reference/uniqueSymbolsDeclarations.types +++ b/tests/baselines/reference/uniqueSymbolsDeclarations.types @@ -186,8 +186,8 @@ function* genFuncYieldConstCallWithTypeQuery(): IterableIterator : ^^^^^^ >constCall : unique symbol > : ^^^^^^^^^^^^^ ->yield constCall : undefined -> : ^^^^^^^^^ +>yield constCall : unknown +> : ^^^^^^^ >constCall : unique symbol > : ^^^^^^^^^^^^^ @@ -1295,8 +1295,8 @@ interface Context { const o4: Context = { >o4 : 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 @@ -1317,23 +1317,23 @@ const o4: 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 38715c1dd92a9..02a40a2098d6e 100644 --- a/tests/baselines/reference/yieldExpression1.types +++ b/tests/baselines/reference/yieldExpression1.types @@ -21,12 +21,12 @@ function* b(): IterableIterator { > : ^^^^^^ yield; ->yield : undefined -> : ^^^^^^^^^ +>yield : unknown +> : ^^^^^^^ yield 0; ->yield 0 : undefined -> : ^^^^^^^^^ +>yield 0 : unknown +> : ^^^^^^^ >0 : 0 > : ^ } diff --git a/tests/baselines/reference/yieldExpressionInControlFlow.types b/tests/baselines/reference/yieldExpressionInControlFlow.types index a7f21148a58a5..c445bb04b2d6f 100644 --- a/tests/baselines/reference/yieldExpressionInControlFlow.types +++ b/tests/baselines/reference/yieldExpressionInControlFlow.types @@ -28,8 +28,8 @@ function* f() { === alsoFails.ts === // fails in Typescript too function* g() { ->g : () => Generator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>g : () => Generator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ var o = [] >o : any[] diff --git a/tests/baselines/reference/yieldExpressionInnerCommentEmit.types b/tests/baselines/reference/yieldExpressionInnerCommentEmit.types index ffab26ff43d50..6110f638b84bb 100644 --- a/tests/baselines/reference/yieldExpressionInnerCommentEmit.types +++ b/tests/baselines/reference/yieldExpressionInnerCommentEmit.types @@ -2,8 +2,8 @@ === yieldExpressionInnerCommentEmit.ts === function * foo2() { ->foo2 : () => Generator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>foo2 : () => Generator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /*comment1*/ yield 1; >yield 1 : any diff --git a/tests/cases/conformance/es6/yieldExpressions/generatorTypeCheck62.ts b/tests/cases/conformance/es6/yieldExpressions/generatorTypeCheck62.ts index 8b4d2c59f81b1..ee85d45065369 100644 --- a/tests/cases/conformance/es6/yieldExpressions/generatorTypeCheck62.ts +++ b/tests/cases/conformance/es6/yieldExpressions/generatorTypeCheck62.ts @@ -6,7 +6,7 @@ export interface StrategicState { lastStrategyApplied?: string; } -export function strategy(stratName: string, gen: (a: T) => IterableIterator): (a: T) => IterableIterator { +export function strategy(stratName: string, gen: (a: T) => IterableIterator): (a: T) => IterableIterator { return function*(state) { for (const next of gen(state)) { if (next) { @@ -18,7 +18,7 @@ export function strategy(stratName: string, gen: (a: T } export interface Strategy { - (a: T): IterableIterator; + (a: T): IterableIterator; } export interface State extends StrategicState { diff --git a/tests/cases/conformance/es6/yieldExpressions/generatorTypeCheck63.ts b/tests/cases/conformance/es6/yieldExpressions/generatorTypeCheck63.ts index c809f055bc397..e50c40265ae0c 100644 --- a/tests/cases/conformance/es6/yieldExpressions/generatorTypeCheck63.ts +++ b/tests/cases/conformance/es6/yieldExpressions/generatorTypeCheck63.ts @@ -6,7 +6,7 @@ export interface StrategicState { lastStrategyApplied?: string; } -export function strategy(stratName: string, gen: (a: T) => IterableIterator): (a: T) => IterableIterator { +export function strategy(stratName: string, gen: (a: T) => IterableIterator): (a: T) => IterableIterator { return function*(state) { for (const next of gen(state)) { if (next) { @@ -18,7 +18,7 @@ export function strategy(stratName: string, gen: (a: T } export interface Strategy { - (a: T): IterableIterator; + (a: T): IterableIterator; } export interface State extends StrategicState { From 5cb0e1055f611eee0a54a5288e1b71e5cfcf5bb3 Mon Sep 17 00:00:00 2001 From: Ron Buckton Date: Fri, 19 Apr 2024 15:16:40 -0400 Subject: [PATCH 08/17] Fix broken fourslash test --- tests/cases/fourslash/codeFixAddMissingProperties22.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/cases/fourslash/codeFixAddMissingProperties22.ts b/tests/cases/fourslash/codeFixAddMissingProperties22.ts index 03c7d0eaf9a31..8b3df8c110b06 100644 --- a/tests/cases/fourslash/codeFixAddMissingProperties22.ts +++ b/tests/cases/fourslash/codeFixAddMissingProperties22.ts @@ -8,7 +8,7 @@ verify.codeFix({ description: ts.Diagnostics.Add_missing_properties.message, newFileContent: `const x: Iterable = { - [Symbol.iterator]: function(): Iterator { + [Symbol.iterator]: function(): Iterator { throw new Error("Function not implemented."); } }`, From 52ed3197ef91be760de0242fec60d65087b60fd9 Mon Sep 17 00:00:00 2001 From: Ron Buckton Date: Mon, 6 May 2024 16:18:11 -0400 Subject: [PATCH 09/17] Use intrinsic type for builtin iterator return, PR feedback --- src/compiler/checker.ts | 24 +- src/compiler/types.ts | 3 +- src/lib/dom.iterable.d.ts | 46 ++-- src/lib/es2015.iterable.d.ts | 126 ++++++----- src/services/codefixes/addMissingAwait.ts | 6 +- .../reference/YieldStarExpression4_es6.types | 3 +- .../argumentsObjectIterator02_ES6.types | 16 +- tests/baselines/reference/arrayFrom.types | 24 +- .../reference/bigintWithLib.errors.txt | 4 +- ...rn(nouncheckedindexedaccess=false).symbols | 125 ++++++++++ ...turn(nouncheckedindexedaccess=false).types | 213 ++++++++++++++++++ ...urn(nouncheckedindexedaccess=true).symbols | 125 ++++++++++ ...eturn(nouncheckedindexedaccess=true).types | 213 ++++++++++++++++++ ...ructuredLateBoundNameHasCorrectTypes.types | 8 +- .../dissallowSymbolAsWeakType.errors.txt | 8 +- ....asyncGenerators.classMethods.es2015.types | 6 +- ....asyncGenerators.classMethods.es2018.types | 6 +- ...ter.asyncGenerators.classMethods.es5.types | 6 +- ...nerators.functionDeclarations.es2015.types | 6 +- ...nerators.functionDeclarations.es2018.types | 6 +- ...cGenerators.functionDeclarations.es5.types | 6 +- ...enerators.functionExpressions.es2015.types | 6 +- ...enerators.functionExpressions.es2018.types | 6 +- ...ncGenerators.functionExpressions.es5.types | 6 +- ...nerators.objectLiteralMethods.es2015.types | 6 +- ...nerators.objectLiteralMethods.es2018.types | 6 +- ...cGenerators.objectLiteralMethods.es5.types | 6 +- tests/baselines/reference/for-of12.types | 12 +- tests/baselines/reference/for-of13.types | 12 +- tests/baselines/reference/for-of39.errors.txt | 4 +- .../generatorReturnTypeInference.types | 4 +- ...eneratorReturnTypeInferenceNonStrict.types | 4 +- .../reference/generatorTypeCheck19.types | 3 +- .../reference/generatorTypeCheck20.types | 4 +- .../reference/generatorTypeCheck22.types | 6 +- .../reference/generatorTypeCheck23.types | 6 +- .../reference/generatorTypeCheck24.types | 9 +- .../reference/generatorTypeCheck25.types | 8 +- .../reference/generatorTypeCheck26.types | 3 +- .../reference/generatorTypeCheck53.types | 3 +- .../reference/generatorTypeCheck54.types | 6 +- ...rtHelpersNoHelpersForAsyncGenerators.types | 4 +- ...indirectGlobalSymbolPartOfObjectType.types | 4 +- .../iterableArrayPattern28.errors.txt | 4 +- ...ithAsClauseAndLateBoundProperty.errors.txt | 4 +- ...TypeWithAsClauseAndLateBoundProperty.types | 12 +- ...edTypeWithAsClauseAndLateBoundProperty2.js | 16 +- ...ypeWithAsClauseAndLateBoundProperty2.types | 12 +- ...eLibrary_NoErrorDuplicateLibOptions1.types | 12 +- ...eLibrary_NoErrorDuplicateLibOptions2.types | 12 +- ...dularizeLibrary_TargetES5UsingES6Lib.types | 12 +- ...dularizeLibrary_TargetES6UsingES6Lib.types | 12 +- ....asyncGenerators.classMethods.es2018.types | 4 +- ...nerators.functionDeclarations.es2018.types | 4 +- ...enerators.functionExpressions.es2018.types | 4 +- ...nerators.objectLiteralMethods.es2018.types | 4 +- .../types.asyncGenerators.es2018.1.types | 42 ++-- .../types.asyncGenerators.es2018.2.types | 24 +- .../yieldExpressionInControlFlow.errors.txt | 5 +- .../yieldExpressionInControlFlow.types | 16 +- .../yieldExpressionInnerCommentEmit.types | 6 +- .../typeAliases/builtinIteratorReturn.ts | 32 +++ 62 files changed, 997 insertions(+), 348 deletions(-) create mode 100644 tests/baselines/reference/builtinIteratorReturn(nouncheckedindexedaccess=false).symbols create mode 100644 tests/baselines/reference/builtinIteratorReturn(nouncheckedindexedaccess=false).types create mode 100644 tests/baselines/reference/builtinIteratorReturn(nouncheckedindexedaccess=true).symbols create mode 100644 tests/baselines/reference/builtinIteratorReturn(nouncheckedindexedaccess=true).types create mode 100644 tests/cases/conformance/types/typeAliases/builtinIteratorReturn.ts diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 5b6fd9900eb75..3b48ff3ba3a4e 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -1788,18 +1788,10 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker { getOptionalType: () => optionalType, getPromiseType: () => getGlobalPromiseType(/*reportErrors*/ false), getPromiseLikeType: () => getGlobalPromiseLikeType(/*reportErrors*/ false), - getAsyncIterableType: () => { + getAnyAsyncIterableType: () => { const type = getGlobalAsyncIterableType(/*reportErrors*/ false); if (type === emptyGenericType) return undefined; - return type; - }, - createTypeReference: (target, typeArguments) => { - if (target !== emptyGenericType && getObjectFlags(target) & ObjectFlags.ClassOrInterface) { - const interfaceType = target as InterfaceType; - if (some(interfaceType.typeParameters)) { - return createTypeReference(interfaceType as GenericType, typeArguments); - } - } + return createTypeReference(type, [anyType, anyType, anyType]); }, isSymbolAccessible, isArrayType, @@ -6850,7 +6842,8 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker { ) { while (typeParameterCount > 0) { const typeArgument = typeArguments[typeParameterCount - 1]; - const defaultType = getDefaultFromTypeParameter(type.target.typeParameters[typeParameterCount - 1]); + const typeParameter = type.target.typeParameters[typeParameterCount - 1]; + const defaultType = getDefaultFromTypeParameter(typeParameter); if (!defaultType || !isTypeIdenticalTo(typeArgument, defaultType)) { break; } @@ -12480,7 +12473,6 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker { const typeNode = isJSDocTypeAlias(declaration) ? declaration.typeExpression : declaration.type; // If typeNode is missing, we will error in checkJSDocTypedefTag. let type = typeNode ? getTypeFromTypeNode(typeNode) : errorType; - if (popTypeResolution()) { const typeParameters = getLocalTypeParametersOfClassOrInterfaceOrTypeAlias(symbol); if (typeParameters) { @@ -12490,6 +12482,9 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker { links.instantiations = new Map(); links.instantiations.set(getTypeListId(typeParameters), type); } + if (type === intrinsicMarkerType && symbol.escapedName === "BuiltinIteratorReturn") { + type = compilerOptions.noUncheckedIndexedAccess ? undefinedType : anyType; + } } else { type = errorType; @@ -45492,7 +45487,10 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker { checkExportsOnMergedDeclarations(node); checkTypeParameters(node.typeParameters); if (node.type.kind === SyntaxKind.IntrinsicKeyword) { - if (!intrinsicTypeKinds.has(node.name.escapedText as string) || length(node.typeParameters) !== 1) { + if ( + !(node.name.escapedText === "BuiltinIteratorReturn" && length(node.typeParameters) === 0) && + !(intrinsicTypeKinds.has(node.name.escapedText as string) && length(node.typeParameters) === 1) + ) { error(node.type, Diagnostics.The_intrinsic_keyword_can_only_be_used_to_declare_compiler_provided_intrinsic_types); } } diff --git a/src/compiler/types.ts b/src/compiler/types.ts index 6a5cf99196e0f..3f28e560cddea 100644 --- a/src/compiler/types.ts +++ b/src/compiler/types.ts @@ -5199,8 +5199,7 @@ export interface TypeChecker { /** @internal */ createPromiseType(type: Type): Type; /** @internal */ getPromiseType(): Type; /** @internal */ getPromiseLikeType(): Type; - /** @internal */ getAsyncIterableType(): Type | undefined; - /** @internal */ createTypeReference(target: Type, typeArguments: readonly Type[] | undefined): Type | undefined; + /** @internal */ getAnyAsyncIterableType(): Type | undefined; /** * Returns true if the "source" type is assignable to the "target" type. diff --git a/src/lib/dom.iterable.d.ts b/src/lib/dom.iterable.d.ts index a18299299301e..747f279099191 100644 --- a/src/lib/dom.iterable.d.ts +++ b/src/lib/dom.iterable.d.ts @@ -1,30 +1,30 @@ /// interface DOMTokenList { - [Symbol.iterator](): IterableIterator; + [Symbol.iterator](): IterableIterator; } interface Headers { - [Symbol.iterator](): IterableIterator<[string, string], void>; + [Symbol.iterator](): IterableIterator<[string, string], BuiltinIteratorReturn>; /** * Returns an iterator allowing to go through all key/value pairs contained in this object. */ - entries(): IterableIterator<[string, string], void>; + entries(): IterableIterator<[string, string], BuiltinIteratorReturn>; /** * Returns an iterator allowing to go through all keys f the key/value pairs contained in this object. */ - keys(): IterableIterator; + keys(): IterableIterator; /** * Returns an iterator allowing to go through all values of the key/value pairs contained in this object. */ - values(): IterableIterator; + values(): IterableIterator; } interface NodeList { /** * Returns an array of key, value pairs for every entry in the list */ - entries(): IterableIterator<[number, Node], void>; + entries(): IterableIterator<[number, Node], BuiltinIteratorReturn>; /** * Performs the specified action for each node in an list. * @param callbackfn A function that accepts up to three arguments. forEach calls the callbackfn function one time for each element in the list. @@ -34,21 +34,21 @@ interface NodeList { /** * Returns an list of keys in the list */ - keys(): IterableIterator; + keys(): IterableIterator; /** * Returns an list of values in the list */ - values(): IterableIterator; + values(): IterableIterator; - [Symbol.iterator](): IterableIterator; + [Symbol.iterator](): IterableIterator; } interface NodeListOf { /** * Returns an array of key, value pairs for every entry in the list */ - entries(): IterableIterator<[number, TNode], void>; + entries(): IterableIterator<[number, TNode], BuiltinIteratorReturn>; /** * Performs the specified action for each node in an list. @@ -59,55 +59,55 @@ interface NodeListOf { /** * Returns an list of keys in the list */ - keys(): IterableIterator; + keys(): IterableIterator; /** * Returns an list of values in the list */ - values(): IterableIterator; + values(): IterableIterator; - [Symbol.iterator](): IterableIterator; + [Symbol.iterator](): IterableIterator; } interface HTMLCollectionBase { - [Symbol.iterator](): IterableIterator; + [Symbol.iterator](): IterableIterator; } interface HTMLCollectionOf { - [Symbol.iterator](): IterableIterator; + [Symbol.iterator](): IterableIterator; } interface FormData { /** * Returns an array of key, value pairs for every entry in the list */ - entries(): IterableIterator<[string, string | File], void>; + entries(): IterableIterator<[string, string | File], BuiltinIteratorReturn>; /** * Returns a list of keys in the list */ - keys(): IterableIterator; + keys(): IterableIterator; /** * Returns a list of values in the list */ - values(): IterableIterator; + values(): IterableIterator; - [Symbol.iterator](): IterableIterator; + [Symbol.iterator](): IterableIterator; } interface URLSearchParams { /** * Returns an array of key, value pairs for every entry in the search params */ - entries(): IterableIterator<[string, string], void>; + entries(): IterableIterator<[string, string], BuiltinIteratorReturn>; /** * Returns a list of keys in the search params */ - keys(): IterableIterator; + keys(): IterableIterator; /** * Returns a list of values in the search params */ - values(): IterableIterator; + values(): IterableIterator; /** * iterate over key/value pairs */ - [Symbol.iterator](): IterableIterator<[string, string], void>; + [Symbol.iterator](): IterableIterator<[string, string], BuiltinIteratorReturn>; } diff --git a/src/lib/es2015.iterable.d.ts b/src/lib/es2015.iterable.d.ts index 3134202b494b1..56126980d48e6 100644 --- a/src/lib/es2015.iterable.d.ts +++ b/src/lib/es2015.iterable.d.ts @@ -35,24 +35,26 @@ interface IterableIterator extends Iterator; } +type BuiltinIteratorReturn = intrinsic; + interface Array { /** Iterator */ - [Symbol.iterator](): IterableIterator; + [Symbol.iterator](): IterableIterator; /** * Returns an iterable of key, value pairs for every entry in the array */ - entries(): IterableIterator<[number, T], void>; + entries(): IterableIterator<[number, T], BuiltinIteratorReturn>; /** * Returns an iterable of keys in the array */ - keys(): IterableIterator; + keys(): IterableIterator; /** * Returns an iterable of values in the array */ - values(): IterableIterator; + values(): IterableIterator; } interface ArrayConstructor { @@ -73,67 +75,67 @@ interface ArrayConstructor { interface ReadonlyArray { /** Iterator of values in the array. */ - [Symbol.iterator](): IterableIterator; + [Symbol.iterator](): IterableIterator; /** * Returns an iterable of key, value pairs for every entry in the array */ - entries(): IterableIterator<[number, T], void>; + entries(): IterableIterator<[number, T], BuiltinIteratorReturn>; /** * Returns an iterable of keys in the array */ - keys(): IterableIterator; + keys(): IterableIterator; /** * Returns an iterable of values in the array */ - values(): IterableIterator; + values(): IterableIterator; } interface IArguments { /** Iterator */ - [Symbol.iterator](): IterableIterator; + [Symbol.iterator](): IterableIterator; } interface Map { /** Returns an iterable of entries in the map. */ - [Symbol.iterator](): IterableIterator<[K, V], void>; + [Symbol.iterator](): IterableIterator<[K, V], BuiltinIteratorReturn>; /** * Returns an iterable of key, value pairs for every entry in the map. */ - entries(): IterableIterator<[K, V], void>; + entries(): IterableIterator<[K, V], BuiltinIteratorReturn>; /** * Returns an iterable of keys in the map */ - keys(): IterableIterator; + keys(): IterableIterator; /** * Returns an iterable of values in the map */ - values(): IterableIterator; + values(): IterableIterator; } interface ReadonlyMap { /** Returns an iterable of entries in the map. */ - [Symbol.iterator](): IterableIterator<[K, V], void>; + [Symbol.iterator](): IterableIterator<[K, V], BuiltinIteratorReturn>; /** * Returns an iterable of key, value pairs for every entry in the map. */ - entries(): IterableIterator<[K, V], void>; + entries(): IterableIterator<[K, V], BuiltinIteratorReturn>; /** * Returns an iterable of keys in the map */ - keys(): IterableIterator; + keys(): IterableIterator; /** * Returns an iterable of values in the map */ - values(): IterableIterator; + values(): IterableIterator; } interface MapConstructor { @@ -149,40 +151,40 @@ interface WeakMapConstructor { interface Set { /** Iterates over values in the set. */ - [Symbol.iterator](): IterableIterator; + [Symbol.iterator](): IterableIterator; /** * Returns an iterable of [v,v] pairs for every value `v` in the set. */ - entries(): IterableIterator<[T, T], void>; + entries(): IterableIterator<[T, T], BuiltinIteratorReturn>; /** * Despite its name, returns an iterable of the values in the set. */ - keys(): IterableIterator; + keys(): IterableIterator; /** * Returns an iterable of values in the set. */ - values(): IterableIterator; + values(): IterableIterator; } interface ReadonlySet { /** Iterates over values in the set. */ - [Symbol.iterator](): IterableIterator; + [Symbol.iterator](): IterableIterator; /** * Returns an iterable of [v,v] pairs for every value `v` in the set. */ - entries(): IterableIterator<[T, T], void>; + entries(): IterableIterator<[T, T], BuiltinIteratorReturn>; /** * Despite its name, returns an iterable of the values in the set. */ - keys(): IterableIterator; + keys(): IterableIterator; /** * Returns an iterable of values in the set. */ - values(): IterableIterator; + values(): IterableIterator; } interface SetConstructor { @@ -217,23 +219,23 @@ interface PromiseConstructor { interface String { /** Iterator */ - [Symbol.iterator](): IterableIterator; + [Symbol.iterator](): IterableIterator; } interface Int8Array { - [Symbol.iterator](): IterableIterator; + [Symbol.iterator](): IterableIterator; /** * Returns an array of key, value pairs for every entry in the array */ - entries(): IterableIterator<[number, number], void>; + entries(): IterableIterator<[number, number], BuiltinIteratorReturn>; /** * Returns an list of keys in the array */ - keys(): IterableIterator; + keys(): IterableIterator; /** * Returns an list of values in the array */ - values(): IterableIterator; + values(): IterableIterator; } interface Int8ArrayConstructor { @@ -249,19 +251,19 @@ interface Int8ArrayConstructor { } interface Uint8Array { - [Symbol.iterator](): IterableIterator; + [Symbol.iterator](): IterableIterator; /** * Returns an array of key, value pairs for every entry in the array */ - entries(): IterableIterator<[number, number], void>; + entries(): IterableIterator<[number, number], BuiltinIteratorReturn>; /** * Returns an list of keys in the array */ - keys(): IterableIterator; + keys(): IterableIterator; /** * Returns an list of values in the array */ - values(): IterableIterator; + values(): IterableIterator; } interface Uint8ArrayConstructor { @@ -277,21 +279,21 @@ interface Uint8ArrayConstructor { } interface Uint8ClampedArray { - [Symbol.iterator](): IterableIterator; + [Symbol.iterator](): IterableIterator; /** * Returns an array of key, value pairs for every entry in the array */ - entries(): IterableIterator<[number, number], void>; + entries(): IterableIterator<[number, number], BuiltinIteratorReturn>; /** * Returns an list of keys in the array */ - keys(): IterableIterator; + keys(): IterableIterator; /** * Returns an list of values in the array */ - values(): IterableIterator; + values(): IterableIterator; } interface Uint8ClampedArrayConstructor { @@ -307,21 +309,21 @@ interface Uint8ClampedArrayConstructor { } interface Int16Array { - [Symbol.iterator](): IterableIterator; + [Symbol.iterator](): IterableIterator; /** * Returns an array of key, value pairs for every entry in the array */ - entries(): IterableIterator<[number, number], void>; + entries(): IterableIterator<[number, number], BuiltinIteratorReturn>; /** * Returns an list of keys in the array */ - keys(): IterableIterator; + keys(): IterableIterator; /** * Returns an list of values in the array */ - values(): IterableIterator; + values(): IterableIterator; } interface Int16ArrayConstructor { @@ -337,19 +339,19 @@ interface Int16ArrayConstructor { } interface Uint16Array { - [Symbol.iterator](): IterableIterator; + [Symbol.iterator](): IterableIterator; /** * Returns an array of key, value pairs for every entry in the array */ - entries(): IterableIterator<[number, number], void>; + entries(): IterableIterator<[number, number], BuiltinIteratorReturn>; /** * Returns an list of keys in the array */ - keys(): IterableIterator; + keys(): IterableIterator; /** * Returns an list of values in the array */ - values(): IterableIterator; + values(): IterableIterator; } interface Uint16ArrayConstructor { @@ -365,19 +367,19 @@ interface Uint16ArrayConstructor { } interface Int32Array { - [Symbol.iterator](): IterableIterator; + [Symbol.iterator](): IterableIterator; /** * Returns an array of key, value pairs for every entry in the array */ - entries(): IterableIterator<[number, number], void>; + entries(): IterableIterator<[number, number], BuiltinIteratorReturn>; /** * Returns an list of keys in the array */ - keys(): IterableIterator; + keys(): IterableIterator; /** * Returns an list of values in the array */ - values(): IterableIterator; + values(): IterableIterator; } interface Int32ArrayConstructor { @@ -393,19 +395,19 @@ interface Int32ArrayConstructor { } interface Uint32Array { - [Symbol.iterator](): IterableIterator; + [Symbol.iterator](): IterableIterator; /** * Returns an array of key, value pairs for every entry in the array */ - entries(): IterableIterator<[number, number], void>; + entries(): IterableIterator<[number, number], BuiltinIteratorReturn>; /** * Returns an list of keys in the array */ - keys(): IterableIterator; + keys(): IterableIterator; /** * Returns an list of values in the array */ - values(): IterableIterator; + values(): IterableIterator; } interface Uint32ArrayConstructor { @@ -421,19 +423,19 @@ interface Uint32ArrayConstructor { } interface Float32Array { - [Symbol.iterator](): IterableIterator; + [Symbol.iterator](): IterableIterator; /** * Returns an array of key, value pairs for every entry in the array */ - entries(): IterableIterator<[number, number], void>; + entries(): IterableIterator<[number, number], BuiltinIteratorReturn>; /** * Returns an list of keys in the array */ - keys(): IterableIterator; + keys(): IterableIterator; /** * Returns an list of values in the array */ - values(): IterableIterator; + values(): IterableIterator; } interface Float32ArrayConstructor { @@ -449,19 +451,19 @@ interface Float32ArrayConstructor { } interface Float64Array { - [Symbol.iterator](): IterableIterator; + [Symbol.iterator](): IterableIterator; /** * Returns an array of key, value pairs for every entry in the array */ - entries(): IterableIterator<[number, number], void>; + entries(): IterableIterator<[number, number], BuiltinIteratorReturn>; /** * Returns an list of keys in the array */ - keys(): IterableIterator; + keys(): IterableIterator; /** * Returns an list of values in the array */ - values(): IterableIterator; + values(): IterableIterator; } interface Float64ArrayConstructor { diff --git a/src/services/codefixes/addMissingAwait.ts b/src/services/codefixes/addMissingAwait.ts index 58ea03cb54767..23e1f6456cb6b 100644 --- a/src/services/codefixes/addMissingAwait.ts +++ b/src/services/codefixes/addMissingAwait.ts @@ -285,10 +285,8 @@ function isInsideAwaitableBody(node: Node) { function makeChange(changeTracker: textChanges.ChangeTracker, errorCode: number, sourceFile: SourceFile, checker: TypeChecker, insertionSite: Expression, fixedDeclarations?: Set) { if (isForOfStatement(insertionSite.parent) && !insertionSite.parent.awaitModifier) { const exprType = checker.getTypeAtLocation(insertionSite); - const asyncIter = checker.getAsyncIterableType(); - const anyType = checker.getAnyType(); - const asyncIterInstantiation = asyncIter && checker.createTypeReference(asyncIter, [anyType, anyType, anyType]); - if (asyncIterInstantiation && checker.isTypeAssignableTo(exprType, asyncIterInstantiation)) { + const asyncIter = checker.getAnyAsyncIterableType(); + if (asyncIter && checker.isTypeAssignableTo(exprType, asyncIter)) { const forOf = insertionSite.parent; changeTracker.replaceNode(sourceFile, forOf, factory.updateForOfStatement(forOf, factory.createToken(SyntaxKind.AwaitKeyword), forOf.initializer, forOf.expression, forOf.statement)); return; diff --git a/tests/baselines/reference/YieldStarExpression4_es6.types b/tests/baselines/reference/YieldStarExpression4_es6.types index 756c9358d5489..186939d83832f 100644 --- a/tests/baselines/reference/YieldStarExpression4_es6.types +++ b/tests/baselines/reference/YieldStarExpression4_es6.types @@ -6,8 +6,7 @@ function *g() { > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ yield * []; ->yield * [] : void -> : ^^^^ +>yield * [] : any >[] : undefined[] > : ^^^^^^^^^^^ } diff --git a/tests/baselines/reference/argumentsObjectIterator02_ES6.types b/tests/baselines/reference/argumentsObjectIterator02_ES6.types index cf5ef29f654b7..eec7d223b7c9b 100644 --- a/tests/baselines/reference/argumentsObjectIterator02_ES6.types +++ b/tests/baselines/reference/argumentsObjectIterator02_ES6.types @@ -12,10 +12,10 @@ function doubleAndReturnAsArray(x: number, y: number, z: number): [number, numbe > : ^^^^^^ let blah = arguments[Symbol.iterator]; ->blah : () => IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->arguments[Symbol.iterator] : () => IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>blah : () => IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>arguments[Symbol.iterator] : () => IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >arguments : IArguments > : ^^^^^^^^^^ >Symbol.iterator : unique symbol @@ -33,10 +33,10 @@ function doubleAndReturnAsArray(x: number, y: number, z: number): [number, numbe for (let arg of blah()) { >arg : any ->blah() : IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->blah : () => IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>blah() : IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^ +>blah : () => IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ result.push(arg + arg); >result.push(arg + arg) : number diff --git a/tests/baselines/reference/arrayFrom.types b/tests/baselines/reference/arrayFrom.types index 7d4edee354f44..71485e09f6925 100644 --- a/tests/baselines/reference/arrayFrom.types +++ b/tests/baselines/reference/arrayFrom.types @@ -83,14 +83,14 @@ const result2: A[] = Array.from(inputA.values()); > : ^^^^^^^^^^^^^^^^ >from : { (arrayLike: ArrayLike): T[]; (arrayLike: ArrayLike, mapfn: (v: T_1, k: number) => U, thisArg?: any): U[]; (iterable: Iterable | ArrayLike): T_2[]; (iterable: Iterable | ArrayLike, mapfn: (v: T_3, k: number) => U_1, thisArg?: any): U_1[]; } > : ^^^ ^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^ ->inputA.values() : IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ ->inputA.values : () => IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>inputA.values() : IterableIterator +> : ^^^^^^^^^^^^^^^^^^^ +>inputA.values : () => IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^ >inputA : A[] > : ^^^ ->values : () => IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>values : () => IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^ const result3: B[] = Array.from(inputA.values()); // expect error >result3 : B[] @@ -103,14 +103,14 @@ const result3: B[] = Array.from(inputA.values()); // expect error > : ^^^^^^^^^^^^^^^^ >from : { (arrayLike: ArrayLike): T[]; (arrayLike: ArrayLike, mapfn: (v: T_1, k: number) => U, thisArg?: any): U[]; (iterable: Iterable | ArrayLike): T_2[]; (iterable: Iterable | ArrayLike, mapfn: (v: T_3, k: number) => U_1, thisArg?: any): U_1[]; } > : ^^^ ^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^ ->inputA.values() : IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ ->inputA.values : () => IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>inputA.values() : IterableIterator +> : ^^^^^^^^^^^^^^^^^^^ +>inputA.values : () => IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^ >inputA : A[] > : ^^^ ->values : () => IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>values : () => IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^ const result4: A[] = Array.from(inputB, ({ b }): A => ({ a: b })); >result4 : A[] diff --git a/tests/baselines/reference/bigintWithLib.errors.txt b/tests/baselines/reference/bigintWithLib.errors.txt index 523b1b3732f17..aa402ec0cba5c 100644 --- a/tests/baselines/reference/bigintWithLib.errors.txt +++ b/tests/baselines/reference/bigintWithLib.errors.txt @@ -5,7 +5,7 @@ bigintWithLib.ts(19,33): error TS2769: No overload matches this call. Overload 2 of 3, '(array: Iterable): BigInt64Array', gave the following error. Argument of type 'number[]' is not assignable to parameter of type 'Iterable'. The types returned by '[Symbol.iterator]().next(...)' are incompatible between these types. - Type 'IteratorResult' is not assignable to type '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'. Type 'number' is not assignable to type 'bigint'. @@ -54,7 +54,7 @@ bigintWithLib.ts(46,26): error TS2345: Argument of type 'number' is not assignab !!! 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: The types returned by '[Symbol.iterator]().next(...)' are incompatible between these types. -!!! error TS2769: Type 'IteratorResult' is not assignable to type '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'. !!! error TS2769: Type 'number' is not assignable to type 'bigint'. diff --git a/tests/baselines/reference/builtinIteratorReturn(nouncheckedindexedaccess=false).symbols b/tests/baselines/reference/builtinIteratorReturn(nouncheckedindexedaccess=false).symbols new file mode 100644 index 0000000000000..30883277c61a7 --- /dev/null +++ b/tests/baselines/reference/builtinIteratorReturn(nouncheckedindexedaccess=false).symbols @@ -0,0 +1,125 @@ +//// [tests/cases/conformance/types/typeAliases/builtinIteratorReturn.ts] //// + +=== builtinIteratorReturn.ts === +declare const array: number[]; +>array : Symbol(array, Decl(builtinIteratorReturn.ts, 0, 13)) + +declare const map: Map; +>map : Symbol(map, Decl(builtinIteratorReturn.ts, 1, 13)) +>Map : Symbol(Map, Decl(lib.es2015.collection.d.ts, --, --), Decl(lib.es2015.collection.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) + +declare const set: Set; +>set : Symbol(set, Decl(builtinIteratorReturn.ts, 2, 13)) +>Set : Symbol(Set, Decl(lib.es2015.collection.d.ts, --, --), Decl(lib.es2015.collection.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) + +const i0 = array[Symbol.iterator](); +>i0 : Symbol(i0, Decl(builtinIteratorReturn.ts, 4, 5)) +>array : Symbol(array, Decl(builtinIteratorReturn.ts, 0, 13)) +>Symbol.iterator : Symbol(SymbolConstructor.iterator, Decl(lib.es2015.iterable.d.ts, --, --)) +>Symbol : Symbol(Symbol, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2019.symbol.d.ts, --, --)) +>iterator : Symbol(SymbolConstructor.iterator, Decl(lib.es2015.iterable.d.ts, --, --)) + +const i1 = array.values(); +>i1 : Symbol(i1, Decl(builtinIteratorReturn.ts, 5, 5)) +>array.values : Symbol(Array.values, Decl(lib.es2015.iterable.d.ts, --, --)) +>array : Symbol(array, Decl(builtinIteratorReturn.ts, 0, 13)) +>values : Symbol(Array.values, Decl(lib.es2015.iterable.d.ts, --, --)) + +const i2 = array.keys(); +>i2 : Symbol(i2, Decl(builtinIteratorReturn.ts, 6, 5)) +>array.keys : Symbol(Array.keys, Decl(lib.es2015.iterable.d.ts, --, --)) +>array : Symbol(array, Decl(builtinIteratorReturn.ts, 0, 13)) +>keys : Symbol(Array.keys, Decl(lib.es2015.iterable.d.ts, --, --)) + +const i3 = array.entries(); +>i3 : Symbol(i3, Decl(builtinIteratorReturn.ts, 7, 5)) +>array.entries : Symbol(Array.entries, Decl(lib.es2015.iterable.d.ts, --, --)) +>array : Symbol(array, Decl(builtinIteratorReturn.ts, 0, 13)) +>entries : Symbol(Array.entries, Decl(lib.es2015.iterable.d.ts, --, --)) + +for (const x of array); +>x : Symbol(x, Decl(builtinIteratorReturn.ts, 8, 10)) +>array : Symbol(array, Decl(builtinIteratorReturn.ts, 0, 13)) + +const i4 = map[Symbol.iterator](); +>i4 : Symbol(i4, Decl(builtinIteratorReturn.ts, 10, 5)) +>map : Symbol(map, Decl(builtinIteratorReturn.ts, 1, 13)) +>Symbol.iterator : Symbol(SymbolConstructor.iterator, Decl(lib.es2015.iterable.d.ts, --, --)) +>Symbol : Symbol(Symbol, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2019.symbol.d.ts, --, --)) +>iterator : Symbol(SymbolConstructor.iterator, Decl(lib.es2015.iterable.d.ts, --, --)) + +const i5 = map.values(); +>i5 : Symbol(i5, Decl(builtinIteratorReturn.ts, 11, 5)) +>map.values : Symbol(Map.values, Decl(lib.es2015.iterable.d.ts, --, --)) +>map : Symbol(map, Decl(builtinIteratorReturn.ts, 1, 13)) +>values : Symbol(Map.values, Decl(lib.es2015.iterable.d.ts, --, --)) + +const i6 = map.keys(); +>i6 : Symbol(i6, Decl(builtinIteratorReturn.ts, 12, 5)) +>map.keys : Symbol(Map.keys, Decl(lib.es2015.iterable.d.ts, --, --)) +>map : Symbol(map, Decl(builtinIteratorReturn.ts, 1, 13)) +>keys : Symbol(Map.keys, Decl(lib.es2015.iterable.d.ts, --, --)) + +const i7 = map.entries(); +>i7 : Symbol(i7, Decl(builtinIteratorReturn.ts, 13, 5)) +>map.entries : Symbol(Map.entries, Decl(lib.es2015.iterable.d.ts, --, --)) +>map : Symbol(map, Decl(builtinIteratorReturn.ts, 1, 13)) +>entries : Symbol(Map.entries, Decl(lib.es2015.iterable.d.ts, --, --)) + +for (const x of map); +>x : Symbol(x, Decl(builtinIteratorReturn.ts, 14, 10)) +>map : Symbol(map, Decl(builtinIteratorReturn.ts, 1, 13)) + +const i8 = set[Symbol.iterator](); +>i8 : Symbol(i8, Decl(builtinIteratorReturn.ts, 16, 5)) +>set : Symbol(set, Decl(builtinIteratorReturn.ts, 2, 13)) +>Symbol.iterator : Symbol(SymbolConstructor.iterator, Decl(lib.es2015.iterable.d.ts, --, --)) +>Symbol : Symbol(Symbol, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2019.symbol.d.ts, --, --)) +>iterator : Symbol(SymbolConstructor.iterator, Decl(lib.es2015.iterable.d.ts, --, --)) + +const i9 = set.values(); +>i9 : Symbol(i9, Decl(builtinIteratorReturn.ts, 17, 5)) +>set.values : Symbol(Set.values, Decl(lib.es2015.iterable.d.ts, --, --)) +>set : Symbol(set, Decl(builtinIteratorReturn.ts, 2, 13)) +>values : Symbol(Set.values, Decl(lib.es2015.iterable.d.ts, --, --)) + +const i10 = set.keys(); +>i10 : Symbol(i10, Decl(builtinIteratorReturn.ts, 18, 5)) +>set.keys : Symbol(Set.keys, Decl(lib.es2015.iterable.d.ts, --, --)) +>set : Symbol(set, Decl(builtinIteratorReturn.ts, 2, 13)) +>keys : Symbol(Set.keys, Decl(lib.es2015.iterable.d.ts, --, --)) + +const i11 = set.entries(); +>i11 : Symbol(i11, Decl(builtinIteratorReturn.ts, 19, 5)) +>set.entries : Symbol(Set.entries, Decl(lib.es2015.iterable.d.ts, --, --)) +>set : Symbol(set, Decl(builtinIteratorReturn.ts, 2, 13)) +>entries : Symbol(Set.entries, Decl(lib.es2015.iterable.d.ts, --, --)) + +for (const x of set); +>x : Symbol(x, Decl(builtinIteratorReturn.ts, 20, 10)) +>set : Symbol(set, Decl(builtinIteratorReturn.ts, 2, 13)) + +declare const i12: IterableIterator; +>i12 : Symbol(i12, Decl(builtinIteratorReturn.ts, 22, 13)) +>IterableIterator : Symbol(IterableIterator, Decl(lib.es2015.iterable.d.ts, --, --)) + +declare const i13: IterableIterator; +>i13 : Symbol(i13, Decl(builtinIteratorReturn.ts, 23, 13)) +>IterableIterator : Symbol(IterableIterator, Decl(lib.es2015.iterable.d.ts, --, --)) + +declare const i14: IterableIterator; +>i14 : Symbol(i14, Decl(builtinIteratorReturn.ts, 24, 13)) +>IterableIterator : Symbol(IterableIterator, Decl(lib.es2015.iterable.d.ts, --, --)) + +declare const i15: Iterable; +>i15 : Symbol(i15, Decl(builtinIteratorReturn.ts, 25, 13)) +>Iterable : Symbol(Iterable, Decl(lib.es2015.iterable.d.ts, --, --)) + +declare const i16: Iterable; +>i16 : Symbol(i16, Decl(builtinIteratorReturn.ts, 26, 13)) +>Iterable : Symbol(Iterable, Decl(lib.es2015.iterable.d.ts, --, --)) + +declare const i17: Iterable; +>i17 : Symbol(i17, Decl(builtinIteratorReturn.ts, 27, 13)) +>Iterable : Symbol(Iterable, Decl(lib.es2015.iterable.d.ts, --, --)) + diff --git a/tests/baselines/reference/builtinIteratorReturn(nouncheckedindexedaccess=false).types b/tests/baselines/reference/builtinIteratorReturn(nouncheckedindexedaccess=false).types new file mode 100644 index 0000000000000..6c4cbb377a846 --- /dev/null +++ b/tests/baselines/reference/builtinIteratorReturn(nouncheckedindexedaccess=false).types @@ -0,0 +1,213 @@ +//// [tests/cases/conformance/types/typeAliases/builtinIteratorReturn.ts] //// + +=== builtinIteratorReturn.ts === +declare const array: number[]; +>array : number[] +> : ^^^^^^^^ + +declare const map: Map; +>map : Map +> : ^^^^^^^^^^^^^^^^^^^ + +declare const set: Set; +>set : Set +> : ^^^^^^^^^^^ + +const i0 = array[Symbol.iterator](); +>i0 : IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^ +>array[Symbol.iterator]() : IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^ +>array[Symbol.iterator] : () => IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>array : number[] +> : ^^^^^^^^ +>Symbol.iterator : unique symbol +> : ^^^^^^^^^^^^^ +>Symbol : SymbolConstructor +> : ^^^^^^^^^^^^^^^^^ +>iterator : unique symbol +> : ^^^^^^^^^^^^^ + +const i1 = array.values(); +>i1 : IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^ +>array.values() : IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^ +>array.values : () => IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>array : number[] +> : ^^^^^^^^ +>values : () => IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +const i2 = array.keys(); +>i2 : IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^ +>array.keys() : IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^ +>array.keys : () => IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>array : number[] +> : ^^^^^^^^ +>keys : () => IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +const i3 = array.entries(); +>i3 : IterableIterator<[number, number]> +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>array.entries() : IterableIterator<[number, number]> +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>array.entries : () => IterableIterator<[number, number]> +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>array : number[] +> : ^^^^^^^^ +>entries : () => IterableIterator<[number, number]> +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +for (const x of array); +>x : number +> : ^^^^^^ +>array : number[] +> : ^^^^^^^^ + +const i4 = map[Symbol.iterator](); +>i4 : IterableIterator<[string, number]> +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>map[Symbol.iterator]() : IterableIterator<[string, number]> +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>map[Symbol.iterator] : () => IterableIterator<[string, number]> +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>map : Map +> : ^^^^^^^^^^^^^^^^^^^ +>Symbol.iterator : unique symbol +> : ^^^^^^^^^^^^^ +>Symbol : SymbolConstructor +> : ^^^^^^^^^^^^^^^^^ +>iterator : unique symbol +> : ^^^^^^^^^^^^^ + +const i5 = map.values(); +>i5 : IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^ +>map.values() : IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^ +>map.values : () => IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>map : Map +> : ^^^^^^^^^^^^^^^^^^^ +>values : () => IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +const i6 = map.keys(); +>i6 : IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^ +>map.keys() : IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^ +>map.keys : () => IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>map : Map +> : ^^^^^^^^^^^^^^^^^^^ +>keys : () => IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +const i7 = map.entries(); +>i7 : IterableIterator<[string, number]> +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>map.entries() : IterableIterator<[string, number]> +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>map.entries : () => IterableIterator<[string, number]> +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>map : Map +> : ^^^^^^^^^^^^^^^^^^^ +>entries : () => IterableIterator<[string, number]> +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +for (const x of map); +>x : [string, number] +> : ^^^^^^^^^^^^^^^^ +>map : Map +> : ^^^^^^^^^^^^^^^^^^^ + +const i8 = set[Symbol.iterator](); +>i8 : IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^ +>set[Symbol.iterator]() : IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^ +>set[Symbol.iterator] : () => IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>set : Set +> : ^^^^^^^^^^^ +>Symbol.iterator : unique symbol +> : ^^^^^^^^^^^^^ +>Symbol : SymbolConstructor +> : ^^^^^^^^^^^^^^^^^ +>iterator : unique symbol +> : ^^^^^^^^^^^^^ + +const i9 = set.values(); +>i9 : IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^ +>set.values() : IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^ +>set.values : () => IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>set : Set +> : ^^^^^^^^^^^ +>values : () => IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +const i10 = set.keys(); +>i10 : IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^ +>set.keys() : IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^ +>set.keys : () => IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>set : Set +> : ^^^^^^^^^^^ +>keys : () => IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +const i11 = set.entries(); +>i11 : IterableIterator<[number, number]> +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>set.entries() : IterableIterator<[number, number]> +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>set.entries : () => IterableIterator<[number, number]> +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>set : Set +> : ^^^^^^^^^^^ +>entries : () => IterableIterator<[number, number]> +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +for (const x of set); +>x : number +> : ^^^^^^ +>set : Set +> : ^^^^^^^^^^^ + +declare const i12: IterableIterator; +>i12 : IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +declare const i13: IterableIterator; +>i13 : IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^ + +declare const i14: IterableIterator; +>i14 : IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +declare const i15: Iterable; +>i15 : Iterable +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +declare const i16: Iterable; +>i16 : Iterable +> : ^^^^^^^^^^^^^^^^ + +declare const i17: Iterable; +>i17 : Iterable +> : ^^^^^^^^^^^^^^^^^^^^^^^^^ + diff --git a/tests/baselines/reference/builtinIteratorReturn(nouncheckedindexedaccess=true).symbols b/tests/baselines/reference/builtinIteratorReturn(nouncheckedindexedaccess=true).symbols new file mode 100644 index 0000000000000..30883277c61a7 --- /dev/null +++ b/tests/baselines/reference/builtinIteratorReturn(nouncheckedindexedaccess=true).symbols @@ -0,0 +1,125 @@ +//// [tests/cases/conformance/types/typeAliases/builtinIteratorReturn.ts] //// + +=== builtinIteratorReturn.ts === +declare const array: number[]; +>array : Symbol(array, Decl(builtinIteratorReturn.ts, 0, 13)) + +declare const map: Map; +>map : Symbol(map, Decl(builtinIteratorReturn.ts, 1, 13)) +>Map : Symbol(Map, Decl(lib.es2015.collection.d.ts, --, --), Decl(lib.es2015.collection.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) + +declare const set: Set; +>set : Symbol(set, Decl(builtinIteratorReturn.ts, 2, 13)) +>Set : Symbol(Set, Decl(lib.es2015.collection.d.ts, --, --), Decl(lib.es2015.collection.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) + +const i0 = array[Symbol.iterator](); +>i0 : Symbol(i0, Decl(builtinIteratorReturn.ts, 4, 5)) +>array : Symbol(array, Decl(builtinIteratorReturn.ts, 0, 13)) +>Symbol.iterator : Symbol(SymbolConstructor.iterator, Decl(lib.es2015.iterable.d.ts, --, --)) +>Symbol : Symbol(Symbol, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2019.symbol.d.ts, --, --)) +>iterator : Symbol(SymbolConstructor.iterator, Decl(lib.es2015.iterable.d.ts, --, --)) + +const i1 = array.values(); +>i1 : Symbol(i1, Decl(builtinIteratorReturn.ts, 5, 5)) +>array.values : Symbol(Array.values, Decl(lib.es2015.iterable.d.ts, --, --)) +>array : Symbol(array, Decl(builtinIteratorReturn.ts, 0, 13)) +>values : Symbol(Array.values, Decl(lib.es2015.iterable.d.ts, --, --)) + +const i2 = array.keys(); +>i2 : Symbol(i2, Decl(builtinIteratorReturn.ts, 6, 5)) +>array.keys : Symbol(Array.keys, Decl(lib.es2015.iterable.d.ts, --, --)) +>array : Symbol(array, Decl(builtinIteratorReturn.ts, 0, 13)) +>keys : Symbol(Array.keys, Decl(lib.es2015.iterable.d.ts, --, --)) + +const i3 = array.entries(); +>i3 : Symbol(i3, Decl(builtinIteratorReturn.ts, 7, 5)) +>array.entries : Symbol(Array.entries, Decl(lib.es2015.iterable.d.ts, --, --)) +>array : Symbol(array, Decl(builtinIteratorReturn.ts, 0, 13)) +>entries : Symbol(Array.entries, Decl(lib.es2015.iterable.d.ts, --, --)) + +for (const x of array); +>x : Symbol(x, Decl(builtinIteratorReturn.ts, 8, 10)) +>array : Symbol(array, Decl(builtinIteratorReturn.ts, 0, 13)) + +const i4 = map[Symbol.iterator](); +>i4 : Symbol(i4, Decl(builtinIteratorReturn.ts, 10, 5)) +>map : Symbol(map, Decl(builtinIteratorReturn.ts, 1, 13)) +>Symbol.iterator : Symbol(SymbolConstructor.iterator, Decl(lib.es2015.iterable.d.ts, --, --)) +>Symbol : Symbol(Symbol, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2019.symbol.d.ts, --, --)) +>iterator : Symbol(SymbolConstructor.iterator, Decl(lib.es2015.iterable.d.ts, --, --)) + +const i5 = map.values(); +>i5 : Symbol(i5, Decl(builtinIteratorReturn.ts, 11, 5)) +>map.values : Symbol(Map.values, Decl(lib.es2015.iterable.d.ts, --, --)) +>map : Symbol(map, Decl(builtinIteratorReturn.ts, 1, 13)) +>values : Symbol(Map.values, Decl(lib.es2015.iterable.d.ts, --, --)) + +const i6 = map.keys(); +>i6 : Symbol(i6, Decl(builtinIteratorReturn.ts, 12, 5)) +>map.keys : Symbol(Map.keys, Decl(lib.es2015.iterable.d.ts, --, --)) +>map : Symbol(map, Decl(builtinIteratorReturn.ts, 1, 13)) +>keys : Symbol(Map.keys, Decl(lib.es2015.iterable.d.ts, --, --)) + +const i7 = map.entries(); +>i7 : Symbol(i7, Decl(builtinIteratorReturn.ts, 13, 5)) +>map.entries : Symbol(Map.entries, Decl(lib.es2015.iterable.d.ts, --, --)) +>map : Symbol(map, Decl(builtinIteratorReturn.ts, 1, 13)) +>entries : Symbol(Map.entries, Decl(lib.es2015.iterable.d.ts, --, --)) + +for (const x of map); +>x : Symbol(x, Decl(builtinIteratorReturn.ts, 14, 10)) +>map : Symbol(map, Decl(builtinIteratorReturn.ts, 1, 13)) + +const i8 = set[Symbol.iterator](); +>i8 : Symbol(i8, Decl(builtinIteratorReturn.ts, 16, 5)) +>set : Symbol(set, Decl(builtinIteratorReturn.ts, 2, 13)) +>Symbol.iterator : Symbol(SymbolConstructor.iterator, Decl(lib.es2015.iterable.d.ts, --, --)) +>Symbol : Symbol(Symbol, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2019.symbol.d.ts, --, --)) +>iterator : Symbol(SymbolConstructor.iterator, Decl(lib.es2015.iterable.d.ts, --, --)) + +const i9 = set.values(); +>i9 : Symbol(i9, Decl(builtinIteratorReturn.ts, 17, 5)) +>set.values : Symbol(Set.values, Decl(lib.es2015.iterable.d.ts, --, --)) +>set : Symbol(set, Decl(builtinIteratorReturn.ts, 2, 13)) +>values : Symbol(Set.values, Decl(lib.es2015.iterable.d.ts, --, --)) + +const i10 = set.keys(); +>i10 : Symbol(i10, Decl(builtinIteratorReturn.ts, 18, 5)) +>set.keys : Symbol(Set.keys, Decl(lib.es2015.iterable.d.ts, --, --)) +>set : Symbol(set, Decl(builtinIteratorReturn.ts, 2, 13)) +>keys : Symbol(Set.keys, Decl(lib.es2015.iterable.d.ts, --, --)) + +const i11 = set.entries(); +>i11 : Symbol(i11, Decl(builtinIteratorReturn.ts, 19, 5)) +>set.entries : Symbol(Set.entries, Decl(lib.es2015.iterable.d.ts, --, --)) +>set : Symbol(set, Decl(builtinIteratorReturn.ts, 2, 13)) +>entries : Symbol(Set.entries, Decl(lib.es2015.iterable.d.ts, --, --)) + +for (const x of set); +>x : Symbol(x, Decl(builtinIteratorReturn.ts, 20, 10)) +>set : Symbol(set, Decl(builtinIteratorReturn.ts, 2, 13)) + +declare const i12: IterableIterator; +>i12 : Symbol(i12, Decl(builtinIteratorReturn.ts, 22, 13)) +>IterableIterator : Symbol(IterableIterator, Decl(lib.es2015.iterable.d.ts, --, --)) + +declare const i13: IterableIterator; +>i13 : Symbol(i13, Decl(builtinIteratorReturn.ts, 23, 13)) +>IterableIterator : Symbol(IterableIterator, Decl(lib.es2015.iterable.d.ts, --, --)) + +declare const i14: IterableIterator; +>i14 : Symbol(i14, Decl(builtinIteratorReturn.ts, 24, 13)) +>IterableIterator : Symbol(IterableIterator, Decl(lib.es2015.iterable.d.ts, --, --)) + +declare const i15: Iterable; +>i15 : Symbol(i15, Decl(builtinIteratorReturn.ts, 25, 13)) +>Iterable : Symbol(Iterable, Decl(lib.es2015.iterable.d.ts, --, --)) + +declare const i16: Iterable; +>i16 : Symbol(i16, Decl(builtinIteratorReturn.ts, 26, 13)) +>Iterable : Symbol(Iterable, Decl(lib.es2015.iterable.d.ts, --, --)) + +declare const i17: Iterable; +>i17 : Symbol(i17, Decl(builtinIteratorReturn.ts, 27, 13)) +>Iterable : Symbol(Iterable, Decl(lib.es2015.iterable.d.ts, --, --)) + diff --git a/tests/baselines/reference/builtinIteratorReturn(nouncheckedindexedaccess=true).types b/tests/baselines/reference/builtinIteratorReturn(nouncheckedindexedaccess=true).types new file mode 100644 index 0000000000000..650323dae738f --- /dev/null +++ b/tests/baselines/reference/builtinIteratorReturn(nouncheckedindexedaccess=true).types @@ -0,0 +1,213 @@ +//// [tests/cases/conformance/types/typeAliases/builtinIteratorReturn.ts] //// + +=== builtinIteratorReturn.ts === +declare const array: number[]; +>array : number[] +> : ^^^^^^^^ + +declare const map: Map; +>map : Map +> : ^^^^^^^^^^^^^^^^^^^ + +declare const set: Set; +>set : Set +> : ^^^^^^^^^^^ + +const i0 = array[Symbol.iterator](); +>i0 : IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>array[Symbol.iterator]() : IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>array[Symbol.iterator] : () => IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>array : number[] +> : ^^^^^^^^ +>Symbol.iterator : unique symbol +> : ^^^^^^^^^^^^^ +>Symbol : SymbolConstructor +> : ^^^^^^^^^^^^^^^^^ +>iterator : unique symbol +> : ^^^^^^^^^^^^^ + +const i1 = array.values(); +>i1 : IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>array.values() : IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>array.values : () => IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>array : number[] +> : ^^^^^^^^ +>values : () => IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +const i2 = array.keys(); +>i2 : IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>array.keys() : IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>array.keys : () => IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>array : number[] +> : ^^^^^^^^ +>keys : () => IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +const i3 = array.entries(); +>i3 : IterableIterator<[number, number], undefined> +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>array.entries() : IterableIterator<[number, number], undefined> +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>array.entries : () => IterableIterator<[number, number], undefined> +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>array : number[] +> : ^^^^^^^^ +>entries : () => IterableIterator<[number, number], undefined> +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +for (const x of array); +>x : number +> : ^^^^^^ +>array : number[] +> : ^^^^^^^^ + +const i4 = map[Symbol.iterator](); +>i4 : IterableIterator<[string, number], undefined> +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>map[Symbol.iterator]() : IterableIterator<[string, number], undefined> +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>map[Symbol.iterator] : () => IterableIterator<[string, number], undefined> +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>map : Map +> : ^^^^^^^^^^^^^^^^^^^ +>Symbol.iterator : unique symbol +> : ^^^^^^^^^^^^^ +>Symbol : SymbolConstructor +> : ^^^^^^^^^^^^^^^^^ +>iterator : unique symbol +> : ^^^^^^^^^^^^^ + +const i5 = map.values(); +>i5 : IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>map.values() : IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>map.values : () => IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>map : Map +> : ^^^^^^^^^^^^^^^^^^^ +>values : () => IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +const i6 = map.keys(); +>i6 : IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>map.keys() : IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>map.keys : () => IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>map : Map +> : ^^^^^^^^^^^^^^^^^^^ +>keys : () => IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +const i7 = map.entries(); +>i7 : IterableIterator<[string, number], undefined> +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>map.entries() : IterableIterator<[string, number], undefined> +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>map.entries : () => IterableIterator<[string, number], undefined> +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>map : Map +> : ^^^^^^^^^^^^^^^^^^^ +>entries : () => IterableIterator<[string, number], undefined> +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +for (const x of map); +>x : [string, number] +> : ^^^^^^^^^^^^^^^^ +>map : Map +> : ^^^^^^^^^^^^^^^^^^^ + +const i8 = set[Symbol.iterator](); +>i8 : IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>set[Symbol.iterator]() : IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>set[Symbol.iterator] : () => IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>set : Set +> : ^^^^^^^^^^^ +>Symbol.iterator : unique symbol +> : ^^^^^^^^^^^^^ +>Symbol : SymbolConstructor +> : ^^^^^^^^^^^^^^^^^ +>iterator : unique symbol +> : ^^^^^^^^^^^^^ + +const i9 = set.values(); +>i9 : IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>set.values() : IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>set.values : () => IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>set : Set +> : ^^^^^^^^^^^ +>values : () => IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +const i10 = set.keys(); +>i10 : IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>set.keys() : IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>set.keys : () => IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>set : Set +> : ^^^^^^^^^^^ +>keys : () => IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +const i11 = set.entries(); +>i11 : IterableIterator<[number, number], undefined> +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>set.entries() : IterableIterator<[number, number], undefined> +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>set.entries : () => IterableIterator<[number, number], undefined> +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>set : Set +> : ^^^^^^^^^^^ +>entries : () => IterableIterator<[number, number], undefined> +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +for (const x of set); +>x : number +> : ^^^^^^ +>set : Set +> : ^^^^^^^^^^^ + +declare const i12: IterableIterator; +>i12 : IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +declare const i13: IterableIterator; +>i13 : IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^ + +declare const i14: IterableIterator; +>i14 : IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +declare const i15: Iterable; +>i15 : Iterable +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +declare const i16: Iterable; +>i16 : Iterable +> : ^^^^^^^^^^^^^^^^ + +declare const i17: Iterable; +>i17 : Iterable +> : ^^^^^^^^^^^^^^^^^^^^^^^^^ + diff --git a/tests/baselines/reference/destructuredLateBoundNameHasCorrectTypes.types b/tests/baselines/reference/destructuredLateBoundNameHasCorrectTypes.types index b9f191e554e6d..9c15d6b2b210d 100644 --- a/tests/baselines/reference/destructuredLateBoundNameHasCorrectTypes.types +++ b/tests/baselines/reference/destructuredLateBoundNameHasCorrectTypes.types @@ -8,16 +8,16 @@ let { [Symbol.iterator]: destructured } = []; > : ^^^^^^^^^^^^^^^^^ >iterator : unique symbol > : ^^^^^^^^^^^^^ ->destructured : () => IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>destructured : () => IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >[] : undefined[] > : ^^^^^^^^^^^ void destructured; >void destructured : undefined > : ^^^^^^^^^ ->destructured : () => IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>destructured : () => IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ const named = "prop"; >named : "prop" diff --git a/tests/baselines/reference/dissallowSymbolAsWeakType.errors.txt b/tests/baselines/reference/dissallowSymbolAsWeakType.errors.txt index d8ab56f26c568..67c78efa8cc8d 100644 --- a/tests/baselines/reference/dissallowSymbolAsWeakType.errors.txt +++ b/tests/baselines/reference/dissallowSymbolAsWeakType.errors.txt @@ -2,7 +2,7 @@ dissallowSymbolAsWeakType.ts(3,16): error TS2769: No overload matches this call. Overload 1 of 2, '(iterable: Iterable): WeakSet', gave the following error. Argument of type 'symbol[]' is not assignable to parameter of type 'Iterable'. The types returned by '[Symbol.iterator]().next(...)' are incompatible between these types. - Type 'IteratorResult' is not assignable to type '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'. Type 'symbol' is not assignable to type 'object'. @@ -15,7 +15,7 @@ dissallowSymbolAsWeakType.ts(8,16): error TS2769: No overload matches this call. Overload 1 of 2, '(iterable: Iterable): WeakMap', gave the following error. Argument of type '[symbol, false][]' is not assignable to parameter of type 'Iterable'. The types returned by '[Symbol.iterator]().next(...)' are incompatible between these types. - Type 'IteratorResult<[symbol, false], void>' is not assignable to type 'IteratorResult'. + Type 'IteratorResult<[symbol, false], any>' is not assignable to type 'IteratorResult'. Type 'IteratorYieldResult<[symbol, false]>' is not assignable to type 'IteratorResult'. Type 'IteratorYieldResult<[symbol, false]>' is not assignable to type 'IteratorYieldResult'. Type '[symbol, false]' is not assignable to type 'readonly [object, boolean]'. @@ -41,7 +41,7 @@ dissallowSymbolAsWeakType.ts(19,14): error TS2345: Argument of type 'symbol' is !!! error TS2769: Overload 1 of 2, '(iterable: Iterable): WeakSet', gave the following error. !!! error TS2769: Argument of type 'symbol[]' is not assignable to parameter of type 'Iterable'. !!! error TS2769: The types returned by '[Symbol.iterator]().next(...)' are incompatible between these types. -!!! error TS2769: Type 'IteratorResult' is not assignable to type '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'. !!! error TS2769: Type 'symbol' is not assignable to type 'object'. @@ -63,7 +63,7 @@ dissallowSymbolAsWeakType.ts(19,14): error TS2345: Argument of type 'symbol' is !!! error TS2769: Overload 1 of 2, '(iterable: Iterable): WeakMap', gave the following error. !!! error TS2769: Argument of type '[symbol, false][]' is not assignable to parameter of type 'Iterable'. !!! error TS2769: The types returned by '[Symbol.iterator]().next(...)' are incompatible between these types. -!!! error TS2769: Type 'IteratorResult<[symbol, false], void>' is not assignable to type 'IteratorResult'. +!!! error TS2769: Type 'IteratorResult<[symbol, false], any>' is not assignable to type 'IteratorResult'. !!! error TS2769: Type 'IteratorYieldResult<[symbol, false]>' is not assignable to type 'IteratorResult'. !!! error TS2769: Type 'IteratorYieldResult<[symbol, false]>' is not assignable to type 'IteratorYieldResult'. !!! error TS2769: Type '[symbol, false]' is not assignable to type 'readonly [object, boolean]'. diff --git a/tests/baselines/reference/emitter.asyncGenerators.classMethods.es2015.types b/tests/baselines/reference/emitter.asyncGenerators.classMethods.es2015.types index d2e9bcd53c9fb..21621981a4c79 100644 --- a/tests/baselines/reference/emitter.asyncGenerators.classMethods.es2015.types +++ b/tests/baselines/reference/emitter.asyncGenerators.classMethods.es2015.types @@ -50,10 +50,8 @@ class C4 { > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ const x = yield* [1]; ->x : void -> : ^^^^ ->yield* [1] : void -> : ^^^^ +>x : any +>yield* [1] : any >[1] : number[] > : ^^^^^^^^ >1 : 1 diff --git a/tests/baselines/reference/emitter.asyncGenerators.classMethods.es2018.types b/tests/baselines/reference/emitter.asyncGenerators.classMethods.es2018.types index bb5de18952ad4..01da6be08506f 100644 --- a/tests/baselines/reference/emitter.asyncGenerators.classMethods.es2018.types +++ b/tests/baselines/reference/emitter.asyncGenerators.classMethods.es2018.types @@ -50,10 +50,8 @@ class C4 { > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ const x = yield* [1]; ->x : void -> : ^^^^ ->yield* [1] : void -> : ^^^^ +>x : any +>yield* [1] : any >[1] : number[] > : ^^^^^^^^ >1 : 1 diff --git a/tests/baselines/reference/emitter.asyncGenerators.classMethods.es5.types b/tests/baselines/reference/emitter.asyncGenerators.classMethods.es5.types index bd682e17cbc45..b11c7c75fa475 100644 --- a/tests/baselines/reference/emitter.asyncGenerators.classMethods.es5.types +++ b/tests/baselines/reference/emitter.asyncGenerators.classMethods.es5.types @@ -50,10 +50,8 @@ class C4 { > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ const x = yield* [1]; ->x : void -> : ^^^^ ->yield* [1] : void -> : ^^^^ +>x : any +>yield* [1] : any >[1] : number[] > : ^^^^^^^^ >1 : 1 diff --git a/tests/baselines/reference/emitter.asyncGenerators.functionDeclarations.es2015.types b/tests/baselines/reference/emitter.asyncGenerators.functionDeclarations.es2015.types index 74348e6bea97b..d291bdc0cd056 100644 --- a/tests/baselines/reference/emitter.asyncGenerators.functionDeclarations.es2015.types +++ b/tests/baselines/reference/emitter.asyncGenerators.functionDeclarations.es2015.types @@ -31,10 +31,8 @@ async function * f4() { > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ const x = yield* [1]; ->x : void -> : ^^^^ ->yield* [1] : void -> : ^^^^ +>x : any +>yield* [1] : any >[1] : number[] > : ^^^^^^^^ >1 : 1 diff --git a/tests/baselines/reference/emitter.asyncGenerators.functionDeclarations.es2018.types b/tests/baselines/reference/emitter.asyncGenerators.functionDeclarations.es2018.types index 8dd3b7da2efcc..f737ba595effd 100644 --- a/tests/baselines/reference/emitter.asyncGenerators.functionDeclarations.es2018.types +++ b/tests/baselines/reference/emitter.asyncGenerators.functionDeclarations.es2018.types @@ -31,10 +31,8 @@ async function * f4() { > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ const x = yield* [1]; ->x : void -> : ^^^^ ->yield* [1] : void -> : ^^^^ +>x : any +>yield* [1] : any >[1] : number[] > : ^^^^^^^^ >1 : 1 diff --git a/tests/baselines/reference/emitter.asyncGenerators.functionDeclarations.es5.types b/tests/baselines/reference/emitter.asyncGenerators.functionDeclarations.es5.types index 59e3a1363a075..3489a92210c5e 100644 --- a/tests/baselines/reference/emitter.asyncGenerators.functionDeclarations.es5.types +++ b/tests/baselines/reference/emitter.asyncGenerators.functionDeclarations.es5.types @@ -31,10 +31,8 @@ async function * f4() { > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ const x = yield* [1]; ->x : void -> : ^^^^ ->yield* [1] : void -> : ^^^^ +>x : any +>yield* [1] : any >[1] : number[] > : ^^^^^^^^ >1 : 1 diff --git a/tests/baselines/reference/emitter.asyncGenerators.functionExpressions.es2015.types b/tests/baselines/reference/emitter.asyncGenerators.functionExpressions.es2015.types index 18041f5542f80..b3d8d1525c942 100644 --- a/tests/baselines/reference/emitter.asyncGenerators.functionExpressions.es2015.types +++ b/tests/baselines/reference/emitter.asyncGenerators.functionExpressions.es2015.types @@ -39,10 +39,8 @@ const f4 = async function * () { > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ const x = yield* [1]; ->x : void -> : ^^^^ ->yield* [1] : void -> : ^^^^ +>x : any +>yield* [1] : any >[1] : number[] > : ^^^^^^^^ >1 : 1 diff --git a/tests/baselines/reference/emitter.asyncGenerators.functionExpressions.es2018.types b/tests/baselines/reference/emitter.asyncGenerators.functionExpressions.es2018.types index 1a3215bb057c3..05ff8b2df1042 100644 --- a/tests/baselines/reference/emitter.asyncGenerators.functionExpressions.es2018.types +++ b/tests/baselines/reference/emitter.asyncGenerators.functionExpressions.es2018.types @@ -39,10 +39,8 @@ const f4 = async function * () { > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ const x = yield* [1]; ->x : void -> : ^^^^ ->yield* [1] : void -> : ^^^^ +>x : any +>yield* [1] : any >[1] : number[] > : ^^^^^^^^ >1 : 1 diff --git a/tests/baselines/reference/emitter.asyncGenerators.functionExpressions.es5.types b/tests/baselines/reference/emitter.asyncGenerators.functionExpressions.es5.types index 1d3b779a40d9d..ff2dc953caf2b 100644 --- a/tests/baselines/reference/emitter.asyncGenerators.functionExpressions.es5.types +++ b/tests/baselines/reference/emitter.asyncGenerators.functionExpressions.es5.types @@ -39,10 +39,8 @@ const f4 = async function * () { > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ const x = yield* [1]; ->x : void -> : ^^^^ ->yield* [1] : void -> : ^^^^ +>x : any +>yield* [1] : any >[1] : number[] > : ^^^^^^^^ >1 : 1 diff --git a/tests/baselines/reference/emitter.asyncGenerators.objectLiteralMethods.es2015.types b/tests/baselines/reference/emitter.asyncGenerators.objectLiteralMethods.es2015.types index d4b0bca526ca3..3aa61b810a254 100644 --- a/tests/baselines/reference/emitter.asyncGenerators.objectLiteralMethods.es2015.types +++ b/tests/baselines/reference/emitter.asyncGenerators.objectLiteralMethods.es2015.types @@ -58,10 +58,8 @@ const o4 = { > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ const x = yield* [1]; ->x : void -> : ^^^^ ->yield* [1] : void -> : ^^^^ +>x : any +>yield* [1] : any >[1] : number[] > : ^^^^^^^^ >1 : 1 diff --git a/tests/baselines/reference/emitter.asyncGenerators.objectLiteralMethods.es2018.types b/tests/baselines/reference/emitter.asyncGenerators.objectLiteralMethods.es2018.types index 7fe442f220302..91624582a4ecd 100644 --- a/tests/baselines/reference/emitter.asyncGenerators.objectLiteralMethods.es2018.types +++ b/tests/baselines/reference/emitter.asyncGenerators.objectLiteralMethods.es2018.types @@ -58,10 +58,8 @@ const o4 = { > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ const x = yield* [1]; ->x : void -> : ^^^^ ->yield* [1] : void -> : ^^^^ +>x : any +>yield* [1] : any >[1] : number[] > : ^^^^^^^^ >1 : 1 diff --git a/tests/baselines/reference/emitter.asyncGenerators.objectLiteralMethods.es5.types b/tests/baselines/reference/emitter.asyncGenerators.objectLiteralMethods.es5.types index 973fee35da0c8..3ffdf9a74569a 100644 --- a/tests/baselines/reference/emitter.asyncGenerators.objectLiteralMethods.es5.types +++ b/tests/baselines/reference/emitter.asyncGenerators.objectLiteralMethods.es5.types @@ -58,10 +58,8 @@ const o4 = { > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ const x = yield* [1]; ->x : void -> : ^^^^ ->yield* [1] : void -> : ^^^^ +>x : any +>yield* [1] : any >[1] : number[] > : ^^^^^^^^ >1 : 1 diff --git a/tests/baselines/reference/for-of12.types b/tests/baselines/reference/for-of12.types index 209e81ab54f40..24c0ba69b975a 100644 --- a/tests/baselines/reference/for-of12.types +++ b/tests/baselines/reference/for-of12.types @@ -8,16 +8,16 @@ var v: string; for (v of [0, ""].values()) { } >v : string > : ^^^^^^ ->[0, ""].values() : IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->[0, ""].values : () => IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>[0, ""].values() : IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>[0, ""].values : () => IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >[0, ""] : (string | number)[] > : ^^^^^^^^^^^^^^^^^^^ >0 : 0 > : ^ >"" : "" > : ^^ ->values : () => IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>values : () => IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/for-of13.types b/tests/baselines/reference/for-of13.types index 31b0d162e9c38..6bfdc1fe849eb 100644 --- a/tests/baselines/reference/for-of13.types +++ b/tests/baselines/reference/for-of13.types @@ -8,14 +8,14 @@ var v: string; for (v of [""].values()) { } >v : string > : ^^^^^^ ->[""].values() : IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->[""].values : () => IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>[""].values() : IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^ +>[""].values : () => IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >[""] : string[] > : ^^^^^^^^ >"" : "" > : ^^ ->values : () => IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>values : () => IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/for-of39.errors.txt b/tests/baselines/reference/for-of39.errors.txt index bb44b41b7090c..a59cb07da6bcc 100644 --- a/tests/baselines/reference/for-of39.errors.txt +++ b/tests/baselines/reference/for-of39.errors.txt @@ -2,7 +2,7 @@ for-of39.ts(1,15): error TS2769: No overload matches this call. Overload 1 of 4, '(iterable?: Iterable): Map', gave the following error. Argument of type '([string, number] | [string, true])[]' is not assignable to parameter of type 'Iterable'. The types returned by '[Symbol.iterator]().next(...)' are incompatible between these types. - Type 'IteratorResult<[string, number] | [string, true], void>' is not assignable to type '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'. Type '[string, number] | [string, true]' is not assignable to type 'readonly [string, boolean]'. @@ -20,7 +20,7 @@ for-of39.ts(1,15): error TS2769: No overload matches this call. !!! error TS2769: Overload 1 of 4, '(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: The types returned by '[Symbol.iterator]().next(...)' are incompatible between these types. -!!! error TS2769: Type 'IteratorResult<[string, number] | [string, true], void>' is not assignable to type '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'. !!! error TS2769: Type '[string, number] | [string, true]' is not assignable to type 'readonly [string, boolean]'. diff --git a/tests/baselines/reference/generatorReturnTypeInference.types b/tests/baselines/reference/generatorReturnTypeInference.types index 6604493beb592..58fe0716a12d8 100644 --- a/tests/baselines/reference/generatorReturnTypeInference.types +++ b/tests/baselines/reference/generatorReturnTypeInference.types @@ -44,8 +44,8 @@ function* g003() { // Generator > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ yield* []; ->yield* [] : void -> : ^^^^ +>yield* [] : any +> : ^^^ >[] : never[] > : ^^^^^^^ } diff --git a/tests/baselines/reference/generatorReturnTypeInferenceNonStrict.types b/tests/baselines/reference/generatorReturnTypeInferenceNonStrict.types index f84394bd8e085..ee7a5ba36000e 100644 --- a/tests/baselines/reference/generatorReturnTypeInferenceNonStrict.types +++ b/tests/baselines/reference/generatorReturnTypeInferenceNonStrict.types @@ -46,8 +46,8 @@ function* g003() { // Generator // NOTE: In strict mode, `[]` produces the type `never[]`. // In non-strict mode, `[]` produces the type `undefined[]` which is implicitly any. yield* []; ->yield* [] : void -> : ^^^^ +>yield* [] : any +> : ^^^ >[] : undefined[] > : ^^^^^^^^^^^ } diff --git a/tests/baselines/reference/generatorTypeCheck19.types b/tests/baselines/reference/generatorTypeCheck19.types index 5515f26f3562a..64f52e3d4438a 100644 --- a/tests/baselines/reference/generatorTypeCheck19.types +++ b/tests/baselines/reference/generatorTypeCheck19.types @@ -24,8 +24,7 @@ function* g(): IterableIterator { > : ^^^^^^^ yield * [new Bar]; ->yield * [new Bar] : void -> : ^^^^ +>yield * [new Bar] : any >[new Bar] : Bar[] > : ^^^^^ >new Bar : Bar diff --git a/tests/baselines/reference/generatorTypeCheck20.types b/tests/baselines/reference/generatorTypeCheck20.types index e4506eaa84aa5..eed1b80840a85 100644 --- a/tests/baselines/reference/generatorTypeCheck20.types +++ b/tests/baselines/reference/generatorTypeCheck20.types @@ -22,8 +22,8 @@ function* g(): IterableIterator { > : ^^^^^^^ yield * [new Baz]; ->yield * [new Baz] : void -> : ^^^^ +>yield * [new Baz] : any +> : ^^^ >[new Baz] : Baz[] > : ^^^^^ >new Baz : Baz diff --git a/tests/baselines/reference/generatorTypeCheck22.types b/tests/baselines/reference/generatorTypeCheck22.types index 5f0d1969ecf7d..3e05be0eaa5d9 100644 --- a/tests/baselines/reference/generatorTypeCheck22.types +++ b/tests/baselines/reference/generatorTypeCheck22.types @@ -43,8 +43,7 @@ function* g3() { > : ^^^^^^^^^^ yield *[new Bar]; ->yield *[new Bar] : void -> : ^^^^ +>yield *[new Bar] : any >[new Bar] : Bar[] > : ^^^^^ >new Bar : Bar @@ -53,8 +52,7 @@ function* g3() { > : ^^^^^^^^^^ yield *[new Baz]; ->yield *[new Baz] : void -> : ^^^^ +>yield *[new Baz] : any >[new Baz] : Baz[] > : ^^^^^ >new Baz : Baz diff --git a/tests/baselines/reference/generatorTypeCheck23.types b/tests/baselines/reference/generatorTypeCheck23.types index 78ac817e8a3cb..2fdf66a6e6976 100644 --- a/tests/baselines/reference/generatorTypeCheck23.types +++ b/tests/baselines/reference/generatorTypeCheck23.types @@ -50,8 +50,7 @@ function* g3() { > : ^^^^^^^^^^ yield *[new Bar]; ->yield *[new Bar] : void -> : ^^^^ +>yield *[new Bar] : any >[new Bar] : Bar[] > : ^^^^^ >new Bar : Bar @@ -60,8 +59,7 @@ function* g3() { > : ^^^^^^^^^^ yield *[new Baz]; ->yield *[new Baz] : void -> : ^^^^ +>yield *[new Baz] : any >[new Baz] : Baz[] > : ^^^^^ >new Baz : Baz diff --git a/tests/baselines/reference/generatorTypeCheck24.types b/tests/baselines/reference/generatorTypeCheck24.types index f5e7a3e0bb15d..13bfe853c6d4b 100644 --- a/tests/baselines/reference/generatorTypeCheck24.types +++ b/tests/baselines/reference/generatorTypeCheck24.types @@ -29,8 +29,7 @@ function* g3() { >yield : any yield * [new Foo]; ->yield * [new Foo] : void -> : ^^^^ +>yield * [new Foo] : any >[new Foo] : Foo[] > : ^^^^^ >new Foo : Foo @@ -53,8 +52,7 @@ function* g3() { > : ^^^^^^^^^^ yield *[new Bar]; ->yield *[new Bar] : void -> : ^^^^ +>yield *[new Bar] : any >[new Bar] : Bar[] > : ^^^^^ >new Bar : Bar @@ -63,8 +61,7 @@ function* g3() { > : ^^^^^^^^^^ yield *[new Baz]; ->yield *[new Baz] : void -> : ^^^^ +>yield *[new Baz] : any >[new Baz] : Baz[] > : ^^^^^ >new Baz : Baz diff --git a/tests/baselines/reference/generatorTypeCheck25.types b/tests/baselines/reference/generatorTypeCheck25.types index 6cd5bdd994c2f..846e48dd64922 100644 --- a/tests/baselines/reference/generatorTypeCheck25.types +++ b/tests/baselines/reference/generatorTypeCheck25.types @@ -48,8 +48,8 @@ var g3: () => Iterable = function* () { > : ^^^^^^^^^^ yield *[new Bar]; ->yield *[new Bar] : void -> : ^^^^ +>yield *[new Bar] : any +> : ^^^ >[new Bar] : Bar[] > : ^^^^^ >new Bar : Bar @@ -58,8 +58,8 @@ var g3: () => Iterable = function* () { > : ^^^^^^^^^^ yield *[new Baz]; ->yield *[new Baz] : void -> : ^^^^ +>yield *[new Baz] : any +> : ^^^ >[new Baz] : Baz[] > : ^^^^^ >new Baz : Baz diff --git a/tests/baselines/reference/generatorTypeCheck26.types b/tests/baselines/reference/generatorTypeCheck26.types index 56094ff72e7d2..dc96bd5c8db2b 100644 --- a/tests/baselines/reference/generatorTypeCheck26.types +++ b/tests/baselines/reference/generatorTypeCheck26.types @@ -24,8 +24,7 @@ function* g(): IterableIterator<(x: string) => number, (x: string) => number> { > : ^^^^^^ yield *[x => x.length]; ->yield *[x => x.length] : void -> : ^^^^ +>yield *[x => x.length] : any >[x => x.length] : ((x: string) => number)[] > : ^^ ^^^^^^^^^^^^^^^^^^^^^^ >x => x.length : (x: string) => number diff --git a/tests/baselines/reference/generatorTypeCheck53.types b/tests/baselines/reference/generatorTypeCheck53.types index 30d51dfd889fa..96cfa3ff36c4a 100644 --- a/tests/baselines/reference/generatorTypeCheck53.types +++ b/tests/baselines/reference/generatorTypeCheck53.types @@ -25,8 +25,7 @@ function* g() { > : ^^^^^^^^^^ yield* [new Baz]; ->yield* [new Baz] : void -> : ^^^^ +>yield* [new Baz] : any >[new Baz] : Baz[] > : ^^^^^ >new Baz : Baz diff --git a/tests/baselines/reference/generatorTypeCheck54.types b/tests/baselines/reference/generatorTypeCheck54.types index 10510fd72e5d2..fc37b2ba451f0 100644 --- a/tests/baselines/reference/generatorTypeCheck54.types +++ b/tests/baselines/reference/generatorTypeCheck54.types @@ -18,8 +18,7 @@ function* g() { > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ yield* [new Foo]; ->yield* [new Foo] : void -> : ^^^^ +>yield* [new Foo] : any >[new Foo] : Foo[] > : ^^^^^ >new Foo : Foo @@ -28,8 +27,7 @@ function* g() { > : ^^^^^^^^^^ yield* [new Baz]; ->yield* [new Baz] : void -> : ^^^^ +>yield* [new Baz] : any >[new Baz] : Baz[] > : ^^^^^ >new Baz : Baz diff --git a/tests/baselines/reference/importHelpersNoHelpersForAsyncGenerators.types b/tests/baselines/reference/importHelpersNoHelpersForAsyncGenerators.types index 3173ffaf42ad0..9d221f738586b 100644 --- a/tests/baselines/reference/importHelpersNoHelpersForAsyncGenerators.types +++ b/tests/baselines/reference/importHelpersNoHelpersForAsyncGenerators.types @@ -18,8 +18,8 @@ export async function * f() { > : ^ yield* [3]; ->yield* [3] : void -> : ^^^^ +>yield* [3] : any +> : ^^^ >[3] : number[] > : ^^^^^^^^ >3 : 3 diff --git a/tests/baselines/reference/indirectGlobalSymbolPartOfObjectType.types b/tests/baselines/reference/indirectGlobalSymbolPartOfObjectType.types index fd82d51021cd5..6003f038d368e 100644 --- a/tests/baselines/reference/indirectGlobalSymbolPartOfObjectType.types +++ b/tests/baselines/reference/indirectGlobalSymbolPartOfObjectType.types @@ -13,8 +13,8 @@ const Symbol = globalThis.Symbol; > : ^^^^^^^^^^^^^^^^^ [][Symbol.iterator]; ->[][Symbol.iterator] : () => IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>[][Symbol.iterator] : () => IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >[] : undefined[] > : ^^^^^^^^^^^ >Symbol.iterator : unique symbol diff --git a/tests/baselines/reference/iterableArrayPattern28.errors.txt b/tests/baselines/reference/iterableArrayPattern28.errors.txt index b68c49d630425..2949a043fed86 100644 --- a/tests/baselines/reference/iterableArrayPattern28.errors.txt +++ b/tests/baselines/reference/iterableArrayPattern28.errors.txt @@ -2,7 +2,7 @@ iterableArrayPattern28.ts(2,28): error TS2769: No overload matches this call. Overload 1 of 4, '(iterable?: Iterable): Map', gave the following error. Argument of type '([string, number] | [string, boolean])[]' is not assignable to parameter of type 'Iterable'. The types returned by '[Symbol.iterator]().next(...)' are incompatible between these types. - Type 'IteratorResult<[string, number] | [string, boolean], void>' is not assignable to type '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'. Type '[string, number] | [string, boolean]' is not assignable to type 'readonly [string, number]'. @@ -21,7 +21,7 @@ iterableArrayPattern28.ts(2,28): error TS2769: No overload matches this call. !!! error TS2769: Overload 1 of 4, '(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: The types returned by '[Symbol.iterator]().next(...)' are incompatible between these types. -!!! error TS2769: Type 'IteratorResult<[string, number] | [string, boolean], void>' is not assignable to type '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'. !!! error TS2769: Type '[string, number] | [string, boolean]' is not assignable to type 'readonly [string, number]'. diff --git a/tests/baselines/reference/mappedTypeWithAsClauseAndLateBoundProperty.errors.txt b/tests/baselines/reference/mappedTypeWithAsClauseAndLateBoundProperty.errors.txt index 8c6d077685f2e..380aa151c2c22 100644 --- a/tests/baselines/reference/mappedTypeWithAsClauseAndLateBoundProperty.errors.txt +++ b/tests/baselines/reference/mappedTypeWithAsClauseAndLateBoundProperty.errors.txt @@ -1,4 +1,4 @@ -mappedTypeWithAsClauseAndLateBoundProperty.ts(3,1): error TS2741: Property 'length' is missing in type '{ [x: number]: number; toString: () => string; toLocaleString: { (): string; (locales: string | string[], options?: NumberFormatOptions & DateTimeFormatOptions): string; }; pop: () => number; push: (...items: number[]) => number; concat: { (...items: ConcatArray[]): number[]; (...items: (number | ConcatArray)[]): number[]; }; join: (separator?: string) => string; reverse: () => number[]; shift: () => number; slice: (start?: number, end?: number) => number[]; sort: (compareFn?: (a: number, b: number) => number) => number[]; splice: { (start: number, deleteCount?: number): number[]; (start: number, deleteCount: number, ...items: number[]): number[]; }; unshift: (...items: number[]) => number; indexOf: (searchElement: number, fromIndex?: number) => number; lastIndexOf: (searchElement: number, fromIndex?: number) => number; every: { (predicate: (value: number, index: number, array: number[]) => value is S, thisArg?: any): this is S[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): boolean; }; some: (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any) => boolean; forEach: (callbackfn: (value: number, index: number, array: number[]) => void, thisArg?: any) => void; map: (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[]; filter: { (predicate: (value: number, index: number, array: number[]) => value is S, thisArg?: any): S[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): number[]; }; reduce: { (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number): number; (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number, initialValue: number): number; (callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: number[]) => U, initialValue: U): U; }; reduceRight: { (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number): number; (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number, initialValue: number): number; (callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: number[]) => U, initialValue: U): U; }; find: { (predicate: (value: number, index: number, obj: number[]) => value is S, thisArg?: any): S; (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any): number; }; findIndex: (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any) => number; fill: (value: number, start?: number, end?: number) => number[]; copyWithin: (target: number, start: number, end?: number) => number[]; entries: () => IterableIterator<[number, number], void>; keys: () => IterableIterator; values: () => IterableIterator; includes: (searchElement: number, fromIndex?: number) => boolean; flatMap: (callback: (this: This, value: number, index: number, array: number[]) => U | readonly U[], thisArg?: This) => U[]; flat: (this: A, depth?: D) => FlatArray[]; [Symbol.iterator]: () => IterableIterator; readonly [Symbol.unscopables]: { [x: number]: boolean; length?: boolean; toString?: boolean; toLocaleString?: boolean; pop?: boolean; push?: boolean; concat?: boolean; join?: boolean; reverse?: boolean; shift?: boolean; slice?: boolean; sort?: boolean; splice?: boolean; unshift?: boolean; indexOf?: boolean; lastIndexOf?: boolean; every?: boolean; some?: boolean; forEach?: boolean; map?: boolean; filter?: boolean; reduce?: boolean; reduceRight?: boolean; find?: boolean; findIndex?: boolean; fill?: boolean; copyWithin?: boolean; entries?: boolean; keys?: boolean; values?: boolean; includes?: boolean; flatMap?: boolean; flat?: boolean; [Symbol.iterator]?: boolean; readonly [Symbol.unscopables]?: boolean; }; }' but required in type 'number[]'. +mappedTypeWithAsClauseAndLateBoundProperty.ts(3,1): error TS2741: Property 'length' is missing in type '{ [x: number]: number; toString: () => string; toLocaleString: { (): string; (locales: string | string[], options?: NumberFormatOptions & DateTimeFormatOptions): string; }; pop: () => number; push: (...items: number[]) => number; concat: { (...items: ConcatArray[]): number[]; (...items: (number | ConcatArray)[]): number[]; }; join: (separator?: string) => string; reverse: () => number[]; shift: () => number; slice: (start?: number, end?: number) => number[]; sort: (compareFn?: (a: number, b: number) => number) => number[]; splice: { (start: number, deleteCount?: number): number[]; (start: number, deleteCount: number, ...items: number[]): number[]; }; unshift: (...items: number[]) => number; indexOf: (searchElement: number, fromIndex?: number) => number; lastIndexOf: (searchElement: number, fromIndex?: number) => number; every: { (predicate: (value: number, index: number, array: number[]) => value is S, thisArg?: any): this is S[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): boolean; }; some: (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any) => boolean; forEach: (callbackfn: (value: number, index: number, array: number[]) => void, thisArg?: any) => void; map: (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[]; filter: { (predicate: (value: number, index: number, array: number[]) => value is S, thisArg?: any): S[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): number[]; }; reduce: { (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number): number; (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number, initialValue: number): number; (callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: number[]) => U, initialValue: U): U; }; reduceRight: { (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number): number; (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number, initialValue: number): number; (callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: number[]) => U, initialValue: U): U; }; find: { (predicate: (value: number, index: number, obj: number[]) => value is S, thisArg?: any): S; (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any): number; }; findIndex: (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any) => number; fill: (value: number, start?: number, end?: number) => number[]; copyWithin: (target: number, start: number, end?: number) => number[]; entries: () => IterableIterator<[number, number]>; keys: () => IterableIterator; values: () => IterableIterator; includes: (searchElement: number, fromIndex?: number) => boolean; flatMap: (callback: (this: This, value: number, index: number, array: number[]) => U | readonly U[], thisArg?: This) => U[]; flat: (this: A, depth?: D) => FlatArray[]; [Symbol.iterator]: () => IterableIterator; readonly [Symbol.unscopables]: { [x: number]: boolean; length?: boolean; toString?: boolean; toLocaleString?: boolean; pop?: boolean; push?: boolean; concat?: boolean; join?: boolean; reverse?: boolean; shift?: boolean; slice?: boolean; sort?: boolean; splice?: boolean; unshift?: boolean; indexOf?: boolean; lastIndexOf?: boolean; every?: boolean; some?: boolean; forEach?: boolean; map?: boolean; filter?: boolean; reduce?: boolean; reduceRight?: boolean; find?: boolean; findIndex?: boolean; fill?: boolean; copyWithin?: boolean; entries?: boolean; keys?: boolean; values?: boolean; includes?: boolean; flatMap?: boolean; flat?: boolean; [Symbol.iterator]?: boolean; readonly [Symbol.unscopables]?: boolean; }; }' but required in type 'number[]'. ==== mappedTypeWithAsClauseAndLateBoundProperty.ts (1 errors) ==== @@ -6,6 +6,6 @@ mappedTypeWithAsClauseAndLateBoundProperty.ts(3,1): error TS2741: Property 'leng declare let src2: { [K in keyof number[] as Exclude]: (number[])[K] }; tgt2 = src2; // Should error ~~~~ -!!! error TS2741: Property 'length' is missing in type '{ [x: number]: number; toString: () => string; toLocaleString: { (): string; (locales: string | string[], options?: NumberFormatOptions & DateTimeFormatOptions): string; }; pop: () => number; push: (...items: number[]) => number; concat: { (...items: ConcatArray[]): number[]; (...items: (number | ConcatArray)[]): number[]; }; join: (separator?: string) => string; reverse: () => number[]; shift: () => number; slice: (start?: number, end?: number) => number[]; sort: (compareFn?: (a: number, b: number) => number) => number[]; splice: { (start: number, deleteCount?: number): number[]; (start: number, deleteCount: number, ...items: number[]): number[]; }; unshift: (...items: number[]) => number; indexOf: (searchElement: number, fromIndex?: number) => number; lastIndexOf: (searchElement: number, fromIndex?: number) => number; every: { (predicate: (value: number, index: number, array: number[]) => value is S, thisArg?: any): this is S[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): boolean; }; some: (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any) => boolean; forEach: (callbackfn: (value: number, index: number, array: number[]) => void, thisArg?: any) => void; map: (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[]; filter: { (predicate: (value: number, index: number, array: number[]) => value is S, thisArg?: any): S[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): number[]; }; reduce: { (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number): number; (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number, initialValue: number): number; (callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: number[]) => U, initialValue: U): U; }; reduceRight: { (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number): number; (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number, initialValue: number): number; (callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: number[]) => U, initialValue: U): U; }; find: { (predicate: (value: number, index: number, obj: number[]) => value is S, thisArg?: any): S; (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any): number; }; findIndex: (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any) => number; fill: (value: number, start?: number, end?: number) => number[]; copyWithin: (target: number, start: number, end?: number) => number[]; entries: () => IterableIterator<[number, number], void>; keys: () => IterableIterator; values: () => IterableIterator; includes: (searchElement: number, fromIndex?: number) => boolean; flatMap: (callback: (this: This, value: number, index: number, array: number[]) => U | readonly U[], thisArg?: This) => U[]; flat: (this: A, depth?: D) => FlatArray[]; [Symbol.iterator]: () => IterableIterator; readonly [Symbol.unscopables]: { [x: number]: boolean; length?: boolean; toString?: boolean; toLocaleString?: boolean; pop?: boolean; push?: boolean; concat?: boolean; join?: boolean; reverse?: boolean; shift?: boolean; slice?: boolean; sort?: boolean; splice?: boolean; unshift?: boolean; indexOf?: boolean; lastIndexOf?: boolean; every?: boolean; some?: boolean; forEach?: boolean; map?: boolean; filter?: boolean; reduce?: boolean; reduceRight?: boolean; find?: boolean; findIndex?: boolean; fill?: boolean; copyWithin?: boolean; entries?: boolean; keys?: boolean; values?: boolean; includes?: boolean; flatMap?: boolean; flat?: boolean; [Symbol.iterator]?: boolean; readonly [Symbol.unscopables]?: boolean; }; }' but required in type 'number[]'. +!!! error TS2741: Property 'length' is missing in type '{ [x: number]: number; toString: () => string; toLocaleString: { (): string; (locales: string | string[], options?: NumberFormatOptions & DateTimeFormatOptions): string; }; pop: () => number; push: (...items: number[]) => number; concat: { (...items: ConcatArray[]): number[]; (...items: (number | ConcatArray)[]): number[]; }; join: (separator?: string) => string; reverse: () => number[]; shift: () => number; slice: (start?: number, end?: number) => number[]; sort: (compareFn?: (a: number, b: number) => number) => number[]; splice: { (start: number, deleteCount?: number): number[]; (start: number, deleteCount: number, ...items: number[]): number[]; }; unshift: (...items: number[]) => number; indexOf: (searchElement: number, fromIndex?: number) => number; lastIndexOf: (searchElement: number, fromIndex?: number) => number; every: { (predicate: (value: number, index: number, array: number[]) => value is S, thisArg?: any): this is S[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): boolean; }; some: (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any) => boolean; forEach: (callbackfn: (value: number, index: number, array: number[]) => void, thisArg?: any) => void; map: (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[]; filter: { (predicate: (value: number, index: number, array: number[]) => value is S, thisArg?: any): S[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): number[]; }; reduce: { (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number): number; (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number, initialValue: number): number; (callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: number[]) => U, initialValue: U): U; }; reduceRight: { (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number): number; (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number, initialValue: number): number; (callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: number[]) => U, initialValue: U): U; }; find: { (predicate: (value: number, index: number, obj: number[]) => value is S, thisArg?: any): S; (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any): number; }; findIndex: (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any) => number; fill: (value: number, start?: number, end?: number) => number[]; copyWithin: (target: number, start: number, end?: number) => number[]; entries: () => IterableIterator<[number, number]>; keys: () => IterableIterator; values: () => IterableIterator; includes: (searchElement: number, fromIndex?: number) => boolean; flatMap: (callback: (this: This, value: number, index: number, array: number[]) => U | readonly U[], thisArg?: This) => U[]; flat: (this: A, depth?: D) => FlatArray[]; [Symbol.iterator]: () => IterableIterator; readonly [Symbol.unscopables]: { [x: number]: boolean; length?: boolean; toString?: boolean; toLocaleString?: boolean; pop?: boolean; push?: boolean; concat?: boolean; join?: boolean; reverse?: boolean; shift?: boolean; slice?: boolean; sort?: boolean; splice?: boolean; unshift?: boolean; indexOf?: boolean; lastIndexOf?: boolean; every?: boolean; some?: boolean; forEach?: boolean; map?: boolean; filter?: boolean; reduce?: boolean; reduceRight?: boolean; find?: boolean; findIndex?: boolean; fill?: boolean; copyWithin?: boolean; entries?: boolean; keys?: boolean; values?: boolean; includes?: boolean; flatMap?: boolean; flat?: boolean; [Symbol.iterator]?: boolean; readonly [Symbol.unscopables]?: boolean; }; }' but required in type 'number[]'. !!! related TS2728 lib.es5.d.ts:--:--: 'length' is declared here. \ No newline at end of file diff --git a/tests/baselines/reference/mappedTypeWithAsClauseAndLateBoundProperty.types b/tests/baselines/reference/mappedTypeWithAsClauseAndLateBoundProperty.types index 413cc6a8becee..263f5212c5853 100644 --- a/tests/baselines/reference/mappedTypeWithAsClauseAndLateBoundProperty.types +++ b/tests/baselines/reference/mappedTypeWithAsClauseAndLateBoundProperty.types @@ -6,14 +6,14 @@ declare let tgt2: number[]; > : ^^^^^^^^ declare let src2: { [K in keyof number[] as Exclude]: (number[])[K] }; ->src2 : { [x: number]: number; toString: () => string; toLocaleString: { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; }; pop: () => number; push: (...items: number[]) => number; concat: { (...items: ConcatArray[]): number[]; (...items: (number | ConcatArray)[]): number[]; }; join: (separator?: string) => string; reverse: () => number[]; shift: () => number; slice: (start?: number, end?: number) => number[]; sort: (compareFn?: (a: number, b: number) => number) => number[]; splice: { (start: number, deleteCount?: number): number[]; (start: number, deleteCount: number, ...items: number[]): number[]; }; unshift: (...items: number[]) => number; indexOf: (searchElement: number, fromIndex?: number) => number; lastIndexOf: (searchElement: number, fromIndex?: number) => number; every: { (predicate: (value: number, index: number, array: number[]) => value is S, thisArg?: any): this is S[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): boolean; }; some: (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any) => boolean; forEach: (callbackfn: (value: number, index: number, array: number[]) => void, thisArg?: any) => void; map: (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[]; filter: { (predicate: (value: number, index: number, array: number[]) => value is S_1, thisArg?: any): S_1[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): number[]; }; reduce: { (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number): number; (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number, initialValue: number): number; (callbackfn: (previousValue: U_1, currentValue: number, currentIndex: number, array: number[]) => U_1, initialValue: U_1): U_1; }; reduceRight: { (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number): number; (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number, initialValue: number): number; (callbackfn: (previousValue: U_2, currentValue: number, currentIndex: number, array: number[]) => U_2, initialValue: U_2): U_2; }; find: { (predicate: (value: number, index: number, obj: number[]) => value is S_2, thisArg?: any): S_2; (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any): number; }; findIndex: (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any) => number; fill: (value: number, start?: number, end?: number) => number[]; copyWithin: (target: number, start: number, end?: number) => number[]; entries: () => IterableIterator<[number, number], void>; keys: () => IterableIterator; values: () => IterableIterator; includes: (searchElement: number, fromIndex?: number) => boolean; flatMap: (callback: (this: This, value: number, index: number, array: number[]) => U_3 | readonly U_3[], thisArg?: This) => U_3[]; flat: (this: A, depth?: D) => FlatArray[]; [Symbol.iterator]: () => IterableIterator; readonly [Symbol.unscopables]: { [x: number]: boolean; length?: boolean; toString?: boolean; toLocaleString?: boolean; pop?: boolean; push?: boolean; concat?: boolean; join?: boolean; reverse?: boolean; shift?: boolean; slice?: boolean; sort?: boolean; splice?: boolean; unshift?: boolean; indexOf?: boolean; lastIndexOf?: boolean; every?: boolean; some?: boolean; forEach?: boolean; map?: boolean; filter?: boolean; reduce?: boolean; reduceRight?: boolean; find?: boolean; findIndex?: boolean; fill?: boolean; copyWithin?: boolean; entries?: boolean; keys?: boolean; values?: boolean; includes?: boolean; flatMap?: boolean; flat?: boolean; [Symbol.iterator]?: boolean; readonly [Symbol.unscopables]?: boolean; }; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>src2 : { [x: number]: number; toString: () => string; toLocaleString: { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; }; pop: () => number; push: (...items: number[]) => number; concat: { (...items: ConcatArray[]): number[]; (...items: (number | ConcatArray)[]): number[]; }; join: (separator?: string) => string; reverse: () => number[]; shift: () => number; slice: (start?: number, end?: number) => number[]; sort: (compareFn?: (a: number, b: number) => number) => number[]; splice: { (start: number, deleteCount?: number): number[]; (start: number, deleteCount: number, ...items: number[]): number[]; }; unshift: (...items: number[]) => number; indexOf: (searchElement: number, fromIndex?: number) => number; lastIndexOf: (searchElement: number, fromIndex?: number) => number; every: { (predicate: (value: number, index: number, array: number[]) => value is S, thisArg?: any): this is S[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): boolean; }; some: (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any) => boolean; forEach: (callbackfn: (value: number, index: number, array: number[]) => void, thisArg?: any) => void; map: (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[]; filter: { (predicate: (value: number, index: number, array: number[]) => value is S_1, thisArg?: any): S_1[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): number[]; }; reduce: { (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number): number; (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number, initialValue: number): number; (callbackfn: (previousValue: U_1, currentValue: number, currentIndex: number, array: number[]) => U_1, initialValue: U_1): U_1; }; reduceRight: { (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number): number; (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number, initialValue: number): number; (callbackfn: (previousValue: U_2, currentValue: number, currentIndex: number, array: number[]) => U_2, initialValue: U_2): U_2; }; find: { (predicate: (value: number, index: number, obj: number[]) => value is S_2, thisArg?: any): S_2; (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any): number; }; findIndex: (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any) => number; fill: (value: number, start?: number, end?: number) => number[]; copyWithin: (target: number, start: number, end?: number) => number[]; entries: () => IterableIterator<[number, number]>; keys: () => IterableIterator; values: () => IterableIterator; includes: (searchElement: number, fromIndex?: number) => boolean; flatMap: (callback: (this: This, value: number, index: number, array: number[]) => U_3 | readonly U_3[], thisArg?: This) => U_3[]; flat: (this: A, depth?: D) => FlatArray[]; [Symbol.iterator]: () => IterableIterator; readonly [Symbol.unscopables]: { [x: number]: boolean; length?: boolean; toString?: boolean; toLocaleString?: boolean; pop?: boolean; push?: boolean; concat?: boolean; join?: boolean; reverse?: boolean; shift?: boolean; slice?: boolean; sort?: boolean; splice?: boolean; unshift?: boolean; indexOf?: boolean; lastIndexOf?: boolean; every?: boolean; some?: boolean; forEach?: boolean; map?: boolean; filter?: boolean; reduce?: boolean; reduceRight?: boolean; find?: boolean; findIndex?: boolean; fill?: boolean; copyWithin?: boolean; entries?: boolean; keys?: boolean; values?: boolean; includes?: boolean; flatMap?: boolean; flat?: boolean; [Symbol.iterator]?: boolean; readonly [Symbol.unscopables]?: boolean; }; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ tgt2 = src2; // Should error ->tgt2 = src2 : { [x: number]: number; toString: () => string; toLocaleString: { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; }; pop: () => number; push: (...items: number[]) => number; concat: { (...items: ConcatArray[]): number[]; (...items: (number | ConcatArray)[]): number[]; }; join: (separator?: string) => string; reverse: () => number[]; shift: () => number; slice: (start?: number, end?: number) => number[]; sort: (compareFn?: (a: number, b: number) => number) => number[]; splice: { (start: number, deleteCount?: number): number[]; (start: number, deleteCount: number, ...items: number[]): number[]; }; unshift: (...items: number[]) => number; indexOf: (searchElement: number, fromIndex?: number) => number; lastIndexOf: (searchElement: number, fromIndex?: number) => number; every: { (predicate: (value: number, index: number, array: number[]) => value is S, thisArg?: any): this is S[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): boolean; }; some: (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any) => boolean; forEach: (callbackfn: (value: number, index: number, array: number[]) => void, thisArg?: any) => void; map: (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[]; filter: { (predicate: (value: number, index: number, array: number[]) => value is S_1, thisArg?: any): S_1[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): number[]; }; reduce: { (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number): number; (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number, initialValue: number): number; (callbackfn: (previousValue: U_1, currentValue: number, currentIndex: number, array: number[]) => U_1, initialValue: U_1): U_1; }; reduceRight: { (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number): number; (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number, initialValue: number): number; (callbackfn: (previousValue: U_2, currentValue: number, currentIndex: number, array: number[]) => U_2, initialValue: U_2): U_2; }; find: { (predicate: (value: number, index: number, obj: number[]) => value is S_2, thisArg?: any): S_2; (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any): number; }; findIndex: (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any) => number; fill: (value: number, start?: number, end?: number) => number[]; copyWithin: (target: number, start: number, end?: number) => number[]; entries: () => IterableIterator<[number, number], void>; keys: () => IterableIterator; values: () => IterableIterator; includes: (searchElement: number, fromIndex?: number) => boolean; flatMap: (callback: (this: This, value: number, index: number, array: number[]) => U_3 | readonly U_3[], thisArg?: This) => U_3[]; flat: (this: A, depth?: D) => FlatArray[]; [Symbol.iterator]: () => IterableIterator; readonly [Symbol.unscopables]: { [x: number]: boolean; length?: boolean; toString?: boolean; toLocaleString?: boolean; pop?: boolean; push?: boolean; concat?: boolean; join?: boolean; reverse?: boolean; shift?: boolean; slice?: boolean; sort?: boolean; splice?: boolean; unshift?: boolean; indexOf?: boolean; lastIndexOf?: boolean; every?: boolean; some?: boolean; forEach?: boolean; map?: boolean; filter?: boolean; reduce?: boolean; reduceRight?: boolean; find?: boolean; findIndex?: boolean; fill?: boolean; copyWithin?: boolean; entries?: boolean; keys?: boolean; values?: boolean; includes?: boolean; flatMap?: boolean; flat?: boolean; [Symbol.iterator]?: boolean; readonly [Symbol.unscopables]?: boolean; }; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>tgt2 = src2 : { [x: number]: number; toString: () => string; toLocaleString: { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; }; pop: () => number; push: (...items: number[]) => number; concat: { (...items: ConcatArray[]): number[]; (...items: (number | ConcatArray)[]): number[]; }; join: (separator?: string) => string; reverse: () => number[]; shift: () => number; slice: (start?: number, end?: number) => number[]; sort: (compareFn?: (a: number, b: number) => number) => number[]; splice: { (start: number, deleteCount?: number): number[]; (start: number, deleteCount: number, ...items: number[]): number[]; }; unshift: (...items: number[]) => number; indexOf: (searchElement: number, fromIndex?: number) => number; lastIndexOf: (searchElement: number, fromIndex?: number) => number; every: { (predicate: (value: number, index: number, array: number[]) => value is S, thisArg?: any): this is S[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): boolean; }; some: (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any) => boolean; forEach: (callbackfn: (value: number, index: number, array: number[]) => void, thisArg?: any) => void; map: (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[]; filter: { (predicate: (value: number, index: number, array: number[]) => value is S_1, thisArg?: any): S_1[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): number[]; }; reduce: { (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number): number; (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number, initialValue: number): number; (callbackfn: (previousValue: U_1, currentValue: number, currentIndex: number, array: number[]) => U_1, initialValue: U_1): U_1; }; reduceRight: { (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number): number; (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number, initialValue: number): number; (callbackfn: (previousValue: U_2, currentValue: number, currentIndex: number, array: number[]) => U_2, initialValue: U_2): U_2; }; find: { (predicate: (value: number, index: number, obj: number[]) => value is S_2, thisArg?: any): S_2; (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any): number; }; findIndex: (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any) => number; fill: (value: number, start?: number, end?: number) => number[]; copyWithin: (target: number, start: number, end?: number) => number[]; entries: () => IterableIterator<[number, number]>; keys: () => IterableIterator; values: () => IterableIterator; includes: (searchElement: number, fromIndex?: number) => boolean; flatMap: (callback: (this: This, value: number, index: number, array: number[]) => U_3 | readonly U_3[], thisArg?: This) => U_3[]; flat: (this: A, depth?: D) => FlatArray[]; [Symbol.iterator]: () => IterableIterator; readonly [Symbol.unscopables]: { [x: number]: boolean; length?: boolean; toString?: boolean; toLocaleString?: boolean; pop?: boolean; push?: boolean; concat?: boolean; join?: boolean; reverse?: boolean; shift?: boolean; slice?: boolean; sort?: boolean; splice?: boolean; unshift?: boolean; indexOf?: boolean; lastIndexOf?: boolean; every?: boolean; some?: boolean; forEach?: boolean; map?: boolean; filter?: boolean; reduce?: boolean; reduceRight?: boolean; find?: boolean; findIndex?: boolean; fill?: boolean; copyWithin?: boolean; entries?: boolean; keys?: boolean; values?: boolean; includes?: boolean; flatMap?: boolean; flat?: boolean; [Symbol.iterator]?: boolean; readonly [Symbol.unscopables]?: boolean; }; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >tgt2 : number[] > : ^^^^^^^^ ->src2 : { [x: number]: number; toString: () => string; toLocaleString: { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; }; pop: () => number; push: (...items: number[]) => number; concat: { (...items: ConcatArray[]): number[]; (...items: (number | ConcatArray)[]): number[]; }; join: (separator?: string) => string; reverse: () => number[]; shift: () => number; slice: (start?: number, end?: number) => number[]; sort: (compareFn?: (a: number, b: number) => number) => number[]; splice: { (start: number, deleteCount?: number): number[]; (start: number, deleteCount: number, ...items: number[]): number[]; }; unshift: (...items: number[]) => number; indexOf: (searchElement: number, fromIndex?: number) => number; lastIndexOf: (searchElement: number, fromIndex?: number) => number; every: { (predicate: (value: number, index: number, array: number[]) => value is S, thisArg?: any): this is S[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): boolean; }; some: (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any) => boolean; forEach: (callbackfn: (value: number, index: number, array: number[]) => void, thisArg?: any) => void; map: (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[]; filter: { (predicate: (value: number, index: number, array: number[]) => value is S_1, thisArg?: any): S_1[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): number[]; }; reduce: { (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number): number; (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number, initialValue: number): number; (callbackfn: (previousValue: U_1, currentValue: number, currentIndex: number, array: number[]) => U_1, initialValue: U_1): U_1; }; reduceRight: { (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number): number; (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number, initialValue: number): number; (callbackfn: (previousValue: U_2, currentValue: number, currentIndex: number, array: number[]) => U_2, initialValue: U_2): U_2; }; find: { (predicate: (value: number, index: number, obj: number[]) => value is S_2, thisArg?: any): S_2; (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any): number; }; findIndex: (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any) => number; fill: (value: number, start?: number, end?: number) => number[]; copyWithin: (target: number, start: number, end?: number) => number[]; entries: () => IterableIterator<[number, number], void>; keys: () => IterableIterator; values: () => IterableIterator; includes: (searchElement: number, fromIndex?: number) => boolean; flatMap: (callback: (this: This, value: number, index: number, array: number[]) => U_3 | readonly U_3[], thisArg?: This) => U_3[]; flat: (this: A, depth?: D) => FlatArray[]; [Symbol.iterator]: () => IterableIterator; readonly [Symbol.unscopables]: { [x: number]: boolean; length?: boolean; toString?: boolean; toLocaleString?: boolean; pop?: boolean; push?: boolean; concat?: boolean; join?: boolean; reverse?: boolean; shift?: boolean; slice?: boolean; sort?: boolean; splice?: boolean; unshift?: boolean; indexOf?: boolean; lastIndexOf?: boolean; every?: boolean; some?: boolean; forEach?: boolean; map?: boolean; filter?: boolean; reduce?: boolean; reduceRight?: boolean; find?: boolean; findIndex?: boolean; fill?: boolean; copyWithin?: boolean; entries?: boolean; keys?: boolean; values?: boolean; includes?: boolean; flatMap?: boolean; flat?: boolean; [Symbol.iterator]?: boolean; readonly [Symbol.unscopables]?: boolean; }; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>src2 : { [x: number]: number; toString: () => string; toLocaleString: { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; }; pop: () => number; push: (...items: number[]) => number; concat: { (...items: ConcatArray[]): number[]; (...items: (number | ConcatArray)[]): number[]; }; join: (separator?: string) => string; reverse: () => number[]; shift: () => number; slice: (start?: number, end?: number) => number[]; sort: (compareFn?: (a: number, b: number) => number) => number[]; splice: { (start: number, deleteCount?: number): number[]; (start: number, deleteCount: number, ...items: number[]): number[]; }; unshift: (...items: number[]) => number; indexOf: (searchElement: number, fromIndex?: number) => number; lastIndexOf: (searchElement: number, fromIndex?: number) => number; every: { (predicate: (value: number, index: number, array: number[]) => value is S, thisArg?: any): this is S[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): boolean; }; some: (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any) => boolean; forEach: (callbackfn: (value: number, index: number, array: number[]) => void, thisArg?: any) => void; map: (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[]; filter: { (predicate: (value: number, index: number, array: number[]) => value is S_1, thisArg?: any): S_1[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): number[]; }; reduce: { (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number): number; (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number, initialValue: number): number; (callbackfn: (previousValue: U_1, currentValue: number, currentIndex: number, array: number[]) => U_1, initialValue: U_1): U_1; }; reduceRight: { (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number): number; (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number, initialValue: number): number; (callbackfn: (previousValue: U_2, currentValue: number, currentIndex: number, array: number[]) => U_2, initialValue: U_2): U_2; }; find: { (predicate: (value: number, index: number, obj: number[]) => value is S_2, thisArg?: any): S_2; (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any): number; }; findIndex: (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any) => number; fill: (value: number, start?: number, end?: number) => number[]; copyWithin: (target: number, start: number, end?: number) => number[]; entries: () => IterableIterator<[number, number]>; keys: () => IterableIterator; values: () => IterableIterator; includes: (searchElement: number, fromIndex?: number) => boolean; flatMap: (callback: (this: This, value: number, index: number, array: number[]) => U_3 | readonly U_3[], thisArg?: This) => U_3[]; flat: (this: A, depth?: D) => FlatArray[]; [Symbol.iterator]: () => IterableIterator; readonly [Symbol.unscopables]: { [x: number]: boolean; length?: boolean; toString?: boolean; toLocaleString?: boolean; pop?: boolean; push?: boolean; concat?: boolean; join?: boolean; reverse?: boolean; shift?: boolean; slice?: boolean; sort?: boolean; splice?: boolean; unshift?: boolean; indexOf?: boolean; lastIndexOf?: boolean; every?: boolean; some?: boolean; forEach?: boolean; map?: boolean; filter?: boolean; reduce?: boolean; reduceRight?: boolean; find?: boolean; findIndex?: boolean; fill?: boolean; copyWithin?: boolean; entries?: boolean; keys?: boolean; values?: boolean; includes?: boolean; flatMap?: boolean; flat?: boolean; [Symbol.iterator]?: boolean; readonly [Symbol.unscopables]?: boolean; }; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/mappedTypeWithAsClauseAndLateBoundProperty2.js b/tests/baselines/reference/mappedTypeWithAsClauseAndLateBoundProperty2.js index 7e0b7f5c50609..d4b703bce8ee4 100644 --- a/tests/baselines/reference/mappedTypeWithAsClauseAndLateBoundProperty2.js +++ b/tests/baselines/reference/mappedTypeWithAsClauseAndLateBoundProperty2.js @@ -62,13 +62,13 @@ export declare const thing: { findIndex: (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any) => number; fill: (value: number, start?: number, end?: number) => number[]; copyWithin: (target: number, start: number, end?: number) => number[]; - entries: () => IterableIterator<[number, number], void>; - keys: () => IterableIterator; - values: () => IterableIterator; + entries: () => IterableIterator<[number, number]>; + keys: () => IterableIterator; + values: () => IterableIterator; includes: (searchElement: number, fromIndex?: number) => boolean; flatMap: (callback: (this: This, value: number, index: number, array: number[]) => U_3 | readonly U_3[], thisArg?: This) => U_3[]; flat: (this: A, depth?: D) => FlatArray[]; - [Symbol.iterator]: () => IterableIterator; + [Symbol.iterator]: () => IterableIterator; readonly [Symbol.unscopables]: { [x: number]: boolean; length?: boolean; @@ -171,13 +171,13 @@ mappedTypeWithAsClauseAndLateBoundProperty2.d.ts(27,118): error TS2526: A 'this' findIndex: (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any) => number; fill: (value: number, start?: number, end?: number) => number[]; copyWithin: (target: number, start: number, end?: number) => number[]; - entries: () => IterableIterator<[number, number], void>; - keys: () => IterableIterator; - values: () => IterableIterator; + entries: () => IterableIterator<[number, number]>; + keys: () => IterableIterator; + values: () => IterableIterator; includes: (searchElement: number, fromIndex?: number) => boolean; flatMap: (callback: (this: This, value: number, index: number, array: number[]) => U_3 | readonly U_3[], thisArg?: This) => U_3[]; flat: (this: A, depth?: D) => FlatArray[]; - [Symbol.iterator]: () => IterableIterator; + [Symbol.iterator]: () => IterableIterator; readonly [Symbol.unscopables]: { [x: number]: boolean; length?: boolean; diff --git a/tests/baselines/reference/mappedTypeWithAsClauseAndLateBoundProperty2.types b/tests/baselines/reference/mappedTypeWithAsClauseAndLateBoundProperty2.types index 0e2a8bb535d04..249c5f28218c7 100644 --- a/tests/baselines/reference/mappedTypeWithAsClauseAndLateBoundProperty2.types +++ b/tests/baselines/reference/mappedTypeWithAsClauseAndLateBoundProperty2.types @@ -2,11 +2,11 @@ === mappedTypeWithAsClauseAndLateBoundProperty2.ts === export const thing = (null as any as { [K in keyof number[] as Exclude]: (number[])[K] }); ->thing : { [x: number]: number; toString: () => string; toLocaleString: { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; }; pop: () => number; push: (...items: number[]) => number; concat: { (...items: ConcatArray[]): number[]; (...items: (number | ConcatArray)[]): number[]; }; join: (separator?: string) => string; reverse: () => number[]; shift: () => number; slice: (start?: number, end?: number) => number[]; sort: (compareFn?: (a: number, b: number) => number) => number[]; splice: { (start: number, deleteCount?: number): number[]; (start: number, deleteCount: number, ...items: number[]): number[]; }; unshift: (...items: number[]) => number; indexOf: (searchElement: number, fromIndex?: number) => number; lastIndexOf: (searchElement: number, fromIndex?: number) => number; every: { (predicate: (value: number, index: number, array: number[]) => value is S, thisArg?: any): this is S[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): boolean; }; some: (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any) => boolean; forEach: (callbackfn: (value: number, index: number, array: number[]) => void, thisArg?: any) => void; map: (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[]; filter: { (predicate: (value: number, index: number, array: number[]) => value is S_1, thisArg?: any): S_1[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): number[]; }; reduce: { (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number): number; (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number, initialValue: number): number; (callbackfn: (previousValue: U_1, currentValue: number, currentIndex: number, array: number[]) => U_1, initialValue: U_1): U_1; }; reduceRight: { (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number): number; (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number, initialValue: number): number; (callbackfn: (previousValue: U_2, currentValue: number, currentIndex: number, array: number[]) => U_2, initialValue: U_2): U_2; }; find: { (predicate: (value: number, index: number, obj: number[]) => value is S_2, thisArg?: any): S_2; (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any): number; }; findIndex: (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any) => number; fill: (value: number, start?: number, end?: number) => number[]; copyWithin: (target: number, start: number, end?: number) => number[]; entries: () => IterableIterator<[number, number], void>; keys: () => IterableIterator; values: () => IterableIterator; includes: (searchElement: number, fromIndex?: number) => boolean; flatMap: (callback: (this: This, value: number, index: number, array: number[]) => U_3 | readonly U_3[], thisArg?: This) => U_3[]; flat: (this: A, depth?: D) => FlatArray[]; [Symbol.iterator]: () => IterableIterator; readonly [Symbol.unscopables]: { [x: number]: boolean; length?: boolean; toString?: boolean; toLocaleString?: boolean; pop?: boolean; push?: boolean; concat?: boolean; join?: boolean; reverse?: boolean; shift?: boolean; slice?: boolean; sort?: boolean; splice?: boolean; unshift?: boolean; indexOf?: boolean; lastIndexOf?: boolean; every?: boolean; some?: boolean; forEach?: boolean; map?: boolean; filter?: boolean; reduce?: boolean; reduceRight?: boolean; find?: boolean; findIndex?: boolean; fill?: boolean; copyWithin?: boolean; entries?: boolean; keys?: boolean; values?: boolean; includes?: boolean; flatMap?: boolean; flat?: boolean; [Symbol.iterator]?: boolean; readonly [Symbol.unscopables]?: boolean; }; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->(null as any as { [K in keyof number[] as Exclude]: (number[])[K] }) : { [x: number]: number; toString: () => string; toLocaleString: { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; }; pop: () => number; push: (...items: number[]) => number; concat: { (...items: ConcatArray[]): number[]; (...items: (number | ConcatArray)[]): number[]; }; join: (separator?: string) => string; reverse: () => number[]; shift: () => number; slice: (start?: number, end?: number) => number[]; sort: (compareFn?: (a: number, b: number) => number) => number[]; splice: { (start: number, deleteCount?: number): number[]; (start: number, deleteCount: number, ...items: number[]): number[]; }; unshift: (...items: number[]) => number; indexOf: (searchElement: number, fromIndex?: number) => number; lastIndexOf: (searchElement: number, fromIndex?: number) => number; every: { (predicate: (value: number, index: number, array: number[]) => value is S, thisArg?: any): this is S[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): boolean; }; some: (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any) => boolean; forEach: (callbackfn: (value: number, index: number, array: number[]) => void, thisArg?: any) => void; map: (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[]; filter: { (predicate: (value: number, index: number, array: number[]) => value is S_1, thisArg?: any): S_1[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): number[]; }; reduce: { (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number): number; (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number, initialValue: number): number; (callbackfn: (previousValue: U_1, currentValue: number, currentIndex: number, array: number[]) => U_1, initialValue: U_1): U_1; }; reduceRight: { (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number): number; (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number, initialValue: number): number; (callbackfn: (previousValue: U_2, currentValue: number, currentIndex: number, array: number[]) => U_2, initialValue: U_2): U_2; }; find: { (predicate: (value: number, index: number, obj: number[]) => value is S_2, thisArg?: any): S_2; (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any): number; }; findIndex: (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any) => number; fill: (value: number, start?: number, end?: number) => number[]; copyWithin: (target: number, start: number, end?: number) => number[]; entries: () => IterableIterator<[number, number], void>; keys: () => IterableIterator; values: () => IterableIterator; includes: (searchElement: number, fromIndex?: number) => boolean; flatMap: (callback: (this: This, value: number, index: number, array: number[]) => U_3 | readonly U_3[], thisArg?: This) => U_3[]; flat: (this: A, depth?: D) => FlatArray[]; [Symbol.iterator]: () => IterableIterator; readonly [Symbol.unscopables]: { [x: number]: boolean; length?: boolean; toString?: boolean; toLocaleString?: boolean; pop?: boolean; push?: boolean; concat?: boolean; join?: boolean; reverse?: boolean; shift?: boolean; slice?: boolean; sort?: boolean; splice?: boolean; unshift?: boolean; indexOf?: boolean; lastIndexOf?: boolean; every?: boolean; some?: boolean; forEach?: boolean; map?: boolean; filter?: boolean; reduce?: boolean; reduceRight?: boolean; find?: boolean; findIndex?: boolean; fill?: boolean; copyWithin?: boolean; entries?: boolean; keys?: boolean; values?: boolean; includes?: boolean; flatMap?: boolean; flat?: boolean; [Symbol.iterator]?: boolean; readonly [Symbol.unscopables]?: boolean; }; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->null as any as { [K in keyof number[] as Exclude]: (number[])[K] } : { [x: number]: number; toString: () => string; toLocaleString: { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; }; pop: () => number; push: (...items: number[]) => number; concat: { (...items: ConcatArray[]): number[]; (...items: (number | ConcatArray)[]): number[]; }; join: (separator?: string) => string; reverse: () => number[]; shift: () => number; slice: (start?: number, end?: number) => number[]; sort: (compareFn?: (a: number, b: number) => number) => number[]; splice: { (start: number, deleteCount?: number): number[]; (start: number, deleteCount: number, ...items: number[]): number[]; }; unshift: (...items: number[]) => number; indexOf: (searchElement: number, fromIndex?: number) => number; lastIndexOf: (searchElement: number, fromIndex?: number) => number; every: { (predicate: (value: number, index: number, array: number[]) => value is S, thisArg?: any): this is S[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): boolean; }; some: (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any) => boolean; forEach: (callbackfn: (value: number, index: number, array: number[]) => void, thisArg?: any) => void; map: (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[]; filter: { (predicate: (value: number, index: number, array: number[]) => value is S_1, thisArg?: any): S_1[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): number[]; }; reduce: { (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number): number; (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number, initialValue: number): number; (callbackfn: (previousValue: U_1, currentValue: number, currentIndex: number, array: number[]) => U_1, initialValue: U_1): U_1; }; reduceRight: { (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number): number; (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number, initialValue: number): number; (callbackfn: (previousValue: U_2, currentValue: number, currentIndex: number, array: number[]) => U_2, initialValue: U_2): U_2; }; find: { (predicate: (value: number, index: number, obj: number[]) => value is S_2, thisArg?: any): S_2; (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any): number; }; findIndex: (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any) => number; fill: (value: number, start?: number, end?: number) => number[]; copyWithin: (target: number, start: number, end?: number) => number[]; entries: () => IterableIterator<[number, number], void>; keys: () => IterableIterator; values: () => IterableIterator; includes: (searchElement: number, fromIndex?: number) => boolean; flatMap: (callback: (this: This, value: number, index: number, array: number[]) => U_3 | readonly U_3[], thisArg?: This) => U_3[]; flat: (this: A, depth?: D) => FlatArray[]; [Symbol.iterator]: () => IterableIterator; readonly [Symbol.unscopables]: { [x: number]: boolean; length?: boolean; toString?: boolean; toLocaleString?: boolean; pop?: boolean; push?: boolean; concat?: boolean; join?: boolean; reverse?: boolean; shift?: boolean; slice?: boolean; sort?: boolean; splice?: boolean; unshift?: boolean; indexOf?: boolean; lastIndexOf?: boolean; every?: boolean; some?: boolean; forEach?: boolean; map?: boolean; filter?: boolean; reduce?: boolean; reduceRight?: boolean; find?: boolean; findIndex?: boolean; fill?: boolean; copyWithin?: boolean; entries?: boolean; keys?: boolean; values?: boolean; includes?: boolean; flatMap?: boolean; flat?: boolean; [Symbol.iterator]?: boolean; readonly [Symbol.unscopables]?: boolean; }; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>thing : { [x: number]: number; toString: () => string; toLocaleString: { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; }; pop: () => number; push: (...items: number[]) => number; concat: { (...items: ConcatArray[]): number[]; (...items: (number | ConcatArray)[]): number[]; }; join: (separator?: string) => string; reverse: () => number[]; shift: () => number; slice: (start?: number, end?: number) => number[]; sort: (compareFn?: (a: number, b: number) => number) => number[]; splice: { (start: number, deleteCount?: number): number[]; (start: number, deleteCount: number, ...items: number[]): number[]; }; unshift: (...items: number[]) => number; indexOf: (searchElement: number, fromIndex?: number) => number; lastIndexOf: (searchElement: number, fromIndex?: number) => number; every: { (predicate: (value: number, index: number, array: number[]) => value is S, thisArg?: any): this is S[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): boolean; }; some: (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any) => boolean; forEach: (callbackfn: (value: number, index: number, array: number[]) => void, thisArg?: any) => void; map: (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[]; filter: { (predicate: (value: number, index: number, array: number[]) => value is S_1, thisArg?: any): S_1[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): number[]; }; reduce: { (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number): number; (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number, initialValue: number): number; (callbackfn: (previousValue: U_1, currentValue: number, currentIndex: number, array: number[]) => U_1, initialValue: U_1): U_1; }; reduceRight: { (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number): number; (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number, initialValue: number): number; (callbackfn: (previousValue: U_2, currentValue: number, currentIndex: number, array: number[]) => U_2, initialValue: U_2): U_2; }; find: { (predicate: (value: number, index: number, obj: number[]) => value is S_2, thisArg?: any): S_2; (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any): number; }; findIndex: (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any) => number; fill: (value: number, start?: number, end?: number) => number[]; copyWithin: (target: number, start: number, end?: number) => number[]; entries: () => IterableIterator<[number, number]>; keys: () => IterableIterator; values: () => IterableIterator; includes: (searchElement: number, fromIndex?: number) => boolean; flatMap: (callback: (this: This, value: number, index: number, array: number[]) => U_3 | readonly U_3[], thisArg?: This) => U_3[]; flat: (this: A, depth?: D) => FlatArray[]; [Symbol.iterator]: () => IterableIterator; readonly [Symbol.unscopables]: { [x: number]: boolean; length?: boolean; toString?: boolean; toLocaleString?: boolean; pop?: boolean; push?: boolean; concat?: boolean; join?: boolean; reverse?: boolean; shift?: boolean; slice?: boolean; sort?: boolean; splice?: boolean; unshift?: boolean; indexOf?: boolean; lastIndexOf?: boolean; every?: boolean; some?: boolean; forEach?: boolean; map?: boolean; filter?: boolean; reduce?: boolean; reduceRight?: boolean; find?: boolean; findIndex?: boolean; fill?: boolean; copyWithin?: boolean; entries?: boolean; keys?: boolean; values?: boolean; includes?: boolean; flatMap?: boolean; flat?: boolean; [Symbol.iterator]?: boolean; readonly [Symbol.unscopables]?: boolean; }; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>(null as any as { [K in keyof number[] as Exclude]: (number[])[K] }) : { [x: number]: number; toString: () => string; toLocaleString: { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; }; pop: () => number; push: (...items: number[]) => number; concat: { (...items: ConcatArray[]): number[]; (...items: (number | ConcatArray)[]): number[]; }; join: (separator?: string) => string; reverse: () => number[]; shift: () => number; slice: (start?: number, end?: number) => number[]; sort: (compareFn?: (a: number, b: number) => number) => number[]; splice: { (start: number, deleteCount?: number): number[]; (start: number, deleteCount: number, ...items: number[]): number[]; }; unshift: (...items: number[]) => number; indexOf: (searchElement: number, fromIndex?: number) => number; lastIndexOf: (searchElement: number, fromIndex?: number) => number; every: { (predicate: (value: number, index: number, array: number[]) => value is S, thisArg?: any): this is S[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): boolean; }; some: (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any) => boolean; forEach: (callbackfn: (value: number, index: number, array: number[]) => void, thisArg?: any) => void; map: (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[]; filter: { (predicate: (value: number, index: number, array: number[]) => value is S_1, thisArg?: any): S_1[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): number[]; }; reduce: { (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number): number; (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number, initialValue: number): number; (callbackfn: (previousValue: U_1, currentValue: number, currentIndex: number, array: number[]) => U_1, initialValue: U_1): U_1; }; reduceRight: { (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number): number; (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number, initialValue: number): number; (callbackfn: (previousValue: U_2, currentValue: number, currentIndex: number, array: number[]) => U_2, initialValue: U_2): U_2; }; find: { (predicate: (value: number, index: number, obj: number[]) => value is S_2, thisArg?: any): S_2; (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any): number; }; findIndex: (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any) => number; fill: (value: number, start?: number, end?: number) => number[]; copyWithin: (target: number, start: number, end?: number) => number[]; entries: () => IterableIterator<[number, number]>; keys: () => IterableIterator; values: () => IterableIterator; includes: (searchElement: number, fromIndex?: number) => boolean; flatMap: (callback: (this: This, value: number, index: number, array: number[]) => U_3 | readonly U_3[], thisArg?: This) => U_3[]; flat: (this: A, depth?: D) => FlatArray[]; [Symbol.iterator]: () => IterableIterator; readonly [Symbol.unscopables]: { [x: number]: boolean; length?: boolean; toString?: boolean; toLocaleString?: boolean; pop?: boolean; push?: boolean; concat?: boolean; join?: boolean; reverse?: boolean; shift?: boolean; slice?: boolean; sort?: boolean; splice?: boolean; unshift?: boolean; indexOf?: boolean; lastIndexOf?: boolean; every?: boolean; some?: boolean; forEach?: boolean; map?: boolean; filter?: boolean; reduce?: boolean; reduceRight?: boolean; find?: boolean; findIndex?: boolean; fill?: boolean; copyWithin?: boolean; entries?: boolean; keys?: boolean; values?: boolean; includes?: boolean; flatMap?: boolean; flat?: boolean; [Symbol.iterator]?: boolean; readonly [Symbol.unscopables]?: boolean; }; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>null as any as { [K in keyof number[] as Exclude]: (number[])[K] } : { [x: number]: number; toString: () => string; toLocaleString: { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; }; pop: () => number; push: (...items: number[]) => number; concat: { (...items: ConcatArray[]): number[]; (...items: (number | ConcatArray)[]): number[]; }; join: (separator?: string) => string; reverse: () => number[]; shift: () => number; slice: (start?: number, end?: number) => number[]; sort: (compareFn?: (a: number, b: number) => number) => number[]; splice: { (start: number, deleteCount?: number): number[]; (start: number, deleteCount: number, ...items: number[]): number[]; }; unshift: (...items: number[]) => number; indexOf: (searchElement: number, fromIndex?: number) => number; lastIndexOf: (searchElement: number, fromIndex?: number) => number; every: { (predicate: (value: number, index: number, array: number[]) => value is S, thisArg?: any): this is S[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): boolean; }; some: (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any) => boolean; forEach: (callbackfn: (value: number, index: number, array: number[]) => void, thisArg?: any) => void; map: (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[]; filter: { (predicate: (value: number, index: number, array: number[]) => value is S_1, thisArg?: any): S_1[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): number[]; }; reduce: { (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number): number; (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number, initialValue: number): number; (callbackfn: (previousValue: U_1, currentValue: number, currentIndex: number, array: number[]) => U_1, initialValue: U_1): U_1; }; reduceRight: { (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number): number; (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number, initialValue: number): number; (callbackfn: (previousValue: U_2, currentValue: number, currentIndex: number, array: number[]) => U_2, initialValue: U_2): U_2; }; find: { (predicate: (value: number, index: number, obj: number[]) => value is S_2, thisArg?: any): S_2; (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any): number; }; findIndex: (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any) => number; fill: (value: number, start?: number, end?: number) => number[]; copyWithin: (target: number, start: number, end?: number) => number[]; entries: () => IterableIterator<[number, number]>; keys: () => IterableIterator; values: () => IterableIterator; includes: (searchElement: number, fromIndex?: number) => boolean; flatMap: (callback: (this: This, value: number, index: number, array: number[]) => U_3 | readonly U_3[], thisArg?: This) => U_3[]; flat: (this: A, depth?: D) => FlatArray[]; [Symbol.iterator]: () => IterableIterator; readonly [Symbol.unscopables]: { [x: number]: boolean; length?: boolean; toString?: boolean; toLocaleString?: boolean; pop?: boolean; push?: boolean; concat?: boolean; join?: boolean; reverse?: boolean; shift?: boolean; slice?: boolean; sort?: boolean; splice?: boolean; unshift?: boolean; indexOf?: boolean; lastIndexOf?: boolean; every?: boolean; some?: boolean; forEach?: boolean; map?: boolean; filter?: boolean; reduce?: boolean; reduceRight?: boolean; find?: boolean; findIndex?: boolean; fill?: boolean; copyWithin?: boolean; entries?: boolean; keys?: boolean; values?: boolean; includes?: boolean; flatMap?: boolean; flat?: boolean; [Symbol.iterator]?: boolean; readonly [Symbol.unscopables]?: boolean; }; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >null as any : any diff --git a/tests/baselines/reference/modularizeLibrary_NoErrorDuplicateLibOptions1.types b/tests/baselines/reference/modularizeLibrary_NoErrorDuplicateLibOptions1.types index c721185f6b07c..100c9693e234e 100644 --- a/tests/baselines/reference/modularizeLibrary_NoErrorDuplicateLibOptions1.types +++ b/tests/baselines/reference/modularizeLibrary_NoErrorDuplicateLibOptions1.types @@ -58,14 +58,14 @@ m.clear(); // Using ES6 iterable m.keys(); ->m.keys() : IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->m.keys : () => IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>m.keys() : IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^ +>m.keys : () => IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >m : Map > : ^^^^^^^^^^^^^^^^^^^ ->keys : () => IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>keys : () => IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ // Using ES6 function function Baz() { } diff --git a/tests/baselines/reference/modularizeLibrary_NoErrorDuplicateLibOptions2.types b/tests/baselines/reference/modularizeLibrary_NoErrorDuplicateLibOptions2.types index fed079f251575..a0f54835e1cca 100644 --- a/tests/baselines/reference/modularizeLibrary_NoErrorDuplicateLibOptions2.types +++ b/tests/baselines/reference/modularizeLibrary_NoErrorDuplicateLibOptions2.types @@ -58,14 +58,14 @@ m.clear(); // Using ES6 iterable m.keys(); ->m.keys() : IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->m.keys : () => IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>m.keys() : IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^ +>m.keys : () => IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >m : Map > : ^^^^^^^^^^^^^^^^^^^ ->keys : () => IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>keys : () => IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ // Using ES6 function function Baz() { } diff --git a/tests/baselines/reference/modularizeLibrary_TargetES5UsingES6Lib.types b/tests/baselines/reference/modularizeLibrary_TargetES5UsingES6Lib.types index c788ce5c46b7f..b5e4e42f60fe4 100644 --- a/tests/baselines/reference/modularizeLibrary_TargetES5UsingES6Lib.types +++ b/tests/baselines/reference/modularizeLibrary_TargetES5UsingES6Lib.types @@ -58,14 +58,14 @@ m.clear(); // Using ES6 iterable m.keys(); ->m.keys() : IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->m.keys : () => IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>m.keys() : IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^ +>m.keys : () => IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >m : Map > : ^^^^^^^^^^^^^^^^^^^ ->keys : () => IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>keys : () => IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ // Using ES6 function function Baz() { } diff --git a/tests/baselines/reference/modularizeLibrary_TargetES6UsingES6Lib.types b/tests/baselines/reference/modularizeLibrary_TargetES6UsingES6Lib.types index 19d7af8515665..1aae5089a1ab2 100644 --- a/tests/baselines/reference/modularizeLibrary_TargetES6UsingES6Lib.types +++ b/tests/baselines/reference/modularizeLibrary_TargetES6UsingES6Lib.types @@ -58,14 +58,14 @@ m.clear(); // Using ES6 iterable m.keys(); ->m.keys() : IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->m.keys : () => IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>m.keys() : IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^ +>m.keys : () => IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >m : Map > : ^^^^^^^^^^^^^^^^^^^ ->keys : () => IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>keys : () => IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ // Using ES6 function function Baz() { } diff --git a/tests/baselines/reference/parser.asyncGenerators.classMethods.es2018.types b/tests/baselines/reference/parser.asyncGenerators.classMethods.es2018.types index e42c29560e422..1aa65a69c8cd4 100644 --- a/tests/baselines/reference/parser.asyncGenerators.classMethods.es2018.types +++ b/tests/baselines/reference/parser.asyncGenerators.classMethods.es2018.types @@ -225,8 +225,8 @@ class C16 { > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ yield * []; ->yield * [] : void -> : ^^^^ +>yield * [] : any +> : ^^^ >[] : undefined[] > : ^^^^^^^^^^^ } diff --git a/tests/baselines/reference/parser.asyncGenerators.functionDeclarations.es2018.types b/tests/baselines/reference/parser.asyncGenerators.functionDeclarations.es2018.types index 4780a080a16b4..8b708f94c95a6 100644 --- a/tests/baselines/reference/parser.asyncGenerators.functionDeclarations.es2018.types +++ b/tests/baselines/reference/parser.asyncGenerators.functionDeclarations.es2018.types @@ -146,8 +146,8 @@ async function * f16() { > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ yield * []; ->yield * [] : void -> : ^^^^ +>yield * [] : any +> : ^^^ >[] : undefined[] > : ^^^^^^^^^^^ } diff --git a/tests/baselines/reference/parser.asyncGenerators.functionExpressions.es2018.types b/tests/baselines/reference/parser.asyncGenerators.functionExpressions.es2018.types index 688c184a60a1a..036bdb2f62b80 100644 --- a/tests/baselines/reference/parser.asyncGenerators.functionExpressions.es2018.types +++ b/tests/baselines/reference/parser.asyncGenerators.functionExpressions.es2018.types @@ -194,8 +194,8 @@ const f16 = async function * () { > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ yield * []; ->yield * [] : void -> : ^^^^ +>yield * [] : any +> : ^^^ >[] : undefined[] > : ^^^^^^^^^^^ diff --git a/tests/baselines/reference/parser.asyncGenerators.objectLiteralMethods.es2018.types b/tests/baselines/reference/parser.asyncGenerators.objectLiteralMethods.es2018.types index 1dbedfbc4b29e..0a67b43853d48 100644 --- a/tests/baselines/reference/parser.asyncGenerators.objectLiteralMethods.es2018.types +++ b/tests/baselines/reference/parser.asyncGenerators.objectLiteralMethods.es2018.types @@ -257,8 +257,8 @@ const o16 = { > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ yield * []; ->yield * [] : void -> : ^^^^ +>yield * [] : any +> : ^^^ >[] : undefined[] > : ^^^^^^^^^^^ } diff --git a/tests/baselines/reference/types.asyncGenerators.es2018.1.types b/tests/baselines/reference/types.asyncGenerators.es2018.1.types index 2fa9129df1b5d..5127d1beb5542 100644 --- a/tests/baselines/reference/types.asyncGenerators.es2018.1.types +++ b/tests/baselines/reference/types.asyncGenerators.es2018.1.types @@ -65,8 +65,7 @@ async function * inferReturnType6() { > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ yield* [1, 2]; ->yield* [1, 2] : void -> : ^^^^ +>yield* [1, 2] : any >[1, 2] : number[] > : ^^^^^^^^ >1 : 1 @@ -79,8 +78,7 @@ async function * inferReturnType7() { > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ yield* [Promise.resolve(1)]; ->yield* [Promise.resolve(1)] : void -> : ^^^^ +>yield* [Promise.resolve(1)] : any >[Promise.resolve(1)] : Promise[] > : ^^^^^^^^^^^^^^^^^ >Promise.resolve(1) : Promise @@ -152,8 +150,7 @@ const assignability3: () => AsyncIterableIterator = async function * () > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ yield* [1, 2]; ->yield* [1, 2] : void -> : ^^^^ +>yield* [1, 2] : any >[1, 2] : number[] > : ^^^^^^^^ >1 : 1 @@ -169,8 +166,7 @@ const assignability4: () => AsyncIterableIterator = async function * () > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ yield* [Promise.resolve(1)]; ->yield* [Promise.resolve(1)] : void -> : ^^^^ +>yield* [Promise.resolve(1)] : any >[Promise.resolve(1)] : Promise[] > : ^^^^^^^^^^^^^^^^^ >Promise.resolve(1) : Promise @@ -247,8 +243,7 @@ const assignability8: () => AsyncIterable = async function * () { > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ yield* [1, 2]; ->yield* [1, 2] : void -> : ^^^^ +>yield* [1, 2] : any >[1, 2] : number[] > : ^^^^^^^^ >1 : 1 @@ -264,8 +259,7 @@ const assignability9: () => AsyncIterable = async function * () { > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ yield* [Promise.resolve(1)]; ->yield* [Promise.resolve(1)] : void -> : ^^^^ +>yield* [Promise.resolve(1)] : any >[Promise.resolve(1)] : Promise[] > : ^^^^^^^^^^^^^^^^^ >Promise.resolve(1) : Promise @@ -342,8 +336,7 @@ const assignability13: () => AsyncIterator = async function * () { > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ yield* [1, 2]; ->yield* [1, 2] : void -> : ^^^^ +>yield* [1, 2] : any >[1, 2] : number[] > : ^^^^^^^^ >1 : 1 @@ -359,8 +352,7 @@ const assignability14: () => AsyncIterator = async function * () { > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ yield* [Promise.resolve(1)]; ->yield* [Promise.resolve(1)] : void -> : ^^^^ +>yield* [Promise.resolve(1)] : any >[Promise.resolve(1)] : Promise[] > : ^^^^^^^^^^^^^^^^^ >Promise.resolve(1) : Promise @@ -429,8 +421,7 @@ async function * explicitReturnType3(): AsyncIterableIterator { > : ^^^^^^ yield* [1, 2]; ->yield* [1, 2] : void -> : ^^^^ +>yield* [1, 2] : any >[1, 2] : number[] > : ^^^^^^^^ >1 : 1 @@ -443,8 +434,7 @@ async function * explicitReturnType4(): AsyncIterableIterator { > : ^^^^^^ yield* [Promise.resolve(1)]; ->yield* [Promise.resolve(1)] : void -> : ^^^^ +>yield* [Promise.resolve(1)] : any >[Promise.resolve(1)] : Promise[] > : ^^^^^^^^^^^^^^^^^ >Promise.resolve(1) : Promise @@ -509,8 +499,7 @@ async function * explicitReturnType8(): AsyncIterable { > : ^^^^^^ yield* [1, 2]; ->yield* [1, 2] : void -> : ^^^^ +>yield* [1, 2] : any >[1, 2] : number[] > : ^^^^^^^^ >1 : 1 @@ -523,8 +512,7 @@ async function * explicitReturnType9(): AsyncIterable { > : ^^^^^^ yield* [Promise.resolve(1)]; ->yield* [Promise.resolve(1)] : void -> : ^^^^ +>yield* [Promise.resolve(1)] : any >[Promise.resolve(1)] : Promise[] > : ^^^^^^^^^^^^^^^^^ >Promise.resolve(1) : Promise @@ -589,8 +577,7 @@ async function * explicitReturnType13(): AsyncIterator { > : ^^^^^^ yield* [1, 2]; ->yield* [1, 2] : void -> : ^^^^ +>yield* [1, 2] : any >[1, 2] : number[] > : ^^^^^^^^ >1 : 1 @@ -603,8 +590,7 @@ async function * explicitReturnType14(): AsyncIterator { > : ^^^^^^ yield* [Promise.resolve(1)]; ->yield* [Promise.resolve(1)] : void -> : ^^^^ +>yield* [Promise.resolve(1)] : any >[Promise.resolve(1)] : Promise[] > : ^^^^^^^^^^^^^^^^^ >Promise.resolve(1) : Promise diff --git a/tests/baselines/reference/types.asyncGenerators.es2018.2.types b/tests/baselines/reference/types.asyncGenerators.es2018.2.types index 059ada8259cb4..a2825d3f1aa5c 100644 --- a/tests/baselines/reference/types.asyncGenerators.es2018.2.types +++ b/tests/baselines/reference/types.asyncGenerators.es2018.2.types @@ -65,8 +65,8 @@ const assignability2: () => AsyncIterableIterator = async function * () > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ yield* ["a", "b"]; ->yield* ["a", "b"] : void -> : ^^^^ +>yield* ["a", "b"] : any +> : ^^^ >["a", "b"] : string[] > : ^^^^^^^^ >"a" : "a" @@ -116,8 +116,8 @@ const assignability5: () => AsyncIterable = async function * () { > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ yield* ["a", "b"]; ->yield* ["a", "b"] : void -> : ^^^^ +>yield* ["a", "b"] : any +> : ^^^ >["a", "b"] : string[] > : ^^^^^^^^ >"a" : "a" @@ -167,8 +167,8 @@ const assignability8: () => AsyncIterator = async function * () { > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ yield* ["a", "b"]; ->yield* ["a", "b"] : void -> : ^^^^ +>yield* ["a", "b"] : any +> : ^^^ >["a", "b"] : string[] > : ^^^^^^^^ >"a" : "a" @@ -213,8 +213,8 @@ async function * explicitReturnType2(): AsyncIterableIterator { > : ^^^^^^ yield* ["a", "b"]; ->yield* ["a", "b"] : void -> : ^^^^ +>yield* ["a", "b"] : any +> : ^^^ >["a", "b"] : string[] > : ^^^^^^^^ >"a" : "a" @@ -255,8 +255,8 @@ async function * explicitReturnType5(): AsyncIterable { > : ^^^^^^ yield* ["a", "b"]; ->yield* ["a", "b"] : void -> : ^^^^ +>yield* ["a", "b"] : any +> : ^^^ >["a", "b"] : string[] > : ^^^^^^^^ >"a" : "a" @@ -297,8 +297,8 @@ async function * explicitReturnType8(): AsyncIterator { > : ^^^^^^ yield* ["a", "b"]; ->yield* ["a", "b"] : void -> : ^^^^ +>yield* ["a", "b"] : any +> : ^^^ >["a", "b"] : string[] > : ^^^^^^^^ >"a" : "a" diff --git a/tests/baselines/reference/yieldExpressionInControlFlow.errors.txt b/tests/baselines/reference/yieldExpressionInControlFlow.errors.txt index e7d454504e604..b751868c96b08 100644 --- a/tests/baselines/reference/yieldExpressionInControlFlow.errors.txt +++ b/tests/baselines/reference/yieldExpressionInControlFlow.errors.txt @@ -1,5 +1,4 @@ alsoFails.ts(3,9): error TS7034: Variable 'o' implicitly has type 'any[]' in some locations where its type cannot be determined. -alsoFails.ts(5,9): error TS2322: Type 'void' is not assignable to type 'any[]'. alsoFails.ts(5,20): error TS7005: Variable 'o' implicitly has an 'any[]' type. bug25149.js(4,13): error TS7057: 'yield' expression implicitly results in an 'any' type because its containing generator lacks a return-type annotation. @@ -14,7 +13,7 @@ bug25149.js(4,13): error TS7057: 'yield' expression implicitly results in an 'an } } -==== alsoFails.ts (3 errors) ==== +==== alsoFails.ts (2 errors) ==== // fails in Typescript too function* g() { var o = [] @@ -22,8 +21,6 @@ bug25149.js(4,13): error TS7057: 'yield' expression implicitly results in an 'an !!! error TS7034: Variable 'o' implicitly has type 'any[]' in some locations where its type cannot be determined. while (true) { o = yield* o - ~ -!!! error TS2322: Type 'void' is not assignable to type 'any[]'. ~ !!! error TS7005: Variable 'o' implicitly has an 'any[]' type. } diff --git a/tests/baselines/reference/yieldExpressionInControlFlow.types b/tests/baselines/reference/yieldExpressionInControlFlow.types index c445bb04b2d6f..a19bd8b6975b2 100644 --- a/tests/baselines/reference/yieldExpressionInControlFlow.types +++ b/tests/baselines/reference/yieldExpressionInControlFlow.types @@ -28,8 +28,8 @@ function* f() { === alsoFails.ts === // fails in Typescript too function* g() { ->g : () => Generator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>g : () => Generator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ var o = [] >o : any[] @@ -42,14 +42,14 @@ function* g() { > : ^^^^ o = yield* o ->o = yield* o : void -> : ^^^^ ->o : any[] -> : ^^^^^ ->yield* o : void -> : ^^^^ +>o = yield* o : any +> : ^^^ >o : any[] > : ^^^^^ +>yield* o : any +> : ^^^ +>o : any +> : ^^^ } } diff --git a/tests/baselines/reference/yieldExpressionInnerCommentEmit.types b/tests/baselines/reference/yieldExpressionInnerCommentEmit.types index 6110f638b84bb..58f588f237f80 100644 --- a/tests/baselines/reference/yieldExpressionInnerCommentEmit.types +++ b/tests/baselines/reference/yieldExpressionInnerCommentEmit.types @@ -21,16 +21,14 @@ function * foo2() { > : ^ yield */*comment4*/ [4]; ->yield */*comment4*/ [4] : void -> : ^^^^ +>yield */*comment4*/ [4] : any >[4] : number[] > : ^^^^^^^^ >4 : 4 > : ^ yield /*comment5*/* [5]; ->yield /*comment5*/* [5] : void -> : ^^^^ +>yield /*comment5*/* [5] : any >[5] : number[] > : ^^^^^^^^ >5 : 5 diff --git a/tests/cases/conformance/types/typeAliases/builtinIteratorReturn.ts b/tests/cases/conformance/types/typeAliases/builtinIteratorReturn.ts new file mode 100644 index 0000000000000..01ca67c5384f1 --- /dev/null +++ b/tests/cases/conformance/types/typeAliases/builtinIteratorReturn.ts @@ -0,0 +1,32 @@ +// @target: esnext +// @noEmit: true +// @noUncheckedIndexedAccess: * + +declare const array: number[]; +declare const map: Map; +declare const set: Set; + +const i0 = array[Symbol.iterator](); +const i1 = array.values(); +const i2 = array.keys(); +const i3 = array.entries(); +for (const x of array); + +const i4 = map[Symbol.iterator](); +const i5 = map.values(); +const i6 = map.keys(); +const i7 = map.entries(); +for (const x of map); + +const i8 = set[Symbol.iterator](); +const i9 = set.values(); +const i10 = set.keys(); +const i11 = set.entries(); +for (const x of set); + +declare const i12: IterableIterator; +declare const i13: IterableIterator; +declare const i14: IterableIterator; +declare const i15: Iterable; +declare const i16: Iterable; +declare const i17: Iterable; From bb513be8667ce845d0a013a285beed106c12afbc Mon Sep 17 00:00:00 2001 From: Ron Buckton Date: Tue, 7 May 2024 10:30:08 -0400 Subject: [PATCH 10/17] Use BuiltinIteratorReturn in es2020.bigint and es2022.intl --- src/lib/es2020.bigint.d.ts | 16 ++++++++-------- src/lib/es2022.intl.d.ts | 2 +- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/lib/es2020.bigint.d.ts b/src/lib/es2020.bigint.d.ts index c1eb68a393aca..e5cafc442d677 100644 --- a/src/lib/es2020.bigint.d.ts +++ b/src/lib/es2020.bigint.d.ts @@ -153,7 +153,7 @@ interface BigInt64Array { copyWithin(target: number, start: number, end?: number): this; /** Yields index, value pairs for every entry in the array. */ - entries(): IterableIterator<[number, bigint], void>; + entries(): IterableIterator<[number, bigint], BuiltinIteratorReturn>; /** * Determines whether all the members of an array satisfy the specified test. @@ -238,7 +238,7 @@ interface BigInt64Array { join(separator?: string): string; /** Yields each index in the array. */ - keys(): IterableIterator; + keys(): IterableIterator; /** * Returns the index of the last occurrence of a value in an array. @@ -360,9 +360,9 @@ interface BigInt64Array { valueOf(): BigInt64Array; /** Yields each value in the array. */ - values(): IterableIterator; + values(): IterableIterator; - [Symbol.iterator](): IterableIterator; + [Symbol.iterator](): IterableIterator; readonly [Symbol.toStringTag]: "BigInt64Array"; @@ -425,7 +425,7 @@ interface BigUint64Array { copyWithin(target: number, start: number, end?: number): this; /** Yields index, value pairs for every entry in the array. */ - entries(): IterableIterator<[number, bigint], void>; + entries(): IterableIterator<[number, bigint], BuiltinIteratorReturn>; /** * Determines whether all the members of an array satisfy the specified test. @@ -510,7 +510,7 @@ interface BigUint64Array { join(separator?: string): string; /** Yields each index in the array. */ - keys(): IterableIterator; + keys(): IterableIterator; /** * Returns the index of the last occurrence of a value in an array. @@ -632,9 +632,9 @@ interface BigUint64Array { valueOf(): BigUint64Array; /** Yields each value in the array. */ - values(): IterableIterator; + values(): IterableIterator; - [Symbol.iterator](): IterableIterator; + [Symbol.iterator](): IterableIterator; readonly [Symbol.toStringTag]: "BigUint64Array"; diff --git a/src/lib/es2022.intl.d.ts b/src/lib/es2022.intl.d.ts index 33b7a26e8c172..e92a67f7a88d6 100644 --- a/src/lib/es2022.intl.d.ts +++ b/src/lib/es2022.intl.d.ts @@ -37,7 +37,7 @@ declare namespace Intl { containing(codeUnitIndex?: number): SegmentData; /** Returns an iterator to iterate over the segments. */ - [Symbol.iterator](): IterableIterator; + [Symbol.iterator](): IterableIterator; } interface SegmentData { From 2d58aa56c472ee51b37834be56dbbf2824cdb122 Mon Sep 17 00:00:00 2001 From: Ron Buckton Date: Tue, 7 May 2024 10:32:24 -0400 Subject: [PATCH 11/17] Use BuiltinIteratorReturn in es2020.string and es2020.symbol.wellknown --- src/lib/es2020.string.d.ts | 2 +- src/lib/es2020.symbol.wellknown.d.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/lib/es2020.string.d.ts b/src/lib/es2020.string.d.ts index 9a65689bdcfb3..7f7911d517d02 100644 --- a/src/lib/es2020.string.d.ts +++ b/src/lib/es2020.string.d.ts @@ -6,7 +6,7 @@ interface String { * containing the results of that search. * @param regexp A variable name or string literal containing the regular expression pattern and flags. */ - matchAll(regexp: RegExp): IterableIterator; + matchAll(regexp: RegExp): IterableIterator; /** Converts all alphabetic characters to lowercase, taking into account the host environment's current locale. */ toLocaleLowerCase(locales?: Intl.LocalesArgument): string; diff --git a/src/lib/es2020.symbol.wellknown.d.ts b/src/lib/es2020.symbol.wellknown.d.ts index b6d7112f6f1ca..0a65134b7c2d2 100644 --- a/src/lib/es2020.symbol.wellknown.d.ts +++ b/src/lib/es2020.symbol.wellknown.d.ts @@ -15,5 +15,5 @@ interface RegExp { * containing the results of that search. * @param string A string to search within. */ - [Symbol.matchAll](str: string): IterableIterator; + [Symbol.matchAll](str: string): IterableIterator; } From 0bfb23636cb98bdabeb3fd3d5b3c21706086cb14 Mon Sep 17 00:00:00 2001 From: Ron Buckton Date: Tue, 7 May 2024 14:55:08 -0400 Subject: [PATCH 12/17] Update baselines --- .../reference/regexMatchAll-esnext.types | 16 +++++++-------- tests/baselines/reference/regexMatchAll.types | 16 +++++++-------- .../baselines/reference/stringMatchAll.types | 20 +++++++++---------- 3 files changed, 26 insertions(+), 26 deletions(-) diff --git a/tests/baselines/reference/regexMatchAll-esnext.types b/tests/baselines/reference/regexMatchAll-esnext.types index eac410ebc768d..13c2b3b1572af 100644 --- a/tests/baselines/reference/regexMatchAll-esnext.types +++ b/tests/baselines/reference/regexMatchAll-esnext.types @@ -2,12 +2,12 @@ === regexMatchAll-esnext.ts === const matches = /\w/g[Symbol.matchAll]("matchAll"); ->matches : IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->/\w/g[Symbol.matchAll]("matchAll") : IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->/\w/g[Symbol.matchAll] : (str: string) => IterableIterator -> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>matches : IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>/\w/g[Symbol.matchAll]("matchAll") : IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>/\w/g[Symbol.matchAll] : (str: string) => IterableIterator +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >/\w/g : RegExp > : ^^^^^^ >Symbol.matchAll : unique symbol @@ -26,8 +26,8 @@ const array = [...matches]; > : ^^^^^^^^^^^^^^^^^^ >...matches : RegExpMatchArray > : ^^^^^^^^^^^^^^^^ ->matches : IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>matches : IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ const { index, input } = array[0]; >index : number diff --git a/tests/baselines/reference/regexMatchAll.types b/tests/baselines/reference/regexMatchAll.types index 8e3e3f0ef13af..59bd4d730a162 100644 --- a/tests/baselines/reference/regexMatchAll.types +++ b/tests/baselines/reference/regexMatchAll.types @@ -2,12 +2,12 @@ === regexMatchAll.ts === const matches = /\w/g[Symbol.matchAll]("matchAll"); ->matches : IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->/\w/g[Symbol.matchAll]("matchAll") : IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->/\w/g[Symbol.matchAll] : (str: string) => IterableIterator -> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>matches : IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>/\w/g[Symbol.matchAll]("matchAll") : IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>/\w/g[Symbol.matchAll] : (str: string) => IterableIterator +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >/\w/g : RegExp > : ^^^^^^ >Symbol.matchAll : unique symbol @@ -26,8 +26,8 @@ const array = [...matches]; > : ^^^^^^^^^^^^^^^^^^ >...matches : RegExpMatchArray > : ^^^^^^^^^^^^^^^^ ->matches : IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>matches : IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ const { index, input } = array[0]; >index : number diff --git a/tests/baselines/reference/stringMatchAll.types b/tests/baselines/reference/stringMatchAll.types index 3c62fd5a6def0..422c849e95422 100644 --- a/tests/baselines/reference/stringMatchAll.types +++ b/tests/baselines/reference/stringMatchAll.types @@ -2,16 +2,16 @@ === stringMatchAll.ts === const matches = "matchAll".matchAll(/\w/g); ->matches : IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->"matchAll".matchAll(/\w/g) : IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->"matchAll".matchAll : (regexp: RegExp) => IterableIterator -> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>matches : IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>"matchAll".matchAll(/\w/g) : IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>"matchAll".matchAll : (regexp: RegExp) => IterableIterator +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >"matchAll" : "matchAll" > : ^^^^^^^^^^ ->matchAll : (regexp: RegExp) => IterableIterator -> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>matchAll : (regexp: RegExp) => IterableIterator +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >/\w/g : RegExp > : ^^^^^^ @@ -22,8 +22,8 @@ const array = [...matches]; > : ^^^^^^^^^^^^^^^^^ >...matches : RegExpExecArray > : ^^^^^^^^^^^^^^^ ->matches : IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>matches : IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ const { index, input } = array[0]; >index : number From e98303f1536dfd69b5bb95151298f4b035761e3f Mon Sep 17 00:00:00 2001 From: Ron Buckton Date: Fri, 17 May 2024 10:30:24 -0400 Subject: [PATCH 13/17] Use new --strictBuiltinIteratorReturn flag --- src/compiler/checker.ts | 11 ++-- src/compiler/commandLineParser.ts | 10 ++++ src/compiler/diagnosticMessages.json | 4 ++ src/compiler/types.ts | 1 + src/compiler/utilities.ts | 7 +++ src/testRunner/compilerRunner.ts | 60 ++++++++----------- tests/baselines/reference/api/typescript.d.ts | 1 + ...trictbuiltiniteratorreturn=false).symbols} | 0 ...(strictbuiltiniteratorreturn=false).types} | 0 ...strictbuiltiniteratorreturn=true).symbols} | 0 ...n(strictbuiltiniteratorreturn=true).types} | 0 .../tsconfig.json | 1 + .../tsconfig.json | 1 + .../tsconfig.json | 1 + .../tsconfig.json | 1 + .../tsconfig.json | 1 + .../tsconfig.json | 1 + .../tsconfig.json | 1 + .../tsconfig.json | 1 + .../tsconfig.json | 1 + .../tsconfig.json | 1 + .../tsconfig.json | 1 + .../tsconfig.json | 1 + .../strict/tsconfig.json | 1 + .../strictBuiltinIteratorReturn/tsconfig.json | 5 ++ ...ileCompilationWithMapFileAsJsWithOutDir.ts | 2 +- .../typeAliases/builtinIteratorReturn.ts | 2 +- 27 files changed, 73 insertions(+), 43 deletions(-) rename tests/baselines/reference/{builtinIteratorReturn(nouncheckedindexedaccess=false).symbols => builtinIteratorReturn(strictbuiltiniteratorreturn=false).symbols} (100%) rename tests/baselines/reference/{builtinIteratorReturn(nouncheckedindexedaccess=false).types => builtinIteratorReturn(strictbuiltiniteratorreturn=false).types} (100%) rename tests/baselines/reference/{builtinIteratorReturn(nouncheckedindexedaccess=true).symbols => builtinIteratorReturn(strictbuiltiniteratorreturn=true).symbols} (100%) rename tests/baselines/reference/{builtinIteratorReturn(nouncheckedindexedaccess=true).types => builtinIteratorReturn(strictbuiltiniteratorreturn=true).types} (100%) create mode 100644 tests/baselines/reference/config/showConfig/Shows tsconfig for single option/strictBuiltinIteratorReturn/tsconfig.json diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 3b48ff3ba3a4e..ffd84a6c30ba1 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -1473,6 +1473,7 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker { var strictFunctionTypes = getStrictOptionValue(compilerOptions, "strictFunctionTypes"); var strictBindCallApply = getStrictOptionValue(compilerOptions, "strictBindCallApply"); var strictPropertyInitialization = getStrictOptionValue(compilerOptions, "strictPropertyInitialization"); + var strictBuiltinIteratorReturn = getStrictOptionValue(compilerOptions, "strictBuiltinIteratorReturn"); var noImplicitAny = getStrictOptionValue(compilerOptions, "noImplicitAny"); var noImplicitThis = getStrictOptionValue(compilerOptions, "noImplicitThis"); var useUnknownInCatchVariables = getStrictOptionValue(compilerOptions, "useUnknownInCatchVariables"); @@ -12483,7 +12484,7 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker { links.instantiations.set(getTypeListId(typeParameters), type); } if (type === intrinsicMarkerType && symbol.escapedName === "BuiltinIteratorReturn") { - type = compilerOptions.noUncheckedIndexedAccess ? undefinedType : anyType; + type = strictBuiltinIteratorReturn ? undefinedType : anyType; } } else { @@ -45487,10 +45488,10 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker { checkExportsOnMergedDeclarations(node); checkTypeParameters(node.typeParameters); if (node.type.kind === SyntaxKind.IntrinsicKeyword) { - if ( - !(node.name.escapedText === "BuiltinIteratorReturn" && length(node.typeParameters) === 0) && - !(intrinsicTypeKinds.has(node.name.escapedText as string) && length(node.typeParameters) === 1) - ) { + const typeParameterCount = length(node.typeParameters); + const valid = typeParameterCount === 0 ? node.name.escapedText === "BuiltinIteratorReturn" : + typeParameterCount === 1 && intrinsicTypeKinds.has(node.name.escapedText as string); + if (!valid) { error(node.type, Diagnostics.The_intrinsic_keyword_can_only_be_used_to_declare_compiler_provided_intrinsic_types); } } diff --git a/src/compiler/commandLineParser.ts b/src/compiler/commandLineParser.ts index 4aff5cdc2648e..de65ba54b9614 100644 --- a/src/compiler/commandLineParser.ts +++ b/src/compiler/commandLineParser.ts @@ -895,6 +895,16 @@ const commandOptionsWithoutBuild: CommandLineOption[] = [ description: Diagnostics.Check_for_class_properties_that_are_declared_but_not_set_in_the_constructor, defaultValueDescription: Diagnostics.false_unless_strict_is_set, }, + { + name: "strictBuiltinIteratorReturn", + type: "boolean", + affectsSemanticDiagnostics: true, + affectsBuildInfo: true, + strictFlag: true, + category: Diagnostics.Type_Checking, + description: Diagnostics.Built_in_iterators_are_instantiated_with_a_TReturn_type_of_undefined_instead_of_any, + defaultValueDescription: Diagnostics.false_unless_strict_is_set, + }, { name: "noImplicitThis", type: "boolean", diff --git a/src/compiler/diagnosticMessages.json b/src/compiler/diagnosticMessages.json index 272cd5bd4f524..b76ab8240e6bd 100644 --- a/src/compiler/diagnosticMessages.json +++ b/src/compiler/diagnosticMessages.json @@ -6227,6 +6227,10 @@ "category": "Message", "code": 6718 }, + "Built-in iterators are instantiated with a 'TReturn' type of 'undefined' instead of 'any'.": { + "category": "Message", + "code": 6719 + }, "Default catch clause variables as 'unknown' instead of 'any'.": { "category": "Message", "code": 6803 diff --git a/src/compiler/types.ts b/src/compiler/types.ts index 3f28e560cddea..5fca4b7133ed1 100644 --- a/src/compiler/types.ts +++ b/src/compiler/types.ts @@ -7303,6 +7303,7 @@ export interface CompilerOptions { strictBindCallApply?: boolean; // Always combine with strict property strictNullChecks?: boolean; // Always combine with strict property strictPropertyInitialization?: boolean; // Always combine with strict property + strictBuiltinIteratorReturn?: boolean; // Always combine with strict property stripInternal?: boolean; /** @deprecated */ suppressExcessPropertyErrors?: boolean; diff --git a/src/compiler/utilities.ts b/src/compiler/utilities.ts index 5a53f8199c1f3..43bba2a1b1f04 100644 --- a/src/compiler/utilities.ts +++ b/src/compiler/utilities.ts @@ -8878,6 +8878,12 @@ export const computedOptions = createComputedCompilerOptions({ return getStrictOptionValue(compilerOptions, "strictPropertyInitialization"); }, }, + strictBuiltinIteratorReturn: { + dependencies: ["strict"], + computeValue: compilerOptions => { + return getStrictOptionValue(compilerOptions, "strictBuiltinIteratorReturn"); + }, + }, alwaysStrict: { dependencies: ["strict"], computeValue: compilerOptions => { @@ -8965,6 +8971,7 @@ export type StrictOptionName = | "strictFunctionTypes" | "strictBindCallApply" | "strictPropertyInitialization" + | "strictBuiltinIteratorReturn" | "alwaysStrict" | "useUnknownInCatchVariables"; diff --git a/src/testRunner/compilerRunner.ts b/src/testRunner/compilerRunner.ts index 4c905e38826e7..638a97791fbb1 100644 --- a/src/testRunner/compilerRunner.ts +++ b/src/testRunner/compilerRunner.ts @@ -128,44 +128,32 @@ export class CompilerBaselineRunner extends RunnerBase { class CompilerTest { private static varyBy: readonly string[] = [ - "allowArbitraryExtensions", - "allowImportingTsExtensions", - "allowSyntheticDefaultImports", - "alwaysStrict", - "downlevelIteration", - "experimentalDecorators", - "emitDecoratorMetadata", - "esModuleInterop", - "exactOptionalPropertyTypes", - "importHelpers", - "importHelpers", - "isolatedModules", - "jsx", - "module", - "moduleDetection", - "moduleResolution", + // implicit variations from defined options + ...ts.optionDeclarations + .filter(option => + !option.isCommandLineOnly + && ( + option.type === "boolean" + || typeof option.type === "object" + ) + && ( + option.affectsProgramStructure + || option.affectsEmit + || option.affectsModuleResolution + || option.affectsBindDiagnostics + || option.affectsSemanticDiagnostics + || option.affectsSourceFile + || option.affectsDeclarationPath + || option.affectsBuildInfo + ) + ) + .map(option => option.name), + + // explicit variations that do not match above conditions "noEmit", - "noImplicitAny", - "noImplicitThis", - "noPropertyAccessFromIndexSignature", - "noUncheckedIndexedAccess", - "preserveConstEnums", - "removeComments", - "resolveJsonModule", - "resolvePackageJsonExports", - "resolvePackageJsonImports", - "skipDefaultLibCheck", - "skipLibCheck", - "strict", - "strictBindCallApply", - "strictFunctionTypes", - "strictNullChecks", - "strictPropertyInitialization", - "target", - "useDefineForClassFields", - "useUnknownInCatchVariables", - "verbatimModuleSyntax", + "isolatedModules", ]; + private fileName: string; private justName: string; private configuredName: string; diff --git a/tests/baselines/reference/api/typescript.d.ts b/tests/baselines/reference/api/typescript.d.ts index 3fa0b1c91162f..22b38abecd53b 100644 --- a/tests/baselines/reference/api/typescript.d.ts +++ b/tests/baselines/reference/api/typescript.d.ts @@ -6966,6 +6966,7 @@ declare namespace ts { strictBindCallApply?: boolean; strictNullChecks?: boolean; strictPropertyInitialization?: boolean; + strictBuiltinIteratorReturn?: boolean; stripInternal?: boolean; /** @deprecated */ suppressExcessPropertyErrors?: boolean; diff --git a/tests/baselines/reference/builtinIteratorReturn(nouncheckedindexedaccess=false).symbols b/tests/baselines/reference/builtinIteratorReturn(strictbuiltiniteratorreturn=false).symbols similarity index 100% rename from tests/baselines/reference/builtinIteratorReturn(nouncheckedindexedaccess=false).symbols rename to tests/baselines/reference/builtinIteratorReturn(strictbuiltiniteratorreturn=false).symbols diff --git a/tests/baselines/reference/builtinIteratorReturn(nouncheckedindexedaccess=false).types b/tests/baselines/reference/builtinIteratorReturn(strictbuiltiniteratorreturn=false).types similarity index 100% rename from tests/baselines/reference/builtinIteratorReturn(nouncheckedindexedaccess=false).types rename to tests/baselines/reference/builtinIteratorReturn(strictbuiltiniteratorreturn=false).types diff --git a/tests/baselines/reference/builtinIteratorReturn(nouncheckedindexedaccess=true).symbols b/tests/baselines/reference/builtinIteratorReturn(strictbuiltiniteratorreturn=true).symbols similarity index 100% rename from tests/baselines/reference/builtinIteratorReturn(nouncheckedindexedaccess=true).symbols rename to tests/baselines/reference/builtinIteratorReturn(strictbuiltiniteratorreturn=true).symbols diff --git a/tests/baselines/reference/builtinIteratorReturn(nouncheckedindexedaccess=true).types b/tests/baselines/reference/builtinIteratorReturn(strictbuiltiniteratorreturn=true).types similarity index 100% rename from tests/baselines/reference/builtinIteratorReturn(nouncheckedindexedaccess=true).types rename to tests/baselines/reference/builtinIteratorReturn(strictbuiltiniteratorreturn=true).types diff --git a/tests/baselines/reference/config/initTSConfig/Default initialized TSConfig/tsconfig.json b/tests/baselines/reference/config/initTSConfig/Default initialized TSConfig/tsconfig.json index 81804ba2c2eac..7454ba88665ba 100644 --- a/tests/baselines/reference/config/initTSConfig/Default initialized TSConfig/tsconfig.json +++ b/tests/baselines/reference/config/initTSConfig/Default initialized TSConfig/tsconfig.json @@ -86,6 +86,7 @@ // "strictFunctionTypes": true, /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */ // "strictBindCallApply": true, /* Check that the arguments for 'bind', 'call', and 'apply' methods match the original function. */ // "strictPropertyInitialization": true, /* Check for class properties that are declared but not set in the constructor. */ + // "strictBuiltinIteratorReturn": true, /* Built-in iterators are instantiated with a 'TReturn' type of 'undefined' instead of 'any'. */ // "noImplicitThis": true, /* Enable error reporting when 'this' is given the type 'any'. */ // "useUnknownInCatchVariables": true, /* Default catch clause variables as 'unknown' instead of 'any'. */ // "alwaysStrict": true, /* Ensure 'use strict' is always emitted. */ diff --git a/tests/baselines/reference/config/initTSConfig/Initialized TSConfig with --help/tsconfig.json b/tests/baselines/reference/config/initTSConfig/Initialized TSConfig with --help/tsconfig.json index 81804ba2c2eac..7454ba88665ba 100644 --- a/tests/baselines/reference/config/initTSConfig/Initialized TSConfig with --help/tsconfig.json +++ b/tests/baselines/reference/config/initTSConfig/Initialized TSConfig with --help/tsconfig.json @@ -86,6 +86,7 @@ // "strictFunctionTypes": true, /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */ // "strictBindCallApply": true, /* Check that the arguments for 'bind', 'call', and 'apply' methods match the original function. */ // "strictPropertyInitialization": true, /* Check for class properties that are declared but not set in the constructor. */ + // "strictBuiltinIteratorReturn": true, /* Built-in iterators are instantiated with a 'TReturn' type of 'undefined' instead of 'any'. */ // "noImplicitThis": true, /* Enable error reporting when 'this' is given the type 'any'. */ // "useUnknownInCatchVariables": true, /* Default catch clause variables as 'unknown' instead of 'any'. */ // "alwaysStrict": true, /* Ensure 'use strict' is always emitted. */ diff --git a/tests/baselines/reference/config/initTSConfig/Initialized TSConfig with --watch/tsconfig.json b/tests/baselines/reference/config/initTSConfig/Initialized TSConfig with --watch/tsconfig.json index 81804ba2c2eac..7454ba88665ba 100644 --- a/tests/baselines/reference/config/initTSConfig/Initialized TSConfig with --watch/tsconfig.json +++ b/tests/baselines/reference/config/initTSConfig/Initialized TSConfig with --watch/tsconfig.json @@ -86,6 +86,7 @@ // "strictFunctionTypes": true, /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */ // "strictBindCallApply": true, /* Check that the arguments for 'bind', 'call', and 'apply' methods match the original function. */ // "strictPropertyInitialization": true, /* Check for class properties that are declared but not set in the constructor. */ + // "strictBuiltinIteratorReturn": true, /* Built-in iterators are instantiated with a 'TReturn' type of 'undefined' instead of 'any'. */ // "noImplicitThis": true, /* Enable error reporting when 'this' is given the type 'any'. */ // "useUnknownInCatchVariables": true, /* Default catch clause variables as 'unknown' instead of 'any'. */ // "alwaysStrict": true, /* Ensure 'use strict' is always emitted. */ diff --git a/tests/baselines/reference/config/initTSConfig/Initialized TSConfig with advanced options/tsconfig.json b/tests/baselines/reference/config/initTSConfig/Initialized TSConfig with advanced options/tsconfig.json index b5ac6cc2eb0d4..dd5b557c3d017 100644 --- a/tests/baselines/reference/config/initTSConfig/Initialized TSConfig with advanced options/tsconfig.json +++ b/tests/baselines/reference/config/initTSConfig/Initialized TSConfig with advanced options/tsconfig.json @@ -86,6 +86,7 @@ // "strictFunctionTypes": true, /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */ // "strictBindCallApply": true, /* Check that the arguments for 'bind', 'call', and 'apply' methods match the original function. */ // "strictPropertyInitialization": true, /* Check for class properties that are declared but not set in the constructor. */ + // "strictBuiltinIteratorReturn": true, /* Built-in iterators are instantiated with a 'TReturn' type of 'undefined' instead of 'any'. */ // "noImplicitThis": true, /* Enable error reporting when 'this' is given the type 'any'. */ // "useUnknownInCatchVariables": true, /* Default catch clause variables as 'unknown' instead of 'any'. */ // "alwaysStrict": true, /* Ensure 'use strict' is always emitted. */ diff --git a/tests/baselines/reference/config/initTSConfig/Initialized TSConfig with boolean value compiler options/tsconfig.json b/tests/baselines/reference/config/initTSConfig/Initialized TSConfig with boolean value compiler options/tsconfig.json index e8529643dcbce..5c9c8d3c83a18 100644 --- a/tests/baselines/reference/config/initTSConfig/Initialized TSConfig with boolean value compiler options/tsconfig.json +++ b/tests/baselines/reference/config/initTSConfig/Initialized TSConfig with boolean value compiler options/tsconfig.json @@ -86,6 +86,7 @@ // "strictFunctionTypes": true, /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */ // "strictBindCallApply": true, /* Check that the arguments for 'bind', 'call', and 'apply' methods match the original function. */ // "strictPropertyInitialization": true, /* Check for class properties that are declared but not set in the constructor. */ + // "strictBuiltinIteratorReturn": true, /* Built-in iterators are instantiated with a 'TReturn' type of 'undefined' instead of 'any'. */ // "noImplicitThis": true, /* Enable error reporting when 'this' is given the type 'any'. */ // "useUnknownInCatchVariables": true, /* Default catch clause variables as 'unknown' instead of 'any'. */ // "alwaysStrict": true, /* Ensure 'use strict' is always emitted. */ diff --git a/tests/baselines/reference/config/initTSConfig/Initialized TSConfig with enum value compiler options/tsconfig.json b/tests/baselines/reference/config/initTSConfig/Initialized TSConfig with enum value compiler options/tsconfig.json index 57335d68845aa..047f4c95c1eff 100644 --- a/tests/baselines/reference/config/initTSConfig/Initialized TSConfig with enum value compiler options/tsconfig.json +++ b/tests/baselines/reference/config/initTSConfig/Initialized TSConfig with enum value compiler options/tsconfig.json @@ -86,6 +86,7 @@ // "strictFunctionTypes": true, /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */ // "strictBindCallApply": true, /* Check that the arguments for 'bind', 'call', and 'apply' methods match the original function. */ // "strictPropertyInitialization": true, /* Check for class properties that are declared but not set in the constructor. */ + // "strictBuiltinIteratorReturn": true, /* Built-in iterators are instantiated with a 'TReturn' type of 'undefined' instead of 'any'. */ // "noImplicitThis": true, /* Enable error reporting when 'this' is given the type 'any'. */ // "useUnknownInCatchVariables": true, /* Default catch clause variables as 'unknown' instead of 'any'. */ // "alwaysStrict": true, /* Ensure 'use strict' is always emitted. */ diff --git a/tests/baselines/reference/config/initTSConfig/Initialized TSConfig with files options/tsconfig.json b/tests/baselines/reference/config/initTSConfig/Initialized TSConfig with files options/tsconfig.json index 491aeff0028e0..967993add707c 100644 --- a/tests/baselines/reference/config/initTSConfig/Initialized TSConfig with files options/tsconfig.json +++ b/tests/baselines/reference/config/initTSConfig/Initialized TSConfig with files options/tsconfig.json @@ -86,6 +86,7 @@ // "strictFunctionTypes": true, /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */ // "strictBindCallApply": true, /* Check that the arguments for 'bind', 'call', and 'apply' methods match the original function. */ // "strictPropertyInitialization": true, /* Check for class properties that are declared but not set in the constructor. */ + // "strictBuiltinIteratorReturn": true, /* Built-in iterators are instantiated with a 'TReturn' type of 'undefined' instead of 'any'. */ // "noImplicitThis": true, /* Enable error reporting when 'this' is given the type 'any'. */ // "useUnknownInCatchVariables": true, /* Default catch clause variables as 'unknown' instead of 'any'. */ // "alwaysStrict": true, /* Ensure 'use strict' is always emitted. */ diff --git a/tests/baselines/reference/config/initTSConfig/Initialized TSConfig with incorrect compiler option value/tsconfig.json b/tests/baselines/reference/config/initTSConfig/Initialized TSConfig with incorrect compiler option value/tsconfig.json index f8c514215956d..d4b97f4bacddd 100644 --- a/tests/baselines/reference/config/initTSConfig/Initialized TSConfig with incorrect compiler option value/tsconfig.json +++ b/tests/baselines/reference/config/initTSConfig/Initialized TSConfig with incorrect compiler option value/tsconfig.json @@ -86,6 +86,7 @@ // "strictFunctionTypes": true, /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */ // "strictBindCallApply": true, /* Check that the arguments for 'bind', 'call', and 'apply' methods match the original function. */ // "strictPropertyInitialization": true, /* Check for class properties that are declared but not set in the constructor. */ + // "strictBuiltinIteratorReturn": true, /* Built-in iterators are instantiated with a 'TReturn' type of 'undefined' instead of 'any'. */ // "noImplicitThis": true, /* Enable error reporting when 'this' is given the type 'any'. */ // "useUnknownInCatchVariables": true, /* Default catch clause variables as 'unknown' instead of 'any'. */ // "alwaysStrict": true, /* Ensure 'use strict' is always emitted. */ diff --git a/tests/baselines/reference/config/initTSConfig/Initialized TSConfig with incorrect compiler option/tsconfig.json b/tests/baselines/reference/config/initTSConfig/Initialized TSConfig with incorrect compiler option/tsconfig.json index 81804ba2c2eac..7454ba88665ba 100644 --- a/tests/baselines/reference/config/initTSConfig/Initialized TSConfig with incorrect compiler option/tsconfig.json +++ b/tests/baselines/reference/config/initTSConfig/Initialized TSConfig with incorrect compiler option/tsconfig.json @@ -86,6 +86,7 @@ // "strictFunctionTypes": true, /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */ // "strictBindCallApply": true, /* Check that the arguments for 'bind', 'call', and 'apply' methods match the original function. */ // "strictPropertyInitialization": true, /* Check for class properties that are declared but not set in the constructor. */ + // "strictBuiltinIteratorReturn": true, /* Built-in iterators are instantiated with a 'TReturn' type of 'undefined' instead of 'any'. */ // "noImplicitThis": true, /* Enable error reporting when 'this' is given the type 'any'. */ // "useUnknownInCatchVariables": true, /* Default catch clause variables as 'unknown' instead of 'any'. */ // "alwaysStrict": true, /* Ensure 'use strict' is always emitted. */ diff --git a/tests/baselines/reference/config/initTSConfig/Initialized TSConfig with list compiler options with enum value/tsconfig.json b/tests/baselines/reference/config/initTSConfig/Initialized TSConfig with list compiler options with enum value/tsconfig.json index ce7a7c1fd229a..479a4b735c4d5 100644 --- a/tests/baselines/reference/config/initTSConfig/Initialized TSConfig with list compiler options with enum value/tsconfig.json +++ b/tests/baselines/reference/config/initTSConfig/Initialized TSConfig with list compiler options with enum value/tsconfig.json @@ -86,6 +86,7 @@ // "strictFunctionTypes": true, /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */ // "strictBindCallApply": true, /* Check that the arguments for 'bind', 'call', and 'apply' methods match the original function. */ // "strictPropertyInitialization": true, /* Check for class properties that are declared but not set in the constructor. */ + // "strictBuiltinIteratorReturn": true, /* Built-in iterators are instantiated with a 'TReturn' type of 'undefined' instead of 'any'. */ // "noImplicitThis": true, /* Enable error reporting when 'this' is given the type 'any'. */ // "useUnknownInCatchVariables": true, /* Default catch clause variables as 'unknown' instead of 'any'. */ // "alwaysStrict": true, /* Ensure 'use strict' is always emitted. */ diff --git a/tests/baselines/reference/config/initTSConfig/Initialized TSConfig with list compiler options/tsconfig.json b/tests/baselines/reference/config/initTSConfig/Initialized TSConfig with list compiler options/tsconfig.json index 6d0dbd4fb8afd..3b59ff8581625 100644 --- a/tests/baselines/reference/config/initTSConfig/Initialized TSConfig with list compiler options/tsconfig.json +++ b/tests/baselines/reference/config/initTSConfig/Initialized TSConfig with list compiler options/tsconfig.json @@ -86,6 +86,7 @@ // "strictFunctionTypes": true, /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */ // "strictBindCallApply": true, /* Check that the arguments for 'bind', 'call', and 'apply' methods match the original function. */ // "strictPropertyInitialization": true, /* Check for class properties that are declared but not set in the constructor. */ + // "strictBuiltinIteratorReturn": true, /* Built-in iterators are instantiated with a 'TReturn' type of 'undefined' instead of 'any'. */ // "noImplicitThis": true, /* Enable error reporting when 'this' is given the type 'any'. */ // "useUnknownInCatchVariables": true, /* Default catch clause variables as 'unknown' instead of 'any'. */ // "alwaysStrict": true, /* Ensure 'use strict' is always emitted. */ diff --git a/tests/baselines/reference/config/showConfig/Show TSConfig with compileOnSave and more/tsconfig.json b/tests/baselines/reference/config/showConfig/Show TSConfig with compileOnSave and more/tsconfig.json index 27dff8d0b2c57..7796a64971d56 100644 --- a/tests/baselines/reference/config/showConfig/Show TSConfig with compileOnSave and more/tsconfig.json +++ b/tests/baselines/reference/config/showConfig/Show TSConfig with compileOnSave and more/tsconfig.json @@ -11,6 +11,7 @@ "strictFunctionTypes": true, "strictBindCallApply": true, "strictPropertyInitialization": true, + "strictBuiltinIteratorReturn": true, "alwaysStrict": true, "useUnknownInCatchVariables": true }, diff --git a/tests/baselines/reference/config/showConfig/Shows tsconfig for single option/strict/tsconfig.json b/tests/baselines/reference/config/showConfig/Shows tsconfig for single option/strict/tsconfig.json index a94c9ac06ee71..cb5f15904a123 100644 --- a/tests/baselines/reference/config/showConfig/Shows tsconfig for single option/strict/tsconfig.json +++ b/tests/baselines/reference/config/showConfig/Shows tsconfig for single option/strict/tsconfig.json @@ -7,6 +7,7 @@ "strictFunctionTypes": true, "strictBindCallApply": true, "strictPropertyInitialization": true, + "strictBuiltinIteratorReturn": true, "alwaysStrict": true, "useUnknownInCatchVariables": true } diff --git a/tests/baselines/reference/config/showConfig/Shows tsconfig for single option/strictBuiltinIteratorReturn/tsconfig.json b/tests/baselines/reference/config/showConfig/Shows tsconfig for single option/strictBuiltinIteratorReturn/tsconfig.json new file mode 100644 index 0000000000000..090835c267e13 --- /dev/null +++ b/tests/baselines/reference/config/showConfig/Shows tsconfig for single option/strictBuiltinIteratorReturn/tsconfig.json @@ -0,0 +1,5 @@ +{ + "compilerOptions": { + "strictBuiltinIteratorReturn": true + } +} diff --git a/tests/cases/compiler/jsFileCompilationWithMapFileAsJsWithOutDir.ts b/tests/cases/compiler/jsFileCompilationWithMapFileAsJsWithOutDir.ts index 9e39ae274b4fa..0f860626676c0 100644 --- a/tests/cases/compiler/jsFileCompilationWithMapFileAsJsWithOutDir.ts +++ b/tests/cases/compiler/jsFileCompilationWithMapFileAsJsWithOutDir.ts @@ -1,4 +1,4 @@ -// @allowJs: true,map +// @allowJs: true // @sourcemap: true // @outdir: out diff --git a/tests/cases/conformance/types/typeAliases/builtinIteratorReturn.ts b/tests/cases/conformance/types/typeAliases/builtinIteratorReturn.ts index 01ca67c5384f1..cc1852f5af8d3 100644 --- a/tests/cases/conformance/types/typeAliases/builtinIteratorReturn.ts +++ b/tests/cases/conformance/types/typeAliases/builtinIteratorReturn.ts @@ -1,6 +1,6 @@ // @target: esnext // @noEmit: true -// @noUncheckedIndexedAccess: * +// @strictBuiltinIteratorReturn: * declare const array: number[]; declare const map: Map; From 8578a4d78f2e00673e58fbf16876ddd5c9f34f6e Mon Sep 17 00:00:00 2001 From: Ron Buckton Date: Fri, 17 May 2024 12:41:49 -0400 Subject: [PATCH 14/17] Update baselines --- ...strictbuiltiniteratorreturn=false).symbols | 2 +- ...(strictbuiltiniteratorreturn=true).symbols | 2 +- ...lationWithMapFileAsJsWithOutDir.errors.txt | 10 ++---- ...ileCompilationWithMapFileAsJsWithOutDir.js | 6 +++- ...ompilationWithMapFileAsJsWithOutDir.js.map | 4 ++- ...ionWithMapFileAsJsWithOutDir.sourcemap.txt | 33 ++++++++++++++++++- ...mpilationWithMapFileAsJsWithOutDir.symbols | 4 +++ ...CompilationWithMapFileAsJsWithOutDir.types | 5 +++ 8 files changed, 53 insertions(+), 13 deletions(-) diff --git a/tests/baselines/reference/builtinIteratorReturn(strictbuiltiniteratorreturn=false).symbols b/tests/baselines/reference/builtinIteratorReturn(strictbuiltiniteratorreturn=false).symbols index 30883277c61a7..121fa7517084d 100644 --- a/tests/baselines/reference/builtinIteratorReturn(strictbuiltiniteratorreturn=false).symbols +++ b/tests/baselines/reference/builtinIteratorReturn(strictbuiltiniteratorreturn=false).symbols @@ -10,7 +10,7 @@ declare const map: Map; declare const set: Set; >set : Symbol(set, Decl(builtinIteratorReturn.ts, 2, 13)) ->Set : Symbol(Set, Decl(lib.es2015.collection.d.ts, --, --), Decl(lib.es2015.collection.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) +>Set : Symbol(Set, Decl(lib.es2015.collection.d.ts, --, --), Decl(lib.es2015.collection.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.esnext.collection.d.ts, --, --)) const i0 = array[Symbol.iterator](); >i0 : Symbol(i0, Decl(builtinIteratorReturn.ts, 4, 5)) diff --git a/tests/baselines/reference/builtinIteratorReturn(strictbuiltiniteratorreturn=true).symbols b/tests/baselines/reference/builtinIteratorReturn(strictbuiltiniteratorreturn=true).symbols index 30883277c61a7..121fa7517084d 100644 --- a/tests/baselines/reference/builtinIteratorReturn(strictbuiltiniteratorreturn=true).symbols +++ b/tests/baselines/reference/builtinIteratorReturn(strictbuiltiniteratorreturn=true).symbols @@ -10,7 +10,7 @@ declare const map: Map; declare const set: Set; >set : Symbol(set, Decl(builtinIteratorReturn.ts, 2, 13)) ->Set : Symbol(Set, Decl(lib.es2015.collection.d.ts, --, --), Decl(lib.es2015.collection.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) +>Set : Symbol(Set, Decl(lib.es2015.collection.d.ts, --, --), Decl(lib.es2015.collection.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.esnext.collection.d.ts, --, --)) const i0 = array[Symbol.iterator](); >i0 : Symbol(i0, Decl(builtinIteratorReturn.ts, 4, 5)) diff --git a/tests/baselines/reference/jsFileCompilationWithMapFileAsJsWithOutDir.errors.txt b/tests/baselines/reference/jsFileCompilationWithMapFileAsJsWithOutDir.errors.txt index 524c12bb6b3e0..13723c24505d7 100644 --- a/tests/baselines/reference/jsFileCompilationWithMapFileAsJsWithOutDir.errors.txt +++ b/tests/baselines/reference/jsFileCompilationWithMapFileAsJsWithOutDir.errors.txt @@ -1,17 +1,11 @@ -error TS6054: File 'b.js.map' has an unsupported extension. The only supported extensions are '.ts', '.tsx', '.d.ts', '.cts', '.d.cts', '.mts', '.d.mts'. - The file is in the program because: - Root file specified for compilation -error TS6504: File 'b.js' is a JavaScript file. Did you mean to enable the 'allowJs' option? +error TS6054: File 'b.js.map' has an unsupported extension. The only supported extensions are '.ts', '.tsx', '.d.ts', '.js', '.jsx', '.cts', '.d.cts', '.cjs', '.mts', '.d.mts', '.mjs'. The file is in the program because: Root file specified for compilation -!!! error TS6054: File 'b.js.map' has an unsupported extension. The only supported extensions are '.ts', '.tsx', '.d.ts', '.cts', '.d.cts', '.mts', '.d.mts'. +!!! error TS6054: File 'b.js.map' has an unsupported extension. The only supported extensions are '.ts', '.tsx', '.d.ts', '.js', '.jsx', '.cts', '.d.cts', '.cjs', '.mts', '.d.mts', '.mjs'. !!! error TS6054: The file is in the program because: !!! error TS6054: Root file specified for compilation -!!! error TS6504: File 'b.js' is a JavaScript file. Did you mean to enable the 'allowJs' option? -!!! error TS6504: The file is in the program because: -!!! error TS6504: Root file specified for compilation ==== a.ts (0 errors) ==== class c { } diff --git a/tests/baselines/reference/jsFileCompilationWithMapFileAsJsWithOutDir.js b/tests/baselines/reference/jsFileCompilationWithMapFileAsJsWithOutDir.js index 9fc16e26cd5de..ed21437983493 100644 --- a/tests/baselines/reference/jsFileCompilationWithMapFileAsJsWithOutDir.js +++ b/tests/baselines/reference/jsFileCompilationWithMapFileAsJsWithOutDir.js @@ -18,4 +18,8 @@ var c = /** @class */ (function () { } return c; }()); -//# sourceMappingURL=a.js.map \ No newline at end of file +//# sourceMappingURL=a.js.map +//// [b.js] +function bar() { +} +//# sourceMappingURL=b.js.map \ No newline at end of file diff --git a/tests/baselines/reference/jsFileCompilationWithMapFileAsJsWithOutDir.js.map b/tests/baselines/reference/jsFileCompilationWithMapFileAsJsWithOutDir.js.map index 2291166790d3f..7cc002476841d 100644 --- a/tests/baselines/reference/jsFileCompilationWithMapFileAsJsWithOutDir.js.map +++ b/tests/baselines/reference/jsFileCompilationWithMapFileAsJsWithOutDir.js.map @@ -1,2 +1,4 @@ //// [a.js.map] -{"version":3,"file":"a.js","sourceRoot":"","sources":["../a.ts"],"names":[],"mappings":"AAAA;IAAA;IACA,CAAC;IAAD,QAAC;AAAD,CAAC,AADD,IACC"} \ No newline at end of file +{"version":3,"file":"a.js","sourceRoot":"","sources":["../a.ts"],"names":[],"mappings":"AAAA;IAAA;IACA,CAAC;IAAD,QAAC;AAAD,CAAC,AADD,IACC"} +//// [b.js.map] +{"version":3,"file":"b.js","sourceRoot":"","sources":["../b.js"],"names":[],"mappings":"AAAA,SAAS,GAAG;AACZ,CAAC"} \ No newline at end of file diff --git a/tests/baselines/reference/jsFileCompilationWithMapFileAsJsWithOutDir.sourcemap.txt b/tests/baselines/reference/jsFileCompilationWithMapFileAsJsWithOutDir.sourcemap.txt index d9a7622e95568..a00057db7c49b 100644 --- a/tests/baselines/reference/jsFileCompilationWithMapFileAsJsWithOutDir.sourcemap.txt +++ b/tests/baselines/reference/jsFileCompilationWithMapFileAsJsWithOutDir.sourcemap.txt @@ -54,4 +54,35 @@ sourceFile:../a.ts 3 >Emitted(5, 2) Source(1, 1) + SourceIndex(0) 4 >Emitted(5, 6) Source(2, 2) + SourceIndex(0) --- ->>>//# sourceMappingURL=a.js.map \ No newline at end of file +>>>//# sourceMappingURL=a.js.map=================================================================== +JsFile: b.js +mapUrl: b.js.map +sourceRoot: +sources: ../b.js +=================================================================== +------------------------------------------------------------------- +emittedFile:out/b.js +sourceFile:../b.js +------------------------------------------------------------------- +>>>function bar() { +1 > +2 >^^^^^^^^^ +3 > ^^^ +1 > +2 >function +3 > bar +1 >Emitted(1, 1) Source(1, 1) + SourceIndex(0) +2 >Emitted(1, 10) Source(1, 10) + SourceIndex(0) +3 >Emitted(1, 13) Source(1, 13) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 >() { + > +2 >} +1 >Emitted(2, 1) Source(2, 1) + SourceIndex(0) +2 >Emitted(2, 2) Source(2, 2) + SourceIndex(0) +--- +>>>//# sourceMappingURL=b.js.map \ No newline at end of file diff --git a/tests/baselines/reference/jsFileCompilationWithMapFileAsJsWithOutDir.symbols b/tests/baselines/reference/jsFileCompilationWithMapFileAsJsWithOutDir.symbols index 23c4abec429c9..822b9551f655b 100644 --- a/tests/baselines/reference/jsFileCompilationWithMapFileAsJsWithOutDir.symbols +++ b/tests/baselines/reference/jsFileCompilationWithMapFileAsJsWithOutDir.symbols @@ -5,3 +5,7 @@ class c { >c : Symbol(c, Decl(a.ts, 0, 0)) } +=== b.js === +function bar() { +>bar : Symbol(bar, Decl(b.js, 0, 0)) +} diff --git a/tests/baselines/reference/jsFileCompilationWithMapFileAsJsWithOutDir.types b/tests/baselines/reference/jsFileCompilationWithMapFileAsJsWithOutDir.types index 2dcd08b59fadd..db36a88424832 100644 --- a/tests/baselines/reference/jsFileCompilationWithMapFileAsJsWithOutDir.types +++ b/tests/baselines/reference/jsFileCompilationWithMapFileAsJsWithOutDir.types @@ -6,3 +6,8 @@ class c { > : ^ } +=== b.js === +function bar() { +>bar : () => void +> : ^^^^^^^^^^ +} From 51151ee3362006a6cceedde152b5d8d4d102df15 Mon Sep 17 00:00:00 2001 From: Ron Buckton Date: Fri, 17 May 2024 17:03:04 -0400 Subject: [PATCH 15/17] Change default for 'TNext' to 'any' --- src/lib/es2015.generator.d.ts | 2 +- src/lib/es2015.iterable.d.ts | 6 +- src/lib/es2018.asyncgenerator.d.ts | 2 +- src/lib/es2018.asynciterable.d.ts | 6 +- .../reference/YieldStarExpression4_es6.types | 4 +- .../dependentDestructuredVariables.types | 16 +- .../destructuringAssignmentWithDefault2.types | 28 +-- ....asyncGenerators.classMethods.es2015.types | 4 +- ....asyncGenerators.classMethods.es2018.types | 4 +- ...ter.asyncGenerators.classMethods.es5.types | 4 +- ...nerators.functionDeclarations.es2015.types | 4 +- ...nerators.functionDeclarations.es2018.types | 4 +- ...cGenerators.functionDeclarations.es5.types | 4 +- ...enerators.functionExpressions.es2015.types | 8 +- ...enerators.functionExpressions.es2018.types | 8 +- ...ncGenerators.functionExpressions.es5.types | 8 +- ...nerators.objectLiteralMethods.es2015.types | 12 +- ...nerators.objectLiteralMethods.es2018.types | 12 +- ...cGenerators.objectLiteralMethods.es5.types | 12 +- .../esNextWeakRefs_IterableWeakMap.types | 3 +- .../excessiveStackDepthFlatArray.types | 3 +- tests/baselines/reference/for-of29.errors.txt | 4 +- tests/baselines/reference/for-of29.types | 4 +- .../generatorReturnTypeFallback.1.types | 4 +- .../generatorReturnTypeFallback.5.types | 3 +- .../generatorReturnTypeInference.types | 8 +- ...eneratorReturnTypeInferenceNonStrict.types | 8 +- .../reference/generatorTypeCheck13.types | 3 +- .../reference/generatorTypeCheck17.types | 6 +- .../reference/generatorTypeCheck18.types | 8 +- .../reference/generatorTypeCheck19.types | 3 +- .../reference/generatorTypeCheck20.types | 4 +- .../reference/generatorTypeCheck21.types | 4 +- .../reference/generatorTypeCheck22.types | 4 +- .../reference/generatorTypeCheck23.types | 4 +- .../reference/generatorTypeCheck24.types | 4 +- .../reference/generatorTypeCheck25.errors.txt | 8 +- .../reference/generatorTypeCheck25.types | 16 +- .../reference/generatorTypeCheck26.types | 3 +- .../reference/generatorTypeCheck27.types | 11 +- .../reference/generatorTypeCheck28.types | 11 +- .../reference/generatorTypeCheck29.types | 14 +- .../reference/generatorTypeCheck30.types | 14 +- .../reference/generatorTypeCheck31.types | 4 +- .../reference/generatorTypeCheck45.types | 7 +- .../reference/generatorTypeCheck46.types | 15 +- .../reference/generatorTypeCheck53.types | 4 +- .../reference/generatorTypeCheck54.types | 4 +- .../reference/generatorTypeCheck62.errors.txt | 16 +- .../reference/generatorTypeCheck62.types | 28 +-- .../reference/generatorTypeCheck63.errors.txt | 24 +-- .../reference/generatorTypeCheck63.types | 32 +-- .../reference/generatorTypeCheck7.errors.txt | 4 +- .../reference/generatorTypeCheck8.errors.txt | 4 +- ...rtHelpersNoHelpersForAsyncGenerators.types | 4 +- ....asyncGenerators.classMethods.es2018.types | 4 +- ...nerators.functionDeclarations.es2018.types | 4 +- ...enerators.functionExpressions.es2018.types | 8 +- ...nerators.objectLiteralMethods.es2018.types | 12 +- .../types.asyncGenerators.es2018.1.types | 194 ++++++++---------- .../types.asyncGenerators.es2018.2.errors.txt | 84 ++++---- .../types.asyncGenerators.es2018.2.types | 164 +++++++-------- tests/baselines/reference/uniqueSymbols.types | 21 +- .../reference/uniqueSymbolsDeclarations.types | 21 +- .../reference/yieldExpression1.types | 8 +- .../yieldExpressionInnerCommentEmit.types | 4 +- .../codeFixAddMissingProperties22.ts | 2 +- 67 files changed, 467 insertions(+), 507 deletions(-) diff --git a/src/lib/es2015.generator.d.ts b/src/lib/es2015.generator.d.ts index 7c6929173a0e4..064260fc47023 100644 --- a/src/lib/es2015.generator.d.ts +++ b/src/lib/es2015.generator.d.ts @@ -1,6 +1,6 @@ /// -interface Generator extends Iterator { +interface Generator extends 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/es2015.iterable.d.ts b/src/lib/es2015.iterable.d.ts index 56126980d48e6..9ea54b67f7c45 100644 --- a/src/lib/es2015.iterable.d.ts +++ b/src/lib/es2015.iterable.d.ts @@ -20,18 +20,18 @@ 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; throw?(e?: any): IteratorResult; } -interface Iterable { +interface Iterable { [Symbol.iterator](): Iterator; } -interface IterableIterator extends Iterator { +interface IterableIterator extends Iterator { [Symbol.iterator](): IterableIterator; } diff --git a/src/lib/es2018.asyncgenerator.d.ts b/src/lib/es2018.asyncgenerator.d.ts index f6966264c8be4..8ce3ba23a4d47 100644 --- a/src/lib/es2018.asyncgenerator.d.ts +++ b/src/lib/es2018.asyncgenerator.d.ts @@ -1,6 +1,6 @@ /// -interface AsyncGenerator extends AsyncIterator { +interface AsyncGenerator extends 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/src/lib/es2018.asynciterable.d.ts b/src/lib/es2018.asynciterable.d.ts index 5d5a624abfe5f..5b868867f430d 100644 --- a/src/lib/es2018.asynciterable.d.ts +++ b/src/lib/es2018.asynciterable.d.ts @@ -9,17 +9,17 @@ interface SymbolConstructor { readonly asyncIterator: unique 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>; throw?(e?: any): Promise>; } -interface AsyncIterable { +interface AsyncIterable { [Symbol.asyncIterator](): AsyncIterator; } -interface AsyncIterableIterator extends AsyncIterator { +interface AsyncIterableIterator extends AsyncIterator { [Symbol.asyncIterator](): AsyncIterableIterator; } diff --git a/tests/baselines/reference/YieldStarExpression4_es6.types b/tests/baselines/reference/YieldStarExpression4_es6.types index 186939d83832f..c2c8b54fde262 100644 --- a/tests/baselines/reference/YieldStarExpression4_es6.types +++ b/tests/baselines/reference/YieldStarExpression4_es6.types @@ -2,8 +2,8 @@ === YieldStarExpression4_es6.ts === function *g() { ->g : () => Generator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>g : () => Generator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ yield * []; >yield * [] : any diff --git a/tests/baselines/reference/dependentDestructuredVariables.types b/tests/baselines/reference/dependentDestructuredVariables.types index 6aa210e42d472..ff1212e2dbe78 100644 --- a/tests/baselines/reference/dependentDestructuredVariables.types +++ b/tests/baselines/reference/dependentDestructuredVariables.types @@ -789,8 +789,8 @@ const reducerBroken = (state: number, { type, payload }: Action3) => { // Repro from #46143 declare var it: Iterator; ->it : Iterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>it : Iterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ const { value, done } = it.next(); >value : any @@ -799,12 +799,12 @@ const { value, done } = it.next(); > : ^^^^^^^^^^^^^^^^^^^ >it.next() : IteratorResult > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->it.next : (...args: [] | [unknown]) => IteratorResult -> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->it : Iterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->next : (...args: [] | [unknown]) => IteratorResult -> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>it.next : (...args: [] | [any]) => IteratorResult +> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>it : Iterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +>next : (...args: [] | [any]) => IteratorResult +> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ if (!done) { >!done : boolean diff --git a/tests/baselines/reference/destructuringAssignmentWithDefault2.types b/tests/baselines/reference/destructuringAssignmentWithDefault2.types index c2661c2eea527..3ebefa1e826e5 100644 --- a/tests/baselines/reference/destructuringAssignmentWithDefault2.types +++ b/tests/baselines/reference/destructuringAssignmentWithDefault2.types @@ -147,8 +147,8 @@ const { x: z3 = undefined } = a; declare const r: Iterator; ->r : Iterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>r : Iterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ let done: boolean; >done : boolean @@ -173,12 +173,12 @@ let value; > : ^^^ >r.next() : IteratorResult > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->r.next : (...args: [] | [unknown]) => IteratorResult -> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->r : Iterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->next : (...args: [] | [unknown]) => IteratorResult -> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>r.next : (...args: [] | [any]) => IteratorResult +> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>r : Iterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +>next : (...args: [] | [any]) => IteratorResult +> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ({ done: done = false, value } = r.next()); >({ done: done = false, value } = r.next()) : IteratorResult @@ -199,10 +199,10 @@ let value; > : ^^^ >r.next() : IteratorResult > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->r.next : (...args: [] | [unknown]) => IteratorResult -> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->r : Iterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->next : (...args: [] | [unknown]) => IteratorResult -> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>r.next : (...args: [] | [any]) => IteratorResult +> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>r : Iterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +>next : (...args: [] | [any]) => IteratorResult +> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/emitter.asyncGenerators.classMethods.es2015.types b/tests/baselines/reference/emitter.asyncGenerators.classMethods.es2015.types index 21621981a4c79..dc92b10c489ff 100644 --- a/tests/baselines/reference/emitter.asyncGenerators.classMethods.es2015.types +++ b/tests/baselines/reference/emitter.asyncGenerators.classMethods.es2015.types @@ -46,8 +46,8 @@ class 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 01da6be08506f..42a23acadf4ed 100644 --- a/tests/baselines/reference/emitter.asyncGenerators.classMethods.es2018.types +++ b/tests/baselines/reference/emitter.asyncGenerators.classMethods.es2018.types @@ -46,8 +46,8 @@ class 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 b11c7c75fa475..93ea693423f50 100644 --- a/tests/baselines/reference/emitter.asyncGenerators.classMethods.es5.types +++ b/tests/baselines/reference/emitter.asyncGenerators.classMethods.es5.types @@ -46,8 +46,8 @@ class 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 d291bdc0cd056..d3f253300a53c 100644 --- a/tests/baselines/reference/emitter.asyncGenerators.functionDeclarations.es2015.types +++ b/tests/baselines/reference/emitter.asyncGenerators.functionDeclarations.es2015.types @@ -27,8 +27,8 @@ async function * f3() { } === 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 f737ba595effd..c9e8a861c147e 100644 --- a/tests/baselines/reference/emitter.asyncGenerators.functionDeclarations.es2018.types +++ b/tests/baselines/reference/emitter.asyncGenerators.functionDeclarations.es2018.types @@ -27,8 +27,8 @@ async function * f3() { } === 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 3489a92210c5e..e9f6d8a5c12e3 100644 --- a/tests/baselines/reference/emitter.asyncGenerators.functionDeclarations.es5.types +++ b/tests/baselines/reference/emitter.asyncGenerators.functionDeclarations.es5.types @@ -27,8 +27,8 @@ async function * f3() { } === 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 b3d8d1525c942..385726d4ec892 100644 --- a/tests/baselines/reference/emitter.asyncGenerators.functionExpressions.es2015.types +++ b/tests/baselines/reference/emitter.asyncGenerators.functionExpressions.es2015.types @@ -33,10 +33,10 @@ const f3 = async function * () { } === 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 05ff8b2df1042..074449e1ccf11 100644 --- a/tests/baselines/reference/emitter.asyncGenerators.functionExpressions.es2018.types +++ b/tests/baselines/reference/emitter.asyncGenerators.functionExpressions.es2018.types @@ -33,10 +33,10 @@ const f3 = async function * () { } === 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 ff2dc953caf2b..0e2315bd1ddc2 100644 --- a/tests/baselines/reference/emitter.asyncGenerators.functionExpressions.es5.types +++ b/tests/baselines/reference/emitter.asyncGenerators.functionExpressions.es5.types @@ -33,10 +33,10 @@ const f3 = async function * () { } === 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 3aa61b810a254..58de2b68a6ca4 100644 --- a/tests/baselines/reference/emitter.asyncGenerators.objectLiteralMethods.es2015.types +++ b/tests/baselines/reference/emitter.asyncGenerators.objectLiteralMethods.es2015.types @@ -48,14 +48,14 @@ const o3 = { } === 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 91624582a4ecd..024281295e40d 100644 --- a/tests/baselines/reference/emitter.asyncGenerators.objectLiteralMethods.es2018.types +++ b/tests/baselines/reference/emitter.asyncGenerators.objectLiteralMethods.es2018.types @@ -48,14 +48,14 @@ const o3 = { } === 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 3ffdf9a74569a..6bb7ecf62404c 100644 --- a/tests/baselines/reference/emitter.asyncGenerators.objectLiteralMethods.es5.types +++ b/tests/baselines/reference/emitter.asyncGenerators.objectLiteralMethods.es5.types @@ -48,14 +48,14 @@ const o3 = { } === 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/esNextWeakRefs_IterableWeakMap.types b/tests/baselines/reference/esNextWeakRefs_IterableWeakMap.types index 2aee7c76d4e61..d70b8629787fc 100644 --- a/tests/baselines/reference/esNextWeakRefs_IterableWeakMap.types +++ b/tests/baselines/reference/esNextWeakRefs_IterableWeakMap.types @@ -436,8 +436,7 @@ export class IterableWeakMap implements WeakMap { > : ^ yield [key, value]; ->yield [key, value] : unknown -> : ^^^^^^^ +>yield [key, value] : any >[key, value] : [K, V] > : ^^^^^^ >key : K diff --git a/tests/baselines/reference/excessiveStackDepthFlatArray.types b/tests/baselines/reference/excessiveStackDepthFlatArray.types index a9e2318d002c3..c08dcfc75e20a 100644 --- a/tests/baselines/reference/excessiveStackDepthFlatArray.types +++ b/tests/baselines/reference/excessiveStackDepthFlatArray.types @@ -1,8 +1,7 @@ //// [tests/cases/compiler/excessiveStackDepthFlatArray.ts] //// === Performance Stats === -Type Count: 1,000 -Instantiation count: 2,500 +Instantiation count: 1,000 === index.tsx === interface MiddlewareArray extends Array {} diff --git a/tests/baselines/reference/for-of29.errors.txt b/tests/baselines/reference/for-of29.errors.txt index 6378088712f36..f091e9dc9a694 100644 --- a/tests/baselines/reference/for-of29.errors.txt +++ b/tests/baselines/reference/for-of29.errors.txt @@ -1,4 +1,4 @@ -for-of29.ts(5,15): error TS2488: Type '{ [Symbol.iterator]?(): Iterator; }' must have a '[Symbol.iterator]()' method that returns an iterator. +for-of29.ts(5,15): error TS2488: Type '{ [Symbol.iterator]?(): Iterator; }' must have a '[Symbol.iterator]()' method that returns an iterator. ==== for-of29.ts (1 errors) ==== @@ -8,5 +8,5 @@ for-of29.ts(5,15): 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 db5e9dd4829ae..e8ec7cc03e33d 100644 --- a/tests/baselines/reference/for-of29.types +++ b/tests/baselines/reference/for-of29.types @@ -20,6 +20,6 @@ var iterableWithOptionalIterator: { for (var v of iterableWithOptionalIterator) { } >v : any > : ^^^ ->iterableWithOptionalIterator : { [Symbol.iterator]?(): Iterator; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>iterableWithOptionalIterator : { [Symbol.iterator]?(): Iterator; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/generatorReturnTypeFallback.1.types b/tests/baselines/reference/generatorReturnTypeFallback.1.types index a2a996a95f453..fc04c48fbaf7c 100644 --- a/tests/baselines/reference/generatorReturnTypeFallback.1.types +++ b/tests/baselines/reference/generatorReturnTypeFallback.1.types @@ -3,8 +3,8 @@ === generatorReturnTypeFallback.1.ts === // Allow generators to fallback to IterableIterator if they do not need a type for the sent value while in strictNullChecks mode. function* f() { ->f : () => IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>f : () => IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ yield 1; >yield 1 : any diff --git a/tests/baselines/reference/generatorReturnTypeFallback.5.types b/tests/baselines/reference/generatorReturnTypeFallback.5.types index 8f0ed0f37828c..a3eab2c4e3bd2 100644 --- a/tests/baselines/reference/generatorReturnTypeFallback.5.types +++ b/tests/baselines/reference/generatorReturnTypeFallback.5.types @@ -7,8 +7,7 @@ function* f(): IterableIterator { > : ^^^^^^ yield 1; ->yield 1 : unknown -> : ^^^^^^^ +>yield 1 : any >1 : 1 > : ^ } diff --git a/tests/baselines/reference/generatorReturnTypeInference.types b/tests/baselines/reference/generatorReturnTypeInference.types index 58fe0716a12d8..4d444b2449e07 100644 --- a/tests/baselines/reference/generatorReturnTypeInference.types +++ b/tests/baselines/reference/generatorReturnTypeInference.types @@ -40,8 +40,8 @@ function* g002() { // Generator } function* g003() { // Generator ->g003 : () => Generator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>g003 : () => Generator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ yield* []; >yield* [] : any @@ -51,8 +51,8 @@ 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 ee7a5ba36000e..e2ea6cb63e0dd 100644 --- a/tests/baselines/reference/generatorReturnTypeInferenceNonStrict.types +++ b/tests/baselines/reference/generatorReturnTypeInferenceNonStrict.types @@ -40,8 +40,8 @@ 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. @@ -53,8 +53,8 @@ function* g003() { // Generator } function* g004() { // Generator ->g004 : () => Generator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>g004 : () => Generator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ yield* iterableIterator; >yield* iterableIterator : any diff --git a/tests/baselines/reference/generatorTypeCheck13.types b/tests/baselines/reference/generatorTypeCheck13.types index d3a8c8d8650dc..6144546acc248 100644 --- a/tests/baselines/reference/generatorTypeCheck13.types +++ b/tests/baselines/reference/generatorTypeCheck13.types @@ -6,8 +6,7 @@ function* g(): IterableIterator { > : ^^^^^^ yield 0; ->yield 0 : unknown -> : ^^^^^^^ +>yield 0 : any >0 : 0 > : ^ diff --git a/tests/baselines/reference/generatorTypeCheck17.types b/tests/baselines/reference/generatorTypeCheck17.types index 794f2dd6b743c..4f10af02fab72 100644 --- a/tests/baselines/reference/generatorTypeCheck17.types +++ b/tests/baselines/reference/generatorTypeCheck17.types @@ -20,12 +20,10 @@ function* g(): IterableIterator { > : ^^^^^^ yield; ->yield : unknown -> : ^^^^^^^ +>yield : any yield new Bar; ->yield new Bar : unknown -> : ^^^^^^^ +>yield new Bar : any >new Bar : Bar > : ^^^ >Bar : typeof Bar diff --git a/tests/baselines/reference/generatorTypeCheck18.types b/tests/baselines/reference/generatorTypeCheck18.types index 48a4b322681e6..a7d2eca6795f2 100644 --- a/tests/baselines/reference/generatorTypeCheck18.types +++ b/tests/baselines/reference/generatorTypeCheck18.types @@ -18,12 +18,12 @@ function* g(): IterableIterator { > : ^^^^^^ yield; ->yield : unknown -> : ^^^^^^^ +>yield : any +> : ^^^ yield new Baz; ->yield new Baz : unknown -> : ^^^^^^^ +>yield new Baz : any +> : ^^^ >new Baz : Baz > : ^^^ >Baz : typeof Baz diff --git a/tests/baselines/reference/generatorTypeCheck19.types b/tests/baselines/reference/generatorTypeCheck19.types index 64f52e3d4438a..b25b28b31670b 100644 --- a/tests/baselines/reference/generatorTypeCheck19.types +++ b/tests/baselines/reference/generatorTypeCheck19.types @@ -20,8 +20,7 @@ function* g(): IterableIterator { > : ^^^^^^ yield; ->yield : unknown -> : ^^^^^^^ +>yield : any yield * [new Bar]; >yield * [new Bar] : any diff --git a/tests/baselines/reference/generatorTypeCheck20.types b/tests/baselines/reference/generatorTypeCheck20.types index eed1b80840a85..469c7036bbefb 100644 --- a/tests/baselines/reference/generatorTypeCheck20.types +++ b/tests/baselines/reference/generatorTypeCheck20.types @@ -18,8 +18,8 @@ function* g(): IterableIterator { > : ^^^^^^ yield; ->yield : unknown -> : ^^^^^^^ +>yield : any +> : ^^^ yield * [new Baz]; >yield * [new Baz] : any diff --git a/tests/baselines/reference/generatorTypeCheck21.types b/tests/baselines/reference/generatorTypeCheck21.types index b263e050db7fb..55f2d96377a23 100644 --- a/tests/baselines/reference/generatorTypeCheck21.types +++ b/tests/baselines/reference/generatorTypeCheck21.types @@ -20,8 +20,8 @@ function* g(): IterableIterator { > : ^^^^^^ yield; ->yield : unknown -> : ^^^^^^^ +>yield : any +> : ^^^ yield * new Bar; >yield * new Bar : any diff --git a/tests/baselines/reference/generatorTypeCheck22.types b/tests/baselines/reference/generatorTypeCheck22.types index 3e05be0eaa5d9..f8f6580b45433 100644 --- a/tests/baselines/reference/generatorTypeCheck22.types +++ b/tests/baselines/reference/generatorTypeCheck22.types @@ -22,8 +22,8 @@ class Baz { 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 2fdf66a6e6976..50e76794cc437 100644 --- a/tests/baselines/reference/generatorTypeCheck23.types +++ b/tests/baselines/reference/generatorTypeCheck23.types @@ -22,8 +22,8 @@ class Baz { 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 13bfe853c6d4b..d0869e1134889 100644 --- a/tests/baselines/reference/generatorTypeCheck24.types +++ b/tests/baselines/reference/generatorTypeCheck24.types @@ -22,8 +22,8 @@ class Baz { 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 5a0fdf0fc791a..2113fedd55fd5 100644 --- a/tests/baselines/reference/generatorTypeCheck25.errors.txt +++ b/tests/baselines/reference/generatorTypeCheck25.errors.txt @@ -1,5 +1,5 @@ -generatorTypeCheck25.ts(4,5): error TS2322: Type '() => Generator' is not assignable to type '() => Iterable'. - Call signature return types 'Generator' and 'Iterable' are incompatible. +generatorTypeCheck25.ts(4,5): error TS2322: Type '() => Generator' is not assignable to type '() => Iterable'. + Call signature return types 'Generator' and 'Iterable' are incompatible. The types returned by '[Symbol.iterator]().next(...)' are incompatible between these types. Type 'IteratorResult' is not assignable to type 'IteratorResult'. Type 'IteratorYieldResult' is not assignable to type 'IteratorResult'. @@ -14,8 +14,8 @@ generatorTypeCheck25.ts(4,5): error TS2322: Type '() => Generator Iterable = function* () { ~~ -!!! error TS2322: Type '() => Generator' is not assignable to type '() => Iterable'. -!!! error TS2322: Call signature return types 'Generator' and 'Iterable' are incompatible. +!!! error TS2322: Type '() => Generator' is not assignable to type '() => Iterable'. +!!! error TS2322: Call signature return types 'Generator' and 'Iterable' are incompatible. !!! error TS2322: The types returned by '[Symbol.iterator]().next(...)' are incompatible between these types. !!! error TS2322: Type 'IteratorResult' is not assignable to type 'IteratorResult'. !!! error TS2322: Type 'IteratorYieldResult' is not assignable to type 'IteratorResult'. diff --git a/tests/baselines/reference/generatorTypeCheck25.types b/tests/baselines/reference/generatorTypeCheck25.types index 846e48dd64922..322bb4b92688c 100644 --- a/tests/baselines/reference/generatorTypeCheck25.types +++ b/tests/baselines/reference/generatorTypeCheck25.types @@ -24,24 +24,24 @@ 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 : unknown -> : ^^^^^^^ +>yield : any +> : ^^^ yield new Bar; ->yield new Bar : unknown -> : ^^^^^^^ +>yield new Bar : any +> : ^^^ >new Bar : Bar > : ^^^ >Bar : typeof Bar > : ^^^^^^^^^^ yield new Baz; ->yield new Baz : unknown -> : ^^^^^^^ +>yield new Baz : any +> : ^^^ >new Baz : Baz > : ^^^ >Baz : typeof Baz diff --git a/tests/baselines/reference/generatorTypeCheck26.types b/tests/baselines/reference/generatorTypeCheck26.types index dc96bd5c8db2b..7f75848a3357d 100644 --- a/tests/baselines/reference/generatorTypeCheck26.types +++ b/tests/baselines/reference/generatorTypeCheck26.types @@ -10,8 +10,7 @@ function* g(): IterableIterator<(x: string) => number, (x: string) => number> { > : ^^^^^^ yield x => x.length; ->yield x => x.length : unknown -> : ^^^^^^^ +>yield x => x.length : any >x => x.length : (x: string) => number > : ^ ^^^^^^^^^^^^^^^^^^^ >x : string diff --git a/tests/baselines/reference/generatorTypeCheck27.types b/tests/baselines/reference/generatorTypeCheck27.types index 5306fd6d67f8a..fabc419cdbfad 100644 --- a/tests/baselines/reference/generatorTypeCheck27.types +++ b/tests/baselines/reference/generatorTypeCheck27.types @@ -10,14 +10,13 @@ function* g(): IterableIterator<(x: string) => number> { yield * function* () { >yield * function* () { yield x => x.length; } () : void > : ^^^^ ->function* () { yield x => x.length; } () : Generator<(x: string) => number, void, unknown> -> : ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->function* () { yield x => x.length; } : () => Generator<(x: string) => number, void, unknown> -> : ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>function* () { yield x => x.length; } () : Generator<(x: string) => number, void, any> +> : ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>function* () { yield x => x.length; } : () => Generator<(x: string) => number, void, any> +> : ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ yield x => x.length; ->yield x => x.length : unknown -> : ^^^^^^^ +>yield x => x.length : any >x => x.length : (x: string) => number > : ^ ^^^^^^^^^^^^^^^^^^^ >x : string diff --git a/tests/baselines/reference/generatorTypeCheck28.types b/tests/baselines/reference/generatorTypeCheck28.types index e340610f043b7..be2015e367105 100644 --- a/tests/baselines/reference/generatorTypeCheck28.types +++ b/tests/baselines/reference/generatorTypeCheck28.types @@ -10,12 +10,12 @@ 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, unknown>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>{ *[Symbol.iterator]() { yield x => x.length; } } : { [Symbol.iterator](): Generator<(x: string) => number, void, any>; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ *[Symbol.iterator]() { ->[Symbol.iterator] : () => Generator<(x: string) => number, void, unknown> -> : ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>[Symbol.iterator] : () => Generator<(x: string) => number, void, any> +> : ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Symbol.iterator : unique symbol > : ^^^^^^^^^^^^^ >Symbol : SymbolConstructor @@ -24,8 +24,7 @@ function* g(): IterableIterator<(x: string) => number> { > : ^^^^^^^^^^^^^ yield x => x.length; ->yield x => x.length : unknown -> : ^^^^^^^ +>yield x => x.length : any >x => x.length : (x: string) => number > : ^ ^^^^^^^^^^^^^^^^^^^ >x : string diff --git a/tests/baselines/reference/generatorTypeCheck29.types b/tests/baselines/reference/generatorTypeCheck29.types index d3eeb00dce788..2056a0db6323b 100644 --- a/tests/baselines/reference/generatorTypeCheck29.types +++ b/tests/baselines/reference/generatorTypeCheck29.types @@ -8,16 +8,14 @@ function* g2(): Iterator number>> { > : ^^^^^^ yield function* () { ->yield function* () { yield x => x.length; } () : unknown -> : ^^^^^^^ ->function* () { yield x => x.length; } () : Generator<(x: string) => number, void, unknown> -> : ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->function* () { yield x => x.length; } : () => Generator<(x: string) => number, void, unknown> -> : ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>yield function* () { yield x => x.length; } () : any +>function* () { yield x => x.length; } () : Generator<(x: string) => number, void, any> +> : ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>function* () { yield x => x.length; } : () => Generator<(x: string) => number, void, any> +> : ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ yield x => x.length; ->yield x => x.length : unknown -> : ^^^^^^^ +>yield x => x.length : any >x => x.length : (x: string) => number > : ^ ^^^^^^^^^^^^^^^^^^^ >x : string diff --git a/tests/baselines/reference/generatorTypeCheck30.types b/tests/baselines/reference/generatorTypeCheck30.types index 1c384a7a88c46..dacc0a2b8bc25 100644 --- a/tests/baselines/reference/generatorTypeCheck30.types +++ b/tests/baselines/reference/generatorTypeCheck30.types @@ -8,16 +8,14 @@ function* g2(): Iterator number>> { > : ^^^^^^ yield function* () { ->yield function* () { yield x => x.length; } () : unknown -> : ^^^^^^^ ->function* () { yield x => x.length; } () : Generator<(x: string) => number, void, unknown> -> : ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->function* () { yield x => x.length; } : () => Generator<(x: string) => number, void, unknown> -> : ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>yield function* () { yield x => x.length; } () : any +>function* () { yield x => x.length; } () : Generator<(x: string) => number, void, any> +> : ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>function* () { yield x => x.length; } : () => Generator<(x: string) => number, void, any> +> : ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ yield x => x.length; ->yield x => x.length : unknown -> : ^^^^^^^ +>yield x => x.length : any >x => x.length : (x: string) => number > : ^ ^^^^^^^^^^^^^^^^^^^ >x : string diff --git a/tests/baselines/reference/generatorTypeCheck31.types b/tests/baselines/reference/generatorTypeCheck31.types index d44e5a4de6dfd..9bbb95c88d2cb 100644 --- a/tests/baselines/reference/generatorTypeCheck31.types +++ b/tests/baselines/reference/generatorTypeCheck31.types @@ -8,8 +8,8 @@ function* g2(): Iterator<() => Iterable<(x: string) => number>> { > : ^^^^^^ yield function* () { ->yield function* () { yield x => x.length; } () : unknown -> : ^^^^^^^ +>yield function* () { yield x => x.length; } () : any +> : ^^^ >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 8310da5802a93..ef7821d476f66 100644 --- a/tests/baselines/reference/generatorTypeCheck45.types +++ b/tests/baselines/reference/generatorTypeCheck45.types @@ -22,10 +22,9 @@ foo("", function* () { yield x => x.length }, p => undefined); // T is fixed, sh > : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >"" : "" > : ^^ ->function* () { yield x => x.length } : () => Generator<(x: string) => number, void, unknown> -> : ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->yield x => x.length : unknown -> : ^^^^^^^ +>function* () { yield x => x.length } : () => Generator<(x: string) => number, void, any> +> : ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>yield x => x.length : any >x => x.length : (x: string) => number > : ^ ^^^^^^^^^^^^^^^^^^^ >x : string diff --git a/tests/baselines/reference/generatorTypeCheck46.types b/tests/baselines/reference/generatorTypeCheck46.types index ab9d9998763f6..c94372a78ebcb 100644 --- a/tests/baselines/reference/generatorTypeCheck46.types +++ b/tests/baselines/reference/generatorTypeCheck46.types @@ -22,18 +22,18 @@ foo("", function* () { > : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >"" : "" > : ^^ ->function* () { yield* { *[Symbol.iterator]() { yield x => x.length } }} : () => Generator<(x: string) => number, void, unknown> -> : ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>function* () { yield* { *[Symbol.iterator]() { yield x => x.length } }} : () => Generator<(x: string) => number, void, any> +> : ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ yield* { >yield* { *[Symbol.iterator]() { yield x => x.length } } : void > : ^^^^ ->{ *[Symbol.iterator]() { yield x => x.length } } : { [Symbol.iterator](): Generator<(x: string) => number, void, unknown>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>{ *[Symbol.iterator]() { yield x => x.length } } : { [Symbol.iterator](): Generator<(x: string) => number, void, any>; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ *[Symbol.iterator]() { ->[Symbol.iterator] : () => Generator<(x: string) => number, void, unknown> -> : ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>[Symbol.iterator] : () => Generator<(x: string) => number, void, any> +> : ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Symbol.iterator : unique symbol > : ^^^^^^^^^^^^^ >Symbol : SymbolConstructor @@ -42,8 +42,7 @@ foo("", function* () { > : ^^^^^^^^^^^^^ yield x => x.length ->yield x => x.length : unknown -> : ^^^^^^^ +>yield x => x.length : any >x => x.length : (x: string) => number > : ^ ^^^^^^^^^^^^^^^^^^^ >x : string diff --git a/tests/baselines/reference/generatorTypeCheck53.types b/tests/baselines/reference/generatorTypeCheck53.types index 96cfa3ff36c4a..308c3c45f0e42 100644 --- a/tests/baselines/reference/generatorTypeCheck53.types +++ b/tests/baselines/reference/generatorTypeCheck53.types @@ -14,8 +14,8 @@ class Baz { 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 fc37b2ba451f0..3162d1537f12c 100644 --- a/tests/baselines/reference/generatorTypeCheck54.types +++ b/tests/baselines/reference/generatorTypeCheck54.types @@ -14,8 +14,8 @@ class Baz { z: number } > : ^^^^^^ function* g() { ->g : () => Generator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>g : () => Generator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ yield* [new Foo]; >yield* [new Foo] : any diff --git a/tests/baselines/reference/generatorTypeCheck62.errors.txt b/tests/baselines/reference/generatorTypeCheck62.errors.txt index 22e03ebc72d14..00f0283f202e6 100644 --- a/tests/baselines/reference/generatorTypeCheck62.errors.txt +++ b/tests/baselines/reference/generatorTypeCheck62.errors.txt @@ -1,12 +1,12 @@ -generatorTypeCheck62.ts(24,62): error TS2345: Argument of type '(state: State) => Generator' is not assignable to parameter of type '(a: State) => IterableIterator'. - Call signature return types 'Generator' and 'IterableIterator' are incompatible. +generatorTypeCheck62.ts(24,62): error TS2345: Argument of type '(state: State) => Generator' is not assignable to parameter of type '(a: State) => IterableIterator'. + Call signature return types 'Generator' and 'IterableIterator' are incompatible. The types returned by 'next(...)' are incompatible between these types. Type 'IteratorResult' is not assignable to type 'IteratorResult'. Type 'IteratorReturnResult' is not assignable to type 'IteratorResult'. Type 'IteratorReturnResult' is not assignable to type 'IteratorReturnResult'. Type 'State' is not assignable to type 'void'. -generatorTypeCheck62.ts(32,62): error TS2345: Argument of type '(state: State) => Generator' is not assignable to parameter of type '(a: any) => IterableIterator'. - Call signature return types 'Generator' and 'IterableIterator' are incompatible. +generatorTypeCheck62.ts(32,62): error TS2345: Argument of type '(state: State) => Generator' is not assignable to parameter of type '(a: any) => IterableIterator'. + Call signature return types 'Generator' and 'IterableIterator' are incompatible. The types returned by 'next(...)' are incompatible between these types. Type 'IteratorResult' is not assignable to type 'IteratorResult'. Type 'IteratorReturnResult' is not assignable to type 'IteratorResult'. @@ -39,8 +39,8 @@ generatorTypeCheck62.ts(32,62): error TS2345: Argument of type '(state: State) = export const Nothing1: 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: Call signature return types 'Generator' and 'IterableIterator' are incompatible. +!!! error TS2345: Argument of type '(state: State) => Generator' is not assignable to parameter of type '(a: State) => IterableIterator'. +!!! error TS2345: Call signature return types 'Generator' and 'IterableIterator' are incompatible. !!! error TS2345: The types returned by 'next(...)' are incompatible between these types. !!! error TS2345: Type 'IteratorResult' is not assignable to type 'IteratorResult'. !!! error TS2345: Type 'IteratorReturnResult' is not assignable to type 'IteratorResult'. @@ -55,8 +55,8 @@ generatorTypeCheck62.ts(32,62): error TS2345: Argument of type '(state: State) = export const Nothing3: Strategy = strategy("Nothing", function* (state: State) { ~~~~~~~~ -!!! error TS2345: Argument of type '(state: State) => Generator' is not assignable to parameter of type '(a: any) => IterableIterator'. -!!! error TS2345: Call signature return types 'Generator' and 'IterableIterator' are incompatible. +!!! error TS2345: Argument of type '(state: State) => Generator' is not assignable to parameter of type '(a: any) => IterableIterator'. +!!! error TS2345: Call signature return types 'Generator' and 'IterableIterator' are incompatible. !!! error TS2345: The types returned by 'next(...)' are incompatible between these types. !!! error TS2345: Type 'IteratorResult' is not assignable to type 'IteratorResult'. !!! error TS2345: Type 'IteratorReturnResult' is not assignable to type 'IteratorResult'. diff --git a/tests/baselines/reference/generatorTypeCheck62.types b/tests/baselines/reference/generatorTypeCheck62.types index a47d88a47f2d5..35ecdf800cf24 100644 --- a/tests/baselines/reference/generatorTypeCheck62.types +++ b/tests/baselines/reference/generatorTypeCheck62.types @@ -20,8 +20,8 @@ export function strategy(stratName: string, gen: (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 > : ^ @@ -52,8 +52,8 @@ export function strategy(stratName: string, gen: (a: T > : ^^^^^^ } yield next; ->yield next : unknown -> : ^^^^^^^ +>yield next : any +> : ^^^ >next : T > : ^ } @@ -81,8 +81,8 @@ export const Nothing1: Strategy = strategy("Nothing", function*(state: St > : ^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >"Nothing" : "Nothing" > : ^^^^^^^^^ ->function*(state: State) { return state; // `return`/`TReturn` isn't supported by `strategy`, so this should error.} : (state: State) => Generator -> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>function*(state: State) { return state; // `return`/`TReturn` isn't supported by `strategy`, so this should error.} : (state: State) => Generator +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >state : State > : ^^^^^ @@ -101,14 +101,14 @@ export const Nothing2: Strategy = strategy("Nothing", function*(state: St > : ^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >"Nothing" : "Nothing" > : ^^^^^^^^^ ->function*(state: State) { yield state;} : (state: State) => Generator -> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>function*(state: State) { yield state;} : (state: State) => Generator +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >state : State > : ^^^^^ yield state; ->yield state : unknown -> : ^^^^^^^ +>yield state : any +> : ^^^ >state : State > : ^^^^^ @@ -123,14 +123,14 @@ export const Nothing3: Strategy = strategy("Nothing", function* (state: S > : ^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >"Nothing" : "Nothing" > : ^^^^^^^^^ ->function* (state: State) { yield ; return state; // `return`/`TReturn` isn't supported by `strategy`, so this should error.} : (state: State) => Generator -> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>function* (state: State) { yield ; return state; // `return`/`TReturn` isn't supported by `strategy`, so this should error.} : (state: State) => Generator +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >state : State > : ^^^^^ yield ; ->yield : unknown -> : ^^^^^^^ +>yield : any +> : ^^^ return state; // `return`/`TReturn` isn't supported by `strategy`, so this should error. >state : State diff --git a/tests/baselines/reference/generatorTypeCheck63.errors.txt b/tests/baselines/reference/generatorTypeCheck63.errors.txt index 9e85c5fdefc58..3b84b5ce31a59 100644 --- a/tests/baselines/reference/generatorTypeCheck63.errors.txt +++ b/tests/baselines/reference/generatorTypeCheck63.errors.txt @@ -1,19 +1,19 @@ -generatorTypeCheck63.ts(24,61): error TS2345: Argument of type '(state: State) => Generator' is not assignable to parameter of type '(a: State) => IterableIterator'. - Call signature return types 'Generator' and 'IterableIterator' are incompatible. +generatorTypeCheck63.ts(24,61): error TS2345: Argument of type '(state: State) => Generator' is not assignable to parameter of type '(a: State) => IterableIterator'. + Call signature return types 'Generator' and 'IterableIterator' are incompatible. The types returned by 'next(...)' are incompatible between these types. 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 'number' is not assignable to type 'State'. -generatorTypeCheck63.ts(32,62): error TS2345: Argument of type '(state: State) => Generator' is not assignable to parameter of type '(a: State) => IterableIterator'. - Call signature return types 'Generator' and 'IterableIterator' are incompatible. +generatorTypeCheck63.ts(32,62): error TS2345: Argument of type '(state: State) => Generator' is not assignable to parameter of type '(a: State) => IterableIterator'. + Call signature return types 'Generator' and 'IterableIterator' are incompatible. The types returned by 'next(...)' are incompatible between these types. Type 'IteratorResult' is not assignable to type 'IteratorResult'. Type 'IteratorReturnResult' is not assignable to type 'IteratorResult'. Type 'IteratorReturnResult' is not assignable to type 'IteratorReturnResult'. Type 'number' is not assignable to type 'void'. -generatorTypeCheck63.ts(36,62): error TS2345: Argument of type '(state: State) => Generator' is not assignable to parameter of type '(a: State) => IterableIterator'. - Call signature return types 'Generator' and 'IterableIterator' are incompatible. +generatorTypeCheck63.ts(36,62): error TS2345: Argument of type '(state: State) => Generator' is not assignable to parameter of type '(a: State) => IterableIterator'. + Call signature return types 'Generator' and 'IterableIterator' are incompatible. The types returned by 'next(...)' are incompatible between these types. Type 'IteratorResult' is not assignable to type 'IteratorResult'. Type 'IteratorReturnResult' is not assignable to type 'IteratorResult'. @@ -45,8 +45,8 @@ generatorTypeCheck63.ts(36,62): error TS2345: Argument of type '(state: State) = 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: Call signature return types 'Generator' and 'IterableIterator' are incompatible. +!!! error TS2345: Argument of type '(state: State) => Generator' is not assignable to parameter of type '(a: State) => IterableIterator'. +!!! error TS2345: Call signature return types 'Generator' and 'IterableIterator' are incompatible. !!! error TS2345: The types returned by 'next(...)' are incompatible between these types. !!! error TS2345: Type 'IteratorResult' is not assignable to type 'IteratorResult'. !!! error TS2345: Type 'IteratorYieldResult' is not assignable to type 'IteratorResult'. @@ -61,8 +61,8 @@ generatorTypeCheck63.ts(36,62): error TS2345: Argument of type '(state: State) = export const Nothing2: 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: Call signature return types 'Generator' and 'IterableIterator' are incompatible. +!!! error TS2345: Argument of type '(state: State) => Generator' is not assignable to parameter of type '(a: State) => IterableIterator'. +!!! error TS2345: Call signature return types 'Generator' and 'IterableIterator' are incompatible. !!! error TS2345: The types returned by 'next(...)' are incompatible between these types. !!! error TS2345: Type 'IteratorResult' is not assignable to type 'IteratorResult'. !!! error TS2345: Type 'IteratorReturnResult' is not assignable to type 'IteratorResult'. @@ -73,8 +73,8 @@ generatorTypeCheck63.ts(36,62): error TS2345: Argument of type '(state: State) = export const Nothing3: 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: Call signature return types 'Generator' and 'IterableIterator' are incompatible. +!!! error TS2345: Argument of type '(state: State) => Generator' is not assignable to parameter of type '(a: State) => IterableIterator'. +!!! error TS2345: Call signature return types 'Generator' and 'IterableIterator' are incompatible. !!! error TS2345: The types returned by 'next(...)' are incompatible between these types. !!! error TS2345: Type 'IteratorResult' is not assignable to type 'IteratorResult'. !!! error TS2345: Type 'IteratorReturnResult' is not assignable to type 'IteratorResult'. diff --git a/tests/baselines/reference/generatorTypeCheck63.types b/tests/baselines/reference/generatorTypeCheck63.types index acdfb9b6d06a1..1de4f644a4a38 100644 --- a/tests/baselines/reference/generatorTypeCheck63.types +++ b/tests/baselines/reference/generatorTypeCheck63.types @@ -20,8 +20,8 @@ export function strategy(stratName: string, gen: (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 > : ^ @@ -52,8 +52,8 @@ export function strategy(stratName: string, gen: (a: T > : ^^^^^^ } yield next; ->yield next : unknown -> : ^^^^^^^ +>yield next : any +> : ^^^ >next : T > : ^ } @@ -81,14 +81,14 @@ export const Nothing: Strategy = strategy("Nothing", function* (state: St > : ^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >"Nothing" : "Nothing" > : ^^^^^^^^^ ->function* (state: State) { yield 1; // number isn't a `State`, so this should error. return state; // `return`/`TReturn` isn't supported by `strategy`, so this should error.} : (state: State) => Generator -> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>function* (state: State) { yield 1; // number isn't a `State`, so this should error. return state; // `return`/`TReturn` isn't supported by `strategy`, so this should error.} : (state: State) => Generator +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >state : State > : ^^^^^ yield 1; // number isn't a `State`, so this should error. ->yield 1 : unknown -> : ^^^^^^^ +>yield 1 : any +> : ^^^ >1 : 1 > : ^ @@ -107,8 +107,8 @@ export const Nothing1: Strategy = strategy("Nothing", function* (state: S > : ^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >"Nothing" : "Nothing" > : ^^^^^^^^^ ->function* (state: State) {} : (state: State) => Generator -> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>function* (state: State) {} : (state: State) => Generator +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >state : State > : ^^^^^ @@ -123,8 +123,8 @@ export const Nothing2: Strategy = strategy("Nothing", function* (state: S > : ^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >"Nothing" : "Nothing" > : ^^^^^^^^^ ->function* (state: State) { return 1; // `return`/`TReturn` isn't supported by `strategy`, so this should error.} : (state: State) => Generator -> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>function* (state: State) { return 1; // `return`/`TReturn` isn't supported by `strategy`, so this should error.} : (state: State) => Generator +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >state : State > : ^^^^^ @@ -143,14 +143,14 @@ export const Nothing3: Strategy = strategy("Nothing", function* (state: S > : ^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >"Nothing" : "Nothing" > : ^^^^^^^^^ ->function* (state: State) { yield state; return 1; // `return`/`TReturn` isn't supported by `strategy`, so this should error.} : (state: State) => Generator -> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>function* (state: State) { yield state; return 1; // `return`/`TReturn` isn't supported by `strategy`, so this should error.} : (state: State) => Generator +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >state : State > : ^^^^^ yield state; ->yield state : unknown -> : ^^^^^^^ +>yield state : any +> : ^^^ >state : State > : ^^^^^ diff --git a/tests/baselines/reference/generatorTypeCheck7.errors.txt b/tests/baselines/reference/generatorTypeCheck7.errors.txt index e5181d2e20dc1..fc3e9880926c0 100644 --- a/tests/baselines/reference/generatorTypeCheck7.errors.txt +++ b/tests/baselines/reference/generatorTypeCheck7.errors.txt @@ -1,4 +1,4 @@ -generatorTypeCheck7.ts(4,17): error TS2741: Property 'hello' is missing in type 'Generator' but required in type 'WeirdIter'. +generatorTypeCheck7.ts(4,17): error TS2741: Property 'hello' is missing in type 'Generator' but required in type 'WeirdIter'. ==== generatorTypeCheck7.ts (1 errors) ==== @@ -7,5 +7,5 @@ generatorTypeCheck7.ts(4,17): error TS2741: Property 'hello' is missing in type } 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 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 578ba933f474d..532e0a4c4541d 100644 --- a/tests/baselines/reference/generatorTypeCheck8.errors.txt +++ b/tests/baselines/reference/generatorTypeCheck8.errors.txt @@ -1,4 +1,4 @@ -generatorTypeCheck8.ts(2,17): error TS2322: Type 'Generator' is not assignable to type 'BadGenerator'. +generatorTypeCheck8.ts(2,17): error TS2322: Type 'Generator' is not assignable to type 'BadGenerator'. The types returned by 'next(...)' are incompatible between these types. Type 'IteratorResult' is not assignable to type 'IteratorResult'. Type 'IteratorYieldResult' is not assignable to type 'IteratorResult'. @@ -10,7 +10,7 @@ generatorTypeCheck8.ts(2,17): error TS2322: Type 'Generator, 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: The types returned by 'next(...)' are incompatible between these types. !!! error TS2322: Type 'IteratorResult' is not assignable to type 'IteratorResult'. !!! error TS2322: Type 'IteratorYieldResult' is not assignable to type 'IteratorResult'. diff --git a/tests/baselines/reference/importHelpersNoHelpersForAsyncGenerators.types b/tests/baselines/reference/importHelpersNoHelpersForAsyncGenerators.types index 9d221f738586b..3bf6420170b9d 100644 --- a/tests/baselines/reference/importHelpersNoHelpersForAsyncGenerators.types +++ b/tests/baselines/reference/importHelpersNoHelpersForAsyncGenerators.types @@ -2,8 +2,8 @@ === main.ts === export async function * f() { ->f : () => AsyncGenerator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>f : () => AsyncGenerator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ await 1; >await 1 : 1 diff --git a/tests/baselines/reference/parser.asyncGenerators.classMethods.es2018.types b/tests/baselines/reference/parser.asyncGenerators.classMethods.es2018.types index 1aa65a69c8cd4..41859c1f7190e 100644 --- a/tests/baselines/reference/parser.asyncGenerators.classMethods.es2018.types +++ b/tests/baselines/reference/parser.asyncGenerators.classMethods.es2018.types @@ -221,8 +221,8 @@ class 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 8b708f94c95a6..145171838a86b 100644 --- a/tests/baselines/reference/parser.asyncGenerators.functionDeclarations.es2018.types +++ b/tests/baselines/reference/parser.asyncGenerators.functionDeclarations.es2018.types @@ -142,8 +142,8 @@ async function * f15() { } === 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 036bdb2f62b80..9082a5732d5a0 100644 --- a/tests/baselines/reference/parser.asyncGenerators.functionExpressions.es2018.types +++ b/tests/baselines/reference/parser.asyncGenerators.functionExpressions.es2018.types @@ -188,10 +188,10 @@ const f15 = async function * () { }; === 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 0a67b43853d48..a1c287cfa1fd3 100644 --- a/tests/baselines/reference/parser.asyncGenerators.objectLiteralMethods.es2018.types +++ b/tests/baselines/reference/parser.asyncGenerators.objectLiteralMethods.es2018.types @@ -247,14 +247,14 @@ const o15 = { }; === 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 cb952848c1f54..cb98fea58b476 100644 --- a/tests/baselines/reference/types.asyncGenerators.es2018.1.types +++ b/tests/baselines/reference/types.asyncGenerators.es2018.1.types @@ -61,8 +61,8 @@ async function * inferReturnType5() { > : ^ } async function * inferReturnType6() { ->inferReturnType6 : () => AsyncGenerator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>inferReturnType6 : () => AsyncGenerator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ yield* [1, 2]; >yield* [1, 2] : any @@ -74,8 +74,8 @@ async function * inferReturnType6() { > : ^ } async function * inferReturnType7() { ->inferReturnType7 : () => AsyncGenerator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>inferReturnType7 : () => AsyncGenerator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ yield* [Promise.resolve(1)]; >yield* [Promise.resolve(1)] : any @@ -112,12 +112,11 @@ async function * inferReturnType8() { const assignability1: () => AsyncIterableIterator = async function * () { >assignability1 : () => AsyncIterableIterator > : ^^^^^^ ->async function * () { yield 1;} : () => AsyncGenerator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>async function * () { yield 1;} : () => AsyncGenerator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ yield 1; ->yield 1 : unknown -> : ^^^^^^^ +>yield 1 : any >1 : 1 > : ^ @@ -125,12 +124,11 @@ const assignability1: () => AsyncIterableIterator = async function * () 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) : unknown -> : ^^^^^^^ +>yield Promise.resolve(1) : any >Promise.resolve(1) : Promise > : ^^^^^^^^^^^^^^^ >Promise.resolve : { (): Promise; (value: T): Promise>; (value: T | PromiseLike): Promise>; } @@ -146,8 +144,8 @@ 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 @@ -162,8 +160,8 @@ 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 @@ -184,20 +182,19 @@ const assignability4: () => AsyncIterableIterator = async function * () const assignability5: () => AsyncIterableIterator = async function * () { >assignability5 : () => AsyncIterableIterator > : ^^^^^^ ->async function * () { yield* (async function * () { yield 1; })();} : () => AsyncGenerator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>async function * () { yield* (async function * () { yield 1; })();} : () => AsyncGenerator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ yield* (async function * () { yield 1; })(); >yield* (async function * () { yield 1; })() : void > : ^^^^ ->(async function * () { yield 1; })() : AsyncGenerator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->(async function * () { yield 1; }) : () => AsyncGenerator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->async function * () { yield 1; } : () => AsyncGenerator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->yield 1 : unknown -> : ^^^^^^^ +>(async function * () { yield 1; })() : AsyncGenerator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>(async function * () { yield 1; }) : () => AsyncGenerator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>async function * () { yield 1; } : () => AsyncGenerator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>yield 1 : any >1 : 1 > : ^ @@ -205,12 +202,11 @@ 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 : unknown -> : ^^^^^^^ +>yield 1 : any >1 : 1 > : ^ @@ -218,12 +214,11 @@ const assignability6: () => AsyncIterable = async function * () { 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) : unknown -> : ^^^^^^^ +>yield Promise.resolve(1) : any >Promise.resolve(1) : Promise > : ^^^^^^^^^^^^^^^ >Promise.resolve : { (): Promise; (value: T): Promise>; (value: T | PromiseLike): Promise>; } @@ -239,8 +234,8 @@ 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 @@ -255,8 +250,8 @@ 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 @@ -277,20 +272,19 @@ const assignability9: () => AsyncIterable = async function * () { const assignability10: () => AsyncIterable = async function * () { >assignability10 : () => AsyncIterable > : ^^^^^^ ->async function * () { yield* (async function * () { yield 1; })();} : () => AsyncGenerator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>async function * () { yield* (async function * () { yield 1; })();} : () => AsyncGenerator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ yield* (async function * () { yield 1; })(); >yield* (async function * () { yield 1; })() : void > : ^^^^ ->(async function * () { yield 1; })() : AsyncGenerator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->(async function * () { yield 1; }) : () => AsyncGenerator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->async function * () { yield 1; } : () => AsyncGenerator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->yield 1 : unknown -> : ^^^^^^^ +>(async function * () { yield 1; })() : AsyncGenerator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>(async function * () { yield 1; }) : () => AsyncGenerator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>async function * () { yield 1; } : () => AsyncGenerator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>yield 1 : any >1 : 1 > : ^ @@ -298,12 +292,11 @@ const assignability10: () => AsyncIterable = async function * () { const assignability11: () => AsyncIterator = async function * () { >assignability11 : () => AsyncIterator > : ^^^^^^ ->async function * () { yield 1;} : () => AsyncGenerator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>async function * () { yield 1;} : () => AsyncGenerator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ yield 1; ->yield 1 : unknown -> : ^^^^^^^ +>yield 1 : any >1 : 1 > : ^ @@ -311,12 +304,11 @@ const assignability11: () => AsyncIterator = async function * () { const assignability12: () => AsyncIterator = async function * () { >assignability12 : () => AsyncIterator > : ^^^^^^ ->async function * () { yield Promise.resolve(1);} : () => AsyncGenerator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>async function * () { yield Promise.resolve(1);} : () => AsyncGenerator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ yield Promise.resolve(1); ->yield Promise.resolve(1) : unknown -> : ^^^^^^^ +>yield Promise.resolve(1) : any >Promise.resolve(1) : Promise > : ^^^^^^^^^^^^^^^ >Promise.resolve : { (): Promise; (value: T): Promise>; (value: T | PromiseLike): Promise>; } @@ -332,8 +324,8 @@ const assignability12: () => AsyncIterator = async function * () { const assignability13: () => AsyncIterator = async function * () { >assignability13 : () => AsyncIterator > : ^^^^^^ ->async function * () { yield* [1, 2];} : () => AsyncGenerator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>async function * () { yield* [1, 2];} : () => AsyncGenerator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ yield* [1, 2]; >yield* [1, 2] : any @@ -348,8 +340,8 @@ const assignability13: () => AsyncIterator = async function * () { const assignability14: () => AsyncIterator = async function * () { >assignability14 : () => AsyncIterator > : ^^^^^^ ->async function * () { yield* [Promise.resolve(1)];} : () => AsyncGenerator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>async function * () { yield* [Promise.resolve(1)];} : () => AsyncGenerator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ yield* [Promise.resolve(1)]; >yield* [Promise.resolve(1)] : any @@ -370,20 +362,19 @@ const assignability14: () => AsyncIterator = async function * () { const assignability15: () => AsyncIterator = async function * () { >assignability15 : () => AsyncIterator > : ^^^^^^ ->async function * () { yield* (async function * () { yield 1; })();} : () => AsyncGenerator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>async function * () { yield* (async function * () { yield 1; })();} : () => AsyncGenerator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ yield* (async function * () { yield 1; })(); >yield* (async function * () { yield 1; })() : void > : ^^^^ ->(async function * () { yield 1; })() : AsyncGenerator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->(async function * () { yield 1; }) : () => AsyncGenerator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->async function * () { yield 1; } : () => AsyncGenerator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->yield 1 : unknown -> : ^^^^^^^ +>(async function * () { yield 1; })() : AsyncGenerator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>(async function * () { yield 1; }) : () => AsyncGenerator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>async function * () { yield 1; } : () => AsyncGenerator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>yield 1 : any >1 : 1 > : ^ @@ -393,8 +384,7 @@ async function * explicitReturnType1(): AsyncIterableIterator { > : ^^^^^^ yield 1; ->yield 1 : unknown -> : ^^^^^^^ +>yield 1 : any >1 : 1 > : ^ } @@ -403,8 +393,7 @@ async function * explicitReturnType2(): AsyncIterableIterator { > : ^^^^^^ yield Promise.resolve(1); ->yield Promise.resolve(1) : unknown -> : ^^^^^^^ +>yield Promise.resolve(1) : any >Promise.resolve(1) : Promise > : ^^^^^^^^^^^^^^^ >Promise.resolve : { (): Promise; (value: T): Promise>; (value: T | PromiseLike): Promise>; } @@ -455,14 +444,13 @@ async function * explicitReturnType5(): AsyncIterableIterator { yield* (async function * () { yield 1; })(); >yield* (async function * () { yield 1; })() : void > : ^^^^ ->(async function * () { yield 1; })() : AsyncGenerator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->(async function * () { yield 1; }) : () => AsyncGenerator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->async function * () { yield 1; } : () => AsyncGenerator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->yield 1 : unknown -> : ^^^^^^^ +>(async function * () { yield 1; })() : AsyncGenerator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>(async function * () { yield 1; }) : () => AsyncGenerator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>async function * () { yield 1; } : () => AsyncGenerator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>yield 1 : any >1 : 1 > : ^ } @@ -471,8 +459,7 @@ async function * explicitReturnType6(): AsyncIterable { > : ^^^^^^ yield 1; ->yield 1 : unknown -> : ^^^^^^^ +>yield 1 : any >1 : 1 > : ^ } @@ -481,8 +468,7 @@ async function * explicitReturnType7(): AsyncIterable { > : ^^^^^^ yield Promise.resolve(1); ->yield Promise.resolve(1) : unknown -> : ^^^^^^^ +>yield Promise.resolve(1) : any >Promise.resolve(1) : Promise > : ^^^^^^^^^^^^^^^ >Promise.resolve : { (): Promise; (value: T): Promise>; (value: T | PromiseLike): Promise>; } @@ -533,14 +519,13 @@ async function * explicitReturnType10(): AsyncIterable { yield* (async function * () { yield 1; })(); >yield* (async function * () { yield 1; })() : void > : ^^^^ ->(async function * () { yield 1; })() : AsyncGenerator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->(async function * () { yield 1; }) : () => AsyncGenerator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->async function * () { yield 1; } : () => AsyncGenerator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->yield 1 : unknown -> : ^^^^^^^ +>(async function * () { yield 1; })() : AsyncGenerator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>(async function * () { yield 1; }) : () => AsyncGenerator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>async function * () { yield 1; } : () => AsyncGenerator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>yield 1 : any >1 : 1 > : ^ } @@ -549,8 +534,7 @@ async function * explicitReturnType11(): AsyncIterator { > : ^^^^^^ yield 1; ->yield 1 : unknown -> : ^^^^^^^ +>yield 1 : any >1 : 1 > : ^ } @@ -559,8 +543,7 @@ async function * explicitReturnType12(): AsyncIterator { > : ^^^^^^ yield Promise.resolve(1); ->yield Promise.resolve(1) : unknown -> : ^^^^^^^ +>yield Promise.resolve(1) : any >Promise.resolve(1) : Promise > : ^^^^^^^^^^^^^^^ >Promise.resolve : { (): Promise; (value: T): Promise>; (value: T | PromiseLike): Promise>; } @@ -611,14 +594,13 @@ async function * explicitReturnType15(): AsyncIterator { yield* (async function * () { yield 1; })(); >yield* (async function * () { yield 1; })() : void > : ^^^^ ->(async function * () { yield 1; })() : AsyncGenerator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->(async function * () { yield 1; }) : () => AsyncGenerator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->async function * () { yield 1; } : () => AsyncGenerator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->yield 1 : unknown -> : ^^^^^^^ +>(async function * () { yield 1; })() : AsyncGenerator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>(async function * () { yield 1; }) : () => AsyncGenerator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>async function * () { yield 1; } : () => AsyncGenerator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>yield 1 : any >1 : 1 > : ^ } diff --git a/tests/baselines/reference/types.asyncGenerators.es2018.2.errors.txt b/tests/baselines/reference/types.asyncGenerators.es2018.2.errors.txt index 4f1792abbcb73..515256440642e 100644 --- a/tests/baselines/reference/types.asyncGenerators.es2018.2.errors.txt +++ b/tests/baselines/reference/types.asyncGenerators.es2018.2.errors.txt @@ -1,31 +1,31 @@ types.asyncGenerators.es2018.2.ts(2,12): error TS2504: Type '{}' must have a '[Symbol.asyncIterator]()' method that returns an async iterator. types.asyncGenerators.es2018.2.ts(8,12): error TS2504: Type 'Promise' must have a '[Symbol.asyncIterator]()' method that returns an async iterator. -types.asyncGenerators.es2018.2.ts(10,7): error TS2322: Type '() => AsyncGenerator' is not assignable to type '() => AsyncIterableIterator'. - Call signature return types 'AsyncGenerator' and 'AsyncIterableIterator' are incompatible. +types.asyncGenerators.es2018.2.ts(10,7): error TS2322: Type '() => AsyncGenerator' is not assignable to type '() => AsyncIterableIterator'. + Call signature return types 'AsyncGenerator' and 'AsyncIterableIterator' are incompatible. The types returned by 'next(...)' are incompatible between these types. 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'. -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'. -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.asyncGenerators.es2018.2.ts(19,7): error TS2322: Type '() => AsyncGenerator' is not assignable to type '() => AsyncIterable'. - Call signature return types 'AsyncGenerator' and 'AsyncIterable' are incompatible. +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'. +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.asyncGenerators.es2018.2.ts(19,7): error TS2322: Type '() => AsyncGenerator' is not assignable to type '() => AsyncIterable'. + Call signature return types 'AsyncGenerator' and 'AsyncIterable' are incompatible. The types of '[Symbol.asyncIterator]().next' are incompatible between these types. - Type '(...args: [] | [unknown]) => Promise>' is not assignable to type '(...args: [] | [unknown]) => Promise>'. -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'. -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'. -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'. -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'. -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'. + Type '(...args: [] | [any]) => Promise>' is not assignable to type '(...args: [] | [any]) => Promise>'. +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'. +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'. +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'. +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'. +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'. types.asyncGenerators.es2018.2.ts(38,11): error TS2322: Type 'string' is not assignable to type 'number'. types.asyncGenerators.es2018.2.ts(41,12): error TS2322: Type 'string' is not assignable to type 'number'. types.asyncGenerators.es2018.2.ts(44,12): error TS2322: Type 'string' is not assignable to type 'number'. @@ -35,9 +35,9 @@ types.asyncGenerators.es2018.2.ts(53,12): error TS2322: Type 'string' is not ass types.asyncGenerators.es2018.2.ts(56,11): error TS2322: Type 'string' is not assignable to type 'number'. types.asyncGenerators.es2018.2.ts(59,12): error TS2322: Type 'string' is not assignable to type 'number'. types.asyncGenerators.es2018.2.ts(62,12): error TS2322: Type 'string' is not assignable to type 'number'. -types.asyncGenerators.es2018.2.ts(64,42): error TS2741: Property '[Symbol.iterator]' is missing in type 'AsyncGenerator' but required in type 'IterableIterator'. +types.asyncGenerators.es2018.2.ts(64,42): error TS2741: Property '[Symbol.iterator]' is missing in type 'AsyncGenerator' but required in type 'IterableIterator'. types.asyncGenerators.es2018.2.ts(67,42): error TS2741: Property '[Symbol.iterator]' is missing in type 'AsyncGenerator' but required in type 'Iterable'. -types.asyncGenerators.es2018.2.ts(70,42): error TS2322: Type 'AsyncGenerator' is not assignable to type 'Iterator'. +types.asyncGenerators.es2018.2.ts(70,42): error TS2322: Type 'AsyncGenerator' is not assignable to type 'Iterator'. The types returned by 'next(...)' are incompatible between these types. Type 'Promise>' is not assignable to type 'IteratorResult'. types.asyncGenerators.es2018.2.ts(74,12): error TS2504: Type '{}' must have a '[Symbol.asyncIterator]()' method that returns an async iterator. @@ -60,8 +60,8 @@ types.asyncGenerators.es2018.2.ts(74,12): error TS2504: Type '{}' must have a '[ } const assignability1: () => AsyncIterableIterator = async function * () { ~~~~~~~~~~~~~~ -!!! error TS2322: Type '() => AsyncGenerator' is not assignable to type '() => AsyncIterableIterator'. -!!! error TS2322: Call signature return types 'AsyncGenerator' and 'AsyncIterableIterator' are incompatible. +!!! error TS2322: Type '() => AsyncGenerator' is not assignable to type '() => AsyncIterableIterator'. +!!! error TS2322: Call signature return types 'AsyncGenerator' and 'AsyncIterableIterator' are incompatible. !!! error TS2322: The types returned by 'next(...)' are incompatible between these types. !!! error TS2322: Type 'Promise>' is not assignable to type 'Promise>'. !!! error TS2322: Type 'IteratorResult' is not assignable to type 'IteratorResult'. @@ -72,52 +72,52 @@ types.asyncGenerators.es2018.2.ts(74,12): error TS2504: Type '{}' must have a '[ }; 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: Type '() => AsyncGenerator' is not assignable to type '() => AsyncIterableIterator'. +!!! error TS2322: Type 'AsyncGenerator' is not assignable to type 'AsyncIterableIterator'. yield* (async function * () { yield "a"; })(); }; const assignability4: () => AsyncIterable = async function * () { ~~~~~~~~~~~~~~ -!!! error TS2322: Type '() => AsyncGenerator' is not assignable to type '() => AsyncIterable'. -!!! error TS2322: Call signature return types 'AsyncGenerator' and 'AsyncIterable' are incompatible. +!!! error TS2322: Type '() => AsyncGenerator' is not assignable to type '() => AsyncIterable'. +!!! error TS2322: Call signature return types 'AsyncGenerator' and 'AsyncIterable' are incompatible. !!! error TS2322: The types of '[Symbol.asyncIterator]().next' are incompatible between these types. -!!! error TS2322: Type '(...args: [] | [unknown]) => Promise>' is not assignable to type '(...args: [] | [unknown]) => Promise>'. +!!! error TS2322: Type '(...args: [] | [any]) => Promise>' is not assignable to type '(...args: [] | [any]) => 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: Type '() => AsyncGenerator' is not assignable to type '() => AsyncIterable'. +!!! error TS2322: Type 'AsyncGenerator' is not assignable to type 'AsyncIterable'. 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 { @@ -167,7 +167,7 @@ types.asyncGenerators.es2018.2.ts(74,12): error TS2504: Type '{}' must have a '[ } 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 lib.es2015.iterable.d.ts:--:--: '[Symbol.iterator]' is declared here. yield 1; } @@ -179,7 +179,7 @@ types.asyncGenerators.es2018.2.ts(74,12): error TS2504: Type '{}' must have a '[ } 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: The types returned by 'next(...)' are incompatible between these types. !!! error TS2322: Type 'Promise>' is not assignable to type 'IteratorResult'. yield 1; diff --git a/tests/baselines/reference/types.asyncGenerators.es2018.2.types b/tests/baselines/reference/types.asyncGenerators.es2018.2.types index 0dce04aa8b469..79ffd8ce51fe5 100644 --- a/tests/baselines/reference/types.asyncGenerators.es2018.2.types +++ b/tests/baselines/reference/types.asyncGenerators.es2018.2.types @@ -48,12 +48,12 @@ async function * inferReturnType3() { const assignability1: () => AsyncIterableIterator = async function * () { >assignability1 : () => AsyncIterableIterator > : ^^^^^^ ->async function * () { yield "a";} : () => AsyncGenerator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>async function * () { yield "a";} : () => AsyncGenerator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ yield "a"; ->yield "a" : unknown -> : ^^^^^^^ +>yield "a" : any +> : ^^^ >"a" : "a" > : ^^^ @@ -61,8 +61,8 @@ const assignability1: () => AsyncIterableIterator = async function * () 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 @@ -78,20 +78,20 @@ const assignability2: () => AsyncIterableIterator = async function * () const assignability3: () => AsyncIterableIterator = async function * () { >assignability3 : () => AsyncIterableIterator > : ^^^^^^ ->async function * () { yield* (async function * () { yield "a"; })();} : () => AsyncGenerator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>async function * () { yield* (async function * () { yield "a"; })();} : () => AsyncGenerator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ yield* (async function * () { yield "a"; })(); >yield* (async function * () { yield "a"; })() : void > : ^^^^ ->(async function * () { yield "a"; })() : AsyncGenerator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->(async function * () { yield "a"; }) : () => AsyncGenerator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->async function * () { yield "a"; } : () => AsyncGenerator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->yield "a" : unknown -> : ^^^^^^^ +>(async function * () { yield "a"; })() : AsyncGenerator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>(async function * () { yield "a"; }) : () => AsyncGenerator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>async function * () { yield "a"; } : () => AsyncGenerator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>yield "a" : any +> : ^^^ >"a" : "a" > : ^^^ @@ -99,12 +99,12 @@ 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" : unknown -> : ^^^^^^^ +>yield "a" : any +> : ^^^ >"a" : "a" > : ^^^ @@ -112,8 +112,8 @@ const assignability4: () => AsyncIterable = async function * () { 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 @@ -129,20 +129,20 @@ const assignability5: () => AsyncIterable = async function * () { const assignability6: () => AsyncIterable = async function * () { >assignability6 : () => AsyncIterable > : ^^^^^^ ->async function * () { yield* (async function * () { yield "a"; })();} : () => AsyncGenerator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>async function * () { yield* (async function * () { yield "a"; })();} : () => AsyncGenerator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ yield* (async function * () { yield "a"; })(); >yield* (async function * () { yield "a"; })() : void > : ^^^^ ->(async function * () { yield "a"; })() : AsyncGenerator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->(async function * () { yield "a"; }) : () => AsyncGenerator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->async function * () { yield "a"; } : () => AsyncGenerator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->yield "a" : unknown -> : ^^^^^^^ +>(async function * () { yield "a"; })() : AsyncGenerator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>(async function * () { yield "a"; }) : () => AsyncGenerator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>async function * () { yield "a"; } : () => AsyncGenerator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>yield "a" : any +> : ^^^ >"a" : "a" > : ^^^ @@ -150,12 +150,12 @@ const assignability6: () => AsyncIterable = async function * () { const assignability7: () => AsyncIterator = async function * () { >assignability7 : () => AsyncIterator > : ^^^^^^ ->async function * () { yield "a";} : () => AsyncGenerator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>async function * () { yield "a";} : () => AsyncGenerator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ yield "a"; ->yield "a" : unknown -> : ^^^^^^^ +>yield "a" : any +> : ^^^ >"a" : "a" > : ^^^ @@ -163,8 +163,8 @@ const assignability7: () => AsyncIterator = async function * () { const assignability8: () => AsyncIterator = async function * () { >assignability8 : () => AsyncIterator > : ^^^^^^ ->async function * () { yield* ["a", "b"];} : () => AsyncGenerator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>async function * () { yield* ["a", "b"];} : () => AsyncGenerator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ yield* ["a", "b"]; >yield* ["a", "b"] : any @@ -180,20 +180,20 @@ const assignability8: () => AsyncIterator = async function * () { const assignability9: () => AsyncIterator = async function * () { >assignability9 : () => AsyncIterator > : ^^^^^^ ->async function * () { yield* (async function * () { yield "a"; })();} : () => AsyncGenerator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>async function * () { yield* (async function * () { yield "a"; })();} : () => AsyncGenerator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ yield* (async function * () { yield "a"; })(); >yield* (async function * () { yield "a"; })() : void > : ^^^^ ->(async function * () { yield "a"; })() : AsyncGenerator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->(async function * () { yield "a"; }) : () => AsyncGenerator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->async function * () { yield "a"; } : () => AsyncGenerator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->yield "a" : unknown -> : ^^^^^^^ +>(async function * () { yield "a"; })() : AsyncGenerator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>(async function * () { yield "a"; }) : () => AsyncGenerator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>async function * () { yield "a"; } : () => AsyncGenerator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>yield "a" : any +> : ^^^ >"a" : "a" > : ^^^ @@ -203,8 +203,8 @@ async function * explicitReturnType1(): AsyncIterableIterator { > : ^^^^^^ yield "a"; ->yield "a" : unknown -> : ^^^^^^^ +>yield "a" : any +> : ^^^ >"a" : "a" > : ^^^ } @@ -229,14 +229,14 @@ async function * explicitReturnType3(): AsyncIterableIterator { yield* (async function * () { yield "a"; })(); >yield* (async function * () { yield "a"; })() : void > : ^^^^ ->(async function * () { yield "a"; })() : AsyncGenerator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->(async function * () { yield "a"; }) : () => AsyncGenerator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->async function * () { yield "a"; } : () => AsyncGenerator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->yield "a" : unknown -> : ^^^^^^^ +>(async function * () { yield "a"; })() : AsyncGenerator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>(async function * () { yield "a"; }) : () => AsyncGenerator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>async function * () { yield "a"; } : () => AsyncGenerator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>yield "a" : any +> : ^^^ >"a" : "a" > : ^^^ } @@ -245,8 +245,8 @@ async function * explicitReturnType4(): AsyncIterable { > : ^^^^^^ yield "a"; ->yield "a" : unknown -> : ^^^^^^^ +>yield "a" : any +> : ^^^ >"a" : "a" > : ^^^ } @@ -271,14 +271,14 @@ async function * explicitReturnType6(): AsyncIterable { yield* (async function * () { yield "a"; })(); >yield* (async function * () { yield "a"; })() : void > : ^^^^ ->(async function * () { yield "a"; })() : AsyncGenerator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->(async function * () { yield "a"; }) : () => AsyncGenerator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->async function * () { yield "a"; } : () => AsyncGenerator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->yield "a" : unknown -> : ^^^^^^^ +>(async function * () { yield "a"; })() : AsyncGenerator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>(async function * () { yield "a"; }) : () => AsyncGenerator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>async function * () { yield "a"; } : () => AsyncGenerator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>yield "a" : any +> : ^^^ >"a" : "a" > : ^^^ } @@ -287,8 +287,8 @@ async function * explicitReturnType7(): AsyncIterator { > : ^^^^^^ yield "a"; ->yield "a" : unknown -> : ^^^^^^^ +>yield "a" : any +> : ^^^ >"a" : "a" > : ^^^ } @@ -313,14 +313,14 @@ async function * explicitReturnType9(): AsyncIterator { yield* (async function * () { yield "a"; })(); >yield* (async function * () { yield "a"; })() : void > : ^^^^ ->(async function * () { yield "a"; })() : AsyncGenerator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->(async function * () { yield "a"; }) : () => AsyncGenerator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->async function * () { yield "a"; } : () => AsyncGenerator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->yield "a" : unknown -> : ^^^^^^^ +>(async function * () { yield "a"; })() : AsyncGenerator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>(async function * () { yield "a"; }) : () => AsyncGenerator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>async function * () { yield "a"; } : () => AsyncGenerator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>yield "a" : any +> : ^^^ >"a" : "a" > : ^^^ } @@ -329,8 +329,8 @@ async function * explicitReturnType10(): IterableIterator { > : ^^^^^^ yield 1; ->yield 1 : unknown -> : ^^^^^^^ +>yield 1 : any +> : ^^^ >1 : 1 > : ^ } @@ -349,8 +349,8 @@ async function * explicitReturnType12(): Iterator { > : ^^^^^^ yield 1; ->yield 1 : unknown -> : ^^^^^^^ +>yield 1 : any +> : ^^^ >1 : 1 > : ^ } diff --git a/tests/baselines/reference/uniqueSymbols.types b/tests/baselines/reference/uniqueSymbols.types index e5aba7d117cde..fa07bd5ab01d2 100644 --- a/tests/baselines/reference/uniqueSymbols.types +++ b/tests/baselines/reference/uniqueSymbols.types @@ -195,8 +195,7 @@ function* genFuncYieldConstCallWithTypeQuery(): IterableIterator : ^^^^^^ >constCall : unique symbol > : ^^^^^^^^^^^^^ ->yield constCall : unknown -> : ^^^^^^^ +>yield constCall : any >constCall : unique symbol > : ^^^^^^^^^^^^^ @@ -1304,8 +1303,8 @@ 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 @@ -1326,23 +1325,21 @@ const o3: Context = { }, async * method3() { ->method3 : () => AsyncGenerator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>method3 : () => AsyncGenerator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ yield s; // yield type should not widen due to contextual type ->yield s : unknown -> : ^^^^^^^ +>yield s : any >s : unique symbol > : ^^^^^^^^^^^^^ }, * method4() { ->method4 : () => Generator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>method4 : () => Generator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ yield s; // yield type should not widen due to contextual type ->yield s : unknown -> : ^^^^^^^ +>yield s : any >s : unique symbol > : ^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/uniqueSymbolsDeclarations.types b/tests/baselines/reference/uniqueSymbolsDeclarations.types index 68c33468135d0..e365d07c79039 100644 --- a/tests/baselines/reference/uniqueSymbolsDeclarations.types +++ b/tests/baselines/reference/uniqueSymbolsDeclarations.types @@ -186,8 +186,7 @@ function* genFuncYieldConstCallWithTypeQuery(): IterableIterator : ^^^^^^ >constCall : unique symbol > : ^^^^^^^^^^^^^ ->yield constCall : unknown -> : ^^^^^^^ +>yield constCall : any >constCall : unique symbol > : ^^^^^^^^^^^^^ @@ -1295,8 +1294,8 @@ interface Context { const o4: Context = { >o4 : 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 @@ -1317,23 +1316,21 @@ const o4: Context = { }, async * method3() { ->method3 : () => AsyncGenerator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>method3 : () => AsyncGenerator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ yield s; // yield type should not widen due to contextual type ->yield s : unknown -> : ^^^^^^^ +>yield s : any >s : unique symbol > : ^^^^^^^^^^^^^ }, * method4() { ->method4 : () => Generator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>method4 : () => Generator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ yield s; // yield type should not widen due to contextual type ->yield s : unknown -> : ^^^^^^^ +>yield s : any >s : unique symbol > : ^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/yieldExpression1.types b/tests/baselines/reference/yieldExpression1.types index 02a40a2098d6e..1544635e065a8 100644 --- a/tests/baselines/reference/yieldExpression1.types +++ b/tests/baselines/reference/yieldExpression1.types @@ -21,12 +21,12 @@ function* b(): IterableIterator { > : ^^^^^^ yield; ->yield : unknown -> : ^^^^^^^ +>yield : any +> : ^^^ yield 0; ->yield 0 : unknown -> : ^^^^^^^ +>yield 0 : any +> : ^^^ >0 : 0 > : ^ } diff --git a/tests/baselines/reference/yieldExpressionInnerCommentEmit.types b/tests/baselines/reference/yieldExpressionInnerCommentEmit.types index 58f588f237f80..bba612bd5c756 100644 --- a/tests/baselines/reference/yieldExpressionInnerCommentEmit.types +++ b/tests/baselines/reference/yieldExpressionInnerCommentEmit.types @@ -2,8 +2,8 @@ === yieldExpressionInnerCommentEmit.ts === function * foo2() { ->foo2 : () => Generator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>foo2 : () => Generator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /*comment1*/ yield 1; >yield 1 : any diff --git a/tests/cases/fourslash/codeFixAddMissingProperties22.ts b/tests/cases/fourslash/codeFixAddMissingProperties22.ts index 8b3df8c110b06..7b54f5ef5933d 100644 --- a/tests/cases/fourslash/codeFixAddMissingProperties22.ts +++ b/tests/cases/fourslash/codeFixAddMissingProperties22.ts @@ -8,7 +8,7 @@ verify.codeFix({ description: ts.Diagnostics.Add_missing_properties.message, newFileContent: `const x: Iterable = { - [Symbol.iterator]: function(): Iterator { + [Symbol.iterator]: function(): Iterator { throw new Error("Function not implemented."); } }`, From 595707d769d1ce214dc97afd17d996ccad477fff Mon Sep 17 00:00:00 2001 From: Ron Buckton Date: Mon, 20 May 2024 12:34:09 -0400 Subject: [PATCH 16/17] Change inferred return type of generators to 'undefined' --- src/compiler/checker.ts | 7 +++-- .../reference/contextualTypeOnYield1.types | 4 +-- .../dependentDestructuredVariables.types | 16 +++++------ .../reference/generatorAssignability.types | 28 +++++++++---------- .../generatorReturnTypeFallback.1.types | 4 +-- .../generatorReturnTypeFallback.3.types | 4 +-- 6 files changed, 32 insertions(+), 31 deletions(-) diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 9a43b593d3f54..be80acb6923a4 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -2148,7 +2148,6 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker { }; var anyIterationTypes = createIterationTypes(anyType, anyType, anyType); - var anyIterationTypesExceptNext = createIterationTypes(anyType, anyType, unknownType); var asyncIterationTypesResolver: IterationTypesResolver = { iterableCacheKey: "iterationTypesOfAsyncIterable", @@ -37721,6 +37720,9 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker { } } else if (isGenerator) { // Generator or AsyncGenerator function + if (strictBuiltinIteratorReturn) { + fallbackReturnType = undefinedType; + } const returnTypes = checkAndAggregateReturnExpressionTypes(func, checkMode); if (!returnTypes) { fallbackReturnType = neverType; @@ -44519,8 +44521,7 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker { : undefined; if (isTypeAny(methodType)) { - // `return()` and `throw()` don't provide a *next* type. - return methodName === "next" ? anyIterationTypes : anyIterationTypesExceptNext; + return anyIterationTypes; } // Both async and non-async iterators *must* have a `next` method. diff --git a/tests/baselines/reference/contextualTypeOnYield1.types b/tests/baselines/reference/contextualTypeOnYield1.types index bde3fa35982f9..c92e7e87b4d66 100644 --- a/tests/baselines/reference/contextualTypeOnYield1.types +++ b/tests/baselines/reference/contextualTypeOnYield1.types @@ -10,8 +10,8 @@ type FuncOrGeneratorFunc = () => (number | Generator<(arg: number) => void, any, const f: FuncOrGeneratorFunc = function*() { >f : FuncOrGeneratorFunc > : ^^^^^^^^^^^^^^^^^^^ ->function*() { yield (num) => console.log(num); // `num` should be inferred to have type `number`.} : () => Generator<(num: number) => void, void, void> -> : ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>function*() { yield (num) => console.log(num); // `num` should be inferred to have type `number`.} : () => Generator<(num: number) => void, undefined, void> +> : ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ yield (num) => console.log(num); // `num` should be inferred to have type `number`. >yield (num) => console.log(num) : void diff --git a/tests/baselines/reference/dependentDestructuredVariables.types b/tests/baselines/reference/dependentDestructuredVariables.types index ff1212e2dbe78..88a0f261e48ab 100644 --- a/tests/baselines/reference/dependentDestructuredVariables.types +++ b/tests/baselines/reference/dependentDestructuredVariables.types @@ -1302,12 +1302,12 @@ type FooGenMethod = { let fooGenM: FooGenMethod = { >fooGenM : FooGenMethod > : ^^^^^^^^^^^^ ->{ *method(type, cb) { if (type == 'num') { cb(123) } else { cb("abc") } }} : { method(type: "str" | "num", cb: ((e: string) => void) | ((e: number) => void)): Generator; } -> : ^^^^^^^^^ ^^^^^^^^^^^^^^^^^ ^^^^ ^^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>{ *method(type, cb) { if (type == 'num') { cb(123) } else { cb("abc") } }} : { method(type: "str" | "num", cb: ((e: string) => void) | ((e: number) => void)): Generator; } +> : ^^^^^^^^^ ^^^^^^^^^^^^^^^^^ ^^^^ ^^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ *method(type, cb) { ->method : (type: "str" | "num", cb: ((e: string) => void) | ((e: number) => void)) => Generator -> : ^ ^^^^^^^^^^^^^^^^^ ^^^^ ^^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>method : (type: "str" | "num", cb: ((e: string) => void) | ((e: number) => void)) => Generator +> : ^ ^^^^^^^^^^^^^^^^^ ^^^^ ^^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >type : "str" | "num" > : ^^^^^^^^^^^^^ >cb : ((e: string) => void) | ((e: number) => void) @@ -1365,12 +1365,12 @@ type FooAsyncGenMethod = { let fooAsyncGenM: FooAsyncGenMethod = { >fooAsyncGenM : FooAsyncGenMethod > : ^^^^^^^^^^^^^^^^^ ->{ async *method(type, cb) { if (type == 'num') { cb(123) } else { cb("abc") } }} : { method(type: "str" | "num", cb: ((e: string) => void) | ((e: number) => void)): AsyncGenerator; } -> : ^^^^^^^^^ ^^^^^^^^^^^^^^^^^ ^^^^ ^^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>{ async *method(type, cb) { if (type == 'num') { cb(123) } else { cb("abc") } }} : { method(type: "str" | "num", cb: ((e: string) => void) | ((e: number) => void)): AsyncGenerator; } +> : ^^^^^^^^^ ^^^^^^^^^^^^^^^^^ ^^^^ ^^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ async *method(type, cb) { ->method : (type: "str" | "num", cb: ((e: string) => void) | ((e: number) => void)) => AsyncGenerator -> : ^ ^^^^^^^^^^^^^^^^^ ^^^^ ^^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>method : (type: "str" | "num", cb: ((e: string) => void) | ((e: number) => void)) => AsyncGenerator +> : ^ ^^^^^^^^^^^^^^^^^ ^^^^ ^^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >type : "str" | "num" > : ^^^^^^^^^^^^^ >cb : ((e: string) => void) | ((e: number) => void) diff --git a/tests/baselines/reference/generatorAssignability.types b/tests/baselines/reference/generatorAssignability.types index c14ca7631512f..034e0c7973b8b 100644 --- a/tests/baselines/reference/generatorAssignability.types +++ b/tests/baselines/reference/generatorAssignability.types @@ -216,10 +216,10 @@ async function f3() { > : ^^^^^^^^^^^^^^^^^^^ const syncGenerator = function*() { ->syncGenerator : () => Generator<1 | 2, void, unknown> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->function*() { yield 1; yield 2; } : () => Generator<1 | 2, void, unknown> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>syncGenerator : () => Generator<1 | 2, undefined, unknown> +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>function*() { yield 1; yield 2; } : () => Generator<1 | 2, undefined, unknown> +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ yield 1; >yield 1 : any @@ -236,26 +236,26 @@ async function f3() { }; const o = {[Symbol.asyncIterator]: syncGenerator}; ->o : { [Symbol.asyncIterator]: () => Generator<1 | 2, void, unknown>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->{[Symbol.asyncIterator]: syncGenerator} : { [Symbol.asyncIterator]: () => Generator<1 | 2, void, unknown>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->[Symbol.asyncIterator] : () => Generator<1 | 2, void, unknown> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>o : { [Symbol.asyncIterator]: () => Generator<1 | 2, undefined, unknown>; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>{[Symbol.asyncIterator]: syncGenerator} : { [Symbol.asyncIterator]: () => Generator<1 | 2, undefined, unknown>; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>[Symbol.asyncIterator] : () => Generator<1 | 2, undefined, unknown> +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Symbol.asyncIterator : unique symbol > : ^^^^^^^^^^^^^ >Symbol : SymbolConstructor > : ^^^^^^^^^^^^^^^^^ >asyncIterator : unique symbol > : ^^^^^^^^^^^^^ ->syncGenerator : () => Generator<1 | 2, void, unknown> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>syncGenerator : () => Generator<1 | 2, undefined, unknown> +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ for await (const x of o) { >x : 1 | 2 > : ^^^^^ ->o : { [Symbol.asyncIterator]: () => Generator<1 | 2, void, unknown>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>o : { [Symbol.asyncIterator]: () => Generator<1 | 2, undefined, unknown>; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ } } diff --git a/tests/baselines/reference/generatorReturnTypeFallback.1.types b/tests/baselines/reference/generatorReturnTypeFallback.1.types index fc04c48fbaf7c..c242700f1cb10 100644 --- a/tests/baselines/reference/generatorReturnTypeFallback.1.types +++ b/tests/baselines/reference/generatorReturnTypeFallback.1.types @@ -3,8 +3,8 @@ === generatorReturnTypeFallback.1.ts === // Allow generators to fallback to IterableIterator if they do not need a type for the sent value while in strictNullChecks mode. function* f() { ->f : () => IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>f : () => IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ yield 1; >yield 1 : any diff --git a/tests/baselines/reference/generatorReturnTypeFallback.3.types b/tests/baselines/reference/generatorReturnTypeFallback.3.types index 2bc88213fc3fa..644f0c62cb4fb 100644 --- a/tests/baselines/reference/generatorReturnTypeFallback.3.types +++ b/tests/baselines/reference/generatorReturnTypeFallback.3.types @@ -2,8 +2,8 @@ === generatorReturnTypeFallback.3.ts === function* f() { ->f : () => IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>f : () => IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ const x: string = yield 1; >x : string From 2a4edbcc3df74eedddc52a1c3749c93b586f9761 Mon Sep 17 00:00:00 2001 From: Ron Buckton Date: Tue, 21 May 2024 13:55:33 -0400 Subject: [PATCH 17/17] Revert and use 'void' for BuiltinIteratorReturn --- src/compiler/checker.ts | 5 +- ...rn(strictbuiltiniteratorreturn=true).types | 180 +++++++++--------- .../reference/contextualTypeOnYield1.types | 4 +- .../dependentDestructuredVariables.types | 16 +- .../reference/generatorAssignability.types | 28 +-- .../generatorReturnTypeFallback.1.types | 4 +- .../generatorReturnTypeFallback.3.types | 4 +- 7 files changed, 119 insertions(+), 122 deletions(-) diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index be80acb6923a4..6626bb759aa70 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -12658,7 +12658,7 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker { links.instantiations.set(getTypeListId(typeParameters), type); } if (type === intrinsicMarkerType && symbol.escapedName === "BuiltinIteratorReturn") { - type = strictBuiltinIteratorReturn ? undefinedType : anyType; + type = strictBuiltinIteratorReturn ? voidType : anyType; } } else { @@ -37720,9 +37720,6 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker { } } else if (isGenerator) { // Generator or AsyncGenerator function - if (strictBuiltinIteratorReturn) { - fallbackReturnType = undefinedType; - } const returnTypes = checkAndAggregateReturnExpressionTypes(func, checkMode); if (!returnTypes) { fallbackReturnType = neverType; diff --git a/tests/baselines/reference/builtinIteratorReturn(strictbuiltiniteratorreturn=true).types b/tests/baselines/reference/builtinIteratorReturn(strictbuiltiniteratorreturn=true).types index 650323dae738f..4a4d01bbd9ed4 100644 --- a/tests/baselines/reference/builtinIteratorReturn(strictbuiltiniteratorreturn=true).types +++ b/tests/baselines/reference/builtinIteratorReturn(strictbuiltiniteratorreturn=true).types @@ -14,12 +14,12 @@ declare const set: Set; > : ^^^^^^^^^^^ const i0 = array[Symbol.iterator](); ->i0 : IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->array[Symbol.iterator]() : IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->array[Symbol.iterator] : () => IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>i0 : IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>array[Symbol.iterator]() : IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>array[Symbol.iterator] : () => IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >array : number[] > : ^^^^^^^^ >Symbol.iterator : unique symbol @@ -30,40 +30,40 @@ const i0 = array[Symbol.iterator](); > : ^^^^^^^^^^^^^ const i1 = array.values(); ->i1 : IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->array.values() : IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->array.values : () => IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>i1 : IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>array.values() : IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>array.values : () => IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >array : number[] > : ^^^^^^^^ ->values : () => IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>values : () => IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ const i2 = array.keys(); ->i2 : IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->array.keys() : IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->array.keys : () => IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>i2 : IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>array.keys() : IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>array.keys : () => IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >array : number[] > : ^^^^^^^^ ->keys : () => IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>keys : () => IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ const i3 = array.entries(); ->i3 : IterableIterator<[number, number], undefined> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->array.entries() : IterableIterator<[number, number], undefined> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->array.entries : () => IterableIterator<[number, number], undefined> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>i3 : IterableIterator<[number, number], void> +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>array.entries() : IterableIterator<[number, number], void> +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>array.entries : () => IterableIterator<[number, number], void> +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >array : number[] > : ^^^^^^^^ ->entries : () => IterableIterator<[number, number], undefined> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>entries : () => IterableIterator<[number, number], void> +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ for (const x of array); >x : number @@ -72,12 +72,12 @@ for (const x of array); > : ^^^^^^^^ const i4 = map[Symbol.iterator](); ->i4 : IterableIterator<[string, number], undefined> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->map[Symbol.iterator]() : IterableIterator<[string, number], undefined> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->map[Symbol.iterator] : () => IterableIterator<[string, number], undefined> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>i4 : IterableIterator<[string, number], void> +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>map[Symbol.iterator]() : IterableIterator<[string, number], void> +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>map[Symbol.iterator] : () => IterableIterator<[string, number], void> +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >map : Map > : ^^^^^^^^^^^^^^^^^^^ >Symbol.iterator : unique symbol @@ -88,40 +88,40 @@ const i4 = map[Symbol.iterator](); > : ^^^^^^^^^^^^^ const i5 = map.values(); ->i5 : IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->map.values() : IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->map.values : () => IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>i5 : IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>map.values() : IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>map.values : () => IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >map : Map > : ^^^^^^^^^^^^^^^^^^^ ->values : () => IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>values : () => IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ const i6 = map.keys(); ->i6 : IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->map.keys() : IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->map.keys : () => IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>i6 : IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>map.keys() : IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>map.keys : () => IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >map : Map > : ^^^^^^^^^^^^^^^^^^^ ->keys : () => IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>keys : () => IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ const i7 = map.entries(); ->i7 : IterableIterator<[string, number], undefined> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->map.entries() : IterableIterator<[string, number], undefined> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->map.entries : () => IterableIterator<[string, number], undefined> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>i7 : IterableIterator<[string, number], void> +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>map.entries() : IterableIterator<[string, number], void> +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>map.entries : () => IterableIterator<[string, number], void> +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >map : Map > : ^^^^^^^^^^^^^^^^^^^ ->entries : () => IterableIterator<[string, number], undefined> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>entries : () => IterableIterator<[string, number], void> +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ for (const x of map); >x : [string, number] @@ -130,12 +130,12 @@ for (const x of map); > : ^^^^^^^^^^^^^^^^^^^ const i8 = set[Symbol.iterator](); ->i8 : IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->set[Symbol.iterator]() : IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->set[Symbol.iterator] : () => IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>i8 : IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>set[Symbol.iterator]() : IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>set[Symbol.iterator] : () => IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >set : Set > : ^^^^^^^^^^^ >Symbol.iterator : unique symbol @@ -146,40 +146,40 @@ const i8 = set[Symbol.iterator](); > : ^^^^^^^^^^^^^ const i9 = set.values(); ->i9 : IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->set.values() : IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->set.values : () => IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>i9 : IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>set.values() : IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>set.values : () => IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >set : Set > : ^^^^^^^^^^^ ->values : () => IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>values : () => IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ const i10 = set.keys(); ->i10 : IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->set.keys() : IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->set.keys : () => IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>i10 : IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>set.keys() : IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>set.keys : () => IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >set : Set > : ^^^^^^^^^^^ ->keys : () => IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>keys : () => IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ const i11 = set.entries(); ->i11 : IterableIterator<[number, number], undefined> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->set.entries() : IterableIterator<[number, number], undefined> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->set.entries : () => IterableIterator<[number, number], undefined> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>i11 : IterableIterator<[number, number], void> +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>set.entries() : IterableIterator<[number, number], void> +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>set.entries : () => IterableIterator<[number, number], void> +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >set : Set > : ^^^^^^^^^^^ ->entries : () => IterableIterator<[number, number], undefined> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>entries : () => IterableIterator<[number, number], void> +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ for (const x of set); >x : number diff --git a/tests/baselines/reference/contextualTypeOnYield1.types b/tests/baselines/reference/contextualTypeOnYield1.types index c92e7e87b4d66..bde3fa35982f9 100644 --- a/tests/baselines/reference/contextualTypeOnYield1.types +++ b/tests/baselines/reference/contextualTypeOnYield1.types @@ -10,8 +10,8 @@ type FuncOrGeneratorFunc = () => (number | Generator<(arg: number) => void, any, const f: FuncOrGeneratorFunc = function*() { >f : FuncOrGeneratorFunc > : ^^^^^^^^^^^^^^^^^^^ ->function*() { yield (num) => console.log(num); // `num` should be inferred to have type `number`.} : () => Generator<(num: number) => void, undefined, void> -> : ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>function*() { yield (num) => console.log(num); // `num` should be inferred to have type `number`.} : () => Generator<(num: number) => void, void, void> +> : ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ yield (num) => console.log(num); // `num` should be inferred to have type `number`. >yield (num) => console.log(num) : void diff --git a/tests/baselines/reference/dependentDestructuredVariables.types b/tests/baselines/reference/dependentDestructuredVariables.types index 88a0f261e48ab..ff1212e2dbe78 100644 --- a/tests/baselines/reference/dependentDestructuredVariables.types +++ b/tests/baselines/reference/dependentDestructuredVariables.types @@ -1302,12 +1302,12 @@ type FooGenMethod = { let fooGenM: FooGenMethod = { >fooGenM : FooGenMethod > : ^^^^^^^^^^^^ ->{ *method(type, cb) { if (type == 'num') { cb(123) } else { cb("abc") } }} : { method(type: "str" | "num", cb: ((e: string) => void) | ((e: number) => void)): Generator; } -> : ^^^^^^^^^ ^^^^^^^^^^^^^^^^^ ^^^^ ^^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>{ *method(type, cb) { if (type == 'num') { cb(123) } else { cb("abc") } }} : { method(type: "str" | "num", cb: ((e: string) => void) | ((e: number) => void)): Generator; } +> : ^^^^^^^^^ ^^^^^^^^^^^^^^^^^ ^^^^ ^^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ *method(type, cb) { ->method : (type: "str" | "num", cb: ((e: string) => void) | ((e: number) => void)) => Generator -> : ^ ^^^^^^^^^^^^^^^^^ ^^^^ ^^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>method : (type: "str" | "num", cb: ((e: string) => void) | ((e: number) => void)) => Generator +> : ^ ^^^^^^^^^^^^^^^^^ ^^^^ ^^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >type : "str" | "num" > : ^^^^^^^^^^^^^ >cb : ((e: string) => void) | ((e: number) => void) @@ -1365,12 +1365,12 @@ type FooAsyncGenMethod = { let fooAsyncGenM: FooAsyncGenMethod = { >fooAsyncGenM : FooAsyncGenMethod > : ^^^^^^^^^^^^^^^^^ ->{ async *method(type, cb) { if (type == 'num') { cb(123) } else { cb("abc") } }} : { method(type: "str" | "num", cb: ((e: string) => void) | ((e: number) => void)): AsyncGenerator; } -> : ^^^^^^^^^ ^^^^^^^^^^^^^^^^^ ^^^^ ^^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>{ async *method(type, cb) { if (type == 'num') { cb(123) } else { cb("abc") } }} : { method(type: "str" | "num", cb: ((e: string) => void) | ((e: number) => void)): AsyncGenerator; } +> : ^^^^^^^^^ ^^^^^^^^^^^^^^^^^ ^^^^ ^^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ async *method(type, cb) { ->method : (type: "str" | "num", cb: ((e: string) => void) | ((e: number) => void)) => AsyncGenerator -> : ^ ^^^^^^^^^^^^^^^^^ ^^^^ ^^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>method : (type: "str" | "num", cb: ((e: string) => void) | ((e: number) => void)) => AsyncGenerator +> : ^ ^^^^^^^^^^^^^^^^^ ^^^^ ^^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >type : "str" | "num" > : ^^^^^^^^^^^^^ >cb : ((e: string) => void) | ((e: number) => void) diff --git a/tests/baselines/reference/generatorAssignability.types b/tests/baselines/reference/generatorAssignability.types index 034e0c7973b8b..c14ca7631512f 100644 --- a/tests/baselines/reference/generatorAssignability.types +++ b/tests/baselines/reference/generatorAssignability.types @@ -216,10 +216,10 @@ async function f3() { > : ^^^^^^^^^^^^^^^^^^^ const syncGenerator = function*() { ->syncGenerator : () => Generator<1 | 2, undefined, unknown> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->function*() { yield 1; yield 2; } : () => Generator<1 | 2, undefined, unknown> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>syncGenerator : () => Generator<1 | 2, void, unknown> +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>function*() { yield 1; yield 2; } : () => Generator<1 | 2, void, unknown> +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ yield 1; >yield 1 : any @@ -236,26 +236,26 @@ async function f3() { }; const o = {[Symbol.asyncIterator]: syncGenerator}; ->o : { [Symbol.asyncIterator]: () => Generator<1 | 2, undefined, unknown>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->{[Symbol.asyncIterator]: syncGenerator} : { [Symbol.asyncIterator]: () => Generator<1 | 2, undefined, unknown>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->[Symbol.asyncIterator] : () => Generator<1 | 2, undefined, unknown> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>o : { [Symbol.asyncIterator]: () => Generator<1 | 2, void, unknown>; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>{[Symbol.asyncIterator]: syncGenerator} : { [Symbol.asyncIterator]: () => Generator<1 | 2, void, unknown>; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>[Symbol.asyncIterator] : () => Generator<1 | 2, void, unknown> +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Symbol.asyncIterator : unique symbol > : ^^^^^^^^^^^^^ >Symbol : SymbolConstructor > : ^^^^^^^^^^^^^^^^^ >asyncIterator : unique symbol > : ^^^^^^^^^^^^^ ->syncGenerator : () => Generator<1 | 2, undefined, unknown> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>syncGenerator : () => Generator<1 | 2, void, unknown> +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ for await (const x of o) { >x : 1 | 2 > : ^^^^^ ->o : { [Symbol.asyncIterator]: () => Generator<1 | 2, undefined, unknown>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>o : { [Symbol.asyncIterator]: () => Generator<1 | 2, void, unknown>; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ } } diff --git a/tests/baselines/reference/generatorReturnTypeFallback.1.types b/tests/baselines/reference/generatorReturnTypeFallback.1.types index c242700f1cb10..fc04c48fbaf7c 100644 --- a/tests/baselines/reference/generatorReturnTypeFallback.1.types +++ b/tests/baselines/reference/generatorReturnTypeFallback.1.types @@ -3,8 +3,8 @@ === generatorReturnTypeFallback.1.ts === // Allow generators to fallback to IterableIterator if they do not need a type for the sent value while in strictNullChecks mode. function* f() { ->f : () => IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>f : () => IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ yield 1; >yield 1 : any diff --git a/tests/baselines/reference/generatorReturnTypeFallback.3.types b/tests/baselines/reference/generatorReturnTypeFallback.3.types index 644f0c62cb4fb..2bc88213fc3fa 100644 --- a/tests/baselines/reference/generatorReturnTypeFallback.3.types +++ b/tests/baselines/reference/generatorReturnTypeFallback.3.types @@ -2,8 +2,8 @@ === generatorReturnTypeFallback.3.ts === function* f() { ->f : () => IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>f : () => IterableIterator +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ const x: string = yield 1; >x : string