Skip to content

Commit e7cfbbf

Browse files
Copilotandrewbranch
andcommitted
Add detailed parameter mismatch errors for iterator methods
Co-authored-by: andrewbranch <[email protected]>
1 parent 92e6ee3 commit e7cfbbf

File tree

5 files changed

+88
-80
lines changed

5 files changed

+88
-80
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.checkTypeAssignableToEx(t, r.getGlobalIterableType(), errorNode, nil /*headMessage*/, diagnosticOutput)
6074+
c.checkTypeAssignableTo(t, r.getGlobalIterableType(), errorNode, nil /*headMessage*/)
60756075
}
60766076
return IterationTypes{}
60776077
}

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

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

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

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

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

Lines changed: 38 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,48 @@
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.
48
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.
513
iteratorExtraParameters.ts(13,12): error TS2488: Type '{ [Symbol.iterator](_: number): Generator<number, void, unknown>; }' must have a '[Symbol.iterator]()' method that returns an iterator.
614
-iteratorExtraParameters.ts(15,9): error TS2488: Type '{ [Symbol.iterator](_: number): Generator<number, void, unknown>; }' must have a '[Symbol.iterator]()' method that returns an iterator.
715
-iteratorExtraParameters.ts(17,10): error TS2488: Type '{ [Symbol.iterator](_: number): Generator<number, void, unknown>; }' must have a '[Symbol.iterator]()' method that returns an iterator.
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.
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.
1946

2047
[...iter]
2148
- ~~~~

0 commit comments

Comments
 (0)