diff Objects/typeobject.c @ 51461:7bfa64492d00 3.0

Merged revisions 69431 via svnmerge from svn+ssh://pythondev@svn.python.org/python/branches/py3k ........ r69431 | mark.dickinson | 2009-02-08 11:02:10 +0000 (Sun, 08 Feb 2009) | 4 lines Issue #1717: add a DeprecationWarning in 3.x on type initialization for types that implement tp_reserved (formerly tp_compare) but not tp_richcompare. ........
author Mark Dickinson <dickinsm@gmail.com>
date Sun, 08 Feb 2009 11:05:01 +0000
parents 87fbbf22adf3
children da0070cf4654
line wrap: on
line diff
--- a/Objects/typeobject.c	Sun Feb 08 03:43:03 2009 +0000
+++ b/Objects/typeobject.c	Sun Feb 08 11:05:01 2009 +0000
@@ -3886,6 +3886,21 @@
 			goto error;
 	}
 
+	/* Warn for a type that implements tp_compare (now known as
+	   tp_reserved) but not tp_richcompare. */
+	if (type->tp_reserved && !type->tp_richcompare) {
+		int error;
+		char msg[240];
+		PyOS_snprintf(msg, sizeof(msg),
+			      "Type %.100s defines tp_reserved (formerly "
+			      "tp_compare) but not tp_richcompare. "
+			      "Comparisons may not behave as intended.",
+			      type->tp_name);
+		error = PyErr_WarnEx(PyExc_DeprecationWarning, msg, 1);
+		if (error == -1)
+			goto error;
+	}
+
 	/* All done -- set the ready flag */
 	assert(type->tp_dict != NULL);
 	type->tp_flags =