(
&self,
jen: &PyObject,
result: PyResult<ExecutionResult>,
vm: &VirtualMachine,
)
| 116 | } |
| 117 | |
| 118 | fn finalize_send_result( |
| 119 | &self, |
| 120 | jen: &PyObject, |
| 121 | result: PyResult<ExecutionResult>, |
| 122 | vm: &VirtualMachine, |
| 123 | ) -> PyResult<PyIterReturn> { |
| 124 | self.maybe_close(&result); |
| 125 | match result { |
| 126 | Ok(exec_res) => Ok(exec_res.into_iter_return(vm)), |
| 127 | Err(e) => { |
| 128 | if e.fast_isinstance(vm.ctx.exceptions.stop_iteration) { |
| 129 | let err = |
| 130 | vm.new_runtime_error(format!("{} raised StopIteration", gen_name(jen, vm))); |
| 131 | err.set___cause__(Some(e)); |
| 132 | Err(err) |
| 133 | } else if jen.class().is(vm.ctx.types.async_generator) |
| 134 | && e.fast_isinstance(vm.ctx.exceptions.stop_async_iteration) |
| 135 | { |
| 136 | let err = vm.new_runtime_error("async generator raised StopAsyncIteration"); |
| 137 | err.set___cause__(Some(e)); |
| 138 | Err(err) |
| 139 | } else { |
| 140 | Err(e) |
| 141 | } |
| 142 | } |
| 143 | } |
| 144 | } |
| 145 | |
| 146 | pub(crate) fn send_none(&self, jen: &PyObject, vm: &VirtualMachine) -> PyResult<PyIterReturn> { |
| 147 | if self.closed.load() { |
no test coverage detected