From 5e2eb35bbed3e84079165e576cdb50ef36e13493 Mon Sep 17 00:00:00 2001 From: Sanyam Khurana Date: Fri, 18 Aug 2017 16:07:36 +0530 Subject: bpo-30721: Show correct syntax hint in Py3 when using Py2 redirection syntax (#2345) --- Objects/abstract.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'Objects/abstract.c') diff --git a/Objects/abstract.c b/Objects/abstract.c index cb026c0df5..abd97953bd 100644 --- a/Objects/abstract.c +++ b/Objects/abstract.c @@ -819,6 +819,21 @@ binary_op(PyObject *v, PyObject *w, const int op_slot, const char *op_name) PyObject *result = binary_op1(v, w, op_slot); if (result == Py_NotImplemented) { Py_DECREF(result); + + if (op_slot == NB_SLOT(nb_rshift) && + PyCFunction_Check(v) && + strcmp(((PyCFunctionObject *)v)->m_ml->ml_name, "print") == 0) + { + PyErr_Format(PyExc_TypeError, + "unsupported operand type(s) for %.100s: " + "'%.100s' and '%.100s'. Did you mean \"print(, " + "file=)\"", + op_name, + v->ob_type->tp_name, + w->ob_type->tp_name); + return NULL; + } + return binop_type_error(v, w, op_name); } return result; -- cgit v1.2.1