Vladimir Matveev <desco...@gmail.com> added the comment:

No, I don't think so but I can definitely make one. A few questions first:
- having PySendResult as a result type of PyIterSend seems ok, however prefix 
for each concrete value (PYGEN_*) is not aligned with the prefix of the 
function itself (PyIter_)
- should it also deal with tstate->c_tracefunc (probably not) or just be 
something like
```
PySendResult
PyIter_Send(PyObject *iter, PyObject *arg, PyObject **result)
{
    _Py_IDENTIFIER(send);
    assert(result != NULL);

    if (PyGen_CheckExact(iter) || PyCoro_CheckExact(iter)) {
        return PyGen_Send((PyGenObject *)iter, arg, result);
    }

    if (arg == Py_None && Py_TYPE(iter)->tp_iternext != NULL) {
        *result = Py_TYPE(iter)->tp_iternext(iter);
    }
    else {
        *result = _PyObject_CallMethodIdOneArg(iter, &PyId_send, arg);
    }

    if (*result == NULL) {
        if (_PyGen_FetchStopIterationValue(result) == 0) {
            return PYGEN_RETURN;
        }
        return PYGEN_ERROR;
    }
    return PYGEN_NEXT;
}
```

----------

_______________________________________
Python tracker <rep...@bugs.python.org>
<https://bugs.python.org/issue41756>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to