From 155d4120d92e092e4a797afb0cb6d775c03880f8 Mon Sep 17 00:00:00 2001 From: sobolevn Date: Wed, 5 Jan 2022 22:00:09 +0300 Subject: [PATCH 1/3] Handle `NoReturn` type alises --- mypy/semanal.py | 6 ++++++ test-data/unit/check-type-aliases.test | 5 +++++ 2 files changed, 11 insertions(+) diff --git a/mypy/semanal.py b/mypy/semanal.py index 933ba54c358f..015ee1cddc0f 100644 --- a/mypy/semanal.py +++ b/mypy/semanal.py @@ -2247,6 +2247,12 @@ def is_type_ref(self, rv: Expression, bare: bool = False) -> bool: return True # Assignment color = Color['RED'] defines a variable, not an alias. return not rv.node.is_enum + if isinstance(rv.node, Var): + return rv.node.fullname in ( + 'typing.NoReturn', + 'typing_extensions.NoReturn', + 'mypy_extensions.NoReturn', + ) if isinstance(rv, NameExpr): n = self.lookup(rv.name, rv) diff --git a/test-data/unit/check-type-aliases.test b/test-data/unit/check-type-aliases.test index eb6c71e8f226..a75ec7539a32 100644 --- a/test-data/unit/check-type-aliases.test +++ b/test-data/unit/check-type-aliases.test @@ -50,6 +50,11 @@ def f(x: A) -> None: f(1) f('x') +[case testNoReturnTypeAlias] +from typing import NoReturn +Never = NoReturn +a: Never + [case testImportUnionAlias] import typing from _m import U From c93e0d2e799a76282f2c0f88cf3f006033371417 Mon Sep 17 00:00:00 2001 From: sobolevn Date: Wed, 5 Jan 2022 22:00:39 +0300 Subject: [PATCH 2/3] Docs --- test-data/unit/check-type-aliases.test | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/test-data/unit/check-type-aliases.test b/test-data/unit/check-type-aliases.test index a75ec7539a32..ca8f4c1e2ee9 100644 --- a/test-data/unit/check-type-aliases.test +++ b/test-data/unit/check-type-aliases.test @@ -51,9 +51,10 @@ f(1) f('x') [case testNoReturnTypeAlias] +# https://github.com/python/mypy/issues/11903 from typing import NoReturn Never = NoReturn -a: Never +a: Never # Used to be an error here [case testImportUnionAlias] import typing From 83eb0350e7b27aa5b682697c618c32b94e93963f Mon Sep 17 00:00:00 2001 From: Shantanu <12621235+hauntsaninja@users.noreply.github.com> Date: Wed, 5 Jan 2022 23:52:34 -0800 Subject: [PATCH 3/3] Update test-data/unit/check-type-aliases.test --- test-data/unit/check-type-aliases.test | 2 ++ 1 file changed, 2 insertions(+) diff --git a/test-data/unit/check-type-aliases.test b/test-data/unit/check-type-aliases.test index ca8f4c1e2ee9..cb023fc0ad3f 100644 --- a/test-data/unit/check-type-aliases.test +++ b/test-data/unit/check-type-aliases.test @@ -56,6 +56,8 @@ from typing import NoReturn Never = NoReturn a: Never # Used to be an error here +def f(a: Never): ... +f(5) # E: Argument 1 to "f" has incompatible type "int"; expected "NoReturn" [case testImportUnionAlias] import typing from _m import U