gc_collect() # For PyPy or other GCs.
self.assertIsNone(ref())
+ def test_multiple_nesting(self):
+ # Regression test for https://github.com/python/cpython/issues/121863
+ class MultiplyNested:
+ def f1(self):
+ __arg = 1
+ class D:
+ def g(self, __arg):
+ return __arg
+ return D().g(_MultiplyNested__arg=2)
+
+ def f2(self):
+ __arg = 1
+ class D:
+ def g(self, __arg):
+ return __arg
+ return D().g
+
+ inst = MultiplyNested()
+ with self.assertRaises(TypeError):
+ inst.f1()
+
+ closure = inst.f2()
+ with self.assertRaises(TypeError):
+ closure(_MultiplyNested__arg=2)
if __name__ == '__main__':
unittest.main()
"non-string found in code slot");
return -1;
}
- _PyUnicode_InternMortal(interp, &_PyTuple_ITEMS(tuple)[i]);
+ _PyUnicode_InternImmortal(interp, &_PyTuple_ITEMS(tuple)[i]);
}
return 0;
}