diff --git a/stdlib/@tests/test_cases/builtins/check_iteration.py b/stdlib/@tests/test_cases/builtins/check_iteration.py index 3d609635377e..9c625b8f1604 100644 --- a/stdlib/@tests/test_cases/builtins/check_iteration.py +++ b/stdlib/@tests/test_cases/builtins/check_iteration.py @@ -1,7 +1,7 @@ from __future__ import annotations from typing import Iterator -from typing_extensions import assert_type +from typing_extensions import Never, assert_type class OldStyleIter: @@ -14,3 +14,7 @@ def __getitem__(self, index: int) -> str: assert_type(iter(OldStyleIter()), Iterator[str]) assert_type(next(iter(OldStyleIter())), str) + +assert_type(iter(()), Iterator[Never]) +assert_type(iter(list[Never]()), Iterator[Never]) +assert_type(iter(""), Iterator[Never]) diff --git a/stdlib/builtins.pyi b/stdlib/builtins.pyi index b75250aad3de..1282c8eab311 100644 --- a/stdlib/builtins.pyi +++ b/stdlib/builtins.pyi @@ -63,6 +63,7 @@ from typing_extensions import ( # noqa: Y023 Concatenate, Literal, LiteralString, + Never, ParamSpec, Self, TypeAlias, @@ -1470,6 +1471,8 @@ def input(prompt: object = "", /) -> str: ... class _GetItemIterable(Protocol[_T_co]): def __getitem__(self, i: int, /) -> _T_co: ... +@overload +def iter(object: Literal[""], /) -> Iterator[Never]: ... @overload def iter(object: SupportsIter[_SupportsNextT_co], /) -> _SupportsNextT_co: ... @overload