make __doc__ mutable on heaptypes (closes #12773)
diff --git a/Lib/test/test_descr.py b/Lib/test/test_descr.py
index aade9f5..2a9f880 100644
--- a/Lib/test/test_descr.py
+++ b/Lib/test/test_descr.py
@@ -4261,6 +4261,19 @@
         m = str(cm.exception)
         self.assertEqual("'foo' in __slots__ conflicts with class variable", m)
 
+    def test_set_doc(self):
+        class X:
+            "elephant"
+        X.__doc__ = "banana"
+        self.assertEqual(X.__doc__, "banana")
+        with self.assertRaises(TypeError) as cm:
+            type(list).__dict__["__doc__"].__set__(list, "blah")
+        self.assertIn("can't set list.__doc__", str(cm.exception))
+        with self.assertRaises(TypeError) as cm:
+            type(X).__dict__["__doc__"].__delete__(X)
+        self.assertIn("can't delete X.__doc__", str(cm.exception))
+        self.assertEqual(X.__doc__, "banana")
+
 class DictProxyTests(unittest.TestCase):
     def setUp(self):
         class C(object):