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

(cherry picked from commit 55c4a92fc1abfe388335071f1d64b3addfa5793f)

Co-authored-by: Inada Naoki <songofacandy@gmail.com>
diff --git a/Lib/test/test_compile.py b/Lib/test/test_compile.py
index 99ba487..4de5448 100644
--- a/Lib/test/test_compile.py
+++ b/Lib/test/test_compile.py
@@ -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