summaryrefslogtreecommitdiff
path: root/ops/optimizer.rs
diff options
context:
space:
mode:
authorDivy Srivastava <dj.srivastava23@gmail.com>2022-12-05 08:10:22 -0800
committerGitHub <noreply@github.com>2022-12-05 21:40:22 +0530
commit55595ca1b74e07eb2365d5aec3861600e2266470 (patch)
tree3d32d362e60b8c2b6fbf9e57f939afb8f52f42db /ops/optimizer.rs
parent715f35d635bf5a4e972238e6ac8d290c0e096083 (diff)
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) ```
Diffstat (limited to 'ops/optimizer.rs')
-rw-r--r--ops/optimizer.rs4
1 files changed, 3 insertions, 1 deletions
diff --git a/ops/optimizer.rs b/ops/optimizer.rs
index 17435407c..99de4b424 100644
--- a/ops/optimizer.rs
+++ b/ops/optimizer.rs
@@ -650,7 +650,9 @@ impl Optimizer {
let segment = single_segment(segments)?;
match segment {
// Is `T` a OpState?
- PathSegment { ident, .. } if ident == "OpState" => {
+ PathSegment { ident, .. }
+ if ident == "OpState" && !self.is_async =>
+ {
self.has_ref_opstate = true;
}
// Is `T` a str?