| // ignore-tidy-linelength | |
| //! This test verifies the accuracy of emitted file and line debuginfo metadata for async blocks and | |
| //! async functions. | |
| //@ revisions: MSVC NONMSVC | |
| //@[MSVC] only-msvc | |
| //@[NONMSVC] ignore-msvc | |
| //@ edition:2021 | |
| //@ compile-flags: --crate-type=lib -Copt-level=0 -Cdebuginfo=2 -Zdebug-info-type-line-numbers=true | |
| // NONMSVC-DAG: ![[#FILE:]] = !DIFile({{.*}}filename:{{.*[/\\]}}issue-98678-async.rs{{".*}}) | |
| // MSVC: ![[#FILE:]] = !DIFile({{.*}}filename:{{.*}}\\issue-98678-async.rs{{".*}}) | |
| // NONMSVC-DAG: !DISubprogram(name: "foo",{{.*}}file: ![[#FILE]]{{.*}}line: [[# @LINE + 2]], | |
| // MSVC-DAG: !DISubprogram(name: "foo",{{.*}}file: ![[#FILE]]{{.*}}line: [[# @LINE + 1]], | |
| pub async fn foo() -> u8 { | |
| 5 | |
| } | |
| pub fn bar() -> impl std::future::Future<Output = u8> { | |
| // NONMSVC: !DICompositeType({{.*"}}{async_block_env#0}{{".*}}file: ![[#FILE]]{{.*}}line: [[# @LINE + 2]], | |
| // MSVC-DAG: !DICompositeType({{.*"}}enum2$<issue_98678_async::bar::async_block_env$0>{{".*}}file: ![[#FILE]]{{.*}}line: [[# @LINE + 1]], | |
| async { | |
| let x: u8 = foo().await; | |
| x + 5 | |
| } | |
| } |