]>
Commit | Line | Data |
---|---|---|
f035d41b XL |
1 | // Verify debuginfo for generators: |
2 | // - Each variant points to the file and line of its yield point | |
17df50a5 XL |
3 | // - The discriminants are marked artificial |
4 | // - Other fields are not marked artificial | |
f035d41b | 5 | // |
cdc7bbd5 | 6 | // |
f035d41b XL |
7 | // compile-flags: -C debuginfo=2 --edition=2018 |
8 | // only-msvc | |
9 | ||
10 | async fn foo() {} | |
11 | async fn async_fn_test() { | |
12 | foo().await; | |
13 | let s = String::from("foo"); | |
14 | foo().await; | |
15 | } | |
16 | ||
17 | // FIXME: No way to reliably check the filename. | |
18 | ||
f2b60f7d | 19 | // CHECK-DAG: [[GEN:!.*]] = !DICompositeType(tag: DW_TAG_union_type, name: "enum2$<async_fn_debug_msvc::async_fn_test::async_fn_env$0>", |
17df50a5 | 20 | // CHECK: {{!.*}} = !DIDerivedType(tag: DW_TAG_member, name: "variant0", scope: [[GEN]], |
f035d41b XL |
21 | // For brevity, we only check the struct name and members of the last variant. |
22 | // CHECK-SAME: file: [[FILE:![0-9]*]], line: 11, | |
17df50a5 XL |
23 | // CHECK-NOT: flags: DIFlagArtificial |
24 | // CHECK-SAME: ) | |
25 | // CHECK: {{!.*}} = !DIDerivedType(tag: DW_TAG_member, name: "variant1", scope: [[GEN]], | |
f035d41b | 26 | // CHECK-SAME: file: [[FILE]], line: 15, |
17df50a5 XL |
27 | // CHECK-NOT: flags: DIFlagArtificial |
28 | // CHECK-SAME: ) | |
29 | // CHECK: {{!.*}} = !DIDerivedType(tag: DW_TAG_member, name: "variant2", scope: [[GEN]], | |
f035d41b | 30 | // CHECK-SAME: file: [[FILE]], line: 15, |
17df50a5 XL |
31 | // CHECK-NOT: flags: DIFlagArtificial |
32 | // CHECK-SAME: ) | |
33 | // CHECK: {{!.*}} = !DIDerivedType(tag: DW_TAG_member, name: "variant3", scope: [[GEN]], | |
f035d41b | 34 | // CHECK-SAME: file: [[FILE]], line: 12, |
17df50a5 XL |
35 | // CHECK-NOT: flags: DIFlagArtificial |
36 | // CHECK-SAME: ) | |
37 | // CHECK: {{!.*}} = !DIDerivedType(tag: DW_TAG_member, name: "variant4", scope: [[GEN]], | |
f035d41b | 38 | // CHECK-SAME: file: [[FILE]], line: 14, |
f2b60f7d | 39 | // CHECK-SAME: baseType: [[VARIANT_WRAPPER:![0-9]*]] |
17df50a5 XL |
40 | // CHECK-NOT: flags: DIFlagArtificial |
41 | // CHECK-SAME: ) | |
f2b60f7d | 42 | // CHECK: {{!.*}} = !DIDerivedType(tag: DW_TAG_member, name: "value", scope: [[VARIANT_WRAPPER]], file: !2, baseType: [[VARIANT:![0-9]*]], |
5e7ed085 | 43 | // CHECK: [[VARIANT]] = !DICompositeType(tag: DW_TAG_structure_type, name: "Suspend1", scope: [[GEN]], |
17df50a5 XL |
44 | // CHECK-NOT: flags: DIFlagArtificial |
45 | // CHECK-SAME: ) | |
5e7ed085 | 46 | // CHECK: {{!.*}} = !DIDerivedType(tag: DW_TAG_member, name: "s", scope: [[VARIANT]] |
f035d41b XL |
47 | // CHECK-NOT: flags: DIFlagArtificial |
48 | // CHECK-SAME: ) | |
f2b60f7d | 49 | // CHECK: {{!.*}} = !DIDerivedType(tag: DW_TAG_member, name: "tag", scope: [[GEN]], |
136023e0 | 50 | // CHECK-NOT: flags: DIFlagArtificial |
f035d41b XL |
51 | |
52 | fn main() { | |
53 | let _dummy = async_fn_test(); | |
54 | } |