While working on #3322 I have found two more crashes:
N = NamedTuple('N', [('x', N)])
n: N
crashes with RecursionError and
class N(NamedTuple):
x: N
class M(NamedTuple):
x: M
n: N
m: M
lst = [n, m]
crashes with AssertionError in join_instances_via_supertype. I didn't try TypedDict but most probably it will have similar problems.
There is actually a fundamental question here: what should be the join(N, M)? @JukkaL do you have any ideas? One possible option would be to detect recursive joins and just return object for them (maybe also UninhabitedType for recursive meets).
While working on #3322 I have found two more crashes:
crashes with
RecursionErrorandcrashes with
AssertionErrorinjoin_instances_via_supertype. I didn't tryTypedDictbut most probably it will have similar problems.There is actually a fundamental question here: what should be the
join(N, M)? @JukkaL do you have any ideas? One possible option would be to detect recursive joins and just returnobjectfor them (maybe alsoUninhabitedTypefor recursive meets).