1
0
Fork 0
mirror of https://github.com/denoland/deno.git synced 2024-12-17 21:03:01 -05:00
denoland-deno/ops/optimizer_tests/issue16934.rs
Divy Srivastava 55595ca1b7
fix(ops): disallow auto-borrowing OpState across potential await point (#16952)
Fixes https://github.com/denoland/deno/issues/16934

Example compiler error:
```
error: mutable opstate is not supported in async ops
   --> core/ops_builtin.rs:122:1
    |
122 | #[op]
    | ^^^^^
    |
    = note: this error originates in the attribute macro `op` (in Nightly builds, run with -Z macro-backtrace for more info)
```
2022-12-05 21:40:22 +05:30

11 lines
371 B
Rust

async fn send_stdin(
state: &mut OpState,
cmd: String,
) -> Result<(), anyhow::Error> {
// https://github.com/denoland/deno/issues/16934
//
// OpState borrowed across await point is not allowed, as it will likely panic at runtime.
let instance = state.borrow::<MinecraftInstance>().clone();
instance.send_command(&cmd, CausedBy::Unknown).await?;
Ok(())
}