While working on #3322 I have found two more crashes:
N=NamedTuple('N', [('x', N)])
n: Ncrashes with RecursionError and
classN(NamedTuple):
x: NclassM(NamedTuple):
x: Mn: Nm: Mlst= [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).