Skip to content

Commit 3e978b2

Browse files
authored
[mypyc] fix setup conflict with attributes named up (#13012)
1 parent 8e609b2 commit 3e978b2

File tree

2 files changed

+18
-3
lines changed

2 files changed

+18
-3
lines changed

mypyc/codegen/emitclass.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -345,11 +345,11 @@ def emit_line() -> None:
345345

346346

347347
def getter_name(cl: ClassIR, attribute: str, names: NameGenerator) -> str:
348-
return names.private_name(cl.module_name, f'{cl.name}_get{attribute}')
348+
return names.private_name(cl.module_name, f'{cl.name}_get_{attribute}')
349349

350350

351351
def setter_name(cl: ClassIR, attribute: str, names: NameGenerator) -> str:
352-
return names.private_name(cl.module_name, f'{cl.name}_set{attribute}')
352+
return names.private_name(cl.module_name, f'{cl.name}_set_{attribute}')
353353

354354

355355
def generate_object_struct(cl: ClassIR, emitter: Emitter) -> None:

mypyc/test/test_emitclass.py

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
import unittest
22

3-
from mypyc.codegen.emitclass import slot_key
3+
from mypyc.codegen.emitclass import getter_name, setter_name, slot_key
4+
from mypyc.ir.class_ir import ClassIR
5+
from mypyc.namegen import NameGenerator
46

57

68
class TestEmitClass(unittest.TestCase):
@@ -10,3 +12,16 @@ def test_slot_key(self) -> None:
1012
# __delitem__ and reverse methods should come last.
1113
assert s == [
1214
'__add__', '__rshift__', '__setitem__', '__delitem__', '__radd__', '__rrshift__']
15+
16+
def test_setter_name(self) -> None:
17+
cls = ClassIR(module_name="testing", name="SomeClass")
18+
generator = NameGenerator([['mod']])
19+
20+
# This should never be `setup`, as it will conflict with the class `setup`
21+
assert setter_name(cls, "up", generator) == "testing___SomeClass_set_up"
22+
23+
def test_getter_name(self) -> None:
24+
cls = ClassIR(module_name="testing", name="SomeClass")
25+
generator = NameGenerator([['mod']])
26+
27+
assert getter_name(cls, "down", generator) == "testing___SomeClass_get_down"

0 commit comments

Comments
 (0)