bpo-32670: Enforce PEP 479. (#5327) · python/cpython@43c47fe (original) (raw)

`@@ -248,59 +248,17 @@ gen_send_ex(PyGenObject *gen, PyObject *arg, int exc, int closing)

`

248

248

`Py_CLEAR(result);

`

249

249

` }

`

250

250

`else if (!result && PyErr_ExceptionMatches(PyExc_StopIteration)) {

`

251

``

`-

/* Check for future generator_stop and conditionally turn

`

252

``

`-

`

253

``

`-

`

254

``

-

255

``

`-

const int check_stop_iter_error_flags = CO_FUTURE_GENERATOR_STOP |

`

256

``

`-

CO_COROUTINE |

`

257

``

`-

CO_ITERABLE_COROUTINE |

`

258

``

`-

CO_ASYNC_GENERATOR;

`

259

``

-

260

``

`-

if (gen->gi_code != NULL &&

`

261

``

`-

((PyCodeObject *)gen->gi_code)->co_flags &

`

262

``

`-

check_stop_iter_error_flags)

`

263

``

`-

{

`

264

``

`` -

/* gen is either:

``

265

``

`-

`

266

``

`-

`

267

``

`-

`

268

``

`-

(decorated with types.coroutine decorator);

`

269

``

`-

`

270

``

`-

*/

`

271

``

`-

const char *msg = "generator raised StopIteration";

`

272

``

`-

if (PyCoro_CheckExact(gen)) {

`

273

``

`-

msg = "coroutine raised StopIteration";

`

274

``

`-

}

`

275

``

`-

else if PyAsyncGen_CheckExact(gen) {

`

276

``

`-

msg = "async generator raised StopIteration";

`

277

``

`-

}

`

278

``

`-

_PyErr_FormatFromCause(PyExc_RuntimeError, "%s", msg);

`

``

251

`+

const char *msg = "generator raised StopIteration";

`

``

252

`+

if (PyCoro_CheckExact(gen)) {

`

``

253

`+

msg = "coroutine raised StopIteration";

`

279

254

` }

`

280

``

`-

else {

`

281

``

`` -

/* gen is an ordinary generator without

``

282

``

`-

CO_FUTURE_GENERATOR_STOP flag.

`

283

``

`-

*/

`

284

``

-

285

``

`-

PyObject *exc, *val, *tb;

`

286

``

-

287

``

`-

/* Pop the exception before issuing a warning. */

`

288

``

`-

PyErr_Fetch(&exc, &val, &tb);

`

289

``

-

290

``

`-

if (PyErr_WarnFormat(PyExc_DeprecationWarning, 1,

`

291

``

`-

"generator '%.50S' raised StopIteration",

`

292

``

`-

gen->gi_qualname)) {

`

293

``

`-

/* Warning was converted to an error. */

`

294

``

`-

Py_XDECREF(exc);

`

295

``

`-

Py_XDECREF(val);

`

296

``

`-

Py_XDECREF(tb);

`

297

``

`-

}

`

298

``

`-

else {

`

299

``

`-

PyErr_Restore(exc, val, tb);

`

300

``

`-

}

`

``

255

`+

else if PyAsyncGen_CheckExact(gen) {

`

``

256

`+

msg = "async generator raised StopIteration";

`

301

257

` }

`

``

258

`+

_PyErr_FormatFromCause(PyExc_RuntimeError, "%s", msg);

`

``

259

+

302

260

` }

`

303

``

`-

else if (PyAsyncGen_CheckExact(gen) && !result &&

`

``

261

`+

else if (!result && PyAsyncGen_CheckExact(gen) &&

`

304

262

`PyErr_ExceptionMatches(PyExc_StopAsyncIteration))

`

305

263

` {

`

306

264

`` /* code in gen raised a StopAsyncIteration error:

``