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