From b2d6f35366169a9f3de31327555a7bb10509f7ef Mon Sep 17 00:00:00 2001 From: Jack O'Connor Date: Fri, 14 Nov 2025 17:14:53 -0800 Subject: [PATCH] test that structural assignment works for recursive TypedDicts too --- .../resources/mdtest/typed_dict.md | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/crates/ty_python_semantic/resources/mdtest/typed_dict.md b/crates/ty_python_semantic/resources/mdtest/typed_dict.md index 1a2bc65794..dd865ea09b 100644 --- a/crates/ty_python_semantic/resources/mdtest/typed_dict.md +++ b/crates/ty_python_semantic/resources/mdtest/typed_dict.md @@ -1246,6 +1246,20 @@ nested: Node = {"name": "n1", "parent": {"name": "n2", "parent": {"name": "n3", nested_invalid: Node = {"name": "n1", "parent": {"name": "n2", "parent": {"name": 3, "parent": None}}} ``` +Structural assignment works for recursive `TypedDict`s too: + +```py +class Person(TypedDict): + name: str + parent: Person | None + +def _(node: Node, person: Person): + _: Person = node + _: Node = person + +_: Node = Person(name="Alice", parent=Node(name="Bob", parent=Person(name="Charlie", parent=None))) +``` + ## Function/assignment syntax This is not yet supported. Make sure that we do not emit false positives for this syntax: