Skip to content

Commit 079190c

Browse files
Copilotandrewbranch
andcommitted
Fix error chaining for iterator parameter validation
Co-authored-by: andrewbranch <[email protected]>
1 parent cbc5860 commit 079190c

File tree

5 files changed

+30
-126
lines changed

5 files changed

+30
-126
lines changed

internal/checker/checker.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6071,7 +6071,7 @@ func (c *Checker) getIterationTypesOfIterableSlow(t *Type, r *IterationTypesReso
60716071
})
60726072
if len(validSignatures) == 0 {
60736073
if errorNode != nil && len(allSignatures) > 0 {
6074-
c.checkTypeAssignableTo(t, r.getGlobalIterableType(), errorNode, nil /*headMessage*/)
6074+
c.checkTypeAssignableToEx(t, r.getGlobalIterableType(), errorNode, nil /*headMessage*/, diagnosticOutput)
60756075
}
60766076
return IterationTypes{}
60776077
}
Lines changed: 9 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,8 @@
1-
asyncIteratorExtraParameters.ts(11,27): error TS2322: Type '{ [Symbol.asyncIterator](_: number): AsyncGenerator<number, void, unknown>; }' is not assignable to type 'AsyncIterable<T, TReturn, TNext>'.
2-
Types of property '[Symbol.asyncIterator]' are incompatible.
3-
Type '(_: number) => AsyncGenerator<number, void, unknown>' is not assignable to type '() => AsyncIterator<T, TReturn, TNext>'.
4-
Target signature provides too few arguments. Expected 1 or more, but got 0.
51
asyncIteratorExtraParameters.ts(11,27): error TS2504: Type '{ [Symbol.asyncIterator](_: number): AsyncGenerator<number, void, unknown>; }' must have a '[Symbol.asyncIterator]()' method that returns an async iterator.
6-
asyncIteratorExtraParameters.ts(13,12): error TS2322: Type '{ [Symbol.asyncIterator](_: number): AsyncGenerator<number, void, unknown>; }' is not assignable to type 'AsyncIterable<T, TReturn, TNext>'.
7-
Types of property '[Symbol.asyncIterator]' are incompatible.
8-
Type '(_: number) => AsyncGenerator<number, void, unknown>' is not assignable to type '() => AsyncIterator<T, TReturn, TNext>'.
9-
Target signature provides too few arguments. Expected 1 or more, but got 0.
102
asyncIteratorExtraParameters.ts(13,12): error TS2504: Type '{ [Symbol.asyncIterator](_: number): AsyncGenerator<number, void, unknown>; }' must have a '[Symbol.asyncIterator]()' method that returns an async iterator.
113

124

