This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

Author gvanrossum
Recipients BTaskaya, ethan smith, glyph, gvanrossum, mental, ryansobol
Date 2020-11-12.16:01:53
SpamBayes Score -1.0
Marked as misclassified Yes
Message-id <1605196913.19.0.625776161443.issue41987@roundup.psfhosted.org>
In-reply-to
Content
So the biggest difference I see is that ForwardRef._evaluate() has grown a recursive_guard argument in 3.9. This makes me think that in 3.8, only one level of evaluation was happening, and in 3.8, we keep evaluating until we don't see a string or ForwardRef.

The specific examples all happen at a point where the forward ref "C" cannot be resolved at all yet (since they're happening *in the class body*).

Possibly the best way out is to treat unresolved references differently, and just return the ForwardRef to the caller -- after all this is what the example does in 3.8.
History
Date User Action Args
2020-11-12 16:01:53gvanrossumsetrecipients: + gvanrossum, glyph, ethan smith, BTaskaya, mental, ryansobol
2020-11-12 16:01:53gvanrossumsetmessageid: <1605196913.19.0.625776161443.issue41987@roundup.psfhosted.org>
2020-11-12 16:01:53gvanrossumlinkissue41987 messages
2020-11-12 16:01:53gvanrossumcreate