Skip to content

PEP 709 behavior change around mangling #104604

Description

@JelleZijlstra

Another bug with comprehension inlining.

I made the fuzzer (carljm/compgenerator#1) use __a and __b as names in the hope of finding bugs around name mangling and got this one:

class__a:
__a= (1)[[__afor__bin [1]]] =1

On #104602:

>>> class__a:
... __a = (1)[[__a for __b in [1]]] =1
... Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 2, in __a
TypeError: 'int' object does not support item assignment

On 3.11:

>>> class__a:
... __a = (1)[[__a for __b in [1]]] =1
... Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 2, in __a
File "<stdin>", line 2, in <listcomp>
NameError: name '_a__a' is not defined. Did you mean: '_a__b'?

I think that means we're missing some name mangling, but haven't thought too deeply about this yet.

Metadata

Metadata

Assignees

Labels

type-bugAn unexpected behavior, bug, or error

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions