]> git.lizzy.rs Git - rust.git/blob - tests/ui/no_effect.rs
Merge pull request #2984 from flip1995/single_char_pattern
[rust.git] / tests / ui / no_effect.rs
1 #![feature(box_syntax)]
2
3
4 #![warn(no_effect, unnecessary_operation)]
5 #![allow(dead_code)]
6 #![allow(path_statements)]
7 #![allow(deref_addrof)]
8 #![allow(redundant_field_names)]
9 #![feature(untagged_unions)]
10
11 struct Unit;
12 struct Tuple(i32);
13 struct Struct {
14     field: i32
15 }
16 enum Enum {
17     Tuple(i32),
18     Struct { field: i32 },
19 }
20 struct DropUnit;
21 impl Drop for DropUnit {
22     fn drop(&mut self) {}
23 }
24 struct DropStruct {
25     field: i32
26 }
27 impl Drop for DropStruct {
28     fn drop(&mut self) {}
29 }
30 struct DropTuple(i32);
31 impl Drop for DropTuple {
32     fn drop(&mut self) {}
33 }
34 enum DropEnum {
35     Tuple(i32),
36     Struct { field: i32 },
37 }
38 impl Drop for DropEnum {
39     fn drop(&mut self) {}
40 }
41 struct FooString {
42     s: String,
43 }
44 union Union {
45     a: u8,
46     b: f64,
47 }
48
49 fn get_number() -> i32 { 0 }
50 fn get_struct() -> Struct { Struct { field: 0 } }
51 fn get_drop_struct() -> DropStruct { DropStruct { field: 0 } }
52
53 unsafe fn unsafe_fn() -> i32 { 0 }
54
55 fn main() {
56     let s = get_struct();
57     let s2 = get_struct();
58
59     0;
60     s2;
61     Unit;
62     Tuple(0);
63     Struct { field: 0 };
64     Struct { ..s };
65     Union { a: 0 };
66     Enum::Tuple(0);
67     Enum::Struct { field: 0 };
68     5 + 6;
69     *&42;
70     &6;
71     (5, 6, 7);
72     box 42;
73     ..;
74     5..;
75     ..5;
76     5..6;
77     5..=6;
78     [42, 55];
79     [42, 55][1];
80     (42, 55).1;
81     [42; 55];
82     [42; 55][13];
83     let mut x = 0;
84     || x += 5;
85     let s: String = "foo".into();
86     FooString { s: s };
87
88     // Do not warn
89     get_number();
90     unsafe { unsafe_fn() };
91     DropUnit;
92     DropStruct { field: 0 };
93     DropTuple(0);
94     DropEnum::Tuple(0);
95     DropEnum::Struct { field: 0 };
96
97     Tuple(get_number());
98     Struct { field: get_number() };
99     Struct { ..get_struct() };
100     Enum::Tuple(get_number());
101     Enum::Struct { field: get_number() };
102     5 + get_number();
103     *&get_number();
104     &get_number();
105     (5, 6, get_number());
106     box get_number();
107     get_number()..;
108     ..get_number();
109     5..get_number();
110     [42, get_number()];
111     [42, 55][get_number() as usize];
112     (42, get_number()).1;
113     [get_number(); 55];
114     [42; 55][get_number() as usize];
115     {get_number()};
116     FooString { s: String::from("blah"), };
117
118     // Do not warn
119     DropTuple(get_number());
120     DropStruct { field: get_number() };
121     DropStruct { field: get_number() };
122     DropStruct { ..get_drop_struct() };
123     DropEnum::Tuple(get_number());
124     DropEnum::Struct { field: get_number() };
125 }