]> git.proxmox.com Git - rustc.git/blob - src/tools/clippy/tests/ui/drop_forget_ref.rs
New upstream version 1.23.0+dfsg1
[rustc.git] / src / tools / clippy / tests / ui / drop_forget_ref.rs
1
2
3
4 #![warn(drop_ref, forget_ref)]
5 #![allow(toplevel_ref_arg, similar_names, needless_pass_by_value)]
6
7 use std::mem::{drop, forget};
8
9 struct SomeStruct;
10
11 fn main() {
12 drop(&SomeStruct);
13 forget(&SomeStruct);
14
15 let mut owned1 = SomeStruct;
16 drop(&owned1);
17 drop(&&owned1);
18 drop(&mut owned1);
19 drop(owned1); //OK
20 let mut owned2 = SomeStruct;
21 forget(&owned2);
22 forget(&&owned2);
23 forget(&mut owned2);
24 forget(owned2); //OK
25
26 let reference1 = &SomeStruct;
27 drop(reference1);
28 forget(&*reference1);
29
30 let reference2 = &mut SomeStruct;
31 drop(reference2);
32 let reference3 = &mut SomeStruct;
33 forget(reference3);
34
35 let ref reference4 = SomeStruct;
36 drop(reference4);
37 forget(reference4);
38 }
39
40 #[allow(dead_code)]
41 fn test_generic_fn_drop<T>(val: T) {
42 drop(&val);
43 drop(val); //OK
44 }
45
46 #[allow(dead_code)]
47 fn test_generic_fn_forget<T>(val: T) {
48 forget(&val);
49 forget(val); //OK
50 }
51
52 #[allow(dead_code)]
53 fn test_similarly_named_function() {
54 fn drop<T>(_val: T) {}
55 drop(&SomeStruct); //OK; call to unrelated function which happens to have the same name
56 std::mem::drop(&SomeStruct);
57 fn forget<T>(_val: T) {}
58 forget(&SomeStruct); //OK; call to unrelated function which happens to have the same name
59 std::mem::forget(&SomeStruct);
60 }