@@ -1176,6 +1176,7 @@ interface IterationTypesResolver {
1176
1176
getGlobalIteratorType: (reportErrors: boolean) => GenericType;
1177
1177
getGlobalIterableType: (reportErrors: boolean) => GenericType;
1178
1178
getGlobalIterableIteratorType: (reportErrors: boolean) => GenericType;
1179
+ getGlobalBuiltinIteratorType: (reportErrors: boolean) => GenericType;
1179
1180
getGlobalGeneratorType: (reportErrors: boolean) => GenericType;
1180
1181
resolveIterationType: (type: Type, errorNode: Node | undefined) => Type | undefined;
1181
1182
mustHaveANextMethodDiagnostic: DiagnosticMessage;
@@ -2159,6 +2160,7 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker {
2159
2160
getGlobalIteratorType: getGlobalAsyncIteratorType,
2160
2161
getGlobalIterableType: getGlobalAsyncIterableType,
2161
2162
getGlobalIterableIteratorType: getGlobalAsyncIterableIteratorType,
2163
+ getGlobalBuiltinIteratorType: getGlobalAsyncBuiltinIteratorType,
2162
2164
getGlobalGeneratorType: getGlobalAsyncGeneratorType,
2163
2165
resolveIterationType: (type, errorNode) => getAwaitedType(type, errorNode, Diagnostics.Type_of_await_operand_must_either_be_a_valid_promise_or_must_not_contain_a_callable_then_member),
2164
2166
mustHaveANextMethodDiagnostic: Diagnostics.An_async_iterator_must_have_a_next_method,
@@ -2173,6 +2175,7 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker {
2173
2175
getGlobalIteratorType,
2174
2176
getGlobalIterableType,
2175
2177
getGlobalIterableIteratorType,
2178
+ getGlobalBuiltinIteratorType,
2176
2179
getGlobalGeneratorType,
2177
2180
resolveIterationType: (type, _errorNode) => type,
2178
2181
mustHaveANextMethodDiagnostic: Diagnostics.An_iterator_must_have_a_next_method,
@@ -2234,12 +2237,14 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker {
2234
2237
var deferredGlobalIterableType: GenericType | undefined;
2235
2238
var deferredGlobalIteratorType: GenericType | undefined;
2236
2239
var deferredGlobalIterableIteratorType: GenericType | undefined;
2240
+ var deferredGlobalBuiltinIteratorType: GenericType | undefined;
2237
2241
var deferredGlobalGeneratorType: GenericType | undefined;
2238
2242
var deferredGlobalIteratorYieldResultType: GenericType | undefined;
2239
2243
var deferredGlobalIteratorReturnResultType: GenericType | undefined;
2240
2244
var deferredGlobalAsyncIterableType: GenericType | undefined;
2241
2245
var deferredGlobalAsyncIteratorType: GenericType | undefined;
2242
2246
var deferredGlobalAsyncIterableIteratorType: GenericType | undefined;
2247
+ var deferredGlobalAsyncBuiltinIteratorType: GenericType | undefined;
2243
2248
var deferredGlobalAsyncGeneratorType: GenericType | undefined;
2244
2249
var deferredGlobalTemplateStringsArrayType: ObjectType | undefined;
2245
2250
var deferredGlobalImportMetaType: ObjectType;
@@ -16930,6 +16935,10 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker {
16930
16935
return (deferredGlobalAsyncIterableIteratorType ||= getGlobalType("AsyncIterableIterator" as __String, /*arity*/ 3, reportErrors)) || emptyGenericType;
16931
16936
}
16932
16937
16938
+ function getGlobalAsyncBuiltinIteratorType(reportErrors: boolean) {
16939
+ return (deferredGlobalAsyncBuiltinIteratorType ||= getGlobalType("AsyncBuiltinIterator" as __String, /*arity*/ 3, reportErrors)) || emptyGenericType;
16940
+ }
16941
+
16933
16942
function getGlobalAsyncGeneratorType(reportErrors: boolean) {
16934
16943
return (deferredGlobalAsyncGeneratorType ||= getGlobalType("AsyncGenerator" as __String, /*arity*/ 3, reportErrors)) || emptyGenericType;
16935
16944
}
@@ -16946,6 +16955,10 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker {
16946
16955
return (deferredGlobalIterableIteratorType ||= getGlobalType("IterableIterator" as __String, /*arity*/ 3, reportErrors)) || emptyGenericType;
16947
16956
}
16948
16957
16958
+ function getGlobalBuiltinIteratorType(reportErrors: boolean) {
16959
+ return (deferredGlobalBuiltinIteratorType ||= getGlobalType("BuiltinIterator" as __String, /*arity*/ 3, reportErrors)) || emptyGenericType;
16960
+ }
16961
+
16949
16962
function getGlobalGeneratorType(reportErrors: boolean) {
16950
16963
return (deferredGlobalGeneratorType ||= getGlobalType("Generator" as __String, /*arity*/ 3, reportErrors)) || emptyGenericType;
16951
16964
}
@@ -44773,10 +44786,12 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker {
44773
44786
// As an optimization, if the type is an instantiation of the following global type, then
44774
44787
// just grab its related type arguments:
44775
44788
// - `Iterable<T, TReturn, TNext>` or `AsyncIterable<T, TReturn, TNext>`
44789
+ // - `BuiltinIterator<T, TReturn, TNext>` or `AsyncBuiltinIterator<T, TReturn, TNext>`
44776
44790
// - `IterableIterator<T, TReturn, TNext>` or `AsyncIterableIterator<T, TReturn, TNext>`
44777
44791
// - `Generator<T, TReturn, TNext>` or `AsyncGenerator<T, TReturn, TNext>`
44778
44792
if (
44779
44793
isReferenceToType(type, resolver.getGlobalIterableType(/*reportErrors*/ false)) ||
44794
+ isReferenceToType(type, resolver.getGlobalBuiltinIteratorType(/*reportErrors*/ false)) ||
44780
44795
isReferenceToType(type, resolver.getGlobalIterableIteratorType(/*reportErrors*/ false)) ||
44781
44796
isReferenceToType(type, resolver.getGlobalGeneratorType(/*reportErrors*/ false))
44782
44797
) {
@@ -44899,9 +44914,11 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker {
44899
44914
// As an optimization, if the type is an instantiation of one of the following global types,
44900
44915
// then just grab its related type arguments:
44901
44916
// - `IterableIterator<T, TReturn, TNext>` or `AsyncIterableIterator<T, TReturn, TNext>`
44917
+ // - `BuiltinIterator<T, TReturn, TNext>` or `AsyncBuiltinIterator<T, TReturn, TNext>`
44902
44918
// - `Iterator<T, TReturn, TNext>` or `AsyncIterator<T, TReturn, TNext>`
44903
44919
// - `Generator<T, TReturn, TNext>` or `AsyncGenerator<T, TReturn, TNext>`
44904
44920
if (
44921
+ isReferenceToType(type, resolver.getGlobalBuiltinIteratorType(/*reportErrors*/ false)) ||
44905
44922
isReferenceToType(type, resolver.getGlobalIterableIteratorType(/*reportErrors*/ false)) ||
44906
44923
isReferenceToType(type, resolver.getGlobalIteratorType(/*reportErrors*/ false)) ||
44907
44924
isReferenceToType(type, resolver.getGlobalGeneratorType(/*reportErrors*/ false))
0 commit comments