]> git.lizzy.rs Git - rust.git/blob - src/test/codegen/async-fn-debug-awaitee-field.rs
Make enum-match.rs test robust against variable name changes
[rust.git] / src / test / codegen / async-fn-debug-awaitee-field.rs
1 // This test makes sure that the generator field capturing the awaitee in a `.await` expression
2 // is called "__awaitee" in debuginfo. This name must not be changed since debuggers and debugger
3 // extensions rely on the field having this name.
4
5 // ignore-tidy-linelength
6 // compile-flags: -C debuginfo=2 --edition=2018
7
8 async fn foo() {}
9
10 async fn async_fn_test() {
11     foo().await;
12 }
13
14 // NONMSVC: [[GEN:!.*]] = !DICompositeType(tag: DW_TAG_structure_type, name: "{async_fn_env#0}", scope: [[GEN_SCOPE:![0-9]*]],
15 // MSVC: [[GEN:!.*]] = !DICompositeType(tag: DW_TAG_union_type, name: "enum2$<async_fn_debug_awaitee_field::async_fn_test::async_fn_env$0>",
16 // NONMSVC: [[GEN_SCOPE:!.*]] = !DINamespace(name: "async_fn_test",
17 // CHECK: [[SUSPEND_STRUCT:!.*]] = !DICompositeType(tag: DW_TAG_structure_type, name: "Suspend0", scope: [[GEN]],
18 // CHECK: !DIDerivedType(tag: DW_TAG_member, name: "__awaitee", scope: [[SUSPEND_STRUCT]], {{.*}}, baseType: [[AWAITEE_TYPE:![0-9]*]],
19 // NONMSVC: [[AWAITEE_TYPE]] = !DICompositeType(tag: DW_TAG_structure_type, name: "{async_fn_env#0}", scope: [[AWAITEE_SCOPE:![0-9]*]],
20 // MSVC: [[AWAITEE_TYPE]] = !DICompositeType(tag: DW_TAG_union_type, name: "enum2$<async_fn_debug_awaitee_field::foo::async_fn_env$0>",
21 // NONMSVC: [[AWAITEE_SCOPE]] = !DINamespace(name: "foo",
22
23 fn main() {
24     let _fn = async_fn_test();
25 }