]> git.proxmox.com Git - rustc.git/blame - src/test/codegen/generator-debug-msvc.rs
New upstream version 1.61.0+dfsg1
[rustc.git] / src / test / codegen / generator-debug-msvc.rs
CommitLineData
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
8// only-msvc
9
10#![feature(generators, generator_trait)]
11use std::ops::Generator;
12
13fn generator_test() -> impl Generator<Yield = i32, Return = ()> {
14 || {
15 yield 0;
16 let s = String::from("foo");
17 yield 1;
18 }
19}
20
21// FIXME: No way to reliably check the filename.
22
5e7ed085 23// CHECK-DAG: [[GEN:!.*]] = !DICompositeType(tag: DW_TAG_union_type, name: "enum$<generator_debug_msvc::generator_test::generator_env$0>"
17df50a5 24// CHECK: {{!.*}} = !DIDerivedType(tag: DW_TAG_member, name: "variant0", scope: [[GEN]],
f035d41b
XL
25// For brevity, we only check the struct name and members of the last variant.
26// CHECK-SAME: file: [[FILE:![0-9]*]], line: 14,
17df50a5
XL
27// CHECK-NOT: flags: DIFlagArtificial
28// CHECK-SAME: )
29// CHECK: {{!.*}} = !DIDerivedType(tag: DW_TAG_member, name: "variant1", scope: [[GEN]],
f035d41b 30// CHECK-SAME: file: [[FILE]], line: 18,
17df50a5
XL
31// CHECK-NOT: flags: DIFlagArtificial
32// CHECK-SAME: )
33// CHECK: {{!.*}} = !DIDerivedType(tag: DW_TAG_member, name: "variant2", scope: [[GEN]],
f035d41b 34// CHECK-SAME: file: [[FILE]], line: 18,
17df50a5
XL
35// CHECK-NOT: flags: DIFlagArtificial
36// CHECK-SAME: )
37// CHECK: {{!.*}} = !DIDerivedType(tag: DW_TAG_member, name: "variant3", scope: [[GEN]],
f035d41b 38// CHECK-SAME: file: [[FILE]], line: 15,
17df50a5
XL
39// CHECK-NOT: flags: DIFlagArtificial
40// CHECK-SAME: )
41// CHECK: {{!.*}} = !DIDerivedType(tag: DW_TAG_member, name: "variant4", scope: [[GEN]],
f035d41b
XL
42// CHECK-SAME: file: [[FILE]], line: 17,
43// CHECK-SAME: baseType: [[VARIANT:![0-9]*]]
17df50a5
XL
44// CHECK-NOT: flags: DIFlagArtificial
45// CHECK-SAME: )
5e7ed085 46// CHECK: [[VARIANT]] = !DICompositeType(tag: DW_TAG_structure_type, name: "Suspend1", scope: [[GEN]],
17df50a5
XL
47// CHECK-NOT: flags: DIFlagArtificial
48// CHECK-SAME: )
5e7ed085 49// CHECK: {{!.*}} = !DIDerivedType(tag: DW_TAG_member, name: "s", scope: [[VARIANT]]
f035d41b
XL
50// CHECK-NOT: flags: DIFlagArtificial
51// CHECK-SAME: )
136023e0
XL
52// CHECK: {{!.*}} = !DIDerivedType(tag: DW_TAG_member, name: "discriminant", scope: [[GEN]],
53// CHECK-NOT: flags: DIFlagArtificial
f035d41b
XL
54
55fn main() {
56 let _dummy = generator_test();
57}