mirror of
https://github.com/python/cpython.git
synced 2025-07-24 11:44:31 +00:00
Issue #23726: Don't enable GC for user subclasses of non-GC types that don't add any new fields.
Patch by Eugene Toder.
This commit is contained in:
parent
56452eea39
commit
a63cc21234
4 changed files with 27 additions and 5 deletions
|
@ -546,11 +546,31 @@ class GCTests(unittest.TestCase):
|
|||
|
||||
class UserClass:
|
||||
pass
|
||||
|
||||
class UserInt(int):
|
||||
pass
|
||||
|
||||
# Base class is object; no extra fields.
|
||||
class UserClassSlots:
|
||||
__slots__ = ()
|
||||
|
||||
# Base class is fixed size larger than object; no extra fields.
|
||||
class UserFloatSlots(float):
|
||||
__slots__ = ()
|
||||
|
||||
# Base class is variable size; no extra fields.
|
||||
class UserIntSlots(int):
|
||||
__slots__ = ()
|
||||
|
||||
self.assertTrue(gc.is_tracked(gc))
|
||||
self.assertTrue(gc.is_tracked(UserClass))
|
||||
self.assertTrue(gc.is_tracked(UserClass()))
|
||||
self.assertTrue(gc.is_tracked(UserInt()))
|
||||
self.assertTrue(gc.is_tracked([]))
|
||||
self.assertTrue(gc.is_tracked(set()))
|
||||
self.assertFalse(gc.is_tracked(UserClassSlots()))
|
||||
self.assertFalse(gc.is_tracked(UserFloatSlots()))
|
||||
self.assertFalse(gc.is_tracked(UserIntSlots()))
|
||||
|
||||
def test_bug1055820b(self):
|
||||
# Corresponds to temp2b.py in the bug report.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue