From a31c03a6da537a624af83e555675a152cefbdf1f Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 6 Jun 2025 15:59:39 +0000 Subject: [PATCH 01/10] Initial plan for issue From 4478f9e4837517627636c115f11fe649df0402d1 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 6 Jun 2025 16:11:38 +0000 Subject: [PATCH 02/10] Implement iterator parameter validation Co-authored-by: andrewbranch <3277153+andrewbranch@users.noreply.github.com> --- internal/checker/checker.go | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/internal/checker/checker.go b/internal/checker/checker.go index cdbff642a0..75cd631798 100644 --- a/internal/checker/checker.go +++ b/internal/checker/checker.go @@ -6065,10 +6065,18 @@ func (c *Checker) getIterationTypesOfIterableSlow(t *Type, r *IterationTypesReso if IsTypeAny(methodType) { return IterationTypes{c.anyType, c.anyType, c.anyType} } - if signatures := c.getSignaturesOfType(methodType, SignatureKindCall); len(signatures) != 0 { - iteratorType := c.getIntersectionType(core.Map(signatures, c.getReturnTypeOfSignature)) - return c.getIterationTypesOfIteratorWorker(iteratorType, r, errorNode, diagnosticOutput) + allSignatures := c.getSignaturesOfType(methodType, SignatureKindCall) + validSignatures := core.Filter(allSignatures, func(sig *Signature) bool { + return c.getMinArgumentCount(sig) == 0 + }) + if len(validSignatures) == 0 { + if errorNode != nil && len(allSignatures) > 0 { + c.checkTypeAssignableToEx(t, r.getGlobalIterableType(), errorNode, nil /*headMessage*/, diagnosticOutput) + } + return IterationTypes{} } + iteratorType := c.getIntersectionType(core.Map(validSignatures, c.getReturnTypeOfSignature)) + return c.getIterationTypesOfIteratorWorker(iteratorType, r, errorNode, diagnosticOutput) } return IterationTypes{} } From 92e6ee3a2f9b72f0f8749386523387fe5e49cb2c Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 6 Jun 2025 16:18:41 +0000 Subject: [PATCH 03/10] Accept baseline with partial iterator parameter validation Co-authored-by: andrewbranch <3277153+andrewbranch@users.noreply.github.com> --- .../asyncIteratorExtraParameters.errors.txt | 32 ++++++++++++ ...yncIteratorExtraParameters.errors.txt.diff | 36 ------------- .../iteratorExtraParameters.errors.txt | 36 +++++++++++++ .../iteratorExtraParameters.errors.txt.diff | 50 ++++++------------- 4 files changed, 84 insertions(+), 70 deletions(-) create mode 100644 testdata/baselines/reference/submodule/compiler/asyncIteratorExtraParameters.errors.txt delete mode 100644 testdata/baselines/reference/submodule/compiler/asyncIteratorExtraParameters.errors.txt.diff create mode 100644 testdata/baselines/reference/submodule/compiler/iteratorExtraParameters.errors.txt diff --git a/testdata/baselines/reference/submodule/compiler/asyncIteratorExtraParameters.errors.txt b/testdata/baselines/reference/submodule/compiler/asyncIteratorExtraParameters.errors.txt new file mode 100644 index 0000000000..9a2965d54a --- /dev/null +++ b/testdata/baselines/reference/submodule/compiler/asyncIteratorExtraParameters.errors.txt @@ -0,0 +1,32 @@ +asyncIteratorExtraParameters.ts(11,27): error TS2504: Type '{ [Symbol.asyncIterator](_: number): AsyncGenerator; }' must have a '[Symbol.asyncIterator]()' method that returns an async iterator. +asyncIteratorExtraParameters.ts(13,12): error TS2504: Type '{ [Symbol.asyncIterator](_: number): AsyncGenerator; }' must have a '[Symbol.asyncIterator]()' method that returns an async iterator. + + +==== asyncIteratorExtraParameters.ts (2 errors) ==== + // https://github.com/microsoft/TypeScript/issues/57130 + const iter = { + async *[Symbol.asyncIterator](_: number) { + yield 0; + } + }; + + declare function g(...args: any): any; + + async function* f() { + for await (const _ of iter); + ~~~~ +!!! error TS2504: Type '{ [Symbol.asyncIterator](_: number): AsyncGenerator; }' must have a '[Symbol.asyncIterator]()' method that returns an async iterator. +!!! related TS2322 asyncIteratorExtraParameters.ts:11:27: Type '{ [Symbol.asyncIterator](_: number): AsyncGenerator; }' is not assignable to type 'AsyncIterable'. + Types of property '[Symbol.asyncIterator]' are incompatible. + Type '(_: number) => AsyncGenerator' is not assignable to type '() => AsyncIterator'. + Target signature provides too few arguments. Expected 1 or more, but got 0. + + yield* iter; + ~~~~ +!!! error TS2504: Type '{ [Symbol.asyncIterator](_: number): AsyncGenerator; }' must have a '[Symbol.asyncIterator]()' method that returns an async iterator. +!!! related TS2322 asyncIteratorExtraParameters.ts:13:12: Type '{ [Symbol.asyncIterator](_: number): AsyncGenerator; }' is not assignable to type 'AsyncIterable'. + Types of property '[Symbol.asyncIterator]' are incompatible. + Type '(_: number) => AsyncGenerator' is not assignable to type '() => AsyncIterator'. + Target signature provides too few arguments. Expected 1 or more, but got 0. + } + \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/asyncIteratorExtraParameters.errors.txt.diff b/testdata/baselines/reference/submodule/compiler/asyncIteratorExtraParameters.errors.txt.diff deleted file mode 100644 index 1ab0c61dd2..0000000000 --- a/testdata/baselines/reference/submodule/compiler/asyncIteratorExtraParameters.errors.txt.diff +++ /dev/null @@ -1,36 +0,0 @@ ---- old.asyncIteratorExtraParameters.errors.txt -+++ new.asyncIteratorExtraParameters.errors.txt -@@= skipped -0, +0 lines =@@ --asyncIteratorExtraParameters.ts(11,27): error TS2504: Type '{ [Symbol.asyncIterator](_: number): AsyncGenerator; }' must have a '[Symbol.asyncIterator]()' method that returns an async iterator. --asyncIteratorExtraParameters.ts(13,12): error TS2504: Type '{ [Symbol.asyncIterator](_: number): AsyncGenerator; }' must have a '[Symbol.asyncIterator]()' method that returns an async iterator. -- -- --==== asyncIteratorExtraParameters.ts (2 errors) ==== -- // https://github.com/microsoft/TypeScript/issues/57130 -- const iter = { -- async *[Symbol.asyncIterator](_: number) { -- yield 0; -- } -- }; -- -- declare function g(...args: any): any; -- -- async function* f() { -- for await (const _ of iter); -- ~~~~ --!!! error TS2504: Type '{ [Symbol.asyncIterator](_: number): AsyncGenerator; }' must have a '[Symbol.asyncIterator]()' method that returns an async iterator. --!!! related TS2322 asyncIteratorExtraParameters.ts:11:27: Type '{ [Symbol.asyncIterator](_: number): AsyncGenerator; }' is not assignable to type 'AsyncIterable'. -- Types of property '[Symbol.asyncIterator]' are incompatible. -- Type '(_: number) => AsyncGenerator' is not assignable to type '() => AsyncIterator'. -- Target signature provides too few arguments. Expected 1 or more, but got 0. -- -- yield* iter; -- ~~~~ --!!! error TS2504: Type '{ [Symbol.asyncIterator](_: number): AsyncGenerator; }' must have a '[Symbol.asyncIterator]()' method that returns an async iterator. --!!! related TS2322 asyncIteratorExtraParameters.ts:13:12: Type '{ [Symbol.asyncIterator](_: number): AsyncGenerator; }' is not assignable to type 'AsyncIterable'. -- Types of property '[Symbol.asyncIterator]' are incompatible. -- Type '(_: number) => AsyncGenerator' is not assignable to type '() => AsyncIterator'. -- Target signature provides too few arguments. Expected 1 or more, but got 0. -- } -- -+ \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/iteratorExtraParameters.errors.txt b/testdata/baselines/reference/submodule/compiler/iteratorExtraParameters.errors.txt new file mode 100644 index 0000000000..887c04fe2e --- /dev/null +++ b/testdata/baselines/reference/submodule/compiler/iteratorExtraParameters.errors.txt @@ -0,0 +1,36 @@ +iteratorExtraParameters.ts(11,21): error TS2488: Type '{ [Symbol.iterator](_: number): Generator; }' must have a '[Symbol.iterator]()' method that returns an iterator. +iteratorExtraParameters.ts(13,12): error TS2488: Type '{ [Symbol.iterator](_: number): Generator; }' must have a '[Symbol.iterator]()' method that returns an iterator. + + +==== iteratorExtraParameters.ts (2 errors) ==== + // https://github.com/microsoft/TypeScript/issues/57130 + const iter = { + *[Symbol.iterator](_: number) { + yield 0; + } + }; + + declare function g(...args: any): any; + + function* f() { + for (const _ of iter); + ~~~~ +!!! error TS2488: Type '{ [Symbol.iterator](_: number): Generator; }' must have a '[Symbol.iterator]()' method that returns an iterator. +!!! related TS2322 iteratorExtraParameters.ts:11:21: Type '{ [Symbol.iterator](_: number): Generator; }' is not assignable to type 'Iterable'. + Types of property '[Symbol.iterator]' are incompatible. + Type '(_: number) => Generator' is not assignable to type '() => Iterator'. + Target signature provides too few arguments. Expected 1 or more, but got 0. + + yield* iter; + ~~~~ +!!! error TS2488: Type '{ [Symbol.iterator](_: number): Generator; }' must have a '[Symbol.iterator]()' method that returns an iterator. +!!! related TS2322 iteratorExtraParameters.ts:13:12: Type '{ [Symbol.iterator](_: number): Generator; }' is not assignable to type 'Iterable'. + Types of property '[Symbol.iterator]' are incompatible. + Type '(_: number) => Generator' is not assignable to type '() => Iterator'. + Target signature provides too few arguments. Expected 1 or more, but got 0. + + [...iter] + + g(...iter); + } + \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/iteratorExtraParameters.errors.txt.diff b/testdata/baselines/reference/submodule/compiler/iteratorExtraParameters.errors.txt.diff index 82c537fc2e..d12da0a85b 100644 --- a/testdata/baselines/reference/submodule/compiler/iteratorExtraParameters.errors.txt.diff +++ b/testdata/baselines/reference/submodule/compiler/iteratorExtraParameters.errors.txt.diff @@ -1,54 +1,36 @@ --- old.iteratorExtraParameters.errors.txt +++ new.iteratorExtraParameters.errors.txt @@= skipped -0, +0 lines =@@ --iteratorExtraParameters.ts(11,21): error TS2488: Type '{ [Symbol.iterator](_: number): Generator; }' must have a '[Symbol.iterator]()' method that returns an iterator. --iteratorExtraParameters.ts(13,12): error TS2488: Type '{ [Symbol.iterator](_: number): Generator; }' must have a '[Symbol.iterator]()' method that returns an iterator. + iteratorExtraParameters.ts(11,21): error TS2488: Type '{ [Symbol.iterator](_: number): Generator; }' must have a '[Symbol.iterator]()' method that returns an iterator. + iteratorExtraParameters.ts(13,12): error TS2488: Type '{ [Symbol.iterator](_: number): Generator; }' must have a '[Symbol.iterator]()' method that returns an iterator. -iteratorExtraParameters.ts(15,9): error TS2488: Type '{ [Symbol.iterator](_: number): Generator; }' must have a '[Symbol.iterator]()' method that returns an iterator. -iteratorExtraParameters.ts(17,10): error TS2488: Type '{ [Symbol.iterator](_: number): Generator; }' must have a '[Symbol.iterator]()' method that returns an iterator. - - -==== iteratorExtraParameters.ts (4 errors) ==== -- // https://github.com/microsoft/TypeScript/issues/57130 -- const iter = { -- *[Symbol.iterator](_: number) { -- yield 0; -- } -- }; -- -- declare function g(...args: any): any; -- -- function* f() { -- for (const _ of iter); -- ~~~~ --!!! error TS2488: Type '{ [Symbol.iterator](_: number): Generator; }' must have a '[Symbol.iterator]()' method that returns an iterator. --!!! related TS2322 iteratorExtraParameters.ts:11:21: Type '{ [Symbol.iterator](_: number): Generator; }' is not assignable to type 'Iterable'. -- Types of property '[Symbol.iterator]' are incompatible. -- Type '(_: number) => Generator' is not assignable to type '() => Iterator'. -- Target signature provides too few arguments. Expected 1 or more, but got 0. -- -- yield* iter; -- ~~~~ --!!! error TS2488: Type '{ [Symbol.iterator](_: number): Generator; }' must have a '[Symbol.iterator]()' method that returns an iterator. --!!! related TS2322 iteratorExtraParameters.ts:13:12: Type '{ [Symbol.iterator](_: number): Generator; }' is not assignable to type 'Iterable'. -- Types of property '[Symbol.iterator]' are incompatible. -- Type '(_: number) => Generator' is not assignable to type '() => Iterator'. -- Target signature provides too few arguments. Expected 1 or more, but got 0. -- -- [...iter] ++ ++ ++==== iteratorExtraParameters.ts (2 errors) ==== + // https://github.com/microsoft/TypeScript/issues/57130 + const iter = { + *[Symbol.iterator](_: number) { +@@= skipped -31, +29 lines =@@ + Target signature provides too few arguments. Expected 1 or more, but got 0. + + [...iter] - ~~~~ -!!! error TS2488: Type '{ [Symbol.iterator](_: number): Generator; }' must have a '[Symbol.iterator]()' method that returns an iterator. -!!! related TS2322 iteratorExtraParameters.ts:15:9: Type '{ [Symbol.iterator](_: number): Generator; }' is not assignable to type 'Iterable'. - Types of property '[Symbol.iterator]' are incompatible. - Type '(_: number) => Generator' is not assignable to type '() => Iterator'. - Target signature provides too few arguments. Expected 1 or more, but got 0. -- -- g(...iter); + + g(...iter); - ~~~~ -!!! error TS2488: Type '{ [Symbol.iterator](_: number): Generator; }' must have a '[Symbol.iterator]()' method that returns an iterator. -!!! related TS2322 iteratorExtraParameters.ts:17:10: Type '{ [Symbol.iterator](_: number): Generator; }' is not assignable to type 'Iterable'. - Types of property '[Symbol.iterator]' are incompatible. - Type '(_: number) => Generator' is not assignable to type '() => Iterator'. - Target signature provides too few arguments. Expected 1 or more, but got 0. -- } -- -+ \ No newline at end of file + } + \ No newline at end of file From e7cfbbf1161668beabb4aa321b7f47f5521757a9 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 6 Jun 2025 16:30:44 +0000 Subject: [PATCH 04/10] Add detailed parameter mismatch errors for iterator methods Co-authored-by: andrewbranch <3277153+andrewbranch@users.noreply.github.com> --- internal/checker/checker.go | 2 +- .../asyncIteratorExtraParameters.errors.txt | 32 ------------ ...yncIteratorExtraParameters.errors.txt.diff | 49 +++++++++++++++++++ .../iteratorExtraParameters.errors.txt | 36 -------------- .../iteratorExtraParameters.errors.txt.diff | 49 ++++++++++++++----- 5 files changed, 88 insertions(+), 80 deletions(-) delete mode 100644 testdata/baselines/reference/submodule/compiler/asyncIteratorExtraParameters.errors.txt create mode 100644 testdata/baselines/reference/submodule/compiler/asyncIteratorExtraParameters.errors.txt.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/iteratorExtraParameters.errors.txt diff --git a/internal/checker/checker.go b/internal/checker/checker.go index 75cd631798..05c8446db6 100644 --- a/internal/checker/checker.go +++ b/internal/checker/checker.go @@ -6071,7 +6071,7 @@ func (c *Checker) getIterationTypesOfIterableSlow(t *Type, r *IterationTypesReso }) if len(validSignatures) == 0 { if errorNode != nil && len(allSignatures) > 0 { - c.checkTypeAssignableToEx(t, r.getGlobalIterableType(), errorNode, nil /*headMessage*/, diagnosticOutput) + c.checkTypeAssignableTo(t, r.getGlobalIterableType(), errorNode, nil /*headMessage*/) } return IterationTypes{} } diff --git a/testdata/baselines/reference/submodule/compiler/asyncIteratorExtraParameters.errors.txt b/testdata/baselines/reference/submodule/compiler/asyncIteratorExtraParameters.errors.txt deleted file mode 100644 index 9a2965d54a..0000000000 --- a/testdata/baselines/reference/submodule/compiler/asyncIteratorExtraParameters.errors.txt +++ /dev/null @@ -1,32 +0,0 @@ -asyncIteratorExtraParameters.ts(11,27): error TS2504: Type '{ [Symbol.asyncIterator](_: number): AsyncGenerator; }' must have a '[Symbol.asyncIterator]()' method that returns an async iterator. -asyncIteratorExtraParameters.ts(13,12): error TS2504: Type '{ [Symbol.asyncIterator](_: number): AsyncGenerator; }' must have a '[Symbol.asyncIterator]()' method that returns an async iterator. - - -==== asyncIteratorExtraParameters.ts (2 errors) ==== - // https://github.com/microsoft/TypeScript/issues/57130 - const iter = { - async *[Symbol.asyncIterator](_: number) { - yield 0; - } - }; - - declare function g(...args: any): any; - - async function* f() { - for await (const _ of iter); - ~~~~ -!!! error TS2504: Type '{ [Symbol.asyncIterator](_: number): AsyncGenerator; }' must have a '[Symbol.asyncIterator]()' method that returns an async iterator. -!!! related TS2322 asyncIteratorExtraParameters.ts:11:27: Type '{ [Symbol.asyncIterator](_: number): AsyncGenerator; }' is not assignable to type 'AsyncIterable'. - Types of property '[Symbol.asyncIterator]' are incompatible. - Type '(_: number) => AsyncGenerator' is not assignable to type '() => AsyncIterator'. - Target signature provides too few arguments. Expected 1 or more, but got 0. - - yield* iter; - ~~~~ -!!! error TS2504: Type '{ [Symbol.asyncIterator](_: number): AsyncGenerator; }' must have a '[Symbol.asyncIterator]()' method that returns an async iterator. -!!! related TS2322 asyncIteratorExtraParameters.ts:13:12: Type '{ [Symbol.asyncIterator](_: number): AsyncGenerator; }' is not assignable to type 'AsyncIterable'. - Types of property '[Symbol.asyncIterator]' are incompatible. - Type '(_: number) => AsyncGenerator' is not assignable to type '() => AsyncIterator'. - Target signature provides too few arguments. Expected 1 or more, but got 0. - } - \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/asyncIteratorExtraParameters.errors.txt.diff b/testdata/baselines/reference/submodule/compiler/asyncIteratorExtraParameters.errors.txt.diff new file mode 100644 index 0000000000..40a7953b78 --- /dev/null +++ b/testdata/baselines/reference/submodule/compiler/asyncIteratorExtraParameters.errors.txt.diff @@ -0,0 +1,49 @@ +--- old.asyncIteratorExtraParameters.errors.txt ++++ new.asyncIteratorExtraParameters.errors.txt +@@= skipped -0, +0 lines =@@ ++asyncIteratorExtraParameters.ts(11,27): error TS2322: Type '{ [Symbol.asyncIterator](_: number): AsyncGenerator; }' is not assignable to type 'AsyncIterable'. ++ Types of property '[Symbol.asyncIterator]' are incompatible. ++ Type '(_: number) => AsyncGenerator' is not assignable to type '() => AsyncIterator'. ++ Target signature provides too few arguments. Expected 1 or more, but got 0. + asyncIteratorExtraParameters.ts(11,27): error TS2504: Type '{ [Symbol.asyncIterator](_: number): AsyncGenerator; }' must have a '[Symbol.asyncIterator]()' method that returns an async iterator. ++asyncIteratorExtraParameters.ts(13,12): error TS2322: Type '{ [Symbol.asyncIterator](_: number): AsyncGenerator; }' is not assignable to type 'AsyncIterable'. ++ Types of property '[Symbol.asyncIterator]' are incompatible. ++ Type '(_: number) => AsyncGenerator' is not assignable to type '() => AsyncIterator'. ++ Target signature provides too few arguments. Expected 1 or more, but got 0. + asyncIteratorExtraParameters.ts(13,12): error TS2504: Type '{ [Symbol.asyncIterator](_: number): AsyncGenerator; }' must have a '[Symbol.asyncIterator]()' method that returns an async iterator. + + +-==== asyncIteratorExtraParameters.ts (2 errors) ==== ++==== asyncIteratorExtraParameters.ts (4 errors) ==== + // https://github.com/microsoft/TypeScript/issues/57130 + const iter = { + async *[Symbol.asyncIterator](_: number) { +@@= skipped -14, +22 lines =@@ + async function* f() { + for await (const _ of iter); + ~~~~ ++!!! error TS2322: Type '{ [Symbol.asyncIterator](_: number): AsyncGenerator; }' is not assignable to type 'AsyncIterable'. ++!!! error TS2322: Types of property '[Symbol.asyncIterator]' are incompatible. ++!!! error TS2322: Type '(_: number) => AsyncGenerator' is not assignable to type '() => AsyncIterator'. ++!!! error TS2322: Target signature provides too few arguments. Expected 1 or more, but got 0. ++ ~~~~ + !!! error TS2504: Type '{ [Symbol.asyncIterator](_: number): AsyncGenerator; }' must have a '[Symbol.asyncIterator]()' method that returns an async iterator. +-!!! related TS2322 asyncIteratorExtraParameters.ts:11:27: Type '{ [Symbol.asyncIterator](_: number): AsyncGenerator; }' is not assignable to type 'AsyncIterable'. +- Types of property '[Symbol.asyncIterator]' are incompatible. +- Type '(_: number) => AsyncGenerator' is not assignable to type '() => AsyncIterator'. +- Target signature provides too few arguments. Expected 1 or more, but got 0. + + yield* iter; + ~~~~ ++!!! error TS2322: Type '{ [Symbol.asyncIterator](_: number): AsyncGenerator; }' is not assignable to type 'AsyncIterable'. ++!!! error TS2322: Types of property '[Symbol.asyncIterator]' are incompatible. ++!!! error TS2322: Type '(_: number) => AsyncGenerator' is not assignable to type '() => AsyncIterator'. ++!!! error TS2322: Target signature provides too few arguments. Expected 1 or more, but got 0. ++ ~~~~ + !!! error TS2504: Type '{ [Symbol.asyncIterator](_: number): AsyncGenerator; }' must have a '[Symbol.asyncIterator]()' method that returns an async iterator. +-!!! related TS2322 asyncIteratorExtraParameters.ts:13:12: Type '{ [Symbol.asyncIterator](_: number): AsyncGenerator; }' is not assignable to type 'AsyncIterable'. +- Types of property '[Symbol.asyncIterator]' are incompatible. +- Type '(_: number) => AsyncGenerator' is not assignable to type '() => AsyncIterator'. +- Target signature provides too few arguments. Expected 1 or more, but got 0. + } + \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/iteratorExtraParameters.errors.txt b/testdata/baselines/reference/submodule/compiler/iteratorExtraParameters.errors.txt deleted file mode 100644 index 887c04fe2e..0000000000 --- a/testdata/baselines/reference/submodule/compiler/iteratorExtraParameters.errors.txt +++ /dev/null @@ -1,36 +0,0 @@ -iteratorExtraParameters.ts(11,21): error TS2488: Type '{ [Symbol.iterator](_: number): Generator; }' must have a '[Symbol.iterator]()' method that returns an iterator. -iteratorExtraParameters.ts(13,12): error TS2488: Type '{ [Symbol.iterator](_: number): Generator; }' must have a '[Symbol.iterator]()' method that returns an iterator. - - -==== iteratorExtraParameters.ts (2 errors) ==== - // https://github.com/microsoft/TypeScript/issues/57130 - const iter = { - *[Symbol.iterator](_: number) { - yield 0; - } - }; - - declare function g(...args: any): any; - - function* f() { - for (const _ of iter); - ~~~~ -!!! error TS2488: Type '{ [Symbol.iterator](_: number): Generator; }' must have a '[Symbol.iterator]()' method that returns an iterator. -!!! related TS2322 iteratorExtraParameters.ts:11:21: Type '{ [Symbol.iterator](_: number): Generator; }' is not assignable to type 'Iterable'. - Types of property '[Symbol.iterator]' are incompatible. - Type '(_: number) => Generator' is not assignable to type '() => Iterator'. - Target signature provides too few arguments. Expected 1 or more, but got 0. - - yield* iter; - ~~~~ -!!! error TS2488: Type '{ [Symbol.iterator](_: number): Generator; }' must have a '[Symbol.iterator]()' method that returns an iterator. -!!! related TS2322 iteratorExtraParameters.ts:13:12: Type '{ [Symbol.iterator](_: number): Generator; }' is not assignable to type 'Iterable'. - Types of property '[Symbol.iterator]' are incompatible. - Type '(_: number) => Generator' is not assignable to type '() => Iterator'. - Target signature provides too few arguments. Expected 1 or more, but got 0. - - [...iter] - - g(...iter); - } - \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/iteratorExtraParameters.errors.txt.diff b/testdata/baselines/reference/submodule/compiler/iteratorExtraParameters.errors.txt.diff index d12da0a85b..69b8041716 100644 --- a/testdata/baselines/reference/submodule/compiler/iteratorExtraParameters.errors.txt.diff +++ b/testdata/baselines/reference/submodule/compiler/iteratorExtraParameters.errors.txt.diff @@ -1,21 +1,48 @@ --- old.iteratorExtraParameters.errors.txt +++ new.iteratorExtraParameters.errors.txt @@= skipped -0, +0 lines =@@ ++iteratorExtraParameters.ts(11,21): error TS2322: Type '{ [Symbol.iterator](_: number): Generator; }' is not assignable to type 'Iterable'. ++ Types of property '[Symbol.iterator]' are incompatible. ++ Type '(_: number) => Generator' is not assignable to type '() => Iterator'. ++ Target signature provides too few arguments. Expected 1 or more, but got 0. iteratorExtraParameters.ts(11,21): error TS2488: Type '{ [Symbol.iterator](_: number): Generator; }' must have a '[Symbol.iterator]()' method that returns an iterator. ++iteratorExtraParameters.ts(13,12): error TS2322: Type '{ [Symbol.iterator](_: number): Generator; }' is not assignable to type 'Iterable'. ++ Types of property '[Symbol.iterator]' are incompatible. ++ Type '(_: number) => Generator' is not assignable to type '() => Iterator'. ++ Target signature provides too few arguments. Expected 1 or more, but got 0. iteratorExtraParameters.ts(13,12): error TS2488: Type '{ [Symbol.iterator](_: number): Generator; }' must have a '[Symbol.iterator]()' method that returns an iterator. -iteratorExtraParameters.ts(15,9): error TS2488: Type '{ [Symbol.iterator](_: number): Generator; }' must have a '[Symbol.iterator]()' method that returns an iterator. -iteratorExtraParameters.ts(17,10): error TS2488: Type '{ [Symbol.iterator](_: number): Generator; }' must have a '[Symbol.iterator]()' method that returns an iterator. -- -- --==== iteratorExtraParameters.ts (4 errors) ==== -+ -+ -+==== iteratorExtraParameters.ts (2 errors) ==== - // https://github.com/microsoft/TypeScript/issues/57130 - const iter = { - *[Symbol.iterator](_: number) { -@@= skipped -31, +29 lines =@@ - Target signature provides too few arguments. Expected 1 or more, but got 0. + + + ==== iteratorExtraParameters.ts (4 errors) ==== +@@= skipped -16, +22 lines =@@ + function* f() { + for (const _ of iter); + ~~~~ ++!!! error TS2322: Type '{ [Symbol.iterator](_: number): Generator; }' is not assignable to type 'Iterable'. ++!!! error TS2322: Types of property '[Symbol.iterator]' are incompatible. ++!!! error TS2322: Type '(_: number) => Generator' is not assignable to type '() => Iterator'. ++!!! error TS2322: Target signature provides too few arguments. Expected 1 or more, but got 0. ++ ~~~~ + !!! error TS2488: Type '{ [Symbol.iterator](_: number): Generator; }' must have a '[Symbol.iterator]()' method that returns an iterator. +-!!! related TS2322 iteratorExtraParameters.ts:11:21: Type '{ [Symbol.iterator](_: number): Generator; }' is not assignable to type 'Iterable'. +- Types of property '[Symbol.iterator]' are incompatible. +- Type '(_: number) => Generator' is not assignable to type '() => Iterator'. +- Target signature provides too few arguments. Expected 1 or more, but got 0. + + yield* iter; + ~~~~ ++!!! error TS2322: Type '{ [Symbol.iterator](_: number): Generator; }' is not assignable to type 'Iterable'. ++!!! error TS2322: Types of property '[Symbol.iterator]' are incompatible. ++!!! error TS2322: Type '(_: number) => Generator' is not assignable to type '() => Iterator'. ++!!! error TS2322: Target signature provides too few arguments. Expected 1 or more, but got 0. ++ ~~~~ + !!! error TS2488: Type '{ [Symbol.iterator](_: number): Generator; }' must have a '[Symbol.iterator]()' method that returns an iterator. +-!!! related TS2322 iteratorExtraParameters.ts:13:12: Type '{ [Symbol.iterator](_: number): Generator; }' is not assignable to type 'Iterable'. +- Types of property '[Symbol.iterator]' are incompatible. +- Type '(_: number) => Generator' is not assignable to type '() => Iterator'. +- Target signature provides too few arguments. Expected 1 or more, but got 0. [...iter] - ~~~~ From cbc586019b5a61a590d4d246e09feab912cf9831 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 6 Jun 2025 16:33:08 +0000 Subject: [PATCH 05/10] Update final baselines for iterator parameter validation --- .../asyncIteratorExtraParameters.errors.txt | 42 +++++++++++++++++ .../iteratorExtraParameters.errors.txt | 46 +++++++++++++++++++ 2 files changed, 88 insertions(+) create mode 100644 testdata/baselines/reference/submodule/compiler/asyncIteratorExtraParameters.errors.txt create mode 100644 testdata/baselines/reference/submodule/compiler/iteratorExtraParameters.errors.txt diff --git a/testdata/baselines/reference/submodule/compiler/asyncIteratorExtraParameters.errors.txt b/testdata/baselines/reference/submodule/compiler/asyncIteratorExtraParameters.errors.txt new file mode 100644 index 0000000000..6b75ddfe3e --- /dev/null +++ b/testdata/baselines/reference/submodule/compiler/asyncIteratorExtraParameters.errors.txt @@ -0,0 +1,42 @@ +asyncIteratorExtraParameters.ts(11,27): error TS2322: Type '{ [Symbol.asyncIterator](_: number): AsyncGenerator; }' is not assignable to type 'AsyncIterable'. + Types of property '[Symbol.asyncIterator]' are incompatible. + Type '(_: number) => AsyncGenerator' is not assignable to type '() => AsyncIterator'. + Target signature provides too few arguments. Expected 1 or more, but got 0. +asyncIteratorExtraParameters.ts(11,27): error TS2504: Type '{ [Symbol.asyncIterator](_: number): AsyncGenerator; }' must have a '[Symbol.asyncIterator]()' method that returns an async iterator. +asyncIteratorExtraParameters.ts(13,12): error TS2322: Type '{ [Symbol.asyncIterator](_: number): AsyncGenerator; }' is not assignable to type 'AsyncIterable'. + Types of property '[Symbol.asyncIterator]' are incompatible. + Type '(_: number) => AsyncGenerator' is not assignable to type '() => AsyncIterator'. + Target signature provides too few arguments. Expected 1 or more, but got 0. +asyncIteratorExtraParameters.ts(13,12): error TS2504: Type '{ [Symbol.asyncIterator](_: number): AsyncGenerator; }' must have a '[Symbol.asyncIterator]()' method that returns an async iterator. + + +==== asyncIteratorExtraParameters.ts (4 errors) ==== + // https://github.com/microsoft/TypeScript/issues/57130 + const iter = { + async *[Symbol.asyncIterator](_: number) { + yield 0; + } + }; + + declare function g(...args: any): any; + + async function* f() { + for await (const _ of iter); + ~~~~ +!!! error TS2322: Type '{ [Symbol.asyncIterator](_: number): AsyncGenerator; }' is not assignable to type 'AsyncIterable'. +!!! error TS2322: Types of property '[Symbol.asyncIterator]' are incompatible. +!!! error TS2322: Type '(_: number) => AsyncGenerator' is not assignable to type '() => AsyncIterator'. +!!! error TS2322: Target signature provides too few arguments. Expected 1 or more, but got 0. + ~~~~ +!!! error TS2504: Type '{ [Symbol.asyncIterator](_: number): AsyncGenerator; }' must have a '[Symbol.asyncIterator]()' method that returns an async iterator. + + yield* iter; + ~~~~ +!!! error TS2322: Type '{ [Symbol.asyncIterator](_: number): AsyncGenerator; }' is not assignable to type 'AsyncIterable'. +!!! error TS2322: Types of property '[Symbol.asyncIterator]' are incompatible. +!!! error TS2322: Type '(_: number) => AsyncGenerator' is not assignable to type '() => AsyncIterator'. +!!! error TS2322: Target signature provides too few arguments. Expected 1 or more, but got 0. + ~~~~ +!!! error TS2504: Type '{ [Symbol.asyncIterator](_: number): AsyncGenerator; }' must have a '[Symbol.asyncIterator]()' method that returns an async iterator. + } + \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/iteratorExtraParameters.errors.txt b/testdata/baselines/reference/submodule/compiler/iteratorExtraParameters.errors.txt new file mode 100644 index 0000000000..3d92765251 --- /dev/null +++ b/testdata/baselines/reference/submodule/compiler/iteratorExtraParameters.errors.txt @@ -0,0 +1,46 @@ +iteratorExtraParameters.ts(11,21): error TS2322: Type '{ [Symbol.iterator](_: number): Generator; }' is not assignable to type 'Iterable'. + Types of property '[Symbol.iterator]' are incompatible. + Type '(_: number) => Generator' is not assignable to type '() => Iterator'. + Target signature provides too few arguments. Expected 1 or more, but got 0. +iteratorExtraParameters.ts(11,21): error TS2488: Type '{ [Symbol.iterator](_: number): Generator; }' must have a '[Symbol.iterator]()' method that returns an iterator. +iteratorExtraParameters.ts(13,12): error TS2322: Type '{ [Symbol.iterator](_: number): Generator; }' is not assignable to type 'Iterable'. + Types of property '[Symbol.iterator]' are incompatible. + Type '(_: number) => Generator' is not assignable to type '() => Iterator'. + Target signature provides too few arguments. Expected 1 or more, but got 0. +iteratorExtraParameters.ts(13,12): error TS2488: Type '{ [Symbol.iterator](_: number): Generator; }' must have a '[Symbol.iterator]()' method that returns an iterator. + + +==== iteratorExtraParameters.ts (4 errors) ==== + // https://github.com/microsoft/TypeScript/issues/57130 + const iter = { + *[Symbol.iterator](_: number) { + yield 0; + } + }; + + declare function g(...args: any): any; + + function* f() { + for (const _ of iter); + ~~~~ +!!! error TS2322: Type '{ [Symbol.iterator](_: number): Generator; }' is not assignable to type 'Iterable'. +!!! error TS2322: Types of property '[Symbol.iterator]' are incompatible. +!!! error TS2322: Type '(_: number) => Generator' is not assignable to type '() => Iterator'. +!!! error TS2322: Target signature provides too few arguments. Expected 1 or more, but got 0. + ~~~~ +!!! error TS2488: Type '{ [Symbol.iterator](_: number): Generator; }' must have a '[Symbol.iterator]()' method that returns an iterator. + + yield* iter; + ~~~~ +!!! error TS2322: Type '{ [Symbol.iterator](_: number): Generator; }' is not assignable to type 'Iterable'. +!!! error TS2322: Types of property '[Symbol.iterator]' are incompatible. +!!! error TS2322: Type '(_: number) => Generator' is not assignable to type '() => Iterator'. +!!! error TS2322: Target signature provides too few arguments. Expected 1 or more, but got 0. + ~~~~ +!!! error TS2488: Type '{ [Symbol.iterator](_: number): Generator; }' must have a '[Symbol.iterator]()' method that returns an iterator. + + [...iter] + + g(...iter); + } + \ No newline at end of file From 079190c3340161ed882f9a95857d3acbfc6d8e7a Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 6 Jun 2025 16:58:45 +0000 Subject: [PATCH 06/10] Fix error chaining for iterator parameter validation Co-authored-by: andrewbranch <3277153+andrewbranch@users.noreply.github.com> --- internal/checker/checker.go | 2 +- .../asyncIteratorExtraParameters.errors.txt | 28 ++++------- ...yncIteratorExtraParameters.errors.txt.diff | 49 ------------------- .../iteratorExtraParameters.errors.txt | 28 ++++------- .../iteratorExtraParameters.errors.txt.diff | 49 +++++-------------- 5 files changed, 30 insertions(+), 126 deletions(-) delete mode 100644 testdata/baselines/reference/submodule/compiler/asyncIteratorExtraParameters.errors.txt.diff diff --git a/internal/checker/checker.go b/internal/checker/checker.go index 05c8446db6..75cd631798 100644 --- a/internal/checker/checker.go +++ b/internal/checker/checker.go @@ -6071,7 +6071,7 @@ func (c *Checker) getIterationTypesOfIterableSlow(t *Type, r *IterationTypesReso }) if len(validSignatures) == 0 { if errorNode != nil && len(allSignatures) > 0 { - c.checkTypeAssignableTo(t, r.getGlobalIterableType(), errorNode, nil /*headMessage*/) + c.checkTypeAssignableToEx(t, r.getGlobalIterableType(), errorNode, nil /*headMessage*/, diagnosticOutput) } return IterationTypes{} } diff --git a/testdata/baselines/reference/submodule/compiler/asyncIteratorExtraParameters.errors.txt b/testdata/baselines/reference/submodule/compiler/asyncIteratorExtraParameters.errors.txt index 6b75ddfe3e..9a2965d54a 100644 --- a/testdata/baselines/reference/submodule/compiler/asyncIteratorExtraParameters.errors.txt +++ b/testdata/baselines/reference/submodule/compiler/asyncIteratorExtraParameters.errors.txt @@ -1,16 +1,8 @@ -asyncIteratorExtraParameters.ts(11,27): error TS2322: Type '{ [Symbol.asyncIterator](_: number): AsyncGenerator; }' is not assignable to type 'AsyncIterable'. - Types of property '[Symbol.asyncIterator]' are incompatible. - Type '(_: number) => AsyncGenerator' is not assignable to type '() => AsyncIterator'. - Target signature provides too few arguments. Expected 1 or more, but got 0. asyncIteratorExtraParameters.ts(11,27): error TS2504: Type '{ [Symbol.asyncIterator](_: number): AsyncGenerator; }' must have a '[Symbol.asyncIterator]()' method that returns an async iterator. -asyncIteratorExtraParameters.ts(13,12): error TS2322: Type '{ [Symbol.asyncIterator](_: number): AsyncGenerator; }' is not assignable to type 'AsyncIterable'. - Types of property '[Symbol.asyncIterator]' are incompatible. - Type '(_: number) => AsyncGenerator' is not assignable to type '() => AsyncIterator'. - Target signature provides too few arguments. Expected 1 or more, but got 0. asyncIteratorExtraParameters.ts(13,12): error TS2504: Type '{ [Symbol.asyncIterator](_: number): AsyncGenerator; }' must have a '[Symbol.asyncIterator]()' method that returns an async iterator. -==== asyncIteratorExtraParameters.ts (4 errors) ==== +==== asyncIteratorExtraParameters.ts (2 errors) ==== // https://github.com/microsoft/TypeScript/issues/57130 const iter = { async *[Symbol.asyncIterator](_: number) { @@ -23,20 +15,18 @@ asyncIteratorExtraParameters.ts(13,12): error TS2504: Type '{ [Symbol.asyncItera async function* f() { for await (const _ of iter); ~~~~ -!!! error TS2322: Type '{ [Symbol.asyncIterator](_: number): AsyncGenerator; }' is not assignable to type 'AsyncIterable'. -!!! error TS2322: Types of property '[Symbol.asyncIterator]' are incompatible. -!!! error TS2322: Type '(_: number) => AsyncGenerator' is not assignable to type '() => AsyncIterator'. -!!! error TS2322: Target signature provides too few arguments. Expected 1 or more, but got 0. - ~~~~ !!! error TS2504: Type '{ [Symbol.asyncIterator](_: number): AsyncGenerator; }' must have a '[Symbol.asyncIterator]()' method that returns an async iterator. +!!! related TS2322 asyncIteratorExtraParameters.ts:11:27: Type '{ [Symbol.asyncIterator](_: number): AsyncGenerator; }' is not assignable to type 'AsyncIterable'. + Types of property '[Symbol.asyncIterator]' are incompatible. + Type '(_: number) => AsyncGenerator' is not assignable to type '() => AsyncIterator'. + Target signature provides too few arguments. Expected 1 or more, but got 0. yield* iter; ~~~~ -!!! error TS2322: Type '{ [Symbol.asyncIterator](_: number): AsyncGenerator; }' is not assignable to type 'AsyncIterable'. -!!! error TS2322: Types of property '[Symbol.asyncIterator]' are incompatible. -!!! error TS2322: Type '(_: number) => AsyncGenerator' is not assignable to type '() => AsyncIterator'. -!!! error TS2322: Target signature provides too few arguments. Expected 1 or more, but got 0. - ~~~~ !!! error TS2504: Type '{ [Symbol.asyncIterator](_: number): AsyncGenerator; }' must have a '[Symbol.asyncIterator]()' method that returns an async iterator. +!!! related TS2322 asyncIteratorExtraParameters.ts:13:12: Type '{ [Symbol.asyncIterator](_: number): AsyncGenerator; }' is not assignable to type 'AsyncIterable'. + Types of property '[Symbol.asyncIterator]' are incompatible. + Type '(_: number) => AsyncGenerator' is not assignable to type '() => AsyncIterator'. + Target signature provides too few arguments. Expected 1 or more, but got 0. } \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/asyncIteratorExtraParameters.errors.txt.diff b/testdata/baselines/reference/submodule/compiler/asyncIteratorExtraParameters.errors.txt.diff deleted file mode 100644 index 40a7953b78..0000000000 --- a/testdata/baselines/reference/submodule/compiler/asyncIteratorExtraParameters.errors.txt.diff +++ /dev/null @@ -1,49 +0,0 @@ ---- old.asyncIteratorExtraParameters.errors.txt -+++ new.asyncIteratorExtraParameters.errors.txt -@@= skipped -0, +0 lines =@@ -+asyncIteratorExtraParameters.ts(11,27): error TS2322: Type '{ [Symbol.asyncIterator](_: number): AsyncGenerator; }' is not assignable to type 'AsyncIterable'. -+ Types of property '[Symbol.asyncIterator]' are incompatible. -+ Type '(_: number) => AsyncGenerator' is not assignable to type '() => AsyncIterator'. -+ Target signature provides too few arguments. Expected 1 or more, but got 0. - asyncIteratorExtraParameters.ts(11,27): error TS2504: Type '{ [Symbol.asyncIterator](_: number): AsyncGenerator; }' must have a '[Symbol.asyncIterator]()' method that returns an async iterator. -+asyncIteratorExtraParameters.ts(13,12): error TS2322: Type '{ [Symbol.asyncIterator](_: number): AsyncGenerator; }' is not assignable to type 'AsyncIterable'. -+ Types of property '[Symbol.asyncIterator]' are incompatible. -+ Type '(_: number) => AsyncGenerator' is not assignable to type '() => AsyncIterator'. -+ Target signature provides too few arguments. Expected 1 or more, but got 0. - asyncIteratorExtraParameters.ts(13,12): error TS2504: Type '{ [Symbol.asyncIterator](_: number): AsyncGenerator; }' must have a '[Symbol.asyncIterator]()' method that returns an async iterator. - - --==== asyncIteratorExtraParameters.ts (2 errors) ==== -+==== asyncIteratorExtraParameters.ts (4 errors) ==== - // https://github.com/microsoft/TypeScript/issues/57130 - const iter = { - async *[Symbol.asyncIterator](_: number) { -@@= skipped -14, +22 lines =@@ - async function* f() { - for await (const _ of iter); - ~~~~ -+!!! error TS2322: Type '{ [Symbol.asyncIterator](_: number): AsyncGenerator; }' is not assignable to type 'AsyncIterable'. -+!!! error TS2322: Types of property '[Symbol.asyncIterator]' are incompatible. -+!!! error TS2322: Type '(_: number) => AsyncGenerator' is not assignable to type '() => AsyncIterator'. -+!!! error TS2322: Target signature provides too few arguments. Expected 1 or more, but got 0. -+ ~~~~ - !!! error TS2504: Type '{ [Symbol.asyncIterator](_: number): AsyncGenerator; }' must have a '[Symbol.asyncIterator]()' method that returns an async iterator. --!!! related TS2322 asyncIteratorExtraParameters.ts:11:27: Type '{ [Symbol.asyncIterator](_: number): AsyncGenerator; }' is not assignable to type 'AsyncIterable'. -- Types of property '[Symbol.asyncIterator]' are incompatible. -- Type '(_: number) => AsyncGenerator' is not assignable to type '() => AsyncIterator'. -- Target signature provides too few arguments. Expected 1 or more, but got 0. - - yield* iter; - ~~~~ -+!!! error TS2322: Type '{ [Symbol.asyncIterator](_: number): AsyncGenerator; }' is not assignable to type 'AsyncIterable'. -+!!! error TS2322: Types of property '[Symbol.asyncIterator]' are incompatible. -+!!! error TS2322: Type '(_: number) => AsyncGenerator' is not assignable to type '() => AsyncIterator'. -+!!! error TS2322: Target signature provides too few arguments. Expected 1 or more, but got 0. -+ ~~~~ - !!! error TS2504: Type '{ [Symbol.asyncIterator](_: number): AsyncGenerator; }' must have a '[Symbol.asyncIterator]()' method that returns an async iterator. --!!! related TS2322 asyncIteratorExtraParameters.ts:13:12: Type '{ [Symbol.asyncIterator](_: number): AsyncGenerator; }' is not assignable to type 'AsyncIterable'. -- Types of property '[Symbol.asyncIterator]' are incompatible. -- Type '(_: number) => AsyncGenerator' is not assignable to type '() => AsyncIterator'. -- Target signature provides too few arguments. Expected 1 or more, but got 0. - } - \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/iteratorExtraParameters.errors.txt b/testdata/baselines/reference/submodule/compiler/iteratorExtraParameters.errors.txt index 3d92765251..887c04fe2e 100644 --- a/testdata/baselines/reference/submodule/compiler/iteratorExtraParameters.errors.txt +++ b/testdata/baselines/reference/submodule/compiler/iteratorExtraParameters.errors.txt @@ -1,16 +1,8 @@ -iteratorExtraParameters.ts(11,21): error TS2322: Type '{ [Symbol.iterator](_: number): Generator; }' is not assignable to type 'Iterable'. - Types of property '[Symbol.iterator]' are incompatible. - Type '(_: number) => Generator' is not assignable to type '() => Iterator'. - Target signature provides too few arguments. Expected 1 or more, but got 0. iteratorExtraParameters.ts(11,21): error TS2488: Type '{ [Symbol.iterator](_: number): Generator; }' must have a '[Symbol.iterator]()' method that returns an iterator. -iteratorExtraParameters.ts(13,12): error TS2322: Type '{ [Symbol.iterator](_: number): Generator; }' is not assignable to type 'Iterable'. - Types of property '[Symbol.iterator]' are incompatible. - Type '(_: number) => Generator' is not assignable to type '() => Iterator'. - Target signature provides too few arguments. Expected 1 or more, but got 0. iteratorExtraParameters.ts(13,12): error TS2488: Type '{ [Symbol.iterator](_: number): Generator; }' must have a '[Symbol.iterator]()' method that returns an iterator. -==== iteratorExtraParameters.ts (4 errors) ==== +==== iteratorExtraParameters.ts (2 errors) ==== // https://github.com/microsoft/TypeScript/issues/57130 const iter = { *[Symbol.iterator](_: number) { @@ -23,21 +15,19 @@ iteratorExtraParameters.ts(13,12): error TS2488: Type '{ [Symbol.iterator](_: nu function* f() { for (const _ of iter); ~~~~ -!!! error TS2322: Type '{ [Symbol.iterator](_: number): Generator; }' is not assignable to type 'Iterable'. -!!! error TS2322: Types of property '[Symbol.iterator]' are incompatible. -!!! error TS2322: Type '(_: number) => Generator' is not assignable to type '() => Iterator'. -!!! error TS2322: Target signature provides too few arguments. Expected 1 or more, but got 0. - ~~~~ !!! error TS2488: Type '{ [Symbol.iterator](_: number): Generator; }' must have a '[Symbol.iterator]()' method that returns an iterator. +!!! related TS2322 iteratorExtraParameters.ts:11:21: Type '{ [Symbol.iterator](_: number): Generator; }' is not assignable to type 'Iterable'. + Types of property '[Symbol.iterator]' are incompatible. + Type '(_: number) => Generator' is not assignable to type '() => Iterator'. + Target signature provides too few arguments. Expected 1 or more, but got 0. yield* iter; ~~~~ -!!! error TS2322: Type '{ [Symbol.iterator](_: number): Generator; }' is not assignable to type 'Iterable'. -!!! error TS2322: Types of property '[Symbol.iterator]' are incompatible. -!!! error TS2322: Type '(_: number) => Generator' is not assignable to type '() => Iterator'. -!!! error TS2322: Target signature provides too few arguments. Expected 1 or more, but got 0. - ~~~~ !!! error TS2488: Type '{ [Symbol.iterator](_: number): Generator; }' must have a '[Symbol.iterator]()' method that returns an iterator. +!!! related TS2322 iteratorExtraParameters.ts:13:12: Type '{ [Symbol.iterator](_: number): Generator; }' is not assignable to type 'Iterable'. + Types of property '[Symbol.iterator]' are incompatible. + Type '(_: number) => Generator' is not assignable to type '() => Iterator'. + Target signature provides too few arguments. Expected 1 or more, but got 0. [...iter] diff --git a/testdata/baselines/reference/submodule/compiler/iteratorExtraParameters.errors.txt.diff b/testdata/baselines/reference/submodule/compiler/iteratorExtraParameters.errors.txt.diff index 69b8041716..d12da0a85b 100644 --- a/testdata/baselines/reference/submodule/compiler/iteratorExtraParameters.errors.txt.diff +++ b/testdata/baselines/reference/submodule/compiler/iteratorExtraParameters.errors.txt.diff @@ -1,48 +1,21 @@ --- old.iteratorExtraParameters.errors.txt +++ new.iteratorExtraParameters.errors.txt @@= skipped -0, +0 lines =@@ -+iteratorExtraParameters.ts(11,21): error TS2322: Type '{ [Symbol.iterator](_: number): Generator; }' is not assignable to type 'Iterable'. -+ Types of property '[Symbol.iterator]' are incompatible. -+ Type '(_: number) => Generator' is not assignable to type '() => Iterator'. -+ Target signature provides too few arguments. Expected 1 or more, but got 0. iteratorExtraParameters.ts(11,21): error TS2488: Type '{ [Symbol.iterator](_: number): Generator; }' must have a '[Symbol.iterator]()' method that returns an iterator. -+iteratorExtraParameters.ts(13,12): error TS2322: Type '{ [Symbol.iterator](_: number): Generator; }' is not assignable to type 'Iterable'. -+ Types of property '[Symbol.iterator]' are incompatible. -+ Type '(_: number) => Generator' is not assignable to type '() => Iterator'. -+ Target signature provides too few arguments. Expected 1 or more, but got 0. iteratorExtraParameters.ts(13,12): error TS2488: Type '{ [Symbol.iterator](_: number): Generator; }' must have a '[Symbol.iterator]()' method that returns an iterator. -iteratorExtraParameters.ts(15,9): error TS2488: Type '{ [Symbol.iterator](_: number): Generator; }' must have a '[Symbol.iterator]()' method that returns an iterator. -iteratorExtraParameters.ts(17,10): error TS2488: Type '{ [Symbol.iterator](_: number): Generator; }' must have a '[Symbol.iterator]()' method that returns an iterator. - - - ==== iteratorExtraParameters.ts (4 errors) ==== -@@= skipped -16, +22 lines =@@ - function* f() { - for (const _ of iter); - ~~~~ -+!!! error TS2322: Type '{ [Symbol.iterator](_: number): Generator; }' is not assignable to type 'Iterable'. -+!!! error TS2322: Types of property '[Symbol.iterator]' are incompatible. -+!!! error TS2322: Type '(_: number) => Generator' is not assignable to type '() => Iterator'. -+!!! error TS2322: Target signature provides too few arguments. Expected 1 or more, but got 0. -+ ~~~~ - !!! error TS2488: Type '{ [Symbol.iterator](_: number): Generator; }' must have a '[Symbol.iterator]()' method that returns an iterator. --!!! related TS2322 iteratorExtraParameters.ts:11:21: Type '{ [Symbol.iterator](_: number): Generator; }' is not assignable to type 'Iterable'. -- Types of property '[Symbol.iterator]' are incompatible. -- Type '(_: number) => Generator' is not assignable to type '() => Iterator'. -- Target signature provides too few arguments. Expected 1 or more, but got 0. - - yield* iter; - ~~~~ -+!!! error TS2322: Type '{ [Symbol.iterator](_: number): Generator; }' is not assignable to type 'Iterable'. -+!!! error TS2322: Types of property '[Symbol.iterator]' are incompatible. -+!!! error TS2322: Type '(_: number) => Generator' is not assignable to type '() => Iterator'. -+!!! error TS2322: Target signature provides too few arguments. Expected 1 or more, but got 0. -+ ~~~~ - !!! error TS2488: Type '{ [Symbol.iterator](_: number): Generator; }' must have a '[Symbol.iterator]()' method that returns an iterator. --!!! related TS2322 iteratorExtraParameters.ts:13:12: Type '{ [Symbol.iterator](_: number): Generator; }' is not assignable to type 'Iterable'. -- Types of property '[Symbol.iterator]' are incompatible. -- Type '(_: number) => Generator' is not assignable to type '() => Iterator'. -- Target signature provides too few arguments. Expected 1 or more, but got 0. +- +- +-==== iteratorExtraParameters.ts (4 errors) ==== ++ ++ ++==== iteratorExtraParameters.ts (2 errors) ==== + // https://github.com/microsoft/TypeScript/issues/57130 + const iter = { + *[Symbol.iterator](_: number) { +@@= skipped -31, +29 lines =@@ + Target signature provides too few arguments. Expected 1 or more, but got 0. [...iter] - ~~~~ From 4b9be9f246372fbd8694aa387ca119bb977ee9a3 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 6 Jun 2025 18:15:18 +0000 Subject: [PATCH 07/10] Investigate iterator parameter validation caching issue Co-authored-by: andrewbranch <3277153+andrewbranch@users.noreply.github.com> --- internal/checker/checker.go | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/internal/checker/checker.go b/internal/checker/checker.go index 75cd631798..92f71f5ed1 100644 --- a/internal/checker/checker.go +++ b/internal/checker/checker.go @@ -5748,7 +5748,9 @@ func (c *Checker) getIteratedTypeOrElementType(use IterationUse, inputType *Type // downlevelIteration is requested. if uplevelIteration || downlevelIteration || allowAsyncIterables { // We only report errors for an invalid iterable type in ES2015 or higher. + fmt.Printf("DEBUG: getIteratedTypeOrElementType calling getIterationTypesOfIterable for use=%d\n", use) iterationTypes := c.getIterationTypesOfIterable(inputType, use, core.IfElse(uplevelIteration, errorNode, nil)) + fmt.Printf("DEBUG: getIterationTypesOfIterable returned yieldType=%v\n", iterationTypes.yieldType != nil) if checkAssignability { if iterationTypes.nextType != nil { var diagnostic *diagnostics.Message @@ -5769,6 +5771,7 @@ func (c *Checker) getIteratedTypeOrElementType(use IterationUse, inputType *Type } if iterationTypes.yieldType != nil || uplevelIteration { if iterationTypes.yieldType == nil { + fmt.Printf("DEBUG: iterationTypes.yieldType is nil, returning nil\n") return nil } if possibleOutOfBounds { @@ -5900,10 +5903,13 @@ func (c *Checker) getIterationTypesOfIterable(t *Type, use IterationUse, errorNo if IsTypeAny(t) { return IterationTypes{c.anyType, c.anyType, c.anyType} } + fmt.Printf("DEBUG: getIterationTypesOfIterable called with use=%d, errorNode=%v\n", use, errorNode != nil) key := IterationTypesKey{typeId: t.id, use: use&IterationUseCacheFlags | core.IfElse(errorNode != nil, IterationUseReportError, 0)} if cached, ok := c.iterationTypesCache[key]; ok { + fmt.Printf("DEBUG: getIterationTypesOfIterable cache hit\n") return cached } + fmt.Printf("DEBUG: getIterationTypesOfIterable cache miss\n") result := c.getIterationTypesOfIterableWorker(t, use, errorNode) c.iterationTypesCache[key] = result return result From a6356cfa8530195f7d38ea7405f98ecd7c97e539 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 6 Jun 2025 18:31:36 +0000 Subject: [PATCH 08/10] Fix iterator parameter validation caching issue for spread syntax Co-authored-by: andrewbranch <3277153+andrewbranch@users.noreply.github.com> --- internal/checker/checker.go | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/internal/checker/checker.go b/internal/checker/checker.go index 92f71f5ed1..f63eb803d9 100644 --- a/internal/checker/checker.go +++ b/internal/checker/checker.go @@ -481,7 +481,7 @@ const ( IterationUseAsyncYieldStar = IterationUseAllowsSyncIterablesFlag | IterationUseAllowsAsyncIterablesFlag | IterationUseYieldStarFlag IterationUseGeneratorReturnType = IterationUseAllowsSyncIterablesFlag IterationUseAsyncGeneratorReturnType = IterationUseAllowsAsyncIterablesFlag - IterationUseCacheFlags = IterationUseAllowsSyncIterablesFlag | IterationUseAllowsAsyncIterablesFlag | IterationUseForOfFlag | IterationUseReportError + IterationUseCacheFlags = IterationUseAllowsSyncIterablesFlag | IterationUseAllowsAsyncIterablesFlag | IterationUseForOfFlag | IterationUseYieldStarFlag | IterationUseSpreadFlag | IterationUseDestructuringFlag | IterationUseReportError ) type IterationTypes struct { @@ -5748,9 +5748,7 @@ func (c *Checker) getIteratedTypeOrElementType(use IterationUse, inputType *Type // downlevelIteration is requested. if uplevelIteration || downlevelIteration || allowAsyncIterables { // We only report errors for an invalid iterable type in ES2015 or higher. - fmt.Printf("DEBUG: getIteratedTypeOrElementType calling getIterationTypesOfIterable for use=%d\n", use) iterationTypes := c.getIterationTypesOfIterable(inputType, use, core.IfElse(uplevelIteration, errorNode, nil)) - fmt.Printf("DEBUG: getIterationTypesOfIterable returned yieldType=%v\n", iterationTypes.yieldType != nil) if checkAssignability { if iterationTypes.nextType != nil { var diagnostic *diagnostics.Message @@ -5771,7 +5769,6 @@ func (c *Checker) getIteratedTypeOrElementType(use IterationUse, inputType *Type } if iterationTypes.yieldType != nil || uplevelIteration { if iterationTypes.yieldType == nil { - fmt.Printf("DEBUG: iterationTypes.yieldType is nil, returning nil\n") return nil } if possibleOutOfBounds { @@ -5903,13 +5900,10 @@ func (c *Checker) getIterationTypesOfIterable(t *Type, use IterationUse, errorNo if IsTypeAny(t) { return IterationTypes{c.anyType, c.anyType, c.anyType} } - fmt.Printf("DEBUG: getIterationTypesOfIterable called with use=%d, errorNode=%v\n", use, errorNode != nil) key := IterationTypesKey{typeId: t.id, use: use&IterationUseCacheFlags | core.IfElse(errorNode != nil, IterationUseReportError, 0)} if cached, ok := c.iterationTypesCache[key]; ok { - fmt.Printf("DEBUG: getIterationTypesOfIterable cache hit\n") return cached } - fmt.Printf("DEBUG: getIterationTypesOfIterable cache miss\n") result := c.getIterationTypesOfIterableWorker(t, use, errorNode) c.iterationTypesCache[key] = result return result From 7273d6dd06958b403a1cbac8b350a57287738580 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 6 Jun 2025 20:44:11 +0000 Subject: [PATCH 09/10] Update test baselines after improving iterator parameter validation Co-authored-by: andrewbranch <3277153+andrewbranch@users.noreply.github.com> --- .../compiler/iteratorExtraParameters.errors.txt | 9 ++++++++- .../iteratorExtraParameters.errors.txt.diff | 14 +++----------- 2 files changed, 11 insertions(+), 12 deletions(-) diff --git a/testdata/baselines/reference/submodule/compiler/iteratorExtraParameters.errors.txt b/testdata/baselines/reference/submodule/compiler/iteratorExtraParameters.errors.txt index 887c04fe2e..b972d79d55 100644 --- a/testdata/baselines/reference/submodule/compiler/iteratorExtraParameters.errors.txt +++ b/testdata/baselines/reference/submodule/compiler/iteratorExtraParameters.errors.txt @@ -1,8 +1,9 @@ iteratorExtraParameters.ts(11,21): error TS2488: Type '{ [Symbol.iterator](_: number): Generator; }' must have a '[Symbol.iterator]()' method that returns an iterator. iteratorExtraParameters.ts(13,12): error TS2488: Type '{ [Symbol.iterator](_: number): Generator; }' must have a '[Symbol.iterator]()' method that returns an iterator. +iteratorExtraParameters.ts(15,9): error TS2488: Type '{ [Symbol.iterator](_: number): Generator; }' must have a '[Symbol.iterator]()' method that returns an iterator. -==== iteratorExtraParameters.ts (2 errors) ==== +==== iteratorExtraParameters.ts (3 errors) ==== // https://github.com/microsoft/TypeScript/issues/57130 const iter = { *[Symbol.iterator](_: number) { @@ -30,6 +31,12 @@ iteratorExtraParameters.ts(13,12): error TS2488: Type '{ [Symbol.iterator](_: nu Target signature provides too few arguments. Expected 1 or more, but got 0. [...iter] + ~~~~ +!!! error TS2488: Type '{ [Symbol.iterator](_: number): Generator; }' must have a '[Symbol.iterator]()' method that returns an iterator. +!!! related TS2322 iteratorExtraParameters.ts:15:9: Type '{ [Symbol.iterator](_: number): Generator; }' is not assignable to type 'Iterable'. + Types of property '[Symbol.iterator]' are incompatible. + Type '(_: number) => Generator' is not assignable to type '() => Iterator'. + Target signature provides too few arguments. Expected 1 or more, but got 0. g(...iter); } diff --git a/testdata/baselines/reference/submodule/compiler/iteratorExtraParameters.errors.txt.diff b/testdata/baselines/reference/submodule/compiler/iteratorExtraParameters.errors.txt.diff index d12da0a85b..5334b4d9b9 100644 --- a/testdata/baselines/reference/submodule/compiler/iteratorExtraParameters.errors.txt.diff +++ b/testdata/baselines/reference/submodule/compiler/iteratorExtraParameters.errors.txt.diff @@ -3,28 +3,20 @@ @@= skipped -0, +0 lines =@@ iteratorExtraParameters.ts(11,21): error TS2488: Type '{ [Symbol.iterator](_: number): Generator; }' must have a '[Symbol.iterator]()' method that returns an iterator. iteratorExtraParameters.ts(13,12): error TS2488: Type '{ [Symbol.iterator](_: number): Generator; }' must have a '[Symbol.iterator]()' method that returns an iterator. --iteratorExtraParameters.ts(15,9): error TS2488: Type '{ [Symbol.iterator](_: number): Generator; }' must have a '[Symbol.iterator]()' method that returns an iterator. + iteratorExtraParameters.ts(15,9): error TS2488: Type '{ [Symbol.iterator](_: number): Generator; }' must have a '[Symbol.iterator]()' method that returns an iterator. -iteratorExtraParameters.ts(17,10): error TS2488: Type '{ [Symbol.iterator](_: number): Generator; }' must have a '[Symbol.iterator]()' method that returns an iterator. - - -==== iteratorExtraParameters.ts (4 errors) ==== + + -+==== iteratorExtraParameters.ts (2 errors) ==== ++==== iteratorExtraParameters.ts (3 errors) ==== // https://github.com/microsoft/TypeScript/issues/57130 const iter = { *[Symbol.iterator](_: number) { -@@= skipped -31, +29 lines =@@ +@@= skipped -39, +38 lines =@@ Target signature provides too few arguments. Expected 1 or more, but got 0. - [...iter] -- ~~~~ --!!! error TS2488: Type '{ [Symbol.iterator](_: number): Generator; }' must have a '[Symbol.iterator]()' method that returns an iterator. --!!! related TS2322 iteratorExtraParameters.ts:15:9: Type '{ [Symbol.iterator](_: number): Generator; }' is not assignable to type 'Iterable'. -- Types of property '[Symbol.iterator]' are incompatible. -- Type '(_: number) => Generator' is not assignable to type '() => Iterator'. -- Target signature provides too few arguments. Expected 1 or more, but got 0. - g(...iter); - ~~~~ -!!! error TS2488: Type '{ [Symbol.iterator](_: number): Generator; }' must have a '[Symbol.iterator]()' method that returns an iterator. From 8e97b45bc8ed09219fb95a4aaf58b92d7d374143 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 6 Jun 2025 21:52:24 +0000 Subject: [PATCH 10/10] Fix missing error for function call spread in iterator parameter validation Co-authored-by: andrewbranch <3277153+andrewbranch@users.noreply.github.com> --- internal/checker/checker.go | 5 +++- .../iteratorExtraParameters.errors.txt | 9 +++++- .../iteratorExtraParameters.errors.txt.diff | 28 ------------------- .../omittedExpressionForOfLoop.errors.txt | 5 +++- ...omittedExpressionForOfLoop.errors.txt.diff | 23 --------------- .../submodule/conformance/for-of16.errors.txt | 8 ++++-- .../conformance/for-of16.errors.txt.diff | 21 -------------- .../types.forAwait.es2018.2.errors.txt | 6 +++- .../types.forAwait.es2018.2.errors.txt.diff | 26 ----------------- 9 files changed, 27 insertions(+), 104 deletions(-) delete mode 100644 testdata/baselines/reference/submodule/compiler/iteratorExtraParameters.errors.txt.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/omittedExpressionForOfLoop.errors.txt.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/for-of16.errors.txt.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/types.forAwait.es2018.2.errors.txt.diff diff --git a/internal/checker/checker.go b/internal/checker/checker.go index f63eb803d9..2b2a4b4d09 100644 --- a/internal/checker/checker.go +++ b/internal/checker/checker.go @@ -5905,7 +5905,10 @@ func (c *Checker) getIterationTypesOfIterable(t *Type, use IterationUse, errorNo return cached } result := c.getIterationTypesOfIterableWorker(t, use, errorNode) - c.iterationTypesCache[key] = result + // Don't cache empty results when error reporting is requested, to ensure errors are reported for each call site + if result.hasTypes() || errorNode == nil { + c.iterationTypesCache[key] = result + } return result } diff --git a/testdata/baselines/reference/submodule/compiler/iteratorExtraParameters.errors.txt b/testdata/baselines/reference/submodule/compiler/iteratorExtraParameters.errors.txt index b972d79d55..fec3eb9882 100644 --- a/testdata/baselines/reference/submodule/compiler/iteratorExtraParameters.errors.txt +++ b/testdata/baselines/reference/submodule/compiler/iteratorExtraParameters.errors.txt @@ -1,9 +1,10 @@ iteratorExtraParameters.ts(11,21): error TS2488: Type '{ [Symbol.iterator](_: number): Generator; }' must have a '[Symbol.iterator]()' method that returns an iterator. iteratorExtraParameters.ts(13,12): error TS2488: Type '{ [Symbol.iterator](_: number): Generator; }' must have a '[Symbol.iterator]()' method that returns an iterator. iteratorExtraParameters.ts(15,9): error TS2488: Type '{ [Symbol.iterator](_: number): Generator; }' must have a '[Symbol.iterator]()' method that returns an iterator. +iteratorExtraParameters.ts(17,10): error TS2488: Type '{ [Symbol.iterator](_: number): Generator; }' must have a '[Symbol.iterator]()' method that returns an iterator. -==== iteratorExtraParameters.ts (3 errors) ==== +==== iteratorExtraParameters.ts (4 errors) ==== // https://github.com/microsoft/TypeScript/issues/57130 const iter = { *[Symbol.iterator](_: number) { @@ -39,5 +40,11 @@ iteratorExtraParameters.ts(15,9): error TS2488: Type '{ [Symbol.iterator](_: num Target signature provides too few arguments. Expected 1 or more, but got 0. g(...iter); + ~~~~ +!!! error TS2488: Type '{ [Symbol.iterator](_: number): Generator; }' must have a '[Symbol.iterator]()' method that returns an iterator. +!!! related TS2322 iteratorExtraParameters.ts:17:10: Type '{ [Symbol.iterator](_: number): Generator; }' is not assignable to type 'Iterable'. + Types of property '[Symbol.iterator]' are incompatible. + Type '(_: number) => Generator' is not assignable to type '() => Iterator'. + Target signature provides too few arguments. Expected 1 or more, but got 0. } \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/iteratorExtraParameters.errors.txt.diff b/testdata/baselines/reference/submodule/compiler/iteratorExtraParameters.errors.txt.diff deleted file mode 100644 index 5334b4d9b9..0000000000 --- a/testdata/baselines/reference/submodule/compiler/iteratorExtraParameters.errors.txt.diff +++ /dev/null @@ -1,28 +0,0 @@ ---- old.iteratorExtraParameters.errors.txt -+++ new.iteratorExtraParameters.errors.txt -@@= skipped -0, +0 lines =@@ - iteratorExtraParameters.ts(11,21): error TS2488: Type '{ [Symbol.iterator](_: number): Generator; }' must have a '[Symbol.iterator]()' method that returns an iterator. - iteratorExtraParameters.ts(13,12): error TS2488: Type '{ [Symbol.iterator](_: number): Generator; }' must have a '[Symbol.iterator]()' method that returns an iterator. - iteratorExtraParameters.ts(15,9): error TS2488: Type '{ [Symbol.iterator](_: number): Generator; }' must have a '[Symbol.iterator]()' method that returns an iterator. --iteratorExtraParameters.ts(17,10): error TS2488: Type '{ [Symbol.iterator](_: number): Generator; }' must have a '[Symbol.iterator]()' method that returns an iterator. -- -- --==== iteratorExtraParameters.ts (4 errors) ==== -+ -+ -+==== iteratorExtraParameters.ts (3 errors) ==== - // https://github.com/microsoft/TypeScript/issues/57130 - const iter = { - *[Symbol.iterator](_: number) { -@@= skipped -39, +38 lines =@@ - Target signature provides too few arguments. Expected 1 or more, but got 0. - - g(...iter); -- ~~~~ --!!! error TS2488: Type '{ [Symbol.iterator](_: number): Generator; }' must have a '[Symbol.iterator]()' method that returns an iterator. --!!! related TS2322 iteratorExtraParameters.ts:17:10: Type '{ [Symbol.iterator](_: number): Generator; }' is not assignable to type 'Iterable'. -- Types of property '[Symbol.iterator]' are incompatible. -- Type '(_: number) => Generator' is not assignable to type '() => Iterator'. -- Target signature provides too few arguments. Expected 1 or more, but got 0. - } - \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/omittedExpressionForOfLoop.errors.txt b/testdata/baselines/reference/submodule/compiler/omittedExpressionForOfLoop.errors.txt index 1bab467dde..257dcb21ae 100644 --- a/testdata/baselines/reference/submodule/compiler/omittedExpressionForOfLoop.errors.txt +++ b/testdata/baselines/reference/submodule/compiler/omittedExpressionForOfLoop.errors.txt @@ -1,9 +1,10 @@ omittedExpressionForOfLoop.ts(1,19): error TS2304: Cannot find name 'doesNotExist'. omittedExpressionForOfLoop.ts(4,19): error TS18050: The value 'undefined' cannot be used here. omittedExpressionForOfLoop.ts(7,12): error TS2488: Type 'never' must have a '[Symbol.iterator]()' method that returns an iterator. +omittedExpressionForOfLoop.ts(10,12): error TS2488: Type 'never' must have a '[Symbol.iterator]()' method that returns an iterator. -==== omittedExpressionForOfLoop.ts (3 errors) ==== +==== omittedExpressionForOfLoop.ts (4 errors) ==== for (const [,] of doesNotExist) { ~~~~~~~~~~~~ !!! error TS2304: Cannot find name 'doesNotExist'. @@ -20,4 +21,6 @@ omittedExpressionForOfLoop.ts(7,12): error TS2488: Type 'never' must have a '[Sy } for (const [] of []) { + ~~ +!!! error TS2488: Type 'never' must have a '[Symbol.iterator]()' method that returns an iterator. } \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/omittedExpressionForOfLoop.errors.txt.diff b/testdata/baselines/reference/submodule/compiler/omittedExpressionForOfLoop.errors.txt.diff deleted file mode 100644 index e2e84af17f..0000000000 --- a/testdata/baselines/reference/submodule/compiler/omittedExpressionForOfLoop.errors.txt.diff +++ /dev/null @@ -1,23 +0,0 @@ ---- old.omittedExpressionForOfLoop.errors.txt -+++ new.omittedExpressionForOfLoop.errors.txt -@@= skipped -0, +0 lines =@@ - omittedExpressionForOfLoop.ts(1,19): error TS2304: Cannot find name 'doesNotExist'. - omittedExpressionForOfLoop.ts(4,19): error TS18050: The value 'undefined' cannot be used here. - omittedExpressionForOfLoop.ts(7,12): error TS2488: Type 'never' must have a '[Symbol.iterator]()' method that returns an iterator. --omittedExpressionForOfLoop.ts(10,12): error TS2488: Type 'never' must have a '[Symbol.iterator]()' method that returns an iterator. -- -- --==== omittedExpressionForOfLoop.ts (4 errors) ==== -+ -+ -+==== omittedExpressionForOfLoop.ts (3 errors) ==== - for (const [,] of doesNotExist) { - ~~~~~~~~~~~~ - !!! error TS2304: Cannot find name 'doesNotExist'. -@@= skipped -20, +19 lines =@@ - } - - for (const [] of []) { -- ~~ --!!! error TS2488: Type 'never' must have a '[Symbol.iterator]()' method that returns an iterator. - } \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/for-of16.errors.txt b/testdata/baselines/reference/submodule/conformance/for-of16.errors.txt index 2e7a31eef3..0af867a2c6 100644 --- a/testdata/baselines/reference/submodule/conformance/for-of16.errors.txt +++ b/testdata/baselines/reference/submodule/conformance/for-of16.errors.txt @@ -1,7 +1,8 @@ for-of16.ts(8,11): error TS2488: Type 'MyStringIterator' must have a '[Symbol.iterator]()' method that returns an iterator. +for-of16.ts(10,11): error TS2488: Type 'MyStringIterator' must have a '[Symbol.iterator]()' method that returns an iterator. -==== for-of16.ts (1 errors) ==== +==== for-of16.ts (2 errors) ==== class MyStringIterator { [Symbol.iterator]() { return this; @@ -14,4 +15,7 @@ for-of16.ts(8,11): error TS2488: Type 'MyStringIterator' must have a '[Symbol.it !!! error TS2488: Type 'MyStringIterator' must have a '[Symbol.iterator]()' method that returns an iterator. !!! related TS2489 for-of16.ts:8:11: An iterator must have a 'next()' method. - for (v of new MyStringIterator) { } // Should still fail (related errors should still be shown even though type is cached). \ No newline at end of file + for (v of new MyStringIterator) { } // Should still fail (related errors should still be shown even though type is cached). + ~~~~~~~~~~~~~~~~~~~~ +!!! error TS2488: Type 'MyStringIterator' must have a '[Symbol.iterator]()' method that returns an iterator. +!!! related TS2489 for-of16.ts:10:11: An iterator must have a 'next()' method. \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/for-of16.errors.txt.diff b/testdata/baselines/reference/submodule/conformance/for-of16.errors.txt.diff deleted file mode 100644 index 0e4bfaa922..0000000000 --- a/testdata/baselines/reference/submodule/conformance/for-of16.errors.txt.diff +++ /dev/null @@ -1,21 +0,0 @@ ---- old.for-of16.errors.txt -+++ new.for-of16.errors.txt -@@= skipped -0, +0 lines =@@ - for-of16.ts(8,11): error TS2488: Type 'MyStringIterator' must have a '[Symbol.iterator]()' method that returns an iterator. --for-of16.ts(10,11): error TS2488: Type 'MyStringIterator' must have a '[Symbol.iterator]()' method that returns an iterator. -- -- --==== for-of16.ts (2 errors) ==== -+ -+ -+==== for-of16.ts (1 errors) ==== - class MyStringIterator { - [Symbol.iterator]() { - return this; -@@= skipped -15, +14 lines =@@ - !!! related TS2489 for-of16.ts:8:11: An iterator must have a 'next()' method. - - for (v of new MyStringIterator) { } // Should still fail (related errors should still be shown even though type is cached). -- ~~~~~~~~~~~~~~~~~~~~ --!!! error TS2488: Type 'MyStringIterator' must have a '[Symbol.iterator]()' method that returns an iterator. --!!! related TS2489 for-of16.ts:10:11: An iterator must have a 'next()' method. \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/types.forAwait.es2018.2.errors.txt b/testdata/baselines/reference/submodule/conformance/types.forAwait.es2018.2.errors.txt index df9005679a..b0635928d4 100644 --- a/testdata/baselines/reference/submodule/conformance/types.forAwait.es2018.2.errors.txt +++ b/testdata/baselines/reference/submodule/conformance/types.forAwait.es2018.2.errors.txt @@ -3,9 +3,10 @@ types.forAwait.es2018.2.ts(8,21): error TS2504: Type '{}' must have a '[Symbol.a 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 (5 errors) ==== +==== types.forAwait.es2018.2.ts (6 errors) ==== declare const asyncIterable: AsyncIterable; declare const iterable: Iterable; async function f() { @@ -33,6 +34,9 @@ types.forAwait.es2018.2.ts(14,21): error TS2488: Type 'AsyncIterable' mu !!! 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/testdata/baselines/reference/submodule/conformance/types.forAwait.es2018.2.errors.txt.diff b/testdata/baselines/reference/submodule/conformance/types.forAwait.es2018.2.errors.txt.diff deleted file mode 100644 index 19233fc836..0000000000 --- a/testdata/baselines/reference/submodule/conformance/types.forAwait.es2018.2.errors.txt.diff +++ /dev/null @@ -1,26 +0,0 @@ ---- old.types.forAwait.es2018.2.errors.txt -+++ new.types.forAwait.es2018.2.errors.txt -@@= skipped -2, +2 lines =@@ - 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 (6 errors) ==== -+ -+ -+==== types.forAwait.es2018.2.ts (5 errors) ==== - declare const asyncIterable: AsyncIterable; - declare const iterable: Iterable; - async function f() { -@@= skipped -31, +30 lines =@@ - !!! 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