diff --git a/mypy/fixup.py b/mypy/fixup.py index 0d85feb86ef5..247fb4997ccb 100644 --- a/mypy/fixup.py +++ b/mypy/fixup.py @@ -64,6 +64,8 @@ def visit_type_info(self, info: TypeInfo) -> None: info._promote.accept(self.type_fixer) if info.tuple_type: info.tuple_type.accept(self.type_fixer) + if info.typeddict_type: + info.typeddict_type.accept(self.type_fixer) finally: self.current_info = save_info diff --git a/test-data/unit/check-incremental.test b/test-data/unit/check-incremental.test index 7d3d6d862fe6..b6f92bd6a174 100644 --- a/test-data/unit/check-incremental.test +++ b/test-data/unit/check-incremental.test @@ -1907,6 +1907,23 @@ a.A().x = 0 [out2] tmp/b.py:2: error: Cannot assign to class variable "x" via instance +[case testSerializeTypedDict] +import b +reveal_type(b.x) +y: b.A +reveal_type(y) +[file b.py] +from mypy_extensions import TypedDict +A = TypedDict('A', {'x': int, 'y': str}) +x: A +[builtins fixtures/dict.pyi] +[out1] +main:2: error: Revealed type is 'TypedDict(x=builtins.int, y=builtins.str, _fallback=b.A)' +main:4: error: Revealed type is 'TypedDict(x=builtins.int, y=builtins.str, _fallback=b.A)' +[out2] +main:2: error: Revealed type is 'TypedDict(x=builtins.int, y=builtins.str, _fallback=b.A)' +main:4: error: Revealed type is 'TypedDict(x=builtins.int, y=builtins.str, _fallback=b.A)' + [case testQuickAndDirty1] # flags: --quick-and-dirty import b, c