]> git.proxmox.com Git - rustc.git/blame - src/test/ui/lint/lint-dead-code-4.rs
New upstream version 1.40.0+dfsg1
[rustc.git] / src / test / ui / lint / lint-dead-code-4.rs
CommitLineData
1a4d82fc
JJ
1#![allow(unused_variables)]
2#![allow(non_camel_case_types)]
3#![deny(dead_code)]
1a4d82fc 4
1a4d82fc
JJ
5struct Foo {
6 x: usize,
9e0c209e 7 b: bool, //~ ERROR: field is never used
1a4d82fc
JJ
8}
9
10fn field_read(f: Foo) -> usize {
11 f.x.pow(2)
12}
13
14enum XYZ {
ff7c6d11
XL
15 X, //~ ERROR variant is never constructed
16 Y { //~ ERROR variant is never constructed
1a4d82fc 17 a: String,
92a42be0
SL
18 b: i32,
19 c: i32,
1a4d82fc
JJ
20 },
21 Z
22}
23
92a42be0
SL
24enum ABC { //~ ERROR enum is never used
25 A,
26 B {
27 a: String,
28 b: i32,
29 c: i32,
30 },
31 C
32}
33
34// ensure struct variants get warning for their fields
35enum IJK {
ff7c6d11 36 I, //~ ERROR variant is never constructed
92a42be0
SL
37 J {
38 a: String,
9e0c209e
SL
39 b: i32, //~ ERROR field is never used
40 c: i32, //~ ERROR field is never used
92a42be0 41 },
ff7c6d11 42 K //~ ERROR variant is never constructed
92a42be0
SL
43
44}
45
46fn struct_variant_partial_use(b: IJK) -> String {
47 match b {
48 IJK::J { a, b: _, .. } => a,
49 _ => "".to_string()
50 }
51}
52
1a4d82fc
JJ
53fn field_match_in_patterns(b: XYZ) -> String {
54 match b {
62682a34 55 XYZ::Y { a, b: _, .. } => a,
1a4d82fc
JJ
56 _ => "".to_string()
57 }
58}
59
60struct Bar {
9e0c209e 61 x: usize, //~ ERROR: field is never used
1a4d82fc 62 b: bool,
9e0c209e 63 c: bool, //~ ERROR: field is never used
1a4d82fc
JJ
64 _guard: ()
65}
66
67#[repr(C)]
68struct Baz {
62682a34 69 x: u32,
1a4d82fc
JJ
70}
71
72fn field_match_in_let(f: Bar) -> bool {
62682a34 73 let Bar { b, c: _, .. } = f;
1a4d82fc
JJ
74 b
75}
76
77fn main() {
62682a34 78 field_read(Foo { x: 1, b: false });
1a4d82fc 79 field_match_in_patterns(XYZ::Z);
92a42be0 80 struct_variant_partial_use(IJK::J { a: "".into(), b: 1, c: -1 });
62682a34 81 field_match_in_let(Bar { x: 42, b: true, c: false, _guard: () });
1a4d82fc
JJ
82 let _ = Baz { x: 0 };
83}