From 944acf55977644b4a278e7b904923713a4e95da0 Mon Sep 17 00:00:00 2001 From: sobolevn Date: Mon, 21 Aug 2023 14:19:58 +0300 Subject: [PATCH] Fix `assert_type` failures when some nodes are deferred --- mypy/checkexpr.py | 3 +++ test-data/unit/check-expressions.test | 17 +++++++++++++++++ 2 files changed, 20 insertions(+) diff --git a/mypy/checkexpr.py b/mypy/checkexpr.py index 420cfd990820c..4d04390da84a9 100644 --- a/mypy/checkexpr.py +++ b/mypy/checkexpr.py @@ -4271,6 +4271,9 @@ def visit_assert_type_expr(self, expr: AssertTypeExpr) -> Type: allow_none_return=True, always_allow_any=True, ) + if self.chk.current_node_deferred: + return source_type + target_type = expr.type proper_source_type = get_proper_type(source_type) if ( diff --git a/test-data/unit/check-expressions.test b/test-data/unit/check-expressions.test index 40ee28830b21a..f3306deafbbc3 100644 --- a/test-data/unit/check-expressions.test +++ b/test-data/unit/check-expressions.test @@ -1045,6 +1045,23 @@ def reduce_it(s: Scalar) -> Scalar: assert_type(reduce_it(True), Scalar) [builtins fixtures/tuple.pyi] +[case testAssertTypeWithDeferedNodes] +from typing import Callable, TypeVar, assert_type + +T = TypeVar("T") + +def dec(f: Callable[[], T]) -> Callable[[], T]: + return f + +def method1() -> None: + some_enum = _inner_method1() + assert_type(some_enum, int) + +@dec +def _inner_method1() -> int: + return 1 +[builtins fixtures/tuple.pyi] + -- None return type -- ----------------