self.assertEqual(len(resurrected), 1)
self.assertIsInstance(resurrected[0].gi_code, types.CodeType)
+ def test_exhausted_generator_frame_cycle(self):
+ def g():
+ yield
+
+ generator = g()
+ frame = generator.gi_frame
+ self.assertIsNone(frame.f_back)
+ next(generator)
+ self.assertIsNone(frame.f_back)
+ next(generator, None)
+ self.assertIsNone(frame.f_back)
+
class GeneratorTest(unittest.TestCase):
tstate->exc_info = gen->gi_exc_state.previous_item;
gen->gi_exc_state.previous_item = NULL;
assert(frame->frame_obj == NULL || frame->frame_obj->f_frame == frame);
+ frame->previous = NULL;
_PyFrame_ClearExceptCode(frame);
_PyErr_ClearExcState(&gen->gi_exc_state);
- frame->previous = NULL;
}
void