[3.10] bpo-45056: Remove trailing unused constants from co_consts (GH-28109) (GH-28125)

(cherry picked from commit 55c4a92fc1)

Co-authored-by: Inada Naoki <songofacandy@gmail.com>
This commit is contained in:
Łukasz Langa 2021-09-08 18:25:09 +02:00 committed by GitHub
parent 7538fe34d7
commit d41abe8970
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
7 changed files with 4672 additions and 4634 deletions

View file

@ -648,6 +648,17 @@ def test_merge_code_attrs(self):
self.assertIs(f1.__code__.co_linetable, f2.__code__.co_linetable)
self.assertIs(f1.__code__.co_code, f2.__code__.co_code)
# Stripping unused constants is not a strict requirement for the
# Python semantics, it's a more an implementation detail.
@support.cpython_only
def test_strip_unused_consts(self):
# Python 3.10rc1 appended None to co_consts when None is not used
# at all. See bpo-45056.
def f1():
"docstring"
return 42
self.assertEqual(f1.__code__.co_consts, ("docstring", 42))
# This is a regression test for a CPython specific peephole optimizer
# implementation bug present in a few releases. It's assertion verifies
# that peephole optimization was actually done though that isn't an