From 874f15aa289e30e32a74379749cf9b6bea674fde Mon Sep 17 00:00:00 2001 From: Guido van Rossum Date: Tue, 25 Sep 2001 21:16:33 +0000 Subject: [PATCH] add_operators(): the __floordiv__ and __truediv__ descriptors (and their 'i' and 'r' variants) were not being generated if the corresponding nb_ slots were present in the type object. I bet this is because floor and true division were introduced after I last looked at that part of the code. --- Objects/typeobject.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/Objects/typeobject.c b/Objects/typeobject.c index 1354b81f6d..0e6099c5b7 100644 --- a/Objects/typeobject.c +++ b/Objects/typeobject.c @@ -1837,6 +1837,8 @@ BINARY(rshift, "x>>y"); BINARY(and, "x&y"); BINARY(xor, "x^y"); BINARY(or, "x|y"); +BINARY(floordiv, "x//y"); +BINARY(truediv, "x/y # true division"); static PyObject * wrap_ternaryfunc(PyObject *self, PyObject *args, void *wrapped) @@ -1915,6 +1917,8 @@ IBINARY(irshift, "x>>=y"); IBINARY(iand, "x&=y"); IBINARY(ixor, "x^=y"); IBINARY(ior, "x|=y"); +IBINARY(ifloordiv, "x//=y"); +IBINARY(itruediv, "x/=y # true division"); #undef ITERNARY #define ITERNARY(NAME, OP) \ @@ -2586,6 +2590,12 @@ add_operators(PyTypeObject *type) ADD(nb->nb_inplace_and, tab_iand); ADD(nb->nb_inplace_xor, tab_ixor); ADD(nb->nb_inplace_or, tab_ior); + if (type->tp_flags & Py_TPFLAGS_CHECKTYPES) { + ADD(nb->nb_floor_divide, tab_floordiv); + ADD(nb->nb_true_divide, tab_truediv); + ADD(nb->nb_inplace_floor_divide, tab_ifloordiv); + ADD(nb->nb_inplace_true_divide, tab_itruediv); + } } ADD(type->tp_getattro, tab_getattr); -- 2.40.0