13-
==== asyncIteratorExtraParameters.ts (4 errors) ====
5+
==== asyncIteratorExtraParameters.ts (2 errors) ====
146
// https://github.com/microsoft/TypeScript/issues/57130
157
const iter = {
168
async *[Symbol.asyncIterator](_: number) {
@@ -23,20 +15,18 @@ asyncIteratorExtraParameters.ts(13,12): error TS2504: Type '{ [Symbol.asyncItera
2315
async function* f() {
2416
for await (const _ of iter);
2517
~~~~
26-
!!! error TS2322: Type '{ [Symbol.asyncIterator](_: number): AsyncGenerator<number, void, unknown>; }' is not assignable to type 'AsyncIterable<T, TReturn, TNext>'.
27-
!!! error TS2322: Types of property '[Symbol.asyncIterator]' are incompatible.
28-
!!! error TS2322: Type '(_: number) => AsyncGenerator<number, void, unknown>' is not assignable to type '() => AsyncIterator<T, TReturn, TNext>'.
29-
!!! error TS2322: Target signature provides too few arguments. Expected 1 or more, but got 0.
30-
~~~~
3118
!!! error TS2504: Type '{ [Symbol.asyncIterator](_: number): AsyncGenerator<number, void, unknown>; }' must have a '[Symbol.asyncIterator]()' method that returns an async iterator.
19+
!!! related TS2322 asyncIteratorExtraParameters.ts:11:27: Type '{ [Symbol.asyncIterator](_: number): AsyncGenerator<number, void, unknown>; }' is not assignable to type 'AsyncIterable<T, TReturn, TNext>'.
20+
Types of property '[Symbol.asyncIterator]' are incompatible.
21+
Type '(_: number) => AsyncGenerator<number, void, unknown>' is not assignable to type '() => AsyncIterator<T, TReturn, TNext>'.
22+
Target signature provides too few arguments. Expected 1 or more, but got 0.
3223

3324
yield* iter;
3425
~~~~
35-
!!! error TS2322: Type '{ [Symbol.asyncIterator](_: number): AsyncGenerator<number, void, unknown>; }' is not assignable to type 'AsyncIterable<T, TReturn, TNext>'.
36-
!!! error TS2322: Types of property '[Symbol.asyncIterator]' are incompatible.
37-
!!! error TS2322: Type '(_: number) => AsyncGenerator<number, void, unknown>' is not assignable to type '() => AsyncIterator<T, TReturn, TNext>'.
38-
!!! error TS2322: Target signature provides too few arguments. Expected 1 or more, but got 0.
39-
~~~~
4026
!!! error TS2504: Type '{ [Symbol.asyncIterator](_: number): AsyncGenerator<number, void, unknown>; }' must have a '[Symbol.asyncIterator]()' method that returns an async iterator.
27+
!!! related TS2322 asyncIteratorExtraParameters.ts:13:12: Type '{ [Symbol.asyncIterator](_: number): AsyncGenerator<number, void, unknown>; }' is not assignable to type 'AsyncIterable<T, TReturn, TNext>'.
28+
Types of property '[Symbol.asyncIterator]' are incompatible.
29+
Type '(_: number) => AsyncGenerator<number, void, unknown>' is not assignable to type '() => AsyncIterator<T, TReturn, TNext>'.
30+
Target signature provides too few arguments. Expected 1 or more, but got 0.
4131
}
4232

testdata/baselines/reference/submodule/compiler/asyncIteratorExtraParameters.errors.txt.diff

Lines changed: 0 additions & 49 deletions
This file was deleted.

testdata/baselines/reference/submodule/compiler/iteratorExtraParameters.errors.txt

Lines changed: 9 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,8 @@
1-
iteratorExtraParameters.ts(11,21): error TS2322: Type '{ [Symbol.iterator](_: number): Generator<number, void, unknown>; }' is not assignable to type 'Iterable<T, TReturn, TNext>'.
2-
Types of property '[Symbol.iterator]' are incompatible.
3-
Type '(_: number) => Generator<number, void, unknown>' is not assignable to type '() => Iterator<T, TReturn, TNext>'.
4-
Target signature provides too few arguments. Expected 1 or more, but got 0.
51
iteratorExtraParameters.ts(11,21): error TS2488: Type '{ [Symbol.iterator](_: number): Generator<number, void, unknown>; }' must have a '[Symbol.iterator]()' method that returns an iterator.
6-
iteratorExtraParameters.ts(13,12): error TS2322: Type '{ [Symbol.iterator](_: number): Generator<number, void, unknown>; }' is not assignable to type 'Iterable<T, TReturn, TNext>'.
7-
Types of property '[Symbol.iterator]' are incompatible.
8-
Type '(_: number) => Generator<number, void, unknown>' is not assignable to type '() => Iterator<T, TReturn, TNext>'.
9-
Target signature provides too few arguments. Expected 1 or more, but got 0.
102
iteratorExtraParameters.ts(13,12): error TS2488: Type '{ [Symbol.iterator](_: number): Generator<number, void, unknown>; }' must have a '[Symbol.iterator]()' method that returns an iterator.
113

124

13-
==== iteratorExtraParameters.ts (4 errors) ====
5+
==== iteratorExtraParameters.ts (2 errors) ====
146
// https://github.com/microsoft/TypeScript/issues/57130
157
const iter = {
168
*[Symbol.iterator](_: number) {
@@ -23,21 +15,19 @@ iteratorExtraParameters.ts(13,12): error TS2488: Type '{ [Symbol.iterator](_: nu
2315
function* f() {
2416
for (const _ of iter);
2517
~~~~
26-
!!! error TS2322: Type '{ [Symbol.iterator](_: number): Generator<number, void, unknown>; }' is not assignable to type 'Iterable<T, TReturn, TNext>'.
27-
!!! error TS2322: Types of property '[Symbol.iterator]' are incompatible.
28-
!!! error TS2322: Type '(_: number) => Generator<number, void, unknown>' is not assignable to type '() => Iterator<T, TReturn, TNext>'.
29-
!!! error TS2322: Target signature provides too few arguments. Expected 1 or more, but got 0.
30-
~~~~
3118
!!! error TS2488: Type '{ [Symbol.iterator](_: number): Generator<number, void, unknown>; }' must have a '[Symbol.iterator]()' method that returns an iterator.
19+
!!! related TS2322 iteratorExtraParameters.ts:11:21: Type '{ [Symbol.iterator](_: number): Generator<number, void, unknown>; }' is not assignable to type 'Iterable<T, TReturn, TNext>'.
20+
Types of property '[Symbol.iterator]' are incompatible.
21+
Type '(_: number) => Generator<number, void, unknown>' is not assignable to type '() => Iterator<T, TReturn, TNext>'.
22+
Target signature provides too few arguments. Expected 1 or more, but got 0.
3223

3324
yield* iter;
3425
~~~~
35-
!!! error TS2322: Type '{ [Symbol.iterator](_: number): Generator<number, void, unknown>; }' is not assignable to type 'Iterable<T, TReturn, TNext>'.
36-
!!! error TS2322: Types of property '[Symbol.iterator]' are incompatible.
37-
!!! error TS2322: Type '(_: number) => Generator<number, void, unknown>' is not assignable to type '() => Iterator<T, TReturn, TNext>'.
38-
!!! error TS2322: Target signature provides too few arguments. Expected 1 or more, but got 0.
39-
~~~~
4026
!!! error TS2488: Type '{ [Symbol.iterator](_: number): Generator<number, void, unknown>; }' must have a '[Symbol.iterator]()' method that returns an iterator.
27+
!!! related TS2322 iteratorExtraParameters.ts:13:12: Type '{ [Symbol.iterator](_: number): Generator<number, void, unknown>; }' is not assignable to type 'Iterable<T, TReturn, TNext>'.
28+
Types of property '[Symbol.iterator]' are incompatible.
29+
Type '(_: number) => Generator<number, void, unknown>' is not assignable to type '() => Iterator<T, TReturn, TNext>'.
30+
Target signature provides too few arguments. Expected 1 or more, but got 0.
4131

4232
[...iter]
4333

testdata/baselines/reference/submodule/compiler/iteratorExtraParameters.errors.txt.diff

Lines changed: 11 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -1,48 +1,21 @@
11
--- old.iteratorExtraParameters.errors.txt
22
+++ new.iteratorExtraParameters.errors.txt
33
@@= skipped -0, +0 lines =@@
4-
+iteratorExtraParameters.ts(11,21): error TS2322: Type '{ [Symbol.iterator](_: number): Generator<number, void, unknown>; }' is not assignable to type 'Iterable<T, TReturn, TNext>'.
5-
+ Types of property '[Symbol.iterator]' are incompatible.
6-
+ Type '(_: number) => Generator<number, void, unknown>' is not assignable to type '() => Iterator<T, TReturn, TNext>'.
7-
+ Target signature provides too few arguments. Expected 1 or more, but got 0.
84
iteratorExtraParameters.ts(11,21): error TS2488: Type '{ [Symbol.iterator](_: number): Generator<number, void, unknown>; }' must have a '[Symbol.iterator]()' method that returns an iterator.
9-
+iteratorExtraParameters.ts(13,12): error TS2322: Type '{ [Symbol.iterator](_: number): Generator<number, void, unknown>; }' is not assignable to type 'Iterable<T, TReturn, TNext>'.
10-
+ Types of property '[Symbol.iterator]' are incompatible.
11-
+ Type '(_: number) => Generator<number, void, unknown>' is not assignable to type '() => Iterator<T, TReturn, TNext>'.
12-
+ Target signature provides too few arguments. Expected 1 or more, but got 0.
135
iteratorExtraParameters.ts(13,12): error TS2488: Type '{ [Symbol.iterator](_: number): Generator<number, void, unknown>; }' must have a '[Symbol.iterator]()' method that returns an iterator.
146
-iteratorExtraParameters.ts(15,9): error TS2488: Type '{ [Symbol.iterator](_: number): Generator<number, void, unknown>; }' must have a '[Symbol.iterator]()' method that returns an iterator.
157
-iteratorExtraParameters.ts(17,10): error TS2488: Type '{ [Symbol.iterator](_: number): Generator<number, void, unknown>; }' must have a '[Symbol.iterator]()' method that returns an iterator.
16-
17-
18-
==== iteratorExtraParameters.ts (4 errors) ====
19-
@@= skipped -16, +22 lines =@@
20-
function* f() {
21-
for (const _ of iter);
22-
~~~~
23-
+!!! error TS2322: Type '{ [Symbol.iterator](_: number): Generator<number, void, unknown>; }' is not assignable to type 'Iterable<T, TReturn, TNext>'.
24-
+!!! error TS2322: Types of property '[Symbol.iterator]' are incompatible.
25-
+!!! error TS2322: Type '(_: number) => Generator<number, void, unknown>' is not assignable to type '() => Iterator<T, TReturn, TNext>'.
26-
+!!! error TS2322: Target signature provides too few arguments. Expected 1 or more, but got 0.
27-
+ ~~~~
28-
!!! error TS2488: Type '{ [Symbol.iterator](_: number): Generator<number, void, unknown>; }' must have a '[Symbol.iterator]()' method that returns an iterator.
29-
-!!! related TS2322 iteratorExtraParameters.ts:11:21: Type '{ [Symbol.iterator](_: number): Generator<number, void, unknown>; }' is not assignable to type 'Iterable<T, TReturn, TNext>'.
30-
- Types of property '[Symbol.iterator]' are incompatible.
31-
- Type '(_: number) => Generator<number, void, unknown>' is not assignable to type '() => Iterator<T, TReturn, TNext>'.
32-
- Target signature provides too few arguments. Expected 1 or more, but got 0.
33-
34-
yield* iter;
35-
~~~~
36-
+!!! error TS2322: Type '{ [Symbol.iterator](_: number): Generator<number, void, unknown>; }' is not assignable to type 'Iterable<T, TReturn, TNext>'.
37-
+!!! error TS2322: Types of property '[Symbol.iterator]' are incompatible.
38-
+!!! error TS2322: Type '(_: number) => Generator<number, void, unknown>' is not assignable to type '() => Iterator<T, TReturn, TNext>'.
39-
+!!! error TS2322: Target signature provides too few arguments. Expected 1 or more, but got 0.
40-
+ ~~~~
41-
!!! error TS2488: Type '{ [Symbol.iterator](_: number): Generator<number, void, unknown>; }' must have a '[Symbol.iterator]()' method that returns an iterator.
42-
-!!! related TS2322 iteratorExtraParameters.ts:13:12: Type '{ [Symbol.iterator](_: number): Generator<number, void, unknown>; }' is not assignable to type 'Iterable<T, TReturn, TNext>'.
43-
- Types of property '[Symbol.iterator]' are incompatible.
44-
- Type '(_: number) => Generator<number, void, unknown>' is not assignable to type '() => Iterator<T, TReturn, TNext>'.
45-
- Target signature provides too few arguments. Expected 1 or more, but got 0.
8+
-
9+
-
10+
-==== iteratorExtraParameters.ts (4 errors) ====
11+
+
12+
+
13+
+==== iteratorExtraParameters.ts (2 errors) ====
14+
// https://github.com/microsoft/TypeScript/issues/57130
15+
const iter = {
16+
*[Symbol.iterator](_: number) {
17+
@@= skipped -31, +29 lines =@@
18+
Target signature provides too few arguments. Expected 1 or more, but got 0.
4619

4720
[...iter]
4821
- ~~~~

0 commit comments

Comments
 (0)