2022-03-16 09:52:21 -05:00
|
|
|
// This test makes sure that the generator field capturing the awaitee in a `.await` expression
|
|
|
|
// is called "__awaitee" in debuginfo. This name must not be changed since debuggers and debugger
|
|
|
|
// extensions rely on the field having this name.
|
|
|
|
|
|
|
|
// ignore-tidy-linelength
|
|
|
|
// compile-flags: -C debuginfo=2 --edition=2018
|
|
|
|
|
2023-09-23 08:03:14 -05:00
|
|
|
#![crate_type = "lib"]
|
2022-03-16 09:52:21 -05:00
|
|
|
|
2023-09-23 08:03:14 -05:00
|
|
|
pub async fn async_fn_test() {
|
2022-03-16 09:52:21 -05:00
|
|
|
foo().await;
|
|
|
|
}
|
|
|
|
|
2023-09-23 08:03:14 -05:00
|
|
|
pub async fn foo() {}
|
|
|
|
|
2022-11-18 15:56:22 -06:00
|
|
|
// NONMSVC: [[GEN:!.*]] = !DICompositeType(tag: DW_TAG_structure_type, name: "{async_fn_env#0}", scope: [[GEN_SCOPE:![0-9]*]],
|
2022-08-12 05:00:02 -05:00
|
|
|
// MSVC: [[GEN:!.*]] = !DICompositeType(tag: DW_TAG_union_type, name: "enum2$<async_fn_debug_awaitee_field::async_fn_test::async_fn_env$0>",
|
2022-11-18 15:56:22 -06:00
|
|
|
// NONMSVC: [[GEN_SCOPE:!.*]] = !DINamespace(name: "async_fn_test",
|
2022-03-16 09:52:21 -05:00
|
|
|
// CHECK: [[SUSPEND_STRUCT:!.*]] = !DICompositeType(tag: DW_TAG_structure_type, name: "Suspend0", scope: [[GEN]],
|
|
|
|
// CHECK: !DIDerivedType(tag: DW_TAG_member, name: "__awaitee", scope: [[SUSPEND_STRUCT]], {{.*}}, baseType: [[AWAITEE_TYPE:![0-9]*]],
|
2022-11-18 15:56:22 -06:00
|
|
|
// NONMSVC: [[AWAITEE_TYPE]] = !DICompositeType(tag: DW_TAG_structure_type, name: "{async_fn_env#0}", scope: [[AWAITEE_SCOPE:![0-9]*]],
|
|
|
|
// MSVC: [[AWAITEE_TYPE]] = !DICompositeType(tag: DW_TAG_union_type, name: "enum2$<async_fn_debug_awaitee_field::foo::async_fn_env$0>",
|
|
|
|
// NONMSVC: [[AWAITEE_SCOPE]] = !DINamespace(name: "foo",
|