about summary refs log tree commit diff
path: root/compiler/rustc_interface/src
diff options
context:
space:
mode:
authorTrevor Gross <t.gross35@gmail.com>2025-05-04 18:11:50 -0400
committerGitHub <noreply@github.com>2025-05-04 18:11:50 -0400
commit0b8789c2019dc259564522d622ee45c777d1eb68 (patch)
treebed3ec1ea473b97b505bdd2d1643750820fccfc7 /compiler/rustc_interface/src
parent5b3de49822fa1f7a078b447b54cf02afaa311a34 (diff)
parenta82b7a63b7843b703d9ad41e52a215aaa2fa86ef (diff)
downloadrust-0b8789c2019dc259564522d622ee45c777d1eb68.tar.gz
rust-0b8789c2019dc259564522d622ee45c777d1eb68.zip
Rollup merge of #140630 - azhogin:azhogin/async-drop-proxy-source-info-fix, r=oli-obk
Async drop source info fix for proxy-drop-coroutine

Fixes crash at debug info generation: https://github.com/rust-lang/rust/issues/140426 .
Also, the submitted example requires sync Drop implementation too.
Because sync version is required for unwind and when drop is performed in sync context (sync function).

Probably, it is also needed to add such a lint/error about missed `impl Drop`, when there is `impl AsyncDrop`.

Fix description: even minimal, empty coroutine (for proxy-coroutine) has 3 states and the source info array should have 3 elements too.

```
#![feature(async_drop)]

use std::future::AsyncDrop;
use std::pin::Pin;

#[tokio::main(flavor = "current_thread")]
async fn main() {
    let _st = St;
}

struct St;

impl AsyncDrop for St {
    async fn drop(self: Pin<&mut Self>) {
        println!("123");
    }
}
```
Diffstat (limited to 'compiler/rustc_interface/src')
0 files changed, 0 insertions, 0 deletions