diff --git a/mypy/nested-class-scope.py b/mypy/nested-class-scope.py new file mode 100644 index 000000000000..c2333f74f04a --- /dev/null +++ b/mypy/nested-class-scope.py @@ -0,0 +1,14 @@ +from typing import * + +x: Optional[int] = None +y: Optional[int] = None + + +def f() -> None: + x = 1 + y = 1 + + class C: + reveal_type(x) # Incorrectly reveals int, should be Optional[int] + reveal_type(y) # Correctly reveals int + x = 2 diff --git a/test-data/unit/issue_scope.test b/test-data/unit/issue_scope.test new file mode 100644 index 000000000000..2ea013dd4e62 --- /dev/null +++ b/test-data/unit/issue_scope.test @@ -0,0 +1,17 @@ +[case testScopeOptionalIntResolution] +from typing import Optional + +x: Optional[int] = None +y: Optional[int] = None + +def f() -> None: + x = 1 + y = 1 + class C: + reveal_type(x) # should be int + reveal_type(y) # should be Optional[int] + x = 2 + +[out] +note: Revealed type is "builtins.int" +note: Revealed type is "Union[builtins.int, None]"